@trebco/treb 25.9.1 → 26.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,14 +1,14 @@
1
- /*! TREB v25.9.1. Copyright 2018-2023 trebco, llc. All rights reserved. LGPL: https://treb.app/license */
2
- var rs=Object.defineProperty;var is=(d,e)=>{for(var t in e)rs(d,t,{get:e[t],enumerable:!0})};var L=d=>d!==null&&typeof d=="object"&&"row"in d&&"column"in d,Qr=d=>d!==null&&typeof d=="object"&&"start"in d&&L(d.start)&&"end"in d&&L(d.end),v=class{constructor(e,t=e,r=!1){this.end_=this.PatchNull(t),this.start_=this.PatchNull(e),r&&this.Normalize()}static FromColumn(e){return new v({row:1/0,column:e})}static FromRow(e){return new v({row:e,column:1/0})}static ColumnToLabel(e){let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}static CellAddressToLabel(e,t=!1){return(t?`${e.sheet_id||0}!`:"")+(e.absolute_column?"$":"")+this.ColumnToLabel(e.column)+(e.absolute_row?"$":"")+(e.row+1)}static Join(e,...t){let r=new v(e.start,e.end);for(let i of t)i&&(r.ConsumeAddress(i.start),r.ConsumeAddress(i.end));return r}static Bleed(e,t=1){return new v({row:Math.max(0,e.start.row-t),column:Math.max(0,e.start.column-t),sheet_id:e.start.sheet_id},{row:e.end.row+t,column:e.end.column+t})}get start(){return{...this.start_}}set start(e){this.start_=e}get end(){return{...this.end_}}set end(e){this.end_=e}get rows(){return this.start_.row===1/0||this.end_.row===1/0?1/0:this.end_.row-this.start_.row+1}get columns(){return this.start_.column===1/0||this.end_.column===1/0?1/0:this.end_.column-this.start_.column+1}get count(){return this.rows*this.columns}get entire_sheet(){return this.entire_row&&this.entire_column}get entire_column(){return this.start_.row===1/0}get entire_row(){return this.start_.column===1/0}PatchNull(e){let t={...e};return t.row===null&&(t.row=1/0),t.column===null&&(t.column=1/0),t}SetSheetID(e){this.start_.sheet_id=e}Normalize(){let e={...this.start_},t={...this.end_};e.row===1/0||t.row===1/0?e.row=t.row=1/0:e.row>t.row&&(e.row=this.end_.row,e.absolute_row=this.end_.absolute_row,t.row=this.start_.row,t.absolute_row=this.start_.absolute_row),e.column===1/0||t.column===1/0?e.column=t.column=1/0:e.column>t.column&&(e.column=this.end_.column,e.absolute_column=this.end_.absolute_column,t.column=this.start_.column,t.absolute_column=this.start_.absolute_column),this.start_=e,this.end_=t}TopLeft(){let e={row:0,column:0};return this.entire_row||(e.column=this.start.column),this.entire_column||(e.row=this.start.row),e}BottomRight(){let e={row:0,column:0};return this.entire_row||(e.column=this.end.column),this.entire_column||(e.row=this.end.row),e}ContainsRow(e){return this.entire_column||e>=this.start_.row&&e<=this.end_.row}ContainsColumn(e){return this.entire_row||e>=this.start_.column&&e<=this.end_.column}Contains(e){return(this.entire_column||e.row>=this.start_.row&&e.row<=this.end_.row)&&(this.entire_row||e.column>=this.start_.column&&e.column<=this.end_.column)}ContainsArea(e){return this.start.column<=e.start.column&&this.end.column>=e.end.column&&this.start.row<=e.start.row&&this.end.row>=e.end.row}Intersects(e){return!(e.start.column>this.end.column||this.start.column>e.end.column||e.start.row>this.end.row||this.start.row>e.end.row)}Equals(e){return e.start_.row===this.start_.row&&e.start_.column===this.start_.column&&e.end_.row===this.end_.row&&e.end_.column===this.end_.column}Clone(){return new v(this.start,this.end)}Array(){if(this.entire_column||this.entire_row)throw new Error("can't convert infinite area to array");let e=new Array(this.rows*this.columns),t=this.start_.sheet_id,r=0;for(let i=this.start_.row;i<=this.end_.row;i++)for(let s=this.start_.column;s<=this.end_.column;s++)e[r++]={row:i,column:s,sheet_id:t};return e}get left(){let e=new v(this.start_,this.end_);return e.end_.column=e.start_.column,e}get right(){let e=new v(this.start_,this.end_);return e.start_.column=e.end_.column,e}get top(){let e=new v(this.start_,this.end_);return e.end_.row=e.start_.row,e}get bottom(){let e=new v(this.start_,this.end_);return e.start_.row=e.end_.row,e}Shift(e,t){return this.start_.row+=e,this.start_.column+=t,this.end_.row+=e,this.end_.column+=t,this}ConsumeAddress(e){this.entire_row||(e.column<this.start_.column&&(this.start_.column=e.column),e.column>this.end_.column&&(this.end_.column=e.column)),this.entire_column||(e.row<this.start_.row&&(this.start_.row=e.row),e.row>this.end_.row&&(this.end_.row=e.row))}ConsumeArea(e){this.ConsumeAddress(e.start),this.ConsumeAddress(e.end)}Resize(e,t){return this.end_.row=this.start_.row+e-1,this.end_.column=this.start_.column+t-1,this}Iterate(e){if(this.entire_column||this.entire_row){console.warn("don't iterate infinite area");return}for(let t=this.start_.column;t<=this.end_.column;t++)for(let r=this.start_.row;r<=this.end_.row;r++)e({column:t,row:r,sheet_id:this.start_.sheet_id})}get spreadsheet_label(){let e;return this.entire_sheet?"":this.entire_column?(e=v.ColumnToLabel(this.start_.column),e+=":"+v.ColumnToLabel(this.end_.column),e):this.entire_row?(e=String(this.start_.row+1),e+=":"+(this.end_.row+1),e):(e=v.CellAddressToLabel(this.start_),this.columns>1||this.rows>1?e+":"+v.CellAddressToLabel(this.end_):e)}toJSON(){return{start:{...this.start_},end:{...this.end_}}}};var ye=d=>typeof d=="object"&&!!d&&typeof d.real=="number"&&typeof d.imaginary=="number",Ze=d=>d.real?d.imaginary?d.imaginary>0?`${d.real} + ${d.imaginary}i`:`${d.real} - ${Math.abs(d.imaginary)}i`:d.real.toString():d.imaginary?d.imaginary+"i":"0",sr=d=>typeof d=="object"&&!!d&&typeof d.value=="number"&&typeof d.unit=="string";var ae=d=>{switch(typeof d){case"undefined":return 0;case"number":return 3;case"boolean":return 4;case"object":return d===null?0:ye(d)?7:sr(d)?9:5;case"string":return d[0]==="="?1:2;default:return 6}};var ee=class{constructor(e,t){this.type=0;this.render_clean=[];typeof e<"u"&&this.Set(e,t)}static StringToColumn(e){let t=0;e=e.toUpperCase();for(let r=0;r<e.length;r++)t*=26,t+=e.charCodeAt(r)-64;return t-1}ValueIsNumber(){return this.type===3}ValueIsFormula(){return this.type===1}ValueIsBoolean(){return this.type===4}ValueIsComplex(){return this.type===7}FlushStyle(){this.formatted=this.rendered_type=this.style=void 0,this.render_clean=[]}FlushArray(){this.area=void 0}FlushCache(){this.calculated=this.calculated_type=this.formatted=this.rendered_type=this.render_function=this.click_function=void 0,this.render_clean=[]}Reset(){this.type=0,this.value=this.note=this.hyperlink=this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.area=this.renderer_data=this.render_function=this.click_function=void 0,this.render_clean=[]}Set(e,t=ae(e)){this.value=e,this.type=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.render_function=this.click_function=this.area=void 0,this.render_clean=[]}SetCalculatedValue(e,t=ae(e)){e===void 0&&(e=0,t=3),this.calculated!==e&&(this.calculated=e,this.calculated_type=t,this.formatted=this.rendered_type=void 0,this.render_clean=[])}GetValue(){return this.calculated_type?this.calculated:typeof this.value=="string"&&this.value[0]==="'"?this.value.slice(1):this.value}GetValue4(){return this.calculated_type?{type:this.calculated_type,value:this.calculated}:this.type===1?{type:3,value:0}:{type:this.type,value:typeof this.value=="string"&&this.value[0]==="'"?this.value.slice(1):this.value}}SetNote(e){this.note=e,this.render_clean=[]}SetCalculationError(e="ERR"){this.SetCalculatedValue(e,6)}SetArray(e){this.type=0,this.value=this.formatted=this.rendered_type=this.style=this.hyperlink=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}SetArrayHead(e,t){this.type=ae(t),this.value=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}};var nr=d=>!d.cells,rt=d=>!!d[0]&&nr(d[0]),ar=d=>!!d[0]&&d[0].row!==void 0,wt=class{constructor(){this.data=[];this.rows_=0;this.columns_=0}get rows(){return this.rows_}get columns(){return this.columns_}EnsureRow(e){this.rows_=Math.max(e+1,this.rows_)}EnsureColumn(e){this.columns_=Math.max(e+1,this.columns_)}InsertColumns(e=0,t=1){let r=JSON.parse(JSON.stringify(this.data[13]));this.data=this.data.map(i=>{if(i.length>=e){let s=i.slice(0,e),n=e+t,a=i.slice(e);for(let o=0;o<a.length;o++)s[n++]=a[o];return s}return i}),this.columns_+=t}DeleteColumns(e,t=1){this.data.forEach(r=>r.splice(e,t)),this.columns_-=t}DeleteRows(e,t=1){this.data.splice(e,t),this.rows_-=t}InsertRows(e=0,t=1){let r=[e,0,[]];for(let i=1;i<t;i++)r.push([]);Array.prototype.splice.apply(this.data,r),this.rows_+=t}GetCell(e,t){let{row:r,column:i}=e;if(!this.data[r])if(t)this.data[r]=[],this.rows_=Math.max(this.rows_,r+1);else return;return this.data[r][i]||t&&(this.data[r][i]=new ee,this.columns_=Math.max(this.columns_,i+1)),this.data[r][i]}EnsureCell(e){let{row:t,column:r}=e,i=this.data[t];i||(this.data[t]=i=[],this.rows_=Math.max(this.rows_,t+1));let s=i[r];return s||(s=i[r]=new ee,this.columns_=Math.max(this.columns_,r+1)),s}FromArray(e=[],t=!1){this.data=[];let r=0,i=0;if(t){i=e.length;for(let s=0;s<i;s++){let n=e[s];r=Math.max(r,n.length);for(let a=0;a<n.length;a++)this.data[a]||(this.data[a]=[]),this.data[a][s]=new ee(n[a])}}else{r=e.length;for(let s=0;s<r;s++){let n=[],a=e[s];i=Math.max(i,a.length);for(let o=0;o<a.length;o++)n[o]=new ee(a[o]);this.data[s]=n}}this.rows_=r,this.columns_=i}FromJSON(e=[],t){if(this.data=[],!rt(e)){let i=[];if(ar(e))for(let s of e)for(let n of s.cells)i.push({...n,row:s.row});else for(let s of e)for(let n of s.cells)i.push({...n,column:s.column});e=i}let r=[];for(let i of e){this.data[i.row]||(this.data[i.row]=[]);let s=new ee(i.value);if(typeof i.calculated<"u"&&s.SetCalculatedValue(i.calculated,i.calculated_type),t&&typeof i.style_ref<"u"&&(s.style=t[i.style_ref]),typeof i.note<"u"&&(s.note=i.note),typeof i.hyperlink<"u"&&(s.hyperlink=i.hyperlink),this.data[i.row][i.column]&&this.data[i.row][i.column].area&&(s.area=this.data[i.row][i.column].area),this.data[i.row][i.column]=s,i.area){let n=new v(i.area.start,i.area.end);for(let a=n.start.row;a<=n.end.row;a++)for(let o=n.start.column;o<=n.end.column;o++)this.data[a]||(this.data[a]=[]),this.data[a][o]||(this.data[a][o]=new ee),this.data[a][o].area=n}if(i.table&&r.push({...i.table}),i.merge_area){let n=new v(i.merge_area.start,i.merge_area.end);for(let a=n.start.row;a<=n.end.row;a++)for(let o=n.start.column;o<=n.end.column;o++)this.data[a]||(this.data[a]=[]),this.data[a][o]||(this.data[a][o]=new ee),this.data[a][o].merge_area=n}i.validation&&(s.validation=i.validation)}for(let i of r)for(let s=i.area.start.row;s<=i.area.end.row;s++)for(let n=i.area.start.column;n<=i.area.end.column;n++)this.data[s]||(this.data[s]=[]),this.data[s][n]||(this.data[s][n]=new ee),this.data[s][n].table=i;this.rows_=this.data.length,this.columns_=this.data.reduce((i,s)=>Math.max(i,s.length),0)}toJSON(e={}){let t=0,r=0,i=this.data.length-1,s;e.subset&&(t=e.subset.start.column,r=e.subset.start.row,i=e.subset.end.row);let n=[],a=-1,o=-1,l={},c={};for(let h=r;h<=i;h++)if(this.data[h]){let u=this.data[h];s=u.length-1,e.subset&&(s=e.subset.end.column);for(let m=t;m<=s;m++){let f=u[m],b=f&&f.merge_area&&f.merge_area.start.row===h&&f.merge_area.start.column===m,p=f&&f.area&&f.area.start.row===h&&f.area.start.column===m,g=f&&f.table&&f.table.area.start.row===h&&f.table.area.start.column===m,_=f?f.type===2&&!f.value:!0;if(f&&(!_||e.preserve_empty_strings)&&(b||f.type||f.calculated_type&&e.expand_arrays||f.calculated_type&&e.calculated_value||f.note||f.validation||e.decorated_cells&&f.style&&(f.style.fill||f.style.border_bottom||f.style.border_top||f.style.border_left||f.style.border_right))){let y={row:h,column:m,value:f.value};f.note&&(y.note=f.note),f.hyperlink&&(y.hyperlink=f.hyperlink),e.preserve_type&&(y.type=f.type),e.sheet_id&&(y.sheet_id=e.sheet_id),e.calculated_value&&typeof f.calculated<"u"&&(y.calculated=f.calculated,(e.preserve_type||f.calculated_type===6)&&(y.calculated_type=f.calculated_type)),f.table&&g&&e.tables&&(y.table=JSON.parse(JSON.stringify(f.table))),f.area&&p&&(y.area=f.area.toJSON()),f.merge_area&&(y.merge_area=f.merge_area.toJSON()),f.validation&&(y.validation=f.validation),e.cell_style_refs&&e.cell_style_refs[m]&&e.cell_style_refs[m][h]&&(y.style_ref=e.cell_style_refs[m][h],e.cell_style_refs[m][h]=0),l[h]=h,c[m]=m,a=Math.max(h,a),o=Math.max(m,o),n.push(y)}}}if(e.nested){let h=Object.keys(l),u=Object.keys(c);if(h.length<=u.length&&h.length){let m={},f=[];for(let b of n){let{row:p,...g}=b;m[b.row]||(m[b.row]=[]),m[b.row].push(g)}for(let b of h){let p=Number(b);f.push({row:p,cells:m[p]})}return{data:f,rows:a,columns:o+1}}else if(u.length){let m={},f=[];for(let b of n){let{column:p,...g}=b;m[b.column]||(m[b.column]=[]),m[b.column].push(g)}for(let b of u){let p=Number(b);f.push({column:p,cells:m[p]})}return{data:f,rows:a,columns:o+1}}}return{data:n,rows:a+1,columns:o+1}}GetAll(e=!1){return this.GetRange({row:0,column:0},{row:this.rows_-1,column:this.columns_-1},e)}Normalize2(e,t){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),t.column===1/0&&(t={...t,column:this.columns_-1}),t.row===1/0&&(t={...t,row:this.rows_-1}),{from:e,to:t}}Normalize1(e){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),e}RawValue(e,t=e){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].value:void 0;let r=[],i=this.data.slice(e.row,t.row+1),s=e.column,n=t.column+1;for(let a of i){let o=[];for(let l=s,c=0;l<n;l++,c++){let h=a[l];o.push(h?h.value:void 0)}r.push(o)}return r}GetRange(e,t,r=!1){if(t?{from:e,to:t}=this.Normalize2(e,t):e=this.Normalize1(e),!t||e===t||e.column===t.column&&e.row===t.row)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue():void 0;let i=[];if(r)for(let s=e.column;s<=t.column;s++){let n=[];for(let a=e.row;a<=t.row;a++)this.data[a]&&this.data[a][s]?n.push(this.data[a][s].GetValue()):n.push(void 0);i.push(n)}else for(let s=e.row;s<=t.row;s++){let n=[];for(let a=e.column;a<=t.column;a++)this.data[s]&&this.data[s][a]?n.push(this.data[s][a].GetValue()):n.push(void 0);i.push(n)}return i}GetRange4(e,t=e,r=!1){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue4():{value:void 0,type:0};let i=[];if(r)for(let s=e.column;s<=t.column;s++){let n=[];for(let a=e.row;a<=t.row;a++)this.data[a]&&this.data[a][s]?n.push(this.data[a][s].GetValue4()):n.push({type:0});i.push(n)}else for(let s=e.row;s<=t.row;s++){let n=[];for(let a=e.column;a<=t.column;a++)this.data[s]&&this.data[s][a]?n.push(this.data[s][a].GetValue4()):n.push({type:0});i.push(n)}return{type:8,value:i}}Apply(e,t,r=!1){if(L(e)&&(e=new v(e)),e.entire_column||e.entire_row)throw new Error("don't iterate infinite cells");let i=e.start,s=e.end;if(r)for(let n=i.row;n<=s.row;n++){this.data[n]||(this.data[n]=[]);let a=this.data[n];for(let o=i.column;o<=s.column;o++)a[o]||(a[o]=new ee),t(a[o],o,n)}else for(let n=i.row;n<=s.row;n++)if(this.data[n]){let a=this.data[n];for(let o=i.column;o<=s.column;o++)a[o]&&t(a[o],o,n)}}Apply2(e,t,r=!1){if(L(e)&&(e=new v(e)),e.entire_column||e.entire_row)throw new Error("don't iterate infinite cells");let i=e.start,s=e.end;if(r)for(let n=i.row;n<=s.row;n++){this.data[n]||(this.data[n]=[]);let a=this.data[n];for(let o=i.column;o<=s.column;o++)if(a[o]||(a[o]=new ee),!t(a[o],o,n))return}else for(let n=i.row;n<=s.row;n++)if(this.data[n]){let a=this.data[n];for(let o=i.column;o<=s.column;o++)if(a[o]&&!t(a[o],o,n))return}}SetArea(e,t){if(ArrayBuffer.isView(t))throw new Error("ABIV");if(Array.isArray(t))for(let r=e.start.row,i=0;r<=e.end.row;r++,i++){this.data[r]||(this.data[r]=[]);let s=this.data[r];if(t[i])for(let n=e.start.column,a=0;n<=e.end.column;n++,a++)s[n]||(s[n]=new ee),s[n].Set(t[i][a])}else{let r=ae(t);for(let i=e.start.row;i<=e.end.row;i++){this.data[i]||(this.data[i]=[]);let s=this.data[i];for(let n=e.start.column;n<=e.end.column;n++)s[n]||(s[n]=new ee),s[n].Set(t,r)}}this.rows_=Math.max(this.rows_,e.end.row+1),this.columns_=Math.max(this.columns_,e.end.column+1)}IterateAll(e){for(let t of this.data)if(t)for(let r of t)r&&e(r)}FlushCellStyles(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushStyle()}FlushCachedValues(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushCache()}};var R=class{static UpdateLocale(e){if(e)this.locale=e;else if(typeof self<"u"){let i=self?.document?.location;if(i&&i.search&&/locale=([^?&]+?)(?:\?|$|&)/.test(i.search)){let s=i.search.match(/locale=(.*?)(?:\?|$|&)/);s&&(this.locale=s[1]),console.info("override locale",this.locale)}else typeof navigator<"u"&&(navigator.languages&&navigator.languages[0]?this.locale=navigator.languages[0]:this.locale=navigator.language)}let t=new Intl.NumberFormat(this.locale,{minimumFractionDigits:1}).format(3.3).replace(/\d/g,"");this.decimal_separator=t===","?",":".",this.decimal_separator===","?(this.argument_separator=";",this.grouping_separator=" "):(this.argument_separator=",",this.grouping_separator=",");let r=new Date(2e3,0,2,12,0,0,0);this.UpdateDateComponent(0,0,r),r=new Date(2e3,1,7,12,0,0,0),this.UpdateDateComponent(1,1,r),r=new Date(2e3,2,7,12,0,0,0),this.UpdateDateComponent(2,2,r),r=new Date(2e3,3,5,12,0,0,0),this.UpdateDateComponent(3,3,r),r=new Date(2e3,4,4,12,0,0,0),this.UpdateDateComponent(4,4,r),r=new Date(2e3,5,2,12,0,0,0),this.UpdateDateComponent(5,5,r),r=new Date(2e3,6,1,12,0,0,0),this.UpdateDateComponent(6,6,r),r=new Date(2e3,7,1,12,0,0,0),this.UpdateDateComponent(7,-1,r),r=new Date(2e3,8,1,12,0,0,0),this.UpdateDateComponent(8,-1,r),r=new Date(2e3,9,1,12,0,0,0),this.UpdateDateComponent(9,-1,r),r=new Date(2e3,10,1,12,0,0,0),this.UpdateDateComponent(10,-1,r),r=new Date(2e3,11,1,12,0,0,0),this.UpdateDateComponent(11,-1,r)}static UpdateDateComponent(e,t,r){t>=0&&(this.date_components.short_days[t]=r.toLocaleString(this.locale,{weekday:"short"}),this.date_components.long_days[t]=r.toLocaleString(this.locale,{weekday:"long"})),e>=0&&(this.date_components.short_months[e]=r.toLocaleString(this.locale,{month:"short"}),this.date_components.long_months[e]=r.toLocaleString(this.locale,{month:"long"}))}};R.locale="en-us",R.decimal_separator=".",R.argument_separator=",",R.grouping_separator=",",R.date_components={short_days:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],long_days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],short_months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months:["January","February","March","April","May","June","July","August","September","October","November","December"]};R.UpdateLocale();var U=class{constructor(e=0,t=0,r=0,i=0){this.left=e;this.top=t;this.width=r;this.height=i}get right(){return this.left+this.width}get bottom(){return this.top+this.height}static Create(e){return new U(e.left||0,e.top||0,e.width||0,e.height||0)}static IsRectangle(e){return typeof e=="object"&&typeof e?.left=="number"&&typeof e?.top=="number"&&typeof e?.width=="number"&&typeof e?.height=="number"}Shift(e=0,t=0){return new U(this.left+e,this.top+t,this.width,this.height)}Scale(e=1,t=e){return new U(this.left*e,this.top*t,this.width*e,this.height*t)}Expand(e=0,t=0){return new U(this.left,this.top,this.width+e,this.height+t)}Combine(e){return new U(Math.min(this.left,e.left),Math.min(this.top,e.top),Math.max(this.right,e.right)-Math.min(this.left,e.left),Math.max(this.bottom,e.bottom)-Math.min(this.top,e.top))}CheckEdges(e,t,r=16){let i=0;return e-this.left<r&&(i|=1),this.right-e<r&&(i|=2),t-this.top<r&&(i|=4),this.bottom-t<r&&(i|=8),i}Contains(e,t,r=0){return e>=this.left-r&&e<=this.left+this.width+r&&t>=this.top-r&&t<=this.top+this.height+r}ContextFill(e){e.fillRect(this.left,this.top,this.width,this.height)}ContextStroke(e){e.strokeRect(this.left,this.top,this.width,this.height)}Clamp(e,t){return e=Math.min(Math.max(e,this.left),this.right),t=Math.min(Math.max(t,this.top),this.bottom),{x:e,y:t}}ApplyStyle(e){e.style.top=this.top+"px",e.style.left=this.left+"px",e.style.width=this.width+"px",e.style.height=this.height+"px"}toJSON(){return{top:this.top,left:this.left,width:this.width,height:this.height}}};var k;(m=>{let d=JSON.stringify({}),e;(_=>(_.None="",_.Left="left",_.Center="center",_.Right="right"))(e=m.HorizontalAlign||={});let t;(_=>(_.None="",_.Top="top",_.Bottom="bottom",_.Middle="middle"))(t=m.VerticalAlign||={}),m.DefaultProperties={horizontal_align:"",vertical_align:"",number_format:"General",nan:"NaN",font_size:{unit:"pt",value:10.5},font_face:"sans-serif",bold:!1,italic:!1,underline:!1,strike:!1,text:{theme:1},border_top:0,border_left:0,border_right:0,border_bottom:0},m.CompositeBorders=f=>({top:{width:f.border_top||0,color:f.border_top_fill||{}},left:{width:f.border_left||0,color:f.border_left_fill||{}},right:{width:f.border_right||0,color:f.border_right_fill||{}},bottom:{width:f.border_bottom||0,color:f.border_bottom_fill||{}}}),m.Merge=(f,b,p=!0)=>{let g=p?{...f,...b}:{...b};return JSON.parse(JSON.stringify(g))},m.Composite=f=>JSON.parse(JSON.stringify(f.reduce((b,p)=>({...b,...p}),{}))),m.Empty=f=>JSON.stringify(f)===d,m.ValidColor=f=>!!(f&&!f.none&&(f.text||f.theme||f.theme===0)),m.ParseFontSize=(f="",b="em")=>{let p=f.match(/(-*[\d.]+)\s*(\S*)/);if(p){let g=Number(p[1]);if(!g||isNaN(g)||g<0)return{};let _=p[2].toLowerCase()||b;if(_==="pt"||_==="em"||_==="%"||_==="px")return{font_size:{unit:_,value:g}}}return{}},m.RelativeFontSize=(f,b)=>{let p=12,g=12;switch(f.font_size?.unit){case"pt":if(!f.font_size.value)return 1;g=f.font_size.value;break;case"px":if(!f.font_size.value)return 1;g=Math.round(f.font_size.value*300/4)/100;break;case"em":return f.font_size.value||1;case"%":return(f.font_size.value||100)/100;default:return 1}switch(b.font_size?.unit){case"pt":if(!b.font_size.value)return 1;p=b.font_size.value;break;case"px":if(!b.font_size.value)return 1;p=Math.round(b.font_size.value*300/4)/100;break;default:return 1}return g/p},m.FontSize=(f,b=!0)=>{let p=f.font_size?.value;switch(f.font_size?.unit){case"pt":return(p||12)+"pt";case"px":return b?Math.round((p||16)*300/4)/100+"pt":(p||16)+"px";case"em":return(p||1)+"em";case"%":return(p||100)+"%"}return""},m.Font=(f,b=1)=>{let p=[];return f.bold&&p.push("bold"),f.italic&&p.push("italic"),p.push(((f.font_size?.value||0)*b).toFixed(2)+(f.font_size?.unit||"pt")),p.push(f.font_face||""),p.join(" ")}})(k||={});var or=d=>!!d&&Array.isArray(d)&&Array.isArray(d[0]),j=(d,e)=>(typeof e>"u"&&(e=ae(d)),{value:d,type:e}),de=d=>d.imaginary?{type:7,value:d}:{type:3,value:d.real};var lr=class{Darken(e,t,r,i,s=!1){let{h:n,s:a,l:o}=this.RGBToHSL(e,t,r);return s?o-=o*i/100:o-=i/100,o=Math.max(0,Math.min(1,o)),this.HSLToRGB(n,a,o)}Lighten(e,t,r,i,s=!1){let{h:n,s:a,l:o}=this.RGBToHSL(e,t,r);return s?o+=o*i/100:o+=i/100,o=Math.max(0,Math.min(1,o)),this.HSLToRGB(n,a,o)}RGBToHSL(e,t,r){e/=255,t/=255,r/=255;let i=Math.max(e,t,r),s=Math.min(e,t,r),n=0,a=0,o=(i+s)/2;if(i===s)n=a=0;else{let l=i-s;switch(a=o>.5?l/(2-i-s):l/(i+s),i){case e:n=(t-r)/l+(t<r?6:0);break;case t:n=(r-e)/l+2;break;case r:n=(e-t)/l+4;break}n/=6}return{h:n*360,s:a,l:o}}HSLToRGB(e,t,r){let i,s,n;if(t===0)i=s=n=r;else{e=e/360;let a=r<.5?r*(1+t):r+t-r*t,o=2*r-a;i=this.HueToRGB(o,a,e+1/3),s=this.HueToRGB(o,a,e),n=this.HueToRGB(o,a,e-1/3)}return{r:Math.round(i*255),g:Math.round(s*255),b:Math.round(n*255)}}HueToRGB(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+(t-e)*6*r:r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}},Me=new lr;var xt={grid_color:"#ccc",note_marker_color:"#d2c500",mode:"light",offset_cache:{},offset_light:"#fff",offset_dark:"#000"},fe=(d,e)=>T(d,e,0),ss=(d,e,t)=>{d.mode==="dark"&&(t=-t),d.tint_cache||(d.tint_cache=[]),d.tint_cache[e]||(d.tint_cache[e]={});let r=d.tint_cache[e][t];if(!r){let i=(d.theme_colors_rgb?d.theme_colors_rgb[e]:[0,0,0])||[0,0,0],s;t>0?s=Me.Lighten(i[0],i[1],i[2],t*100,!0):s=Me.Darken(i[0],i[1],i[2],-t*100,!0),r=`rgb(${s.r},${s.g},${s.b})`,d.tint_cache[e][t]=r}return r},T=(d,e,t)=>{if(e?.offset){if(e.offset.offset)return console.warn("invalid offset color"),"";let r=T(d,e.offset);if(d.offset_cache&&d.offset_cache[r])return d.offset_cache[r];let i=d.offset_light;if(r){let s=r.match(/rgb\((\d+), (\d+), (\d+)\)/);s?Me.RGBToHSL(Number(s[1]),Number(s[2]),Number(s[3])).l>.65&&(i=d.offset_dark):console.warn("can't offset against color",r),d.offset_cache||(d.offset_cache={}),d.offset_cache[r]=i}else console.warn("can't resolve offset color",e.offset);return i}return e?.text?e.text==="none"?"":e.text:e?.theme||e?.theme===0?e.tint?ss(d,e.theme,e.tint):d.theme_colors?d.theme_colors[e.theme]:"":(t||t===0)&&d.theme_colors?d.theme_colors[t]:""},ns=d=>{let e=10,t="pt",r=d.match(/^([\d.]+)(\D.*)$/);return r&&(e=Number(r[1]),t=r[2]),{value:e,unit:t}},qr=d=>{let{value:e,unit:t}=ns(d.fontSize||""),r={fill:{text:d.backgroundColor},text:{text:d.color},font_size:{unit:t,value:e},font_face:d.fontFamily};return/italic/i.test(d.font)&&(r.italic=!0),d.fontWeight==="700"&&(r.bold=!0),r},as=(d,e)=>{let t=d.grid_cell?.text,r=d.grid_cell?.fill;e.fillStyle=t?.text||"",e.fillRect(0,0,3,3);let i=Me.RGBToHSL(...Array.from(e.getImageData(1,1,1,1).data));e.fillStyle=r?.text||"",e.fillRect(0,0,3,3);let s=Me.RGBToHSL(...Array.from(e.getImageData(1,1,1,1).data));return i.l>s.l?"dark":"light"},Ct=(d,e=.7)=>{let t={border_top:1,border_top_fill:{theme:d},border_bottom:1,border_bottom_fill:{theme:d}};return{header:{text:{offset:{theme:d}},fill:{theme:d},bold:!0,...t},odd:{fill:{theme:d,tint:e},...t},even:{...t},total:{...t,border_top:2}}},Kr=d=>{let e=JSON.parse(JSON.stringify(xt)),t=(c,h)=>{let u=document.createElement("div");return u.setAttribute("class",h),c.appendChild(u),u},r=(c,h)=>window.getComputedStyle(t(c,h)),i=t(d,""),s=r.bind(0,i),n=s("grid-cells");e.grid_cell=qr(n),e.grid_color=n.stroke||"",n=s("grid-headers"),e.headers=qr(n),e.headers_grid_color=n.stroke,(!e.headers_grid_color||e.headers_grid_color==="none")&&(e.headers_grid_color=e.grid_color),n=s("treb-offset-dark"),n.color&&(e.offset_dark=n.color),n=s("treb-offset-light"),n.color&&(e.offset_light=n.color),n=s("note-marker"),e.note_marker_color=n.backgroundColor,i.style.color="rgba(1,2,3,.4)",n=s("");let a=n.color;e.theme_colors=[e.grid_cell.fill?.text||"rgb(255, 255, 255)",e.grid_cell.text?.text||"rgb(51, 51, 51)"];for(let c=1;c<32&&(n=s(`theme-color-${c}`),!(!n.color||n.color===a));c++)e.theme_colors.push(n.color);let o=document.createElement("canvas");o.width=3,o.height=3;let l=o.getContext("2d",{willReadFrequently:!0});return l&&(e.mode=as(e,l)),l&&(e.theme_colors_rgb=e.theme_colors.map(c=>{l.fillStyle=c,l.fillRect(0,0,3,3);let h=l.getImageData(1,1,1,1);return Array.from(h.data)})),e.table=Ct(4),i.parentElement?.removeChild(i),e};var ei={column:0,type:"auto",asc:!0};var lt=/[\s-+=<>!()]/,ni=/['*\\]/,cr=34,dr=39,os=160,ti=32,ls=9,cs=10,ds=13,ve=48,it=57,hr=46,ur=43,st=45,ri=40,mr=41,nt=44,hs=37,fr=95,At=36,us=123,ms=125,at=91,ii=93,fs=33,si=59,ps=35,bs=64,$e=65,ot=97,gs=69,_s=101,St=90,kt=122,ys=105;var pr=192,br=312,gr={"==":6,"!=":6,"<>":6,"=":6,"<":7,">":7,"<=":7,">=":7,"+":9,"-":9,"&":9,"*":10,"/":10,"^":11,":":13},vs=Object.keys(gr).sort((d,e)=>e.length-d.length),ws={"-":100,"+":100},We=class{constructor(){this.argument_separator=",";this.decimal_mark=".";this.flags={spreadsheet_semantics:!0,dimensioned_quantities:!1,fractions:!0};this.r1c1_regex=/[rR]((?:\[[-+]{0,1}\d+\]|\d+))[cC]((?:\[[-+]{0,1}\d+\]|\d+))$/;this.argument_separator_char=nt;this.decimal_mark_char=hr;this.imaginary_char=ys;this.imaginary_number="i";this.id_counter=0;this.expression="";this.data=[];this.index=0;this.length=0;this.valid=!0;this.dependencies={addresses:{},ranges:{}};this.address_refcount={};this.full_reference_list=[]}Walk(e,t){switch(e.type){case"address":case"missing":case"literal":case"complex":case"identifier":case"operator":case"structured-reference":t(e);return;case"dimensioned":t(e)&&(this.Walk(e.expression,t),this.Walk(e.unit,t));return;case"range":t(e)&&(this.Walk(e.start,t),this.Walk(e.end,t));return;case"binary":t(e)&&(this.Walk(e.left,t),this.Walk(e.right,t));return;case"unary":t(e)&&this.Walk(e.operand,t);return;case"group":t(e)&&e.elements.forEach(r=>this.Walk(r,t));return;case"call":t(e)&&e.args.forEach(r=>this.Walk(r,t))}}Transpose(e){let t=e.length,r=[],i=0;for(let s=0;s<t;s++)Array.isArray(e[s])&&(i=Math.max(i,e[s].length));for(let s=0;s<i;s++){r[s]=[];for(let n=0;n<t;n++)r[s][n]=e[n][s]}return r}Render(e,t={}){let r=t.offset||{rows:0,columns:0},i=t.missing??"(missing)",{convert_decimal:s,convert_argument_separator:n,convert_imaginary_number:a,long_structured_references:o,table_name:l}=t,c=this.argument_separator+" ";n===","?c=", ":n===";"&&(c="; ");let h=this.imaginary_number;a&&(h=a);let u=s===","?",":".",m=this.decimal_mark===","?/,/:/\./,f=this.decimal_mark===","?/,/g:/\./g;switch(e.type){case"address":return this.AddressLabel(e,r);case"range":return this.AddressLabel(e.start,r)+":"+this.AddressLabel(e.end,r);case"missing":return i;case"array":return"{"+this.Transpose(e.values).map(b=>b.map(p=>typeof p=="string"?'"'+p+'"':p).join(", ")).join("; ")+"}";case"binary":return this.Render(e.left,t)+" "+e.operator+" "+this.Render(e.right,t);case"unary":return e.operator+this.Render(e.operand,t);case"complex":if(e.text)return s?e.text.replace(f,u):e.text;{let b=Math.abs(e.imaginary).toString();if((s===","||this.decimal_mark===",")&&(b=b.replace(/\./,",")),e.real){let p=e.real.toString();(s===","||this.decimal_mark===",")&&(p=p.replace(/\./,","));let g=Math.abs(e.imaginary);return`${p}${e.imaginary<0?" - ":" + "}${g===1?"":b}i`}else return e.imaginary===-1?"-i":e.imaginary===1?"i":`${e.imaginary<0?"-":""}${b}i`}break;case"literal":if(typeof e.value=="string")return'"'+e.value.replace(/"/g,'""')+'"';if(s&&typeof e.value=="number")if(e.text){let b=e.text;return s===","&&this.decimal_mark==="."&&(b=b.replace(/,/g,"")),b.replace(m,u)}else return e.value.toString().replace(/\./,u);else if(e.text)return e.text;return e.value.toString();case"identifier":return e.name;case"operator":return"["+e.operator+"]";case"group":return e.explicit?"("+e.elements.map(b=>this.Render(b,t)).join(c)+")":e.elements.map(b=>this.Render(b,t)).join(c);case"call":return e.name+"("+e.args.map(b=>this.Render(b,t)).join(c)+")";case"dimensioned":return this.Render(e.expression)+" "+this.Render(e.unit);case"structured-reference":{let b=e.column;/[^A-Za-z]/.test(b)&&(b="["+b+"]");let p=e.table;switch(!p&&o&&l&&(p=l),e.scope){case"all":return`${p}[[#all],${b}]`;case"row":return o?`${p}[[#this row],${b}]`:`${p}[@${b}]`;case"column":return`${p}[${b}]`}throw new Error("unhandled scope in structured reference")}}return"??"}Parse(e){switch(e=e.trim(),e[0]==="="&&(e=e.substr(1).trim()),this.expression=e,this.data=[],this.length=e.length,this.index=0,this.valid=!0,this.error_position=void 0,this.error=void 0,this.dependencies.addresses={},this.dependencies.ranges={},this.address_refcount={},this.full_reference_list=[],this.id_counter=0,this.argument_separator){case";":this.argument_separator_char=si;break;default:this.argument_separator_char=nt;break}switch(this.decimal_mark){case",":this.decimal_mark_char=nt;break;default:this.decimal_mark_char=hr;break}for(let i=0;i<this.length;i++)this.data[i]=e.charCodeAt(i);let t=this.ParseGeneric(),r={};for(let i of Object.keys(this.dependencies.addresses))this.address_refcount[i]&&(r[i]=this.dependencies.addresses[i]);return this.dependencies.addresses=r,{expression:t||void 0,valid:this.valid,error:this.error,error_position:this.error_position,dependencies:this.dependencies,separator:this.argument_separator,decimal_mark:this.decimal_mark,full_reference_list:this.full_reference_list.slice(0)}}ColumnLabel(e){if(e===1/0)return"";let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}AddressLabel(e,t){let r=e.column;!e.absolute_column&&e.column!==1/0&&(r+=t.columns);let i=e.row;if(!e.absolute_row&&e.row!==1/0&&(i+=t.rows),i<0||r<0||i===1/0&&r===1/0)return"#REF";let s="";return e.sheet&&(s=(lt.test(e.sheet)?"'"+e.sheet+"'":e.sheet)+"!"),i===1/0?s+(e.absolute_column?"$":"")+this.ColumnLabel(r):r===1/0?s+(e.absolute_row?"$":"")+(i+1):s+(e.absolute_column?"$":"")+this.ColumnLabel(r)+(e.absolute_row?"$":"")+(i+1)}ParseGeneric(e=[0]){let t=[];for(;this.index<this.length;){let r=this.ParseNext(t.length===0);if(typeof r=="number"){if(e.some(i=>r===i))break;if(r===ri){this.index++;let i=this.ParseGeneric([mr]);this.index++,i&&t.push({type:"group",id:this.id_counter++,elements:[i],explicit:!0})}else{let i=this.ConsumeOperator();i?t.push(i):(this.error=`unexpected character [1]: ${String.fromCharCode(r)}, 0x${r.toString(16)}`,this.valid=!1,this.index++)}}else t.push(r)}if(t.length){if(t=this.BinaryToRange2(t),this.flags.fractions){let r=[],i=n=>n.type==="literal"&&typeof n.value=="number"&&n.value%1===0,s=0;for(;s<t.length-3;s++)if(i(t[s])&&i(t[s+1])&&t[s+2].type==="operator"&&t[s+2].operator==="/"&&i(t[s+3])){let n=t[s],a=t[s+1],o=t[s+3],l=(n.value<0?-1:1)*(a.value/o.value);s+=3,r.push({id:t[s].id,type:"literal",text:this.expression.substring(n.position,o.position+1),value:n.value+l,position:n.position})}else r.push(t[s]);for(;s<t.length;s++)r.push(t[s]);t=r}if(t=t.map(r=>r.type==="identifier"&&r.name===this.imaginary_number?{type:"complex",real:0,imaginary:1,position:r.position,text:r.name,id:this.id_counter++}:r),this.flags.dimensioned_quantities){let r=[],i;for(let s=0;s<t.length;s++){let n=t[s];if(!i)i=n;else if(n.type==="identifier"&&(i.type==="literal"||i.type==="group"||i.type==="call")){let a=n;for(;t[s+1]?.type==="identifier";)a.name+=" "+t[++s].name;r.push({type:"dimensioned",expression:i,unit:n,id:this.id_counter++}),i=void 0}else r.push(i),i=n}i&&r.push(i),t=r}}return t.length===0?null:t.length===1?t[0]:this.BinaryToComplex(this.ArrangeUnits(t))}UnitToAddress(e){if(e.type==="literal"){if(typeof e.value=="number"&&e.value>0&&!/\./.test(e.text||""))return{type:"address",position:e.position,label:e.value.toString(),row:e.value-1,id:this.id_counter++,column:1/0}}else{let t,r=e.name,i=r.split("!");if(i.length>1&&(t=i.slice(0,i.length-1).join("!"),r=r.substr(t.length+1),t[0]==="'"))if(t.length>1&&t[t.length-1]==="'")t=t.substr(1,t.length-2);else return;let s=r[0]==="$";r=(s?r.substr(1):r).toUpperCase();let n=Number(r);if(isNaN(n)){if(/[A-Z]{1,3}/.test(r)){let a=-1;for(let o=0;o<r.length;o++){let l=r[o].charCodeAt(0);a=26*(1+a)+(l-$e)}return{type:"address",position:e.position,absolute_column:s,label:e.name,column:a,id:this.id_counter++,row:1/0,sheet:t}}}else if(n>0&&n!==1/0&&!/\./.test(r))return{type:"address",position:e.position,absolute_row:s,label:e.name,row:n-1,id:this.id_counter++,column:1/0,sheet:t}}}BinaryToRange2(e){let t=[];for(let r=0;r<e.length;r++){let i=e[r],s=e[r+1],n=e[r+2],a,o="",l;if(i&&s&&n&&s.type==="operator"&&s.operator===":"){if(i.type==="address"&&n.type==="address"){let c=i.position+i.label.length,h=n.position;a={type:"range",id:this.id_counter++,position:i.position,start:i,end:n,label:i.label+this.expression.substring(c,h)+n.label},o=a.start.label+":"+a.end.label,this.address_refcount[a.start.label]--,this.address_refcount[a.end.label]--;let u=[i.position,n.position];this.full_reference_list=this.full_reference_list.filter(m=>m.position!==u[0]&&m.position!==u[1])}else if((i.type==="literal"||i.type==="identifier")&&(n.type==="literal"||n.type==="identifier")){let c=this.UnitToAddress(i);if(!c&&i.type==="literal"&&typeof i.value=="number"&&i.value<0){let u={...i,text:(i.text||"").replace(/^-/,""),position:i.position+1,value:-i.value};c=this.UnitToAddress(u),c&&(l={type:"operator",operator:"-",position:i.position,id:this.id_counter++})}let h=this.UnitToAddress(n);c&&h&&(c.column===1/0&&h.column===1/0||c.row===1/0&&h.row===1/0)&&(o=c.label+":"+h.label,a={type:"range",id:this.id_counter++,position:c.position,start:c,end:h,label:o})}}a?(l&&t.push(l),t.push(a),this.dependencies.ranges[o]=a,this.full_reference_list.push(a),r+=2):t.push(i)}return t}BinaryToComplex(e){if(e.type==="binary")if((e.operator==="+"||e.operator==="-")&&e.left.type==="literal"&&typeof e.left.value=="number"&&e.right.type==="complex"&&!e.right.composited){let t="";t=this.expression.substring(e.left.position,e.right.position+(e.right.text?.length||0));let r=e.right.imaginary;return e.operator==="-"&&(r=-r),{type:"complex",position:e.left.position,text:t,id:this.id_counter++,imaginary:r,real:e.left.value,composited:!0}}else e.left=this.BinaryToComplex(e.left),e.right=this.BinaryToComplex(e.right);else if(e.type==="unary"&&(e.operator==="-"||e.operator==="+")&&e.operand.type==="complex"&&e.operand.text===this.imaginary_number)return{...e.operand,position:e.position,text:this.expression.substring(e.position,e.operand.position+(e.operand.text||"").length),imaginary:e.operand.imaginary*(e.operator==="-"?-1:1)};return e}BinaryToRangeX(e){if(e.type==="binary"){if(e.operator===":"){let t,r="";if(e.left.type==="address"&&e.right.type==="address"){let i=e.left.position+e.left.label.length,s=e.right.position;t={type:"range",id:this.id_counter++,position:e.left.position,start:e.left,end:e.right,label:e.left.label+this.expression.substring(i,s)+e.right.label},r=t.start.label+":"+t.end.label,this.address_refcount[t.start.label]--,this.address_refcount[t.end.label]--;let n=[e.left.position,e.right.position];this.full_reference_list=this.full_reference_list.filter(a=>a.position!==n[0]&&a.position!==n[1])}else if((e.left.type==="literal"||e.left.type==="identifier")&&(e.right.type==="literal"||e.right.type==="identifier")){let i=this.UnitToAddress(e.left),s=this.UnitToAddress(e.right);i&&s&&(i.column===1/0&&s.column===1/0||i.row===1/0&&s.row===1/0)&&(r=i.label+":"+s.label,t={type:"range",id:this.id_counter++,position:e.left.position,start:i,end:s,label:r})}if(t)return this.dependencies.ranges[r]=t,this.full_reference_list.push(t),t;this.error="unexpected character: :",this.valid=!1}e.left=this.BinaryToRangeX(e.left),e.right=this.BinaryToRangeX(e.right)}return e}ArrangeUnits(e){if(e.length===0)return{type:"missing",id:this.id_counter++};if(e.length===1)return e[0];let t=[];for(let r=0;r<e.length;r++){let i=e[r];if(i.type==="operator")if(t.length===0||t[t.length-1].type==="operator")if(ws[i.operator]){let s=this.BinaryToComplex(this.ArrangeUnits(e.slice(r+1)));if(!this.valid)return{type:"group",id:this.id_counter++,elements:e,explicit:!1};s.type==="binary"?(s.left={type:"unary",id:this.id_counter++,operator:i.operator,operand:s.left,position:i.position},i=s):i={type:"unary",id:this.id_counter++,operator:i.operator,operand:s,position:i.position},r=e.length}else return this.error=`unexpected character [2]: ${i.operator}`,this.error_position=i.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1};else{t.push(i);continue}if(t.length<2)t.push(i);else if(t[t.length-1].type==="operator"){let s=t[t.length-2],n=t[t.length-1],a=n.operator,o={type:"binary",id:this.id_counter++,left:s,operator:a,position:n.position,right:i};s.type==="binary"&&gr[a]>gr[s.operator]&&(o.left=s.left,o.operator=s.operator,o.position=s.position,o.right={type:"binary",id:this.id_counter++,left:s.right,right:i,operator:a,position:n.position}),t.splice(-2,2,o)}else return this.error="multiple expressions",this.error_position=i.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1}}return t[0]}ParseNext(e=!0){this.ConsumeWhiteSpace();let t=this.data[this.index];if(t===cr)return{type:"literal",id:this.id_counter++,position:this.index,value:this.ConsumeString()};if(t>=ve&&t<=it||t===this.decimal_mark_char)return this.ConsumeNumber();if(t===us)return this.ConsumeArray();if(e&&(t===st||t===ur)){let r=this.data[this.index+1];if(r>=ve&&r<=it||r===this.decimal_mark_char)return this.ConsumeNumber()}else if(t>=$e&&t<=St||t>=ot&&t<=kt||t===fr||t===ps||t===dr||t===At||t===at||t>=pr&&t<=br)return this.ConsumeToken(t);return t}ConsumeArray(){let e={type:"array",id:this.id_counter++,values:[],position:this.index};this.index++;let t=0,r=0;for(;this.index<this.length;){let i=this.ParseNext(),s=this.index;if(typeof i=="number")switch(this.index++,i){case si:r++,t=0;break;case nt:t++;break;case ms:return e;default:this.valid&&(this.error="invalid character in array literal",this.error_position=s,this.valid=!1);break}else switch(i.type){case"literal":e.values[t]||(e.values[t]=[]),e.values[t][r]=i.value;break;default:this.valid&&(this.error="invalid value in array literal",this.error_position=s,this.valid=!1);break}}return e}ConsumeOperator(){for(let e of vs)if(this.expression.substr(this.index,e.length)===e){let t=this.index;return this.index+=e.length,{type:"operator",id:this.id_counter++,operator:e,position:t}}return null}ConsumeArguments(){this.index++;let e=0,t=[];for(;this.index<this.length;){let r=this.ParseGeneric([this.argument_separator_char,mr]);r!==null&&t.push(r);let i=this.data[this.index];if(i===this.argument_separator_char){this.index++,e++;for(let s=t.length;s<e;s++)t.push({type:"missing",id:this.id_counter++})}else if(i===mr)return this.index++,t}return t}ConsumeToken(e){let t=[e],r=this.index,i=e===dr,s=0,n=!1;for(e===at&&(s=1,n=!0),++this.index;this.index<this.length;this.index++){let c=this.data[this.index];if(c>=$e&&c<=St||c>=ot&&c<=kt||c>=pr&&c<=br||c===fr||c===At||c===hr||c===fs||i||c>=ve&&c<=it||c===at||s>0&&c===ii||c===st&&this.flags.r1c1&&s===1||s>0&&c===bs&&this.data[this.index-1]===at||s===1&&(c===nt||c===ti)||s>1)t.push(c),c===at&&(s++,n=!0),c===ii&&s--,c===dr&&(i=!1);else break}let a=t.map(c=>String.fromCharCode(c)).join("");if(i)return this.error="unbalanced single quote",this.error_position=r,this.valid=!1,{type:"identifier",id:this.id_counter++,name:a,position:r};if(s)return this.error="unbalanced square bracket",this.error_position=r,this.valid=!1,{type:"identifier",id:this.id_counter++,name:a,position:r};if(a.toLowerCase()==="true")return{type:"literal",id:this.id_counter++,value:!0,position:r};if(a.toLowerCase()==="false")return{type:"literal",id:this.id_counter++,value:!1,position:r};if(this.ConsumeWhiteSpace(),this.data[this.index]===ri){let c=this.ConsumeArguments();return{type:"call",id:this.id_counter++,name:a,args:c,position:r}}if(this.flags.spreadsheet_semantics){let c=this.ConsumeAddress(a,r);if(c)return c;if(n){let h=this.ConsumeStructuredReference(a,r);if(h)return h}}let l={type:"identifier",id:this.id_counter++,name:a,position:r};return this.full_reference_list.push(l),l}ConsumeStructuredReference(e,t){let r=t,i=e.length,s=e,n="",a=0;for(;a<i;a++){if(e[a]==="["){e=e.substring(a);break}n+=e[a]}if(e[0]!=="["||e[e.length-1]!=="]")return;e=e.substring(1,e.length-1);let o=e.split(",").map(u=>u.trim()),l="column",c="";if(o.length>2)return;o.length===2?(/\[#this row\]/i.test(o[0])?l="row":/\[#all\]/i.test(o[0])&&(l="all"),c=o[1]):(c=o[0],c[0]==="@"&&(l="row",c=c.substring(1,c.length))),c[0]==="["&&c[c.length-1]==="]"&&(c=c.substring(1,c.length-1));let h={type:"structured-reference",id:this.id_counter++,label:s,position:t,scope:l,column:c,table:n};return this.full_reference_list.push(h),h}ConsumeAddress(e,t){let r=t,i=e.length,s,n=e.split("!");if(n.length>1&&(s=n.slice(0,n.length-1).join("!"),t+=s.length+1),this.flags.r1c1){let h=n[n.length-1].match(this.r1c1_regex);if(h){let u={type:"address",id:this.id_counter++,label:e,row:0,column:0,position:r,sheet:s,r1c1:!0};return h[1][0]==="["?(u.offset_row=!0,u.row=Number(h[1].substring(1,h[1].length-1))):u.row=Number(h[1])-1,h[2][0]==="["?(u.offset_column=!0,u.column=Number(h[2].substring(1,h[2].length-1))):u.column=Number(h[2])-1,u}}let a=this.ConsumeAddressColumn(t);if(!a)return null;t=a.position;let o=this.ConsumeAddressRow(t);if(!o)return null;t=o.position;let l=s?s+e.substr(s.length,t-r).toUpperCase():e.substr(0,t-r).toUpperCase();s&&s[0]==="'"&&(s=s.substr(1,s.length-2));let c={type:"address",id:this.id_counter++,label:l,row:o.row,column:a.column,absolute_row:o.absolute,absolute_column:a.absolute,position:r,sheet:s};return i!==t-r?null:(this.dependencies.addresses[c.label]=c,this.address_refcount[c.label]=(this.address_refcount[c.label]||0)+1,this.full_reference_list.push(c),c)}ConsumeAddressRow(e){let t=this.data[e]===At;t&&e++;let r=e,i=0;for(;;e++){let s=this.data[e];if(s>=ve&&s<=it)i*=10,i+=s-ve;else break}return r===e?!1:{absolute:t,row:i-1,position:e}}ConsumeAddressColumn(e){let t=-1,r=0,i=this.data[e]===At;for(i&&e++;;e++,r++){if(r>=4)return!1;let s=this.data[e];if(s>=$e&&s<=St)t=26*(1+t)+(s-$e);else if(s>=ot&&s<=kt)t=26*(1+t)+(s-ot);else break}return t<0?!1:{absolute:i,column:t,position:e}}ConsumeNumber(){let e=this.index,t=0,r=!1,i=!1,s=0,n=0,a=0,o="integer",l=0,c=!1,h=this.index;for(;this.index<this.length;this.index++,l++){let m=this.data[this.index];if(m===this.decimal_mark_char)if(o==="integer")o="fraction";else break;else if(m===hs){s/=100,a/=100,this.index++;break}else if(m===ur||m===st)if(l===0)m===st&&(i=!0);else break;else if(m===gs||m===_s)if(o==="integer"||o==="fraction")o="exponent",this.index<this.length-1&&(this.data[this.index+1]===ur?this.index++:this.data[this.index+1]===st&&(this.index++,r=!0));else break;else if(m===this.imaginary_char){let f=this.data[this.index+1];if(f>=$e&&f<=St||f>=ot&&f<=kt||f>=pr&&f<=br||f===fr)break;if(o==="integer"||o==="fraction"){this.index++,c=!0;break}}else if(m>=ve&&m<=it)switch(o){case"integer":s=s*10+(m-ve);break;case"fraction":a=a*10+(m-ve),n++;break;case"exponent":t=t*10+(m-ve);break}else break}let u=s+a/Math.pow(10,n);return o==="exponent"&&(u=u*Math.pow(10,(r?-1:1)*t)),c?{type:"complex",id:this.id_counter++,position:e,imaginary:i?-u:u,real:0,text:this.expression.substring(h,this.index)||""}:{type:"literal",id:this.id_counter++,position:e,value:i?-u:u,text:this.expression.substring(h,this.index)||""}}ConsumeString(){this.index++;let e=[];for(;this.index<this.length;this.index++){let t=this.data[this.index];if(t===cr&&(this.index++,this.index>=this.length||this.data[this.index]!==cr))break;e.push(t)}return e.map(t=>String.fromCharCode(t)).join("")}ConsumeWhiteSpace(){for(;this.index<this.length;){let e=this.data[this.index];if(e===ti||e===ls||e===cs||e===ds||e===os)this.index++;else return}}};var ai=(d,e=",")=>{let t=0,r=[],i="",s=[],n=d.length;if(/[\r\n"]/.test(e))throw new Error("invalid delimiter");for(let a=0;a<n;a++){let o=d[a];if(!(a===0&&o.charCodeAt(0)===65279))if(t===0)switch(o){case e:r.push(i),i="";break;case"\r":break;case`
3
- `:r.push(i),i="",s.push(r),r=[];break;case'"':i.length===0?t=1:i+=o;break;default:i+=o;break}else o==='"'?a+1<n&&d[a+1]==='"'?(i+='"',a++):t=0:i+=o}return(r.length||i.length)&&(r.push(i),s.push(r)),s};var _r=class{constructor(){}static get instance(){return this._instance}HTML(e){let t=[];for(let r of e){let i=[];for(let s of r)s.pre&&i.push("<pre>"),s.emphasis&&i.push("<em>"),s.strong&&i.push("<strong>"),s.strike&&i.push("<strike>"),i.push(s.text),s.strike&&i.push("</strike>"),s.strong&&i.push("</strong>"),s.emphasis&&i.push("</em>"),s.pre&&i.push("</pre>");t.push(i.join(""))}return t.join(`<br/>
4
- `)}Dummy(e=""){return e.split(/\n/).map(t=>[{text:t}])}Parse(e=""){let t=this.Tokenize(e);for(let r=0;r<t.length;r++){let i=t[r];if(i.type==="delimeter"){let s=t[r-1],n=t[r+1],a=!s||s.type==="whitespace"||s.type==="newline",o=s&&s.type==="text"&&/[^\w\d]$/.test(s.text),l=!n||n.type==="whitespace"||n.type==="newline",c=n&&n.type==="text"&&/^[^\w\d]/.test(n.text);i.left_flanking=!l&&(!c||a),i.right_flanking=!a&&(!o||l||c)}}return this.ApplyFormatting(t),this.Consolidate(t)}IsWhitespace(e){return e===" "||e===" "}IsNewline(e){return e==="\r"||e===`
5
- `}IsDelimeter(e){return e==="*"||e==="_"||e==="~"}Consolidate(e){let t=[],r={},i=[],s={type:"text",text:""};for(let n of e)if(n.type==="newline")s.text.length&&i.push(s),s={...r,text:"",type:"text"},t.push(i),i=[];else switch((!!r.strong!=!!n.strong||!!r.emphasis!=!!n.emphasis||!!r.strike!=!!n.strike)&&(r.strong=!!n.strong,r.emphasis=!!n.emphasis,r.strike=!!n.strike,s.text.length&&i.push(s),s={...r,text:"",type:"text"}),n.type){case"text":case"whitespace":s.text+=n.text;break;case"delimeter":for(let a=0;a<n.length;a++)s.text+=n.char;break}return s.text.length&&i.push(s),i.length&&t.push(i),t}ApplyFormatting(e,t){let r=0,i=e.length;for(r=0;r<i;r++){let s=e[r];if(s.type==="delimeter"){if(t&&s.right_flanking&&t.char===s.char&&s.length>0)return{index:r,token:s};if(s.left_flanking){let n=this.ApplyFormatting(e.slice(r+1),s);if(n.token){let a=Math.min(n.token.length,s.length),o=s.char==="~",l=!o&&!!(a%2),c=!o&&a>=2;for(let h=r+1;h<=r+n.index;h++)e[h].strong=!!e[h].strong||c,e[h].emphasis=!!e[h].emphasis||l,e[h].strike=!!e[h].strike||o;n.token.length-=a,s.length-=a,s.length>0?r--:r+=n.index}}}}return{index:r}}Tokenize(e=""){let t=[],r=e.length,i=0,s=!1,n="";for(i=0;i<r;i++){let a=e[i];if(this.IsWhitespace(a)){n&&t.push({type:"text",text:n});let o=a;for(;;){let l=e[i+1];if(this.IsWhitespace(l))o+=l,i++;else break}t.push({type:"whitespace",text:o}),s=!1,n=""}else if(this.IsNewline(a)){n&&t.push({type:"text",text:n});let o=a;for(;;){let l=e[i+1];if(this.IsNewline(l))o+=l,i++;else break}t.push({type:"newline",text:o}),s=!1,n=""}else if(s)n+=a,s=!1;else if(this.IsDelimeter(a)){n&&t.push({type:"text",text:n});let o=a;for(;;){let l=e[i+1];if(l===a)o+=l,i++;else break}t.push({type:"delimeter",text:o,char:a,length:o.length}),s=!1,n=""}else a==="\\"?s=!0:n+=a}return n&&t.push({type:"text",text:n}),t}},we=_r;we._instance=new _r;var re=()=>Promise.resolve();var xs=1e3,oe=class{constructor(e=!1,t){this.verbose=e;this.log_id=t;this.queue=[];this.dispatched=!1;this.subscribers=[]}Publish(e){this.verbose&&console.info(`es publish (${this.log_id})`,e),Array.isArray(e)?this.queue.push(...e):this.queue.push(e),this.dispatched||(this.dispatched=!0,re().then(()=>{let t=this.queue.slice(0);this.dispatched=!1,this.queue=[];for(let r of t)for(let i of this.subscribers)i.subscriber(r)}))}Subscribe(e){let t=xs++;return this.subscribers.push({subscriber:e,token:t}),t}Cancel(e){this.subscribers=this.subscribers.filter(t=>t.token!==e)}CancelAll(){this.subscribers=[]}};var pe=class{static MeasureColorARGB(e){let t=this.MeasureColor(e),r="FF";for(let i=0;i<3;i++){let s=t[i].toString(16);s.length===0?r+="00":s.length===1?r+=`0${s}`:r+=s}return r.toUpperCase()}static MeasureColor(e){let t=this.color_cache[e];if(t)return t;this.color_measurement_canvas||(this.color_measurement_canvas=document.createElement("canvas"),this.color_measurement_canvas.width=1,this.color_measurement_canvas.height=1);let r=this.color_measurement_canvas.getContext("2d",{willReadFrequently:!0});return r?(r.fillStyle="#fff",r.fillRect(0,0,1,1),r.fillStyle=e,r.fillRect(0,0,1,1),t=new Uint8ClampedArray(r.getImageData(0,0,1,1).data),this.color_cache[e]=t,t):new Uint8ClampedArray(3)}static EnsureMeasurementNode(){if(!this.text_measurement_node){let e=document.querySelector(".treb-chart-measurement-node");e?this.text_measurement_node=e:(this.text_measurement_node=document.createElement("div"),this.text_measurement_node.classList.add("treb-chart-measurement-node"),this.text_measurement_node.style.margin="0px",this.text_measurement_node.style.padding="0px",this.text_measurement_node.style.height="initial",this.text_measurement_node.style.width="initial",this.text_measurement_node.style.whiteSpace="nowrap",this.text_measurement_node.style.position="fixed",this.text_measurement_node.style.border="0px",this.text_measurement_node.style.border="1px solid red",this.text_measurement_node.style.boxSizing="content-box",this.text_measurement_node.style.top=this.text_measurement_node.style.left="-1000px",document.body.appendChild(this.text_measurement_node))}}static FontLoaded(e,t=!1,r=400){let i=`${t?"italic":""} ${r} 20pt ${e}`,s=this.MeasureText(`${i}, sans-serif`,"check font"),n=this.MeasureText(`${i}, serif`,"check font"),a=this.MeasureText(`${i}, monospace`,"check font");return s.width===n.width&&n.width===a.width}static MeasureText(e,t,r=0){this.EnsureMeasurementNode(),this.text_measurement_node.style.font=e,/\n/.test(t)?(t=t.replace(/\n/g,"<BR/>"),this.text_measurement_node.innerHTML=t):this.text_measurement_node.textContent=t,this.text_measurement_node.style.lineHeight="1em",r?this.text_measurement_node.style.transform=`rotate(${r}deg)`:this.text_measurement_node.style.transform="";let i=this.text_measurement_node.getBoundingClientRect();return{width:i.width,height:i.height}}};pe.color_cache={};var yr,Cs=(d,e,t)=>{let r={};return Array.prototype.forEach.call(e,i=>{e[i]!==t[i]&&(r[i]=e[i])}),(Object.keys(r).map(i=>`${i}: ${r[i]}`).join("; ")+"; "+(d.getAttribute("style")||"")).trim().replace(/"/g,"'")},oi=(d,e)=>{let t=d.cloneNode(!1),r=getComputedStyle(d),i=Cs(d,r,e);return t.removeAttribute("class"),t.setAttribute("style",i),Array.prototype.forEach.call(d.childNodes,s=>{switch(s.nodeType){case Node.ELEMENT_NODE:t.appendChild(oi(s,r));break;case Node.TEXT_NODE:d.textContent&&t.appendChild(document.createTextNode(d.textContent));break;case Node.COMMENT_NODE:break;default:console.warn("unhandled node type in serialize",s)}}),t},li=d=>{if(!yr){let e={},t=document.createElement("iframe");t.style.width="10px",t.style.height="10px",t.style.position="absolute",t.style.left="-100px",document.body.appendChild(t);let r=t.contentDocument;if(r){let i=r.createElement("div");r.body.appendChild(i);let s=getComputedStyle(i);Array.prototype.forEach.call(s,n=>e[n]=s[n])}document.body.removeChild(t),yr=e}return oi(d,yr)};var As={data:!0,same_origin:!0,remote:!1},Tt=(d,e={})=>{let t={...As,...e};try{let r=new URL(d,document.location.href);return r.protocol==="data:"?t.data?r.href:void 0:r.origin===document.location.origin?t.same_origin?r.href:void 0:t.remote?r.hash:void 0}catch(r){console.error(r)}};var ci=(d,e,t=6.5,r=!1,i=!1)=>{if(e===d)e++,d&&d--;else{let h=Math.round(e*1e5)/1e5;Math.abs(h-e)/(e-d)<1e-5&&(e=h)}let s=e-d,n=Math.log(s)/Math.log(10),a=Math.floor(Math.abs(n))*(n<0?-1:1)-1;i&&(a=Math.max(0,a));let o=i?[1,2,5,10,15,20,25,50,100]:[.1,.25,.5,1,2.5,5,10,25,50,100],l=-1,c=0;for(let h of o){let u=h*Math.pow(10,a),m=Math.floor(d/u)*u,b=(Math.ceil(e/u)*u-m)/u,p=Math.abs(b-t);(l<0||p<c)&&(!r||b<=t)&&(c=p,l=u)}return d=Math.floor(d/l)*l,e=Math.ceil(e/l)*l,t=Math.round((e-d)/l),{scale:a,step:l,count:t,min:d,max:e}};var xe=class{constructor(){this.date_format=!1;this.string_format=!1;this.fraction_format=!1;this.twelve_hour=!1;this.fraction_denominator=0;this.fraction_integer=!0;this.fraction_align=0;this.fraction_denominator_digits=0;this.integer_min_digits=0;this.decimal_min_digits=0;this.decimal_max_digits=0;this.grouping=!1;this.has_number_format=!1;this.prefix=[{text:""}];this.suffix=[{text:""}];this.scaling=0;this.percent=!1;this.exponential=!1;this.has_asterisk=!1}};var di=42,hi=95,vr=63,It=48,ui=46,wr=44,mi=37,xr=34,ct=35,fi=59,zt=92,pi=64,Ss=91,ks=93,bi=69,gi=101,Es=72,Rs=104,Ts=77,Is=109,zs=83,Ms=115,Ns=68,Ds=100,Us=89,Ls=121,Ps=65,Vs=97;var le=class{static Parse(e){if(this.pattern=e,this.characters=e.split("").map(t=>t.charCodeAt(0)),this.char_index=0,this.current_section=new xe,this.sections=[this.current_section],this.ParseDatePattern())return this.sections;for(this.char_index=0,this.current_section=new xe,this.sections=[this.current_section];this.char_index<this.characters.length;)this.ConsumeChar();return this.sections}static ConsumeString(){let e="";for(this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case zt:this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index+1<this.characters.length&&(e+=this.pattern[++this.char_index]);break;case xr:return this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated string")}static ConsumeFormatting(){let e="";for(++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case zt:throw new Error("invalid escape character in formatting block");case ks:return this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated format")}static ScanFractionFormat(){let e=/^([#?]+ +){0,1}([#?]+)\/([#?0-9]+)(?:$|[^#?0-9])/,r=this.pattern.substr(this.char_index).match(e);if(!r)return!1;let i=(r[1]||"").length+r[2].length+r[3].length+1;this.current_section.fraction_format=!0,this.current_section.fraction_integer=!!r[1];let s=Number(r[3]);return isNaN(s)||(this.current_section.fraction_denominator=s),this.current_section.decimal_max_digits=this.current_section.fraction_denominator_digits=r[3].length,this.char_index+=i,this.current_section.has_number_format=!0,!0}static ConsumeNumberFormat(){let e=0;for(this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case this.group_separator:{let r=!1;for(let i=this.char_index+1;!r&&i<this.characters.length;i++){let s=this.characters[i];if(s===this.decimal_mark||s===ct||s===It)r=!0;else if(s!==wr)break}if(r){if(e===1)throw new Error("invalid grouping in decimal part");this.current_section.grouping=!0}else this.current_section.scaling=(this.current_section.scaling||1)*1e3}break;case this.decimal_mark:if(e===1)throw new Error("too many decimal marks");e=1;break;case ct:e===1?this.current_section.decimal_max_digits++:this.current_section.integer_min_digits&&this.current_section.integer_min_digits++;break;case It:e===1?(this.current_section.decimal_max_digits++,this.current_section.decimal_min_digits=this.current_section.decimal_max_digits):this.current_section.integer_min_digits++;break;default:return}}static AppendCharAsText(e=!0){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=this.pattern[this.char_index]:this.current_section.prefix[this.current_section.prefix.length-1].text+=this.pattern[this.char_index],e&&this.char_index++}static AppendString(e){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=e:this.current_section.prefix[this.current_section.prefix.length-1].text+=e}static AppendTextPart(e){this.current_section.has_number_format?(this.current_section.suffix.push(e),this.current_section.suffix.push({text:""})):(this.current_section.prefix.push(e),this.current_section.prefix.push({text:""}))}static ConsumeChar(){let e=this.characters[this.char_index];if(!((e===vr||e===ct)&&!this.current_section.has_number_format&&!this.current_section.string_format&&this.ScanFractionFormat()))switch(e){case fi:this.char_index++,this.current_section=new xe,this.sections.length===3&&(this.current_section.string_format=!0),this.sections.push(this.current_section);break;case pi:this.char_index++,this.AppendTextPart({text:"@",flag:5}),this.current_section.string_format=!0;break;case It:case ct:case ui:case wr:!this.current_section.has_number_format&&!this.current_section.string_format?(this.ConsumeNumberFormat(),this.current_section.has_number_format=!0):this.AppendCharAsText();break;case Ss:this.AppendTextPart({text:this.ConsumeFormatting(),flag:6});break;case xr:this.AppendString(this.ConsumeString());break;case vr:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case hi:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case di:if(this.current_section.has_asterisk)throw new Error("we don't support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case gi:case bi:this.current_section.percent||this.current_section.exponential||this.current_section.string_format?this.AppendCharAsText():(this.current_section.exponential=!0,this.char_index++);break;case mi:!this.current_section.exponential&&!this.current_section.string_format&&(this.current_section.percent=!0),this.AppendCharAsText();break;case zt:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}static ParseDatePattern(){for(this.date_pattern=!0;this.date_pattern&&this.char_index<this.pattern.length;)this.DatePatternConsumeChar();if(this.date_pattern){this.date_pattern=!1;for(let e of this.sections)for(let t of e.prefix)t.flag&&t.flag&7&&(this.date_pattern=!0)}return this.date_pattern&&(this.sections[0].date_format=!0,this.sections[0].prefix.forEach((e,t)=>{if(e.flag===3&&(e.text==="mm"||e.text==="m")){if(t)for(let r=t-1;r;r--){let i=this.sections[0].prefix[r];if(i.flag===3){/h/i.test(i.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}if(t<this.sections[0].prefix.length-1)for(let r=t+1;r<this.sections[0].prefix.length;r++){let i=this.sections[0].prefix[r];if(i.flag===3){/s/i.test(i.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}}})),this.date_pattern}static ConsumeDatePart(){let e=this.pattern[this.char_index++],t=e.toLowerCase(),r={text:e,flag:3};for(;this.pattern[this.char_index]&&this.pattern[this.char_index].toLowerCase()===t;)r.text+=this.pattern[this.char_index++];if(t==="s"&&this.pattern[this.char_index]===".")for(r.text+=this.pattern[this.char_index++];this.pattern[this.char_index]==="0";)r.text+=this.pattern[this.char_index++];return r}static ConsumeAMPM(){let e=this.pattern.substr(this.char_index,5);if(e==="am/pm"||e==="AM/PM")return this.char_index+=5,this.sections[0].twelve_hour=!0,{text:e,flag:3};if(e=this.pattern.substr(this.char_index,3),e==="a/p"||e==="A/P")return this.char_index+=3,this.sections[0].twelve_hour=!0,{text:e,flag:3}}static DatePatternConsumeChar(){switch(this.characters[this.char_index]){case fi:this.char_index=this.characters.length;break;case It:case ct:case gi:case bi:case mi:case pi:this.date_pattern=!1;break;case Es:case Rs:case Ts:case Is:case zs:case Ms:case Ns:case Ds:case Us:case Ls:this.AppendTextPart(this.ConsumeDatePart());break;case Ps:case Vs:{let t=this.ConsumeAMPM();t?this.AppendTextPart(t):this.AppendCharAsText()}break;case xr:this.AppendString(this.ConsumeString());break;case vr:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case hi:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case di:if(this.current_section.has_asterisk)throw new Error("we don't support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case zt:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}};le.date_pattern=!1,le.pattern="",le.char_index=0,le.characters=[],le.sections=[],le.current_section=new xe,le.preserve_formatting_characters=!1,le.decimal_mark=ui,le.group_separator=wr;var Pe=d=>(d>=60&&d--,new Date(-22090752e5+864e5*d)),je=(d,e=!0)=>{if(e){let t=new Date(d),r=new Date;r.setUTCMilliseconds(t.getUTCMilliseconds()),r.setUTCSeconds(t.getUTCSeconds()),r.setUTCMinutes(t.getUTCMinutes()),r.setUTCHours(t.getHours()),r.setUTCDate(t.getDate()),r.setUTCMonth(t.getMonth()),r.setUTCFullYear(t.getFullYear()),d=r.getTime()}return d=(d+22090752e5)/864e5,d>=60&&d++,d},Ce=class{constructor(e){this.magic_decimal=!1;this._pattern="";this.decimal_zero_regexp=[];this.cloned=[];if(this._pattern=e,this.sections=le.Parse(e),this.sections.length||(this.sections=[]),this.sections[0]||(this.sections[0]=new xe),this.sections[1]||(this.sections[1]={...this.sections[0]},this.sections[1].prefix=JSON.parse(JSON.stringify(this.sections[1].prefix)),this.sections[1].suffix=JSON.parse(JSON.stringify(this.sections[1].suffix)),this.sections[1].prefix.push({text:"-"}),this.cloned[1]=!0),this.sections[2]||(this.sections[2]={...this.sections[0]},this.cloned[2]=!0),!this.sections[3]){for(let t of this.sections[0].prefix)if(t.flag===5){this.sections[3]={...this.sections[0]},this.sections[3].string_format=!0,this.cloned[3]=!0;break}}this.decimal_zero_regexp=this.sections.map(t=>{if(t.decimal_max_digits>t.decimal_min_digits)return new RegExp(`0{1,${t.decimal_max_digits-t.decimal_min_digits}}(?:$|e)`)})}get pattern(){return this._pattern}get date_format(){return this.sections[0]&&this.sections[0].date_format}static FormatPartsAsText(e,t=0){let r=-1,i=e.map((s,n)=>{switch(s.flag){case 2:return r=n,s.text;case 1:return s.text.replace(/./g," ");case 6:return"";default:return s.text}});if(r>=0&&t){let s=i.reduce((a,o,l)=>l===r?a:a+o.length,0),n="";for(let a=0;a<t-s;a++)n+=i[r];i[r]=n}return i.join("")}SetDecimal(e){for(let t of this.sections)t.fraction_format||(t.decimal_min_digits=e,t.decimal_max_digits=e)}IncreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.min(e.fraction_denominator_digits+1,4)):(e.decimal_min_digits++,e.decimal_max_digits=e.decimal_min_digits)})}DecreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.max(e.fraction_denominator_digits-1,1)):(e.decimal_min_digits=Math.max(0,e.decimal_min_digits-1),e.decimal_max_digits=e.decimal_min_digits)})}AddGrouping(){this.sections.forEach(e=>{e.grouping=!0})}RemoveGrouping(){this.sections.forEach(e=>{e.grouping=!1})}ToggleGrouping(){let e=!this.sections[0].grouping;this.sections.forEach(t=>{t.grouping=e})}toString(){return this.sections[0].date_format?this._pattern:this.sections.filter((e,t)=>!this.cloned[t]).map(e=>{let t="",r=0;if(e.fraction_format){e.fraction_integer&&(t+="? ");let i="";for(let s=0;s<e.fraction_denominator_digits;s++)i+="#";t+=i,t+="/",e.fraction_denominator?t+=e.fraction_denominator:t+=i}else if(e.has_number_format){for(r=0;r<e.integer_min_digits;r++)t+="0";if(e.grouping&&(t.length<4&&(t=("####"+t).slice(-4)),t=t.replace(/[\d#]{1,3}(?=([\d#]{3})+(?![\d#]))/g,"$&,")),e.decimal_max_digits||e.decimal_min_digits){for(t+=".",r=0;r<e.decimal_min_digits;r++)t+="0";for(;r<e.decimal_max_digits;r++)t+="#"}if(e.scaling){let i=Math.log10(e.scaling)/3;for(r=0;r<i;r++)t+=","}e.exponential&&(t+="e")}return e.prefix.map(i=>i.flag===1?i.text==="0"?"?":"_"+i.text:i.flag===2?"*"+i.text:i.flag===6?"["+i.text+"]":i.text).join("")+t+e.suffix.map(i=>i.flag===1?i.text==="0"?"?":"_"+i.text:i.flag===2?"*"+i.text:i.text).join("")}).join(";")}FormatDimensionedQuantity(e){if(this.transform_value){let r=this.transform_value(e);if(sr(r))e=r;else return typeof r=="string"?r:this.FormatParts(r)}let t=this.FormatParts(e.value||0);return e.unit&&t.push({text:" "},{text:e.unit}),t}FormatComplex(e){let t=[],r=[],i=!1,s=!!e.imaginary;s&&(t=this.FormatParts(e.imaginary),s=t.some(o=>/[1-9]/.test(o.text)),t.length===1&&this.sections[0].integer_min_digits<=1&&t[0].text==="1"?(t[0].text="",i=!0):t.length===1&&this.sections[1].integer_min_digits<=1&&t[0].text==="-1"&&(t[0].text="-",i=!0));let n=!!e.real;n&&(r=this.FormatParts(e.real),n=r.some(o=>/[1-9]/.test(o.text)));let a=[];if(n||!n&&!s){if(a.push(...r),s){let o=Math.abs(e.imaginary);a.push({text:e.imaginary<0?` ${Ce.minus_character} `:" + "});let l=i?[]:this.FormatParts(Math.abs(e.imaginary));a.push(...l,{text:Ce.imaginary_character})}}else s&&a.push(...t,{text:Ce.imaginary_character});return a}FormatParts(e){if(typeof e!="number"&&!this.sections[3])return[{text:e.toString()}];let{parts:t,section:r}=this.BaseFormat(e),i=[];if(r.date_format||r.string_format)for(let s of t)typeof s=="string"?i.push({text:s}):i.push(s);else this.magic_decimal&&t[1]===""&&t.splice(1,1),i=[...r.prefix.map(s=>({...s})),{text:r.has_number_format?t.join(R.decimal_separator):""},...r.suffix.map(s=>({...s}))];for(let s=1;s<i.length;s++)i[s].flag===i[s-1].flag&&(i[s].text=i[s-1].text+i[s].text,i[s-1].text="");return i.filter(s=>s.text)}Format(e,t=0){return Ce.FormatPartsAsText(this.FormatParts(e),t)}ZeroPad(e,t){for(;e.length<t;)e="0"+e;return e}DateFormat(e){let t=Pe(e),r=this.sections[0],i=t.getUTCHours();return r.twelve_hour&&(i>12&&(i-=12),i===0&&(i=12)),{parts:r.prefix.map(n=>{if(n.flag===4)return n.text==="mm"?{text:this.ZeroPad(t.getUTCMinutes().toString(),2)}:{text:this.ZeroPad(t.getUTCMinutes().toString(),1)};if(n.flag===3){switch(n.text.toLowerCase()){case"am/pm":case"a/p":{let o=n.text.split("/");return{text:t.getUTCHours()>12?o[1]:o[0]}}case"mmmmm":return{text:R.date_components.long_months[t.getUTCMonth()][0]};case"mmmm":return n.text==="MMMM"?{text:R.date_components.long_months[t.getUTCMonth()].toUpperCase()}:{text:R.date_components.long_months[t.getUTCMonth()]};case"mmm":return n.text==="MMM"?{text:R.date_components.short_months[t.getUTCMonth()].toUpperCase()}:{text:R.date_components.short_months[t.getUTCMonth()]};case"mm":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),2)};case"m":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),1)};case"ddddd":case"dddd":return n.text==="DDDDD"||n.text==="DDDD"?{text:R.date_components.long_days[t.getUTCDay()].toUpperCase()}:{text:R.date_components.long_days[t.getUTCDay()]};case"ddd":return n.text==="DDD"?{text:R.date_components.short_days[t.getUTCDay()].toUpperCase()}:{text:R.date_components.short_days[t.getUTCDay()]};case"dd":return{text:this.ZeroPad(t.getUTCDate().toString(),2)};case"d":return{text:this.ZeroPad(t.getUTCDate().toString(),1)};case"yyyy":case"yyy":return{text:t.getUTCFullYear().toString()};case"yy":case"y":return{text:this.ZeroPad((t.getUTCFullYear()%100).toString(),2)};case"hh":return{text:this.ZeroPad(i.toString(),2)};case"h":return{text:this.ZeroPad(i.toString(),1)};case"ss":return{text:this.ZeroPad(t.getUTCSeconds().toString(),2)};case"s":return{text:this.ZeroPad(t.getUTCSeconds().toString(),1)}}let a=n.text.match(/^(s+)\.(0+)$/);if(a)return{text:this.ZeroPad(t.getUTCSeconds().toString(),a[1].length)+R.decimal_separator+(t.getUTCMilliseconds()/1e3).toFixed(a[2].length).substr(2)}}return{...n}}),section:r}}StringFormat(e,t){let r=[];for(let i of t.prefix)i.flag===5?r.push({text:e}):r.push({...i});return{parts:r,section:t}}Round2(e,t){let r=Math.pow(10,t);return Math.round(r*e)/r}FormatFraction(e,t){t.percent&&(e*=100);let r={denominator:1,numerator:Math.round(e),error:Math.abs(Math.round(e)-e)};if(t.fraction_denominator)r.denominator=t.fraction_denominator,r.numerator=Math.round(e*r.denominator);else if(r.error){let s=Ce.fraction_limits[t.fraction_denominator_digits-1]||Ce.fraction_limits[0];for(let n=2;n<=s;n++){let a=Math.round(e*n),o=Math.abs(a/n-e);if(o<r.error&&(r={numerator:a,denominator:n,error:o},!o))break}}let i=[];if(t.fraction_integer){let s=Math.floor(r.numerator/r.denominator);r.numerator%=r.denominator,(s||!r.numerator)&&(i.push(s.toString()),r.numerator&&i.push(" "))}else r.numerator||i.push("0");return r.numerator&&(i.push(r.numerator.toString()),i.push("/"),i.push(r.denominator.toString())),i.join("")}BaseFormat(e){if(this.sections[0].date_format)return this.DateFormat(Number(e));if(typeof e!="number")return this.StringFormat(e.toString(),this.sections[3]);let t=this.sections[0],r=this.decimal_zero_regexp[0];e<0&&(t=this.sections[1]);let i=t.percent?t.decimal_max_digits+2:t.decimal_max_digits,s=Math.pow(10,-i)/2,n=Math.abs(e);if(n<s&&(t=this.sections[2],r=this.decimal_zero_regexp[2]),t.scaling&&(n/=t.scaling,n<s&&(t=this.sections[2],r=this.decimal_zero_regexp[2])),t.string_format)return this.StringFormat(e.toString(),t);let a="";if(t.fraction_format)return{parts:[this.FormatFraction(n,t)],section:t};t.exponential?a=n.toExponential(t.decimal_max_digits):(t.percent&&(n*=100),a=this.Round2(n,t.decimal_max_digits).toFixed(t.decimal_max_digits)),r&&(a=a.replace(r,""));let o=a.split(".");for(;o[0].length<t.integer_min_digits;)o[0]=("0000000000000000"+o[0]).slice(-t.integer_min_digits);return t.integer_min_digits===0&&o[0]==="0"&&(o[0]=""),t.grouping&&(o[0]=o[0].replace(Ce.grouping_regexp,"$&"+R.grouping_separator)),{parts:o,section:t}}},Y=Ce;Y.grouping_regexp=/\d{1,3}(?=(\d{3})+(?!\d))/g,Y.fraction_limits=[9,99,999,9999],Y.imaginary_character="\u{1D456}",Y.minus_character="-";var M=class{static Get(e,t=!1){if(t&&e==="General")return this.complex_general;let r=this.symbolc_name_map[e.toLowerCase()],i=this.cache[r||e];return i||(i=new Y(e),this.cache[e]=i),i}static Equals(e,t){if(e===t)return!0;let r=this.Get(e),i=this.Get(t);return r.pattern===i.pattern}static Translate(e){let t=this.symbolc_name_map[e.toLowerCase()];return t?this.cache[t].toString():e}static SymbolicName(e){for(let t of Object.keys(this.base_formats))if(e===this.base_formats[t])return t;return null}static InitCache(){for(let e of Object.keys(this.base_formats))this.cache[e]=new Y(this.base_formats[e]),this.symbolc_name_map[e.toLowerCase()]=e;this.cache.General.magic_decimal=!0,this.complex_general=new Y("0.###"),this.complex_general.magic_decimal=!0;for(let e of Object.keys(this.aliases))this.cache[e]=this.cache[this.aliases[e]],this.symbolc_name_map[e.toLowerCase()]=e}};M.cache={},M.symbolc_name_map={},M.base_formats={Accounting:"_(#,##0.00_);(#,##0.00);-???",Number:"0.00",Integer:"0",Percent:"0.00%",General:"0.######",Fraction:"# ?/?",Dollar:"$* _(#,##0.00_);$* (#,##0.00);$* -???",Exponential:"0.000e","Short Date":"mm/dd/yy","Long Date":"dddd, mmm d yyyy",Timestamp:"mm-dd-yy hh:mm:ss"},M.aliases={Scientific:"Exponential",Percentage:"Percent",Currency:"Dollar"};M.InitCache();var _i=new Date().getUTCFullYear(),Ar=class{TestDate(e){let t=Date.parse(e);if(isNaN(t))return!1;let r=new Date(t),s=e.replace(/[\d\-\\/,.\s]+/g," ").toLocaleLowerCase().split(/\s+/).map(o=>o.trim()).filter(o=>!!o);if(!s.length)return t;if(!this.compare_month){this.compare_month={};for(let o=0;o<12;o++)this.compare_month[R.date_components.long_months[o].toLocaleLowerCase().replace(/\./,"")]=o,this.compare_month[R.date_components.short_months[o].toLocaleLowerCase().replace(/\./,"")]=o}if(!this.compare_day){this.compare_day={};for(let o=0;o<7;o++)this.compare_day[R.date_components.long_days[o].toLocaleLowerCase().replace(/\./,"")]=o,this.compare_day[R.date_components.short_days[o].toLocaleLowerCase().replace(/\./,"")]=o}let n=!1,a=!1;for(let o of s){let l=!1;for(let[c,h]of Object.entries(this.compare_month))if(o===c){if(n||r.getUTCMonth()!==h)return!1;l=!0,n=!0}if(!l){for(let[c,h]of Object.entries(this.compare_day))if(o===c){if(a||r.getUTCDay()!==h)return!1;l=!0,a=!0}}if(!l)return!1}return a&&!n?!1:t}TryParse(e=""){let t=0;if(e[0]==="'")return{value:e,type:2};if(e==="")return{value:e,type:2};if(e==="NaN")return{value:NaN,type:3,hints:1};let r=e.trim(),i=r.match(/^[$](.*?)$/);i&&(r=i[1],t|=8);let s=r.match(/^\((.*?)\)$/);s&&(r=s[1],t|=32);let n=r.match(/^(.*?)%\s*$/);n&&(r=n[1],t|=4),R.decimal_separator==="."?/,/.test(r)&&(r=r.replace(/,/g,""),t|=16):(r=r.replace(/(\d)\s+/g,"$1"),r=r.replace(/\./g,""),r=r.replace(/,/,"."));let a=Number(r);if(a===null||isNaN(a)){let o=e.toLowerCase();if(o==="false")return{value:!1,type:4};if(o==="true")return{value:!0,type:4};let l=this.TestDate(e);if(l!==!1&&!isNaN(l)){let c=new Date(l),h=c.getUTCFullYear();if(h>=_i-200&&h<=_i+200)return t=64,(c.getHours()||c.getMinutes()||c.getSeconds())&&(t|=128),{value:je(l),type:3,hints:t}}return{value:e,type:2}}if(s&&(a=-a),n){let o=a<0?-1:1,l=(o*a).toString().split(".");l[0]=("00"+l[0]).replace(/(\d\d)$/,".$1"),a=Number(l.join(""))*o}return/e/.test(e)&&(t|=2),{value:a,type:3,hints:t}}},be=new Ar;var dt="http://www.w3.org/2000/svg",Mt=class{constructor(e,t,r={x:0,y:0}){this.theme=t;this.offset=r;this.g=document.createElementNS(dt,"g"),this.g.setAttribute("transform",`translate(${r.x}, ${r.y})`),this.outline=document.createElementNS(dt,"rect"),this.outline.setAttribute("class","outline"),e?(this.g.setAttribute("class","selection primary-selection"),this.fill=document.createElementNS(dt,"path"),this.fill.setAttribute("class","fill"),this.nub=document.createElementNS(dt,"rect"),this.nub.setAttribute("class","nub"),this.g.appendChild(this.fill),this.g.appendChild(this.outline),this.g.appendChild(this.nub)):(this.g.setAttribute("class","selection alternate-selection"),this.fill=document.createElementNS(dt,"rect"),this.fill.setAttribute("class","fill"),this.g.appendChild(this.fill),this.g.appendChild(this.outline))}Offset(e){this.g.setAttribute("transform",`translate(${e.x}, ${e.y})`)}Show(e=!0){this.g.style.display=e?"block":"none"}SetOutline(e,t=!1){this.outline.setAttribute("x",(e.left-1).toString()),this.outline.setAttribute("y",(e.top-1).toString()),this.outline.setAttribute("width",(e.width+1).toString()),this.outline.setAttribute("height",(e.height+1).toString()),t&&this.fill&&(this.fill.setAttribute("x",e.left.toString()),this.fill.setAttribute("y",e.top.toString()),this.fill.setAttribute("width",e.width.toString()),this.fill.setAttribute("height",e.height.toString()))}SetFill(e,t){if(!this.fill)return;let r=[];r.push("M"+e.left+" "+e.top),r.push("L"+e.left+" "+e.bottom),r.push("L"+e.right+" "+e.bottom),r.push("L"+e.right+" "+e.top),r.push("Z"),r.push("M"+t.left+" "+t.top),r.push("L"+t.right+" "+t.top),r.push("L"+t.right+" "+t.bottom),r.push("L"+t.left+" "+t.bottom),r.push("Z"),this.fill.setAttribute("d",r.join(" "))}SetNub(e){this.nub&&(this.nub.setAttribute("x",(e.left+e.width-4).toString()),this.nub.setAttribute("y",(e.top+e.height-4).toString()),this.nub.setAttribute("width","7"),this.nub.setAttribute("height","7"))}};var Sr="http://www.w3.org/2000/svg";var Ve=class{constructor(e,t,r){this.theme=e;this.container=t;this.orientation=r;this.g=document.createElementNS(Sr,"g"),this.g.setAttribute("class","treb-header-overlay"),this.overlay=document.createElementNS(Sr,"rect"),this.overlay.setAttribute("class","treb-overlay"),this.highlight=document.createElementNS(Sr,"rect"),this.highlight.setAttribute("class","treb-highlight"),this.g.style.display="none",this.g.appendChild(this.highlight),this.g.appendChild(this.overlay),t.appendChild(this.g)}Remove(){this.container.removeChild(this.g)}Hide(){this.g.style.display="none"}Show(e,t,r,i){this.overlay.setAttribute("x",e.toString()),this.overlay.setAttribute("y",t.toString()),this.overlay.setAttribute("width",r.toString()),this.overlay.setAttribute("height",i.toString()),this.orientation===0?(this.highlight.setAttribute("x",e.toString()),this.highlight.setAttribute("y",(t+i-2).toString()),this.highlight.setAttribute("width",r.toString()),this.highlight.setAttribute("height","2")):(this.highlight.setAttribute("x",(e+r-2).toString()),this.highlight.setAttribute("y",t.toString()),this.highlight.setAttribute("width","2"),this.highlight.setAttribute("height",i.toString())),this.g.style.display="block"}};var Nt=class{constructor(e,t,r,i,s,n){this.theme=e;this.layout=t;this.model=r;this.view=i;this.primary_selection=s;this.additional_selections=n;this.nub_rectangle=new U(-1,-1,0,0);this.cached_additional_selections="";this.grid_selections=[];this.row_header_selections=[];this.column_header_selections=[];this.corner_selections=[]}Initialize(){this.row_overlay=new Ve(this.theme,this.layout.row_header_selection,0),this.column_overlay=new Ve(this.theme,this.layout.column_header_selection,1),this.corner_row_overlay=new Ve(this.theme,this.layout.corner_selection,0),this.corner_column_overlay=new Ve(this.theme,this.layout.corner_selection,1)}RenderSelections(e=!0,t=!0){let r=this.primary_selection.empty;e||(this.primary_selection.empty=!0);let i=[this.primary_selection].concat(this.additional_selections);this.RenderSelectionGroup(i,this.layout.grid_selection,void 0,void 0,this.grid_selections,void 0,t);let s=new U(-1,-1,0,0);if(!this.primary_selection.empty){let o=this.view.active_sheet.RealArea(this.primary_selection.area);s=this.layout.CellAddressToRectangle(o.start).Combine(this.layout.CellAddressToRectangle(o.end))}if(!this.primary_selection.empty&&this.layout.header_offset.y>2?(this.row_overlay.Show(s.left,0,s.width,this.layout.header_offset.y),this.corner_row_overlay.Show(s.left+this.layout.header_offset.x,0,s.width,this.layout.header_offset.y)):(this.row_overlay.Hide(),this.corner_row_overlay.Hide()),!this.primary_selection.empty&&this.layout.header_offset.x>2?(this.column_overlay.Show(0,s.top,this.layout.header_offset.x,s.height),this.corner_column_overlay.Show(0,s.top+this.layout.header_offset.y,this.layout.header_offset.x,s.height)):(this.column_overlay.Hide(),this.corner_column_overlay.Hide()),!this.view.active_sheet.freeze.columns&&!this.view.active_sheet.freeze.rows){this.primary_selection.empty=r;return}let n=[],a=[];if(this.primary_selection.empty)n.push(!1),a.push(!1);else{let o=this.primary_selection.area.start;n.push(o.row<=this.view.active_sheet.freeze.rows||o.row===1/0),a.push(o.column<=this.view.active_sheet.freeze.columns||o.column===1/0)}for(let{area:o}of this.additional_selections)n.push(o.start.row<=this.view.active_sheet.freeze.rows||o.start.row===1/0),a.push(o.start.column<=this.view.active_sheet.freeze.columns||o.start.column===1/0);this.view.active_sheet.freeze.rows&&this.RenderSelectionGroup(i,this.layout.row_header_selection,n,void 0,this.row_header_selections,{x:0,y:this.layout.header_offset.y}),this.view.active_sheet.freeze.columns&&this.RenderSelectionGroup(i,this.layout.column_header_selection,a,void 0,this.column_header_selections,{x:this.layout.header_offset.x,y:0}),this.view.active_sheet.freeze.rows&&this.view.active_sheet.freeze.columns&&this.RenderSelectionGroup(i,this.layout.corner_selection,a,n,this.corner_selections,{...this.layout.header_offset}),this.primary_selection.empty=r}RenderSelectionGroup(e,t,r,i,s,n,a=!0){for(let o=0;o<e.length;o++)if((!e[o].area.start.sheet_id||e[o].area.start.sheet_id===this.view.active_sheet.id)&&!e[o].empty&&(!r||r[o])&&(!i||i[o])){if(a||!e[o].rendered){let c=this.EnsureGridSelectionBlock(t,s,o,n);this.RenderSVGSelection(e[o],c,o)}}else s[o]&&s[o].Show(!1);for(let o=e.length;o<s.length;o++)s[o]&&s[o].Show(!1)}EnsureGridSelectionBlock(e,t,r,i){let s=t[r];if(!s)if(s=new Mt(!r,this.theme),t[r]=s,r){let n=e.querySelector(".alternate-selections");n||(n=document.createElementNS("http://www.w3.org/2000/svg","g"),n.setAttribute("class","alternate-selections"),e.appendChild(n)),n?.appendChild(s.g)}else e.appendChild(s.g);return i&&s.Offset(i),s}ClampEnd(e){return{row:Math.min(e.row,this.view.active_sheet.rows-1),column:Math.min(e.column,this.view.active_sheet.columns-1)}}RenderSVGSelection(e,t,r=0){let i=this.view.active_sheet.RealArea(e.area,!0),s=this.layout.CellAddressToRectangle(i.start);if(i.count>1)s=s.Combine(this.layout.CellAddressToRectangle(i.end));else if(r){let n=this.view.active_sheet.CellData(e.target);n.merge_area&&(s=this.layout.CellAddressToRectangle(n.merge_area.start),s=s.Combine(this.layout.CellAddressToRectangle(n.merge_area.end)))}if(r||(this.nub_rectangle=new U(s.left+s.width-6,s.top+s.height-6,11,11)),s.top===0&&this.layout.header_offset.y<=1&&(s.top=1,s.height-=1),s.left===0&&this.layout.header_offset.x<=1&&(s.left=1,s.width-=1),s.height<=0||s.height<=0){t.Show(!1);return}if(t.SetOutline(s,!!r),r)e.rendered=!0;else{let n=this.layout.CellAddressToRectangle(e.target),a=this.view.active_sheet.CellData(e.target);a.merge_area&&(n=this.layout.CellAddressToRectangle(a.merge_area.start),n=n.Combine(this.layout.CellAddressToRectangle(a.merge_area.end))),t.SetFill(n,s),t.SetNub(s)}t.Show()}};function ge(d,e=[],t,r){typeof e=="string"&&(e=[e]);let i,s=a=>{a.stopPropagation(),a.preventDefault(),i(),r&&r(a)},n=a=>{if(a.stopPropagation(),a.preventDefault(),!a.buttons){i(),r&&r(a);return}t&&t(a)};i=()=>{d.style.display="none",d.removeEventListener("mousemove",n),d.removeEventListener("mouseup",s);for(let a of e)d.classList.remove(a)};for(let a of e)d.classList.add(a);d.style.display="block",t&&d.addEventListener("mousemove",n),r&&d.addEventListener("mouseup",s)}var D=class{static CreateDiv(e="",t,r){return this.Create("div",e,t,r)}static Create(e="",t="",r,i,s){let n=document.createElement(e);if(t&&n.setAttribute("class",t),i&&n.setAttribute(i,""),s){let a=Object.keys(s);for(let o of a)n.setAttribute(o,s[o])}return r&&r.appendChild(n),n}};var Dt=class extends oe{constructor(t){super();this.container=t;this.scale=0;this.timeout=0;this.format=M.Get("0.0"),this.input=D.Create("input","treb-scale-input",t);let r=D.CreateDiv("treb-slider-container",t);this.input.addEventListener("keypress",i=>{switch(i.key){case"ArrowUp":case"ArrowDown":i.stopPropagation(),i.preventDefault(),console.info("mark?");break}}),this.input.addEventListener("keydown",i=>{switch(i.key){case"Enter":this.input.blur();break;case"ArrowUp":this.Tick(-1);break;case"ArrowDown":this.Tick(1);break;case"Escape":this.input.value=this.format.Format(this.scale)+"%",this.input.blur();break;default:return}i.stopPropagation(),i.preventDefault()}),this.input.addEventListener("focusin",()=>this.input.select()),this.input.addEventListener("change",()=>{let i=this.input.value;i=i.replace(/%/g,"");let s=be.TryParse(i);s.type===3?this.UpdateScale(Number(s.value),!0):this.input.value=this.format.Format(this.scale)+"%"}),this.slider=D.Create("input",void 0,r,void 0,{type:"range",min:"50",max:"200",value:"100",step:"2.5"}),this.slider.addEventListener("input",()=>{this.UpdateScale(Number(this.slider.value),!0)}),t.addEventListener("wheel",i=>{i.stopPropagation(),i.preventDefault(),this.Tick(i.deltaY)})}Tick(t){let r=Math.round(this.scale/2.5)*2.5;t>0?this.UpdateScale(r-2.5,!0,!0):t<0&&this.UpdateScale(r+2.5,!0,!0)}UpdateScale(t,r=!1,i=!1){t=Math.max(50,Math.min(200,t)),t!==this.scale&&(this.scale=t,this.input.value=this.format.Format(t)+"%",this.slider.value=t.toFixed(1),r&&(this.timeout||(this.timeout=requestAnimationFrame(()=>{this.timeout=0,this.Publish({type:"scale",value:this.scale/100,keep_focus:i})}))))}};var Ut=class extends oe{constructor(t,r,i,s,n){super();this.layout=t;this.model=r;this.view=i;this.options=s;this.dragging=!1;this.double_click_data={};this._visible=!1;if(this.container=n.querySelector(".treb-spreadsheet-footer"),!this.container)throw new Error("missing container for tab bar");if(s.tab_bar!=="auto"&&this.container.removeAttribute("hidden"),this.tab_container=this.container.querySelector(".treb-spreadsheet-tabs"),this.container.addEventListener("click",a=>{let o=a.target?.dataset.command;if(o)switch(a.stopPropagation(),a.preventDefault(),o){case"add-tab":this.Publish({type:"add-sheet"});break;case"delete-tab":this.Publish({type:"delete-sheet"});break;default:console.info("unhandled command",o)}}),this.options.stats&&(this.stats_panel=this.container.querySelector(".treb-stats-panel")),this.options.scale_control){let a=this.container.querySelector(".treb-scale-control");this.scale_control=new Dt(a),this.scale_control.Subscribe(o=>{this.Publish(o)}),this.UpdateScale(this.options.initial_scale||1)}}get visible(){return this._visible}set stats_data(t){if(this.stats_panel){this.stats_panel.innerText="";for(let r of t){let i=document.createElement("span");i.classList.add("treb-stats-label"),i.textContent=r.label,this.stats_panel.appendChild(i);let s=document.createElement("span");s.classList.add("treb-stats-value"),s.textContent=r.value,this.stats_panel.appendChild(s)}}}IsDoubleClick(t,r=300){return this.double_click_data.index===t?(clearTimeout(this.double_click_data.timeout),this.double_click_data.index=void 0,this.double_click_data.timeout=void 0,!0):(this.double_click_data.timeout&&clearTimeout(this.double_click_data.timeout),this.double_click_data.index=t,this.double_click_data.timeout=window.setTimeout(()=>{this.double_click_data.index=void 0,this.double_click_data.timeout=void 0},r),!1)}Hide(){this.Show(!1)}Show(t=!0){this.container&&(this._visible=t,t?this.container.removeAttribute("hidden"):this.container.setAttribute("hidden",""))}SetActive(t,r){r?t.setAttribute("selected",""):t.removeAttribute("selected")}UpdateScale(t){this.scale_control?.UpdateScale(t*100)}DoubleClickTab(t,r,i){r.contentEditable="true";let s=window.getSelection();if(s){s.removeAllRanges();let n=document.createRange();n.selectNodeContents(r),s.addRange(n)}r.addEventListener("keydown",n=>{switch(n.key){case"Enter":this.Publish({type:"rename-sheet",name:r.innerText.trim(),sheet:i});break;case"Escape":r.innerText=i.name,this.Publish({type:"cancel"}),this.Update();break;default:return}n.stopPropagation(),n.preventDefault()}),r.addEventListener("focusout",()=>{let n=r.innerText.trim();n!==i.name?this.Publish({type:"rename-sheet",name:n,sheet:i}):this.Update()}),r.focus()}MouseDownTab(t,r,i,s,n){if(t.stopPropagation(),t.preventDefault(),this.IsDoubleClick(s))return;this.Publish({type:"activate-sheet",sheet:i});let a=n.map(b=>b.getBoundingClientRect()),o=s*2-1,l=a[0].left,c=a[a.length-1].right,h=a[0].top,u=a[0].bottom,m=-1,f=(a.length-1)*2+1;for(let b of n)this.SetActive(b,b===r);this.dragging=!0,ge(this.layout.mask,[],b=>{let[p,g]=[b.clientX,b.clientY];if(g>h&&g<u){let _=o;if(p<l)_=m;else if(p>c)_=f;else for(let y=0;y<a.length;y++){let x=a[y];if(p>=x.left&&p<=x.right){y!==s&&(p>=x.left+x.width/2?_=y*2+1:_=y*2-1);break}}_!==o&&(o=_,r.style.order=o.toString(),a=n.map(y=>y.getBoundingClientRect()))}},()=>{let b=s,p=(o+1)/2;this.dragging=!1;for(let g=0;g<this.model.sheets.length;g++)this.model.sheets.list[g].visible||(b>=g&&b++,p>=g&&p++);b===p||b===0&&p<=0||b===n.length-1&&p>=n.length-1||this.Publish({type:"reorder-sheet",index:b,move_before:p})})}Update(){if(this.dragging)return;if(this.options.tab_bar==="auto"){if(this.model.sheets.list.reduce((i,s)=>s.visible?i+1:i,0)<=1){this.Show(!1);return}this.Show(!0)}if(!this.tab_container)return;this.tab_container.innerText="";let t=[];for(let r of this.model.sheets.list){if(!r.visible)continue;let i=t.length,s=document.createElement("li");s.setAttribute("tabindex","0"),s.style.order=(i*2).toString(),s.role="tab",this.SetActive(s,r===this.view.active_sheet);let n=o=>this.MouseDownTab(o,s,r,i,t),a=o=>{s.removeEventListener("mousedown",n),s.removeEventListener("dblclick",a),this.DoubleClickTab(o,s,r)};s.textContent=r.name,s.addEventListener("dblclick",a),s.addEventListener("mousedown",n),this.tab_container.appendChild(s),t.push(s)}}};var yi=()=>({target:{row:0,column:0},area:new v({row:0,column:0}),empty:!0});var Fs=100,vi={move_with_cells:!0,resize_with_cells:!0,movable:!0,resizable:!0,removable:!0,selectable:!0},Ne=class{constructor(e={}){this.data={...vi};this.temp={};this.view=[];this.key_=Fs++;this.data={...vi,...JSON.parse(JSON.stringify(e))},e.rect&&(this.rect=U.Create(e.rect))}get key(){return this.key_}toJSON(){return{...this.data,rect:this.rect}}};var Gs=100,wi=60,De=class{constructor(e){this.annotations=[];this.freeze={rows:0,columns:0};this.visible=!0;this.default_column_width=100;this.default_row_height=25;this.cells=new wt;this.selection=yi();this.scroll_offset={x:0,y:0};this.name=De.default_sheet_name;this._image=void 0;this.row_height_=[];this.column_width_=[];this.row_headers=[];this.column_headers=[];this.row_header_width=100;this.column_header_height=25;this.style_map=[];this.style_json_map=[];this.sheet_style={};this.row_styles={};this.column_styles={};this.row_pattern=[];this.cell_style=[];this.default_style_properties=e,this.default_column_width=Gs,this.row_header_width=wi,this.UpdateDefaultRowHeight(),this.id_=De.base_id++}get image(){return this._image}get header_offset(){return{x:this.row_header_width,y:this.column_header_height}}get rows(){return this.cells.rows}get columns(){return this.cells.columns}get id(){return this.id_}set id(e){this.id_=e,this.id>=De.base_id&&(De.base_id=this.id+1)}static Reset(){this.base_id=100}static Blank(e,t,r=30,i=20){let s=new De(e);return t&&(s.name=t),r=Math.max(r,1),i=Math.max(i,1),s.cells.EnsureCell({row:r-1,column:i-1}),s}static UpdateStyle(e){if(typeof e.horizontal_align=="number"){let t=[k.HorizontalAlign.None,k.HorizontalAlign.Left,k.HorizontalAlign.Center,k.HorizontalAlign.Right];e.horizontal_align=t[e.horizontal_align]||void 0}if(typeof e.vertical_align=="number"){let t=[k.VerticalAlign.None,k.VerticalAlign.Top,k.VerticalAlign.Bottom,k.VerticalAlign.Middle];e.vertical_align=t[e.vertical_align]||void 0}}static FromJSON(e,t,r){let i=typeof e=="string"?JSON.parse(e):e,s=(l,c)=>{Object.keys(c).forEach(h=>{let u=Number(h)||0;l[u]=c[h]})};r||(r=new De(t)),i.default_column_width&&(r.default_column_width=i.default_column_width),i.default_row_height&&(r.default_row_height=i.default_row_height),i.id&&(r.id=i.id),i.name&&(r.name=i.name),i.background_image&&(r.background_image=i.background_image);let n=l=>{let c=l;this.UpdateStyle(c),(c.font_size_value||c.font_size_unit)&&(c.font_size={unit:c.font_size_unit||"pt",value:c.font_size_value||10},c.font_size_unit=void 0,c.font_size_value=void 0),c.font_bold&&(c.bold=!0,c.font_bold=void 0),c.font_italic&&(c.italic=!0,c.font_italic=void 0),c.font_underline&&(c.underline=!0,c.font_underline=void 0),c.font_strike&&(c.strike=!0,c.font_strike=void 0),c.text_color&&(c.text_color!=="none"&&(c.text={text:c.text_color}),c.text_color=void 0),c.background&&(c.background!=="none"&&(c.fill={text:c.background}),c.background=void 0),c.border_top_color&&(c.border_top_color!=="none"&&(c.border_top_fill={text:c.border_top_color}),c.border_top_color=void 0),c.border_left_color&&(c.border_left_color!=="none"&&(c.border_left_fill={text:c.border_left_color}),c.border_left_color=void 0),c.border_bottom_color&&(c.border_bottom_color!=="none"&&(c.border_bottom_fill={text:c.border_bottom_color}),c.border_bottom_color=void 0),c.border_right_color&&(c.border_right_color!=="none"&&(c.border_right_fill={text:c.border_right_color}),c.border_right_color=void 0)},a=i.styles||i.cell_style_refs||[];for(let l of a)n(l);if(r.cell_style=[],a&&(i.cell_styles||[]).forEach(l=>{typeof l.ref=="number"&&(l.style=JSON.parse(JSON.stringify(a[l.ref])))}),r.cells.FromJSON(i.data),i.rows&&r.cells.EnsureRow(i.rows-1),i.columns&&r.cells.EnsureColumn(i.columns-1),i.data)if(rt(i.data))for(let l of i.data)l.style_ref&&(r.cell_style[l.column]||(r.cell_style[l.column]=[]),r.cell_style[l.column][l.row]=JSON.parse(JSON.stringify(a[l.style_ref])));else if(ar(i.data))for(let l of i.data){let c=l.row;for(let h of l.cells){let u=h.column;h.style_ref&&(r.cell_style[u]||(r.cell_style[u]=[]),r.cell_style[u][c]=JSON.parse(JSON.stringify(a[h.style_ref])))}}else for(let l of i.data){let c=l.column;for(let h of l.cells){let u=h.row;h.style_ref&&(r.cell_style[c]||(r.cell_style[c]=[]),r.cell_style[c][u]=JSON.parse(JSON.stringify(a[h.style_ref])))}}r.freeze.rows=0,r.freeze.columns=0,i.freeze&&(r.freeze.rows=i.freeze.rows||0,r.freeze.columns=i.freeze.columns||0),r.scroll_offset=i.scroll?{...i.scroll}:{x:0,y:0};for(let l of i.cell_styles||[])if(l.style&&(r.cell_style[l.column]||(r.cell_style[l.column]=[]),r.cell_style[l.column][l.row]=l.style,l.rows))for(let c=1;c<l.rows;c++)r.cell_style[l.column][l.row+c]=JSON.parse(JSON.stringify(l.style));r.sheet_style=i.sheet_style||{},r.column_styles={},r.row_styles={};let o=(l,c)=>{for(let h of Object.keys(l)){let u=Number(h),m=l[u];if(typeof m=="number"){let f=a[m];f&&(c[u]=JSON.parse(JSON.stringify(f)),n(c[u]))}else m&&(c[u]=m,n(c[u]))}};o(i.row_style,r.row_styles),o(i.column_style,r.column_styles),r.row_pattern=i.row_pattern||[],n(r.sheet_style||{});for(let l of r.row_pattern)n(l);return r.row_height_=[],s(r.row_height_,i.row_height||{}),r.row_height_.length&&r.cells.EnsureRow(r.row_height_.length-1),r.column_width_=[],s(r.column_width_,i.column_width||{}),r.column_width_.length&&r.cells.EnsureColumn(r.column_width_.length-1),r.annotations=(i.annotations||[]).map(l=>new Ne(l)),i.selection&&(r.selection=JSON.parse(JSON.stringify(i.selection))),r.visible=!0,typeof i.visible<"u"&&(r.visible=!!i.visible),r}Activate(){if(this.background_image){let e=Tt(this.background_image);e&&(this._image=document.createElement("img"),this._image.src=e)}}MergeCells(e){e=e.Clone(),this.cells.Apply(e,(t,r,i)=>{t.merge_area=e,t.render_clean=[],(r!==e.start.column||i!==e.start.row)&&t.Reset()},!0)}UnmergeCells(e){let t=!0;if(this.cells.Apply(e,r=>{t=t&&!!r.merge_area&&e.Equals(r.merge_area)},!1),!t){console.warn("area mismatch");return}this.cells.Apply(e,r=>{r.merge_area=void 0,r.render_clean=[]},!1)}StyleFontSize(e,t={}){let r=e.font_size?.value||0,i=0;switch(e.font_size?.unit){case"px":r*=75/100;break;case"em":i=e.font_size.value||1;break;case"%":i=(e.font_size.value||100)/100;break}return i&&(r=i*(t.font_size?.value||10),t.font_size?.unit==="px"&&(r*=75/100)),r||10}UpdateDefaultRowHeight(){let e=k.Composite([this.default_style_properties,this.sheet_style]);if(typeof window<"u"){let t=pe.MeasureText(k.Font(e),"M"),r=Math.round(t.height*1.4);this.default_row_height<r&&(this.default_row_height=r)}}SetRowHeaders(e){this.row_headers=e.map(t=>t===void 0?"":t.toString()),this.row_headers&&this.cells.EnsureRow(this.row_headers.length-1)}SetColumnHeaders(e){this.column_headers=e.map(t=>t===void 0?"":t.toString()),e&&this.cells.EnsureColumn(e.length-1)}RowHeader(e){return this.row_headers?this.row_headers.length>e?this.row_headers[e]:"":e+1}ColumnHeader(e){let t="";if(this.column_headers)return this.column_headers.length>e?this.column_headers[e]:"";for(;;){let r=e%26;if(t=String.fromCharCode(65+r)+t,e=Math.floor(e/26),e)e--;else break}return t}GetRowHeight(e){let t=this.row_height_[e];return typeof t>"u"?this.default_row_height:t}SetRowHeight(e,t){return this.row_height_[e]=t,this.cells.EnsureRow(e),t}GetColumnWidth(e){let t=this.column_width_[e];return typeof t>"u"?this.default_column_width:t}SetColumnWidth(e,t){return this.column_width_[e]=t,this.cells.EnsureColumn(e),t}Delta(e,t){let r={},i=[...Object.keys(e),...Object.keys(t)];for(let s of i){let n=e[s],a=t[s];typeof n=="object"&&typeof a=="object"?JSON.stringify(n)!==JSON.stringify(a)&&(r[s]=a):n!==a&&(r[s]=a)}return r}UpdateCellStyle(e,t,r=!0){let{row:i,column:s}=e;this.cell_style[s]||(this.cell_style[s]=[]);let n=this.CompositeStyleForCell(e,!1,!1),a=k.Composite([this.default_style_properties,n,k.Merge(this.cell_style[s][i]||{},t,r)]),o=this.Delta(n,a);this.cell_style[s][i]=o,this.CellData(e).FlushStyle()}Invalidate(e){this.cells.Apply(this.RealArea(e),t=>t.render_clean=[])}UpdateAreaStyle(e,t={},r=!0){if(e)if(e.entire_sheet)this.UpdateSheetStyle(t,r);else if(e.entire_column)for(let i=e.start.column;i<=e.end.column;i++)this.UpdateColumnStyle(i,t,r);else if(e.entire_row)for(let i=e.start.row;i<=e.end.row;i++)this.UpdateRowStyle(i,t,r);else e.Array().forEach(i=>this.UpdateCellStyle(i,t,r))}HasCellStyle(e){return!!(this.cell_style[e.column]&&this.cell_style[e.column][e.row]||this.row_styles[e.row]||this.column_styles[e.column]||this.row_pattern.length)}NextVisibleColumn(e){for(++e;this.column_width_[e]===0;e++);return e}PreviousVisibleColumn(e){for(--e;e>=0&&this.column_width_[e]===0;e--);return e}NextVisibleRow(e){for(++e;this.row_height_[e]===0;e++);return e}PreviousVisibleRow(e){for(--e;e>=0&&this.row_height_[e]===0;e--);return e}TableRow(e,t){let r={alternate:!1,header:t===e.area.start.row,last:!1,totals:e.totals_row&&t===e.area.end.row};if(r.header||r.totals)return r;if(!(e.totals_row&&this.GetRowHeight(e.area.end.row)>0)){let n=e.area.end.row;for(;n>=e.area.start.row;n--)if(this.GetRowHeight(n)){r.last=n===t;break}}let s=e.area.start.row+1;for(;s<=e.area.end.row&&!(this.GetRowHeight(s)&&(r.alternate=!r.alternate,s===t));s++);return r}SurroundingStyle(e,t){let r=[{},{},{},{},{},{},{},{},{},{}],i=e.column+1,s=e.column-1,n=e.row+1,a=e.row-1;for(;this.column_width_[i]===0;i++);for(;this.row_height_[n]===0;n++);for(;s>=0&&this.column_width_[s]===0;s--);for(;a>=0&&this.row_height_[a]===0;a--);return s>=0&&a>=0&&(r[7]=this.CellStyleData({row:a,column:s},t)||{}),s>=0&&(r[4]=this.CellStyleData({row:e.row,column:s},t)||{},r[1]=this.CellStyleData({row:n,column:s},t)||{}),a>=0&&(r[8]=this.CellStyleData({row:a,column:e.column},t)||{},r[9]=this.CellStyleData({row:a,column:i},t)||{}),r[6]=this.CellStyleData({row:e.row,column:i},t)||{},r[2]=this.CellStyleData({row:n,column:e.column},t)||{},r[3]=this.CellStyleData({row:n,column:i},t)||{},r}CellStyleData(e,t){let r=this.cells.GetCell(e);if(r){if(!r.style){let i=this.GetStyleIndex(this.CompositeStyleForCell(e));r.style=this.style_map[i]}if(r.table){let i=r.table.theme||t;if(i){let s=JSON.parse(JSON.stringify(r.style)),n=this.TableRow(r.table,e.row);return n.header?i.header&&(s=k.Composite([s,i.header])):n.totals?i.total&&(s=k.Composite([s,i.total])):n.alternate?i.odd&&(s=k.Composite([s,i.odd])):i.even&&(s=k.Composite([s,i.even])),s}}return r.style}}GetCopyStyle(e){return this.CompositeStyleForCell(e,!0,!1)}CellData(e){let t=this.cells.EnsureCell(e);if(t.rendered_type)return t;let r,i;if(t.calculated_type?(i=t.calculated,r=t.calculated_type):(i=t.value,r=t.type),!t.style){let s=this.GetStyleIndex(this.CompositeStyleForCell(e));t.style=this.style_map[s]}if(!r||i===null||typeof i>"u")t.formatted="",t.rendered_type=2;else if(r===3)isNaN(i)?t.formatted=typeof t.style.nan>"u"?"NaN":t.style.nan:t.formatted=this.FormatNumber(i,t.style.number_format),t.rendered_type=3;else if(r===6)t.formatted="#"+(i||"ERR?"),t.rendered_type=6;else if(r===4)t.formatted=i.toString().toUpperCase(),t.rendered_type=4;else if(r===1&&t.calculated===void 0)t.formatted="",t.rendered_type=2;else if(r===7){let s=i;if(isNaN(s.real)||isNaN(s.imaginary))t.formatted=typeof t.style.nan>"u"?"NaN":t.style.nan;else{let n=M.Get(t.style.number_format||"",!0);t.formatted=n.FormatComplex(s)}t.rendered_type=7}else if(r===9){if(isNaN(i.value))t.formatted=typeof t.style.nan>"u"?"NaN":t.style.nan,t.formatted+=" "+i.unit;else{let s=M.Get(t.style.number_format||"",!0);t.formatted=s.FormatDimensionedQuantity(i)}t.rendered_type=9}else t.formatted=this.FormatNumber(i,t.style.number_format),t.rendered_type=2;return t}FormatNumber(e,t=""){let r=M.Get(t).FormatParts(e);return r.length?r.length===1&&!r[0].flag?r[0].text||"":r:""}SetHeaderSize(e=wi,t=this.default_row_height){this.row_header_width=e,this.column_header_height=t}AutoSizeRow(e,t={},r=!0){let i=this.default_row_height,s=9;for(let n=0;n<this.cells.columns;n++){let a=this.CellData({row:e,column:n}),o=a.style,l=a.formatted||"";if(typeof l!="string"&&(l=l.map(c=>c.text).join("")),o&&l&&l.length){let c=l.split(/\n/),h=Math.round(this.StyleFontSize(o,t)*1.5);i=Math.max(i,((h||10)+s)*c.length)}}!r&&this.GetRowHeight(e)>=i||this.SetRowHeight(e,i)}GetStyle(e){return this.style_map[e]}InsertRows(e=0,t=1){if(e)for(let o=0;o<this.cells.columns;o++){let l=this.cells.GetCell({row:e-1,column:o},!1);if(l&&l.area){let c=this.cells.GetCell({row:e,column:o},!1);if(c&&c.area&&c.area.Equals(l.area))return!1}}t<0?this.cells.DeleteRows(e,-t):this.cells.InsertRows(e,t);let r={},i={};for(let o=e;o<this.cells.rows;o++)for(let l=0;l<this.cells.columns;l++){let c=this.cells.GetCell({row:o,column:l},!1);c&&(c.area&&!i[c.area.spreadsheet_label]&&(i[c.area.spreadsheet_label]=c.area),c.merge_area&&!r[c.merge_area.spreadsheet_label]&&(r[c.merge_area.spreadsheet_label]=c.merge_area))}for(let o of Object.keys(i)){let l=i[o],c=new v({row:l.start.row+t,column:l.start.column},{row:l.end.row+t,column:l.end.column});c.Iterate(h=>{let u=this.cells.GetCell(h,!0);u.area=c})}for(let o of Object.keys(r)){let l=r[o],c={row:l.start.row,column:l.start.column};l.start.row>=e&&(c.row+=t);let h=new v(c,{row:l.end.row+t,column:l.end.column});h.Iterate(u=>{let m=this.cells.GetCell(u,!0);m.merge_area=h})}let s=Object.keys(this.row_styles),n={};s.forEach(o=>{let l=Number(o);l<e?n[l]=this.row_styles[l]:t<0&&l<e-t||(n[l+t]=this.row_styles[l])}),this.row_styles=n;let a=[];if(t<0)a=[e,-t];else{a=[e,0];for(let o=0;o<t;o++)a.push(void 0)}return this.cell_style.forEach(o=>{o&&o.length>=e&&o.splice.apply(o,a)}),this.row_height_.splice.apply(this.row_height_,a),this.FlushCellStyles(),!0}InsertColumns(e=0,t=1){if(e)for(let o=0;o<this.cells.rows;o++){let l=this.cells.GetCell({row:o,column:e-1},!1);if(l&&l.area){let c=this.cells.GetCell({row:o,column:e},!1);if(c&&c.area&&c.area.Equals(l.area))return!1}}t<0?this.cells.DeleteColumns(e,-t):this.cells.InsertColumns(e,t);let r={},i={};for(let o=e;o<this.cells.columns;o++)for(let l=0;l<this.cells.rows;l++){let c=this.cells.GetCell({row:l,column:o},!1);c&&(c.area&&!i[c.area.spreadsheet_label]&&(i[c.area.spreadsheet_label]=c.area),c.merge_area&&!r[c.merge_area.spreadsheet_label]&&(r[c.merge_area.spreadsheet_label]=c.merge_area))}for(let o of Object.keys(i)){let l=i[o],c=new v({row:l.start.row,column:l.start.column+t},{row:l.end.row,column:l.end.column+t});c.Iterate(h=>{let u=this.cells.GetCell(h,!0);u.area=c})}for(let o of Object.keys(r)){let l=r[o],c={row:l.start.row,column:l.start.column};l.start.column>=e&&(c.column+=t);let h=new v(c,{row:l.end.row,column:l.end.column+t});h.Iterate(u=>{let m=this.cells.GetCell(u,!0);m.merge_area=h})}let s=Object.keys(this.column_styles),n={};s.forEach(o=>{let l=Number(o);l<e?n[l]=this.column_styles[l]:t<0&&l<e-t||(n[l+t]=this.column_styles[l])}),this.column_styles=n;let a=[];if(t<0)a=[e,-t];else{a=[e,0];for(let o=0;o<t;o++)a.push(void 0)}return this.cell_style.splice.apply(this.cell_style,a),this.column_width_.splice.apply(this.column_width_,a),this.FlushCellStyles(),!0}ClearArea(e){e=this.RealArea(e),this.cells.Apply(e,t=>t.Reset())}SetAreaValues2(e,t){e=this.RealArea(e),this.cells.SetArea(e,t)}SetArrayValue(e,t){e=this.RealArea(e),this.cells.Apply(e,i=>i.SetArray(e),!0),this.cells.GetCell(e.start,!0).SetArrayHead(e,t)}SetCellValue(e,t){this.cells.GetCell(e,!0).Set(t)}TablesFromArea(e,t=!1){if(L(e)){let i=this.cells.GetCell(e,!1);return i?.table&&(!t||e.row===i.table.area.start.row)?[i.table]:[]}let r=new Set;for(let i=e.start.row;i<=e.end.row;i++)for(let s=e.start.column;s<=e.end.column;s++){let n=this.cells.GetCell({row:i,column:s},!1);n?.table&&!r.has(n.table)&&(!t||i===n.table.area.start.row)&&r.add(n.table)}return Array.from(r.values())}RealArea(e,t=!1){let r=e.start,i=e.end;return e.entire_row&&(r.column=0,r.absolute_column=!1,i.column=this.cells.columns-1,i.absolute_column=!1),e.entire_column&&(r.row=0,r.absolute_row=!1,i.row=this.cells.rows-1,i.absolute_row=!1),t&&(i.row>=this.rows&&(i.row=this.rows-1,i.absolute_row=!1),i.column>=this.columns&&(i.column=this.columns-1,i.absolute_column=!1)),new v(r,i)}GetCellStyle(e,t=!1){if(L(e))return this.CompositeStyleForCell(e,!0,!1,t);if(e.start.row===e.end.row&&e.start.column===e.end.column)return this.CompositeStyleForCell(e.start,!0,!1,t);let r=[];for(let i=e.start.row;i<=e.end.row;i++){let s=[];for(let n=e.start.column;n<=e.end.column;n++)s.push(this.CompositeStyleForCell({row:i,column:n},!0,!1,t));r.push(s)}return r}FormattedCellValue(e){let t=this.CellData(e);if(t)return typeof t.formatted=="string"?t.formatted:t.formatted?t.formatted.map(r=>{switch(r.flag){case 1:return" ";case 2:return" ";default:return r.text}}).join(""):t.value}GetFormattedRange(e,t=e){if(e.row===t.row&&e.column===t.column)return this.FormattedCellValue(e);let r=[];for(let i=e.row;i<=t.row;i++){let s=[];for(let n=e.column;n<=t.column;n++)s.push(this.FormattedCellValue({row:i,column:n}));r.push(s)}return r}NumberFormatsAndColors(e,t){let r=i=>{i.number_format&&(t[i.number_format]=1),i.text?.text&&i.text.text!=="none"&&(e[i.text.text]=1),i.fill?.text&&(e[i.fill.text]=1),i.border_top_fill?.text&&(e[i.border_top_fill.text]=1),i.border_left_fill?.text&&(e[i.border_left_fill.text]=1),i.border_right_fill?.text&&(e[i.border_right_fill.text]=1),i.border_bottom_fill?.text&&(e[i.border_bottom_fill.text]=1)};r(this.sheet_style);for(let i in this.row_styles)r(this.row_styles[i]);for(let i in this.column_styles)r(this.column_styles[i]);for(let i of this.row_pattern)r(i);for(let i of this.cell_style)if(i)for(let s of i)s&&r(s)}CompressCellStyles(e){let t=[];for(let r=0;r<e.length;r++){let i=e[r];if(i)for(let s=0;s<i.length;s++){let n=i[s];if(n){let a=s+1;for(;a<i.length&&i[a]===n;a++);a>s+1?t.push({row:s,column:r,ref:n,rows:a-s}):t.push({row:s,column:r,ref:n}),s=a-1}}}return t}toJSON(e={}){let t=(w,A)=>{let S={};for(let E=0;E<w.length;E++)typeof w[E]<"u"&&w[E]!==A&&(S[E]=w[E]);if(Object.keys(S).length)return S},r=[{}],i={},s=[],n=JSON.stringify({});for(let w=0;w<this.cell_style.length;w++){let A=this.cell_style[w];if(A){s[w]=[];for(let S=0;S<A.length;S++)if(A[S]){let E=JSON.stringify(A[S]);if(E!==n){let F=i[E];typeof F!="number"&&(i[E]=F=r.length,r.push(A[S])),s[w][S]=F}}}}let a=w=>{let A=JSON.stringify(w);if(A===n)return 0;let S=i[A];return typeof S!="number"&&(i[A]=S=r.length,r.push(w)),S};r=JSON.parse(JSON.stringify(r));let o=JSON.parse(JSON.stringify(this.sheet_style)),l=JSON.parse(JSON.stringify(this.row_pattern)),c={},h={};for(let w of Object.keys(this.column_styles)){let A=Number(w),S=this.column_styles[A];if(S){let E=a(S);E&&(c[A]=E)}}for(let w of Object.keys(this.row_styles)){let A=Number(w),S=this.row_styles[A];if(S){let E=a(S);E&&(h[A]=E)}}let u=(w,A)=>{if(typeof w<"u"&&w!=="none")return w===A?void 0:pe.MeasureColorARGB(w)},m=(w={},A={})=>{let S={...A,...w};if(S.text)return S.text=pe.MeasureColorARGB(S.text),S;if(typeof S.theme=="number")return S};if(e.export_colors){let w=[];for(let A of[r,[o],l])if(Array.isArray(A))for(let S of A)w.push(S);else for(let S of Object.keys(A))w.push(A[S]);for(let A of w){let S=m(A.border_top_fill,k.DefaultProperties.border_top_fill);S!==void 0&&(A.border_top_fill=S),S=m(A.border_left_fill,k.DefaultProperties.border_left_fill),S!==void 0&&(A.border_left_fill=S),S=m(A.border_right_fill,k.DefaultProperties.border_right_fill),S!==void 0&&(A.border_right_fill=S),S=m(A.border_bottom_fill,k.DefaultProperties.border_bottom_fill),S!==void 0&&(A.border_bottom_fill=S),A.fill?.text&&(A.fill.text=pe.MeasureColorARGB(A.fill.text)),A.text&&A.text.text&&A.text.text!=="none"&&(A.text.text=pe.MeasureColorARGB(A.text.text))}}let f={calculated_value:!!e.rendered_values,preserve_type:!!e.preserve_type,expand_arrays:!!e.expand_arrays,decorated_cells:!!e.decorated_cells,nested:!0,cell_style_refs:s,tables:!!e.tables},b=this.cells.toJSON(f),p=b.data,{rows:g,columns:_}=b;e.shrink?(g+=2,_+=1):(g=this.rows,_=this.columns);for(let w of this.annotations)w.data.extent||this.CalculateAnnotationExtent(w),w.data.extent&&(g=Math.max(g,w.data.extent.row+1),_=Math.max(_,w.data.extent.column+1));let y=this.CompressCellStyles(s),x={id:this.id,name:this.name,data:p,sheet_style:o,rows:g,columns:_,cell_styles:y,styles:r,row_style:h,column_style:c,row_pattern:l.length?l:void 0,default_row_height:this.default_row_height,default_column_width:this.default_column_width,row_height:t(this.row_height_,this.default_row_height),column_width:t(this.column_width_,this.default_column_width),selection:JSON.parse(JSON.stringify(this.selection)),annotations:JSON.parse(JSON.stringify(this.annotations))};return this.visible||(x.visible=this.visible),(this.scroll_offset.x||this.scroll_offset.y)&&(x.scroll=this.scroll_offset),this.background_image&&(x.background_image=this.background_image),(this.freeze.rows||this.freeze.columns)&&(x.freeze=this.freeze),x}FlushCellStyles(){this.style_map=[],this.style_json_map=[],this.cells.FlushCellStyles()}ImportData(e){let t=e.styles;e.outline&&(this.outline=e.outline);let r=e.sheet_style;r&&this.UpdateAreaStyle(new v({row:1/0,column:1/0},{row:1/0,column:1/0}),t[r]);let i=e.column_styles;if(i)for(let n=0;n<i.length;n++)i[n]&&this.UpdateAreaStyle(new v({row:1/0,column:n},{row:1/0,column:n}),t[i[n]]);this.cells.FromJSON(e.cells),e.name&&(this.name=e.name||"");let s=this.cell_style;for(let n of e.cells)n.style_ref&&(s[n.column]||(s[n.column]=[]),s[n.column][n.row]=t[n.style_ref]);for(let n=0;n<e.column_widths.length;n++)typeof e.column_widths[n]<"u"&&this.SetColumnWidth(n,e.column_widths[n]);for(let n=0;n<e.row_heights.length;n++)typeof e.row_heights[n]<"u"&&this.SetRowHeight(n,e.row_heights[n]);for(let n of e.annotations||[])this.annotations.push(new Ne(n));e.hidden&&(this.visible=!1)}CalculateAnnotationExtent(e){if(e.data.layout){e.data.extent={...e.data.layout.br.address};return}let t=1e3;e.data.extent={row:0,column:0};let r=e.rect?.right;if(r&&this.default_column_width){for(let s=0;r>=0&&s<t;s++)if(r-=this.GetColumnWidth(s),r<0){e.data.extent.column=s;break}}let i=e.rect?.bottom;if(i&&this.default_row_height){for(let s=0;i>=0&&s<t;s++)if(i-=this.GetRowHeight(s),i<0){e.data.extent.row=s;break}}}UpdateSheetStyle(e,t=!0){this.sheet_style=k.Merge(this.sheet_style,e,t);let r=Object.keys(e);for(let i of this.cell_style)if(i)for(let s of i)s&&r.forEach(n=>delete s[n]);for(let i of Object.keys(this.row_styles))r.forEach(s=>delete this.row_styles[i][s]);for(let i of Object.keys(this.column_styles))r.forEach(s=>delete this.column_styles[i][s]);this.FlushCellStyles()}UpdateRowStyle(e,t,r=!0){this.row_styles[e]=k.Merge(this.row_styles[e]||{},t,r);let i=Object.keys(t);for(let s of this.cell_style)s&&s[e]&&i.forEach(n=>delete s[e][n]);for(let s=0;s<this.cells.columns;s++)if(this.column_styles[s]){let n=this.column_styles[s],a=this.cell_style[s]?this.cell_style[s][e]||{}:{};for(let o of i)typeof n[o]<"u"&&(a[o]=t[o]);Object.keys(a).length&&(this.cell_style[s]||(this.cell_style[s]=[]),this.cell_style[s][e]=JSON.parse(JSON.stringify(a)))}this.cells.Apply(this.RealArea(v.FromRow(e)),s=>s.FlushStyle())}UpdateColumnStyle(e,t,r=!0){this.column_styles[e]=k.Merge(this.column_styles[e]||{},t,r);let i=Object.keys(t);if(this.cell_style[e])for(let s of this.cell_style[e])s&&i.forEach(n=>delete s[n]);this.cells.Apply(this.RealArea(v.FromColumn(e)),s=>s.FlushStyle())}CompositeStyleForCell(e,t=!0,r=!0,i=!0){let{row:s,column:n}=e,a=[];return i&&a.push(this.default_style_properties),a.push(this.sheet_style),r&&this.row_pattern.length&&a.push(this.row_pattern[s%this.row_pattern.length]),this.row_styles[s]&&a.push(this.row_styles[s]),this.column_styles[n]&&a.push(this.column_styles[n]),t&&this.cell_style[n]&&this.cell_style[n][s]&&a.push(this.cell_style[n][s]),k.Composite(a)}GetStyleIndex(e){let t=JSON.stringify(e);for(let i=0;i<this.style_json_map.length;i++)if(t===this.style_json_map[i])return i;let r=this.style_map.length;return this.style_map.push(JSON.parse(t)),this.style_json_map.push(t),r}},O=De;O.base_id=100,O.default_sheet_name="Sheet1";var xi="http://www.w3.org/2000/svg",Ye=class{constructor(e,t,r=!1){this.model=e;this.view=t;this.grid_tiles=[];this.column_header_tiles=[];this.row_header_tiles=[];this.frozen_row_tiles=[];this.frozen_column_tiles=[];this.header_size={width:0,height:0};this.last_column=0;this.total_height=0;this.total_width=0;this.default_row_height=0;this.default_column_width=0;this.header_offset={x:0,y:0};this.dpr=1;this.scale=1;this.trident=typeof navigator<"u"&&navigator.userAgent&&/trident/i.test(navigator.userAgent);this.default_tile_size={width:1200,height:800};this.dropdown_caret_visible=!1;this.row_cache=[];this.column_cache=[];this.initialized=!1;if(r)return;this.dpr=Math.max(1,self.devicePixelRatio||1),this.mask=D.CreateDiv("treb-mouse-mask"),this.tooltip=D.CreateDiv("treb-tooltip"),this.dropdown_caret=document.createElementNS(xi,"svg"),this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_caret.setAttribute("viewBox","0 0 24 24"),this.dropdown_caret.tabIndex=-1;let i=document.createElementNS(xi,"path");i.setAttribute("d","M5,7 L12,17 L19,7"),this.dropdown_caret.appendChild(i),this.dropdown_caret.addEventListener("click",s=>{s.stopPropagation(),s.preventDefault(),this.grid_cover.classList.remove("nub-select");let n=this.dropdown_caret.getAttribute("class")||"";/active/i.test(n)?this.dropdown_caret.setAttribute("class","treb-dropdown-caret"):(this.dropdown_caret.setAttribute("class","treb-dropdown-caret active"),this.dropdown_list.focus())}),this.dropdown_list=D.CreateDiv("treb-dropdown-list"),this.dropdown_list.setAttribute("tabindex","-1"),this.dropdown_list.addEventListener("keydown",s=>{let n=0;switch(s.key){case"ArrowDown":n=1;break;case"ArrowUp":n=-1;break;case"Escape":break;case"Enter":break;default:console.info(s.key);return}if(s.stopPropagation(),s.preventDefault(),s.key==="Escape"||s.key==="Enter")this.container?.focus(),this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),s.key==="Enter"&&this.dropdown_callback&&this.dropdown_selected&&this.dropdown_callback.call(0,this.dropdown_selected.dropdown_value);else if(n&&this.dropdown_selected)if(n>0&&this.dropdown_selected.nextSibling){this.dropdown_selected.nextSibling.classList.add("selected"),this.dropdown_selected.classList.remove("selected"),this.dropdown_selected=this.dropdown_selected.nextSibling;let a=this.dropdown_selected.offsetTop+this.dropdown_selected.offsetHeight;a>this.dropdown_list.offsetHeight+this.dropdown_list.scrollTop&&(this.dropdown_list.scrollTop=a-this.dropdown_list.offsetHeight)}else n<0&&this.dropdown_selected.previousSibling&&(this.dropdown_selected.previousSibling.classList.add("selected"),this.dropdown_selected.classList.remove("selected"),this.dropdown_selected=this.dropdown_selected.previousSibling,this.dropdown_selected.offsetTop<this.dropdown_list.scrollTop&&(this.dropdown_list.scrollTop=this.dropdown_selected.offsetTop))}),this.dropdown_list.addEventListener("mousedown",s=>{let n=s.target;s.target!==this.dropdown_list&&(s.stopPropagation(),s.preventDefault(),this.container?.focus(),this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_callback&&this.dropdown_callback.call(0,n.dropdown_value))}),this.dropdown_list.addEventListener("mousemove",s=>{let n=s.target;n!==this.dropdown_selected&&(this.grid_cover.classList.remove("nub-select"),this.dropdown_selected&&this.dropdown_selected.classList.remove("selected"),n.classList.add("selected"),this.dropdown_selected=n)}),this.mock_selection=D.CreateDiv("mock-selection-node"),this.mock_selection.innerHTML="&nbsp;",this.note_node=D.CreateDiv("treb-note"),this.title_node=D.CreateDiv("treb-hover-title"),this.sort_button=D.Create("button","treb-sort-button",void 0,void 0,{title:"Sort table",tabindex:"-1"}),this.HideNote()}get scroll_offset(){return this.scroll_reference_node?{x:this.scroll_reference_node.scrollLeft,y:this.scroll_reference_node.scrollTop}:{x:0,y:0}}set scroll_offset(e){this.scroll_reference_node&&(this.scroll_reference_node.scrollLeft=e.x,this.scroll_reference_node.scrollTop=e.y)}UpdateDPR(){let e=Math.max(1,self.devicePixelRatio||1);return e===this.dpr?!1:(this.dpr=e,!0)}ColumnWidth(e){return Math.round(this.view.active_sheet.GetColumnWidth(e)*this.scale)}RowHeight(e){return Math.round(this.view.active_sheet.GetRowHeight(e)*this.scale)}SetRowHeight(e,t){this.view.active_sheet.SetRowHeight(e,Math.round(t/this.scale))}SetColumnWidth(e,t){this.view.active_sheet.SetColumnWidth(e,Math.round(t/this.scale))}ShowSelections(e=!0){this.grid_selection.style.display=e?"block":"none"}HideTitle(){this.title_node.style.opacity="0"}ShowTitle(e,t){if(this.title_node.textContent=e,!this.title_node.parentElement)return;let r=this.title_node.parentElement.getBoundingClientRect(),i=this.OffsetCellAddressToRectangle(t).Shift(this.header_size.width,this.header_size.height);this.title_node.style.left=r.left+i.left-this.scroll_reference_node.scrollLeft+0+"px",this.title_node.style.top=r.top+i.bottom-this.scroll_reference_node.scrollTop+8+"px",this.title_node.style.opacity="1"}HideNote(){this.note_node.style.opacity="0",this.note_node.style.pointerEvents="none"}HideTableSortButton(){this.sort_button.style.opacity="0",this.sort_button.style.pointerEvents="none",this.sort_button.setAttribute("tabindex","-1")}ShowTableSortButton(e,t,r){if(!this.sort_button.parentElement)return;let i=!0,s=!1;e.sort&&e.sort.column===t&&(i=!e.sort.asc,s=!0),this.sort_button.setAttribute("tabindex","0 "),this.sort_button.style.opacity="1",this.sort_button.style.pointerEvents="initial",this.sort_button.classList.remove("asc","desc"),s&&this.sort_button.classList.add(i?"asc":"desc"),this.sort_button.dataset.asc=i.toString(),this.sort_button.dataset.table=e.name,this.sort_button.dataset.column=t.toString();let n=this.OffsetCellAddressToRectangle(r).Shift(this.header_size.width,this.header_size.height),a=this.sort_button.getBoundingClientRect();this.sort_button.style.left=n.right-a.width-a.width/2+"px",this.sort_button.style.top=n.top+(n.height-a.height)/2+"px"}ShowNote(e,t,r,i){if(i?this.note_node.innerHTML=i:this.note_node.textContent=e,!this.note_node.parentElement)return;let s=this.note_node.getBoundingClientRect(),n=this.note_node.parentElement.getBoundingClientRect(),a={x:8,y:2},o=this.OffsetCellAddressToRectangle(t).Shift(this.header_size.width,this.header_size.height);this.note_node.style.left=n.left+o.right-this.scroll_reference_node.scrollLeft+a.x+"px",this.note_node.style.top=n.top+o.top-this.scroll_reference_node.scrollTop-s.height/5-a.y+"px",this.note_node.style.opacity="1",this.note_node.style.pointerEvents="auto"}AnnotationLayoutOrder(e,t){let r=-1;for(let s=0;s<this.view.active_sheet.annotations.length;s++)if(this.view.active_sheet.annotations[s]===e){r=s;break}if(r<0)return!1;let i=Math.min(Math.max(0,r+t),this.view.active_sheet.annotations.length-1);if(i===r)return!1;this.view.active_sheet.annotations.splice(r,1),this.view.active_sheet.annotations.splice(i,0,e);for(let s=0;s<this.view.active_sheet.annotations.length;s++){let n=this.view.active_sheet.annotations[s].key,a=this.container?.querySelectorAll(`.annotation[data-key="${n}"]`);if(a)for(let o=0;o<a?.length;o++)a[o].style.zIndex=(s+1).toString()}return!0}PointToAnnotationCorner(e){let t=this.PointToAddress_Grid(e,void 0,!1),r=this.CellAddressToRectangle(t);return{address:t,offset:{x:(e.x-r.left)/r.width,y:(e.y-r.top)/r.height}}}RectToAnnotationLayout(e){return{tl:this.PointToAnnotationCorner({x:(e.left||0)+1,y:(e.top||0)+1}),br:this.PointToAnnotationCorner({x:e.right||e.left||100,y:e.bottom||e.top||100})}}AddressToAnnotationLayout(e,t){let r={tl:this.CellAddressToRectangle(e),br:this.CellAddressToRectangle(t)};return{tl:this.PointToAnnotationCorner({x:r.tl.left||0,y:r.tl.top||0}),br:this.PointToAnnotationCorner({x:r.br.right||r.tl.left||100,y:r.br.bottom||r.tl.left||100})}}AnnotationLayoutToRect(e){let t=this.CellAddressToRectangle(e.tl.address),r=this.CellAddressToRectangle(e.br.address),i=t.left+t.width*e.tl.offset.x-1,s=t.top+t.height*e.tl.offset.y-1;return new U(i,s,r.left+r.width*e.br.offset.x-i,r.top+r.height*e.br.offset.y-s)}UpdateAnnotation(e){Array.isArray(e)||(e=[e]);for(let t of e){let r=t.view[this.view.view_index]||{};if(r.node){if(r.node.dataset.scale=this.scale.toString(),r.node.style.fontSize=`${10*this.scale}pt`,t.rect&&!t.data.layout&&(t.scaled_rect=t.rect.Scale(this.scale),t.data.layout=this.RectToAnnotationLayout(t.scaled_rect)),t.data.layout){let i=this.AnnotationLayoutToRect(t.data.layout);i.ApplyStyle(r.node),t.scaled_rect=i}r.node.dataset.key=t.key.toString(),(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&this.CloneFrozenAnnotation(t)}}}GetFrozenAnnotations(e){return[this.row_header_annotations,this.column_header_annotations,this.corner_annotations].map(r=>r.querySelector(`.annotation[data-key="${e.key}"]`)).filter(r=>r!==null)}CloneFrozenAnnotations(){for(let e of this.view.active_sheet.annotations)e.view[this.view.view_index]?.node&&e.key&&this.CloneFrozenAnnotation(e)}ClearFrozenAnnotations(){for(let e of[this.row_header_annotations,this.column_header_annotations,this.corner_annotations]){let t=e.querySelectorAll(".annotation");for(let r=0;r<t.length;r++)t[r].parentElement?.removeChild(t[r])}}RemoveFrozenAnnotation(e){for(let t of[this.row_header_annotations,this.column_header_annotations,this.corner_annotations]){let r=t.querySelector(`.annotation[data-key="${e.key}"]`);r&&r.parentElement?.removeChild(r)}}CloneFrozenAnnotation(e){for(let t of[this.row_header_annotations,this.column_header_annotations,this.corner_annotations]){let r=t.querySelector(`.annotation[data-key="${e.key}"]`);r&&r.parentElement?.removeChild(r);let i=e.view[this.view.view_index];if(r=i?.node?.cloneNode(!0),r){let s=r.querySelector(".annotation-move-target"),n=r.querySelector(".annotation-resize-target");r.addEventListener("mousedown",a=>{let o=i.node;requestAnimationFrame(()=>{o?.focus()}),this.AnnotationMouseDown(e,i.node,a,s,n)}),t.appendChild(r)}}}RemoveAnnotation(e){let t=e.view[this.view.view_index]||{};t.node&&t.node.parentElement?.removeChild(t.node),this.RemoveFrozenAnnotation(e)}RemoveAnnotationNodes(){let e=Array.prototype.map.call(this.annotation_container.children,t=>t);for(let t of e)this.annotation_container.removeChild(t);(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&this.ClearFrozenAnnotations()}AddAnnotation(e){let t=e.view[this.view.view_index]||{};if(!t.node)throw new Error("annotation view/node missing");this.annotation_container.appendChild(t.node),this.UpdateAnnotation(e)}AnnotationMouseDown(e,t,r,i,s){let n=e.scaled_rect;return n?new Promise(a=>{let o={left:n.left,top:n.top,width:n.width,height:n.height},l=this.scroll_reference_node,c=l.getBoundingClientRect(),h=t.getBoundingClientRect();if(r.target===i||r.target!==s&&r.altKey){r.stopPropagation(),r.preventDefault(),t.focus();let u={x:h.left+r.offsetX-n.left,y:h.top+r.offsetY-n.top},m=[t,...this.GetFrozenAnnotations(e)],f=25,b=this.CellAddressToRectangle({row:0,column:0}).Combine(this.CellAddressToRectangle({row:this.view.active_sheet.rows-1,column:this.view.active_sheet.columns-1})).Expand(-1,-1);ge(this.mask,"move",p=>{if(p.offsetY-c.top<this.header_offset.y){let g=Math.min(f,l.scrollTop);l.scrollTop-=g,u.y+=g}else if(p.offsetY-c.top>=c.height&&l.scrollTop+c.height<b.height){let g=f;l.scrollTop+=g,u.y-=g}if(p.offsetX-c.left<this.header_offset.x){let g=Math.min(f,l.scrollLeft);l.scrollLeft-=g,u.x+=g}else if(p.offsetX-c.left>=c.width&&l.scrollLeft+c.width<b.width){let g=f;l.scrollLeft+=g,u.x-=g}if(n.top=p.offsetY-u.y,n.left=p.offsetX-u.x,p.shiftKey){let g=Math.abs(n.left-o.left),_=Math.abs(n.top-o.top);g<=_?n.left=o.left:n.top=o.top}if(p.ctrlKey){let g=this.ClampToGrid({x:n.left,y:n.top});n.left=g.x,n.top=g.y}for(let g of m)g.style.top=n.top+"px",g.style.left=n.left+"px"},()=>{e.data.extent=void 0,e.data.layout=this.RectToAnnotationLayout(n),a({type:"annotation",annotation:e,event:"move"})});return}else if(r.target===s){r.stopPropagation(),r.preventDefault(),t.focus();let u=0;e.data.type==="image"&&e.data.data&&e.data.data.original_size&&e.data.data.original_size.width&&e.data.data.original_size.height&&(u=e.data.data.original_size.width/e.data.data.original_size.height);let m=t.getBoundingClientRect(),f={x:m.left+r.offsetX-n.width+s.offsetLeft,y:m.top+r.offsetY-n.height+s.offsetTop};ge(this.mask,"nw-resize",b=>{let p=[t,...this.GetFrozenAnnotations(e)];if(n.height=b.offsetY-f.y,n.width=b.offsetX-f.x,b.shiftKey&&b.ctrlKey){if(u){let g=Math.abs(n.width-o.width),_=Math.abs(n.height-o.height);g<_?n.width=u*n.height:n.height=n.width/u}}else if(b.shiftKey){let g=Math.abs(n.height-o.height),_=Math.abs(n.width-o.width);g>_?n.width=o.width:n.height=o.height}else if(b.ctrlKey){let g=this.ClampToGrid({x:n.right,y:n.bottom});n.width=g.x-n.left+1,n.height=g.y-n.top+1}for(let g of p)g.style.height=n.height+"px",g.style.width=n.width+"px"},()=>{e.data.extent=void 0,e.data.layout=this.RectToAnnotationLayout(n),a({type:"annotation",annotation:e,event:"resize"})});return}else a()}):(console.info("missing scaled rect!"),Promise.reject())}Initialize(e,t,r=!0){this.mask.parentElement||e.parentElement?.parentElement?.appendChild(this.mask),this.tooltip.parentElement||e.appendChild(this.tooltip),this.dropdown_caret.parentElement||e.appendChild(this.dropdown_caret),this.dropdown_list.parentElement||e.appendChild(this.dropdown_list),this.note_node.parentElement||e.appendChild(this.note_node),this.sort_button.parentElement||(e.appendChild(this.sort_button),this.sort_button.addEventListener("click",()=>{t.sort(this.sort_button.dataset.table||"",Number(this.sort_button.dataset.column||"0")||0,/true/i.test(this.sort_button.dataset.asc||"")),this.sort_button.classList.remove("asc","desc"),this.sort_button.dataset.asc==="true"?(this.sort_button.dataset.asc="false",this.sort_button.classList.add("desc")):(this.sort_button.dataset.asc="true",this.sort_button.classList.add("asc")),t.focus()})),this.title_node.parentElement||e.appendChild(this.title_node),this.InitializeInternal(e,t.scroll),!r&&this.scroll_reference_node&&(this.scroll_reference_node.style.overflow="hidden"),this.dropdown_callback=t.dropdown,this.initialized=!0}MockSelection(){if(!this.container||this.trident)return;let e=window.getSelection();if(e){let t=document.createRange();t.selectNodeContents(this.mock_selection),e.removeAllRanges(),e.addRange(t)}}CreateTile(e,t,r,i,s,n,a,o=!0){let l=document.createElement("canvas");return l.setAttribute("class",e),l.logical_size=t,l.width=t.width*this.dpr,l.height=t.height*this.dpr,l.style.width=`${t.width}px`,l.style.height=`${t.height}px`,l.tile_position=r,l.first_cell=i,this.UpdateTileGridPosition(l),l.last_cell={row:i.row+s.rows-1,column:i.column+s.columns-1},l.pixel_start=n,l.pixel_end={x:n.x+t.width,y:n.y+t.height},l.dirty=!!o,l.needs_full_repaint=!0,a.appendChild(l),l}ApplyTheme(e){this.row_header.style.backgroundColor=this.column_header.style.backgroundColor=this.corner.style.backgroundColor=e.headers?.fill?fe(e,e.headers.fill):"",this.corner.style.borderColor=e.grid_color||"";for(let t of this.grid_tiles)for(let r of t)r.style.backgroundColor=fe(e,e.grid_cell?.fill)||"#fff";this.dropdown_list.style.font=k.Font(e.grid_cell||{})}UpdateTotalSize(){this.total_height=0;let e=this.view.active_sheet.rows;for(let r=0;r<e;r++)this.total_height+=this.RowHeight(r);this.total_width=0;let t=this.view.active_sheet.columns;for(let r=0;r<t;r++)this.total_width+=this.ColumnWidth(r)}UpdateContentsSize(){let e=this.row_header_tiles.reduce((r,i)=>r+i.logical_size.height,0),t=this.column_header_tiles.reduce((r,i)=>r+i.logical_size.width,0);this.column_header.style.width=this.contents.style.width=`${t}px`,this.row_header.style.height=this.contents.style.height=`${e}px`}HideTooltip(){this.tooltip.style.display="none",this.tooltip_state=void 0,this.tooltip.classList.remove("arrow-up"),this.tooltip.classList.remove("arrow-left")}ShowTooltip(e={}){e.up?(this.tooltip.classList.add("arrow-up"),this.tooltip_state="up"):e.left&&(this.tooltip.classList.add("arrow-left"),this.tooltip_state="left"),this.tooltip.style.display="block",this.UpdateTooltip(e)}ShowDropdownCaret(e,t,r){let i=this.OffsetCellAddressToRectangle(e.start);e.count>1&&(i=i.Combine(this.OffsetCellAddressToRectangle(e.end))),i=i.Shift(this.header_size.width,this.header_size.height);let s=Math.round(this.scale*Math.max(8,Math.min(20,i.height)));this.dropdown_caret.style.height=`${s}px`,this.dropdown_caret.style.width=`${s}px`,this.dropdown_caret.style.left=`${i.right+1}px`,this.dropdown_caret.style.top=`${i.bottom-s}px`,this.dropdown_list.style.top=`${i.bottom+2}px`,this.dropdown_list.style.left=`${i.left+2}px`,this.dropdown_list.style.minWidth=`${i.width}px`,this.dropdown_list.textContent="";for(let n of t){let a=D.CreateDiv(void 0,this.dropdown_list);r===n&&(this.dropdown_selected=a,a.classList.add("selected")),a.dropdown_value=n,a.textContent=n?.toString()||""}this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_caret.style.display="block",this.dropdown_caret_visible=!0}HideDropdownCaret(){this.dropdown_caret_visible&&(this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_caret_visible=!1,this.dropdown_caret.style.display="none")}GetScrollOffset(){return{x:this.scroll_reference_node.scrollLeft+this.header_offset.x,y:this.scroll_reference_node.scrollTop+this.header_offset.y}}ScrollTo(e,t=!0,r=!0,i=!1){let s=this.CellAddressToRectangle(e);if(i&&this.scroll_reference_node.scrollTo){let n={left:this.scroll_reference_node.scrollLeft,top:this.scroll_reference_node.scrollTop},a={left:t?s.left:n.left,top:r?s.top:n.top,behavior:"smooth"};this.scroll_reference_node.scrollTo(a)}else r&&(this.scroll_reference_node.scrollTop=s.top),t&&(this.scroll_reference_node.scrollLeft=s.left)}ScrollIntoView(e){let t=this.CellAddressToRectangle(e),r=this.scroll_reference_node.clientWidth-this.row_header.offsetWidth,i=this.scroll_reference_node.clientHeight-this.column_header.offsetHeight,s={x:0,y:0},n={x:!1,y:!1},a=new U(this.scroll_reference_node.scrollLeft,this.scroll_reference_node.scrollTop,r,i);(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&(this.view.active_sheet.freeze.rows&&e.row>=this.view.active_sheet.freeze.rows?s.y=this.frozen_row_tiles[0].logical_size.height:this.view.active_sheet.freeze.rows&&(n.y=!0),this.view.active_sheet.freeze.columns&&e.column>=this.view.active_sheet.freeze.columns?s.x=this.frozen_column_tiles[0].logical_size.width:this.view.active_sheet.freeze.columns&&(n.x=!0)),e.row!==1/0&&(t.top<a.top+s.y&&!n.y?this.scroll_reference_node.scrollTop=t.top-s.y:t.bottom>a.bottom&&(this.scroll_reference_node.scrollTop=t.bottom-i)),e.column!==1/0&&(t.left<a.left+s.x&&!n.x?this.scroll_reference_node.scrollLeft=t.left-s.x:t.right>a.right&&(this.scroll_reference_node.scrollLeft=t.right-r))}UpdateTooltip(e={}){if(typeof e.text<"u"&&(this.tooltip.textContent=e.text),typeof e.x<"u"){let t=e.x||0;this.tooltip_state==="up"&&(t-=this.tooltip.offsetWidth/2),this.tooltip.style.left=Math.round(t)+"px"}if(typeof e.y<"u"){let t=e.y||0;this.tooltip_state==="left"&&(t-=this.tooltip.offsetHeight/2),this.tooltip.style.top=Math.round(t)+"px"}}CoordinateToRowHeader(e){let t={column:1/0,row:0};if(this.view.active_sheet.freeze.rows&&this.frozen_row_tiles[0].pixel_end.y>=e-this.scroll_reference_node.scrollTop){let r=0;e-=this.scroll_reference_node.scrollTop;for(let i=0;i<this.view.active_sheet.freeze.rows;i++)if(r+=this.RowHeight(i),r>=e)return t.row=i,t}for(let r of this.row_header_tiles)if(r.pixel_end.y>=e){let i=e-r.pixel_start.y,s=0;for(t.row=r.first_cell.row;t.row<=r.last_cell.row;t.row++,i-=s)if(s=this.RowHeight(t.row),s>i)return t;return t}return t}CoordinateToColumnHeader(e){let t={row:1/0,column:0};if(this.view.active_sheet.freeze.columns&&this.frozen_column_tiles[0].pixel_end.x>=e-this.scroll_reference_node.scrollLeft){let r=0;e-=this.scroll_reference_node.scrollLeft;for(let i=0;i<this.view.active_sheet.freeze.columns;i++)if(r+=this.ColumnWidth(i),r>=e)return t.column=i,t}for(let r of this.column_header_tiles)if(r.pixel_end.x>=e){let i=e-r.pixel_start.x,s=0;for(t.column=r.first_cell.column;t.column<=r.last_cell.column;t.column++,i-=s)if(s=this.ColumnWidth(t.column),s>i)return t;return t}return t}PointToAddress_Grid(e,t=!1,r=!0){if(r){if(this.view.active_sheet.freeze.rows){let a=this.frozen_row_tiles[0].logical_size.height;e.y-this.scroll_reference_node.scrollTop<a&&(e.y-=this.scroll_reference_node.scrollTop)}if(this.view.active_sheet.freeze.columns){let a=this.frozen_column_tiles[0].logical_size.width;e.x-this.scroll_reference_node.scrollLeft<a&&(e.x-=this.scroll_reference_node.scrollLeft)}}let i={row:0,column:0},s=this.grid_tiles[this.grid_tiles.length-1],n=s[s.length-1];if(e.y>n.pixel_end.y){let a=e.y-n.pixel_end.y;for(i.row=n.last_cell.row;a>0;)i.row++,a-=this.default_row_height}else for(let a of s)if(a.pixel_start.y<=e.y&&a.pixel_end.y>=e.y){let o=e.y-a.pixel_start.y,l=0;for(i.row=a.first_cell.row;i.row<=a.last_cell.row&&(l=this.RowHeight(i.row),!(l>o));i.row++,o-=l);break}if(e.x>n.pixel_end.x){let a=e.x-n.pixel_end.x;for(i.column=n.last_cell.column;a>0;)i.column++,a-=this.default_column_width}else for(let a of this.grid_tiles)if(a[0].pixel_start.x<=e.x&&a[0].pixel_end.x>=e.x){let o=a[0],l=e.x-o.pixel_start.x,c=0;for(i.column=o.first_cell.column;i.column<=o.last_cell.column&&(c=this.ColumnWidth(i.column),!(c>l));i.column++,l-=c);break}return i}AdjacentTile(e,t=0,r=0){if(!t&&!r)return e;let i=e.tile_position,s=e.tile_position.row+t,n=e.tile_position.column+r;if(!(s<0||n<0)){if(this.grid_tiles[i.column]&&this.grid_tiles[i.column][i.row]===e&&this.grid_tiles[n])return this.grid_tiles[n][s];if(!i.column&&this.frozen_column_tiles[i.row]===e)return this.frozen_column_tiles[s];if(!i.row&&this.frozen_row_tiles[i.column]===e)return this.frozen_row_tiles[n]}}UpdateTiles(){if(!this.container)throw new Error("invalid container");this.grid_tiles.forEach(x=>{x.forEach(w=>{w.parentElement&&w.parentElement.removeChild(w)})});for(let x of[this.column_header_tiles,this.row_header_tiles,this.frozen_row_tiles,this.frozen_column_tiles])for(let w of x)w.parentElement&&w.parentElement.removeChild(w);this.frozen_row_tiles=[],this.frozen_column_tiles=[],this.row_header_tiles=[],this.column_header_tiles=[],this.grid_tiles=[];let e=this.view.active_sheet;this.default_row_height=Math.round(e.default_row_height*this.scale),this.default_column_width=Math.round(e.default_column_width*this.scale),this.header_offset={x:Math.round(e.header_offset.x*this.scale),y:Math.round(e.header_offset.y*this.scale)},this.UpdateContainingGrid();let t=this.view.active_sheet.rows,r=this.view.active_sheet.columns;t||(t=100),r||(r=40);let i=0,s=0;for(let x=0;x<t;x++)i+=this.RowHeight(x);for(let x=0;x<r;x++)s+=this.ColumnWidth(x);if(!s||!i)throw"unexpected missing total size";if(i||(i=this.default_row_height*t),s||(s=this.default_column_width*r),this.container.clientWidth>s+this.header_size.width){let x=Math.ceil((this.container.offsetWidth-s)/this.default_column_width);s+=x*this.default_column_width,r+=x}if(this.last_column=r,this.container.clientHeight>i+this.header_size.height){let x=Math.ceil((this.container.offsetHeight-i)/this.default_row_height);i+=x*this.default_row_height,t+=x}this.column_header.style.width=this.contents.style.width=`${s}px`,this.row_header.style.height=this.contents.style.height=`${i}px`;let n=[],a=[],o=0,l=0;for(let x=0;x<r;x++){let w=this.ColumnWidth(x);o&&o+w>this.default_tile_size.width&&(n.push(o),a.push(l),l=x,o=0),o+=w}n.push(o),a.push(l);let c=[],h=[],u=0,m=0;for(let x=0;x<t;x++){let w=this.RowHeight(x);u&&u+w>this.default_tile_size.height&&(c.push(u),h.push(m),u=0,m=x),u+=w}c.push(u),h.push(m);let f=n.length,b=c.length,p=0,g=0,_=0,y=0;for(let x=0;x<this.view.active_sheet.freeze.rows;x++)_+=this.RowHeight(x);for(let x=0;x<this.view.active_sheet.freeze.columns;x++)y+=this.ColumnWidth(x);for(let x=0;x<f;x++){let w=[];p=0;let A=x===f-1?r-a[x]:a[x+1]-a[x];this.column_header_tiles.push(this.CreateTile("column-header-tile",{height:this.header_offset.y,width:n[x]},{row:0,column:x},{row:0,column:a[x]},{rows:0,columns:A},{x:g,y:0},this.column_header)),this.view.active_sheet.freeze.rows&&this.frozen_row_tiles.push(this.CreateTile("frozen-row-tile",{height:_,width:n[x]},{row:1,column:x},{row:0,column:a[x]},{rows:0,columns:A},{x:g,y:0},this.column_header));for(let S=0;S<b;S++){let E=S===b-1?t-h[S]:h[S+1]-h[S];x||(this.row_header_tiles.push(this.CreateTile("row-header-tile",{height:c[S],width:this.header_offset.x},{row:S,column:0},{row:h[S],column:0},{rows:E,columns:1},{x:0,y:p},this.row_header)),this.view.active_sheet.freeze.columns&&this.frozen_column_tiles.push(this.CreateTile("frozen-column-tile",{height:c[S],width:y},{row:S,column:1},{row:h[S],column:0},{rows:E,columns:1},{x:0,y:p},this.row_header))),w.push(this.CreateTile("grid-tile",{height:c[S],width:n[x]},{row:S,column:x},{row:h[S],column:a[x]},{rows:E,columns:A},{x:g,y:p},this.contents)),p+=c[S]}this.grid_tiles.push(w),g+=n[x]}this.total_height=i,this.total_width=s,this.ClearLayoutCaches(),this.UpdateGridTemplates(!0,!0)}ClearLayoutCaches(){this.row_cache=[],this.column_cache=[]}TileIndexForColumn(e){for(let t of this.column_header_tiles)if(t.first_cell.column<=e&&t.last_cell.column>=e)return t.tile_position.column;return-1}TileIndexForRow(e){for(let t of this.row_header_tiles)if(t.first_cell.row<=e&&t.last_cell.row>=e)return t.tile_position.row;return-1}DirtyHeaders(e){if(e){for(let t of this.column_header_tiles){if(t.dirty)continue;let r=new v({row:e.start.row,column:t.first_cell.column},{row:e.start.row,column:t.last_cell.column});(e.entire_row||r.Intersects(e))&&(t.dirty=!0)}for(let t of this.row_header_tiles){if(t.dirty)continue;let r=new v({column:e.start.column,row:t.first_cell.row},{column:e.start.column,row:t.last_cell.row});(e.entire_column||r.Intersects(e))&&(t.dirty=!0)}}}DirtyAll(){for(let e of this.grid_tiles)for(let t of e)t.dirty=!0}DirtyArea(e){if(!this.initialized)return;let t={row:0,column:0},r={row:this.grid_tiles[0].length-1,column:this.grid_tiles.length-1};e.start.column!==1/0&&(t.column=r.column=this.TileIndexForColumn(e.start.column),e.end.column!==e.start.column&&(r.column=this.TileIndexForColumn(e.end.column))),e.start.row!==1/0&&(t.row=r.row=this.TileIndexForRow(e.start.row),e.end.row!==e.start.row&&(r.row=this.TileIndexForRow(e.end.row)));for(let i=t.column;i<=r.column;i++)for(let s=t.row;s<=r.row;s++)this.grid_tiles[i][s].dirty=!0}VisibleTiles(){let e=[{row:0,column:0},{row:0,column:0}];if(!this.container||!this.grid_tiles.length||!this.grid_tiles[0].length)return new v(e[0],e[1]);let t=this.scroll_reference_node.scrollLeft,r=t+this.scroll_reference_node.offsetWidth,i=this.scroll_reference_node.scrollTop,s=i+this.scroll_reference_node.offsetHeight;for(let n of this.grid_tiles){let a=n[0];if(a.pixel_start.x<=t&&a.pixel_end.x>=t){for(a of n)if(a.pixel_start.y<=i&&a.pixel_end.y>=i){e[0]=a.tile_position;break}}if(n===this.grid_tiles[this.grid_tiles.length-1]||a.pixel_start.x<=r&&a.pixel_end.x>=r){for(a of n)if(a===n[n.length-1]||a.pixel_start.y<=s&&a.pixel_end.y>=s)return e[1]=a.tile_position,new v(e[0],e[1])}}return new v(e[0],e[1])}UpdateTileHeights(e=!0,t=-1){let r=0;for(let i=0;i<this.row_header_tiles.length;i++){let s=this.row_header_tiles[i];if(t>s.last_cell.row){r+=s.logical_size.height;continue}let n=0;for(let o=s.first_cell.row;o<=s.last_cell.row;o++)n+=this.RowHeight(o);let a=s.logical_size.height===n;if(s.pixel_start.y=r,r+=n,s.pixel_end.y=r,!a){if(s.logical_size.height=n,s.style.height=`${n}px`,s.height=this.dpr*n,this.view.active_sheet.freeze.columns){let o=this.frozen_column_tiles[i];o.logical_size.height=n,o.style.height=`${n}px`,o.height=this.dpr*n}e&&(s.dirty=!0,s.needs_full_repaint=!0)}for(let o of this.grid_tiles){let l=o[i];l.pixel_start.y=s.pixel_start.y,l.pixel_end.y=s.pixel_end.y,a||(l.logical_size.height=n,l.style.height=`${n}px`,l.height=this.dpr*n,e&&(l.dirty=!0,l.needs_full_repaint=!0))}}if(this.view.active_sheet.freeze.rows){let i=0;for(let s=0;s<this.view.active_sheet.freeze.rows;s++)i+=this.RowHeight(s);for(let s of this.frozen_row_tiles)s.style.height=`${i}px`,s.height=i*this.dpr;i+=this.header_offset.y,this.corner_canvas.style.height=`${i}px`,this.corner_canvas.height=i*this.dpr;for(let s of this.grid_tiles)s[0].dirty=!0}this.UpdateGridTemplates(!1,!0),this.row_header.style.height=this.contents.style.height=`${r}px`,this.ClearLayoutCaches()}UpdateTileWidths(e=!0,t=-1){let r=0;for(let i=0;i<this.column_header_tiles.length;i++){let s=this.column_header_tiles[i],n=this.grid_tiles[i];if(t>s.last_cell.column){r+=s.logical_size.width;continue}let a=0;for(let l=s.first_cell.column;l<=s.last_cell.column;l++)a+=this.ColumnWidth(l);let o=s.logical_size.width===a;if(s.pixel_start.x=r,r+=a,s.pixel_end.x=r,!o){if(s.logical_size.width=a,s.style.width=`${a}px`,s.width=this.dpr*a,this.view.active_sheet.freeze.rows){let l=this.frozen_row_tiles[i];l.logical_size.width=a,l.style.width=`${a}px`,l.width=this.dpr*a}e&&(s.dirty=!0,s.needs_full_repaint=!0)}for(let l of n)l.pixel_start.x=s.pixel_start.x,l.pixel_end.x=s.pixel_end.x,o||(l.logical_size.width=a,l.style.width=`${a}px`,l.width=this.dpr*a,e&&(l.dirty=!0,l.needs_full_repaint=!0))}if(this.view.active_sheet.freeze.columns){let i=0;for(let s=0;s<this.view.active_sheet.freeze.columns;s++)i+=this.ColumnWidth(s);for(let s of this.frozen_column_tiles)s.style.width=`${i}px`,s.width=i*this.dpr;i+=this.header_offset.x,this.corner_canvas.style.width=`${i}px`,this.corner_canvas.width=i*this.dpr;for(let s of this.grid_tiles[0])s.dirty=!0}this.UpdateGridTemplates(!0,!1),this.column_header.style.width=this.contents.style.width=`${r}px`,this.ClearLayoutCaches()}ClampToGrid(e){let t=this.PointToAddress_Grid(e),r=this.OffsetCellAddressToRectangle(t);return e.x>r.left+r.width/2?e.x=r.left+r.width-1:e.x=r.left-1,e.y>r.top+r.height/2?e.y=r.top+r.height-1:e.y=r.top-1,e}OffsetCellAddressToRectangle(e){let t=this.CellAddressToRectangle(e);return e.column>=0&&e.column<this.view.active_sheet.freeze.columns&&(t=t.Shift(this.scroll_reference_node.scrollLeft,0)),e.row>=0&&e.row<this.view.active_sheet.freeze.rows&&(t=t.Shift(0,this.scroll_reference_node.scrollTop)),t}CellAddressToRectangle(e){let t=e.row===1/0||e.row<0?0:e.row,r=e.column===1/0||e.column<0?0:e.column;if(this.column_cache.length<=r+1){this.column_cache.length||(this.column_cache[0]=0);for(let n=this.column_cache.length-1;n<=r;n++)this.column_cache[n+1]=this.column_cache[n]+this.ColumnWidth(n)}if(this.row_cache.length<=t+1){this.row_cache.length||(this.row_cache[0]=0);for(let n=this.row_cache.length-1;n<=t;n++)this.row_cache[n+1]=this.row_cache[n]+this.RowHeight(n)}let i=this.column_cache[r],s=this.row_cache[t];return new U(i,s,this.column_cache[r+1]-i,this.row_cache[t+1]-s)}ResizeTileWidth(e,t,r=!0){let i=this.column_header_tiles[e],s=t-i.logical_size.width;i.logical_size.width=t,i.style.width=`${t}px`,i.width=this.dpr*t,i.pixel_end.x+=s,r&&(i.dirty=!0,i.needs_full_repaint=!0);for(let a=e+1;a<this.column_header_tiles.length;a++){this.column_header_tiles[a].pixel_start.x+=s,this.column_header_tiles[a].pixel_end.x+=s;for(let o of this.grid_tiles[a])o.pixel_start.x+=s,o.pixel_end.x+=s}let n=this.grid_tiles[e];for(i of n)i.logical_size.width=t,i.style.width=`${t}px`,i.width=this.dpr*t,i.pixel_end.x+=s,r&&(i.dirty=!0,i.needs_full_repaint=!0);this.UpdateTotalSize(),this.UpdateGridTemplates(!0,!1),this.UpdateContentsSize()}ResizeTileHeight(e,t,r=!0){let i=this.row_header_tiles[e],s=t-i.logical_size.height;i.logical_size.height=t,i.style.height=`${t}px`,i.height=this.dpr*t,i.pixel_end.y+=s,r&&(i.dirty=!0,i.needs_full_repaint=!0);for(let n=e+1;n<this.row_header_tiles.length;n++)i=this.row_header_tiles[n],i.pixel_start.y+=s,i.pixel_end.y+=s;for(let n of this.grid_tiles){i=n[e],i.logical_size.height=t,i.style.height=`${t}px`,i.height=this.dpr*t,i.pixel_end.y+=s,r&&(i.dirty=!0,i.needs_full_repaint=!0);for(let a=e+1;a<n.length;a++)n[a].pixel_start.y+=s,n[a].pixel_end.y+=s}this.UpdateTotalSize(),this.UpdateGridTemplates(!1,!0),this.UpdateContentsSize()}};var Lt=class extends Ye{constructor(e,t){super(e,t,!0)}InitializeInternal(e,t){}UpdateGridTemplates(e,t){}UpdateTileGridPosition(e){}UpdateContainingGrid(){}ResizeCursor(e){}};var Pt="http://www.w3.org/2000/svg",Vt=class extends Ye{constructor(e,t){super(e,t),this.column_header=D.CreateDiv("treb-top-header"),this.row_header=D.CreateDiv("treb-left-header"),this.corner=D.CreateDiv("treb-corner"),this.corner_canvas=document.createElement("canvas"),this.corner.appendChild(this.corner_canvas),this.contents=D.CreateDiv("treb-contents"),this.buffer_canvas=D.Create("canvas","treb-buffer-canvas",this.contents),this.grid_selection=document.createElementNS(Pt,"svg"),this.grid_selection.classList.add("treb-grid-selection"),this.contents.appendChild(this.grid_selection),this.row_header_selection=document.createElementNS(Pt,"svg"),this.row_header_selection.classList.add("frozen-selection"),this.row_header_selection.classList.add("frozen-selection-rows"),this.column_header.appendChild(this.row_header_selection),this.row_header_annotations=D.CreateDiv("frozen-annotation-container frozen-annotation-container-rows",this.column_header),this.column_header_selection=document.createElementNS(Pt,"svg"),this.column_header_selection.classList.add("frozen-selection"),this.column_header_selection.classList.add("frozen-selection-columns"),this.row_header.appendChild(this.column_header_selection),this.column_header_annotations=D.CreateDiv("frozen-annotation-container frozen-annotation-container-columns",this.row_header),this.corner_selection=document.createElementNS(Pt,"svg"),this.corner_selection.classList.add("frozen-selection"),this.corner.appendChild(this.corner_selection),this.corner_annotations=D.CreateDiv("frozen-annotation-container frozen-annotation-container-corner",this.corner),this.annotation_container=D.CreateDiv("treb-annotation-container"),this.grid_cover=D.CreateDiv("tile-cover grid-cover"),this.column_header_cover=D.CreateDiv("tile-cover column-header-cover"),this.row_header_cover=D.CreateDiv("tile-cover row-header-cover")}InitializeInternal(e,t){this.container=e,this.scroll_reference_node=this.container,e.appendChild(this.column_header),e.appendChild(this.row_header),e.appendChild(this.corner),e.appendChild(this.contents),e.appendChild(this.annotation_container),e.appendChild(this.grid_cover),e.appendChild(this.column_header_cover),e.appendChild(this.row_header_cover),e.appendChild(this.mock_selection),this.container.addEventListener("scroll",()=>t())}ResizeCursor(e){switch(e){case"row":this.row_header_cover.classList.add("resize");break;case"column":this.column_header_cover.classList.add("resize");break;default:this.row_header_cover.classList.remove("resize"),this.column_header_cover.classList.remove("resize");break}}UpdateTileGridPosition(e){e.style.gridColumn=`${e.tile_position.column+1} / ${e.tile_position.column+2}`,e.style.gridRow=`${e.tile_position.row+1} / ${e.tile_position.row+2}`}UpdateContainingGrid(){if(!this.container)throw new Error("missing container");this.header_size.width=this.header_offset.x,this.header_size.height=this.header_offset.y;let e=this.header_offset.x,t=this.header_offset.y;if(this.view.active_sheet.freeze.columns)for(let r=0;r<this.view.active_sheet.freeze.columns;r++)e+=this.ColumnWidth(r);if(this.view.active_sheet.freeze.rows)for(let r=0;r<this.view.active_sheet.freeze.rows;r++)t+=this.RowHeight(r);this.container.style.gridTemplateColumns=`${this.header_offset.x}px auto`,this.container.style.gridTemplateRows=`${this.header_offset.y}px auto`,this.corner_canvas.setAttribute("width",`${this.dpr*e}`),this.corner_canvas.setAttribute("height",`${this.dpr*t}`),this.column_header.style.height=`${t}px`,this.corner_canvas.style.width=`${e}px`,this.corner_canvas.style.height=`${t}px`}UpdateGridTemplates(e=!0,t=!0){let r=0,i=0;this.column_header.style.gridTemplateColumns=this.contents.style.gridTemplateColumns=this.column_header_tiles.map(l=>(r+=l.logical_size.width,`${l.logical_size.width}px`)).join(" "),this.column_header.style.gridTemplateRows=`${this.header_offset.y}px auto`,this.row_header.style.gridTemplateRows=this.contents.style.gridTemplateRows=this.row_header_tiles.map(l=>(i+=l.logical_size.height,`${l.logical_size.height}px`)).join(" ");let s=this.header_offset.y;if(this.view.active_sheet.freeze.rows)for(let l=0;l<this.view.active_sheet.freeze.rows;l++)s+=this.RowHeight(l);this.column_header.style.height=`${s}px`,this.row_header_selection.style.display="block",this.row_header_selection.style.width=`${r}px`,this.corner_selection.style.height=this.row_header_selection.style.height=`${s}px`,this.corner_selection.style.top=this.row_header_selection.style.top="0px",this.row_header_selection.style.left="0px";let n=this.header_offset.x;if(this.view.active_sheet.freeze.columns)for(let l=0;l<this.view.active_sheet.freeze.columns;l++)n+=this.ColumnWidth(l);this.column_header_selection.style.display="block",this.corner_selection.style.width=this.column_header_selection.style.width=`${n}px`,this.column_header_selection.style.height=`${i}px`,this.column_header_selection.style.top="0px",this.corner_selection.style.left=this.column_header_selection.style.left="0px";let a={x:this.view.active_sheet.header_offset.x*this.scale,y:this.view.active_sheet.header_offset.y*this.scale},o=this.view.active_sheet.freeze;o.rows&&o.columns?(this.row_header_annotations.style.display="block",this.column_header_annotations.style.display="block",this.corner_annotations.style.display="block"):o.rows?(this.row_header_annotations.style.display="block",this.column_header_annotations.style.display="none",this.corner_annotations.style.display="none"):o.columns?(this.row_header_annotations.style.display="none",this.column_header_annotations.style.display="block",this.corner_annotations.style.display="none"):(this.row_header_annotations.style.display="none",this.column_header_annotations.style.display="none",this.corner_annotations.style.display="none"),this.row_header_annotations.style.width=`${r}px`,this.corner_annotations.style.height=this.row_header_annotations.style.height=`${s-a.y}px`,this.corner_annotations.style.top=this.row_header_annotations.style.top=`${a.y}px`,this.column_header_annotations.style.width=this.corner_annotations.style.width=`${n-a.x}px`,this.column_header_annotations.style.height=`${i}px`,this.corner_annotations.style.left=this.column_header_annotations.style.left=`${a.x}px`,this.corner_selection.style.display="block",this.grid_selection.style.width=`${r}px`,this.grid_selection.style.height=`${i}px`,this.grid_selection.style.top=`${this.header_offset.y}px`,this.grid_selection.style.left=`${this.header_offset.x}px`,this.annotation_container.style.width=`${r}px`,this.annotation_container.style.height=`${i}px`,this.annotation_container.style.top=`${this.header_offset.y}px`,this.annotation_container.style.left=`${this.header_offset.x}px`}};var Ft=class{constructor(){this.function_names=[];this.argument_separator=R.argument_separator.charCodeAt(0);this.function_map={}}RemoveFunctions(e){Array.isArray(e)||(e=[e]);let t=Object.keys(this.function_map).map(r=>this.function_map[r]);for(let r of e)t=t.filter(i=>i.name!==r.name);this.SetFunctions(t)}AddFunctions(e){Array.isArray(e)||(e=[e]);let t=Object.keys(this.function_map).map(r=>this.function_map[r]).concat(...e);this.SetFunctions(t)}SetFunctions(e){this.function_map={},this.function_names=e.map(t=>(this.function_map[t.name.toLowerCase()]=t,t.name)).sort((t,r)=>t.toLowerCase().localeCompare(r.toLowerCase()))}NormalizeIdentifier(e){let t=this.function_map[e.toLowerCase()];return t?t.name:void 0}Exec(e){if(e.text[0]!=="=")return{};let t,r={};if(e.cursor===e.text.length&&(t=e.text.match(/(?:^|[^A-Za-z_\d])([A-Za-z_][\w\d_.]*)\s*$/),t)){let s=t[1],n=new RegExp("^"+s.replace(".","\\."),"i");r={completions:this.function_names.filter(o=>n.test(o)).map(o=>this.function_map[o.toLowerCase()]),token:s,position:e.cursor-s.length}}let i=this.ParseTooltip(e.text.substr(0,e.cursor));if(i.function){let s=this.function_map[i.function.toLowerCase()];s&&(r.tooltip='<span class="notranslate">'+s.name+"</span>",r.arguments="("+(s.arguments||[]).map((n,a)=>{let o=n.name||"argument";return a===i.argument?`<span class="active-argument">${o}</span>`:o}).join(R.argument_separator+" ")+")",r.description=s.description?`<span class="function-description">${s.description}</span>`:"",r.function_position=i.position||0)}return r}ParseTooltip(e){let t=[],r=0,i="",s=!1,n=0;for(let o of e){let l=o.charCodeAt(0);if(s)l===34&&(s=!1);else switch(l){case 40:t.push({buffer:i.trim(),argument:r,position:n-i.length}),i="",r=0;break;case this.argument_separator:r++;break;case 41:r=t.pop()?.argument||0;break;case 34:i="",s=!0;break;default:l>=97&&l<=122||l>=65&&l<=90||l>=48&&l<=57||l===95||l===46?i+=o:i=""}n++}let a=t.pop();return{function:a?.buffer||void 0,position:a?.position||0,argument:r}}};var Hs=typeof navigator>"u"?"":navigator.appVersion,Ae=typeof navigator>"u"?"":navigator.userAgent,kr=class{constructor(){this.is_edge=/Edge/.test(Hs);this.is_ipad=/iPad|iPhone/.test(Ae);this.is_android=/android|samsung/i.test(Ae);this.is_mobile=this.is_ipad||this.is_android;this.is_firefox=/firefox/i.test(Ae);this.is_safari=/safari/i.test(Ae)&&!/edg/i.test(Ae);this.is_mac=/macintosh/i.test(Ae);this.is_chrome=/Chrome/i.test(Ae);this.is_windows=/win64|win32|windows\s+nt/i.test(Ae);this.is_modern=!this.is_edge&&!(this.is_firefox&&this.is_android)&&/webkit|firefox/i.test(Ae)}},Bs={is_edge:!1,is_ipad:!1,is_android:!1,is_firefox:!1,is_safari:!1,is_mac:!1,is_chrome:!1,trident:!1,is_windows:!1,is_modern:!0,is_node:!0,is_mobile:!1},q=typeof navigator>"u"?Bs:new kr;var Er=class extends oe{constructor(t,r,i,s,n){super();this.parser=t;this.theme=r;this.model=i;this.view=s;this.autocomplete=n;this.selecting_=!1;this.last_parse_string="";this.dependency_list=[];this.reference_index_map=[];this.last_reconstructed_text="";this.enable_reconstruct=!0;this.selection_={target:{row:0,column:0},area:new v({row:0,column:0})};this.measurement_node=document.createElement("div")}get selecting(){return this.selecting_}get selection(){return this.selection_}set selection(t){if(t){let r=t.target||t.area.start;this.selection_={target:{row:r.row,column:r.column},area:new v(t.area.start,t.area.end)}}else{let r={row:0,column:0};this.selection_={target:r,area:new v(r)}}}UpdateTheme(t){}InsertReference(t,r){if(!this.editor_node)return;if(!this.editor_insert_node){let s=window.getSelection();if(s){let n=s.getRangeAt(0);this.editor_insert_node=document.createElement("span"),n.insertNode(this.editor_insert_node),s.collapseToEnd()}}if(this.editor_insert_node&&(this.editor_insert_node.innerText=t,t.length)){let s=window.getSelection();if(s){let n=document.createRange();n.selectNodeContents(this.editor_insert_node),s.removeAllRanges(),s.addRange(n),s.collapseToEnd()}}let i=this.ListDependencies();this.Publish({type:"update",text:this.editor_node.textContent||void 0,dependencies:i})}Autocomplete(t,r){if(!this.container_node)return;let i;r?.nodeType===Node.ELEMENT_NODE?i=r.getBoundingClientRect():i=this.container_node.getBoundingClientRect();let s=new U(Math.round(i.left),Math.round(i.top),i.width,i.height);this.autocomplete.Show(this.AcceptAutocomplete.bind(this),t,s)}FlushReference(){this.editor_insert_node=void 0}SubstringToCaret(t){let r=window.getSelection();if(!r)throw new Error("error getting selection");if(r.rangeCount===0)return console.warn("range count is 0"),"";let i=r.getRangeAt(0),s=i.cloneRange();return s.selectNodeContents(t),s.setEnd(i.endContainer,i.endOffset),this.measurement_node.textContent="",this.measurement_node.appendChild(s.cloneContents()),this.measurement_node.textContent}UpdateSelectState(t=!1){let r=!1,i=!1;if(!this.editor_node)return;let s=this.editor_node.textContent||"";if(s.trim()[0]==="="){i=!0;let a=this.SubstringToCaret(this.editor_node).trim();if(a.length){let o=a[a.length-1];Er.FormulaChars.some(c=>o===c)&&(r=!0);let l=this.autocomplete_matcher;l&&re().then(()=>{let c=l.Exec({text:s,cursor:a.length}),h=this.NodeAtIndex(c.completions?c.position||0:c.function_position||0);this.Autocomplete(c,h)})}}r!==this.selecting_?(this.selecting_=r,r||this.Reconstruct(),(t||!r)&&this.Publish({type:"end-selection"})):r&&t&&this.Publish({type:"end-selection"});let n=i?this.ListDependencies():void 0;this.Publish({type:"update",text:s,dependencies:n})}NodeAtIndex(t){let r=this.editor_node?.childNodes||[];for(let i=0;i<r.length;i++){let s=r[i].textContent?.length||0;if(s>t)return r[i];t-=s}}Reconstruct(){if(!this.enable_reconstruct||!this.editor_node||(this.ParseDependencies(),!this.reference_list))return;let t=this.editor_node.textContent||"";if(t.trim()[0]!=="="||(this.editor_node.spellcheck=!1,this.selecting)||t.trim()===this.last_reconstructed_text.trim())return;this.last_reconstructed_text=t;let i=this.SubstringToCaret(this.editor_node).length,s=document.createDocumentFragment(),n,a=0,o,l="";if(this.last_parse_result){let c=0,h="",u=0,m=(f,b,p,g)=>{let _=document.createTextNode(b);if(p==="text")s.appendChild(_);else{let y=document.createElement("span");y.appendChild(_),y.dataset.position=f.toString(),y.dataset.type=p,p==="address"||p==="range"?y.classList.add(`highlight-${this.reference_index_map[u++]%5+1}`):p==="structured-reference"?this.target_address&&g?.type==="structured-reference"&&this.model.ResolveStructuredReference(g,this.target_address)&&y.classList.add(`highlight-${this.reference_index_map[u++]%5+1}`):p==="identifier"&&this.model.named_ranges.Get(b)&&y.classList.add(`highlight-${this.reference_index_map[u++]%5+1}`),s.appendChild(y)}return i>=f&&i<f+b.length&&(n=_,a=i-f),_};this.last_parse_result.expression&&this.parser.Walk(this.last_parse_result.expression,f=>{switch(f.type){case"address":case"range":case"call":case"identifier":case"structured-reference":f.position!==c-1&&m(c,t.substring(c,f.position+1),"text"),f.type==="call"||f.type==="identifier"?h=f.name:h=this.last_parse_string.substring(f.position+1,f.position+f.label.length+1),m(f.position+1,h,f.type,f),c=f.position+h.length+1;break}return f.type!=="range"}),l=t.substring(c)||"",o=m(c,l,"text")}if(!n)if(t.length===i){let c=document.createElement("span");s.appendChild(c),n=c,a=0}else n=o,a=Math.max(0,l.length-(t.length-i));if(this.editor_node.textContent="",this.editor_node.appendChild(s),n){let c=document.createRange(),h=window.getSelection();h&&(c.setStart(n,a),c.setEnd(n,a),c.collapse(!0),h.removeAllRanges(),h.addRange(c))}}ParseDependencies(){if(!this.editor_node)return;let t=this.editor_node.textContent||"";if(t!==this.last_parse_string||!this.reference_list){let r={};for(let i of this.model.sheets.list)r[i.name.toLowerCase()]=i.id;if(this.dependency_list=[],this.reference_index_map=[],t){let i=this.parser.Parse(t);if(this.last_parse_string=t,this.last_parse_result=i,this.reference_list=[],i.full_reference_list)for(let s of i.full_reference_list)if(s.type==="address"||s.type==="range"){let n=s.type==="address"?s:s.start;n.sheet_id||(n.sheet?n.sheet_id=r[n.sheet.toLowerCase()]||0:n.sheet_id=this.view.active_sheet.id),this.reference_list.push(s)}else if(s.type==="structured-reference")if(this.target_address){let n=this.model.ResolveStructuredReference(s,this.target_address);n&&this.reference_list.push(n)}else console.info("target address not set");else{let n=this.model.named_ranges.Get(s.name);n&&(n.count===1?this.reference_list.push({type:"address",...n.start,label:s.name,position:s.position,id:s.id}):this.reference_list.push({type:"range",start:{type:"address",position:s.position,id:s.id,label:s.name,...n.start},end:{type:"address",position:s.position,label:s.name,id:s.id,...n.end},label:s.name,position:s.position,id:s.id}))}if(this.reference_list){this.reference_list.sort((s,n)=>s.position-n.position);for(let s of this.reference_list){let n;s.type==="address"?n=new v({row:s.row,column:s.column,sheet_id:s.sheet_id}):n=new v({row:s.start.row,column:s.start.column,sheet_id:s.start.sheet_id},{row:s.end.row,column:s.end.column});let a=n.spreadsheet_label;this.dependency_list.some((o,l)=>o.spreadsheet_label===a&&o.start.sheet_id===n.start.sheet_id?(this.reference_index_map.push(l),!0):!1)||(this.reference_index_map.push(this.dependency_list.length),this.dependency_list.push(n))}}}else this.reference_list=void 0}}ListDependencies(){return this.ParseDependencies(),this.dependency_list||[]}AcceptAutocomplete(t){if(!this.editor_node)return;let r=window.getSelection(),i=0;if(t.data&&t.data.completions){for(let c of t.data.completions)if(c.name.toLowerCase()===t.value?.toLowerCase()){i=c.type||0;break}}if(!r)throw new Error("error getting selection");let s=r.getRangeAt(0),n=s.cloneRange(),a=document.createElement("div");n.selectNodeContents(this.editor_node),n.setEnd(s.endContainer,s.endOffset),a.appendChild(n.cloneContents());let o=(a.textContent||"").substr(0,t.data?t.data.position:0)+t.value,l=i===1?o:o+"(";this.editor_node.textContent=l,this.autocomplete.Hide(),q.is_firefox||this.Reconstruct(),r=window.getSelection(),s=document.createRange(),this.editor_node?.lastChild&&s.setStartAfter(this.editor_node.lastChild),s.collapse(!0),r?.removeAllRanges(),r?.addRange(s),this.selecting_=!0,t.click&&this.UpdateSelectState()}},Fe=Er;Fe.FormulaChars=("$^&*(-+={[<>/~%"+R.argument_separator).split("");var Gt=class extends Fe{constructor(t,r,i,s,n,a){super(r,i,s,n,a);this.container=t;this.scale=1;this._editing=!1;this.edit_container=t.querySelector(".treb-overlay-container"),this.edit_node=this.edit_container.querySelector(".treb-overlay-editor"),q.is_firefox&&this.edit_node.classList.add("firefox"),this.edit_node.inputMode="none",this.edit_node.addEventListener("input",o=>{if(o instanceof InputEvent&&o.isComposing)return;let l=this.edit_node.firstChild;l&&l.tagName==="BR"&&this.edit_node.removeChild(l),this.editing&&(this.Reconstruct(),this.UpdateSelectState())}),this.edit_node.addEventListener("keyup",o=>{if(!(o.isComposing||!this.editing||this.autocomplete.HandleKey("keyup",o).handled)){if(this.selecting_)switch(o.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"Shift":case"Control":return}this.FlushReference(),this.UpdateSelectState(!0)}}),this.edit_inset=this.edit_container.querySelector(".treb-overlay-inset"),this.editor_node=this.edit_node,this.container_node=this.edit_container,this.ClearContents()}get editing(){return this._editing}set editing(t){this._editing!==t&&(this._editing=t,t?(this.edit_container.style.opacity="1",this.edit_container.style.pointerEvents="initial"):(this.edit_container.style.opacity="0",this.edit_container.style.pointerEvents="none"))}UpdateCaption(t=""){this.edit_node.setAttribute("aria-label",t)}Focus(t=""){this.edit_node!==document.activeElement&&(this.edit_container.style.top=`${this.container.scrollTop+this.view.active_sheet.header_offset.y}px`,this.edit_container.style.left=`${this.container.scrollLeft+this.view.active_sheet.header_offset.x}px`),this.edit_node.focus(),this.UpdateCaption(t)}CloseEditor(){this.editing=!1,this.ClearContents(),this.edit_node.spellcheck=!0,this.autocomplete.Hide(),this.active_cell=void 0}ClearContents(){q.is_firefox?this.edit_node.innerHTML="<span></span>":this.edit_node.textContent=""}Edit(t,r,i,s,n){this.Publish({type:"start-editing",editor:"ice"}),this.active_cell=i,this.target_address={...t.target};let a=i.style||{};switch(this.edit_node.style.font=k.Font(a,this.scale),this.edit_node.style.color=T(this.theme,a.text,1),this.edit_inset.style.backgroundColor=T(this.theme,a.fill,0),a.horizontal_align){case k.HorizontalAlign.Right:this.edit_container.classList.remove("align-center","align-left"),this.edit_container.classList.add("align-right");break;case k.HorizontalAlign.Center:this.edit_container.classList.remove("align-right","align-left"),this.edit_container.classList.add("align-center");break;default:this.edit_container.classList.remove("align-right","align-center"),this.edit_container.classList.add("align-left");break}this.edit_node.style.paddingBottom=`${Math.max(0,(self.devicePixelRatio||1)-1)}px`;let o=s?.toString()||"";if(o&&o[0]==="="&&(this.edit_node.spellcheck=!1),this.autocomplete.ResetBlock(),this.FlushReference(),this.selection=t,typeof s<"u"){let l=o[0]!=="="&&o[o.length-1]==="%",c=o.length;this.edit_node.textContent=o;{let h=document.createRange(),u=window.getSelection();if(!u)throw new Error("invalid selection object");this.edit_node.lastChild&&(l?(h.setStart(this.edit_node.lastChild,c-1),h.setEnd(this.edit_node.lastChild,c-1)):h.setStartAfter(this.edit_node.lastChild)),h.collapse(!0),u.removeAllRanges(),u.addRange(h)}if(!n){let h=this.ListDependencies();this.Publish({type:"update",text:s.toString(),dependencies:h})}}r.ApplyStyle(this.edit_container),this.editing=!0,re().then(()=>{this.last_reconstructed_text="",this.Reconstruct()})}HandleKeyDown(t){if(!this.editing)return 0;let r=this.autocomplete.HandleKey("keydown",t);if(r.accept&&this.AcceptAutocomplete(r),r.handled)return 1;switch(t.key){case"Enter":case"Tab":return this.selecting_=!1,2;case"Escape":case"Esc":return this.selecting_=!1,3;case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"Up":case"Down":case"Left":case"Right":return this.selecting_?0:1}return 1}UpdateTheme(t){this.scale=t}};var Rr=class{constructor(){this.cache={};typeof document<"u"&&(this.canvas=document.createElement("canvas"))}Flush(){this.cache={}}Get(e,t=10){let r=e+";"+t,i=this.cache[r];return i||(i=this.Measure(e,t),this.cache[r]=i,i)}Measure(e,t){let r=e.match(/([\d.]+)((?:%|em))/);if(r){let u=r[1]+r[2],m=Number(r[1])*t;r[2]==="%"&&(m/=100),e=e.replace(u,m+"px")}let i=this.canvas.getContext("2d",{willReadFrequently:!0});if(!i)throw new Error("invalid context");i.font=e;let s=i.measureText("MMM"),n=Math.ceil(s.width);if(this.canvas.setAttribute("width",n.toString()),this.canvas.setAttribute("height",n.toString()),i=this.canvas.getContext("2d",{willReadFrequently:!0}),!i)throw new Error("invalid context");i.font=e,i.textAlign="center",i.textBaseline="alphabetic",i.fillStyle="#000";let a=Math.round(n*2/3),o=Math.round(n/2);i.clearRect(0,0,n,n);for(let u=32;u<=126;u++){let m=String.fromCharCode(u);i.fillText(m,o,a)}let l=i.getImageData(0,0,this.canvas.width,this.canvas.height).data,c=Math.floor(this.GetFirstIndex(l)/n),h=Math.floor(this.GetLastIndex(l)/n);return{ascender:a-c,descender:h-a,block:h-c+1,paren:i.measureText("(").width,hash:i.measureText("##").width-i.measureText("#").width}}GetFirstIndex(e){for(let t=3,r=e.length;t<r;t+=4)if(e[t]>0)return(t-3)/4;return e.length}GetLastIndex(e){for(let t=e.length-1;t>=3;t-=4)if(e[t]>0)return t/4;return 0}},Ht=new Rr;var Tr="bottom",Ci=/webkit/i.test(typeof navigator>"u"?"":navigator?.userAgent||"")?1:0,Bt=class{constructor(e,t,r,i,s){this.theme=e;this.layout=t;this.model=r;this.view=i;this.options=s;this.cell_edge_buffer=4;this.overflow_areas=[];this.buffer_canvas_size={width:256,height:256};this.buffer_canvas=t.buffer_canvas,this.buffer_canvas.width=this.buffer_canvas_size.width,this.buffer_canvas.height=this.buffer_canvas_size.height;let n=this.buffer_canvas.getContext("2d",{alpha:!1});if(n){let a=this.layout.dpr;this.buffer_context=n,this.buffer_context.setTransform(a,0,0,a,0,0),this.buffer_context.textAlign="left",this.buffer_context.textBaseline=Tr}}FlushOverflows(){this.view.active_sheet.cells.IterateAll(t=>{t.renderer_data?.overflowed&&(t.renderer_data=void 0,t.render_clean[this.view.view_index]=!1)});for(let t of this.overflow_areas)t.tile.dirty=!0;this.overflow_areas=[]}MeasureText(e,t){let r=this.layout.grid_tiles[0][0].getContext("2d",{alpha:!1});if(!r)throw new Error("invalid context");return t&&(r.font=t),r.measureText(e)}EnsureBuffer(e=0,t=0,r=0){let i=this.layout.dpr;if(e=e*i,t=t*i,r=r*i,e>this.buffer_canvas_size.width||t>this.buffer_canvas_size.height){this.buffer_canvas_size.width=Math.max(Math.ceil(e/256)*256,this.buffer_canvas_size.width),this.buffer_canvas_size.height=Math.max(Math.ceil(t/256)*256,this.buffer_canvas_size.height),this.buffer_canvas.width=this.buffer_canvas_size.width,this.buffer_canvas.height=this.buffer_canvas_size.height;let s=this.buffer_canvas.getContext("2d",{alpha:!1});s&&(this.buffer_context=s,this.buffer_context.textAlign="left",this.buffer_context.textBaseline=Tr)}this.buffer_context.setTransform(i,0,0,i,r,0)}OverflowDirty(e=!1){let t=[];for(let r of this.overflow_areas){let i=r.area.start.row,s=e;if(!s)for(let n=r.area.start.column;!s&&n<=r.area.end.column;n++){let a=this.view.active_sheet.cells.GetCell({row:i,column:n},!1);s=!!(a&&!a.render_clean[this.view.view_index])}if(s){for(let n=r.area.start.column;n<=r.area.end.column;n++){let a=this.view.active_sheet.cells.GetCell({row:i,column:n},!1);a&&(a.render_clean[this.view.view_index]=!1,a.renderer_data&&a.renderer_data.overflowed&&(a.renderer_data=void 0))}r.tile.dirty=!0}else t.push(r)}this.overflow_areas=t}RenderCorner(){let t=this.layout.corner_canvas.getContext("2d",{alpha:!1});if(!t)throw new Error("invalid context");let r=Ht.Get(k.Font(this.theme.headers||{},this.layout.scale)),i=this.layout.dpr,s=this.layout.header_offset,n=s.x;for(let o=0;o<this.view.active_sheet.freeze.columns;o++)n+=this.layout.ColumnWidth(o);let a=s.y;for(let o=0;o<this.view.active_sheet.freeze.rows;o++)a+=this.layout.RowHeight(o);t.setTransform(i,0,0,i,0,0),t.fillStyle=this.theme.headers?.fill?T(this.theme,this.theme.headers.fill):"",t.fillRect(0,0,n,s.y),t.fillRect(0,0,s.x,a),t.strokeStyle=this.theme.headers_grid_color||"",t.beginPath(),t.moveTo(s.x-.5,0),t.lineTo(s.x-.5,s.y),t.moveTo(0,s.y-.5),t.lineTo(s.x,s.y-.5),t.stroke(),!(!this.view.active_sheet.freeze.columns&&!this.view.active_sheet.freeze.rows)&&(t.strokeStyle=this.theme.grid_color||"",t.beginPath(),a!==s.y&&(t.moveTo(s.x-.5,s.y),t.lineTo(s.x-.5,a)),n!==s.x&&(t.moveTo(s.x,s.y-.5),t.lineTo(n,s.y-.5)),t.stroke(),t.strokeStyle=this.theme.headers_grid_color||"",t.textAlign="center",t.textBaseline="middle",t.font=k.Font(this.theme.headers||{},this.layout.scale),t.fillStyle=T(this.theme,this.theme.headers?.text),this.view.active_sheet.freeze.rows&&this.layout.header_offset.x>1&&(t.setTransform(i,0,0,i,0,0),t.translate(0,s.y),t.beginPath(),t.moveTo(0,0-.5),t.lineTo(s.x,0-.5),t.stroke(),this.RenderRowLabels(t,0,this.view.active_sheet.freeze.rows-1,r.block)),this.view.active_sheet.freeze.columns&&this.layout.header_offset.y>1&&(t.setTransform(i,0,0,i,0,0),t.translate(s.x,0),t.beginPath(),t.moveTo(0-.5,0),t.lineTo(0-.5,s.y),t.stroke(),this.RenderColumnLabels(t,0,this.view.active_sheet.freeze.columns-1)))}RenderColumnLabels(e,t,r){let i=this.layout.header_offset.y;for(e.fillStyle=T(this.theme,this.theme.headers?.text,0),e.beginPath();t<=r;t++){let s=this.layout.ColumnWidth(t),n=v.ColumnToLabel(t),a=e.measureText(n);s>a.width&&e.fillText(n,s/2,i/2+1),e.moveTo(s-.5,0),e.lineTo(s-.5,i),e.translate(s,0)}e.stroke()}RenderRowLabels(e,t,r,i){let s=this.layout.header_offset.x;for(e.fillStyle=T(this.theme,this.theme.headers?.text,0),e.beginPath();t<=r;t++){let n=this.layout.RowHeight(t);n>=i*1.2&&e.fillText(`${t+1}`,s/2,n/2+1),e.moveTo(0,n-.5),e.lineTo(s,n-.5),e.translate(0,n)}e.stroke()}RenderHeaders(e,t=!1){let r=this.layout.dpr,i=this.layout.header_offset,s=Ht.Get(k.Font(this.theme.headers||{},this.layout.scale));for(let n=e.start.column;n<=e.end.column;n++){let a=this.layout.column_header_tiles[n];if(a.dirty||t){let o=a.getContext("2d",{alpha:!1});if(!o)continue;o.setTransform(r,0,0,r,0,0),o.textAlign="center",o.textBaseline="middle",o.font=k.Font(this.theme.headers||{},this.layout.scale),o.fillStyle=this.theme.headers?.fill?T(this.theme,this.theme.headers.fill):"",o.fillRect(0,0,a.logical_size.width,this.layout.header_offset.y),o.strokeStyle=this.theme.headers_grid_color||"",o.beginPath(),o.moveTo(0,i.y-.5),o.lineTo(a.logical_size.width,i.y-.5),o.stroke(),o.strokeStyle=this.theme.headers_grid_color||"",this.RenderColumnLabels(o,a.first_cell.column,a.last_cell.column),a.dirty=!1}}for(let n=e.start.row;n<=e.end.row;n++){let a=this.layout.row_header_tiles[n];if(a.dirty||t){let o=a.getContext("2d",{alpha:!1});if(!o)continue;o.fillStyle=this.theme.headers?.fill?T(this.theme,this.theme.headers.fill):"",o.setTransform(r,0,0,r,0,0),o.textAlign="center",o.textBaseline="middle",o.font=k.Font(this.theme.headers||{},this.layout.scale),o.fillRect(0,0,this.layout.header_offset.x,a.logical_size.height),o.strokeStyle=this.theme.headers_grid_color||"",o.beginPath(),o.moveTo(i.x-.5,0),o.lineTo(i.x-.5,a.logical_size.height),o.stroke(),o.strokeStyle=this.theme.headers_grid_color||"",this.RenderRowLabels(o,a.first_cell.row,a.last_cell.row,s.block),a.dirty=!1}}(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&this.RenderCorner()}CopyToAdjacent(e,t,r,i,s,n,a){let o=this.layout.AdjacentTile(e,i,r);if(!o)return;let l=s,c=n;r>0?l=s-(e.pixel_end.x-e.pixel_start.x)*t:r<0&&(l=s+(o.pixel_end.x-o.pixel_start.x)*t),i>0&&(c=n-(e.pixel_end.y-e.pixel_start.y)*t);let h=o.getContext("2d",{alpha:!1});h&&(h.setTransform(t,0,0,t,l,c),h.drawImage(this.buffer_canvas,0,0,(a.width||0)*t,(a.height||0)*t,a.left||0,0,a.width||0,a.height||0))}Render(e){let t=e.getContext("2d",{alpha:!1});if(!t)return;t.textBaseline=Tr;let r=this.layout.dpr;t.setTransform(r,0,0,r,0,0);let i=0,s=0;for(let o=e.first_cell.column;o<=e.last_cell.column;o++){let l=this.layout.ColumnWidth(o);if(l){s=0;for(let c=e.first_cell.row;c<=e.last_cell.row;c++){let h=this.layout.RowHeight(c);if(h){t.setTransform(r,0,0,r,i,s);let u=this.view.active_sheet.CellData({row:c,column:o});if(e.needs_full_repaint||!u.render_clean[this.view.view_index]){let m=this.RenderCell(e,u,t,{row:c,column:o},l,h,e.pixel_start.x+i,e.pixel_start.y+s);m.tile_overflow_right&&this.CopyToAdjacent(e,r,1,0,i,s,m),m.tile_overflow_left&&this.CopyToAdjacent(e,r,-1,0,i,s,m),m.tile_overflow_bottom&&this.CopyToAdjacent(e,r,0,1,i,s,m)}}s+=h*r}i+=l*r}}if(!this.view.active_sheet.freeze.rows&&!this.view.active_sheet.freeze.columns)return;let n=0,a=0;if(e.first_cell.row<=this.view.active_sheet.freeze.rows-1)for(let o=e.first_cell.row;o<this.view.active_sheet.freeze.rows&&o<=e.last_cell.row;o++)n+=this.layout.RowHeight(o);if(e.first_cell.column<=this.view.active_sheet.freeze.columns-1)for(let o=e.first_cell.column;o<this.view.active_sheet.freeze.columns&&o<=e.last_cell.column;o++)a+=this.layout.ColumnWidth(o);if(n){let o=this.layout.frozen_row_tiles[e.tile_position.column];if(!o)throw new Error("can't find matching header tile");let l=o.getContext("2d",{alpha:!0});if(!l)throw new Error("header context failed");l.setTransform(r,0,0,r,0,0),l.drawImage(e,0,0,e.logical_size.width*r,n*r,0,0,e.logical_size.width,n)}if(a){let o=this.layout.frozen_column_tiles[e.tile_position.row];if(!o)throw new Error("can't find matching header tile");let l=o.getContext("2d",{alpha:!0});if(!l)throw new Error("header context failed");l.setTransform(r,0,0,r,0,0),l.drawImage(e,0,0,a*r,e.logical_size.height*r,0,0,a,e.logical_size.height)}if(a&&n){let o=this.layout.corner_canvas.getContext("2d",{alpha:"false"});if(!o)throw new Error("corner context failed");o.setTransform(r,0,0,r,this.layout.header_offset.x*r,this.layout.header_offset.y*r),o.drawImage(e,0,0,a*r,n*r,0,0,a,n)}}PrepText(e,t,r,i){let s=[],n=r.style||{},a,o=0,l,c=r.editing?"":r.formatted;if(Array.isArray(c)){for(let h of c){if(h.flag===6){l=h.text;continue}let u=e.measureText(h.text).width,m={width:u,text:h.text,hidden:h.flag===1};s.push(m),h.flag===2?a=m:o+=u}if(a){let h=a.text,u=a.width,m=i-o-2*this.cell_edge_buffer;if(a.width=Math.max(0,m),m>0){let f=Math.floor(m/u);for(let b=1;b<f;b++)a.text+=h;o=i-2*this.cell_edge_buffer}else a.text=""}return{strings:[s],format:l,width:o}}else if(c){r.type===2&&c[0]==="'"&&(c=c.slice(1));let h;this.options.markdown?h=we.instance.Parse(c):(h=we.instance.Dummy(c),e.font=t.base);let u=0,m=i-2*this.cell_edge_buffer,f=[];if(n.wrap)for(let b of h){for(let g=1;g<b.length;g++){let _=b[g].text.match(/^(\s+)/);_&&(b[g-1].text+=_[1],b[g].text=b[g].text.replace(/^\s+/,""))}let p=[];for(let g of b){this.options.markdown&&(g.strong&&g.emphasis?e.font=t.strong_emphasis:g.strong?e.font=t.strong:g.emphasis?e.font=t.emphasis:e.font=t.base);let _=g.text.match(/\S+\s*/g);if(_&&_.length)for(let y of _){let x=e.measureText(y.trim()).width,w=e.measureText(y).width;p.push({part:g,text:y,trimmed:x,width:w})}}for(;p.length;){let g=p.shift(),_=[g],y=g.trimmed;for(;y<m&&p.length;){let x=p[0],w=y-g.trimmed+g.width+x.trimmed;if(w>=m)break;g=x,_.push(x),y=w,p.shift()}g.text=g.text.trim(),g.width=g.trimmed,f.push(_.map(x=>({...x.part,hidden:!1,width:x.width,text:x.text})))}}else for(let b of h){let p=[],g=0;for(let _ of b){this.options.markdown&&(_.strong&&_.emphasis?e.font=t.strong_emphasis:_.strong?e.font=t.strong:_.emphasis?e.font=t.emphasis:e.font=t.base);let y=e.measureText(_.text).width;g+=y,p.push({..._,hidden:!1,width:y})}u=Math.max(u,g),f.push(p)}return{strings:f,width:u}}return{strings:[[{text:"",hidden:!1,width:0}]],width:0}}ResolveColors(e){let t={...e};return t.text={text:T(this.theme,e.text,1)},t}RenderCellBorders(e,t,r,i=0,s=0,n=0,a=0){let o=this.view.active_sheet.SurroundingStyle(e,this.theme.table),l=T(this.theme,o[8].fill);l&&(t.fillStyle=l,t.fillRect(i+0,s-1,n,1)),l=T(this.theme,o[4].fill),l&&(t.fillStyle=l,t.fillRect(i-1,s,1,a)),l=T(this.theme,r.fill),l&&(t.fillStyle=l,t.fillRect(i-1,s-1,n+1,a+1)),l=T(this.theme,o[6].fill),l&&(t.fillStyle=l,t.fillRect(i+n-1,s-1,1,a+1)),l=T(this.theme,o[2].fill),l&&(t.fillStyle=l,t.fillRect(i-1,s+a-1,n+1,1)),o[6].border_top&&!o[6].border_left&&(t.fillStyle=T(this.theme,o[6].border_top_fill,1),t.fillRect(i+n-1,s-2+o[6].border_top,1,1)),o[9].border_left&&(t.fillStyle=T(this.theme,o[9].border_left_fill,1),t.fillRect(i+n-1,s-1,1,1)),o[9].border_bottom&&(t.fillStyle=T(this.theme,o[9].border_bottom_fill,1),t.fillRect(i+n-1,s-2+o[9].border_bottom,1,1)),o[4].border_top&&!o[4].border_right&&(t.fillStyle=T(this.theme,o[4].border_right_fill,1),t.fillRect(i-1,s-2+o[4].border_top,1,1)),o[7].border_right&&(t.fillStyle=T(this.theme,o[7].border_right_fill,1),t.fillRect(i-1,s-1,1,1)),o[7].border_bottom&&(t.fillStyle=T(this.theme,o[7].border_bottom_fill,1),t.fillRect(i-1,s-2+o[7].border_bottom,1,1)),o[6].border_bottom&&!o[6].border_left&&(t.fillStyle=T(this.theme,o[6].border_bottom_fill,1),t.fillRect(i+n-1,s+a-o[6].border_bottom,1,1)),o[3].border_left&&(t.fillStyle=T(this.theme,o[3].border_left_fill,1),t.fillRect(i+n-1,s+a-1,1,1)),o[3].border_top&&(t.fillStyle=T(this.theme,o[3].border_top_fill,1),t.fillRect(i+n-1,s+a-o[3].border_top,1,1)),o[4].border_bottom&&!o[4].border_right&&(t.fillStyle=T(this.theme,o[4].border_bottom_fill,1),t.fillRect(i-1,s+a-o[4].border_bottom,1,1)),o[1].border_right&&(t.fillStyle=T(this.theme,o[1].border_right_fill,1),t.fillRect(i-1,s+a-1,1,1)),o[1].border_top&&(t.fillStyle=T(this.theme,o[1].border_top_fill,1),t.fillRect(i-1,s+a-o[1].border_top,1,1)),o[8].border_bottom&&(t.fillStyle=T(this.theme,o[8].border_bottom_fill,1),o[8].border_bottom===2&&(t.fillRect(i-1,s-2,n+1,1),t.fillRect(i-1,s-0,n+1,1),t.fillStyle=T(this.theme,o[8].fill)||fe(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,s-1,n+1,1)),o[4].border_right&&(t.fillStyle=T(this.theme,o[4].border_right_fill,1),t.fillRect(i-1,s-1,1,a+1)),o[6].border_left&&(t.fillStyle=T(this.theme,o[4].border_left_fill,1),t.fillRect(i+n-1,s-1,1,a+1)),o[2].border_top&&(t.fillStyle=T(this.theme,o[2].border_top_fill,1),o[2].border_top===2&&(t.fillRect(i-1,s+a-2,n+1,1),t.fillRect(i-1,s+a-0,n+1,1),t.fillStyle=T(this.theme,o[2].fill)||fe(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,s+a-1,n+1,1)),r.border_top&&(t.fillStyle=T(this.theme,r.border_top_fill,1),r.border_top===2&&(t.fillRect(i-1,s-2,n+1,1),t.fillRect(i-1,s+0,n+1,1),t.fillStyle=T(this.theme,r.fill)||fe(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,s-1,n+1,1)),r.border_left&&(t.fillStyle=T(this.theme,r.border_left_fill,1),t.fillRect(i-1,s-1,1,a+1)),r.border_right&&(t.fillStyle=T(this.theme,r.border_right_fill,1),t.fillRect(i+n-1,s-1,1,a+1)),r.border_bottom&&(t.fillStyle=T(this.theme,r.border_bottom_fill,1),r.border_bottom===2&&(t.fillRect(i-1,s+a-2,n+1,1),t.fillRect(i-1,s+a+0,n+1,1),t.fillStyle=T(this.theme,r.fill)||fe(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,s+a-1,n+1,1))}PaintBackgroundImage(e,t,r,i,s,n,a=0,o=0,l=0){if(!t.width||!t.height)return;let c=(this.layout.scale||1)*this.layout.dpr,h=r/c%t.width,u=i/c%t.height,m=s/c,f=n/c,b=h+m>t.width,p=u+f>t.height;b&&e.drawImage(t,h-t.width,u,m,f,a,o,s-l,n-l),p&&e.drawImage(t,h,u-t.height,m,f,a,o,s-l,n-l),b&&p&&e.drawImage(t,h-t.width,u-t.height,m,f,a,o,s-l,n-l),e.drawImage(t,h,u,m,f,a,o,s-l,n-l)}RenderCellBackground(e,t,r,i,s,n,a=0,o=0){if(r.fillStyle=this.theme.grid_color,r.fillRect(0,0,s,n),this.view.active_sheet.image)this.PaintBackgroundImage(r,this.view.active_sheet.image,a,o,s,n,0,0,1);else{let l=T(this.theme,i.fill);l?(r.fillStyle=l,r.fillRect(0,0,s-1,n-1)):(r.fillStyle=fe(this.theme,this.theme.grid_cell?.fill)||"#fff",r.fillRect(0,0,s-1,n-1))}this.RenderCellBorders(t,r,i,0,0,s,n),e&&(r.fillStyle=this.theme.note_marker_color,r.beginPath(),r.moveTo(s-2,1),r.lineTo(s-2-8,1),r.lineTo(s-2,1+8),r.lineTo(s-2,1),r.fill())}RenderCell(e,t,r,i,s,n,a=0,o=0){let l={},c=!t.render_clean[this.view.view_index];if(t.render_clean[this.view.view_index]=!0,e.needs_full_repaint&&t.renderer_data?.overflowed)return{};let h=t.style?{...t.style}:{};if(t.table&&(h=this.view.active_sheet.CellStyleData(i,t.table.theme||this.theme.table)||{}),t.merge_area)if(i.row===t.merge_area.start.row&&i.column===t.merge_area.start.column){for(let C=t.merge_area.start.column+1;C<=t.merge_area.end.column;C++)s+=this.layout.ColumnWidth(C);for(let C=t.merge_area.start.row+1;C<=t.merge_area.end.row;C++)n+=this.layout.RowHeight(C);if(t.merge_area.count>1){let C=this.view.active_sheet.CellStyleData(t.merge_area.end);C&&(h.border_bottom=C.border_bottom,h.border_right=C.border_right,h.border_bottom_fill=C.border_bottom_fill,h.border_right_fill=C.border_right_fill)}t.merge_area.end.column>e.last_cell.column&&(l.tile_overflow_right=!0),t.merge_area.end.row>e.last_cell.row&&(l.tile_overflow_bottom=!0),(l.tile_overflow_bottom||l.tile_overflow_right)&&this.overflow_areas.push({tile:e,head:{...i},area:new v(t.merge_area.start,t.merge_area.end)})}else return{};let u=!!t.hyperlink;if(t.render_function){this.RenderCellBackground(!!t.note,i,r,h,s,n),r.strokeStyle=r.fillStyle=T(this.theme,h.text,1);let C=this.ResolveColors(h);if(t.render_function.call(void 0,{width:s,height:n,context:r,cell:t,style:C,scale:this.layout.scale||1}).handled)return l}let m={base:k.Font(h,this.layout.scale),strong:k.Font({...h,bold:!0},this.layout.scale),emphasis:k.Font({...h,italic:!0},this.layout.scale),strong_emphasis:k.Font({...h,bold:!0,italic:!0},this.layout.scale)};if(r.font=m.base,c||!t.renderer_data||t.renderer_data.width!==s||t.renderer_data.height!==n){let C=this.PrepText(r,m,t,s);t.renderer_data={text_data:C,width:s,height:n}}let f=t.renderer_data.text_data,b=f.width>s-2*this.cell_edge_buffer,p=s,g=0,_=!1,y=t.type===3||t.calculated_type===3||t.type===7||t.calculated_type===7||t.type===9||t.calculated_type===9,x=h.horizontal_align;x||(x=y?k.HorizontalAlign.Right:k.HorizontalAlign.Left);let w=[];if(b)if(t.type!==3&&t.calculated_type!==3&&!h.wrap&&!t.merge_area){let K=f.width-s+this.cell_edge_buffer,se=0,ne=0;x===k.HorizontalAlign.Center?se=ne=K/2:x===k.HorizontalAlign.Right?se=K:ne=K;let J=i.column,X=i.column;for(;ne>0&&J<this.layout.last_column;){J++;let Q={row:i.row,column:J},N=this.view.active_sheet.CellData(Q),B=this.layout.ColumnWidth(J);if(ne-=B,N&&!N.type&&!N.calculated_type)w.push({address:Q,cell:N,grid:new U(p,0,B,n),background:new U(p-1,0,B,n-1),border:new U(p,0,B,n)}),p+=B,N.render_clean[this.view.view_index]=!0,N.renderer_data={overflowed:!0};else{_=!0;break}}for(J>e.last_cell.column&&(l.tile_overflow_right=!0);se>0&&X>=1;){X--;let Q={row:i.row,column:X},N=this.view.active_sheet.CellData(Q),B=this.layout.ColumnWidth(X);if(se-=B,N&&!N.type&&!N.calculated_type)g-=B,w.push({address:Q,cell:N,grid:new U(g,0,B,n),background:new U(g,0,B,n-1),border:new U(g,0,B,n)});else{_=!0;break}}X<e.first_cell.column&&(l.tile_overflow_left=!0),this.overflow_areas.push({head:{...i},tile:e,area:new v({row:i.row,column:X},{row:i.row,column:J})})}else _=!y;let A=!1,S=r;(l.tile_overflow_bottom||l.tile_overflow_left||l.tile_overflow_right)&&(A=!0,l.width=p-g,l.height=n,l.left=g,this.EnsureBuffer(l.width+1,n+1,-g),r=this.buffer_context,r.font=m.base),this.RenderCellBackground(!!t.note,i,r,h,s,n,a,o);for(let C of w)C.cell.style?.fill&&(C.cell.style.fill.text||C.cell.style.fill.theme||C.cell.style.fill.theme===0)&&!this.options.grid_over_background?(r.fillStyle=fe(this.theme,C.cell.style.fill),r.fillRect(C.grid.left,C.grid.top,C.grid.width,C.grid.height)):(r.fillStyle=this.theme.grid_color||"",r.fillRect(C.grid.left,C.grid.top,C.grid.width,C.grid.height),this.view.active_sheet.image?this.PaintBackgroundImage(r,this.view.active_sheet.image,a+C.background.left,o+C.background.top,C.background.width,C.background.height,C.background.left,C.background.top,0):(r.fillStyle=this.theme.grid_cell?.fill?fe(this.theme,this.theme.grid_cell.fill):"",r.fillRect(C.background.left,C.background.top,C.background.width,C.background.height))),C.cell.style&&this.RenderCellBorders(C.address,r,C.cell.style,C.border.left,C.border.top,C.border.width,C.border.height);let E=Ht.Get(m.base,this.theme.grid_cell?.font_size?.value);r.lineWidth=1,r.strokeStyle=r.fillStyle=f.format?f.format:T(this.theme,h.text,1),r.beginPath();let F=this.cell_edge_buffer,$=1.25,te=f.strings.length,me=te*E.block*$;_=(_||me>=n)&&!A,_&&(r.save(),r.beginPath(),r.moveTo(g+1.5,0),r.lineTo(g+1.5,n),r.lineTo(p-1.5,n),r.lineTo(p-1.5,0),r.clip()),r.beginPath();let ie=Math.round(n-2-E.block*$*(te-1)+Ci);switch(h.vertical_align){case k.VerticalAlign.Top:ie=Math.round(E.block*$)+1;break;case k.VerticalAlign.Middle:ie=Math.round((n-me)/2+E.block*$);break}if((t.type===3||t.calculated_type===3||t.type===7||t.calculated_type===7)&&b){let C=Math.floor((s-2*this.cell_edge_buffer)/E.hash),K="";for(let ne=0;ne<C;ne++)K+="#";let se=r.measureText(K).width;x===k.HorizontalAlign.Center?F=Math.round((s-se)/2):x===k.HorizontalAlign.Right&&(F=s-this.cell_edge_buffer-se),r.fillText(K,F,ie)}else{let C=ie,K=0;for(let se of f.strings){let ne=0;for(let N of se)ne+=N.width;x===k.HorizontalAlign.Center?F=Math.round((s-ne)/2):x===k.HorizontalAlign.Right&&(F=s-this.cell_edge_buffer-ne);let J=Math.floor(C+1.5-E.descender-Ci)+.5,X=Math.floor(C-E.descender-E.ascender/2)+.5,Q=F;for(let N of se)N.strong&&N.emphasis?r.font=m.strong_emphasis:N.strong?r.font=m.strong:N.emphasis?r.font=m.emphasis:r.font=m.base,N.hidden||(N.text&&r.fillText(N.text,Q,C),h.underline&&(r.moveTo(Q,J),r.lineTo(Q+N.width,J)),(h.strike||N.strike)&&(r.moveTo(Q,X),r.lineTo(Q+N.width,X)),u&&(N.left=Q,N.top=C-E.block,N.height=E.block)),Q+=N.width;K++,C=Math.round(ie+K*E.block*$)}}if(r.stroke(),_)r.restore();else if(A){let C=this.layout.dpr;S.drawImage(this.buffer_canvas,0,0,(l.width||0)*C,n*C,g,0,l.width||0,n)}return l}};var Ot=class extends Fe{constructor(t,r,i,s,n,a,o){super(r,i,s,n,o);this.container=t;this.options=a;this.focused_=!1;this.lines=1;this.last_formula="";this.label_update_timer=0;let l=t.querySelector(".treb-formula-bar");l.removeAttribute("hidden"),this.address_label_container=l.querySelector(".treb-address-label"),this.address_label=this.address_label_container.firstElementChild,this.InitAddressLabel(),this.options.insert_function_button&&(this.button=D.Create("button","formula-button",l),this.button.addEventListener("click",()=>{let c=this.editor_node&&this.editor_node.textContent||"";this.Publish({type:"formula-button",formula:c})})),this.container_node=t.querySelector(".treb-editor-container"),this.editor_node=this.container_node.firstElementChild,this.editor_node.spellcheck=!1,this.editor_node.addEventListener("focusin",()=>{if(!this.editor_node)return;let c=this.editor_node.textContent||"";c[0]==="{"&&c[c.length-1]==="}"&&(c=c.substr(1,c.length-2),this.editor_node.textContent=c,this.last_reconstructed_text=""),this.editor_node.spellcheck=c[0]!=="=",this.autocomplete.ResetBlock(),re().then(()=>{this.Reconstruct()});let h=this.ListDependencies();this.Publish([{type:"start-editing",editor:"formula-bar"},{type:"update",text:c,cell:this.active_cell,dependencies:h}]),this.focused_=!0}),this.editor_node.addEventListener("focusout",()=>{this.selecting&&console.info("focusout, but selecting..."),this.autocomplete.Hide(),this.Publish([{type:"stop-editing"}]),this.focused_=!1,this.editor_node&&(this.editor_node.spellcheck=!1)}),this.editor_node.addEventListener("keydown",c=>this.FormulaKeyDown(c)),this.editor_node.addEventListener("keyup",c=>this.FormulaKeyUp(c)),this.editor_node.addEventListener("input",c=>{c instanceof InputEvent&&c.isComposing||(this.Reconstruct(),this.UpdateSelectState())}),this.options.expand_formula_button&&(this.expand_button=D.Create("button","expand-button",l),this.expand_button.addEventListener("click",c=>{c.stopPropagation(),c.preventDefault(),this.editor_node&&(this.editor_node.scrollTop=0),l.hasAttribute("expanded")?l.removeAttribute("expanded"):l.setAttribute("expanded","")}))}get focused(){return this.focused_}get formula(){return this.editor_node&&this.editor_node.textContent||""}set formula(t){this.editor_node&&(this.editor_node.textContent=t,this.last_reconstructed_text=""),this.last_formula=t}get label(){return this.address_label?.textContent||""}set label(t){t.trim().length?(this.address_label.textContent=t,this.label_update_timer||(this.label_update_timer=requestAnimationFrame(()=>{this.label_update_timer=0,this.address_label.scrollWidth>this.address_label.offsetWidth?this.address_label.setAttribute("title",t):this.address_label.removeAttribute("title")}))):(this.address_label.innerHTML="&nbsp;",this.address_label.removeAttribute("title"))}set editable(t){!this.editor_node||!this.container_node||(t?(this.editor_node.setAttribute("contenteditable","true"),this.container_node.removeAttribute("locked")):(this.editor_node.removeAttribute("contenteditable"),this.container_node.setAttribute("locked","")))}IsElement(t){return t===this.editor_node}InitAddressLabel(){this.address_label.contentEditable="true",this.address_label.spellcheck=!1,this.address_label.addEventListener("focusin",t=>{requestAnimationFrame(()=>{if(document.body.createTextRange){let r=document.body.createTextRange();r.moveToElementText(this.address_label),r.select()}else{let r=window.getSelection(),i=document.createRange();i.selectNodeContents(this.address_label),r?.removeAllRanges(),r?.addRange(i)}})}),this.address_label.addEventListener("keydown",t=>{switch(t.key){case"Enter":t.stopPropagation(),t.preventDefault(),this.Publish({type:"address-label-event",text:this.address_label.textContent||void 0});break;case"Esc":case"Escape":t.stopPropagation(),t.preventDefault(),this.Publish({type:"address-label-event"});break}})}FocusEditor(){this.editor_node&&this.editor_node.focus()}GetTextContent(t){let r=t.childNodes,i=[];for(let s=0;s<r.length;s++){let n=r[s];switch(n.nodeType){case Node.ELEMENT_NODE:i.push(...this.GetTextContent(n)),n instanceof Element&&n.tagName==="DIV"&&i.push(`
6
- `);break;case Node.TEXT_NODE:n.nodeValue&&i.push(n.nodeValue);break}}return i}FormulaKeyDown(t){let r=this.autocomplete.HandleKey("keydown",t);if(r.accept&&this.AcceptAutocomplete(r),!r.handled){switch(t.key){case"Enter":case"Tab":{this.selecting_=!1;let i=t.key==="Enter"&&t.ctrlKey&&t.shiftKey,s=(this.editor_node?this.GetTextContent(this.editor_node).join(""):"").trim();this.Publish({type:"commit",selection:this.selection,value:s,event:t,array:i}),this.FlushReference()}break;case"Escape":case"Esc":this.selecting_=!1,this.Publish({type:"discard"}),this.FlushReference();break;default:return}t.stopPropagation(),t.preventDefault()}}FormulaKeyUp(t){this.autocomplete.HandleKey("keyup",t).handled||this.FlushReference()}};var ht=class{constructor(e={}){this.options=e;this.completion_list_visible=!1;this.tooltip_visible=!1;this.selected_index=0;this.block=!1;this.autocomplete_data={};this.completion_list=D.CreateDiv("treb-cell-editor-ac-list treb-autocomplete",e.container||document.body),this.completion_list.addEventListener("mousedown",t=>this.ListMouseDown(t)),this.completion_list.addEventListener("mousemove",t=>this.ListMouseMove(t)),this.tooltip=D.CreateDiv("treb-cell-editor-ac-tooltip treb-autocomplete-tooltip",e.container||document.body)}Hide(){this.tooltip.style.top="-1000px",this.completion_list.style.top="-1000px",this.completion_list_visible=!1,this.tooltip_visible=!1,this.active_element=void 0}ResetBlock(){this.block=!1}ListMouseMove(e){let t=e.target;t.tagName==="A"&&t!==this.active_element&&this.active_element&&(this.active_element.classList.remove("selected"),this.active_element=t,this.active_element.classList.add("selected"),this.selected_index=Number(t.dataset.index||"0"),this.last_completion=t.textContent||"")}ListMouseDown(e){e.stopPropagation(),e.preventDefault();let t=e.target;for(;t;){if(t===this.completion_list)return;if(t.tagName==="A")break;t=t.parentElement}t&&(console.info(t),this.callback&&this.callback({handled:!0,accept:!0,value:t.textContent?t.textContent:void 0,data:this.autocomplete_data,click:!0}))}HandleKey(e,t){if(!this.completion_list_visible)return{handled:!1};let r=0,i=!1,s=!1;switch(t.key){case"Up":case"ArrowUp":r=-1;break;case"Down":case"ArrowDown":r=1;break;case"Tab":s=!0;break;case"Escape":case"Esc":i=!0;break;default:return{handled:!1}}if(t.stopPropagation(),t.preventDefault(),e==="keyup")return{handled:!0};if(r){let n=this.completion_list.getBoundingClientRect();this.selected_index+=r,this.selected_index=Math.max(0,this.selected_index);let a=this.completion_list.querySelectorAll("a");this.selected_index=Math.min(this.selected_index,a.length-1);for(let o=0;o<a.length;o++){let l=a[o];if(o===this.selected_index){l.classList.add("selected"),this.active_element=l;let c=l.getBoundingClientRect();c.top<n.top?this.completion_list.scrollBy(0,-c.height):c.bottom>n.bottom&&this.completion_list.scrollBy(0,c.height),this.last_completion=l.textContent||void 0}else l.classList.remove("selected")}return{handled:!0}}else{if(i)return this.block=!0,this.Hide(),{handled:!0};if(s)return{handled:!0,accept:!0,value:this.last_completion,data:this.autocomplete_data}}return{handled:!1}}Show(e,t={},r){if(this.completion_list_visible=!1,this.tooltip_visible=!1,this.autocomplete_data=t,this.callback=e,!this.block)if(t.tooltip?(this.tooltip.innerHTML=t.tooltip+t.arguments+(t.description?`
1
+ /*! TREB v26.0.3. Copyright 2018-2023 trebco, llc. All rights reserved. LGPL: https://treb.app/license */
2
+ var nn=Object.defineProperty;var sn=(d,e)=>{for(var t in e)nn(d,t,{get:e[t],enumerable:!0})};var L=d=>d!==null&&typeof d=="object"&&"row"in d&&"column"in d,qr=d=>d!==null&&typeof d=="object"&&"start"in d&&L(d.start)&&"end"in d&&L(d.end),v=class{constructor(e,t=e,r=!1){this.end_=this.PatchNull(t),this.start_=this.PatchNull(e),r&&this.Normalize()}static FromColumn(e){return new v({row:1/0,column:e})}static FromRow(e){return new v({row:e,column:1/0})}static ColumnToLabel(e){let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}static CellAddressToLabel(e,t=!1){return(t?`${e.sheet_id||0}!`:"")+(e.absolute_column?"$":"")+this.ColumnToLabel(e.column)+(e.absolute_row?"$":"")+(e.row+1)}static Join(e,...t){let r=new v(e.start,e.end);for(let i of t)i&&(r.ConsumeAddress(i.start),r.ConsumeAddress(i.end));return r}static Bleed(e,t=1){return new v({row:Math.max(0,e.start.row-t),column:Math.max(0,e.start.column-t),sheet_id:e.start.sheet_id},{row:e.end.row+t,column:e.end.column+t})}get start(){return{...this.start_}}set start(e){this.start_=e}get end(){return{...this.end_}}set end(e){this.end_=e}get rows(){return this.start_.row===1/0||this.end_.row===1/0?1/0:this.end_.row-this.start_.row+1}get columns(){return this.start_.column===1/0||this.end_.column===1/0?1/0:this.end_.column-this.start_.column+1}get count(){return this.rows*this.columns}get entire_sheet(){return this.entire_row&&this.entire_column}get entire_column(){return this.start_.row===1/0}get entire_row(){return this.start_.column===1/0}PatchNull(e){let t={...e};return t.row===null&&(t.row=1/0),t.column===null&&(t.column=1/0),t}SetSheetID(e){this.start_.sheet_id=e}Normalize(){let e={...this.start_},t={...this.end_};e.row===1/0||t.row===1/0?e.row=t.row=1/0:e.row>t.row&&(e.row=this.end_.row,e.absolute_row=this.end_.absolute_row,t.row=this.start_.row,t.absolute_row=this.start_.absolute_row),e.column===1/0||t.column===1/0?e.column=t.column=1/0:e.column>t.column&&(e.column=this.end_.column,e.absolute_column=this.end_.absolute_column,t.column=this.start_.column,t.absolute_column=this.start_.absolute_column),this.start_=e,this.end_=t}TopLeft(){let e={row:0,column:0};return this.entire_row||(e.column=this.start.column),this.entire_column||(e.row=this.start.row),e}BottomRight(){let e={row:0,column:0};return this.entire_row||(e.column=this.end.column),this.entire_column||(e.row=this.end.row),e}ContainsRow(e){return this.entire_column||e>=this.start_.row&&e<=this.end_.row}ContainsColumn(e){return this.entire_row||e>=this.start_.column&&e<=this.end_.column}Contains(e){return(this.entire_column||e.row>=this.start_.row&&e.row<=this.end_.row)&&(this.entire_row||e.column>=this.start_.column&&e.column<=this.end_.column)}ContainsArea(e){return this.start.column<=e.start.column&&this.end.column>=e.end.column&&this.start.row<=e.start.row&&this.end.row>=e.end.row}Intersects(e){return!(e.start.column>this.end.column||this.start.column>e.end.column||e.start.row>this.end.row||this.start.row>e.end.row)}Equals(e){return e.start_.row===this.start_.row&&e.start_.column===this.start_.column&&e.end_.row===this.end_.row&&e.end_.column===this.end_.column}Clone(){return new v(this.start,this.end)}Array(){if(this.entire_column||this.entire_row)throw new Error("can't convert infinite area to array");let e=new Array(this.rows*this.columns),t=this.start_.sheet_id,r=0;for(let i=this.start_.row;i<=this.end_.row;i++)for(let n=this.start_.column;n<=this.end_.column;n++)e[r++]={row:i,column:n,sheet_id:t};return e}get left(){let e=new v(this.start_,this.end_);return e.end_.column=e.start_.column,e}get right(){let e=new v(this.start_,this.end_);return e.start_.column=e.end_.column,e}get top(){let e=new v(this.start_,this.end_);return e.end_.row=e.start_.row,e}get bottom(){let e=new v(this.start_,this.end_);return e.start_.row=e.end_.row,e}Shift(e,t){return this.start_.row+=e,this.start_.column+=t,this.end_.row+=e,this.end_.column+=t,this}ConsumeAddress(e){this.entire_row||(e.column<this.start_.column&&(this.start_.column=e.column),e.column>this.end_.column&&(this.end_.column=e.column)),this.entire_column||(e.row<this.start_.row&&(this.start_.row=e.row),e.row>this.end_.row&&(this.end_.row=e.row))}ConsumeArea(e){this.ConsumeAddress(e.start),this.ConsumeAddress(e.end)}Resize(e,t){return this.end_.row=this.start_.row+e-1,this.end_.column=this.start_.column+t-1,this}Iterate(e){if(this.entire_column||this.entire_row){console.warn("don't iterate infinite area");return}for(let t=this.start_.column;t<=this.end_.column;t++)for(let r=this.start_.row;r<=this.end_.row;r++)e({column:t,row:r,sheet_id:this.start_.sheet_id})}get spreadsheet_label(){let e;return this.entire_sheet?"":this.entire_column?(e=v.ColumnToLabel(this.start_.column),e+=":"+v.ColumnToLabel(this.end_.column),e):this.entire_row?(e=String(this.start_.row+1),e+=":"+(this.end_.row+1),e):(e=v.CellAddressToLabel(this.start_),this.columns>1||this.rows>1?e+":"+v.CellAddressToLabel(this.end_):e)}toJSON(){return{start:{...this.start_},end:{...this.end_}}}};var ye=d=>typeof d=="object"&&!!d&&typeof d.real=="number"&&typeof d.imaginary=="number",Ze=d=>d.real?d.imaginary?d.imaginary>0?`${d.real} + ${d.imaginary}i`:`${d.real} - ${Math.abs(d.imaginary)}i`:d.real.toString():d.imaginary?d.imaginary+"i":"0",nr=d=>typeof d=="object"&&!!d&&typeof d.value=="number"&&typeof d.unit=="string",sr=["undefined","formula","string","number","boolean","object","error","complex","array","dimensioned_quantity"];var ae=d=>{switch(typeof d){case"undefined":return 0;case"number":return 3;case"boolean":return 4;case"object":return d===null?0:ye(d)?7:nr(d)?9:5;case"string":return d[0]==="="?1:2;default:return 6}};var ee=class{constructor(e,t){this.type=0;this.render_clean=[];typeof e<"u"&&this.Set(e,t)}static StringToColumn(e){let t=0;e=e.toUpperCase();for(let r=0;r<e.length;r++)t*=26,t+=e.charCodeAt(r)-64;return t-1}ValueIsNumber(){return this.type===3}ValueIsFormula(){return this.type===1}ValueIsBoolean(){return this.type===4}ValueIsComplex(){return this.type===7}FlushStyle(){this.formatted=this.rendered_type=this.style=void 0,this.render_clean=[]}FlushArray(){this.area=void 0}FlushCache(){this.calculated=this.calculated_type=this.formatted=this.rendered_type=this.render_function=this.click_function=void 0,this.render_clean=[]}Reset(){this.type=0,this.value=this.note=this.hyperlink=this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.area=this.renderer_data=this.render_function=this.click_function=void 0,this.render_clean=[]}Set(e,t=ae(e)){this.value=e,this.type=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.render_function=this.click_function=this.area=void 0,this.render_clean=[]}SetCalculatedValue(e,t=ae(e)){e===void 0&&(e=0,t=3),this.calculated!==e&&(this.calculated=e,this.calculated_type=t,this.formatted=this.rendered_type=void 0,this.render_clean=[])}GetValue(){return this.calculated_type?this.calculated:typeof this.value=="string"&&this.value[0]==="'"?this.value.slice(1):this.value}GetValue4(){return this.calculated_type?{type:this.calculated_type,value:this.calculated}:this.type===1?{type:3,value:0}:{type:this.type,value:typeof this.value=="string"&&this.value[0]==="'"?this.value.slice(1):this.value}}SetNote(e){this.note=e,this.render_clean=[]}SetCalculationError(e="ERR"){this.SetCalculatedValue(e,6)}SetArray(e){this.type=0,this.value=this.formatted=this.rendered_type=this.style=this.hyperlink=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}SetArrayHead(e,t){this.type=ae(t),this.value=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}};var ar=d=>!d.cells,rt=d=>!!d[0]&&ar(d[0]),or=d=>!!d[0]&&d[0].row!==void 0,an=sr.map((d,e)=>({[d]:e})).reduce((d,e)=>({...d,...e}),{}),wt=class{constructor(){this.data=[];this.rows_=0;this.columns_=0}get rows(){return this.rows_}get columns(){return this.columns_}EnsureRow(e){this.rows_=Math.max(e+1,this.rows_)}EnsureColumn(e){this.columns_=Math.max(e+1,this.columns_)}InsertColumns(e=0,t=1){let r=JSON.parse(JSON.stringify(this.data[13]));this.data=this.data.map(i=>{if(i.length>=e){let n=i.slice(0,e),s=e+t,a=i.slice(e);for(let o=0;o<a.length;o++)n[s++]=a[o];return n}return i}),this.columns_+=t}DeleteColumns(e,t=1){this.data.forEach(r=>r.splice(e,t)),this.columns_-=t}DeleteRows(e,t=1){this.data.splice(e,t),this.rows_-=t}InsertRows(e=0,t=1){let r=[e,0,[]];for(let i=1;i<t;i++)r.push([]);Array.prototype.splice.apply(this.data,r),this.rows_+=t}GetCell(e,t){let{row:r,column:i}=e;if(!this.data[r])if(t)this.data[r]=[],this.rows_=Math.max(this.rows_,r+1);else return;return this.data[r][i]||t&&(this.data[r][i]=new ee,this.columns_=Math.max(this.columns_,i+1)),this.data[r][i]}EnsureCell(e){let{row:t,column:r}=e,i=this.data[t];i||(this.data[t]=i=[],this.rows_=Math.max(this.rows_,t+1));let n=i[r];return n||(n=i[r]=new ee,this.columns_=Math.max(this.columns_,r+1)),n}FromArray(e=[],t=!1){this.data=[];let r=0,i=0;if(t){i=e.length;for(let n=0;n<i;n++){let s=e[n];r=Math.max(r,s.length);for(let a=0;a<s.length;a++)this.data[a]||(this.data[a]=[]),this.data[a][n]=new ee(s[a])}}else{r=e.length;for(let n=0;n<r;n++){let s=[],a=e[n];i=Math.max(i,a.length);for(let o=0;o<a.length;o++)s[o]=new ee(a[o]);this.data[n]=s}}this.rows_=r,this.columns_=i}SerializedTypeToValueType(e){if(e)return typeof e=="number"?e:an[e]||void 0}ValueTypeToSerializedType(e){return e?sr[e]:void 0}ImportDataValidation(e){if(typeof e.type=="number"){let t=["list","date","range","number","boolean"];if(e.type=t[e.type],!e.type)return}return e}FromJSON(e=[],t){if(this.data=[],!rt(e)){let i=[];if(or(e))for(let n of e)for(let s of n.cells)i.push({...s,row:n.row});else for(let n of e)for(let s of n.cells)i.push({...s,column:n.column});e=i}let r=[];for(let i of e){this.data[i.row]||(this.data[i.row]=[]);let n=new ee(i.value);if(typeof i.calculated<"u"&&n.SetCalculatedValue(i.calculated,this.SerializedTypeToValueType(i.calculated_type)),t&&typeof i.style_ref<"u"&&(n.style=t[i.style_ref]),typeof i.note<"u"&&(n.note=i.note),typeof i.hyperlink<"u"&&(n.hyperlink=i.hyperlink),this.data[i.row][i.column]&&this.data[i.row][i.column].area&&(n.area=this.data[i.row][i.column].area),this.data[i.row][i.column]=n,i.area){let s=new v(i.area.start,i.area.end);for(let a=s.start.row;a<=s.end.row;a++)for(let o=s.start.column;o<=s.end.column;o++)this.data[a]||(this.data[a]=[]),this.data[a][o]||(this.data[a][o]=new ee),this.data[a][o].area=s}if(i.table&&r.push({...i.table}),i.merge_area){let s=new v(i.merge_area.start,i.merge_area.end);for(let a=s.start.row;a<=s.end.row;a++)for(let o=s.start.column;o<=s.end.column;o++)this.data[a]||(this.data[a]=[]),this.data[a][o]||(this.data[a][o]=new ee),this.data[a][o].merge_area=s}i.validation&&(n.validation=this.ImportDataValidation(i.validation))}for(let i of r)for(let n=i.area.start.row;n<=i.area.end.row;n++)for(let s=i.area.start.column;s<=i.area.end.column;s++)this.data[n]||(this.data[n]=[]),this.data[n][s]||(this.data[n][s]=new ee),this.data[n][s].table=i;this.rows_=this.data.length,this.columns_=this.data.reduce((i,n)=>Math.max(i,n.length),0)}toJSON(e={}){let t=0,r=0,i=this.data.length-1,n;e.subset&&(t=e.subset.start.column,r=e.subset.start.row,i=e.subset.end.row);let s=[],a=-1,o=-1,l={},c={};for(let h=r;h<=i;h++)if(this.data[h]){let u=this.data[h];n=u.length-1,e.subset&&(n=e.subset.end.column);for(let m=t;m<=n;m++){let f=u[m],b=f&&f.merge_area&&f.merge_area.start.row===h&&f.merge_area.start.column===m,p=f&&f.area&&f.area.start.row===h&&f.area.start.column===m,g=f&&f.table&&f.table.area.start.row===h&&f.table.area.start.column===m,_=f?f.type===2&&!f.value:!0;if(f&&(!_||e.preserve_empty_strings)&&(b||f.type||f.calculated_type&&e.expand_arrays||f.calculated_type&&e.calculated_value||f.note||f.validation||e.decorated_cells&&f.style&&(f.style.fill||f.style.border_bottom||f.style.border_top||f.style.border_left||f.style.border_right))){let y={row:h,column:m,value:f.value};f.note&&(y.note=f.note),f.hyperlink&&(y.hyperlink=f.hyperlink),e.preserve_type&&(y.type=this.ValueTypeToSerializedType(f.type)),e.sheet_id&&(y.sheet_id=e.sheet_id),e.calculated_value&&typeof f.calculated<"u"&&(y.calculated=f.calculated,(e.preserve_type||f.calculated_type===6)&&(y.calculated_type=this.ValueTypeToSerializedType(f.calculated_type))),f.table&&g&&e.tables&&(y.table=JSON.parse(JSON.stringify(f.table))),f.area&&p&&(y.area=f.area.toJSON()),f.merge_area&&(y.merge_area=f.merge_area.toJSON()),f.validation&&(y.validation=f.validation),e.cell_style_refs&&e.cell_style_refs[m]&&e.cell_style_refs[m][h]&&(y.style_ref=e.cell_style_refs[m][h],e.cell_style_refs[m][h]=0),l[h]=h,c[m]=m,a=Math.max(h,a),o=Math.max(m,o),s.push(y)}}}if(e.nested){let h=Object.keys(l),u=Object.keys(c);if(h.length<=u.length&&h.length){let m={},f=[];for(let b of s){let{row:p,...g}=b;m[b.row]||(m[b.row]=[]),m[b.row].push(g)}for(let b of h){let p=Number(b);f.push({row:p,cells:m[p]})}return{data:f,rows:a,columns:o+1}}else if(u.length){let m={},f=[];for(let b of s){let{column:p,...g}=b;m[b.column]||(m[b.column]=[]),m[b.column].push(g)}for(let b of u){let p=Number(b);f.push({column:p,cells:m[p]})}return{data:f,rows:a,columns:o+1}}}return{data:s,rows:a+1,columns:o+1}}GetAll(e=!1){return this.GetRange({row:0,column:0},{row:this.rows_-1,column:this.columns_-1},e)}Normalize2(e,t){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),t.column===1/0&&(t={...t,column:this.columns_-1}),t.row===1/0&&(t={...t,row:this.rows_-1}),{from:e,to:t}}Normalize1(e){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),e}RawValue(e,t=e){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].value:void 0;let r=[],i=this.data.slice(e.row,t.row+1),n=e.column,s=t.column+1;for(let a of i){let o=[];for(let l=n,c=0;l<s;l++,c++){let h=a[l];o.push(h?h.value:void 0)}r.push(o)}return r}GetRange(e,t,r=!1){if(t?{from:e,to:t}=this.Normalize2(e,t):e=this.Normalize1(e),!t||e===t||e.column===t.column&&e.row===t.row)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue():void 0;let i=[];if(r)for(let n=e.column;n<=t.column;n++){let s=[];for(let a=e.row;a<=t.row;a++)this.data[a]&&this.data[a][n]?s.push(this.data[a][n].GetValue()):s.push(void 0);i.push(s)}else for(let n=e.row;n<=t.row;n++){let s=[];for(let a=e.column;a<=t.column;a++)this.data[n]&&this.data[n][a]?s.push(this.data[n][a].GetValue()):s.push(void 0);i.push(s)}return i}GetRange4(e,t=e,r=!1){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue4():{value:void 0,type:0};let i=[];if(r)for(let n=e.column;n<=t.column;n++){let s=[];for(let a=e.row;a<=t.row;a++)this.data[a]&&this.data[a][n]?s.push(this.data[a][n].GetValue4()):s.push({type:0});i.push(s)}else for(let n=e.row;n<=t.row;n++){let s=[];for(let a=e.column;a<=t.column;a++)this.data[n]&&this.data[n][a]?s.push(this.data[n][a].GetValue4()):s.push({type:0});i.push(s)}return{type:8,value:i}}Apply(e,t,r=!1){if(L(e)&&(e=new v(e)),e.entire_column||e.entire_row)throw new Error("don't iterate infinite cells");let i=e.start,n=e.end;if(r)for(let s=i.row;s<=n.row;s++){this.data[s]||(this.data[s]=[]);let a=this.data[s];for(let o=i.column;o<=n.column;o++)a[o]||(a[o]=new ee),t(a[o],o,s)}else for(let s=i.row;s<=n.row;s++)if(this.data[s]){let a=this.data[s];for(let o=i.column;o<=n.column;o++)a[o]&&t(a[o],o,s)}}Apply2(e,t,r=!1){if(L(e)&&(e=new v(e)),e.entire_column||e.entire_row)throw new Error("don't iterate infinite cells");let i=e.start,n=e.end;if(r)for(let s=i.row;s<=n.row;s++){this.data[s]||(this.data[s]=[]);let a=this.data[s];for(let o=i.column;o<=n.column;o++)if(a[o]||(a[o]=new ee),!t(a[o],o,s))return}else for(let s=i.row;s<=n.row;s++)if(this.data[s]){let a=this.data[s];for(let o=i.column;o<=n.column;o++)if(a[o]&&!t(a[o],o,s))return}}SetArea(e,t){if(ArrayBuffer.isView(t))throw new Error("ABIV");if(Array.isArray(t))for(let r=e.start.row,i=0;r<=e.end.row;r++,i++){this.data[r]||(this.data[r]=[]);let n=this.data[r];if(t[i])for(let s=e.start.column,a=0;s<=e.end.column;s++,a++)n[s]||(n[s]=new ee),n[s].Set(t[i][a])}else{let r=ae(t);for(let i=e.start.row;i<=e.end.row;i++){this.data[i]||(this.data[i]=[]);let n=this.data[i];for(let s=e.start.column;s<=e.end.column;s++)n[s]||(n[s]=new ee),n[s].Set(t,r)}}this.rows_=Math.max(this.rows_,e.end.row+1),this.columns_=Math.max(this.columns_,e.end.column+1)}IterateAll(e){for(let t of this.data)if(t)for(let r of t)r&&e(r)}FlushCellStyles(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushStyle()}FlushCachedValues(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushCache()}};var T=class{static UpdateLocale(e){if(e)this.locale=e;else if(typeof self<"u"){let i=self?.document?.location;if(i&&i.search&&/locale=([^?&]+?)(?:\?|$|&)/.test(i.search)){let n=i.search.match(/locale=(.*?)(?:\?|$|&)/);n&&(this.locale=n[1]),console.info("override locale",this.locale)}else typeof navigator<"u"&&(navigator.languages&&navigator.languages[0]?this.locale=navigator.languages[0]:this.locale=navigator.language)}let t=new Intl.NumberFormat(this.locale,{minimumFractionDigits:1}).format(3.3).replace(/\d/g,"");this.decimal_separator=t===","?",":".",this.decimal_separator===","?(this.argument_separator=";",this.grouping_separator=" "):(this.argument_separator=",",this.grouping_separator=",");let r=new Date(2e3,0,2,12,0,0,0);this.UpdateDateComponent(0,0,r),r=new Date(2e3,1,7,12,0,0,0),this.UpdateDateComponent(1,1,r),r=new Date(2e3,2,7,12,0,0,0),this.UpdateDateComponent(2,2,r),r=new Date(2e3,3,5,12,0,0,0),this.UpdateDateComponent(3,3,r),r=new Date(2e3,4,4,12,0,0,0),this.UpdateDateComponent(4,4,r),r=new Date(2e3,5,2,12,0,0,0),this.UpdateDateComponent(5,5,r),r=new Date(2e3,6,1,12,0,0,0),this.UpdateDateComponent(6,6,r),r=new Date(2e3,7,1,12,0,0,0),this.UpdateDateComponent(7,-1,r),r=new Date(2e3,8,1,12,0,0,0),this.UpdateDateComponent(8,-1,r),r=new Date(2e3,9,1,12,0,0,0),this.UpdateDateComponent(9,-1,r),r=new Date(2e3,10,1,12,0,0,0),this.UpdateDateComponent(10,-1,r),r=new Date(2e3,11,1,12,0,0,0),this.UpdateDateComponent(11,-1,r)}static UpdateDateComponent(e,t,r){t>=0&&(this.date_components.short_days[t]=r.toLocaleString(this.locale,{weekday:"short"}),this.date_components.long_days[t]=r.toLocaleString(this.locale,{weekday:"long"})),e>=0&&(this.date_components.short_months[e]=r.toLocaleString(this.locale,{month:"short"}),this.date_components.long_months[e]=r.toLocaleString(this.locale,{month:"long"}))}};T.locale="en-us",T.decimal_separator=".",T.argument_separator=",",T.grouping_separator=",",T.date_components={short_days:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],long_days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],short_months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months:["January","February","March","April","May","June","July","August","September","October","November","December"]};T.UpdateLocale();var U=class{constructor(e=0,t=0,r=0,i=0){this.left=e;this.top=t;this.width=r;this.height=i}get right(){return this.left+this.width}get bottom(){return this.top+this.height}static Create(e){return new U(e.left||0,e.top||0,e.width||0,e.height||0)}static IsRectangle(e){return typeof e=="object"&&typeof e?.left=="number"&&typeof e?.top=="number"&&typeof e?.width=="number"&&typeof e?.height=="number"}Shift(e=0,t=0){return new U(this.left+e,this.top+t,this.width,this.height)}Scale(e=1,t=e){return new U(this.left*e,this.top*t,this.width*e,this.height*t)}Expand(e=0,t=0){return new U(this.left,this.top,this.width+e,this.height+t)}Combine(e){return new U(Math.min(this.left,e.left),Math.min(this.top,e.top),Math.max(this.right,e.right)-Math.min(this.left,e.left),Math.max(this.bottom,e.bottom)-Math.min(this.top,e.top))}CheckEdges(e,t,r=16){let i=0;return e-this.left<r&&(i|=1),this.right-e<r&&(i|=2),t-this.top<r&&(i|=4),this.bottom-t<r&&(i|=8),i}Contains(e,t,r=0){return e>=this.left-r&&e<=this.left+this.width+r&&t>=this.top-r&&t<=this.top+this.height+r}ContextFill(e){e.fillRect(this.left,this.top,this.width,this.height)}ContextStroke(e){e.strokeRect(this.left,this.top,this.width,this.height)}Clamp(e,t){return e=Math.min(Math.max(e,this.left),this.right),t=Math.min(Math.max(t,this.top),this.bottom),{x:e,y:t}}ApplyStyle(e){e.style.top=this.top+"px",e.style.left=this.left+"px",e.style.width=this.width+"px",e.style.height=this.height+"px"}toJSON(){return{top:this.top,left:this.left,width:this.width,height:this.height}}};var k;(m=>{let d=JSON.stringify({}),e;(_=>(_.None="",_.Left="left",_.Center="center",_.Right="right"))(e=m.HorizontalAlign||={});let t;(_=>(_.None="",_.Top="top",_.Bottom="bottom",_.Middle="middle"))(t=m.VerticalAlign||={}),m.DefaultProperties={horizontal_align:"",vertical_align:"",number_format:"General",nan:"NaN",font_size:{unit:"pt",value:10.5},font_face:"sans-serif",bold:!1,italic:!1,underline:!1,strike:!1,text:{theme:1},border_top:0,border_left:0,border_right:0,border_bottom:0},m.CompositeBorders=f=>({top:{width:f.border_top||0,color:f.border_top_fill||{}},left:{width:f.border_left||0,color:f.border_left_fill||{}},right:{width:f.border_right||0,color:f.border_right_fill||{}},bottom:{width:f.border_bottom||0,color:f.border_bottom_fill||{}}}),m.Merge=(f,b,p=!0)=>{let g=p?{...f,...b}:{...b};return JSON.parse(JSON.stringify(g))},m.Composite=f=>JSON.parse(JSON.stringify(f.reduce((b,p)=>({...b,...p}),{}))),m.Empty=f=>JSON.stringify(f)===d,m.ValidColor=f=>!!(f&&!f.none&&(f.text||f.theme||f.theme===0)),m.ParseFontSize=(f="",b="em")=>{let p=f.match(/(-*[\d.]+)\s*(\S*)/);if(p){let g=Number(p[1]);if(!g||isNaN(g)||g<0)return{};let _=p[2].toLowerCase()||b;if(_==="pt"||_==="em"||_==="%"||_==="px")return{font_size:{unit:_,value:g}}}return{}},m.RelativeFontSize=(f,b)=>{let p=12,g=12;switch(f.font_size?.unit){case"pt":if(!f.font_size.value)return 1;g=f.font_size.value;break;case"px":if(!f.font_size.value)return 1;g=Math.round(f.font_size.value*300/4)/100;break;case"em":return f.font_size.value||1;case"%":return(f.font_size.value||100)/100;default:return 1}switch(b.font_size?.unit){case"pt":if(!b.font_size.value)return 1;p=b.font_size.value;break;case"px":if(!b.font_size.value)return 1;p=Math.round(b.font_size.value*300/4)/100;break;default:return 1}return g/p},m.FontSize=(f,b=!0)=>{let p=f.font_size?.value;switch(f.font_size?.unit){case"pt":return(p||12)+"pt";case"px":return b?Math.round((p||16)*300/4)/100+"pt":(p||16)+"px";case"em":return(p||1)+"em";case"%":return(p||100)+"%"}return""},m.Font=(f,b=1)=>{let p=[];return f.bold&&p.push("bold"),f.italic&&p.push("italic"),p.push(((f.font_size?.value||0)*b).toFixed(2)+(f.font_size?.unit||"pt")),p.push(f.font_face||""),p.join(" ")}})(k||={});var lr=d=>!!d&&Array.isArray(d)&&Array.isArray(d[0]),j=(d,e)=>(typeof e>"u"&&(e=ae(d)),{value:d,type:e}),de=d=>d.imaginary?{type:7,value:d}:{type:3,value:d.real};var cr=class{Darken(e,t,r,i,n=!1){let{h:s,s:a,l:o}=this.RGBToHSL(e,t,r);return n?o-=o*i/100:o-=i/100,o=Math.max(0,Math.min(1,o)),this.HSLToRGB(s,a,o)}Lighten(e,t,r,i,n=!1){let{h:s,s:a,l:o}=this.RGBToHSL(e,t,r);return n?o+=o*i/100:o+=i/100,o=Math.max(0,Math.min(1,o)),this.HSLToRGB(s,a,o)}RGBToHSL(e,t,r){e/=255,t/=255,r/=255;let i=Math.max(e,t,r),n=Math.min(e,t,r),s=0,a=0,o=(i+n)/2;if(i===n)s=a=0;else{let l=i-n;switch(a=o>.5?l/(2-i-n):l/(i+n),i){case e:s=(t-r)/l+(t<r?6:0);break;case t:s=(r-e)/l+2;break;case r:s=(e-t)/l+4;break}s/=6}return{h:s*360,s:a,l:o}}HSLToRGB(e,t,r){let i,n,s;if(t===0)i=n=s=r;else{e=e/360;let a=r<.5?r*(1+t):r+t-r*t,o=2*r-a;i=this.HueToRGB(o,a,e+1/3),n=this.HueToRGB(o,a,e),s=this.HueToRGB(o,a,e-1/3)}return{r:Math.round(i*255),g:Math.round(n*255),b:Math.round(s*255)}}HueToRGB(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+(t-e)*6*r:r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}},Me=new cr;var xt={grid_color:"#ccc",note_marker_color:"#d2c500",mode:"light",offset_cache:{},offset_light:"#fff",offset_dark:"#000"},fe=(d,e)=>R(d,e,0),on=(d,e,t)=>{d.mode==="dark"&&(t=-t),d.tint_cache||(d.tint_cache=[]),d.tint_cache[e]||(d.tint_cache[e]={});let r=d.tint_cache[e][t];if(!r){let i=(d.theme_colors_rgb?d.theme_colors_rgb[e]:[0,0,0])||[0,0,0],n;t>0?n=Me.Lighten(i[0],i[1],i[2],t*100,!0):n=Me.Darken(i[0],i[1],i[2],-t*100,!0),r=`rgb(${n.r},${n.g},${n.b})`,d.tint_cache[e][t]=r}return r},R=(d,e,t)=>{if(e?.offset){if(e.offset.offset)return console.warn("invalid offset color"),"";let r=R(d,e.offset);if(d.offset_cache&&d.offset_cache[r])return d.offset_cache[r];let i=d.offset_light;if(r){let n=r.match(/rgb\((\d+), (\d+), (\d+)\)/);n?Me.RGBToHSL(Number(n[1]),Number(n[2]),Number(n[3])).l>.65&&(i=d.offset_dark):console.warn("can't offset against color",r),d.offset_cache||(d.offset_cache={}),d.offset_cache[r]=i}else console.warn("can't resolve offset color",e.offset);return i}return e?.text?e.text==="none"?"":e.text:e?.theme||e?.theme===0?e.tint?on(d,e.theme,e.tint):d.theme_colors?d.theme_colors[e.theme]:"":(t||t===0)&&d.theme_colors?d.theme_colors[t]:""},ln=d=>{let e=10,t="pt",r=d.match(/^([\d.]+)(\D.*)$/);return r&&(e=Number(r[1]),t=r[2]),{value:e,unit:t}},Kr=d=>{let{value:e,unit:t}=ln(d.fontSize||""),r={fill:{text:d.backgroundColor},text:{text:d.color},font_size:{unit:t,value:e},font_face:d.fontFamily};return/italic/i.test(d.font)&&(r.italic=!0),d.fontWeight==="700"&&(r.bold=!0),r},cn=(d,e)=>{let t=d.grid_cell?.text,r=d.grid_cell?.fill;e.fillStyle=t?.text||"",e.fillRect(0,0,3,3);let i=Me.RGBToHSL(...Array.from(e.getImageData(1,1,1,1).data));e.fillStyle=r?.text||"",e.fillRect(0,0,3,3);let n=Me.RGBToHSL(...Array.from(e.getImageData(1,1,1,1).data));return i.l>n.l?"dark":"light"},Ct=(d,e=.7)=>{let t={border_top:1,border_top_fill:{theme:d},border_bottom:1,border_bottom_fill:{theme:d}};return{header:{text:{offset:{theme:d}},fill:{theme:d},bold:!0,...t},odd:{fill:{theme:d,tint:e},...t},even:{...t},total:{...t,border_top:2}}},ei=d=>{let e=JSON.parse(JSON.stringify(xt)),t=(c,h)=>{let u=document.createElement("div");return u.setAttribute("class",h),c.appendChild(u),u},r=(c,h)=>window.getComputedStyle(t(c,h)),i=t(d,""),n=r.bind(0,i),s=n("grid-cells");e.grid_cell=Kr(s),e.grid_color=s.stroke||"",s=n("grid-headers"),e.headers=Kr(s),e.headers_grid_color=s.stroke,(!e.headers_grid_color||e.headers_grid_color==="none")&&(e.headers_grid_color=e.grid_color),s=n("treb-offset-dark"),s.color&&(e.offset_dark=s.color),s=n("treb-offset-light"),s.color&&(e.offset_light=s.color),s=n("note-marker"),e.note_marker_color=s.backgroundColor,i.style.color="rgba(1,2,3,.4)",s=n("");let a=s.color;e.theme_colors=[e.grid_cell.fill?.text||"rgb(255, 255, 255)",e.grid_cell.text?.text||"rgb(51, 51, 51)"];for(let c=1;c<32&&(s=n(`theme-color-${c}`),!(!s.color||s.color===a));c++)e.theme_colors.push(s.color);let o=document.createElement("canvas");o.width=3,o.height=3;let l=o.getContext("2d",{willReadFrequently:!0});return l&&(e.mode=cn(e,l)),l&&(e.theme_colors_rgb=e.theme_colors.map(c=>{l.fillStyle=c,l.fillRect(0,0,3,3);let h=l.getImageData(1,1,1,1);return Array.from(h.data)})),e.table=Ct(4),i.parentElement?.removeChild(i),e};var ti={column:0,type:"auto",asc:!0};var lt=/[\s-+=<>!()]/,ai=/['*\\]/,dr=34,hr=39,dn=160,ri=32,hn=9,un=10,mn=13,ve=48,it=57,ur=46,mr=43,nt=45,ii=40,fr=41,st=44,fn=37,pr=95,At=36,pn=123,bn=125,at=91,ni=93,gn=33,si=59,_n=35,yn=64,$e=65,ot=97,vn=69,wn=101,St=90,kt=122,xn=105;var br=192,gr=312,_r={"==":6,"!=":6,"<>":6,"=":6,"<":7,">":7,"<=":7,">=":7,"+":9,"-":9,"&":9,"*":10,"/":10,"^":11,":":13},Cn=Object.keys(_r).sort((d,e)=>e.length-d.length),An={"-":100,"+":100},We=class{constructor(){this.argument_separator=",";this.decimal_mark=".";this.flags={spreadsheet_semantics:!0,dimensioned_quantities:!1,fractions:!0};this.r1c1_regex=/[rR]((?:\[[-+]{0,1}\d+\]|\d+))[cC]((?:\[[-+]{0,1}\d+\]|\d+))$/;this.argument_separator_char=st;this.decimal_mark_char=ur;this.imaginary_char=xn;this.imaginary_number="i";this.id_counter=0;this.expression="";this.data=[];this.index=0;this.length=0;this.valid=!0;this.dependencies={addresses:{},ranges:{}};this.address_refcount={};this.full_reference_list=[]}Walk(e,t){switch(e.type){case"address":case"missing":case"literal":case"complex":case"identifier":case"operator":case"structured-reference":t(e);return;case"dimensioned":t(e)&&(this.Walk(e.expression,t),this.Walk(e.unit,t));return;case"range":t(e)&&(this.Walk(e.start,t),this.Walk(e.end,t));return;case"binary":t(e)&&(this.Walk(e.left,t),this.Walk(e.right,t));return;case"unary":t(e)&&this.Walk(e.operand,t);return;case"group":t(e)&&e.elements.forEach(r=>this.Walk(r,t));return;case"call":t(e)&&e.args.forEach(r=>this.Walk(r,t))}}Transpose(e){let t=e.length,r=[],i=0;for(let n=0;n<t;n++)Array.isArray(e[n])&&(i=Math.max(i,e[n].length));for(let n=0;n<i;n++){r[n]=[];for(let s=0;s<t;s++)r[n][s]=e[s][n]}return r}Render(e,t={}){let r=t.offset||{rows:0,columns:0},i=t.missing??"(missing)",{convert_decimal:n,convert_argument_separator:s,convert_imaginary_number:a,long_structured_references:o,table_name:l}=t,c=this.argument_separator+" ";s===","?c=", ":s===";"&&(c="; ");let h=this.imaginary_number;a&&(h=a);let u=n===","?",":".",m=this.decimal_mark===","?/,/:/\./,f=this.decimal_mark===","?/,/g:/\./g;switch(e.type){case"address":return this.AddressLabel(e,r);case"range":return this.AddressLabel(e.start,r)+":"+this.AddressLabel(e.end,r);case"missing":return i;case"array":return"{"+this.Transpose(e.values).map(b=>b.map(p=>typeof p=="string"?'"'+p+'"':p).join(", ")).join("; ")+"}";case"binary":return this.Render(e.left,t)+" "+e.operator+" "+this.Render(e.right,t);case"unary":return e.operator+this.Render(e.operand,t);case"complex":if(e.text)return n?e.text.replace(f,u):e.text;{let b=Math.abs(e.imaginary).toString();if((n===","||this.decimal_mark===",")&&(b=b.replace(/\./,",")),e.real){let p=e.real.toString();(n===","||this.decimal_mark===",")&&(p=p.replace(/\./,","));let g=Math.abs(e.imaginary);return`${p}${e.imaginary<0?" - ":" + "}${g===1?"":b}i`}else return e.imaginary===-1?"-i":e.imaginary===1?"i":`${e.imaginary<0?"-":""}${b}i`}break;case"literal":if(typeof e.value=="string")return'"'+e.value.replace(/"/g,'""')+'"';if(n&&typeof e.value=="number")if(e.text){let b=e.text;return n===","&&this.decimal_mark==="."&&(b=b.replace(/,/g,"")),b.replace(m,u)}else return e.value.toString().replace(/\./,u);else if(e.text)return e.text;return e.value.toString();case"identifier":return e.name;case"operator":return"["+e.operator+"]";case"group":return e.explicit?"("+e.elements.map(b=>this.Render(b,t)).join(c)+")":e.elements.map(b=>this.Render(b,t)).join(c);case"call":return e.name+"("+e.args.map(b=>this.Render(b,t)).join(c)+")";case"dimensioned":return this.Render(e.expression)+" "+this.Render(e.unit);case"structured-reference":{let b=e.column;/[^A-Za-z]/.test(b)&&(b="["+b+"]");let p=e.table;switch(!p&&o&&l&&(p=l),e.scope){case"all":return`${p}[[#all],${b}]`;case"row":return o?`${p}[[#this row],${b}]`:`${p}[@${b}]`;case"column":return`${p}[${b}]`}throw new Error("unhandled scope in structured reference")}}return"??"}Parse(e){switch(e=e.trim(),e[0]==="="&&(e=e.substr(1).trim()),this.expression=e,this.data=[],this.length=e.length,this.index=0,this.valid=!0,this.error_position=void 0,this.error=void 0,this.dependencies.addresses={},this.dependencies.ranges={},this.address_refcount={},this.full_reference_list=[],this.id_counter=0,this.argument_separator){case";":this.argument_separator_char=si;break;default:this.argument_separator_char=st;break}switch(this.decimal_mark){case",":this.decimal_mark_char=st;break;default:this.decimal_mark_char=ur;break}for(let i=0;i<this.length;i++)this.data[i]=e.charCodeAt(i);let t=this.ParseGeneric(),r={};for(let i of Object.keys(this.dependencies.addresses))this.address_refcount[i]&&(r[i]=this.dependencies.addresses[i]);return this.dependencies.addresses=r,{expression:t||void 0,valid:this.valid,error:this.error,error_position:this.error_position,dependencies:this.dependencies,separator:this.argument_separator,decimal_mark:this.decimal_mark,full_reference_list:this.full_reference_list.slice(0)}}ColumnLabel(e){if(e===1/0)return"";let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}AddressLabel(e,t){let r=e.column;!e.absolute_column&&e.column!==1/0&&(r+=t.columns);let i=e.row;if(!e.absolute_row&&e.row!==1/0&&(i+=t.rows),i<0||r<0||i===1/0&&r===1/0)return"#REF";let n="";return e.sheet&&(n=(lt.test(e.sheet)?"'"+e.sheet+"'":e.sheet)+"!"),i===1/0?n+(e.absolute_column?"$":"")+this.ColumnLabel(r):r===1/0?n+(e.absolute_row?"$":"")+(i+1):n+(e.absolute_column?"$":"")+this.ColumnLabel(r)+(e.absolute_row?"$":"")+(i+1)}ParseGeneric(e=[0]){let t=[];for(;this.index<this.length;){let r=this.ParseNext(t.length===0);if(typeof r=="number"){if(e.some(i=>r===i))break;if(r===ii){this.index++;let i=this.ParseGeneric([fr]);this.index++,i&&t.push({type:"group",id:this.id_counter++,elements:[i],explicit:!0})}else{let i=this.ConsumeOperator();i?t.push(i):(this.error=`unexpected character [1]: ${String.fromCharCode(r)}, 0x${r.toString(16)}`,this.valid=!1,this.index++)}}else t.push(r)}if(t.length){if(t=this.BinaryToRange2(t),this.flags.fractions){let r=[],i=s=>s.type==="literal"&&typeof s.value=="number"&&s.value%1===0,n=0;for(;n<t.length-3;n++)if(i(t[n])&&i(t[n+1])&&t[n+2].type==="operator"&&t[n+2].operator==="/"&&i(t[n+3])){let s=t[n],a=t[n+1],o=t[n+3],l=(s.value<0?-1:1)*(a.value/o.value);n+=3,r.push({id:t[n].id,type:"literal",text:this.expression.substring(s.position,o.position+1),value:s.value+l,position:s.position})}else r.push(t[n]);for(;n<t.length;n++)r.push(t[n]);t=r}if(t=t.map(r=>r.type==="identifier"&&r.name===this.imaginary_number?{type:"complex",real:0,imaginary:1,position:r.position,text:r.name,id:this.id_counter++}:r),this.flags.dimensioned_quantities){let r=[],i;for(let n=0;n<t.length;n++){let s=t[n];if(!i)i=s;else if(s.type==="identifier"&&(i.type==="literal"||i.type==="group"||i.type==="call")){let a=s;for(;t[n+1]?.type==="identifier";)a.name+=" "+t[++n].name;r.push({type:"dimensioned",expression:i,unit:s,id:this.id_counter++}),i=void 0}else r.push(i),i=s}i&&r.push(i),t=r}}return t.length===0?null:t.length===1?t[0]:this.BinaryToComplex(this.ArrangeUnits(t))}UnitToAddress(e){if(e.type==="literal"){if(typeof e.value=="number"&&e.value>0&&!/\./.test(e.text||""))return{type:"address",position:e.position,label:e.value.toString(),row:e.value-1,id:this.id_counter++,column:1/0}}else{let t,r=e.name,i=r.split("!");if(i.length>1&&(t=i.slice(0,i.length-1).join("!"),r=r.substr(t.length+1),t[0]==="'"))if(t.length>1&&t[t.length-1]==="'")t=t.substr(1,t.length-2);else return;let n=r[0]==="$";r=(n?r.substr(1):r).toUpperCase();let s=Number(r);if(isNaN(s)){if(/[A-Z]{1,3}/.test(r)){let a=-1;for(let o=0;o<r.length;o++){let l=r[o].charCodeAt(0);a=26*(1+a)+(l-$e)}return{type:"address",position:e.position,absolute_column:n,label:e.name,column:a,id:this.id_counter++,row:1/0,sheet:t}}}else if(s>0&&s!==1/0&&!/\./.test(r))return{type:"address",position:e.position,absolute_row:n,label:e.name,row:s-1,id:this.id_counter++,column:1/0,sheet:t}}}BinaryToRange2(e){let t=[];for(let r=0;r<e.length;r++){let i=e[r],n=e[r+1],s=e[r+2],a,o="",l;if(i&&n&&s&&n.type==="operator"&&n.operator===":"){if(i.type==="address"&&s.type==="address"){let c=i.position+i.label.length,h=s.position;a={type:"range",id:this.id_counter++,position:i.position,start:i,end:s,label:i.label+this.expression.substring(c,h)+s.label},o=a.start.label+":"+a.end.label,this.address_refcount[a.start.label]--,this.address_refcount[a.end.label]--;let u=[i.position,s.position];this.full_reference_list=this.full_reference_list.filter(m=>m.position!==u[0]&&m.position!==u[1])}else if((i.type==="literal"||i.type==="identifier")&&(s.type==="literal"||s.type==="identifier")){let c=this.UnitToAddress(i);if(!c&&i.type==="literal"&&typeof i.value=="number"&&i.value<0){let u={...i,text:(i.text||"").replace(/^-/,""),position:i.position+1,value:-i.value};c=this.UnitToAddress(u),c&&(l={type:"operator",operator:"-",position:i.position,id:this.id_counter++})}let h=this.UnitToAddress(s);c&&h&&(c.column===1/0&&h.column===1/0||c.row===1/0&&h.row===1/0)&&(o=c.label+":"+h.label,a={type:"range",id:this.id_counter++,position:c.position,start:c,end:h,label:o})}}a?(l&&t.push(l),t.push(a),this.dependencies.ranges[o]=a,this.full_reference_list.push(a),r+=2):t.push(i)}return t}BinaryToComplex(e){if(e.type==="binary")if((e.operator==="+"||e.operator==="-")&&e.left.type==="literal"&&typeof e.left.value=="number"&&e.right.type==="complex"&&!e.right.composited){let t="";t=this.expression.substring(e.left.position,e.right.position+(e.right.text?.length||0));let r=e.right.imaginary;return e.operator==="-"&&(r=-r),{type:"complex",position:e.left.position,text:t,id:this.id_counter++,imaginary:r,real:e.left.value,composited:!0}}else e.left=this.BinaryToComplex(e.left),e.right=this.BinaryToComplex(e.right);else if(e.type==="unary"&&(e.operator==="-"||e.operator==="+")&&e.operand.type==="complex"&&e.operand.text===this.imaginary_number)return{...e.operand,position:e.position,text:this.expression.substring(e.position,e.operand.position+(e.operand.text||"").length),imaginary:e.operand.imaginary*(e.operator==="-"?-1:1)};return e}BinaryToRangeX(e){if(e.type==="binary"){if(e.operator===":"){let t,r="";if(e.left.type==="address"&&e.right.type==="address"){let i=e.left.position+e.left.label.length,n=e.right.position;t={type:"range",id:this.id_counter++,position:e.left.position,start:e.left,end:e.right,label:e.left.label+this.expression.substring(i,n)+e.right.label},r=t.start.label+":"+t.end.label,this.address_refcount[t.start.label]--,this.address_refcount[t.end.label]--;let s=[e.left.position,e.right.position];this.full_reference_list=this.full_reference_list.filter(a=>a.position!==s[0]&&a.position!==s[1])}else if((e.left.type==="literal"||e.left.type==="identifier")&&(e.right.type==="literal"||e.right.type==="identifier")){let i=this.UnitToAddress(e.left),n=this.UnitToAddress(e.right);i&&n&&(i.column===1/0&&n.column===1/0||i.row===1/0&&n.row===1/0)&&(r=i.label+":"+n.label,t={type:"range",id:this.id_counter++,position:e.left.position,start:i,end:n,label:r})}if(t)return this.dependencies.ranges[r]=t,this.full_reference_list.push(t),t;this.error="unexpected character: :",this.valid=!1}e.left=this.BinaryToRangeX(e.left),e.right=this.BinaryToRangeX(e.right)}return e}ArrangeUnits(e){if(e.length===0)return{type:"missing",id:this.id_counter++};if(e.length===1)return e[0];let t=[];for(let r=0;r<e.length;r++){let i=e[r];if(i.type==="operator")if(t.length===0||t[t.length-1].type==="operator")if(An[i.operator]){let n=this.BinaryToComplex(this.ArrangeUnits(e.slice(r+1)));if(!this.valid)return{type:"group",id:this.id_counter++,elements:e,explicit:!1};n.type==="binary"?(n.left={type:"unary",id:this.id_counter++,operator:i.operator,operand:n.left,position:i.position},i=n):i={type:"unary",id:this.id_counter++,operator:i.operator,operand:n,position:i.position},r=e.length}else return this.error=`unexpected character [2]: ${i.operator}`,this.error_position=i.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1};else{t.push(i);continue}if(t.length<2)t.push(i);else if(t[t.length-1].type==="operator"){let n=t[t.length-2],s=t[t.length-1],a=s.operator,o={type:"binary",id:this.id_counter++,left:n,operator:a,position:s.position,right:i};n.type==="binary"&&_r[a]>_r[n.operator]&&(o.left=n.left,o.operator=n.operator,o.position=n.position,o.right={type:"binary",id:this.id_counter++,left:n.right,right:i,operator:a,position:s.position}),t.splice(-2,2,o)}else return this.error="multiple expressions",this.error_position=i.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1}}return t[0]}ParseNext(e=!0){this.ConsumeWhiteSpace();let t=this.data[this.index];if(t===dr)return{type:"literal",id:this.id_counter++,position:this.index,value:this.ConsumeString()};if(t>=ve&&t<=it||t===this.decimal_mark_char)return this.ConsumeNumber();if(t===pn)return this.ConsumeArray();if(e&&(t===nt||t===mr)){let r=this.data[this.index+1];if(r>=ve&&r<=it||r===this.decimal_mark_char)return this.ConsumeNumber()}else if(t>=$e&&t<=St||t>=ot&&t<=kt||t===pr||t===_n||t===hr||t===At||t===at||t>=br&&t<=gr)return this.ConsumeToken(t);return t}ConsumeArray(){let e={type:"array",id:this.id_counter++,values:[],position:this.index};this.index++;let t=0,r=0;for(;this.index<this.length;){let i=this.ParseNext(),n=this.index;if(typeof i=="number")switch(this.index++,i){case si:r++,t=0;break;case st:t++;break;case bn:return e;default:this.valid&&(this.error="invalid character in array literal",this.error_position=n,this.valid=!1);break}else switch(i.type){case"literal":e.values[t]||(e.values[t]=[]),e.values[t][r]=i.value;break;default:this.valid&&(this.error="invalid value in array literal",this.error_position=n,this.valid=!1);break}}return e}ConsumeOperator(){for(let e of Cn)if(this.expression.substr(this.index,e.length)===e){let t=this.index;return this.index+=e.length,{type:"operator",id:this.id_counter++,operator:e,position:t}}return null}ConsumeArguments(){this.index++;let e=0,t=[];for(;this.index<this.length;){let r=this.ParseGeneric([this.argument_separator_char,fr]);r!==null&&t.push(r);let i=this.data[this.index];if(i===this.argument_separator_char){this.index++,e++;for(let n=t.length;n<e;n++)t.push({type:"missing",id:this.id_counter++})}else if(i===fr)return this.index++,t}return t}ConsumeToken(e){let t=[e],r=this.index,i=e===hr,n=0,s=!1;for(e===at&&(n=1,s=!0),++this.index;this.index<this.length;this.index++){let c=this.data[this.index];if(c>=$e&&c<=St||c>=ot&&c<=kt||c>=br&&c<=gr||c===pr||c===At||c===ur||c===gn||i||c>=ve&&c<=it||c===at||n>0&&c===ni||c===nt&&this.flags.r1c1&&n===1||n>0&&c===yn&&this.data[this.index-1]===at||n===1&&(c===st||c===ri)||n>1)t.push(c),c===at&&(n++,s=!0),c===ni&&n--,c===hr&&(i=!1);else break}let a=t.map(c=>String.fromCharCode(c)).join("");if(i)return this.error="unbalanced single quote",this.error_position=r,this.valid=!1,{type:"identifier",id:this.id_counter++,name:a,position:r};if(n)return this.error="unbalanced square bracket",this.error_position=r,this.valid=!1,{type:"identifier",id:this.id_counter++,name:a,position:r};if(a.toLowerCase()==="true")return{type:"literal",id:this.id_counter++,value:!0,position:r};if(a.toLowerCase()==="false")return{type:"literal",id:this.id_counter++,value:!1,position:r};if(this.ConsumeWhiteSpace(),this.data[this.index]===ii){let c=this.ConsumeArguments();return{type:"call",id:this.id_counter++,name:a,args:c,position:r}}if(this.flags.spreadsheet_semantics){let c=this.ConsumeAddress(a,r);if(c)return c;if(s){let h=this.ConsumeStructuredReference(a,r);if(h)return h}}let l={type:"identifier",id:this.id_counter++,name:a,position:r};return this.full_reference_list.push(l),l}ConsumeStructuredReference(e,t){let r=t,i=e.length,n=e,s="",a=0;for(;a<i;a++){if(e[a]==="["){e=e.substring(a);break}s+=e[a]}if(e[0]!=="["||e[e.length-1]!=="]")return;e=e.substring(1,e.length-1);let o=e.split(",").map(u=>u.trim()),l="column",c="";if(o.length>2)return;o.length===2?(/\[#this row\]/i.test(o[0])?l="row":/\[#all\]/i.test(o[0])&&(l="all"),c=o[1]):(c=o[0],c[0]==="@"&&(l="row",c=c.substring(1,c.length))),c[0]==="["&&c[c.length-1]==="]"&&(c=c.substring(1,c.length-1));let h={type:"structured-reference",id:this.id_counter++,label:n,position:t,scope:l,column:c,table:s};return this.full_reference_list.push(h),h}ConsumeAddress(e,t){let r=t,i=e.length,n,s=e.split("!");if(s.length>1&&(n=s.slice(0,s.length-1).join("!"),t+=n.length+1),this.flags.r1c1){let h=s[s.length-1].match(this.r1c1_regex);if(h){let u={type:"address",id:this.id_counter++,label:e,row:0,column:0,position:r,sheet:n,r1c1:!0};return h[1][0]==="["?(u.offset_row=!0,u.row=Number(h[1].substring(1,h[1].length-1))):u.row=Number(h[1])-1,h[2][0]==="["?(u.offset_column=!0,u.column=Number(h[2].substring(1,h[2].length-1))):u.column=Number(h[2])-1,u}}let a=this.ConsumeAddressColumn(t);if(!a)return null;t=a.position;let o=this.ConsumeAddressRow(t);if(!o)return null;t=o.position;let l=n?n+e.substr(n.length,t-r).toUpperCase():e.substr(0,t-r).toUpperCase();n&&n[0]==="'"&&(n=n.substr(1,n.length-2));let c={type:"address",id:this.id_counter++,label:l,row:o.row,column:a.column,absolute_row:o.absolute,absolute_column:a.absolute,position:r,sheet:n};return i!==t-r?null:(this.dependencies.addresses[c.label]=c,this.address_refcount[c.label]=(this.address_refcount[c.label]||0)+1,this.full_reference_list.push(c),c)}ConsumeAddressRow(e){let t=this.data[e]===At;t&&e++;let r=e,i=0;for(;;e++){let n=this.data[e];if(n>=ve&&n<=it)i*=10,i+=n-ve;else break}return r===e?!1:{absolute:t,row:i-1,position:e}}ConsumeAddressColumn(e){let t=-1,r=0,i=this.data[e]===At;for(i&&e++;;e++,r++){if(r>=4)return!1;let n=this.data[e];if(n>=$e&&n<=St)t=26*(1+t)+(n-$e);else if(n>=ot&&n<=kt)t=26*(1+t)+(n-ot);else break}return t<0?!1:{absolute:i,column:t,position:e}}ConsumeNumber(){let e=this.index,t=0,r=!1,i=!1,n=0,s=0,a=0,o="integer",l=0,c=!1,h=this.index;for(;this.index<this.length;this.index++,l++){let m=this.data[this.index];if(m===this.decimal_mark_char)if(o==="integer")o="fraction";else break;else if(m===fn){n/=100,a/=100,this.index++;break}else if(m===mr||m===nt)if(l===0)m===nt&&(i=!0);else break;else if(m===vn||m===wn)if(o==="integer"||o==="fraction")o="exponent",this.index<this.length-1&&(this.data[this.index+1]===mr?this.index++:this.data[this.index+1]===nt&&(this.index++,r=!0));else break;else if(m===this.imaginary_char){let f=this.data[this.index+1];if(f>=$e&&f<=St||f>=ot&&f<=kt||f>=br&&f<=gr||f===pr)break;if(o==="integer"||o==="fraction"){this.index++,c=!0;break}}else if(m>=ve&&m<=it)switch(o){case"integer":n=n*10+(m-ve);break;case"fraction":a=a*10+(m-ve),s++;break;case"exponent":t=t*10+(m-ve);break}else break}let u=n+a/Math.pow(10,s);return o==="exponent"&&(u=u*Math.pow(10,(r?-1:1)*t)),c?{type:"complex",id:this.id_counter++,position:e,imaginary:i?-u:u,real:0,text:this.expression.substring(h,this.index)||""}:{type:"literal",id:this.id_counter++,position:e,value:i?-u:u,text:this.expression.substring(h,this.index)||""}}ConsumeString(){this.index++;let e=[];for(;this.index<this.length;this.index++){let t=this.data[this.index];if(t===dr&&(this.index++,this.index>=this.length||this.data[this.index]!==dr))break;e.push(t)}return e.map(t=>String.fromCharCode(t)).join("")}ConsumeWhiteSpace(){for(;this.index<this.length;){let e=this.data[this.index];if(e===ri||e===hn||e===un||e===mn||e===dn)this.index++;else return}}};var oi=(d,e=",")=>{let t=0,r=[],i="",n=[],s=d.length;if(/[\r\n"]/.test(e))throw new Error("invalid delimiter");for(let a=0;a<s;a++){let o=d[a];if(!(a===0&&o.charCodeAt(0)===65279))if(t===0)switch(o){case e:r.push(i),i="";break;case"\r":break;case`
3
+ `:r.push(i),i="",n.push(r),r=[];break;case'"':i.length===0?t=1:i+=o;break;default:i+=o;break}else o==='"'?a+1<s&&d[a+1]==='"'?(i+='"',a++):t=0:i+=o}return(r.length||i.length)&&(r.push(i),n.push(r)),n};var yr=class{constructor(){}static get instance(){return this._instance}HTML(e){let t=[];for(let r of e){let i=[];for(let n of r)n.pre&&i.push("<pre>"),n.emphasis&&i.push("<em>"),n.strong&&i.push("<strong>"),n.strike&&i.push("<strike>"),i.push(n.text),n.strike&&i.push("</strike>"),n.strong&&i.push("</strong>"),n.emphasis&&i.push("</em>"),n.pre&&i.push("</pre>");t.push(i.join(""))}return t.join(`<br/>
4
+ `)}Dummy(e=""){return e.split(/\n/).map(t=>[{text:t}])}Parse(e=""){let t=this.Tokenize(e);for(let r=0;r<t.length;r++){let i=t[r];if(i.type==="delimeter"){let n=t[r-1],s=t[r+1],a=!n||n.type==="whitespace"||n.type==="newline",o=n&&n.type==="text"&&/[^\w\d]$/.test(n.text),l=!s||s.type==="whitespace"||s.type==="newline",c=s&&s.type==="text"&&/^[^\w\d]/.test(s.text);i.left_flanking=!l&&(!c||a),i.right_flanking=!a&&(!o||l||c)}}return this.ApplyFormatting(t),this.Consolidate(t)}IsWhitespace(e){return e===" "||e===" "}IsNewline(e){return e==="\r"||e===`
5
+ `}IsDelimeter(e){return e==="*"||e==="_"||e==="~"}Consolidate(e){let t=[],r={},i=[],n={type:"text",text:""};for(let s of e)if(s.type==="newline")n.text.length&&i.push(n),n={...r,text:"",type:"text"},t.push(i),i=[];else switch((!!r.strong!=!!s.strong||!!r.emphasis!=!!s.emphasis||!!r.strike!=!!s.strike)&&(r.strong=!!s.strong,r.emphasis=!!s.emphasis,r.strike=!!s.strike,n.text.length&&i.push(n),n={...r,text:"",type:"text"}),s.type){case"text":case"whitespace":n.text+=s.text;break;case"delimeter":for(let a=0;a<s.length;a++)n.text+=s.char;break}return n.text.length&&i.push(n),i.length&&t.push(i),t}ApplyFormatting(e,t){let r=0,i=e.length;for(r=0;r<i;r++){let n=e[r];if(n.type==="delimeter"){if(t&&n.right_flanking&&t.char===n.char&&n.length>0)return{index:r,token:n};if(n.left_flanking){let s=this.ApplyFormatting(e.slice(r+1),n);if(s.token){let a=Math.min(s.token.length,n.length),o=n.char==="~",l=!o&&!!(a%2),c=!o&&a>=2;for(let h=r+1;h<=r+s.index;h++)e[h].strong=!!e[h].strong||c,e[h].emphasis=!!e[h].emphasis||l,e[h].strike=!!e[h].strike||o;s.token.length-=a,n.length-=a,n.length>0?r--:r+=s.index}}}}return{index:r}}Tokenize(e=""){let t=[],r=e.length,i=0,n=!1,s="";for(i=0;i<r;i++){let a=e[i];if(this.IsWhitespace(a)){s&&t.push({type:"text",text:s});let o=a;for(;;){let l=e[i+1];if(this.IsWhitespace(l))o+=l,i++;else break}t.push({type:"whitespace",text:o}),n=!1,s=""}else if(this.IsNewline(a)){s&&t.push({type:"text",text:s});let o=a;for(;;){let l=e[i+1];if(this.IsNewline(l))o+=l,i++;else break}t.push({type:"newline",text:o}),n=!1,s=""}else if(n)s+=a,n=!1;else if(this.IsDelimeter(a)){s&&t.push({type:"text",text:s});let o=a;for(;;){let l=e[i+1];if(l===a)o+=l,i++;else break}t.push({type:"delimeter",text:o,char:a,length:o.length}),n=!1,s=""}else a==="\\"?n=!0:s+=a}return s&&t.push({type:"text",text:s}),t}},we=yr;we._instance=new yr;var re=()=>Promise.resolve();var Sn=1e3,oe=class{constructor(e=!1,t){this.verbose=e;this.log_id=t;this.queue=[];this.dispatched=!1;this.subscribers=[]}Publish(e){this.verbose&&console.info(`es publish (${this.log_id})`,e),Array.isArray(e)?this.queue.push(...e):this.queue.push(e),this.dispatched||(this.dispatched=!0,re().then(()=>{let t=this.queue.slice(0);this.dispatched=!1,this.queue=[];for(let r of t)for(let i of this.subscribers)i.subscriber(r)}))}Subscribe(e){let t=Sn++;return this.subscribers.push({subscriber:e,token:t}),t}Cancel(e){this.subscribers=this.subscribers.filter(t=>t.token!==e)}CancelAll(){this.subscribers=[]}};var pe=class{static MeasureColorARGB(e){let t=this.MeasureColor(e),r="FF";for(let i=0;i<3;i++){let n=t[i].toString(16);n.length===0?r+="00":n.length===1?r+=`0${n}`:r+=n}return r.toUpperCase()}static MeasureColor(e){let t=this.color_cache[e];if(t)return t;this.color_measurement_canvas||(this.color_measurement_canvas=document.createElement("canvas"),this.color_measurement_canvas.width=1,this.color_measurement_canvas.height=1);let r=this.color_measurement_canvas.getContext("2d",{willReadFrequently:!0});return r?(r.fillStyle="#fff",r.fillRect(0,0,1,1),r.fillStyle=e,r.fillRect(0,0,1,1),t=new Uint8ClampedArray(r.getImageData(0,0,1,1).data),this.color_cache[e]=t,t):new Uint8ClampedArray(3)}static EnsureMeasurementNode(){if(!this.text_measurement_node){let e=document.querySelector(".treb-chart-measurement-node");e?this.text_measurement_node=e:(this.text_measurement_node=document.createElement("div"),this.text_measurement_node.classList.add("treb-chart-measurement-node"),this.text_measurement_node.style.margin="0px",this.text_measurement_node.style.padding="0px",this.text_measurement_node.style.height="initial",this.text_measurement_node.style.width="initial",this.text_measurement_node.style.whiteSpace="nowrap",this.text_measurement_node.style.position="fixed",this.text_measurement_node.style.border="0px",this.text_measurement_node.style.border="1px solid red",this.text_measurement_node.style.boxSizing="content-box",this.text_measurement_node.style.top=this.text_measurement_node.style.left="-1000px",document.body.appendChild(this.text_measurement_node))}}static FontLoaded(e,t=!1,r=400){let i=`${t?"italic":""} ${r} 20pt ${e}`,n=this.MeasureText(`${i}, sans-serif`,"check font"),s=this.MeasureText(`${i}, serif`,"check font"),a=this.MeasureText(`${i}, monospace`,"check font");return n.width===s.width&&s.width===a.width}static MeasureText(e,t,r=0){this.EnsureMeasurementNode(),this.text_measurement_node.style.font=e,/\n/.test(t)?(t=t.replace(/\n/g,"<BR/>"),this.text_measurement_node.innerHTML=t):this.text_measurement_node.textContent=t,this.text_measurement_node.style.lineHeight="1em",r?this.text_measurement_node.style.transform=`rotate(${r}deg)`:this.text_measurement_node.style.transform="";let i=this.text_measurement_node.getBoundingClientRect();return{width:i.width,height:i.height}}};pe.color_cache={};var vr,kn=(d,e,t)=>{let r={};return Array.prototype.forEach.call(e,i=>{e[i]!==t[i]&&(r[i]=e[i])}),(Object.keys(r).map(i=>`${i}: ${r[i]}`).join("; ")+"; "+(d.getAttribute("style")||"")).trim().replace(/"/g,"'")},li=(d,e)=>{let t=d.cloneNode(!1),r=getComputedStyle(d),i=kn(d,r,e);return t.removeAttribute("class"),t.setAttribute("style",i),Array.prototype.forEach.call(d.childNodes,n=>{switch(n.nodeType){case Node.ELEMENT_NODE:t.appendChild(li(n,r));break;case Node.TEXT_NODE:d.textContent&&t.appendChild(document.createTextNode(d.textContent));break;case Node.COMMENT_NODE:break;default:console.warn("unhandled node type in serialize",n)}}),t},ci=d=>{if(!vr){let e={},t=document.createElement("iframe");t.style.width="10px",t.style.height="10px",t.style.position="absolute",t.style.left="-100px",document.body.appendChild(t);let r=t.contentDocument;if(r){let i=r.createElement("div");r.body.appendChild(i);let n=getComputedStyle(i);Array.prototype.forEach.call(n,s=>e[s]=n[s])}document.body.removeChild(t),vr=e}return li(d,vr)};var En={data:!0,same_origin:!0,remote:!1},Rt=(d,e={})=>{let t={...En,...e};try{let r=new URL(d,document.location.href);return r.protocol==="data:"?t.data?r.href:void 0:r.origin===document.location.origin?t.same_origin?r.href:void 0:t.remote?r.hash:void 0}catch(r){console.error(r)}};var di=(d,e,t=6.5,r=!1,i=!1)=>{if(e===d)e++,d&&d--;else{let h=Math.round(e*1e5)/1e5;Math.abs(h-e)/(e-d)<1e-5&&(e=h)}let n=e-d,s=Math.log(n)/Math.log(10),a=Math.floor(Math.abs(s))*(s<0?-1:1)-1;i&&(a=Math.max(0,a));let o=i?[1,2,5,10,15,20,25,50,100]:[.1,.25,.5,1,2.5,5,10,25,50,100],l=-1,c=0;for(let h of o){let u=h*Math.pow(10,a),m=Math.floor(d/u)*u,b=(Math.ceil(e/u)*u-m)/u,p=Math.abs(b-t);(l<0||p<c)&&(!r||b<=t)&&(c=p,l=u)}return d=Math.floor(d/l)*l,e=Math.ceil(e/l)*l,t=Math.round((e-d)/l),{scale:a,step:l,count:t,min:d,max:e}};var xe=class{constructor(){this.date_format=!1;this.string_format=!1;this.fraction_format=!1;this.twelve_hour=!1;this.fraction_denominator=0;this.fraction_integer=!0;this.fraction_align=0;this.fraction_denominator_digits=0;this.integer_min_digits=0;this.decimal_min_digits=0;this.decimal_max_digits=0;this.grouping=!1;this.has_number_format=!1;this.prefix=[{text:""}];this.suffix=[{text:""}];this.scaling=0;this.percent=!1;this.exponential=!1;this.has_asterisk=!1}};var hi=42,ui=95,wr=63,It=48,mi=46,xr=44,fi=37,Cr=34,ct=35,pi=59,zt=92,bi=64,Tn=91,Rn=93,gi=69,_i=101,In=72,zn=104,Mn=77,Nn=109,Dn=83,Un=115,Ln=68,Pn=100,Vn=89,Fn=121,Gn=65,Hn=97;var le=class{static Parse(e){if(this.pattern=e,this.characters=e.split("").map(t=>t.charCodeAt(0)),this.char_index=0,this.current_section=new xe,this.sections=[this.current_section],this.ParseDatePattern())return this.sections;for(this.char_index=0,this.current_section=new xe,this.sections=[this.current_section];this.char_index<this.characters.length;)this.ConsumeChar();return this.sections}static ConsumeString(){let e="";for(this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case zt:this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index+1<this.characters.length&&(e+=this.pattern[++this.char_index]);break;case Cr:return this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated string")}static ConsumeFormatting(){let e="";for(++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case zt:throw new Error("invalid escape character in formatting block");case Rn:return this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated format")}static ScanFractionFormat(){let e=/^([#?]+ +){0,1}([#?]+)\/([#?0-9]+)(?:$|[^#?0-9])/,r=this.pattern.substr(this.char_index).match(e);if(!r)return!1;let i=(r[1]||"").length+r[2].length+r[3].length+1;this.current_section.fraction_format=!0,this.current_section.fraction_integer=!!r[1];let n=Number(r[3]);return isNaN(n)||(this.current_section.fraction_denominator=n),this.current_section.decimal_max_digits=this.current_section.fraction_denominator_digits=r[3].length,this.char_index+=i,this.current_section.has_number_format=!0,!0}static ConsumeNumberFormat(){let e=0;for(this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case this.group_separator:{let r=!1;for(let i=this.char_index+1;!r&&i<this.characters.length;i++){let n=this.characters[i];if(n===this.decimal_mark||n===ct||n===It)r=!0;else if(n!==xr)break}if(r){if(e===1)throw new Error("invalid grouping in decimal part");this.current_section.grouping=!0}else this.current_section.scaling=(this.current_section.scaling||1)*1e3}break;case this.decimal_mark:if(e===1)throw new Error("too many decimal marks");e=1;break;case ct:e===1?this.current_section.decimal_max_digits++:this.current_section.integer_min_digits&&this.current_section.integer_min_digits++;break;case It:e===1?(this.current_section.decimal_max_digits++,this.current_section.decimal_min_digits=this.current_section.decimal_max_digits):this.current_section.integer_min_digits++;break;default:return}}static AppendCharAsText(e=!0){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=this.pattern[this.char_index]:this.current_section.prefix[this.current_section.prefix.length-1].text+=this.pattern[this.char_index],e&&this.char_index++}static AppendString(e){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=e:this.current_section.prefix[this.current_section.prefix.length-1].text+=e}static AppendTextPart(e){this.current_section.has_number_format?(this.current_section.suffix.push(e),this.current_section.suffix.push({text:""})):(this.current_section.prefix.push(e),this.current_section.prefix.push({text:""}))}static ConsumeChar(){let e=this.characters[this.char_index];if(!((e===wr||e===ct)&&!this.current_section.has_number_format&&!this.current_section.string_format&&this.ScanFractionFormat()))switch(e){case pi:this.char_index++,this.current_section=new xe,this.sections.length===3&&(this.current_section.string_format=!0),this.sections.push(this.current_section);break;case bi:this.char_index++,this.AppendTextPart({text:"@",flag:5}),this.current_section.string_format=!0;break;case It:case ct:case mi:case xr:!this.current_section.has_number_format&&!this.current_section.string_format?(this.ConsumeNumberFormat(),this.current_section.has_number_format=!0):this.AppendCharAsText();break;case Tn:this.AppendTextPart({text:this.ConsumeFormatting(),flag:6});break;case Cr:this.AppendString(this.ConsumeString());break;case wr:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case ui:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case hi:if(this.current_section.has_asterisk)throw new Error("we don't support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case _i:case gi:this.current_section.percent||this.current_section.exponential||this.current_section.string_format?this.AppendCharAsText():(this.current_section.exponential=!0,this.char_index++);break;case fi:!this.current_section.exponential&&!this.current_section.string_format&&(this.current_section.percent=!0),this.AppendCharAsText();break;case zt:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}static ParseDatePattern(){for(this.date_pattern=!0;this.date_pattern&&this.char_index<this.pattern.length;)this.DatePatternConsumeChar();if(this.date_pattern){this.date_pattern=!1;for(let e of this.sections)for(let t of e.prefix)t.flag&&t.flag&7&&(this.date_pattern=!0)}return this.date_pattern&&(this.sections[0].date_format=!0,this.sections[0].prefix.forEach((e,t)=>{if(e.flag===3&&(e.text==="mm"||e.text==="m")){if(t)for(let r=t-1;r;r--){let i=this.sections[0].prefix[r];if(i.flag===3){/h/i.test(i.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}if(t<this.sections[0].prefix.length-1)for(let r=t+1;r<this.sections[0].prefix.length;r++){let i=this.sections[0].prefix[r];if(i.flag===3){/s/i.test(i.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}}})),this.date_pattern}static ConsumeDatePart(){let e=this.pattern[this.char_index++],t=e.toLowerCase(),r={text:e,flag:3};for(;this.pattern[this.char_index]&&this.pattern[this.char_index].toLowerCase()===t;)r.text+=this.pattern[this.char_index++];if(t==="s"&&this.pattern[this.char_index]===".")for(r.text+=this.pattern[this.char_index++];this.pattern[this.char_index]==="0";)r.text+=this.pattern[this.char_index++];return r}static ConsumeAMPM(){let e=this.pattern.substr(this.char_index,5);if(e==="am/pm"||e==="AM/PM")return this.char_index+=5,this.sections[0].twelve_hour=!0,{text:e,flag:3};if(e=this.pattern.substr(this.char_index,3),e==="a/p"||e==="A/P")return this.char_index+=3,this.sections[0].twelve_hour=!0,{text:e,flag:3}}static DatePatternConsumeChar(){switch(this.characters[this.char_index]){case pi:this.char_index=this.characters.length;break;case It:case ct:case _i:case gi:case fi:case bi:this.date_pattern=!1;break;case In:case zn:case Mn:case Nn:case Dn:case Un:case Ln:case Pn:case Vn:case Fn:this.AppendTextPart(this.ConsumeDatePart());break;case Gn:case Hn:{let t=this.ConsumeAMPM();t?this.AppendTextPart(t):this.AppendCharAsText()}break;case Cr:this.AppendString(this.ConsumeString());break;case wr:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case ui:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case hi:if(this.current_section.has_asterisk)throw new Error("we don't support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case zt:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}};le.date_pattern=!1,le.pattern="",le.char_index=0,le.characters=[],le.sections=[],le.current_section=new xe,le.preserve_formatting_characters=!1,le.decimal_mark=mi,le.group_separator=xr;var Pe=d=>(d>=60&&d--,new Date(-22090752e5+864e5*d)),je=(d,e=!0)=>{if(e){let t=new Date(d),r=new Date;r.setUTCMilliseconds(t.getUTCMilliseconds()),r.setUTCSeconds(t.getUTCSeconds()),r.setUTCMinutes(t.getUTCMinutes()),r.setUTCHours(t.getHours()),r.setUTCDate(t.getDate()),r.setUTCMonth(t.getMonth()),r.setUTCFullYear(t.getFullYear()),d=r.getTime()}return d=(d+22090752e5)/864e5,d>=60&&d++,d},Ce=class{constructor(e){this.magic_decimal=!1;this._pattern="";this.decimal_zero_regexp=[];this.cloned=[];if(this._pattern=e,this.sections=le.Parse(e),this.sections.length||(this.sections=[]),this.sections[0]||(this.sections[0]=new xe),this.sections[1]||(this.sections[1]={...this.sections[0]},this.sections[1].prefix=JSON.parse(JSON.stringify(this.sections[1].prefix)),this.sections[1].suffix=JSON.parse(JSON.stringify(this.sections[1].suffix)),this.sections[1].prefix.push({text:"-"}),this.cloned[1]=!0),this.sections[2]||(this.sections[2]={...this.sections[0]},this.cloned[2]=!0),!this.sections[3]){for(let t of this.sections[0].prefix)if(t.flag===5){this.sections[3]={...this.sections[0]},this.sections[3].string_format=!0,this.cloned[3]=!0;break}}this.decimal_zero_regexp=this.sections.map(t=>{if(t.decimal_max_digits>t.decimal_min_digits)return new RegExp(`0{1,${t.decimal_max_digits-t.decimal_min_digits}}(?:$|e)`)})}get pattern(){return this._pattern}get date_format(){return this.sections[0]&&this.sections[0].date_format}static FormatPartsAsText(e,t=0){let r=-1,i=e.map((n,s)=>{switch(n.flag){case 2:return r=s,n.text;case 1:return n.text.replace(/./g," ");case 6:return"";default:return n.text}});if(r>=0&&t){let n=i.reduce((a,o,l)=>l===r?a:a+o.length,0),s="";for(let a=0;a<t-n;a++)s+=i[r];i[r]=s}return i.join("")}SetDecimal(e){for(let t of this.sections)t.fraction_format||(t.decimal_min_digits=e,t.decimal_max_digits=e)}IncreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.min(e.fraction_denominator_digits+1,4)):(e.decimal_min_digits++,e.decimal_max_digits=e.decimal_min_digits)})}DecreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.max(e.fraction_denominator_digits-1,1)):(e.decimal_min_digits=Math.max(0,e.decimal_min_digits-1),e.decimal_max_digits=e.decimal_min_digits)})}AddGrouping(){this.sections.forEach(e=>{e.grouping=!0})}RemoveGrouping(){this.sections.forEach(e=>{e.grouping=!1})}ToggleGrouping(){let e=!this.sections[0].grouping;this.sections.forEach(t=>{t.grouping=e})}toString(){return this.sections[0].date_format?this._pattern:this.sections.filter((e,t)=>!this.cloned[t]).map(e=>{let t="",r=0;if(e.fraction_format){e.fraction_integer&&(t+="? ");let i="";for(let n=0;n<e.fraction_denominator_digits;n++)i+="#";t+=i,t+="/",e.fraction_denominator?t+=e.fraction_denominator:t+=i}else if(e.has_number_format){for(r=0;r<e.integer_min_digits;r++)t+="0";if(e.grouping&&(t.length<4&&(t=("####"+t).slice(-4)),t=t.replace(/[\d#]{1,3}(?=([\d#]{3})+(?![\d#]))/g,"$&,")),e.decimal_max_digits||e.decimal_min_digits){for(t+=".",r=0;r<e.decimal_min_digits;r++)t+="0";for(;r<e.decimal_max_digits;r++)t+="#"}if(e.scaling){let i=Math.log10(e.scaling)/3;for(r=0;r<i;r++)t+=","}e.exponential&&(t+="e")}return e.prefix.map(i=>i.flag===1?i.text==="0"?"?":"_"+i.text:i.flag===2?"*"+i.text:i.flag===6?"["+i.text+"]":i.text).join("")+t+e.suffix.map(i=>i.flag===1?i.text==="0"?"?":"_"+i.text:i.flag===2?"*"+i.text:i.text).join("")}).join(";")}FormatDimensionedQuantity(e){if(this.transform_value){let r=this.transform_value(e);if(nr(r))e=r;else return typeof r=="string"?r:this.FormatParts(r)}let t=this.FormatParts(e.value||0);return e.unit&&t.push({text:" "},{text:e.unit}),t}FormatComplex(e){let t=[],r=[],i=!1,n=!!e.imaginary;n&&(t=this.FormatParts(e.imaginary),n=t.some(o=>/[1-9]/.test(o.text)),t.length===1&&this.sections[0].integer_min_digits<=1&&t[0].text==="1"?(t[0].text="",i=!0):t.length===1&&this.sections[1].integer_min_digits<=1&&t[0].text==="-1"&&(t[0].text="-",i=!0));let s=!!e.real;s&&(r=this.FormatParts(e.real),s=r.some(o=>/[1-9]/.test(o.text)));let a=[];if(s||!s&&!n){if(a.push(...r),n){let o=Math.abs(e.imaginary);a.push({text:e.imaginary<0?` ${Ce.minus_character} `:" + "});let l=i?[]:this.FormatParts(Math.abs(e.imaginary));a.push(...l,{text:Ce.imaginary_character})}}else n&&a.push(...t,{text:Ce.imaginary_character});return a}FormatParts(e){if(typeof e!="number"&&!this.sections[3])return[{text:e.toString()}];let{parts:t,section:r}=this.BaseFormat(e),i=[];if(r.date_format||r.string_format)for(let n of t)typeof n=="string"?i.push({text:n}):i.push(n);else this.magic_decimal&&t[1]===""&&t.splice(1,1),i=[...r.prefix.map(n=>({...n})),{text:r.has_number_format?t.join(T.decimal_separator):""},...r.suffix.map(n=>({...n}))];for(let n=1;n<i.length;n++)i[n].flag===i[n-1].flag&&(i[n].text=i[n-1].text+i[n].text,i[n-1].text="");return i.filter(n=>n.text)}Format(e,t=0){return Ce.FormatPartsAsText(this.FormatParts(e),t)}ZeroPad(e,t){for(;e.length<t;)e="0"+e;return e}DateFormat(e){let t=Pe(e),r=this.sections[0],i=t.getUTCHours();return r.twelve_hour&&(i>12&&(i-=12),i===0&&(i=12)),{parts:r.prefix.map(s=>{if(s.flag===4)return s.text==="mm"?{text:this.ZeroPad(t.getUTCMinutes().toString(),2)}:{text:this.ZeroPad(t.getUTCMinutes().toString(),1)};if(s.flag===3){switch(s.text.toLowerCase()){case"am/pm":case"a/p":{let o=s.text.split("/");return{text:t.getUTCHours()>12?o[1]:o[0]}}case"mmmmm":return{text:T.date_components.long_months[t.getUTCMonth()][0]};case"mmmm":return s.text==="MMMM"?{text:T.date_components.long_months[t.getUTCMonth()].toUpperCase()}:{text:T.date_components.long_months[t.getUTCMonth()]};case"mmm":return s.text==="MMM"?{text:T.date_components.short_months[t.getUTCMonth()].toUpperCase()}:{text:T.date_components.short_months[t.getUTCMonth()]};case"mm":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),2)};case"m":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),1)};case"ddddd":case"dddd":return s.text==="DDDDD"||s.text==="DDDD"?{text:T.date_components.long_days[t.getUTCDay()].toUpperCase()}:{text:T.date_components.long_days[t.getUTCDay()]};case"ddd":return s.text==="DDD"?{text:T.date_components.short_days[t.getUTCDay()].toUpperCase()}:{text:T.date_components.short_days[t.getUTCDay()]};case"dd":return{text:this.ZeroPad(t.getUTCDate().toString(),2)};case"d":return{text:this.ZeroPad(t.getUTCDate().toString(),1)};case"yyyy":case"yyy":return{text:t.getUTCFullYear().toString()};case"yy":case"y":return{text:this.ZeroPad((t.getUTCFullYear()%100).toString(),2)};case"hh":return{text:this.ZeroPad(i.toString(),2)};case"h":return{text:this.ZeroPad(i.toString(),1)};case"ss":return{text:this.ZeroPad(t.getUTCSeconds().toString(),2)};case"s":return{text:this.ZeroPad(t.getUTCSeconds().toString(),1)}}let a=s.text.match(/^(s+)\.(0+)$/);if(a)return{text:this.ZeroPad(t.getUTCSeconds().toString(),a[1].length)+T.decimal_separator+(t.getUTCMilliseconds()/1e3).toFixed(a[2].length).substr(2)}}return{...s}}),section:r}}StringFormat(e,t){let r=[];for(let i of t.prefix)i.flag===5?r.push({text:e}):r.push({...i});return{parts:r,section:t}}Round2(e,t){let r=Math.pow(10,t);return Math.round(r*e)/r}FormatFraction(e,t){t.percent&&(e*=100);let r={denominator:1,numerator:Math.round(e),error:Math.abs(Math.round(e)-e)};if(t.fraction_denominator)r.denominator=t.fraction_denominator,r.numerator=Math.round(e*r.denominator);else if(r.error){let n=Ce.fraction_limits[t.fraction_denominator_digits-1]||Ce.fraction_limits[0];for(let s=2;s<=n;s++){let a=Math.round(e*s),o=Math.abs(a/s-e);if(o<r.error&&(r={numerator:a,denominator:s,error:o},!o))break}}let i=[];if(t.fraction_integer){let n=Math.floor(r.numerator/r.denominator);r.numerator%=r.denominator,(n||!r.numerator)&&(i.push(n.toString()),r.numerator&&i.push(" "))}else r.numerator||i.push("0");return r.numerator&&(i.push(r.numerator.toString()),i.push("/"),i.push(r.denominator.toString())),i.join("")}BaseFormat(e){if(this.sections[0].date_format)return this.DateFormat(Number(e));if(typeof e!="number")return this.StringFormat(e.toString(),this.sections[3]);let t=this.sections[0],r=this.decimal_zero_regexp[0];e<0&&(t=this.sections[1]);let i=t.percent?t.decimal_max_digits+2:t.decimal_max_digits,n=Math.pow(10,-i)/2,s=Math.abs(e);if(s<n&&(t=this.sections[2],r=this.decimal_zero_regexp[2]),t.scaling&&(s/=t.scaling,s<n&&(t=this.sections[2],r=this.decimal_zero_regexp[2])),t.string_format)return this.StringFormat(e.toString(),t);let a="";if(t.fraction_format)return{parts:[this.FormatFraction(s,t)],section:t};t.exponential?a=s.toExponential(t.decimal_max_digits):(t.percent&&(s*=100),a=this.Round2(s,t.decimal_max_digits).toFixed(t.decimal_max_digits)),r&&(a=a.replace(r,""));let o=a.split(".");for(;o[0].length<t.integer_min_digits;)o[0]=("0000000000000000"+o[0]).slice(-t.integer_min_digits);return t.integer_min_digits===0&&o[0]==="0"&&(o[0]=""),t.grouping&&(o[0]=o[0].replace(Ce.grouping_regexp,"$&"+T.grouping_separator)),{parts:o,section:t}}},Y=Ce;Y.grouping_regexp=/\d{1,3}(?=(\d{3})+(?!\d))/g,Y.fraction_limits=[9,99,999,9999],Y.imaginary_character="\u{1D456}",Y.minus_character="-";var M=class{static Get(e,t=!1){if(t&&e==="General")return this.complex_general;let r=this.symbolc_name_map[e.toLowerCase()],i=this.cache[r||e];return i||(i=new Y(e),this.cache[e]=i),i}static Equals(e,t){if(e===t)return!0;let r=this.Get(e),i=this.Get(t);return r.pattern===i.pattern}static Translate(e){let t=this.symbolc_name_map[e.toLowerCase()];return t?this.cache[t].toString():e}static SymbolicName(e){for(let t of Object.keys(this.base_formats))if(e===this.base_formats[t])return t;return null}static InitCache(){for(let e of Object.keys(this.base_formats))this.cache[e]=new Y(this.base_formats[e]),this.symbolc_name_map[e.toLowerCase()]=e;this.cache.General.magic_decimal=!0,this.complex_general=new Y("0.###"),this.complex_general.magic_decimal=!0;for(let e of Object.keys(this.aliases))this.cache[e]=this.cache[this.aliases[e]],this.symbolc_name_map[e.toLowerCase()]=e}};M.cache={},M.symbolc_name_map={},M.base_formats={Accounting:"_(#,##0.00_);(#,##0.00);-???",Number:"0.00",Integer:"0",Percent:"0.00%",General:"0.######",Fraction:"# ?/?",Dollar:"$* _(#,##0.00_);$* (#,##0.00);$* -???",Exponential:"0.000e","Short Date":"mm/dd/yy","Long Date":"dddd, mmm d yyyy",Timestamp:"mm-dd-yy hh:mm:ss"},M.aliases={Scientific:"Exponential",Percentage:"Percent",Currency:"Dollar"};M.InitCache();var yi=new Date().getUTCFullYear(),Sr=class{TestDate(e){let t=Date.parse(e);if(isNaN(t))return!1;let r=new Date(t),n=e.replace(/[\d\-\\/,.\s]+/g," ").toLocaleLowerCase().split(/\s+/).map(o=>o.trim()).filter(o=>!!o);if(!n.length)return t;if(!this.compare_month){this.compare_month={};for(let o=0;o<12;o++)this.compare_month[T.date_components.long_months[o].toLocaleLowerCase().replace(/\./,"")]=o,this.compare_month[T.date_components.short_months[o].toLocaleLowerCase().replace(/\./,"")]=o}if(!this.compare_day){this.compare_day={};for(let o=0;o<7;o++)this.compare_day[T.date_components.long_days[o].toLocaleLowerCase().replace(/\./,"")]=o,this.compare_day[T.date_components.short_days[o].toLocaleLowerCase().replace(/\./,"")]=o}let s=!1,a=!1;for(let o of n){let l=!1;for(let[c,h]of Object.entries(this.compare_month))if(o===c){if(s||r.getUTCMonth()!==h)return!1;l=!0,s=!0}if(!l){for(let[c,h]of Object.entries(this.compare_day))if(o===c){if(a||r.getUTCDay()!==h)return!1;l=!0,a=!0}}if(!l)return!1}return a&&!s?!1:t}TryParse(e=""){let t=0;if(e[0]==="'")return{value:e,type:2};if(e==="")return{value:e,type:2};if(e==="NaN")return{value:NaN,type:3,hints:1};let r=e.trim(),i=r.match(/^[$](.*?)$/);i&&(r=i[1],t|=8);let n=r.match(/^\((.*?)\)$/);n&&(r=n[1],t|=32);let s=r.match(/^(.*?)%\s*$/);s&&(r=s[1],t|=4),T.decimal_separator==="."?/,/.test(r)&&(r=r.replace(/,/g,""),t|=16):(r=r.replace(/(\d)\s+/g,"$1"),r=r.replace(/\./g,""),r=r.replace(/,/,"."));let a=Number(r);if(a===null||isNaN(a)){let o=e.toLowerCase();if(o==="false")return{value:!1,type:4};if(o==="true")return{value:!0,type:4};let l=this.TestDate(e);if(l!==!1&&!isNaN(l)){let c=new Date(l),h=c.getUTCFullYear();if(h>=yi-200&&h<=yi+200)return t=64,(c.getHours()||c.getMinutes()||c.getSeconds())&&(t|=128),{value:je(l),type:3,hints:t}}return{value:e,type:2}}if(n&&(a=-a),s){let o=a<0?-1:1,l=(o*a).toString().split(".");l[0]=("00"+l[0]).replace(/(\d\d)$/,".$1"),a=Number(l.join(""))*o}return/e/.test(e)&&(t|=2),{value:a,type:3,hints:t}}},be=new Sr;var dt="http://www.w3.org/2000/svg",Mt=class{constructor(e,t,r={x:0,y:0}){this.theme=t;this.offset=r;this.g=document.createElementNS(dt,"g"),this.g.setAttribute("transform",`translate(${r.x}, ${r.y})`),this.outline=document.createElementNS(dt,"rect"),this.outline.setAttribute("class","outline"),e?(this.g.setAttribute("class","selection primary-selection"),this.fill=document.createElementNS(dt,"path"),this.fill.setAttribute("class","fill"),this.nub=document.createElementNS(dt,"rect"),this.nub.setAttribute("class","nub"),this.g.appendChild(this.fill),this.g.appendChild(this.outline),this.g.appendChild(this.nub)):(this.g.setAttribute("class","selection alternate-selection"),this.fill=document.createElementNS(dt,"rect"),this.fill.setAttribute("class","fill"),this.g.appendChild(this.fill),this.g.appendChild(this.outline))}Offset(e){this.g.setAttribute("transform",`translate(${e.x}, ${e.y})`)}Show(e=!0){this.g.style.display=e?"block":"none"}SetOutline(e,t=!1){this.outline.setAttribute("x",(e.left-1).toString()),this.outline.setAttribute("y",(e.top-1).toString()),this.outline.setAttribute("width",(e.width+1).toString()),this.outline.setAttribute("height",(e.height+1).toString()),t&&this.fill&&(this.fill.setAttribute("x",e.left.toString()),this.fill.setAttribute("y",e.top.toString()),this.fill.setAttribute("width",e.width.toString()),this.fill.setAttribute("height",e.height.toString()))}SetFill(e,t){if(!this.fill)return;let r=[];r.push("M"+e.left+" "+e.top),r.push("L"+e.left+" "+e.bottom),r.push("L"+e.right+" "+e.bottom),r.push("L"+e.right+" "+e.top),r.push("Z"),r.push("M"+t.left+" "+t.top),r.push("L"+t.right+" "+t.top),r.push("L"+t.right+" "+t.bottom),r.push("L"+t.left+" "+t.bottom),r.push("Z"),this.fill.setAttribute("d",r.join(" "))}SetNub(e){this.nub&&(this.nub.setAttribute("x",(e.left+e.width-4).toString()),this.nub.setAttribute("y",(e.top+e.height-4).toString()),this.nub.setAttribute("width","7"),this.nub.setAttribute("height","7"))}};var kr="http://www.w3.org/2000/svg";var Ve=class{constructor(e,t,r){this.theme=e;this.container=t;this.orientation=r;this.g=document.createElementNS(kr,"g"),this.g.setAttribute("class","treb-header-overlay"),this.overlay=document.createElementNS(kr,"rect"),this.overlay.setAttribute("class","treb-overlay"),this.highlight=document.createElementNS(kr,"rect"),this.highlight.setAttribute("class","treb-highlight"),this.g.style.display="none",this.g.appendChild(this.highlight),this.g.appendChild(this.overlay),t.appendChild(this.g)}Remove(){this.container.removeChild(this.g)}Hide(){this.g.style.display="none"}Show(e,t,r,i){this.overlay.setAttribute("x",e.toString()),this.overlay.setAttribute("y",t.toString()),this.overlay.setAttribute("width",r.toString()),this.overlay.setAttribute("height",i.toString()),this.orientation===0?(this.highlight.setAttribute("x",e.toString()),this.highlight.setAttribute("y",(t+i-2).toString()),this.highlight.setAttribute("width",r.toString()),this.highlight.setAttribute("height","2")):(this.highlight.setAttribute("x",(e+r-2).toString()),this.highlight.setAttribute("y",t.toString()),this.highlight.setAttribute("width","2"),this.highlight.setAttribute("height",i.toString())),this.g.style.display="block"}};var Nt=class{constructor(e,t,r,i,n,s){this.theme=e;this.layout=t;this.model=r;this.view=i;this.primary_selection=n;this.additional_selections=s;this.nub_rectangle=new U(-1,-1,0,0);this.cached_additional_selections="";this.grid_selections=[];this.row_header_selections=[];this.column_header_selections=[];this.corner_selections=[]}Initialize(){this.row_overlay=new Ve(this.theme,this.layout.row_header_selection,0),this.column_overlay=new Ve(this.theme,this.layout.column_header_selection,1),this.corner_row_overlay=new Ve(this.theme,this.layout.corner_selection,0),this.corner_column_overlay=new Ve(this.theme,this.layout.corner_selection,1)}RenderSelections(e=!0,t=!0){let r=this.primary_selection.empty;e||(this.primary_selection.empty=!0);let i=[this.primary_selection].concat(this.additional_selections);this.RenderSelectionGroup(i,this.layout.grid_selection,void 0,void 0,this.grid_selections,void 0,t);let n=new U(-1,-1,0,0);if(!this.primary_selection.empty){let o=this.view.active_sheet.RealArea(this.primary_selection.area);n=this.layout.CellAddressToRectangle(o.start).Combine(this.layout.CellAddressToRectangle(o.end))}if(!this.primary_selection.empty&&this.layout.header_offset.y>2?(this.row_overlay.Show(n.left,0,n.width,this.layout.header_offset.y),this.corner_row_overlay.Show(n.left+this.layout.header_offset.x,0,n.width,this.layout.header_offset.y)):(this.row_overlay.Hide(),this.corner_row_overlay.Hide()),!this.primary_selection.empty&&this.layout.header_offset.x>2?(this.column_overlay.Show(0,n.top,this.layout.header_offset.x,n.height),this.corner_column_overlay.Show(0,n.top+this.layout.header_offset.y,this.layout.header_offset.x,n.height)):(this.column_overlay.Hide(),this.corner_column_overlay.Hide()),!this.view.active_sheet.freeze.columns&&!this.view.active_sheet.freeze.rows){this.primary_selection.empty=r;return}let s=[],a=[];if(this.primary_selection.empty)s.push(!1),a.push(!1);else{let o=this.primary_selection.area.start;s.push(o.row<=this.view.active_sheet.freeze.rows||o.row===1/0),a.push(o.column<=this.view.active_sheet.freeze.columns||o.column===1/0)}for(let{area:o}of this.additional_selections)s.push(o.start.row<=this.view.active_sheet.freeze.rows||o.start.row===1/0),a.push(o.start.column<=this.view.active_sheet.freeze.columns||o.start.column===1/0);this.view.active_sheet.freeze.rows&&this.RenderSelectionGroup(i,this.layout.row_header_selection,s,void 0,this.row_header_selections,{x:0,y:this.layout.header_offset.y}),this.view.active_sheet.freeze.columns&&this.RenderSelectionGroup(i,this.layout.column_header_selection,a,void 0,this.column_header_selections,{x:this.layout.header_offset.x,y:0}),this.view.active_sheet.freeze.rows&&this.view.active_sheet.freeze.columns&&this.RenderSelectionGroup(i,this.layout.corner_selection,a,s,this.corner_selections,{...this.layout.header_offset}),this.primary_selection.empty=r}RenderSelectionGroup(e,t,r,i,n,s,a=!0){for(let o=0;o<e.length;o++)if((!e[o].area.start.sheet_id||e[o].area.start.sheet_id===this.view.active_sheet.id)&&!e[o].empty&&(!r||r[o])&&(!i||i[o])){if(a||!e[o].rendered){let c=this.EnsureGridSelectionBlock(t,n,o,s);this.RenderSVGSelection(e[o],c,o)}}else n[o]&&n[o].Show(!1);for(let o=e.length;o<n.length;o++)n[o]&&n[o].Show(!1)}EnsureGridSelectionBlock(e,t,r,i){let n=t[r];if(!n)if(n=new Mt(!r,this.theme),t[r]=n,r){let s=e.querySelector(".alternate-selections");s||(s=document.createElementNS("http://www.w3.org/2000/svg","g"),s.setAttribute("class","alternate-selections"),e.appendChild(s)),s?.appendChild(n.g)}else e.appendChild(n.g);return i&&n.Offset(i),n}ClampEnd(e){return{row:Math.min(e.row,this.view.active_sheet.rows-1),column:Math.min(e.column,this.view.active_sheet.columns-1)}}RenderSVGSelection(e,t,r=0){let i=this.view.active_sheet.RealArea(e.area,!0),n=this.layout.CellAddressToRectangle(i.start);if(i.count>1)n=n.Combine(this.layout.CellAddressToRectangle(i.end));else if(r){let s=this.view.active_sheet.CellData(e.target);s.merge_area&&(n=this.layout.CellAddressToRectangle(s.merge_area.start),n=n.Combine(this.layout.CellAddressToRectangle(s.merge_area.end)))}if(r||(this.nub_rectangle=new U(n.left+n.width-6,n.top+n.height-6,11,11)),n.top===0&&this.layout.header_offset.y<=1&&(n.top=1,n.height-=1),n.left===0&&this.layout.header_offset.x<=1&&(n.left=1,n.width-=1),n.height<=0||n.height<=0){t.Show(!1);return}if(t.SetOutline(n,!!r),r)e.rendered=!0;else{let s=this.layout.CellAddressToRectangle(e.target),a=this.view.active_sheet.CellData(e.target);a.merge_area&&(s=this.layout.CellAddressToRectangle(a.merge_area.start),s=s.Combine(this.layout.CellAddressToRectangle(a.merge_area.end))),t.SetFill(s,n),t.SetNub(n)}t.Show()}};function ge(d,e=[],t,r){typeof e=="string"&&(e=[e]);let i,n=a=>{a.stopPropagation(),a.preventDefault(),i(),r&&r(a)},s=a=>{if(a.stopPropagation(),a.preventDefault(),!a.buttons){i(),r&&r(a);return}t&&t(a)};i=()=>{d.style.display="none",d.removeEventListener("mousemove",s),d.removeEventListener("mouseup",n);for(let a of e)d.classList.remove(a)};for(let a of e)d.classList.add(a);d.style.display="block",t&&d.addEventListener("mousemove",s),r&&d.addEventListener("mouseup",n)}var D=class{static CreateDiv(e="",t,r){return this.Create("div",e,t,r)}static Create(e="",t="",r,i,n){let s=document.createElement(e);if(t&&s.setAttribute("class",t),i&&s.setAttribute(i,""),n){let a=Object.keys(n);for(let o of a)s.setAttribute(o,n[o])}return r&&r.appendChild(s),s}};var Dt=class extends oe{constructor(t){super();this.container=t;this.scale=0;this.timeout=0;this.format=M.Get("0.0"),this.input=D.Create("input","treb-scale-input",t);let r=D.CreateDiv("treb-slider-container",t);this.input.addEventListener("keypress",i=>{switch(i.key){case"ArrowUp":case"ArrowDown":i.stopPropagation(),i.preventDefault(),console.info("mark?");break}}),this.input.addEventListener("keydown",i=>{switch(i.key){case"Enter":this.input.blur();break;case"ArrowUp":this.Tick(-1);break;case"ArrowDown":this.Tick(1);break;case"Escape":this.input.value=this.format.Format(this.scale)+"%",this.input.blur();break;default:return}i.stopPropagation(),i.preventDefault()}),this.input.addEventListener("focusin",()=>this.input.select()),this.input.addEventListener("change",()=>{let i=this.input.value;i=i.replace(/%/g,"");let n=be.TryParse(i);n.type===3?this.UpdateScale(Number(n.value),!0):this.input.value=this.format.Format(this.scale)+"%"}),this.slider=D.Create("input",void 0,r,void 0,{type:"range",min:"50",max:"200",value:"100",step:"2.5"}),this.slider.addEventListener("input",()=>{this.UpdateScale(Number(this.slider.value),!0)}),t.addEventListener("wheel",i=>{i.stopPropagation(),i.preventDefault(),this.Tick(i.deltaY)})}Tick(t){let r=Math.round(this.scale/2.5)*2.5;t>0?this.UpdateScale(r-2.5,!0,!0):t<0&&this.UpdateScale(r+2.5,!0,!0)}UpdateScale(t,r=!1,i=!1){t=Math.max(50,Math.min(200,t)),t!==this.scale&&(this.scale=t,this.input.value=this.format.Format(t)+"%",this.slider.value=t.toFixed(1),r&&(this.timeout||(this.timeout=requestAnimationFrame(()=>{this.timeout=0,this.Publish({type:"scale",value:this.scale/100,keep_focus:i})}))))}};var Ut=class extends oe{constructor(t,r,i,n,s){super();this.layout=t;this.model=r;this.view=i;this.options=n;this.dragging=!1;this.double_click_data={};this._visible=!1;if(this.container=s.querySelector(".treb-spreadsheet-footer"),!this.container)throw new Error("missing container for tab bar");if(n.tab_bar!=="auto"&&this.container.removeAttribute("hidden"),this.tab_container=this.container.querySelector(".treb-spreadsheet-tabs"),this.container.addEventListener("click",a=>{let o=a.target?.dataset.command;if(o)switch(a.stopPropagation(),a.preventDefault(),o){case"add-tab":this.Publish({type:"add-sheet"});break;case"delete-tab":this.Publish({type:"delete-sheet"});break;default:console.info("unhandled command",o)}}),this.options.stats&&(this.stats_panel=this.container.querySelector(".treb-stats-panel")),this.options.scale_control){let a=this.container.querySelector(".treb-scale-control");this.scale_control=new Dt(a),this.scale_control.Subscribe(o=>{this.Publish(o)}),this.UpdateScale(this.options.initial_scale||1)}}get visible(){return this._visible}set stats_data(t){if(this.stats_panel){this.stats_panel.innerText="";for(let r of t){let i=document.createElement("span");i.classList.add("treb-stats-label"),i.textContent=r.label,this.stats_panel.appendChild(i);let n=document.createElement("span");n.classList.add("treb-stats-value"),n.textContent=r.value,this.stats_panel.appendChild(n)}}}IsDoubleClick(t,r=300){return this.double_click_data.index===t?(clearTimeout(this.double_click_data.timeout),this.double_click_data.index=void 0,this.double_click_data.timeout=void 0,!0):(this.double_click_data.timeout&&clearTimeout(this.double_click_data.timeout),this.double_click_data.index=t,this.double_click_data.timeout=window.setTimeout(()=>{this.double_click_data.index=void 0,this.double_click_data.timeout=void 0},r),!1)}Hide(){this.Show(!1)}Show(t=!0){this.container&&(this._visible=t,t?this.container.removeAttribute("hidden"):this.container.setAttribute("hidden",""))}SetActive(t,r){r?t.setAttribute("selected",""):t.removeAttribute("selected")}UpdateScale(t){this.scale_control?.UpdateScale(t*100)}DoubleClickTab(t,r,i){r.contentEditable="true";let n=window.getSelection();if(n){n.removeAllRanges();let s=document.createRange();s.selectNodeContents(r),n.addRange(s)}r.addEventListener("keydown",s=>{switch(s.key){case"Enter":this.Publish({type:"rename-sheet",name:r.innerText.trim(),sheet:i});break;case"Escape":r.innerText=i.name,this.Publish({type:"cancel"}),this.Update();break;default:return}s.stopPropagation(),s.preventDefault()}),r.addEventListener("focusout",()=>{let s=r.innerText.trim();s!==i.name?this.Publish({type:"rename-sheet",name:s,sheet:i}):this.Update()}),r.focus()}MouseDownTab(t,r,i,n,s){if(t.stopPropagation(),t.preventDefault(),this.IsDoubleClick(n))return;this.Publish({type:"activate-sheet",sheet:i});let a=s.map(b=>b.getBoundingClientRect()),o=n*2-1,l=a[0].left,c=a[a.length-1].right,h=a[0].top,u=a[0].bottom,m=-1,f=(a.length-1)*2+1;for(let b of s)this.SetActive(b,b===r);this.dragging=!0,ge(this.layout.mask,[],b=>{let[p,g]=[b.clientX,b.clientY];if(g>h&&g<u){let _=o;if(p<l)_=m;else if(p>c)_=f;else for(let y=0;y<a.length;y++){let x=a[y];if(p>=x.left&&p<=x.right){y!==n&&(p>=x.left+x.width/2?_=y*2+1:_=y*2-1);break}}_!==o&&(o=_,r.style.order=o.toString(),a=s.map(y=>y.getBoundingClientRect()))}},()=>{let b=n,p=(o+1)/2;this.dragging=!1;for(let g=0;g<this.model.sheets.length;g++)this.model.sheets.list[g].visible||(b>=g&&b++,p>=g&&p++);b===p||b===0&&p<=0||b===s.length-1&&p>=s.length-1||this.Publish({type:"reorder-sheet",index:b,move_before:p})})}Update(){if(this.dragging)return;if(this.options.tab_bar==="auto"){if(this.model.sheets.list.reduce((i,n)=>n.visible?i+1:i,0)<=1){this.Show(!1);return}this.Show(!0)}if(!this.tab_container)return;this.tab_container.innerText="";let t=[];for(let r of this.model.sheets.list){if(!r.visible)continue;let i=t.length,n=document.createElement("li");n.setAttribute("tabindex","0"),n.style.order=(i*2).toString(),n.role="tab",this.SetActive(n,r===this.view.active_sheet);let s=o=>this.MouseDownTab(o,n,r,i,t),a=o=>{n.removeEventListener("mousedown",s),n.removeEventListener("dblclick",a),this.DoubleClickTab(o,n,r)};n.textContent=r.name,n.addEventListener("dblclick",a),n.addEventListener("mousedown",s),this.tab_container.appendChild(n),t.push(n)}}};var vi=()=>({target:{row:0,column:0},area:new v({row:0,column:0}),empty:!0});var Bn=100,wi={move_with_cells:!0,resize_with_cells:!0,movable:!0,resizable:!0,removable:!0,selectable:!0},Ne=class{constructor(e={}){this.data={...wi};this.temp={};this.view=[];this.key_=Bn++;this.data={...wi,...JSON.parse(JSON.stringify(e))},e.rect&&(this.rect=U.Create(e.rect))}get key(){return this.key_}toJSON(){return{...this.data,rect:this.rect}}};var On=100,xi=60,De=class{constructor(e){this.annotations=[];this.freeze={rows:0,columns:0};this.visible=!0;this.default_column_width=100;this.default_row_height=25;this.cells=new wt;this.selection=vi();this.scroll_offset={x:0,y:0};this.name=De.default_sheet_name;this._image=void 0;this.row_height_=[];this.column_width_=[];this.row_headers=[];this.column_headers=[];this.row_header_width=100;this.column_header_height=25;this.style_map=[];this.style_json_map=[];this.sheet_style={};this.row_styles={};this.column_styles={};this.row_pattern=[];this.cell_style=[];this.default_style_properties=e,this.default_column_width=On,this.row_header_width=xi,this.UpdateDefaultRowHeight(),this.id_=De.base_id++}get image(){return this._image}get header_offset(){return{x:this.row_header_width,y:this.column_header_height}}get rows(){return this.cells.rows}get columns(){return this.cells.columns}get id(){return this.id_}set id(e){this.id_=e,this.id>=De.base_id&&(De.base_id=this.id+1)}static Reset(){this.base_id=100}static Blank(e,t,r=30,i=20){let n=new De(e);return t&&(n.name=t),r=Math.max(r,1),i=Math.max(i,1),n.cells.EnsureCell({row:r-1,column:i-1}),n}static UpdateStyle(e){if(typeof e.horizontal_align=="number"){let t=[k.HorizontalAlign.None,k.HorizontalAlign.Left,k.HorizontalAlign.Center,k.HorizontalAlign.Right];e.horizontal_align=t[e.horizontal_align]||void 0}if(typeof e.vertical_align=="number"){let t=[k.VerticalAlign.None,k.VerticalAlign.Top,k.VerticalAlign.Bottom,k.VerticalAlign.Middle];e.vertical_align=t[e.vertical_align]||void 0}}static FromJSON(e,t,r){let i=typeof e=="string"?JSON.parse(e):e,n=(l,c)=>{Object.keys(c).forEach(h=>{let u=Number(h)||0;l[u]=c[h]})};r||(r=new De(t)),i.default_column_width&&(r.default_column_width=i.default_column_width),i.default_row_height&&(r.default_row_height=i.default_row_height),i.id&&(r.id=i.id),i.name&&(r.name=i.name),i.background_image&&(r.background_image=i.background_image);let s=l=>{let c=l;this.UpdateStyle(c),(c.font_size_value||c.font_size_unit)&&(c.font_size={unit:c.font_size_unit||"pt",value:c.font_size_value||10},c.font_size_unit=void 0,c.font_size_value=void 0),c.font_bold&&(c.bold=!0,c.font_bold=void 0),c.font_italic&&(c.italic=!0,c.font_italic=void 0),c.font_underline&&(c.underline=!0,c.font_underline=void 0),c.font_strike&&(c.strike=!0,c.font_strike=void 0),c.text_color&&(c.text_color!=="none"&&(c.text={text:c.text_color}),c.text_color=void 0),c.background&&(c.background!=="none"&&(c.fill={text:c.background}),c.background=void 0),c.border_top_color&&(c.border_top_color!=="none"&&(c.border_top_fill={text:c.border_top_color}),c.border_top_color=void 0),c.border_left_color&&(c.border_left_color!=="none"&&(c.border_left_fill={text:c.border_left_color}),c.border_left_color=void 0),c.border_bottom_color&&(c.border_bottom_color!=="none"&&(c.border_bottom_fill={text:c.border_bottom_color}),c.border_bottom_color=void 0),c.border_right_color&&(c.border_right_color!=="none"&&(c.border_right_fill={text:c.border_right_color}),c.border_right_color=void 0)},a=i.styles||i.cell_style_refs||[];for(let l of a)s(l);if(r.cell_style=[],a&&(i.cell_styles||[]).forEach(l=>{typeof l.ref=="number"&&(l.style=JSON.parse(JSON.stringify(a[l.ref])))}),r.cells.FromJSON(i.data),i.rows&&r.cells.EnsureRow(i.rows-1),i.columns&&r.cells.EnsureColumn(i.columns-1),i.data)if(rt(i.data))for(let l of i.data)l.style_ref&&(r.cell_style[l.column]||(r.cell_style[l.column]=[]),r.cell_style[l.column][l.row]=JSON.parse(JSON.stringify(a[l.style_ref])));else if(or(i.data))for(let l of i.data){let c=l.row;for(let h of l.cells){let u=h.column;h.style_ref&&(r.cell_style[u]||(r.cell_style[u]=[]),r.cell_style[u][c]=JSON.parse(JSON.stringify(a[h.style_ref])))}}else for(let l of i.data){let c=l.column;for(let h of l.cells){let u=h.row;h.style_ref&&(r.cell_style[c]||(r.cell_style[c]=[]),r.cell_style[c][u]=JSON.parse(JSON.stringify(a[h.style_ref])))}}r.freeze.rows=0,r.freeze.columns=0,i.freeze&&(r.freeze.rows=i.freeze.rows||0,r.freeze.columns=i.freeze.columns||0),r.scroll_offset=i.scroll?{...i.scroll}:{x:0,y:0};for(let l of i.cell_styles||[])if(l.style&&(r.cell_style[l.column]||(r.cell_style[l.column]=[]),r.cell_style[l.column][l.row]=l.style,l.rows))for(let c=1;c<l.rows;c++)r.cell_style[l.column][l.row+c]=JSON.parse(JSON.stringify(l.style));r.sheet_style=i.sheet_style||{},r.column_styles={},r.row_styles={};let o=(l,c)=>{for(let h of Object.keys(l)){let u=Number(h),m=l[u];if(typeof m=="number"){let f=a[m];f&&(c[u]=JSON.parse(JSON.stringify(f)),s(c[u]))}else m&&(c[u]=m,s(c[u]))}};o(i.row_style,r.row_styles),o(i.column_style,r.column_styles),r.row_pattern=i.row_pattern||[],s(r.sheet_style||{});for(let l of r.row_pattern)s(l);return r.row_height_=[],n(r.row_height_,i.row_height||{}),r.row_height_.length&&r.cells.EnsureRow(r.row_height_.length-1),r.column_width_=[],n(r.column_width_,i.column_width||{}),r.column_width_.length&&r.cells.EnsureColumn(r.column_width_.length-1),r.annotations=(i.annotations||[]).map(l=>new Ne(l)),i.selection&&(r.selection=JSON.parse(JSON.stringify(i.selection))),r.visible=!0,typeof i.visible<"u"&&(r.visible=!!i.visible),r}Activate(){if(this.background_image){let e=Rt(this.background_image);e&&(this._image=document.createElement("img"),this._image.src=e)}}MergeCells(e){e=e.Clone(),this.cells.Apply(e,(t,r,i)=>{t.merge_area=e,t.render_clean=[],(r!==e.start.column||i!==e.start.row)&&t.Reset()},!0)}UnmergeCells(e){let t=!0;if(this.cells.Apply(e,r=>{t=t&&!!r.merge_area&&e.Equals(r.merge_area)},!1),!t){console.warn("area mismatch");return}this.cells.Apply(e,r=>{r.merge_area=void 0,r.render_clean=[]},!1)}StyleFontSize(e,t={}){let r=e.font_size?.value||0,i=0;switch(e.font_size?.unit){case"px":r*=75/100;break;case"em":i=e.font_size.value||1;break;case"%":i=(e.font_size.value||100)/100;break}return i&&(r=i*(t.font_size?.value||10),t.font_size?.unit==="px"&&(r*=75/100)),r||10}UpdateDefaultRowHeight(){let e=k.Composite([this.default_style_properties,this.sheet_style]);if(typeof window<"u"){let t=pe.MeasureText(k.Font(e),"M"),r=Math.round(t.height*1.4);this.default_row_height<r&&(this.default_row_height=r)}}SetRowHeaders(e){this.row_headers=e.map(t=>t===void 0?"":t.toString()),this.row_headers&&this.cells.EnsureRow(this.row_headers.length-1)}SetColumnHeaders(e){this.column_headers=e.map(t=>t===void 0?"":t.toString()),e&&this.cells.EnsureColumn(e.length-1)}RowHeader(e){return this.row_headers?this.row_headers.length>e?this.row_headers[e]:"":e+1}ColumnHeader(e){let t="";if(this.column_headers)return this.column_headers.length>e?this.column_headers[e]:"";for(;;){let r=e%26;if(t=String.fromCharCode(65+r)+t,e=Math.floor(e/26),e)e--;else break}return t}GetRowHeight(e){let t=this.row_height_[e];return typeof t>"u"?this.default_row_height:t}SetRowHeight(e,t){return this.row_height_[e]=t,this.cells.EnsureRow(e),t}GetColumnWidth(e){let t=this.column_width_[e];return typeof t>"u"?this.default_column_width:t}SetColumnWidth(e,t){return this.column_width_[e]=t,this.cells.EnsureColumn(e),t}Delta(e,t){let r={},i=[...Object.keys(e),...Object.keys(t)];for(let n of i){let s=e[n],a=t[n];typeof s=="object"&&typeof a=="object"?JSON.stringify(s)!==JSON.stringify(a)&&(r[n]=a):s!==a&&(r[n]=a)}return r}UpdateCellStyle(e,t,r=!0){let{row:i,column:n}=e;this.cell_style[n]||(this.cell_style[n]=[]);let s=this.CompositeStyleForCell(e,!1,!1),a=k.Composite([this.default_style_properties,s,k.Merge(this.cell_style[n][i]||{},t,r)]),o=this.Delta(s,a);this.cell_style[n][i]=o,this.CellData(e).FlushStyle()}Invalidate(e){this.cells.Apply(this.RealArea(e),t=>t.render_clean=[])}UpdateAreaStyle(e,t={},r=!0){if(e)if(e.entire_sheet)this.UpdateSheetStyle(t,r);else if(e.entire_column)for(let i=e.start.column;i<=e.end.column;i++)this.UpdateColumnStyle(i,t,r);else if(e.entire_row)for(let i=e.start.row;i<=e.end.row;i++)this.UpdateRowStyle(i,t,r);else e.Array().forEach(i=>this.UpdateCellStyle(i,t,r))}HasCellStyle(e){return!!(this.cell_style[e.column]&&this.cell_style[e.column][e.row]||this.row_styles[e.row]||this.column_styles[e.column]||this.row_pattern.length)}NextVisibleColumn(e){for(++e;this.column_width_[e]===0;e++);return e}PreviousVisibleColumn(e){for(--e;e>=0&&this.column_width_[e]===0;e--);return e}NextVisibleRow(e){for(++e;this.row_height_[e]===0;e++);return e}PreviousVisibleRow(e){for(--e;e>=0&&this.row_height_[e]===0;e--);return e}TableRow(e,t){let r={alternate:!1,header:t===e.area.start.row,last:!1,totals:e.totals_row&&t===e.area.end.row};if(r.header||r.totals)return r;if(!(e.totals_row&&this.GetRowHeight(e.area.end.row)>0)){let s=e.area.end.row;for(;s>=e.area.start.row;s--)if(this.GetRowHeight(s)){r.last=s===t;break}}let n=e.area.start.row+1;for(;n<=e.area.end.row&&!(this.GetRowHeight(n)&&(r.alternate=!r.alternate,n===t));n++);return r}SurroundingStyle(e,t){let r=[{},{},{},{},{},{},{},{},{},{}],i=e.column+1,n=e.column-1,s=e.row+1,a=e.row-1;for(;this.column_width_[i]===0;i++);for(;this.row_height_[s]===0;s++);for(;n>=0&&this.column_width_[n]===0;n--);for(;a>=0&&this.row_height_[a]===0;a--);return n>=0&&a>=0&&(r[7]=this.CellStyleData({row:a,column:n},t)||{}),n>=0&&(r[4]=this.CellStyleData({row:e.row,column:n},t)||{},r[1]=this.CellStyleData({row:s,column:n},t)||{}),a>=0&&(r[8]=this.CellStyleData({row:a,column:e.column},t)||{},r[9]=this.CellStyleData({row:a,column:i},t)||{}),r[6]=this.CellStyleData({row:e.row,column:i},t)||{},r[2]=this.CellStyleData({row:s,column:e.column},t)||{},r[3]=this.CellStyleData({row:s,column:i},t)||{},r}CellStyleData(e,t){let r=this.cells.GetCell(e);if(r){if(!r.style){let i=this.GetStyleIndex(this.CompositeStyleForCell(e));r.style=this.style_map[i]}if(r.table){let i=r.table.theme||t;if(i){let n=JSON.parse(JSON.stringify(r.style)),s=this.TableRow(r.table,e.row);return s.header?i.header&&(n=k.Composite([n,i.header])):s.totals?i.total&&(n=k.Composite([n,i.total])):s.alternate?i.odd&&(n=k.Composite([n,i.odd])):i.even&&(n=k.Composite([n,i.even])),n}}return r.style}}GetCopyStyle(e){return this.CompositeStyleForCell(e,!0,!1)}CellData(e){let t=this.cells.EnsureCell(e);if(t.rendered_type)return t;let r,i;if(t.calculated_type?(i=t.calculated,r=t.calculated_type):(i=t.value,r=t.type),!t.style){let n=this.GetStyleIndex(this.CompositeStyleForCell(e));t.style=this.style_map[n]}if(!r||i===null||typeof i>"u")t.formatted="",t.rendered_type=2;else if(r===3)isNaN(i)?t.formatted=typeof t.style.nan>"u"?"NaN":t.style.nan:t.formatted=this.FormatNumber(i,t.style.number_format),t.rendered_type=3;else if(r===6)t.formatted="#"+(i||"ERR?"),t.rendered_type=6;else if(r===4)t.formatted=i.toString().toUpperCase(),t.rendered_type=4;else if(r===1&&t.calculated===void 0)t.formatted="",t.rendered_type=2;else if(r===7){let n=i;if(isNaN(n.real)||isNaN(n.imaginary))t.formatted=typeof t.style.nan>"u"?"NaN":t.style.nan;else{let s=M.Get(t.style.number_format||"",!0);t.formatted=s.FormatComplex(n)}t.rendered_type=7}else if(r===9){if(isNaN(i.value))t.formatted=typeof t.style.nan>"u"?"NaN":t.style.nan,t.formatted+=" "+i.unit;else{let n=M.Get(t.style.number_format||"",!0);t.formatted=n.FormatDimensionedQuantity(i)}t.rendered_type=9}else t.formatted=this.FormatNumber(i,t.style.number_format),t.rendered_type=2;return t}FormatNumber(e,t=""){let r=M.Get(t).FormatParts(e);return r.length?r.length===1&&!r[0].flag?r[0].text||"":r:""}SetHeaderSize(e=xi,t=this.default_row_height){this.row_header_width=e,this.column_header_height=t}AutoSizeRow(e,t={},r=!0){let i=this.default_row_height,n=9;for(let s=0;s<this.cells.columns;s++){let a=this.CellData({row:e,column:s}),o=a.style,l=a.formatted||"";if(typeof l!="string"&&(l=l.map(c=>c.text).join("")),o&&l&&l.length){let c=l.split(/\n/),h=Math.round(this.StyleFontSize(o,t)*1.5);i=Math.max(i,((h||10)+n)*c.length)}}!r&&this.GetRowHeight(e)>=i||this.SetRowHeight(e,i)}GetStyle(e){return this.style_map[e]}InsertRows(e=0,t=1){if(e)for(let o=0;o<this.cells.columns;o++){let l=this.cells.GetCell({row:e-1,column:o},!1);if(l&&l.area){let c=this.cells.GetCell({row:e,column:o},!1);if(c&&c.area&&c.area.Equals(l.area))return!1}}t<0?this.cells.DeleteRows(e,-t):this.cells.InsertRows(e,t);let r={},i={};for(let o=e;o<this.cells.rows;o++)for(let l=0;l<this.cells.columns;l++){let c=this.cells.GetCell({row:o,column:l},!1);c&&(c.area&&!i[c.area.spreadsheet_label]&&(i[c.area.spreadsheet_label]=c.area),c.merge_area&&!r[c.merge_area.spreadsheet_label]&&(r[c.merge_area.spreadsheet_label]=c.merge_area))}for(let o of Object.keys(i)){let l=i[o],c=new v({row:l.start.row+t,column:l.start.column},{row:l.end.row+t,column:l.end.column});c.Iterate(h=>{let u=this.cells.GetCell(h,!0);u.area=c})}for(let o of Object.keys(r)){let l=r[o],c={row:l.start.row,column:l.start.column};l.start.row>=e&&(c.row+=t);let h=new v(c,{row:l.end.row+t,column:l.end.column});h.Iterate(u=>{let m=this.cells.GetCell(u,!0);m.merge_area=h})}let n=Object.keys(this.row_styles),s={};n.forEach(o=>{let l=Number(o);l<e?s[l]=this.row_styles[l]:t<0&&l<e-t||(s[l+t]=this.row_styles[l])}),this.row_styles=s;let a=[];if(t<0)a=[e,-t];else{a=[e,0];for(let o=0;o<t;o++)a.push(void 0)}return this.cell_style.forEach(o=>{o&&o.length>=e&&o.splice.apply(o,a)}),this.row_height_.splice.apply(this.row_height_,a),this.FlushCellStyles(),!0}InsertColumns(e=0,t=1){if(e)for(let o=0;o<this.cells.rows;o++){let l=this.cells.GetCell({row:o,column:e-1},!1);if(l&&l.area){let c=this.cells.GetCell({row:o,column:e},!1);if(c&&c.area&&c.area.Equals(l.area))return!1}}t<0?this.cells.DeleteColumns(e,-t):this.cells.InsertColumns(e,t);let r={},i={};for(let o=e;o<this.cells.columns;o++)for(let l=0;l<this.cells.rows;l++){let c=this.cells.GetCell({row:l,column:o},!1);c&&(c.area&&!i[c.area.spreadsheet_label]&&(i[c.area.spreadsheet_label]=c.area),c.merge_area&&!r[c.merge_area.spreadsheet_label]&&(r[c.merge_area.spreadsheet_label]=c.merge_area))}for(let o of Object.keys(i)){let l=i[o],c=new v({row:l.start.row,column:l.start.column+t},{row:l.end.row,column:l.end.column+t});c.Iterate(h=>{let u=this.cells.GetCell(h,!0);u.area=c})}for(let o of Object.keys(r)){let l=r[o],c={row:l.start.row,column:l.start.column};l.start.column>=e&&(c.column+=t);let h=new v(c,{row:l.end.row,column:l.end.column+t});h.Iterate(u=>{let m=this.cells.GetCell(u,!0);m.merge_area=h})}let n=Object.keys(this.column_styles),s={};n.forEach(o=>{let l=Number(o);l<e?s[l]=this.column_styles[l]:t<0&&l<e-t||(s[l+t]=this.column_styles[l])}),this.column_styles=s;let a=[];if(t<0)a=[e,-t];else{a=[e,0];for(let o=0;o<t;o++)a.push(void 0)}return this.cell_style.splice.apply(this.cell_style,a),this.column_width_.splice.apply(this.column_width_,a),this.FlushCellStyles(),!0}ClearArea(e){e=this.RealArea(e),this.cells.Apply(e,t=>t.Reset())}SetAreaValues2(e,t){e=this.RealArea(e),this.cells.SetArea(e,t)}SetArrayValue(e,t){e=this.RealArea(e),this.cells.Apply(e,i=>i.SetArray(e),!0),this.cells.GetCell(e.start,!0).SetArrayHead(e,t)}SetCellValue(e,t){this.cells.GetCell(e,!0).Set(t)}TablesFromArea(e,t=!1){if(L(e)){let i=this.cells.GetCell(e,!1);return i?.table&&(!t||e.row===i.table.area.start.row)?[i.table]:[]}let r=new Set;for(let i=e.start.row;i<=e.end.row;i++)for(let n=e.start.column;n<=e.end.column;n++){let s=this.cells.GetCell({row:i,column:n},!1);s?.table&&!r.has(s.table)&&(!t||i===s.table.area.start.row)&&r.add(s.table)}return Array.from(r.values())}RealArea(e,t=!1){let r=e.start,i=e.end;return e.entire_row&&(r.column=0,r.absolute_column=!1,i.column=this.cells.columns-1,i.absolute_column=!1),e.entire_column&&(r.row=0,r.absolute_row=!1,i.row=this.cells.rows-1,i.absolute_row=!1),t&&(i.row>=this.rows&&(i.row=this.rows-1,i.absolute_row=!1),i.column>=this.columns&&(i.column=this.columns-1,i.absolute_column=!1)),new v(r,i)}GetCellStyle(e,t=!1){if(L(e))return this.CompositeStyleForCell(e,!0,!1,t);if(e.start.row===e.end.row&&e.start.column===e.end.column)return this.CompositeStyleForCell(e.start,!0,!1,t);let r=[];for(let i=e.start.row;i<=e.end.row;i++){let n=[];for(let s=e.start.column;s<=e.end.column;s++)n.push(this.CompositeStyleForCell({row:i,column:s},!0,!1,t));r.push(n)}return r}FormattedCellValue(e){let t=this.CellData(e);if(t)return typeof t.formatted=="string"?t.formatted:t.formatted?t.formatted.map(r=>{switch(r.flag){case 1:return" ";case 2:return" ";default:return r.text}}).join(""):t.value}GetFormattedRange(e,t=e){if(e.row===t.row&&e.column===t.column)return this.FormattedCellValue(e);let r=[];for(let i=e.row;i<=t.row;i++){let n=[];for(let s=e.column;s<=t.column;s++)n.push(this.FormattedCellValue({row:i,column:s}));r.push(n)}return r}NumberFormatsAndColors(e,t){let r=i=>{i.number_format&&(t[i.number_format]=1),i.text?.text&&i.text.text!=="none"&&(e[i.text.text]=1),i.fill?.text&&(e[i.fill.text]=1),i.border_top_fill?.text&&(e[i.border_top_fill.text]=1),i.border_left_fill?.text&&(e[i.border_left_fill.text]=1),i.border_right_fill?.text&&(e[i.border_right_fill.text]=1),i.border_bottom_fill?.text&&(e[i.border_bottom_fill.text]=1)};r(this.sheet_style);for(let i in this.row_styles)r(this.row_styles[i]);for(let i in this.column_styles)r(this.column_styles[i]);for(let i of this.row_pattern)r(i);for(let i of this.cell_style)if(i)for(let n of i)n&&r(n)}CompressCellStyles(e){let t=[];for(let r=0;r<e.length;r++){let i=e[r];if(i)for(let n=0;n<i.length;n++){let s=i[n];if(s){let a=n+1;for(;a<i.length&&i[a]===s;a++);a>n+1?t.push({row:n,column:r,ref:s,rows:a-n}):t.push({row:n,column:r,ref:s}),n=a-1}}}return t}toJSON(e={}){let t=(w,A)=>{let S={};for(let E=0;E<w.length;E++)typeof w[E]<"u"&&w[E]!==A&&(S[E]=w[E]);if(Object.keys(S).length)return S},r=[{}],i={},n=[],s=JSON.stringify({});for(let w=0;w<this.cell_style.length;w++){let A=this.cell_style[w];if(A){n[w]=[];for(let S=0;S<A.length;S++)if(A[S]){let E=JSON.stringify(A[S]);if(E!==s){let F=i[E];typeof F!="number"&&(i[E]=F=r.length,r.push(A[S])),n[w][S]=F}}}}let a=w=>{let A=JSON.stringify(w);if(A===s)return 0;let S=i[A];return typeof S!="number"&&(i[A]=S=r.length,r.push(w)),S};r=JSON.parse(JSON.stringify(r));let o=JSON.parse(JSON.stringify(this.sheet_style)),l=JSON.parse(JSON.stringify(this.row_pattern)),c={},h={};for(let w of Object.keys(this.column_styles)){let A=Number(w),S=this.column_styles[A];if(S){let E=a(S);E&&(c[A]=E)}}for(let w of Object.keys(this.row_styles)){let A=Number(w),S=this.row_styles[A];if(S){let E=a(S);E&&(h[A]=E)}}let u=(w,A)=>{if(typeof w<"u"&&w!=="none")return w===A?void 0:pe.MeasureColorARGB(w)},m=(w={},A={})=>{let S={...A,...w};if(S.text)return S.text=pe.MeasureColorARGB(S.text),S;if(typeof S.theme=="number")return S};if(e.export_colors){let w=[];for(let A of[r,[o],l])if(Array.isArray(A))for(let S of A)w.push(S);else for(let S of Object.keys(A))w.push(A[S]);for(let A of w){let S=m(A.border_top_fill,k.DefaultProperties.border_top_fill);S!==void 0&&(A.border_top_fill=S),S=m(A.border_left_fill,k.DefaultProperties.border_left_fill),S!==void 0&&(A.border_left_fill=S),S=m(A.border_right_fill,k.DefaultProperties.border_right_fill),S!==void 0&&(A.border_right_fill=S),S=m(A.border_bottom_fill,k.DefaultProperties.border_bottom_fill),S!==void 0&&(A.border_bottom_fill=S),A.fill?.text&&(A.fill.text=pe.MeasureColorARGB(A.fill.text)),A.text&&A.text.text&&A.text.text!=="none"&&(A.text.text=pe.MeasureColorARGB(A.text.text))}}let f={calculated_value:!!e.rendered_values,preserve_type:!!e.preserve_type,expand_arrays:!!e.expand_arrays,decorated_cells:!!e.decorated_cells,nested:!0,cell_style_refs:n,tables:!!e.tables},b=this.cells.toJSON(f),p=b.data,{rows:g,columns:_}=b;e.shrink?(g+=2,_+=1):(g=this.rows,_=this.columns);for(let w of this.annotations)w.data.extent||this.CalculateAnnotationExtent(w),w.data.extent&&(g=Math.max(g,w.data.extent.row+1),_=Math.max(_,w.data.extent.column+1));let y=this.CompressCellStyles(n),x={id:this.id,name:this.name,data:p,sheet_style:o,rows:g,columns:_,cell_styles:y,styles:r,row_style:h,column_style:c,row_pattern:l.length?l:void 0,default_row_height:this.default_row_height,default_column_width:this.default_column_width,row_height:t(this.row_height_,this.default_row_height),column_width:t(this.column_width_,this.default_column_width),selection:JSON.parse(JSON.stringify(this.selection)),annotations:JSON.parse(JSON.stringify(this.annotations))};return this.visible||(x.visible=this.visible),(this.scroll_offset.x||this.scroll_offset.y)&&(x.scroll=this.scroll_offset),this.background_image&&(x.background_image=this.background_image),(this.freeze.rows||this.freeze.columns)&&(x.freeze=this.freeze),x}FlushCellStyles(){this.style_map=[],this.style_json_map=[],this.cells.FlushCellStyles()}ImportData(e){let t=e.styles;e.outline&&(this.outline=e.outline);let r=e.sheet_style;r&&this.UpdateAreaStyle(new v({row:1/0,column:1/0},{row:1/0,column:1/0}),t[r]);let i=e.column_styles;if(i)for(let s=0;s<i.length;s++)i[s]&&this.UpdateAreaStyle(new v({row:1/0,column:s},{row:1/0,column:s}),t[i[s]]);this.cells.FromJSON(e.cells),e.name&&(this.name=e.name||"");let n=this.cell_style;for(let s of e.cells)s.style_ref&&(n[s.column]||(n[s.column]=[]),n[s.column][s.row]=t[s.style_ref]);for(let s=0;s<e.column_widths.length;s++)typeof e.column_widths[s]<"u"&&this.SetColumnWidth(s,e.column_widths[s]);for(let s=0;s<e.row_heights.length;s++)typeof e.row_heights[s]<"u"&&this.SetRowHeight(s,e.row_heights[s]);for(let s of e.annotations||[])this.annotations.push(new Ne(s));e.hidden&&(this.visible=!1)}CalculateAnnotationExtent(e){if(e.data.layout){e.data.extent={...e.data.layout.br.address};return}let t=1e3;e.data.extent={row:0,column:0};let r=e.rect?.right;if(r&&this.default_column_width){for(let n=0;r>=0&&n<t;n++)if(r-=this.GetColumnWidth(n),r<0){e.data.extent.column=n;break}}let i=e.rect?.bottom;if(i&&this.default_row_height){for(let n=0;i>=0&&n<t;n++)if(i-=this.GetRowHeight(n),i<0){e.data.extent.row=n;break}}}UpdateSheetStyle(e,t=!0){this.sheet_style=k.Merge(this.sheet_style,e,t);let r=Object.keys(e);for(let i of this.cell_style)if(i)for(let n of i)n&&r.forEach(s=>delete n[s]);for(let i of Object.keys(this.row_styles))r.forEach(n=>delete this.row_styles[i][n]);for(let i of Object.keys(this.column_styles))r.forEach(n=>delete this.column_styles[i][n]);this.FlushCellStyles()}UpdateRowStyle(e,t,r=!0){this.row_styles[e]=k.Merge(this.row_styles[e]||{},t,r);let i=Object.keys(t);for(let n of this.cell_style)n&&n[e]&&i.forEach(s=>delete n[e][s]);for(let n=0;n<this.cells.columns;n++)if(this.column_styles[n]){let s=this.column_styles[n],a=this.cell_style[n]?this.cell_style[n][e]||{}:{};for(let o of i)typeof s[o]<"u"&&(a[o]=t[o]);Object.keys(a).length&&(this.cell_style[n]||(this.cell_style[n]=[]),this.cell_style[n][e]=JSON.parse(JSON.stringify(a)))}this.cells.Apply(this.RealArea(v.FromRow(e)),n=>n.FlushStyle())}UpdateColumnStyle(e,t,r=!0){this.column_styles[e]=k.Merge(this.column_styles[e]||{},t,r);let i=Object.keys(t);if(this.cell_style[e])for(let n of this.cell_style[e])n&&i.forEach(s=>delete n[s]);this.cells.Apply(this.RealArea(v.FromColumn(e)),n=>n.FlushStyle())}CompositeStyleForCell(e,t=!0,r=!0,i=!0){let{row:n,column:s}=e,a=[];return i&&a.push(this.default_style_properties),a.push(this.sheet_style),r&&this.row_pattern.length&&a.push(this.row_pattern[n%this.row_pattern.length]),this.row_styles[n]&&a.push(this.row_styles[n]),this.column_styles[s]&&a.push(this.column_styles[s]),t&&this.cell_style[s]&&this.cell_style[s][n]&&a.push(this.cell_style[s][n]),k.Composite(a)}GetStyleIndex(e){let t=JSON.stringify(e);for(let i=0;i<this.style_json_map.length;i++)if(t===this.style_json_map[i])return i;let r=this.style_map.length;return this.style_map.push(JSON.parse(t)),this.style_json_map.push(t),r}},O=De;O.base_id=100,O.default_sheet_name="Sheet1";var Ci="http://www.w3.org/2000/svg",Ye=class{constructor(e,t,r=!1){this.model=e;this.view=t;this.grid_tiles=[];this.column_header_tiles=[];this.row_header_tiles=[];this.frozen_row_tiles=[];this.frozen_column_tiles=[];this.header_size={width:0,height:0};this.last_column=0;this.total_height=0;this.total_width=0;this.default_row_height=0;this.default_column_width=0;this.header_offset={x:0,y:0};this.dpr=1;this.scale=1;this.trident=typeof navigator<"u"&&navigator.userAgent&&/trident/i.test(navigator.userAgent);this.default_tile_size={width:1200,height:800};this.dropdown_caret_visible=!1;this.row_cache=[];this.column_cache=[];this.initialized=!1;if(r)return;this.dpr=Math.max(1,self.devicePixelRatio||1),this.mask=D.CreateDiv("treb-mouse-mask"),this.tooltip=D.CreateDiv("treb-tooltip"),this.dropdown_caret=document.createElementNS(Ci,"svg"),this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_caret.setAttribute("viewBox","0 0 24 24"),this.dropdown_caret.tabIndex=-1;let i=document.createElementNS(Ci,"path");i.setAttribute("d","M5,7 L12,17 L19,7"),this.dropdown_caret.appendChild(i),this.dropdown_caret.addEventListener("click",n=>{n.stopPropagation(),n.preventDefault(),this.grid_cover.classList.remove("nub-select");let s=this.dropdown_caret.getAttribute("class")||"";/active/i.test(s)?this.dropdown_caret.setAttribute("class","treb-dropdown-caret"):(this.dropdown_caret.setAttribute("class","treb-dropdown-caret active"),this.dropdown_list.focus())}),this.dropdown_list=D.CreateDiv("treb-dropdown-list"),this.dropdown_list.setAttribute("tabindex","-1"),this.dropdown_list.addEventListener("keydown",n=>{let s=0;switch(n.key){case"ArrowDown":s=1;break;case"ArrowUp":s=-1;break;case"Escape":break;case"Enter":break;default:console.info(n.key);return}if(n.stopPropagation(),n.preventDefault(),n.key==="Escape"||n.key==="Enter")this.container?.focus(),this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),n.key==="Enter"&&this.dropdown_callback&&this.dropdown_selected&&this.dropdown_callback.call(0,this.dropdown_selected.dropdown_value);else if(s&&this.dropdown_selected)if(s>0&&this.dropdown_selected.nextSibling){this.dropdown_selected.nextSibling.classList.add("selected"),this.dropdown_selected.classList.remove("selected"),this.dropdown_selected=this.dropdown_selected.nextSibling;let a=this.dropdown_selected.offsetTop+this.dropdown_selected.offsetHeight;a>this.dropdown_list.offsetHeight+this.dropdown_list.scrollTop&&(this.dropdown_list.scrollTop=a-this.dropdown_list.offsetHeight)}else s<0&&this.dropdown_selected.previousSibling&&(this.dropdown_selected.previousSibling.classList.add("selected"),this.dropdown_selected.classList.remove("selected"),this.dropdown_selected=this.dropdown_selected.previousSibling,this.dropdown_selected.offsetTop<this.dropdown_list.scrollTop&&(this.dropdown_list.scrollTop=this.dropdown_selected.offsetTop))}),this.dropdown_list.addEventListener("mousedown",n=>{let s=n.target;n.target!==this.dropdown_list&&(n.stopPropagation(),n.preventDefault(),this.container?.focus(),this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_callback&&this.dropdown_callback.call(0,s.dropdown_value))}),this.dropdown_list.addEventListener("mousemove",n=>{let s=n.target;s!==this.dropdown_selected&&(this.grid_cover.classList.remove("nub-select"),this.dropdown_selected&&this.dropdown_selected.classList.remove("selected"),s.classList.add("selected"),this.dropdown_selected=s)}),this.mock_selection=D.CreateDiv("mock-selection-node"),this.mock_selection.innerHTML="&nbsp;",this.note_node=D.CreateDiv("treb-note"),this.title_node=D.CreateDiv("treb-hover-title"),this.sort_button=D.Create("button","treb-sort-button",void 0,void 0,{title:"Sort table",tabindex:"-1"}),this.HideNote()}get scroll_offset(){return this.scroll_reference_node?{x:this.scroll_reference_node.scrollLeft,y:this.scroll_reference_node.scrollTop}:{x:0,y:0}}set scroll_offset(e){this.scroll_reference_node&&(this.scroll_reference_node.scrollLeft=e.x,this.scroll_reference_node.scrollTop=e.y)}UpdateDPR(){let e=Math.max(1,self.devicePixelRatio||1);return e===this.dpr?!1:(this.dpr=e,!0)}ColumnWidth(e){return Math.round(this.view.active_sheet.GetColumnWidth(e)*this.scale)}RowHeight(e){return Math.round(this.view.active_sheet.GetRowHeight(e)*this.scale)}SetRowHeight(e,t){this.view.active_sheet.SetRowHeight(e,Math.round(t/this.scale))}SetColumnWidth(e,t){this.view.active_sheet.SetColumnWidth(e,Math.round(t/this.scale))}ShowSelections(e=!0){this.grid_selection.style.display=e?"block":"none"}HideTitle(){this.title_node.style.opacity="0"}ShowTitle(e,t){if(this.title_node.textContent=e,!this.title_node.parentElement)return;let r=this.title_node.parentElement.getBoundingClientRect(),i=this.OffsetCellAddressToRectangle(t).Shift(this.header_size.width,this.header_size.height);this.title_node.style.left=r.left+i.left-this.scroll_reference_node.scrollLeft+0+"px",this.title_node.style.top=r.top+i.bottom-this.scroll_reference_node.scrollTop+8+"px",this.title_node.style.opacity="1"}HideNote(){this.note_node.style.opacity="0",this.note_node.style.pointerEvents="none"}HideTableSortButton(){this.sort_button.style.opacity="0",this.sort_button.style.pointerEvents="none",this.sort_button.setAttribute("tabindex","-1")}ShowTableSortButton(e,t,r){if(!this.sort_button.parentElement)return;let i=!0,n=!1;e.sort&&e.sort.column===t&&(i=!e.sort.asc,n=!0),this.sort_button.setAttribute("tabindex","0 "),this.sort_button.style.opacity="1",this.sort_button.style.pointerEvents="initial",this.sort_button.classList.remove("asc","desc"),n&&this.sort_button.classList.add(i?"asc":"desc"),this.sort_button.dataset.asc=i.toString(),this.sort_button.dataset.table=e.name,this.sort_button.dataset.column=t.toString();let s=this.OffsetCellAddressToRectangle(r).Shift(this.header_size.width,this.header_size.height),a=this.sort_button.getBoundingClientRect();this.sort_button.style.left=s.right-a.width-a.width/2+"px",this.sort_button.style.top=s.top+(s.height-a.height)/2+"px"}ShowNote(e,t,r,i){if(i?this.note_node.innerHTML=i:this.note_node.textContent=e,!this.note_node.parentElement)return;let n=this.note_node.getBoundingClientRect(),s=this.note_node.parentElement.getBoundingClientRect(),a={x:8,y:2},o=this.OffsetCellAddressToRectangle(t).Shift(this.header_size.width,this.header_size.height);this.note_node.style.left=s.left+o.right-this.scroll_reference_node.scrollLeft+a.x+"px",this.note_node.style.top=s.top+o.top-this.scroll_reference_node.scrollTop-n.height/5-a.y+"px",this.note_node.style.opacity="1",this.note_node.style.pointerEvents="auto"}AnnotationLayoutOrder(e,t){let r=-1;for(let n=0;n<this.view.active_sheet.annotations.length;n++)if(this.view.active_sheet.annotations[n]===e){r=n;break}if(r<0)return!1;let i=Math.min(Math.max(0,r+t),this.view.active_sheet.annotations.length-1);if(i===r)return!1;this.view.active_sheet.annotations.splice(r,1),this.view.active_sheet.annotations.splice(i,0,e);for(let n=0;n<this.view.active_sheet.annotations.length;n++){let s=this.view.active_sheet.annotations[n].key,a=this.container?.querySelectorAll(`.annotation[data-key="${s}"]`);if(a)for(let o=0;o<a?.length;o++)a[o].style.zIndex=(n+1).toString()}return!0}PointToAnnotationCorner(e){let t=this.PointToAddress_Grid(e,void 0,!1),r=this.CellAddressToRectangle(t);return{address:t,offset:{x:(e.x-r.left)/r.width,y:(e.y-r.top)/r.height}}}RectToAnnotationLayout(e){return{tl:this.PointToAnnotationCorner({x:(e.left||0)+1,y:(e.top||0)+1}),br:this.PointToAnnotationCorner({x:e.right||e.left||100,y:e.bottom||e.top||100})}}AddressToAnnotationLayout(e,t){let r={tl:this.CellAddressToRectangle(e),br:this.CellAddressToRectangle(t)};return{tl:this.PointToAnnotationCorner({x:r.tl.left||0,y:r.tl.top||0}),br:this.PointToAnnotationCorner({x:r.br.right||r.tl.left||100,y:r.br.bottom||r.tl.left||100})}}AnnotationLayoutToRect(e){let t=this.CellAddressToRectangle(e.tl.address),r=this.CellAddressToRectangle(e.br.address),i=t.left+t.width*e.tl.offset.x-1,n=t.top+t.height*e.tl.offset.y-1;return new U(i,n,r.left+r.width*e.br.offset.x-i,r.top+r.height*e.br.offset.y-n)}UpdateAnnotation(e){Array.isArray(e)||(e=[e]);for(let t of e){let r=t.view[this.view.view_index]||{};if(r.node){if(r.node.dataset.scale=this.scale.toString(),r.node.style.fontSize=`${10*this.scale}pt`,t.rect&&!t.data.layout&&(t.scaled_rect=t.rect.Scale(this.scale),t.data.layout=this.RectToAnnotationLayout(t.scaled_rect)),t.data.layout){let i=this.AnnotationLayoutToRect(t.data.layout);i.ApplyStyle(r.node),t.scaled_rect=i}r.node.dataset.key=t.key.toString(),(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&this.CloneFrozenAnnotation(t)}}}GetFrozenAnnotations(e){return[this.row_header_annotations,this.column_header_annotations,this.corner_annotations].map(r=>r.querySelector(`.annotation[data-key="${e.key}"]`)).filter(r=>r!==null)}CloneFrozenAnnotations(){for(let e of this.view.active_sheet.annotations)e.view[this.view.view_index]?.node&&e.key&&this.CloneFrozenAnnotation(e)}ClearFrozenAnnotations(){for(let e of[this.row_header_annotations,this.column_header_annotations,this.corner_annotations]){let t=e.querySelectorAll(".annotation");for(let r=0;r<t.length;r++)t[r].parentElement?.removeChild(t[r])}}RemoveFrozenAnnotation(e){for(let t of[this.row_header_annotations,this.column_header_annotations,this.corner_annotations]){let r=t.querySelector(`.annotation[data-key="${e.key}"]`);r&&r.parentElement?.removeChild(r)}}CloneFrozenAnnotation(e){for(let t of[this.row_header_annotations,this.column_header_annotations,this.corner_annotations]){let r=t.querySelector(`.annotation[data-key="${e.key}"]`);r&&r.parentElement?.removeChild(r);let i=e.view[this.view.view_index];if(r=i?.node?.cloneNode(!0),r){let n=r.querySelector(".annotation-move-target"),s=r.querySelector(".annotation-resize-target");r.addEventListener("mousedown",a=>{let o=i.node;requestAnimationFrame(()=>{o?.focus()}),this.AnnotationMouseDown(e,i.node,a,n,s)}),t.appendChild(r)}}}RemoveAnnotation(e){let t=e.view[this.view.view_index]||{};t.node&&t.node.parentElement?.removeChild(t.node),this.RemoveFrozenAnnotation(e)}RemoveAnnotationNodes(){let e=Array.prototype.map.call(this.annotation_container.children,t=>t);for(let t of e)this.annotation_container.removeChild(t);(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&this.ClearFrozenAnnotations()}AddAnnotation(e){let t=e.view[this.view.view_index]||{};if(!t.node)throw new Error("annotation view/node missing");this.annotation_container.appendChild(t.node),this.UpdateAnnotation(e)}AnnotationMouseDown(e,t,r,i,n){let s=e.scaled_rect;return s?new Promise(a=>{let o={left:s.left,top:s.top,width:s.width,height:s.height},l=this.scroll_reference_node,c=l.getBoundingClientRect(),h=t.getBoundingClientRect();if(r.target===i||r.target!==n&&r.altKey){r.stopPropagation(),r.preventDefault(),t.focus();let u={x:h.left+r.offsetX-s.left,y:h.top+r.offsetY-s.top},m=[t,...this.GetFrozenAnnotations(e)],f=25,b=this.CellAddressToRectangle({row:0,column:0}).Combine(this.CellAddressToRectangle({row:this.view.active_sheet.rows-1,column:this.view.active_sheet.columns-1})).Expand(-1,-1);ge(this.mask,"move",p=>{if(p.offsetY-c.top<this.header_offset.y){let g=Math.min(f,l.scrollTop);l.scrollTop-=g,u.y+=g}else if(p.offsetY-c.top>=c.height&&l.scrollTop+c.height<b.height){let g=f;l.scrollTop+=g,u.y-=g}if(p.offsetX-c.left<this.header_offset.x){let g=Math.min(f,l.scrollLeft);l.scrollLeft-=g,u.x+=g}else if(p.offsetX-c.left>=c.width&&l.scrollLeft+c.width<b.width){let g=f;l.scrollLeft+=g,u.x-=g}if(s.top=p.offsetY-u.y,s.left=p.offsetX-u.x,p.shiftKey){let g=Math.abs(s.left-o.left),_=Math.abs(s.top-o.top);g<=_?s.left=o.left:s.top=o.top}if(p.ctrlKey){let g=this.ClampToGrid({x:s.left,y:s.top});s.left=g.x,s.top=g.y}for(let g of m)g.style.top=s.top+"px",g.style.left=s.left+"px"},()=>{e.data.extent=void 0,e.data.layout=this.RectToAnnotationLayout(s),a({type:"annotation",annotation:e,event:"move"})});return}else if(r.target===n){r.stopPropagation(),r.preventDefault(),t.focus();let u=0;e.data.type==="image"&&e.data.data&&e.data.data.original_size&&e.data.data.original_size.width&&e.data.data.original_size.height&&(u=e.data.data.original_size.width/e.data.data.original_size.height);let m=t.getBoundingClientRect(),f={x:m.left+r.offsetX-s.width+n.offsetLeft,y:m.top+r.offsetY-s.height+n.offsetTop};ge(this.mask,"nw-resize",b=>{let p=[t,...this.GetFrozenAnnotations(e)];if(s.height=b.offsetY-f.y,s.width=b.offsetX-f.x,b.shiftKey&&b.ctrlKey){if(u){let g=Math.abs(s.width-o.width),_=Math.abs(s.height-o.height);g<_?s.width=u*s.height:s.height=s.width/u}}else if(b.shiftKey){let g=Math.abs(s.height-o.height),_=Math.abs(s.width-o.width);g>_?s.width=o.width:s.height=o.height}else if(b.ctrlKey){let g=this.ClampToGrid({x:s.right,y:s.bottom});s.width=g.x-s.left+1,s.height=g.y-s.top+1}for(let g of p)g.style.height=s.height+"px",g.style.width=s.width+"px"},()=>{e.data.extent=void 0,e.data.layout=this.RectToAnnotationLayout(s),a({type:"annotation",annotation:e,event:"resize"})});return}else a()}):(console.info("missing scaled rect!"),Promise.reject())}Initialize(e,t,r=!0){this.mask.parentElement||e.parentElement?.parentElement?.appendChild(this.mask),this.tooltip.parentElement||e.appendChild(this.tooltip),this.dropdown_caret.parentElement||e.appendChild(this.dropdown_caret),this.dropdown_list.parentElement||e.appendChild(this.dropdown_list),this.note_node.parentElement||e.appendChild(this.note_node),this.sort_button.parentElement||(e.appendChild(this.sort_button),this.sort_button.addEventListener("click",()=>{t.sort(this.sort_button.dataset.table||"",Number(this.sort_button.dataset.column||"0")||0,/true/i.test(this.sort_button.dataset.asc||"")),this.sort_button.classList.remove("asc","desc"),this.sort_button.dataset.asc==="true"?(this.sort_button.dataset.asc="false",this.sort_button.classList.add("desc")):(this.sort_button.dataset.asc="true",this.sort_button.classList.add("asc")),t.focus()})),this.title_node.parentElement||e.appendChild(this.title_node),this.InitializeInternal(e,t.scroll),!r&&this.scroll_reference_node&&(this.scroll_reference_node.style.overflow="hidden"),this.dropdown_callback=t.dropdown,this.initialized=!0}MockSelection(){if(!this.container||this.trident)return;let e=window.getSelection();if(e){let t=document.createRange();t.selectNodeContents(this.mock_selection),e.removeAllRanges(),e.addRange(t)}}CreateTile(e,t,r,i,n,s,a,o=!0){let l=document.createElement("canvas");return l.setAttribute("class",e),l.logical_size=t,l.width=t.width*this.dpr,l.height=t.height*this.dpr,l.style.width=`${t.width}px`,l.style.height=`${t.height}px`,l.tile_position=r,l.first_cell=i,this.UpdateTileGridPosition(l),l.last_cell={row:i.row+n.rows-1,column:i.column+n.columns-1},l.pixel_start=s,l.pixel_end={x:s.x+t.width,y:s.y+t.height},l.dirty=!!o,l.needs_full_repaint=!0,a.appendChild(l),l}ApplyTheme(e){this.row_header.style.backgroundColor=this.column_header.style.backgroundColor=this.corner.style.backgroundColor=e.headers?.fill?fe(e,e.headers.fill):"",this.corner.style.borderColor=e.grid_color||"";for(let t of this.grid_tiles)for(let r of t)r.style.backgroundColor=fe(e,e.grid_cell?.fill)||"#fff";this.dropdown_list.style.font=k.Font(e.grid_cell||{})}UpdateTotalSize(){this.total_height=0;let e=this.view.active_sheet.rows;for(let r=0;r<e;r++)this.total_height+=this.RowHeight(r);this.total_width=0;let t=this.view.active_sheet.columns;for(let r=0;r<t;r++)this.total_width+=this.ColumnWidth(r)}UpdateContentsSize(){let e=this.row_header_tiles.reduce((r,i)=>r+i.logical_size.height,0),t=this.column_header_tiles.reduce((r,i)=>r+i.logical_size.width,0);this.column_header.style.width=this.contents.style.width=`${t}px`,this.row_header.style.height=this.contents.style.height=`${e}px`}HideTooltip(){this.tooltip.style.display="none",this.tooltip_state=void 0,this.tooltip.classList.remove("arrow-up"),this.tooltip.classList.remove("arrow-left")}ShowTooltip(e={}){e.up?(this.tooltip.classList.add("arrow-up"),this.tooltip_state="up"):e.left&&(this.tooltip.classList.add("arrow-left"),this.tooltip_state="left"),this.tooltip.style.display="block",this.UpdateTooltip(e)}ShowDropdownCaret(e,t,r){let i=this.OffsetCellAddressToRectangle(e.start);e.count>1&&(i=i.Combine(this.OffsetCellAddressToRectangle(e.end))),i=i.Shift(this.header_size.width,this.header_size.height);let n=Math.round(this.scale*Math.max(8,Math.min(20,i.height)));this.dropdown_caret.style.height=`${n}px`,this.dropdown_caret.style.width=`${n}px`,this.dropdown_caret.style.left=`${i.right+1}px`,this.dropdown_caret.style.top=`${i.bottom-n}px`,this.dropdown_list.style.top=`${i.bottom+2}px`,this.dropdown_list.style.left=`${i.left+2}px`,this.dropdown_list.style.minWidth=`${i.width}px`,this.dropdown_list.textContent="";for(let s of t){let a=D.CreateDiv(void 0,this.dropdown_list);r===s&&(this.dropdown_selected=a,a.classList.add("selected")),a.dropdown_value=s,a.textContent=s?.toString()||""}this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_caret.style.display="block",this.dropdown_caret_visible=!0}HideDropdownCaret(){this.dropdown_caret_visible&&(this.dropdown_caret.setAttribute("class","treb-dropdown-caret"),this.dropdown_caret_visible=!1,this.dropdown_caret.style.display="none")}GetScrollOffset(){return{x:this.scroll_reference_node.scrollLeft+this.header_offset.x,y:this.scroll_reference_node.scrollTop+this.header_offset.y}}ScrollTo(e,t=!0,r=!0,i=!1){let n=this.CellAddressToRectangle(e);if(i&&this.scroll_reference_node.scrollTo){let s={left:this.scroll_reference_node.scrollLeft,top:this.scroll_reference_node.scrollTop},a={left:t?n.left:s.left,top:r?n.top:s.top,behavior:"smooth"};this.scroll_reference_node.scrollTo(a)}else r&&(this.scroll_reference_node.scrollTop=n.top),t&&(this.scroll_reference_node.scrollLeft=n.left)}ScrollIntoView(e){let t=this.CellAddressToRectangle(e),r=this.scroll_reference_node.clientWidth-this.row_header.offsetWidth,i=this.scroll_reference_node.clientHeight-this.column_header.offsetHeight,n={x:0,y:0},s={x:!1,y:!1},a=new U(this.scroll_reference_node.scrollLeft,this.scroll_reference_node.scrollTop,r,i);(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&(this.view.active_sheet.freeze.rows&&e.row>=this.view.active_sheet.freeze.rows?n.y=this.frozen_row_tiles[0].logical_size.height:this.view.active_sheet.freeze.rows&&(s.y=!0),this.view.active_sheet.freeze.columns&&e.column>=this.view.active_sheet.freeze.columns?n.x=this.frozen_column_tiles[0].logical_size.width:this.view.active_sheet.freeze.columns&&(s.x=!0)),e.row!==1/0&&(t.top<a.top+n.y&&!s.y?this.scroll_reference_node.scrollTop=t.top-n.y:t.bottom>a.bottom&&(this.scroll_reference_node.scrollTop=t.bottom-i)),e.column!==1/0&&(t.left<a.left+n.x&&!s.x?this.scroll_reference_node.scrollLeft=t.left-n.x:t.right>a.right&&(this.scroll_reference_node.scrollLeft=t.right-r))}UpdateTooltip(e={}){if(typeof e.text<"u"&&(this.tooltip.textContent=e.text),typeof e.x<"u"){let t=e.x||0;this.tooltip_state==="up"&&(t-=this.tooltip.offsetWidth/2),this.tooltip.style.left=Math.round(t)+"px"}if(typeof e.y<"u"){let t=e.y||0;this.tooltip_state==="left"&&(t-=this.tooltip.offsetHeight/2),this.tooltip.style.top=Math.round(t)+"px"}}CoordinateToRowHeader(e){let t={column:1/0,row:0};if(this.view.active_sheet.freeze.rows&&this.frozen_row_tiles[0].pixel_end.y>=e-this.scroll_reference_node.scrollTop){let r=0;e-=this.scroll_reference_node.scrollTop;for(let i=0;i<this.view.active_sheet.freeze.rows;i++)if(r+=this.RowHeight(i),r>=e)return t.row=i,t}for(let r of this.row_header_tiles)if(r.pixel_end.y>=e){let i=e-r.pixel_start.y,n=0;for(t.row=r.first_cell.row;t.row<=r.last_cell.row;t.row++,i-=n)if(n=this.RowHeight(t.row),n>i)return t;return t}return t}CoordinateToColumnHeader(e){let t={row:1/0,column:0};if(this.view.active_sheet.freeze.columns&&this.frozen_column_tiles[0].pixel_end.x>=e-this.scroll_reference_node.scrollLeft){let r=0;e-=this.scroll_reference_node.scrollLeft;for(let i=0;i<this.view.active_sheet.freeze.columns;i++)if(r+=this.ColumnWidth(i),r>=e)return t.column=i,t}for(let r of this.column_header_tiles)if(r.pixel_end.x>=e){let i=e-r.pixel_start.x,n=0;for(t.column=r.first_cell.column;t.column<=r.last_cell.column;t.column++,i-=n)if(n=this.ColumnWidth(t.column),n>i)return t;return t}return t}PointToAddress_Grid(e,t=!1,r=!0){if(r){if(this.view.active_sheet.freeze.rows){let a=this.frozen_row_tiles[0].logical_size.height;e.y-this.scroll_reference_node.scrollTop<a&&(e.y-=this.scroll_reference_node.scrollTop)}if(this.view.active_sheet.freeze.columns){let a=this.frozen_column_tiles[0].logical_size.width;e.x-this.scroll_reference_node.scrollLeft<a&&(e.x-=this.scroll_reference_node.scrollLeft)}}let i={row:0,column:0},n=this.grid_tiles[this.grid_tiles.length-1],s=n[n.length-1];if(e.y>s.pixel_end.y){let a=e.y-s.pixel_end.y;for(i.row=s.last_cell.row;a>0;)i.row++,a-=this.default_row_height}else for(let a of n)if(a.pixel_start.y<=e.y&&a.pixel_end.y>=e.y){let o=e.y-a.pixel_start.y,l=0;for(i.row=a.first_cell.row;i.row<=a.last_cell.row&&(l=this.RowHeight(i.row),!(l>o));i.row++,o-=l);break}if(e.x>s.pixel_end.x){let a=e.x-s.pixel_end.x;for(i.column=s.last_cell.column;a>0;)i.column++,a-=this.default_column_width}else for(let a of this.grid_tiles)if(a[0].pixel_start.x<=e.x&&a[0].pixel_end.x>=e.x){let o=a[0],l=e.x-o.pixel_start.x,c=0;for(i.column=o.first_cell.column;i.column<=o.last_cell.column&&(c=this.ColumnWidth(i.column),!(c>l));i.column++,l-=c);break}return i}AdjacentTile(e,t=0,r=0){if(!t&&!r)return e;let i=e.tile_position,n=e.tile_position.row+t,s=e.tile_position.column+r;if(!(n<0||s<0)){if(this.grid_tiles[i.column]&&this.grid_tiles[i.column][i.row]===e&&this.grid_tiles[s])return this.grid_tiles[s][n];if(!i.column&&this.frozen_column_tiles[i.row]===e)return this.frozen_column_tiles[n];if(!i.row&&this.frozen_row_tiles[i.column]===e)return this.frozen_row_tiles[s]}}UpdateTiles(){if(!this.container)throw new Error("invalid container");this.grid_tiles.forEach(x=>{x.forEach(w=>{w.parentElement&&w.parentElement.removeChild(w)})});for(let x of[this.column_header_tiles,this.row_header_tiles,this.frozen_row_tiles,this.frozen_column_tiles])for(let w of x)w.parentElement&&w.parentElement.removeChild(w);this.frozen_row_tiles=[],this.frozen_column_tiles=[],this.row_header_tiles=[],this.column_header_tiles=[],this.grid_tiles=[];let e=this.view.active_sheet;this.default_row_height=Math.round(e.default_row_height*this.scale),this.default_column_width=Math.round(e.default_column_width*this.scale),this.header_offset={x:Math.round(e.header_offset.x*this.scale),y:Math.round(e.header_offset.y*this.scale)},this.UpdateContainingGrid();let t=this.view.active_sheet.rows,r=this.view.active_sheet.columns;t||(t=100),r||(r=40);let i=0,n=0;for(let x=0;x<t;x++)i+=this.RowHeight(x);for(let x=0;x<r;x++)n+=this.ColumnWidth(x);if(!n||!i)throw"unexpected missing total size";if(i||(i=this.default_row_height*t),n||(n=this.default_column_width*r),this.container.clientWidth>n+this.header_size.width){let x=Math.ceil((this.container.offsetWidth-n)/this.default_column_width);n+=x*this.default_column_width,r+=x}if(this.last_column=r,this.container.clientHeight>i+this.header_size.height){let x=Math.ceil((this.container.offsetHeight-i)/this.default_row_height);i+=x*this.default_row_height,t+=x}this.column_header.style.width=this.contents.style.width=`${n}px`,this.row_header.style.height=this.contents.style.height=`${i}px`;let s=[],a=[],o=0,l=0;for(let x=0;x<r;x++){let w=this.ColumnWidth(x);o&&o+w>this.default_tile_size.width&&(s.push(o),a.push(l),l=x,o=0),o+=w}s.push(o),a.push(l);let c=[],h=[],u=0,m=0;for(let x=0;x<t;x++){let w=this.RowHeight(x);u&&u+w>this.default_tile_size.height&&(c.push(u),h.push(m),u=0,m=x),u+=w}c.push(u),h.push(m);let f=s.length,b=c.length,p=0,g=0,_=0,y=0;for(let x=0;x<this.view.active_sheet.freeze.rows;x++)_+=this.RowHeight(x);for(let x=0;x<this.view.active_sheet.freeze.columns;x++)y+=this.ColumnWidth(x);for(let x=0;x<f;x++){let w=[];p=0;let A=x===f-1?r-a[x]:a[x+1]-a[x];this.column_header_tiles.push(this.CreateTile("column-header-tile",{height:this.header_offset.y,width:s[x]},{row:0,column:x},{row:0,column:a[x]},{rows:0,columns:A},{x:g,y:0},this.column_header)),this.view.active_sheet.freeze.rows&&this.frozen_row_tiles.push(this.CreateTile("frozen-row-tile",{height:_,width:s[x]},{row:1,column:x},{row:0,column:a[x]},{rows:0,columns:A},{x:g,y:0},this.column_header));for(let S=0;S<b;S++){let E=S===b-1?t-h[S]:h[S+1]-h[S];x||(this.row_header_tiles.push(this.CreateTile("row-header-tile",{height:c[S],width:this.header_offset.x},{row:S,column:0},{row:h[S],column:0},{rows:E,columns:1},{x:0,y:p},this.row_header)),this.view.active_sheet.freeze.columns&&this.frozen_column_tiles.push(this.CreateTile("frozen-column-tile",{height:c[S],width:y},{row:S,column:1},{row:h[S],column:0},{rows:E,columns:1},{x:0,y:p},this.row_header))),w.push(this.CreateTile("grid-tile",{height:c[S],width:s[x]},{row:S,column:x},{row:h[S],column:a[x]},{rows:E,columns:A},{x:g,y:p},this.contents)),p+=c[S]}this.grid_tiles.push(w),g+=s[x]}this.total_height=i,this.total_width=n,this.ClearLayoutCaches(),this.UpdateGridTemplates(!0,!0)}ClearLayoutCaches(){this.row_cache=[],this.column_cache=[]}TileIndexForColumn(e){for(let t of this.column_header_tiles)if(t.first_cell.column<=e&&t.last_cell.column>=e)return t.tile_position.column;return-1}TileIndexForRow(e){for(let t of this.row_header_tiles)if(t.first_cell.row<=e&&t.last_cell.row>=e)return t.tile_position.row;return-1}DirtyHeaders(e){if(e){for(let t of this.column_header_tiles){if(t.dirty)continue;let r=new v({row:e.start.row,column:t.first_cell.column},{row:e.start.row,column:t.last_cell.column});(e.entire_row||r.Intersects(e))&&(t.dirty=!0)}for(let t of this.row_header_tiles){if(t.dirty)continue;let r=new v({column:e.start.column,row:t.first_cell.row},{column:e.start.column,row:t.last_cell.row});(e.entire_column||r.Intersects(e))&&(t.dirty=!0)}}}DirtyAll(){for(let e of this.grid_tiles)for(let t of e)t.dirty=!0}DirtyArea(e){if(!this.initialized)return;let t={row:0,column:0},r={row:this.grid_tiles[0].length-1,column:this.grid_tiles.length-1};e.start.column!==1/0&&(t.column=r.column=this.TileIndexForColumn(e.start.column),e.end.column!==e.start.column&&(r.column=this.TileIndexForColumn(e.end.column))),e.start.row!==1/0&&(t.row=r.row=this.TileIndexForRow(e.start.row),e.end.row!==e.start.row&&(r.row=this.TileIndexForRow(e.end.row)));for(let i=t.column;i<=r.column;i++)for(let n=t.row;n<=r.row;n++)this.grid_tiles[i][n].dirty=!0}VisibleTiles(){let e=[{row:0,column:0},{row:0,column:0}];if(!this.container||!this.grid_tiles.length||!this.grid_tiles[0].length)return new v(e[0],e[1]);let t=this.scroll_reference_node.scrollLeft,r=t+this.scroll_reference_node.offsetWidth,i=this.scroll_reference_node.scrollTop,n=i+this.scroll_reference_node.offsetHeight;for(let s of this.grid_tiles){let a=s[0];if(a.pixel_start.x<=t&&a.pixel_end.x>=t){for(a of s)if(a.pixel_start.y<=i&&a.pixel_end.y>=i){e[0]=a.tile_position;break}}if(s===this.grid_tiles[this.grid_tiles.length-1]||a.pixel_start.x<=r&&a.pixel_end.x>=r){for(a of s)if(a===s[s.length-1]||a.pixel_start.y<=n&&a.pixel_end.y>=n)return e[1]=a.tile_position,new v(e[0],e[1])}}return new v(e[0],e[1])}UpdateTileHeights(e=!0,t=-1){let r=0;for(let i=0;i<this.row_header_tiles.length;i++){let n=this.row_header_tiles[i];if(t>n.last_cell.row){r+=n.logical_size.height;continue}let s=0;for(let o=n.first_cell.row;o<=n.last_cell.row;o++)s+=this.RowHeight(o);let a=n.logical_size.height===s;if(n.pixel_start.y=r,r+=s,n.pixel_end.y=r,!a){if(n.logical_size.height=s,n.style.height=`${s}px`,n.height=this.dpr*s,this.view.active_sheet.freeze.columns){let o=this.frozen_column_tiles[i];o.logical_size.height=s,o.style.height=`${s}px`,o.height=this.dpr*s}e&&(n.dirty=!0,n.needs_full_repaint=!0)}for(let o of this.grid_tiles){let l=o[i];l.pixel_start.y=n.pixel_start.y,l.pixel_end.y=n.pixel_end.y,a||(l.logical_size.height=s,l.style.height=`${s}px`,l.height=this.dpr*s,e&&(l.dirty=!0,l.needs_full_repaint=!0))}}if(this.view.active_sheet.freeze.rows){let i=0;for(let n=0;n<this.view.active_sheet.freeze.rows;n++)i+=this.RowHeight(n);for(let n of this.frozen_row_tiles)n.style.height=`${i}px`,n.height=i*this.dpr;i+=this.header_offset.y,this.corner_canvas.style.height=`${i}px`,this.corner_canvas.height=i*this.dpr;for(let n of this.grid_tiles)n[0].dirty=!0}this.UpdateGridTemplates(!1,!0),this.row_header.style.height=this.contents.style.height=`${r}px`,this.ClearLayoutCaches()}UpdateTileWidths(e=!0,t=-1){let r=0;for(let i=0;i<this.column_header_tiles.length;i++){let n=this.column_header_tiles[i],s=this.grid_tiles[i];if(t>n.last_cell.column){r+=n.logical_size.width;continue}let a=0;for(let l=n.first_cell.column;l<=n.last_cell.column;l++)a+=this.ColumnWidth(l);let o=n.logical_size.width===a;if(n.pixel_start.x=r,r+=a,n.pixel_end.x=r,!o){if(n.logical_size.width=a,n.style.width=`${a}px`,n.width=this.dpr*a,this.view.active_sheet.freeze.rows){let l=this.frozen_row_tiles[i];l.logical_size.width=a,l.style.width=`${a}px`,l.width=this.dpr*a}e&&(n.dirty=!0,n.needs_full_repaint=!0)}for(let l of s)l.pixel_start.x=n.pixel_start.x,l.pixel_end.x=n.pixel_end.x,o||(l.logical_size.width=a,l.style.width=`${a}px`,l.width=this.dpr*a,e&&(l.dirty=!0,l.needs_full_repaint=!0))}if(this.view.active_sheet.freeze.columns){let i=0;for(let n=0;n<this.view.active_sheet.freeze.columns;n++)i+=this.ColumnWidth(n);for(let n of this.frozen_column_tiles)n.style.width=`${i}px`,n.width=i*this.dpr;i+=this.header_offset.x,this.corner_canvas.style.width=`${i}px`,this.corner_canvas.width=i*this.dpr;for(let n of this.grid_tiles[0])n.dirty=!0}this.UpdateGridTemplates(!0,!1),this.column_header.style.width=this.contents.style.width=`${r}px`,this.ClearLayoutCaches()}ClampToGrid(e){let t=this.PointToAddress_Grid(e),r=this.OffsetCellAddressToRectangle(t);return e.x>r.left+r.width/2?e.x=r.left+r.width-1:e.x=r.left-1,e.y>r.top+r.height/2?e.y=r.top+r.height-1:e.y=r.top-1,e}OffsetCellAddressToRectangle(e){let t=this.CellAddressToRectangle(e);return e.column>=0&&e.column<this.view.active_sheet.freeze.columns&&(t=t.Shift(this.scroll_reference_node.scrollLeft,0)),e.row>=0&&e.row<this.view.active_sheet.freeze.rows&&(t=t.Shift(0,this.scroll_reference_node.scrollTop)),t}CellAddressToRectangle(e){let t=e.row===1/0||e.row<0?0:e.row,r=e.column===1/0||e.column<0?0:e.column;if(this.column_cache.length<=r+1){this.column_cache.length||(this.column_cache[0]=0);for(let s=this.column_cache.length-1;s<=r;s++)this.column_cache[s+1]=this.column_cache[s]+this.ColumnWidth(s)}if(this.row_cache.length<=t+1){this.row_cache.length||(this.row_cache[0]=0);for(let s=this.row_cache.length-1;s<=t;s++)this.row_cache[s+1]=this.row_cache[s]+this.RowHeight(s)}let i=this.column_cache[r],n=this.row_cache[t];return new U(i,n,this.column_cache[r+1]-i,this.row_cache[t+1]-n)}ResizeTileWidth(e,t,r=!0){let i=this.column_header_tiles[e],n=t-i.logical_size.width;i.logical_size.width=t,i.style.width=`${t}px`,i.width=this.dpr*t,i.pixel_end.x+=n,r&&(i.dirty=!0,i.needs_full_repaint=!0);for(let a=e+1;a<this.column_header_tiles.length;a++){this.column_header_tiles[a].pixel_start.x+=n,this.column_header_tiles[a].pixel_end.x+=n;for(let o of this.grid_tiles[a])o.pixel_start.x+=n,o.pixel_end.x+=n}let s=this.grid_tiles[e];for(i of s)i.logical_size.width=t,i.style.width=`${t}px`,i.width=this.dpr*t,i.pixel_end.x+=n,r&&(i.dirty=!0,i.needs_full_repaint=!0);this.UpdateTotalSize(),this.UpdateGridTemplates(!0,!1),this.UpdateContentsSize()}ResizeTileHeight(e,t,r=!0){let i=this.row_header_tiles[e],n=t-i.logical_size.height;i.logical_size.height=t,i.style.height=`${t}px`,i.height=this.dpr*t,i.pixel_end.y+=n,r&&(i.dirty=!0,i.needs_full_repaint=!0);for(let s=e+1;s<this.row_header_tiles.length;s++)i=this.row_header_tiles[s],i.pixel_start.y+=n,i.pixel_end.y+=n;for(let s of this.grid_tiles){i=s[e],i.logical_size.height=t,i.style.height=`${t}px`,i.height=this.dpr*t,i.pixel_end.y+=n,r&&(i.dirty=!0,i.needs_full_repaint=!0);for(let a=e+1;a<s.length;a++)s[a].pixel_start.y+=n,s[a].pixel_end.y+=n}this.UpdateTotalSize(),this.UpdateGridTemplates(!1,!0),this.UpdateContentsSize()}};var Lt=class extends Ye{constructor(e,t){super(e,t,!0)}InitializeInternal(e,t){}UpdateGridTemplates(e,t){}UpdateTileGridPosition(e){}UpdateContainingGrid(){}ResizeCursor(e){}};var Pt="http://www.w3.org/2000/svg",Vt=class extends Ye{constructor(e,t){super(e,t),this.column_header=D.CreateDiv("treb-top-header"),this.row_header=D.CreateDiv("treb-left-header"),this.corner=D.CreateDiv("treb-corner"),this.corner_canvas=document.createElement("canvas"),this.corner.appendChild(this.corner_canvas),this.contents=D.CreateDiv("treb-contents"),this.buffer_canvas=D.Create("canvas","treb-buffer-canvas",this.contents),this.grid_selection=document.createElementNS(Pt,"svg"),this.grid_selection.classList.add("treb-grid-selection"),this.contents.appendChild(this.grid_selection),this.row_header_selection=document.createElementNS(Pt,"svg"),this.row_header_selection.classList.add("frozen-selection"),this.row_header_selection.classList.add("frozen-selection-rows"),this.column_header.appendChild(this.row_header_selection),this.row_header_annotations=D.CreateDiv("frozen-annotation-container frozen-annotation-container-rows",this.column_header),this.column_header_selection=document.createElementNS(Pt,"svg"),this.column_header_selection.classList.add("frozen-selection"),this.column_header_selection.classList.add("frozen-selection-columns"),this.row_header.appendChild(this.column_header_selection),this.column_header_annotations=D.CreateDiv("frozen-annotation-container frozen-annotation-container-columns",this.row_header),this.corner_selection=document.createElementNS(Pt,"svg"),this.corner_selection.classList.add("frozen-selection"),this.corner.appendChild(this.corner_selection),this.corner_annotations=D.CreateDiv("frozen-annotation-container frozen-annotation-container-corner",this.corner),this.annotation_container=D.CreateDiv("treb-annotation-container"),this.grid_cover=D.CreateDiv("tile-cover grid-cover"),this.column_header_cover=D.CreateDiv("tile-cover column-header-cover"),this.row_header_cover=D.CreateDiv("tile-cover row-header-cover")}InitializeInternal(e,t){this.container=e,this.scroll_reference_node=this.container,e.appendChild(this.column_header),e.appendChild(this.row_header),e.appendChild(this.corner),e.appendChild(this.contents),e.appendChild(this.annotation_container),e.appendChild(this.grid_cover),e.appendChild(this.column_header_cover),e.appendChild(this.row_header_cover),e.appendChild(this.mock_selection),this.container.addEventListener("scroll",()=>t())}ResizeCursor(e){switch(e){case"row":this.row_header_cover.classList.add("resize");break;case"column":this.column_header_cover.classList.add("resize");break;default:this.row_header_cover.classList.remove("resize"),this.column_header_cover.classList.remove("resize");break}}UpdateTileGridPosition(e){e.style.gridColumn=`${e.tile_position.column+1} / ${e.tile_position.column+2}`,e.style.gridRow=`${e.tile_position.row+1} / ${e.tile_position.row+2}`}UpdateContainingGrid(){if(!this.container)throw new Error("missing container");this.header_size.width=this.header_offset.x,this.header_size.height=this.header_offset.y;let e=this.header_offset.x,t=this.header_offset.y;if(this.view.active_sheet.freeze.columns)for(let r=0;r<this.view.active_sheet.freeze.columns;r++)e+=this.ColumnWidth(r);if(this.view.active_sheet.freeze.rows)for(let r=0;r<this.view.active_sheet.freeze.rows;r++)t+=this.RowHeight(r);this.container.style.gridTemplateColumns=`${this.header_offset.x}px auto`,this.container.style.gridTemplateRows=`${this.header_offset.y}px auto`,this.corner_canvas.setAttribute("width",`${this.dpr*e}`),this.corner_canvas.setAttribute("height",`${this.dpr*t}`),this.column_header.style.height=`${t}px`,this.corner_canvas.style.width=`${e}px`,this.corner_canvas.style.height=`${t}px`}UpdateGridTemplates(e=!0,t=!0){let r=0,i=0;this.column_header.style.gridTemplateColumns=this.contents.style.gridTemplateColumns=this.column_header_tiles.map(l=>(r+=l.logical_size.width,`${l.logical_size.width}px`)).join(" "),this.column_header.style.gridTemplateRows=`${this.header_offset.y}px auto`,this.row_header.style.gridTemplateRows=this.contents.style.gridTemplateRows=this.row_header_tiles.map(l=>(i+=l.logical_size.height,`${l.logical_size.height}px`)).join(" ");let n=this.header_offset.y;if(this.view.active_sheet.freeze.rows)for(let l=0;l<this.view.active_sheet.freeze.rows;l++)n+=this.RowHeight(l);this.column_header.style.height=`${n}px`,this.row_header_selection.style.display="block",this.row_header_selection.style.width=`${r}px`,this.corner_selection.style.height=this.row_header_selection.style.height=`${n}px`,this.corner_selection.style.top=this.row_header_selection.style.top="0px",this.row_header_selection.style.left="0px";let s=this.header_offset.x;if(this.view.active_sheet.freeze.columns)for(let l=0;l<this.view.active_sheet.freeze.columns;l++)s+=this.ColumnWidth(l);this.column_header_selection.style.display="block",this.corner_selection.style.width=this.column_header_selection.style.width=`${s}px`,this.column_header_selection.style.height=`${i}px`,this.column_header_selection.style.top="0px",this.corner_selection.style.left=this.column_header_selection.style.left="0px";let a={x:this.view.active_sheet.header_offset.x*this.scale,y:this.view.active_sheet.header_offset.y*this.scale},o=this.view.active_sheet.freeze;o.rows&&o.columns?(this.row_header_annotations.style.display="block",this.column_header_annotations.style.display="block",this.corner_annotations.style.display="block"):o.rows?(this.row_header_annotations.style.display="block",this.column_header_annotations.style.display="none",this.corner_annotations.style.display="none"):o.columns?(this.row_header_annotations.style.display="none",this.column_header_annotations.style.display="block",this.corner_annotations.style.display="none"):(this.row_header_annotations.style.display="none",this.column_header_annotations.style.display="none",this.corner_annotations.style.display="none"),this.row_header_annotations.style.width=`${r}px`,this.corner_annotations.style.height=this.row_header_annotations.style.height=`${n-a.y}px`,this.corner_annotations.style.top=this.row_header_annotations.style.top=`${a.y}px`,this.column_header_annotations.style.width=this.corner_annotations.style.width=`${s-a.x}px`,this.column_header_annotations.style.height=`${i}px`,this.corner_annotations.style.left=this.column_header_annotations.style.left=`${a.x}px`,this.corner_selection.style.display="block",this.grid_selection.style.width=`${r}px`,this.grid_selection.style.height=`${i}px`,this.grid_selection.style.top=`${this.header_offset.y}px`,this.grid_selection.style.left=`${this.header_offset.x}px`,this.annotation_container.style.width=`${r}px`,this.annotation_container.style.height=`${i}px`,this.annotation_container.style.top=`${this.header_offset.y}px`,this.annotation_container.style.left=`${this.header_offset.x}px`}};var Ft=class{constructor(){this.function_names=[];this.argument_separator=T.argument_separator.charCodeAt(0);this.function_map={}}RemoveFunctions(e){Array.isArray(e)||(e=[e]);let t=Object.keys(this.function_map).map(r=>this.function_map[r]);for(let r of e)t=t.filter(i=>i.name!==r.name);this.SetFunctions(t)}AddFunctions(e){Array.isArray(e)||(e=[e]);let t=Object.keys(this.function_map).map(r=>this.function_map[r]).concat(...e);this.SetFunctions(t)}SetFunctions(e){this.function_map={},this.function_names=e.map(t=>(this.function_map[t.name.toLowerCase()]=t,t.name)).sort((t,r)=>t.toLowerCase().localeCompare(r.toLowerCase()))}NormalizeIdentifier(e){let t=this.function_map[e.toLowerCase()];return t?t.name:void 0}Exec(e){if(e.text[0]!=="=")return{};let t,r={};if(e.cursor===e.text.length&&(t=e.text.match(/(?:^|[^A-Za-z_\d])([A-Za-z_][\w\d_.]*)\s*$/),t)){let n=t[1],s=new RegExp("^"+n.replace(".","\\."),"i");r={completions:this.function_names.filter(o=>s.test(o)).map(o=>this.function_map[o.toLowerCase()]),token:n,position:e.cursor-n.length}}let i=this.ParseTooltip(e.text.substr(0,e.cursor));if(i.function){let n=this.function_map[i.function.toLowerCase()];n&&(r.tooltip='<span class="notranslate">'+n.name+"</span>",r.arguments="("+(n.arguments||[]).map((s,a)=>{let o=s.name||"argument";return a===i.argument?`<span class="active-argument">${o}</span>`:o}).join(T.argument_separator+" ")+")",r.description=n.description?`<span class="function-description">${n.description}</span>`:"",r.function_position=i.position||0)}return r}ParseTooltip(e){let t=[],r=0,i="",n=!1,s=0;for(let o of e){let l=o.charCodeAt(0);if(n)l===34&&(n=!1);else switch(l){case 40:t.push({buffer:i.trim(),argument:r,position:s-i.length}),i="",r=0;break;case this.argument_separator:r++;break;case 41:r=t.pop()?.argument||0;break;case 34:i="",n=!0;break;default:l>=97&&l<=122||l>=65&&l<=90||l>=48&&l<=57||l===95||l===46?i+=o:i=""}s++}let a=t.pop();return{function:a?.buffer||void 0,position:a?.position||0,argument:r}}};var Zn=typeof navigator>"u"?"":navigator.appVersion,Ae=typeof navigator>"u"?"":navigator.userAgent,Er=class{constructor(){this.is_edge=/Edge/.test(Zn);this.is_ipad=/iPad|iPhone/.test(Ae);this.is_android=/android|samsung/i.test(Ae);this.is_mobile=this.is_ipad||this.is_android;this.is_firefox=/firefox/i.test(Ae);this.is_safari=/safari/i.test(Ae)&&!/edg/i.test(Ae);this.is_mac=/macintosh/i.test(Ae);this.is_chrome=/Chrome/i.test(Ae);this.is_windows=/win64|win32|windows\s+nt/i.test(Ae);this.is_modern=!this.is_edge&&!(this.is_firefox&&this.is_android)&&/webkit|firefox/i.test(Ae)}},$n={is_edge:!1,is_ipad:!1,is_android:!1,is_firefox:!1,is_safari:!1,is_mac:!1,is_chrome:!1,trident:!1,is_windows:!1,is_modern:!0,is_node:!0,is_mobile:!1},q=typeof navigator>"u"?$n:new Er;var Tr=class extends oe{constructor(t,r,i,n,s){super();this.parser=t;this.theme=r;this.model=i;this.view=n;this.autocomplete=s;this.selecting_=!1;this.last_parse_string="";this.dependency_list=[];this.reference_index_map=[];this.last_reconstructed_text="";this.enable_reconstruct=!0;this.selection_={target:{row:0,column:0},area:new v({row:0,column:0})};this.measurement_node=document.createElement("div")}get selecting(){return this.selecting_}get selection(){return this.selection_}set selection(t){if(t){let r=t.target||t.area.start;this.selection_={target:{row:r.row,column:r.column},area:new v(t.area.start,t.area.end)}}else{let r={row:0,column:0};this.selection_={target:r,area:new v(r)}}}UpdateTheme(t){}InsertReference(t,r){if(!this.editor_node)return;if(!this.editor_insert_node){let n=window.getSelection();if(n){let s=n.getRangeAt(0);this.editor_insert_node=document.createElement("span"),s.insertNode(this.editor_insert_node),n.collapseToEnd()}}if(this.editor_insert_node&&(this.editor_insert_node.innerText=t,t.length)){let n=window.getSelection();if(n){let s=document.createRange();s.selectNodeContents(this.editor_insert_node),n.removeAllRanges(),n.addRange(s),n.collapseToEnd()}}let i=this.ListDependencies();this.Publish({type:"update",text:this.editor_node.textContent||void 0,dependencies:i})}Autocomplete(t,r){if(!this.container_node)return;let i;r?.nodeType===Node.ELEMENT_NODE?i=r.getBoundingClientRect():i=this.container_node.getBoundingClientRect();let n=new U(Math.round(i.left),Math.round(i.top),i.width,i.height);this.autocomplete.Show(this.AcceptAutocomplete.bind(this),t,n)}FlushReference(){this.editor_insert_node=void 0}SubstringToCaret(t){let r=window.getSelection();if(!r)throw new Error("error getting selection");if(r.rangeCount===0)return console.warn("range count is 0"),"";let i=r.getRangeAt(0),n=i.cloneRange();return n.selectNodeContents(t),n.setEnd(i.endContainer,i.endOffset),this.measurement_node.textContent="",this.measurement_node.appendChild(n.cloneContents()),this.measurement_node.textContent}UpdateSelectState(t=!1){let r=!1,i=!1;if(!this.editor_node)return;let n=this.editor_node.textContent||"";if(n.trim()[0]==="="){i=!0;let a=this.SubstringToCaret(this.editor_node).trim();if(a.length){let o=a[a.length-1];Tr.FormulaChars.some(c=>o===c)&&(r=!0);let l=this.autocomplete_matcher;l&&re().then(()=>{let c=l.Exec({text:n,cursor:a.length}),h=this.NodeAtIndex(c.completions?c.position||0:c.function_position||0);this.Autocomplete(c,h)})}}r!==this.selecting_?(this.selecting_=r,r||this.Reconstruct(),(t||!r)&&this.Publish({type:"end-selection"})):r&&t&&this.Publish({type:"end-selection"});let s=i?this.ListDependencies():void 0;this.Publish({type:"update",text:n,dependencies:s})}NodeAtIndex(t){let r=this.editor_node?.childNodes||[];for(let i=0;i<r.length;i++){let n=r[i].textContent?.length||0;if(n>t)return r[i];t-=n}}Reconstruct(){if(!this.enable_reconstruct||!this.editor_node||(this.ParseDependencies(),!this.reference_list))return;let t=this.editor_node.textContent||"";if(t.trim()[0]!=="="||(this.editor_node.spellcheck=!1,this.selecting)||t.trim()===this.last_reconstructed_text.trim())return;this.last_reconstructed_text=t;let i=this.SubstringToCaret(this.editor_node).length,n=document.createDocumentFragment(),s,a=0,o,l="";if(this.last_parse_result){let c=0,h="",u=0,m=(f,b,p,g)=>{let _=document.createTextNode(b);if(p==="text")n.appendChild(_);else{let y=document.createElement("span");y.appendChild(_),y.dataset.position=f.toString(),y.dataset.type=p,p==="address"||p==="range"?y.classList.add(`highlight-${this.reference_index_map[u++]%5+1}`):p==="structured-reference"?this.target_address&&g?.type==="structured-reference"&&this.model.ResolveStructuredReference(g,this.target_address)&&y.classList.add(`highlight-${this.reference_index_map[u++]%5+1}`):p==="identifier"&&this.model.named_ranges.Get(b)&&y.classList.add(`highlight-${this.reference_index_map[u++]%5+1}`),n.appendChild(y)}return i>=f&&i<f+b.length&&(s=_,a=i-f),_};this.last_parse_result.expression&&this.parser.Walk(this.last_parse_result.expression,f=>{switch(f.type){case"address":case"range":case"call":case"identifier":case"structured-reference":f.position!==c-1&&m(c,t.substring(c,f.position+1),"text"),f.type==="call"||f.type==="identifier"?h=f.name:h=this.last_parse_string.substring(f.position+1,f.position+f.label.length+1),m(f.position+1,h,f.type,f),c=f.position+h.length+1;break}return f.type!=="range"}),l=t.substring(c)||"",o=m(c,l,"text")}if(!s)if(t.length===i){let c=document.createElement("span");n.appendChild(c),s=c,a=0}else s=o,a=Math.max(0,l.length-(t.length-i));if(this.editor_node.textContent="",this.editor_node.appendChild(n),s){let c=document.createRange(),h=window.getSelection();h&&(c.setStart(s,a),c.setEnd(s,a),c.collapse(!0),h.removeAllRanges(),h.addRange(c))}}ParseDependencies(){if(!this.editor_node)return;let t=this.editor_node.textContent||"";if(t!==this.last_parse_string||!this.reference_list){let r={};for(let i of this.model.sheets.list)r[i.name.toLowerCase()]=i.id;if(this.dependency_list=[],this.reference_index_map=[],t){let i=this.parser.Parse(t);if(this.last_parse_string=t,this.last_parse_result=i,this.reference_list=[],i.full_reference_list)for(let n of i.full_reference_list)if(n.type==="address"||n.type==="range"){let s=n.type==="address"?n:n.start;s.sheet_id||(s.sheet?s.sheet_id=r[s.sheet.toLowerCase()]||0:s.sheet_id=this.view.active_sheet.id),this.reference_list.push(n)}else if(n.type==="structured-reference")if(this.target_address){let s=this.model.ResolveStructuredReference(n,this.target_address);s&&this.reference_list.push(s)}else console.info("target address not set");else{let s=this.model.named_ranges.Get(n.name);s&&(s.count===1?this.reference_list.push({type:"address",...s.start,label:n.name,position:n.position,id:n.id}):this.reference_list.push({type:"range",start:{type:"address",position:n.position,id:n.id,label:n.name,...s.start},end:{type:"address",position:n.position,label:n.name,id:n.id,...s.end},label:n.name,position:n.position,id:n.id}))}if(this.reference_list){this.reference_list.sort((n,s)=>n.position-s.position);for(let n of this.reference_list){let s;n.type==="address"?s=new v({row:n.row,column:n.column,sheet_id:n.sheet_id}):s=new v({row:n.start.row,column:n.start.column,sheet_id:n.start.sheet_id},{row:n.end.row,column:n.end.column});let a=s.spreadsheet_label;this.dependency_list.some((o,l)=>o.spreadsheet_label===a&&o.start.sheet_id===s.start.sheet_id?(this.reference_index_map.push(l),!0):!1)||(this.reference_index_map.push(this.dependency_list.length),this.dependency_list.push(s))}}}else this.reference_list=void 0}}ListDependencies(){return this.ParseDependencies(),this.dependency_list||[]}AcceptAutocomplete(t){if(!this.editor_node)return;let r=window.getSelection(),i=0;if(t.data&&t.data.completions){for(let c of t.data.completions)if(c.name.toLowerCase()===t.value?.toLowerCase()){i=c.type||0;break}}if(!r)throw new Error("error getting selection");let n=r.getRangeAt(0),s=n.cloneRange(),a=document.createElement("div");s.selectNodeContents(this.editor_node),s.setEnd(n.endContainer,n.endOffset),a.appendChild(s.cloneContents());let o=(a.textContent||"").substr(0,t.data?t.data.position:0)+t.value,l=i===1?o:o+"(";this.editor_node.textContent=l,this.autocomplete.Hide(),q.is_firefox||this.Reconstruct(),r=window.getSelection(),n=document.createRange(),this.editor_node?.lastChild&&n.setStartAfter(this.editor_node.lastChild),n.collapse(!0),r?.removeAllRanges(),r?.addRange(n),this.selecting_=!0,t.click&&this.UpdateSelectState()}},Fe=Tr;Fe.FormulaChars=("$^&*(-+={[<>/~%"+T.argument_separator).split("");var Gt=class extends Fe{constructor(t,r,i,n,s,a){super(r,i,n,s,a);this.container=t;this.scale=1;this._editing=!1;this.edit_container=t.querySelector(".treb-overlay-container"),this.edit_node=this.edit_container.querySelector(".treb-overlay-editor"),q.is_firefox&&this.edit_node.classList.add("firefox"),this.edit_node.inputMode="none",this.edit_node.addEventListener("input",o=>{if(o instanceof InputEvent&&o.isComposing)return;let l=this.edit_node.firstChild;l&&l.tagName==="BR"&&this.edit_node.removeChild(l),this.editing&&(this.Reconstruct(),this.UpdateSelectState())}),this.edit_node.addEventListener("keyup",o=>{if(!(o.isComposing||!this.editing||this.autocomplete.HandleKey("keyup",o).handled)){if(this.selecting_)switch(o.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"Shift":case"Control":return}this.FlushReference(),this.UpdateSelectState(!0)}}),this.edit_inset=this.edit_container.querySelector(".treb-overlay-inset"),this.editor_node=this.edit_node,this.container_node=this.edit_container,this.ClearContents()}get editing(){return this._editing}set editing(t){this._editing!==t&&(this._editing=t,t?(this.edit_container.style.opacity="1",this.edit_container.style.pointerEvents="initial"):(this.edit_container.style.opacity="0",this.edit_container.style.pointerEvents="none"))}UpdateCaption(t=""){this.edit_node.setAttribute("aria-label",t)}Focus(t=""){this.edit_node!==document.activeElement&&(this.edit_container.style.top=`${this.container.scrollTop+this.view.active_sheet.header_offset.y}px`,this.edit_container.style.left=`${this.container.scrollLeft+this.view.active_sheet.header_offset.x}px`),this.edit_node.focus(),this.UpdateCaption(t)}CloseEditor(){this.editing=!1,this.ClearContents(),this.edit_node.spellcheck=!0,this.autocomplete.Hide(),this.active_cell=void 0}ClearContents(){q.is_firefox?this.edit_node.innerHTML="<span></span>":this.edit_node.textContent=""}Edit(t,r,i,n,s){this.Publish({type:"start-editing",editor:"ice"}),this.active_cell=i,this.target_address={...t.target};let a=i.style||{};switch(this.edit_node.style.font=k.Font(a,this.scale),this.edit_node.style.color=R(this.theme,a.text,1),this.edit_inset.style.backgroundColor=R(this.theme,a.fill,0),a.horizontal_align){case k.HorizontalAlign.Right:this.edit_container.classList.remove("align-center","align-left"),this.edit_container.classList.add("align-right");break;case k.HorizontalAlign.Center:this.edit_container.classList.remove("align-right","align-left"),this.edit_container.classList.add("align-center");break;default:this.edit_container.classList.remove("align-right","align-center"),this.edit_container.classList.add("align-left");break}this.edit_node.style.paddingBottom=`${Math.max(0,(self.devicePixelRatio||1)-1)}px`;let o=n?.toString()||"";if(o&&o[0]==="="&&(this.edit_node.spellcheck=!1),this.autocomplete.ResetBlock(),this.FlushReference(),this.selection=t,typeof n<"u"){let l=o[0]!=="="&&o[o.length-1]==="%",c=o.length;this.edit_node.textContent=o;{let h=document.createRange(),u=window.getSelection();if(!u)throw new Error("invalid selection object");this.edit_node.lastChild&&(l?(h.setStart(this.edit_node.lastChild,c-1),h.setEnd(this.edit_node.lastChild,c-1)):h.setStartAfter(this.edit_node.lastChild)),h.collapse(!0),u.removeAllRanges(),u.addRange(h)}if(!s){let h=this.ListDependencies();this.Publish({type:"update",text:n.toString(),dependencies:h})}}r.ApplyStyle(this.edit_container),this.editing=!0,re().then(()=>{this.last_reconstructed_text="",this.Reconstruct()})}HandleKeyDown(t){if(!this.editing)return 0;let r=this.autocomplete.HandleKey("keydown",t);if(r.accept&&this.AcceptAutocomplete(r),r.handled)return 1;switch(t.key){case"Enter":case"Tab":return this.selecting_=!1,2;case"Escape":case"Esc":return this.selecting_=!1,3;case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"Up":case"Down":case"Left":case"Right":return this.selecting_?0:1}return 1}UpdateTheme(t){this.scale=t}};var Rr=class{constructor(){this.cache={};typeof document<"u"&&(this.canvas=document.createElement("canvas"))}Flush(){this.cache={}}Get(e,t=10){let r=e+";"+t,i=this.cache[r];return i||(i=this.Measure(e,t),this.cache[r]=i,i)}Measure(e,t){let r=e.match(/([\d.]+)((?:%|em))/);if(r){let u=r[1]+r[2],m=Number(r[1])*t;r[2]==="%"&&(m/=100),e=e.replace(u,m+"px")}let i=this.canvas.getContext("2d",{willReadFrequently:!0});if(!i)throw new Error("invalid context");i.font=e;let n=i.measureText("MMM"),s=Math.ceil(n.width);if(this.canvas.setAttribute("width",s.toString()),this.canvas.setAttribute("height",s.toString()),i=this.canvas.getContext("2d",{willReadFrequently:!0}),!i)throw new Error("invalid context");i.font=e,i.textAlign="center",i.textBaseline="alphabetic",i.fillStyle="#000";let a=Math.round(s*2/3),o=Math.round(s/2);i.clearRect(0,0,s,s);for(let u=32;u<=126;u++){let m=String.fromCharCode(u);i.fillText(m,o,a)}let l=i.getImageData(0,0,this.canvas.width,this.canvas.height).data,c=Math.floor(this.GetFirstIndex(l)/s),h=Math.floor(this.GetLastIndex(l)/s);return{ascender:a-c,descender:h-a,block:h-c+1,paren:i.measureText("(").width,hash:i.measureText("##").width-i.measureText("#").width}}GetFirstIndex(e){for(let t=3,r=e.length;t<r;t+=4)if(e[t]>0)return(t-3)/4;return e.length}GetLastIndex(e){for(let t=e.length-1;t>=3;t-=4)if(e[t]>0)return t/4;return 0}},Ht=new Rr;var Ir="bottom",Ai=/webkit/i.test(typeof navigator>"u"?"":navigator?.userAgent||"")?1:0,Bt=class{constructor(e,t,r,i,n){this.theme=e;this.layout=t;this.model=r;this.view=i;this.options=n;this.cell_edge_buffer=4;this.overflow_areas=[];this.buffer_canvas_size={width:256,height:256};this.buffer_canvas=t.buffer_canvas,this.buffer_canvas.width=this.buffer_canvas_size.width,this.buffer_canvas.height=this.buffer_canvas_size.height;let s=this.buffer_canvas.getContext("2d",{alpha:!1});if(s){let a=this.layout.dpr;this.buffer_context=s,this.buffer_context.setTransform(a,0,0,a,0,0),this.buffer_context.textAlign="left",this.buffer_context.textBaseline=Ir}}FlushOverflows(){this.view.active_sheet.cells.IterateAll(t=>{t.renderer_data?.overflowed&&(t.renderer_data=void 0,t.render_clean[this.view.view_index]=!1)});for(let t of this.overflow_areas)t.tile.dirty=!0;this.overflow_areas=[]}MeasureText(e,t){let r=this.layout.grid_tiles[0][0].getContext("2d",{alpha:!1});if(!r)throw new Error("invalid context");return t&&(r.font=t),r.measureText(e)}EnsureBuffer(e=0,t=0,r=0){let i=this.layout.dpr;if(e=e*i,t=t*i,r=r*i,e>this.buffer_canvas_size.width||t>this.buffer_canvas_size.height){this.buffer_canvas_size.width=Math.max(Math.ceil(e/256)*256,this.buffer_canvas_size.width),this.buffer_canvas_size.height=Math.max(Math.ceil(t/256)*256,this.buffer_canvas_size.height),this.buffer_canvas.width=this.buffer_canvas_size.width,this.buffer_canvas.height=this.buffer_canvas_size.height;let n=this.buffer_canvas.getContext("2d",{alpha:!1});n&&(this.buffer_context=n,this.buffer_context.textAlign="left",this.buffer_context.textBaseline=Ir)}this.buffer_context.setTransform(i,0,0,i,r,0)}OverflowDirty(e=!1){let t=[];for(let r of this.overflow_areas){let i=r.area.start.row,n=e;if(!n)for(let s=r.area.start.column;!n&&s<=r.area.end.column;s++){let a=this.view.active_sheet.cells.GetCell({row:i,column:s},!1);n=!!(a&&!a.render_clean[this.view.view_index])}if(n){for(let s=r.area.start.column;s<=r.area.end.column;s++){let a=this.view.active_sheet.cells.GetCell({row:i,column:s},!1);a&&(a.render_clean[this.view.view_index]=!1,a.renderer_data&&a.renderer_data.overflowed&&(a.renderer_data=void 0))}r.tile.dirty=!0}else t.push(r)}this.overflow_areas=t}RenderCorner(){let t=this.layout.corner_canvas.getContext("2d",{alpha:!1});if(!t)throw new Error("invalid context");let r=Ht.Get(k.Font(this.theme.headers||{},this.layout.scale)),i=this.layout.dpr,n=this.layout.header_offset,s=n.x;for(let o=0;o<this.view.active_sheet.freeze.columns;o++)s+=this.layout.ColumnWidth(o);let a=n.y;for(let o=0;o<this.view.active_sheet.freeze.rows;o++)a+=this.layout.RowHeight(o);t.setTransform(i,0,0,i,0,0),t.fillStyle=this.theme.headers?.fill?R(this.theme,this.theme.headers.fill):"",t.fillRect(0,0,s,n.y),t.fillRect(0,0,n.x,a),t.strokeStyle=this.theme.headers_grid_color||"",t.beginPath(),t.moveTo(n.x-.5,0),t.lineTo(n.x-.5,n.y),t.moveTo(0,n.y-.5),t.lineTo(n.x,n.y-.5),t.stroke(),!(!this.view.active_sheet.freeze.columns&&!this.view.active_sheet.freeze.rows)&&(t.strokeStyle=this.theme.grid_color||"",t.beginPath(),a!==n.y&&(t.moveTo(n.x-.5,n.y),t.lineTo(n.x-.5,a)),s!==n.x&&(t.moveTo(n.x,n.y-.5),t.lineTo(s,n.y-.5)),t.stroke(),t.strokeStyle=this.theme.headers_grid_color||"",t.textAlign="center",t.textBaseline="middle",t.font=k.Font(this.theme.headers||{},this.layout.scale),t.fillStyle=R(this.theme,this.theme.headers?.text),this.view.active_sheet.freeze.rows&&this.layout.header_offset.x>1&&(t.setTransform(i,0,0,i,0,0),t.translate(0,n.y),t.beginPath(),t.moveTo(0,0-.5),t.lineTo(n.x,0-.5),t.stroke(),this.RenderRowLabels(t,0,this.view.active_sheet.freeze.rows-1,r.block)),this.view.active_sheet.freeze.columns&&this.layout.header_offset.y>1&&(t.setTransform(i,0,0,i,0,0),t.translate(n.x,0),t.beginPath(),t.moveTo(0-.5,0),t.lineTo(0-.5,n.y),t.stroke(),this.RenderColumnLabels(t,0,this.view.active_sheet.freeze.columns-1)))}RenderColumnLabels(e,t,r){let i=this.layout.header_offset.y;for(e.fillStyle=R(this.theme,this.theme.headers?.text,0),e.beginPath();t<=r;t++){let n=this.layout.ColumnWidth(t),s=v.ColumnToLabel(t),a=e.measureText(s);n>a.width&&e.fillText(s,n/2,i/2+1),e.moveTo(n-.5,0),e.lineTo(n-.5,i),e.translate(n,0)}e.stroke()}RenderRowLabels(e,t,r,i){let n=this.layout.header_offset.x;for(e.fillStyle=R(this.theme,this.theme.headers?.text,0),e.beginPath();t<=r;t++){let s=this.layout.RowHeight(t);s>=i*1.2&&e.fillText(`${t+1}`,n/2,s/2+1),e.moveTo(0,s-.5),e.lineTo(n,s-.5),e.translate(0,s)}e.stroke()}RenderHeaders(e,t=!1){let r=this.layout.dpr,i=this.layout.header_offset,n=Ht.Get(k.Font(this.theme.headers||{},this.layout.scale));for(let s=e.start.column;s<=e.end.column;s++){let a=this.layout.column_header_tiles[s];if(a.dirty||t){let o=a.getContext("2d",{alpha:!1});if(!o)continue;o.setTransform(r,0,0,r,0,0),o.textAlign="center",o.textBaseline="middle",o.font=k.Font(this.theme.headers||{},this.layout.scale),o.fillStyle=this.theme.headers?.fill?R(this.theme,this.theme.headers.fill):"",o.fillRect(0,0,a.logical_size.width,this.layout.header_offset.y),o.strokeStyle=this.theme.headers_grid_color||"",o.beginPath(),o.moveTo(0,i.y-.5),o.lineTo(a.logical_size.width,i.y-.5),o.stroke(),o.strokeStyle=this.theme.headers_grid_color||"",this.RenderColumnLabels(o,a.first_cell.column,a.last_cell.column),a.dirty=!1}}for(let s=e.start.row;s<=e.end.row;s++){let a=this.layout.row_header_tiles[s];if(a.dirty||t){let o=a.getContext("2d",{alpha:!1});if(!o)continue;o.fillStyle=this.theme.headers?.fill?R(this.theme,this.theme.headers.fill):"",o.setTransform(r,0,0,r,0,0),o.textAlign="center",o.textBaseline="middle",o.font=k.Font(this.theme.headers||{},this.layout.scale),o.fillRect(0,0,this.layout.header_offset.x,a.logical_size.height),o.strokeStyle=this.theme.headers_grid_color||"",o.beginPath(),o.moveTo(i.x-.5,0),o.lineTo(i.x-.5,a.logical_size.height),o.stroke(),o.strokeStyle=this.theme.headers_grid_color||"",this.RenderRowLabels(o,a.first_cell.row,a.last_cell.row,n.block),a.dirty=!1}}(this.view.active_sheet.freeze.rows||this.view.active_sheet.freeze.columns)&&this.RenderCorner()}CopyToAdjacent(e,t,r,i,n,s,a){let o=this.layout.AdjacentTile(e,i,r);if(!o)return;let l=n,c=s;r>0?l=n-(e.pixel_end.x-e.pixel_start.x)*t:r<0&&(l=n+(o.pixel_end.x-o.pixel_start.x)*t),i>0&&(c=s-(e.pixel_end.y-e.pixel_start.y)*t);let h=o.getContext("2d",{alpha:!1});h&&(h.setTransform(t,0,0,t,l,c),h.drawImage(this.buffer_canvas,0,0,(a.width||0)*t,(a.height||0)*t,a.left||0,0,a.width||0,a.height||0))}Render(e){let t=e.getContext("2d",{alpha:!1});if(!t)return;t.textBaseline=Ir;let r=this.layout.dpr;t.setTransform(r,0,0,r,0,0);let i=0,n=0;for(let o=e.first_cell.column;o<=e.last_cell.column;o++){let l=this.layout.ColumnWidth(o);if(l){n=0;for(let c=e.first_cell.row;c<=e.last_cell.row;c++){let h=this.layout.RowHeight(c);if(h){t.setTransform(r,0,0,r,i,n);let u=this.view.active_sheet.CellData({row:c,column:o});if(e.needs_full_repaint||!u.render_clean[this.view.view_index]){let m=this.RenderCell(e,u,t,{row:c,column:o},l,h,e.pixel_start.x+i,e.pixel_start.y+n);m.tile_overflow_right&&this.CopyToAdjacent(e,r,1,0,i,n,m),m.tile_overflow_left&&this.CopyToAdjacent(e,r,-1,0,i,n,m),m.tile_overflow_bottom&&this.CopyToAdjacent(e,r,0,1,i,n,m)}}n+=h*r}i+=l*r}}if(!this.view.active_sheet.freeze.rows&&!this.view.active_sheet.freeze.columns)return;let s=0,a=0;if(e.first_cell.row<=this.view.active_sheet.freeze.rows-1)for(let o=e.first_cell.row;o<this.view.active_sheet.freeze.rows&&o<=e.last_cell.row;o++)s+=this.layout.RowHeight(o);if(e.first_cell.column<=this.view.active_sheet.freeze.columns-1)for(let o=e.first_cell.column;o<this.view.active_sheet.freeze.columns&&o<=e.last_cell.column;o++)a+=this.layout.ColumnWidth(o);if(s){let o=this.layout.frozen_row_tiles[e.tile_position.column];if(!o)throw new Error("can't find matching header tile");let l=o.getContext("2d",{alpha:!0});if(!l)throw new Error("header context failed");l.setTransform(r,0,0,r,0,0),l.drawImage(e,0,0,e.logical_size.width*r,s*r,0,0,e.logical_size.width,s)}if(a){let o=this.layout.frozen_column_tiles[e.tile_position.row];if(!o)throw new Error("can't find matching header tile");let l=o.getContext("2d",{alpha:!0});if(!l)throw new Error("header context failed");l.setTransform(r,0,0,r,0,0),l.drawImage(e,0,0,a*r,e.logical_size.height*r,0,0,a,e.logical_size.height)}if(a&&s){let o=this.layout.corner_canvas.getContext("2d",{alpha:"false"});if(!o)throw new Error("corner context failed");o.setTransform(r,0,0,r,this.layout.header_offset.x*r,this.layout.header_offset.y*r),o.drawImage(e,0,0,a*r,s*r,0,0,a,s)}}PrepText(e,t,r,i){let n=[],s=r.style||{},a,o=0,l,c=r.editing?"":r.formatted;if(Array.isArray(c)){for(let h of c){if(h.flag===6){l=h.text;continue}let u=e.measureText(h.text).width,m={width:u,text:h.text,hidden:h.flag===1};n.push(m),h.flag===2?a=m:o+=u}if(a){let h=a.text,u=a.width,m=i-o-2*this.cell_edge_buffer;if(a.width=Math.max(0,m),m>0){let f=Math.floor(m/u);for(let b=1;b<f;b++)a.text+=h;o=i-2*this.cell_edge_buffer}else a.text=""}return{strings:[n],format:l,width:o}}else if(c){r.type===2&&c[0]==="'"&&(c=c.slice(1));let h;this.options.markdown?h=we.instance.Parse(c):(h=we.instance.Dummy(c),e.font=t.base);let u=0,m=i-2*this.cell_edge_buffer,f=[];if(s.wrap)for(let b of h){for(let g=1;g<b.length;g++){let _=b[g].text.match(/^(\s+)/);_&&(b[g-1].text+=_[1],b[g].text=b[g].text.replace(/^\s+/,""))}let p=[];for(let g of b){this.options.markdown&&(g.strong&&g.emphasis?e.font=t.strong_emphasis:g.strong?e.font=t.strong:g.emphasis?e.font=t.emphasis:e.font=t.base);let _=g.text.match(/\S+\s*/g);if(_&&_.length)for(let y of _){let x=e.measureText(y.trim()).width,w=e.measureText(y).width;p.push({part:g,text:y,trimmed:x,width:w})}}for(;p.length;){let g=p.shift(),_=[g],y=g.trimmed;for(;y<m&&p.length;){let x=p[0],w=y-g.trimmed+g.width+x.trimmed;if(w>=m)break;g=x,_.push(x),y=w,p.shift()}g.text=g.text.trim(),g.width=g.trimmed,f.push(_.map(x=>({...x.part,hidden:!1,width:x.width,text:x.text})))}}else for(let b of h){let p=[],g=0;for(let _ of b){this.options.markdown&&(_.strong&&_.emphasis?e.font=t.strong_emphasis:_.strong?e.font=t.strong:_.emphasis?e.font=t.emphasis:e.font=t.base);let y=e.measureText(_.text).width;g+=y,p.push({..._,hidden:!1,width:y})}u=Math.max(u,g),f.push(p)}return{strings:f,width:u}}return{strings:[[{text:"",hidden:!1,width:0}]],width:0}}ResolveColors(e){let t={...e};return t.text={text:R(this.theme,e.text,1)},t}RenderCellBorders(e,t,r,i=0,n=0,s=0,a=0){let o=this.view.active_sheet.SurroundingStyle(e,this.theme.table),l=R(this.theme,o[8].fill);l&&(t.fillStyle=l,t.fillRect(i+0,n-1,s,1)),l=R(this.theme,o[4].fill),l&&(t.fillStyle=l,t.fillRect(i-1,n,1,a)),l=R(this.theme,r.fill),l&&(t.fillStyle=l,t.fillRect(i-1,n-1,s+1,a+1)),l=R(this.theme,o[6].fill),l&&(t.fillStyle=l,t.fillRect(i+s-1,n-1,1,a+1)),l=R(this.theme,o[2].fill),l&&(t.fillStyle=l,t.fillRect(i-1,n+a-1,s+1,1)),o[6].border_top&&!o[6].border_left&&(t.fillStyle=R(this.theme,o[6].border_top_fill,1),t.fillRect(i+s-1,n-2+o[6].border_top,1,1)),o[9].border_left&&(t.fillStyle=R(this.theme,o[9].border_left_fill,1),t.fillRect(i+s-1,n-1,1,1)),o[9].border_bottom&&(t.fillStyle=R(this.theme,o[9].border_bottom_fill,1),t.fillRect(i+s-1,n-2+o[9].border_bottom,1,1)),o[4].border_top&&!o[4].border_right&&(t.fillStyle=R(this.theme,o[4].border_right_fill,1),t.fillRect(i-1,n-2+o[4].border_top,1,1)),o[7].border_right&&(t.fillStyle=R(this.theme,o[7].border_right_fill,1),t.fillRect(i-1,n-1,1,1)),o[7].border_bottom&&(t.fillStyle=R(this.theme,o[7].border_bottom_fill,1),t.fillRect(i-1,n-2+o[7].border_bottom,1,1)),o[6].border_bottom&&!o[6].border_left&&(t.fillStyle=R(this.theme,o[6].border_bottom_fill,1),t.fillRect(i+s-1,n+a-o[6].border_bottom,1,1)),o[3].border_left&&(t.fillStyle=R(this.theme,o[3].border_left_fill,1),t.fillRect(i+s-1,n+a-1,1,1)),o[3].border_top&&(t.fillStyle=R(this.theme,o[3].border_top_fill,1),t.fillRect(i+s-1,n+a-o[3].border_top,1,1)),o[4].border_bottom&&!o[4].border_right&&(t.fillStyle=R(this.theme,o[4].border_bottom_fill,1),t.fillRect(i-1,n+a-o[4].border_bottom,1,1)),o[1].border_right&&(t.fillStyle=R(this.theme,o[1].border_right_fill,1),t.fillRect(i-1,n+a-1,1,1)),o[1].border_top&&(t.fillStyle=R(this.theme,o[1].border_top_fill,1),t.fillRect(i-1,n+a-o[1].border_top,1,1)),o[8].border_bottom&&(t.fillStyle=R(this.theme,o[8].border_bottom_fill,1),o[8].border_bottom===2&&(t.fillRect(i-1,n-2,s+1,1),t.fillRect(i-1,n-0,s+1,1),t.fillStyle=R(this.theme,o[8].fill)||fe(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,n-1,s+1,1)),o[4].border_right&&(t.fillStyle=R(this.theme,o[4].border_right_fill,1),t.fillRect(i-1,n-1,1,a+1)),o[6].border_left&&(t.fillStyle=R(this.theme,o[4].border_left_fill,1),t.fillRect(i+s-1,n-1,1,a+1)),o[2].border_top&&(t.fillStyle=R(this.theme,o[2].border_top_fill,1),o[2].border_top===2&&(t.fillRect(i-1,n+a-2,s+1,1),t.fillRect(i-1,n+a-0,s+1,1),t.fillStyle=R(this.theme,o[2].fill)||fe(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,n+a-1,s+1,1)),r.border_top&&(t.fillStyle=R(this.theme,r.border_top_fill,1),r.border_top===2&&(t.fillRect(i-1,n-2,s+1,1),t.fillRect(i-1,n+0,s+1,1),t.fillStyle=R(this.theme,r.fill)||fe(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,n-1,s+1,1)),r.border_left&&(t.fillStyle=R(this.theme,r.border_left_fill,1),t.fillRect(i-1,n-1,1,a+1)),r.border_right&&(t.fillStyle=R(this.theme,r.border_right_fill,1),t.fillRect(i+s-1,n-1,1,a+1)),r.border_bottom&&(t.fillStyle=R(this.theme,r.border_bottom_fill,1),r.border_bottom===2&&(t.fillRect(i-1,n+a-2,s+1,1),t.fillRect(i-1,n+a+0,s+1,1),t.fillStyle=R(this.theme,r.fill)||fe(this.theme,this.theme.grid_cell?.fill)||"#fff"),t.fillRect(i-1,n+a-1,s+1,1))}PaintBackgroundImage(e,t,r,i,n,s,a=0,o=0,l=0){if(!t.width||!t.height)return;let c=(this.layout.scale||1)*this.layout.dpr,h=r/c%t.width,u=i/c%t.height,m=n/c,f=s/c,b=h+m>t.width,p=u+f>t.height;b&&e.drawImage(t,h-t.width,u,m,f,a,o,n-l,s-l),p&&e.drawImage(t,h,u-t.height,m,f,a,o,n-l,s-l),b&&p&&e.drawImage(t,h-t.width,u-t.height,m,f,a,o,n-l,s-l),e.drawImage(t,h,u,m,f,a,o,n-l,s-l)}RenderCellBackground(e,t,r,i,n,s,a=0,o=0){if(r.fillStyle=this.theme.grid_color,r.fillRect(0,0,n,s),this.view.active_sheet.image)this.PaintBackgroundImage(r,this.view.active_sheet.image,a,o,n,s,0,0,1);else{let l=R(this.theme,i.fill);l?(r.fillStyle=l,r.fillRect(0,0,n-1,s-1)):(r.fillStyle=fe(this.theme,this.theme.grid_cell?.fill)||"#fff",r.fillRect(0,0,n-1,s-1))}this.RenderCellBorders(t,r,i,0,0,n,s),e&&(r.fillStyle=this.theme.note_marker_color,r.beginPath(),r.moveTo(n-2,1),r.lineTo(n-2-8,1),r.lineTo(n-2,1+8),r.lineTo(n-2,1),r.fill())}RenderCell(e,t,r,i,n,s,a=0,o=0){let l={},c=!t.render_clean[this.view.view_index];if(t.render_clean[this.view.view_index]=!0,e.needs_full_repaint&&t.renderer_data?.overflowed)return{};let h=t.style?{...t.style}:{};if(t.table&&(h=this.view.active_sheet.CellStyleData(i,t.table.theme||this.theme.table)||{}),t.merge_area)if(i.row===t.merge_area.start.row&&i.column===t.merge_area.start.column){for(let C=t.merge_area.start.column+1;C<=t.merge_area.end.column;C++)n+=this.layout.ColumnWidth(C);for(let C=t.merge_area.start.row+1;C<=t.merge_area.end.row;C++)s+=this.layout.RowHeight(C);if(t.merge_area.count>1){let C=this.view.active_sheet.CellStyleData(t.merge_area.end);C&&(h.border_bottom=C.border_bottom,h.border_right=C.border_right,h.border_bottom_fill=C.border_bottom_fill,h.border_right_fill=C.border_right_fill)}t.merge_area.end.column>e.last_cell.column&&(l.tile_overflow_right=!0),t.merge_area.end.row>e.last_cell.row&&(l.tile_overflow_bottom=!0),(l.tile_overflow_bottom||l.tile_overflow_right)&&this.overflow_areas.push({tile:e,head:{...i},area:new v(t.merge_area.start,t.merge_area.end)})}else return{};let u=!!t.hyperlink;if(t.render_function){this.RenderCellBackground(!!t.note,i,r,h,n,s),r.strokeStyle=r.fillStyle=R(this.theme,h.text,1);let C=this.ResolveColors(h);if(t.render_function.call(void 0,{width:n,height:s,context:r,cell:t,style:C,scale:this.layout.scale||1}).handled)return l}let m={base:k.Font(h,this.layout.scale),strong:k.Font({...h,bold:!0},this.layout.scale),emphasis:k.Font({...h,italic:!0},this.layout.scale),strong_emphasis:k.Font({...h,bold:!0,italic:!0},this.layout.scale)};if(r.font=m.base,c||!t.renderer_data||t.renderer_data.width!==n||t.renderer_data.height!==s){let C=this.PrepText(r,m,t,n);t.renderer_data={text_data:C,width:n,height:s}}let f=t.renderer_data.text_data,b=f.width>n-2*this.cell_edge_buffer,p=n,g=0,_=!1,y=t.type===3||t.calculated_type===3||t.type===7||t.calculated_type===7||t.type===9||t.calculated_type===9,x=h.horizontal_align;x||(x=y?k.HorizontalAlign.Right:k.HorizontalAlign.Left);let w=[];if(b)if(t.type!==3&&t.calculated_type!==3&&!h.wrap&&!t.merge_area){let K=f.width-n+this.cell_edge_buffer,ne=0,se=0;x===k.HorizontalAlign.Center?ne=se=K/2:x===k.HorizontalAlign.Right?ne=K:se=K;let J=i.column,X=i.column;for(;se>0&&J<this.layout.last_column;){J++;let Q={row:i.row,column:J},N=this.view.active_sheet.CellData(Q),B=this.layout.ColumnWidth(J);if(se-=B,N&&!N.type&&!N.calculated_type)w.push({address:Q,cell:N,grid:new U(p,0,B,s),background:new U(p-1,0,B,s-1),border:new U(p,0,B,s)}),p+=B,N.render_clean[this.view.view_index]=!0,N.renderer_data={overflowed:!0};else{_=!0;break}}for(J>e.last_cell.column&&(l.tile_overflow_right=!0);ne>0&&X>=1;){X--;let Q={row:i.row,column:X},N=this.view.active_sheet.CellData(Q),B=this.layout.ColumnWidth(X);if(ne-=B,N&&!N.type&&!N.calculated_type)g-=B,w.push({address:Q,cell:N,grid:new U(g,0,B,s),background:new U(g,0,B,s-1),border:new U(g,0,B,s)});else{_=!0;break}}X<e.first_cell.column&&(l.tile_overflow_left=!0),this.overflow_areas.push({head:{...i},tile:e,area:new v({row:i.row,column:X},{row:i.row,column:J})})}else _=!y;let A=!1,S=r;(l.tile_overflow_bottom||l.tile_overflow_left||l.tile_overflow_right)&&(A=!0,l.width=p-g,l.height=s,l.left=g,this.EnsureBuffer(l.width+1,s+1,-g),r=this.buffer_context,r.font=m.base),this.RenderCellBackground(!!t.note,i,r,h,n,s,a,o);for(let C of w)C.cell.style?.fill&&(C.cell.style.fill.text||C.cell.style.fill.theme||C.cell.style.fill.theme===0)&&!this.options.grid_over_background?(r.fillStyle=fe(this.theme,C.cell.style.fill),r.fillRect(C.grid.left,C.grid.top,C.grid.width,C.grid.height)):(r.fillStyle=this.theme.grid_color||"",r.fillRect(C.grid.left,C.grid.top,C.grid.width,C.grid.height),this.view.active_sheet.image?this.PaintBackgroundImage(r,this.view.active_sheet.image,a+C.background.left,o+C.background.top,C.background.width,C.background.height,C.background.left,C.background.top,0):(r.fillStyle=this.theme.grid_cell?.fill?fe(this.theme,this.theme.grid_cell.fill):"",r.fillRect(C.background.left,C.background.top,C.background.width,C.background.height))),C.cell.style&&this.RenderCellBorders(C.address,r,C.cell.style,C.border.left,C.border.top,C.border.width,C.border.height);let E=Ht.Get(m.base,this.theme.grid_cell?.font_size?.value);r.lineWidth=1,r.strokeStyle=r.fillStyle=f.format?f.format:R(this.theme,h.text,1),r.beginPath();let F=this.cell_edge_buffer,$=1.25,te=f.strings.length,me=te*E.block*$;_=(_||me>=s)&&!A,_&&(r.save(),r.beginPath(),r.moveTo(g+1.5,0),r.lineTo(g+1.5,s),r.lineTo(p-1.5,s),r.lineTo(p-1.5,0),r.clip()),r.beginPath();let ie=Math.round(s-2-E.block*$*(te-1)+Ai);switch(h.vertical_align){case k.VerticalAlign.Top:ie=Math.round(E.block*$)+1;break;case k.VerticalAlign.Middle:ie=Math.round((s-me)/2+E.block*$);break}if((t.type===3||t.calculated_type===3||t.type===7||t.calculated_type===7)&&b){let C=Math.floor((n-2*this.cell_edge_buffer)/E.hash),K="";for(let se=0;se<C;se++)K+="#";let ne=r.measureText(K).width;x===k.HorizontalAlign.Center?F=Math.round((n-ne)/2):x===k.HorizontalAlign.Right&&(F=n-this.cell_edge_buffer-ne),r.fillText(K,F,ie)}else{let C=ie,K=0;for(let ne of f.strings){let se=0;for(let N of ne)se+=N.width;x===k.HorizontalAlign.Center?F=Math.round((n-se)/2):x===k.HorizontalAlign.Right&&(F=n-this.cell_edge_buffer-se);let J=Math.floor(C+1.5-E.descender-Ai)+.5,X=Math.floor(C-E.descender-E.ascender/2)+.5,Q=F;for(let N of ne)N.strong&&N.emphasis?r.font=m.strong_emphasis:N.strong?r.font=m.strong:N.emphasis?r.font=m.emphasis:r.font=m.base,N.hidden||(N.text&&r.fillText(N.text,Q,C),h.underline&&(r.moveTo(Q,J),r.lineTo(Q+N.width,J)),(h.strike||N.strike)&&(r.moveTo(Q,X),r.lineTo(Q+N.width,X)),u&&(N.left=Q,N.top=C-E.block,N.height=E.block)),Q+=N.width;K++,C=Math.round(ie+K*E.block*$)}}if(r.stroke(),_)r.restore();else if(A){let C=this.layout.dpr;S.drawImage(this.buffer_canvas,0,0,(l.width||0)*C,s*C,g,0,l.width||0,s)}return l}};var Ot=class extends Fe{constructor(t,r,i,n,s,a,o){super(r,i,n,s,o);this.container=t;this.options=a;this.focused_=!1;this.lines=1;this.last_formula="";this.label_update_timer=0;let l=t.querySelector(".treb-formula-bar");l.removeAttribute("hidden"),this.address_label_container=l.querySelector(".treb-address-label"),this.address_label=this.address_label_container.firstElementChild,this.InitAddressLabel(),this.options.insert_function_button&&(this.button=D.Create("button","formula-button",l),this.button.addEventListener("click",()=>{let c=this.editor_node&&this.editor_node.textContent||"";this.Publish({type:"formula-button",formula:c})})),this.container_node=t.querySelector(".treb-editor-container"),this.editor_node=this.container_node.firstElementChild,this.editor_node.spellcheck=!1,this.editor_node.addEventListener("focusin",()=>{if(!this.editor_node)return;let c=this.editor_node.textContent||"";c[0]==="{"&&c[c.length-1]==="}"&&(c=c.substr(1,c.length-2),this.editor_node.textContent=c,this.last_reconstructed_text=""),this.editor_node.spellcheck=c[0]!=="=",this.autocomplete.ResetBlock(),re().then(()=>{this.Reconstruct()});let h=this.ListDependencies();this.Publish([{type:"start-editing",editor:"formula-bar"},{type:"update",text:c,cell:this.active_cell,dependencies:h}]),this.focused_=!0}),this.editor_node.addEventListener("focusout",()=>{this.selecting&&console.info("focusout, but selecting..."),this.autocomplete.Hide(),this.Publish([{type:"stop-editing"}]),this.focused_=!1,this.editor_node&&(this.editor_node.spellcheck=!1)}),this.editor_node.addEventListener("keydown",c=>this.FormulaKeyDown(c)),this.editor_node.addEventListener("keyup",c=>this.FormulaKeyUp(c)),this.editor_node.addEventListener("input",c=>{c instanceof InputEvent&&c.isComposing||(this.Reconstruct(),this.UpdateSelectState())}),this.options.expand_formula_button&&(this.expand_button=D.Create("button","expand-button",l),this.expand_button.addEventListener("click",c=>{c.stopPropagation(),c.preventDefault(),this.editor_node&&(this.editor_node.scrollTop=0),l.hasAttribute("expanded")?l.removeAttribute("expanded"):l.setAttribute("expanded","")}))}get focused(){return this.focused_}get formula(){return this.editor_node&&this.editor_node.textContent||""}set formula(t){this.editor_node&&(this.editor_node.textContent=t,this.last_reconstructed_text=""),this.last_formula=t}get label(){return this.address_label?.textContent||""}set label(t){t.trim().length?(this.address_label.textContent=t,this.label_update_timer||(this.label_update_timer=requestAnimationFrame(()=>{this.label_update_timer=0,this.address_label.scrollWidth>this.address_label.offsetWidth?this.address_label.setAttribute("title",t):this.address_label.removeAttribute("title")}))):(this.address_label.innerHTML="&nbsp;",this.address_label.removeAttribute("title"))}set editable(t){!this.editor_node||!this.container_node||(t?(this.editor_node.setAttribute("contenteditable","true"),this.container_node.removeAttribute("locked")):(this.editor_node.removeAttribute("contenteditable"),this.container_node.setAttribute("locked","")))}IsElement(t){return t===this.editor_node}InitAddressLabel(){this.address_label.contentEditable="true",this.address_label.spellcheck=!1,this.address_label.addEventListener("focusin",t=>{requestAnimationFrame(()=>{if(document.body.createTextRange){let r=document.body.createTextRange();r.moveToElementText(this.address_label),r.select()}else{let r=window.getSelection(),i=document.createRange();i.selectNodeContents(this.address_label),r?.removeAllRanges(),r?.addRange(i)}})}),this.address_label.addEventListener("keydown",t=>{switch(t.key){case"Enter":t.stopPropagation(),t.preventDefault(),this.Publish({type:"address-label-event",text:this.address_label.textContent||void 0});break;case"Esc":case"Escape":t.stopPropagation(),t.preventDefault(),this.Publish({type:"address-label-event"});break}})}FocusEditor(){this.editor_node&&this.editor_node.focus()}GetTextContent(t){let r=t.childNodes,i=[];for(let n=0;n<r.length;n++){let s=r[n];switch(s.nodeType){case Node.ELEMENT_NODE:i.push(...this.GetTextContent(s)),s instanceof Element&&s.tagName==="DIV"&&i.push(`
6
+ `);break;case Node.TEXT_NODE:s.nodeValue&&i.push(s.nodeValue);break}}return i}FormulaKeyDown(t){let r=this.autocomplete.HandleKey("keydown",t);if(r.accept&&this.AcceptAutocomplete(r),!r.handled){switch(t.key){case"Enter":case"Tab":{this.selecting_=!1;let i=t.key==="Enter"&&t.ctrlKey&&t.shiftKey,n=(this.editor_node?this.GetTextContent(this.editor_node).join(""):"").trim();this.Publish({type:"commit",selection:this.selection,value:n,event:t,array:i}),this.FlushReference()}break;case"Escape":case"Esc":this.selecting_=!1,this.Publish({type:"discard"}),this.FlushReference();break;default:return}t.stopPropagation(),t.preventDefault()}}FormulaKeyUp(t){this.autocomplete.HandleKey("keyup",t).handled||this.FlushReference()}};var ht=class{constructor(e={}){this.options=e;this.completion_list_visible=!1;this.tooltip_visible=!1;this.selected_index=0;this.block=!1;this.autocomplete_data={};this.completion_list=D.CreateDiv("treb-cell-editor-ac-list treb-autocomplete",e.container||document.body),this.completion_list.addEventListener("mousedown",t=>this.ListMouseDown(t)),this.completion_list.addEventListener("mousemove",t=>this.ListMouseMove(t)),this.tooltip=D.CreateDiv("treb-cell-editor-ac-tooltip treb-autocomplete-tooltip",e.container||document.body)}Hide(){this.tooltip.style.top="-1000px",this.completion_list.style.top="-1000px",this.completion_list_visible=!1,this.tooltip_visible=!1,this.active_element=void 0}ResetBlock(){this.block=!1}ListMouseMove(e){let t=e.target;t.tagName==="A"&&t!==this.active_element&&this.active_element&&(this.active_element.classList.remove("selected"),this.active_element=t,this.active_element.classList.add("selected"),this.selected_index=Number(t.dataset.index||"0"),this.last_completion=t.textContent||"")}ListMouseDown(e){e.stopPropagation(),e.preventDefault();let t=e.target;for(;t;){if(t===this.completion_list)return;if(t.tagName==="A")break;t=t.parentElement}t&&(console.info(t),this.callback&&this.callback({handled:!0,accept:!0,value:t.textContent?t.textContent:void 0,data:this.autocomplete_data,click:!0}))}HandleKey(e,t){if(!this.completion_list_visible)return{handled:!1};let r=0,i=!1,n=!1;switch(t.key){case"Up":case"ArrowUp":r=-1;break;case"Down":case"ArrowDown":r=1;break;case"Tab":n=!0;break;case"Escape":case"Esc":i=!0;break;default:return{handled:!1}}if(t.stopPropagation(),t.preventDefault(),e==="keyup")return{handled:!0};if(r){let s=this.completion_list.getBoundingClientRect();this.selected_index+=r,this.selected_index=Math.max(0,this.selected_index);let a=this.completion_list.querySelectorAll("a");this.selected_index=Math.min(this.selected_index,a.length-1);for(let o=0;o<a.length;o++){let l=a[o];if(o===this.selected_index){l.classList.add("selected"),this.active_element=l;let c=l.getBoundingClientRect();c.top<s.top?this.completion_list.scrollBy(0,-c.height):c.bottom>s.bottom&&this.completion_list.scrollBy(0,c.height),this.last_completion=l.textContent||void 0}else l.classList.remove("selected")}return{handled:!0}}else{if(i)return this.block=!0,this.Hide(),{handled:!0};if(n)return{handled:!0,accept:!0,value:this.last_completion,data:this.autocomplete_data}}return{handled:!1}}Show(e,t={},r){if(this.completion_list_visible=!1,this.tooltip_visible=!1,this.autocomplete_data=t,this.callback=e,!this.block)if(t.tooltip?(this.tooltip.innerHTML=t.tooltip+t.arguments+(t.description?`
7
7
  `+t.description:""),this.tooltip.style.left=r.left+"px",this.options.tooltip_prefer_top?this.tooltip.style.top=r.top-this.tooltip.offsetHeight-5+"px":this.tooltip.style.top=r.bottom+5+"px",this.tooltip_visible=!0):this.tooltip.style.top="-1000px",t.completions&&t.completions.length){this.tooltip.style.top="-1000px",this.selected_index=0,this.completion_list.innerHTML='<ul class="notranslate">'+t.completions.map((a,o)=>(a.name===this.last_completion&&(this.selected_index=o),`<li><a data-index="${o}">${a.name}</a></li>`)).join(`
8
- `)+"<ul>";let i=this.completion_list.offsetHeight,s=!1;this.options.autocomplete_prefer_top?s=r.top>=200:document.documentElement&&Math.max(document.documentElement.clientHeight,window.innerHeight||0)-r.bottom<200&&(s=!0),s?this.completion_list.style.top=r.top-i-5+"px":this.completion_list.style.top=r.bottom+5+"px",this.completion_list.style.left=r.left+"px";let n=this.completion_list.querySelectorAll("a");this.active_element=n[this.selected_index],n[this.selected_index].classList.add("selected"),this.last_completion=n[this.selected_index].textContent||void 0,this.completion_list.scrollTop=this.active_element.offsetTop,this.completion_list_visible=!0}else this.completion_list.style.top="-1000px"}};var ut=(C=>(C[C.Null=0]="Null",C[C.InsertRows=1]="InsertRows",C[C.InsertColumns=2]="InsertColumns",C[C.ResizeRows=3]="ResizeRows",C[C.ResizeColumns=4]="ResizeColumns",C[C.Select=5]="Select",C[C.SetRange=6]="SetRange",C[C.UpdateStyle=7]="UpdateStyle",C[C.UpdateBorders=8]="UpdateBorders",C[C.MergeCells=9]="MergeCells",C[C.UnmergeCells=10]="UnmergeCells",C[C.Clear=11]="Clear",C[C.UpdateTheme=12]="UpdateTheme",C[C.SetNote=13]="SetNote",C[C.SetLink=14]="SetLink",C[C.Freeze=15]="Freeze",C[C.SetName=16]="SetName",C[C.ShowHeaders=17]="ShowHeaders",C[C.AddSheet=18]="AddSheet",C[C.DuplicateSheet=19]="DuplicateSheet",C[C.DeleteSheet=20]="DeleteSheet",C[C.ActivateSheet=21]="ActivateSheet",C[C.RenameSheet=22]="RenameSheet",C[C.ReorderSheet=23]="ReorderSheet",C[C.ShowSheet=24]="ShowSheet",C[C.DataValidation=25]="DataValidation",C[C.Reset=26]="Reset",C[C.SortTable=27]="SortTable",C[C.InsertTable=28]="InsertTable",C[C.RemoveTable=29]="RemoveTable",C))(ut||{});var Ai={scrollbars:!0,in_cell_editor:!0,formula_bar:!0,add_tab:!1,tab_bar:"auto",insert_function_button:!1,expand_formula_button:!1,expand:!0,repaint_on_cell_change:!0,grid_over_background:!1};var mt=class{constructor(e={},t,r){this.grid_events=new oe;this.command_log=new oe;this.batch=!1;this.batch_events=[];this.autocomplete_matcher=new Ft;this.flags={};this.model=r,this.view={active_sheet:this.model.sheets.list[0],view_index:this.model.view_count++},this.parser=t,this.options={...Ai,...e}}get active_sheet(){return this.view.active_sheet}set active_sheet(e){this.view.active_sheet=e}get view_index(){return this.view.view_index}RemoveTable(e){this.ExecCommand({key:29,table:e})}InsertTable(e,t=!0,r=void 0,i){e.start.sheet_id||(e.start.sheet_id=this.active_sheet.id);let s=this.FindSheet(e);for(let n=e.start.row;n<=e.end.row;n++)for(let a=e.start.column;a<=e.end.column;a++){let o=s.cells.GetCell({row:n,column:a},!1);if(o&&(o.area||o.merge_area||o.table)){this.Error(4);return}}this.ExecCommand({key:28,area:JSON.parse(JSON.stringify(e)),totals:t,sortable:r,theme:i})}ActivateSheet(e){let t=typeof e=="number"?e:void 0,r=typeof e=="string"?e:void 0;this.ExecCommand({key:21,index:t,name:r})}ActivateSheetID(e){this.ExecCommand({key:21,id:e})}DuplicateSheet(e,t,r){let i={key:19,new_name:t,insert_before:r};typeof e>"u"?i.id=this.active_sheet.id:i.index=e,this.ExecCommand(i)}AddSheet(e){this.ExecCommand({key:18,name:e,show:!0})}DeleteSheet(e){if(typeof e>"u"&&!this.model.sheets.list.some((t,r)=>t===this.active_sheet?(e=r,!0):!1))throw new Error("invalid index");this.ExecCommand({key:20,index:e})}InsertSheet(e,t){if(typeof e>"u"&&!this.model.sheets.list.some((r,i)=>r===this.active_sheet?(e=i+1,!0):!1))throw new Error("invalid index");this.ExecCommand({key:18,insert_index:e,name:t,show:!0})}DeleteSheetID(e){this.ExecCommand({key:20,id:e})}Reset(){this.ExecCommand({key:26})}SetLink(e,t){this.ExecCommand({key:14,area:e,reference:t})}ShowAll(){let e=[];for(let t=0;t<this.model.sheets.length;t++)e.push({key:24,index:t,show:!0});this.ExecCommand(e)}ShowSheet(e=0,t=!0){let r={key:24,show:t};typeof e=="string"?r.name=e:r.index=e,this.ExecCommand(r)}SortTable(e,t={}){this.ExecCommand({key:27,table:JSON.parse(JSON.stringify(e)),...ei,...t})}GetFreeze(){return{...this.active_sheet.freeze}}InsertRows(e=0,t=1){this.ExecCommand({key:1,before_row:e,count:t})}GetTableReference(e){return this.model.sheets.Find(e.sheet_id||this.active_sheet.id)?.CellData(e).table||void 0}FromCSV(e){let t=this.parser.decimal_mark===",";t&&(this.parser.argument_separator=",",this.parser.decimal_mark=".");let i=ai(e).map(n=>n.map(a=>{if(a){let o=this.parser.Parse(a);if(o.expression?.type==="complex")return o.expression}return be.TryParse(a).value}));t&&(this.parser.argument_separator=";",this.parser.decimal_mark=",");let s={row:Math.max(0,i.length-1),column:i.reduce((n,a)=>Math.max(n,Math.max(0,a.length-1)),0)};this.ExecCommand([{key:26},{key:6,area:{start:{row:0,column:0},end:s},value:i}])}InsertColumns(e=0,t=1){this.ExecCommand({key:2,before_column:e,count:t})}ReorderSheet(e,t){this.ExecCommand({key:23,index:e,move_before:t})}RenameSheet(e,t){this.ExecCommand({key:22,new_name:t,id:e.id})}Freeze(e=0,t=0,r=!0){this.ExecCommand({key:15,rows:e,columns:t,highlight_transition:r})}SetRowHeight(e,t,r=!0){this.ExecCommand({key:3,row:e,height:t,shrink:r})}SetColumnWidth(e,t=0){this.ExecCommand({key:4,column:e,width:t})}FilterTable(e,t,r){let i=[];if(!e.area.start.sheet_id)throw new Error("invalid table area");let s=this.model.sheets.Find(e.area.start.sheet_id);if(!s)throw new Error("invalid table sheet");let n=[],a=[],o=e.totals_row?e.area.end.row-1:e.area.end.row;t+=e.area.start.column;for(let l=e.area.start.row+1;l<=o;l++){let c=s.CellData({row:l,column:t}),h=r(c),u=s.GetRowHeight(l);h&&!u?n.push(l):!h&&u&&a.push(l)}n&&i.push({key:3,sheet_id:s.id,row:n,height:s.default_row_height}),a&&i.push({key:3,sheet_id:s.id,row:a,height:0}),i.length&&this.ExecCommand(i)}UpdateSheets(e,t=!1,r){O.Reset();let i=e.map(s=>O.FromJSON(s,this.model.theme_style_properties));if(i.length===0&&i.push(O.Blank(this.model.theme_style_properties)),this.model.sheets.Assign(i),this.ResetMetadata(),this.active_sheet=i[0],r){let s=this.model.sheets.Find(r);s&&(this.active_sheet=s)}}SetAutocompleteFunctions(e){let t=[];for(let i of this.model.named_expressions.keys())t.push({name:i,type:0});let r=e.slice(0).concat(this.model.named_ranges.List().map(i=>({name:i.name,type:1})),t);this.autocomplete_matcher.SetFunctions(r)}ResetMetadata(){this.model.document_name=void 0,this.model.user_data=void 0}Serialize(e={}){let t=this.model.sheets.list.map(n=>n.toJSON(e)),r;this.model.tables.size>0&&(r=Array.from(this.model.tables.values()));let i;if(this.model.macro_functions.size){i=[];for(let n of this.model.macro_functions.values())i.push({...n,expression:void 0})}let s=[];if(this.model.named_expressions)for(let[n,a]of this.model.named_expressions){this.parser.Walk(a,l=>{if(l.type==="address"||l.type==="range"){let c=l.type==="range"?l.start:l;if(c.absolute_column=c.absolute_row=!0,!c.sheet){if(c.sheet_id){let h=this.model.sheets.Find(c.sheet_id);h&&(c.sheet=h.name)}c.sheet||(c.sheet=this.active_sheet.name)}return l.type==="range"&&(l.end.absolute_column=l.end.absolute_row=!0),!1}return!0});let o=this.parser.Render(a,{missing:""});s.push({name:n,expression:o})}return{sheet_data:t,active_sheet:this.active_sheet.id,named_ranges:this.model.named_ranges.Count()?this.model.named_ranges.Serialize():void 0,macro_functions:i,tables:r,named_expressions:s.length?s:void 0}}ResizeColumnsInternal(e){let t=e.sheet_id?this.FindSheet(e.sheet_id):this.active_sheet,r=e.column;if(typeof r>"u"){r=[];for(let i=0;i<t.columns;i++)r.push(i)}if(typeof r=="number"&&(r=[r]),e.width)for(let i of r)t.SetColumnWidth(i,e.width);else console.error("auto size not supported")}ResizeRowsInternal(e){let t=e.sheet_id?this.FindSheet(e.sheet_id):this.active_sheet,r=e.row;if(typeof r>"u"){r=[];for(let i=0;i<t.rows;i++)r.push(i)}if(typeof r=="number"&&(r=[r]),e.height)for(let i of r)t.SetRowHeight(i,e.height);else console.error("auto size not supported")}ResetInternal(){O.Reset(),this.UpdateSheets([],!0),this.model.named_ranges.Reset(),this.model.named_expressions.clear(),this.model.macro_functions.clear(),this.model.tables.clear()}ValidatePasteAreas(e){for(let t of e){let r=this.active_sheet;if(t.start.sheet_id&&t.start.sheet_id!==r.id&&(r=this.model.sheets.Find(t.start.sheet_id)),!r)return!1;let i=!0;if(r.cells.Apply2(t,s=>(s.style?.locked&&(console.info("invalid: locked cells"),i=!1),s.merge_area&&(!t.Contains(s.merge_area.start)||!t.Contains(s.merge_area.end))&&(console.info("invalid: merge area"),i=!1),s.area&&(!t.Contains(s.area.start)||!t.Contains(s.area.end))&&(console.info("invalid: array"),i=!1),i)),!i)return!1}return!0}SetValidationInternal(e){let t,r=this.FindSheet(e.area);if(r&&(t=r.cells.GetCell(e.area,!0)),!t)throw new Error("invalid cell in set validation");e.range?t.validation={type:2,area:e.range,error:!!e.error}:e.list?t.validation={type:0,list:JSON.parse(JSON.stringify(e.list)),error:!!e.error}:t.validation=void 0}GetValidationRange(e){let t,r=this.FindSheet(e);if(r){t=[],e=r.RealArea(new v(e.start,e.end),!0);for(let i=e.start.row;i<=e.end.row;i++)for(let s=e.start.column;s<=e.end.column;s++){let n=r.CellData({row:i,column:s});n&&n.formatted&&(typeof n.formatted=="string"?t.push(n.formatted):t.push(Y.FormatPartsAsText(n.formatted)))}}return t}DeleteSheetInternal(e){let t=!1,r=-1,i="",s=!1,n=e.name?e.name.toLowerCase():"",a=this.model.sheets.list.filter((o,l)=>l===e.index||o.id===e.id||o.name.toLowerCase()===n?(t=o===this.active_sheet,this.model.named_ranges.RemoveRangesForSheet(o.id),i=o.name,r=l,!1):!0);if(i&&this.RenameSheetReferences(a,i,"#REF")>0&&(s=!0),!a.length)a.push(O.Blank(this.model.theme_style_properties)),r=0;else if(a.every(o=>!o.visible))a.unshift(O.Blank(this.model.theme_style_properties)),r=0;else for(r>=a.length&&(r=0);!a[r].visible;)r++;return this.model.sheets.Assign(a),t&&this.ActivateSheetInternal({key:21,index:r}),s}RenameSheetInternal(e,t){if(!t||ni.test(t))throw new Error("invalid sheet name");let r=t.toLowerCase();for(let s of this.model.sheets.list)if(s!==e&&s.name.toLowerCase()===r)throw new Error("sheet name already exists");let i=e.name;e.name=t,this.model.sheets.Assign(this.model.sheets.list),this.RenameSheetReferences(this.model.sheets.list,i,t)}SortTableInternal(e){if(!e.table.area.start.sheet_id)throw new Error("table has invalid area");let t=this.model.sheets.Find(e.table.area.start.sheet_id);if(!t)throw new Error("invalid sheet in table area");let r=[],i=[],s=e.table.area.end.row;e.table.totals_row&&s--;let n=0,a=0;for(let u=e.table.area.start.row+1;u<=s;u++){if(t.GetRowHeight(u))i.push(u);else continue;let f={row:u,number:0,text:"",type:0,data:[]};for(let b=e.table.area.start.column;b<=e.table.area.end.column;b++){let p=t.CellData({row:u,column:b});if(b===e.column+e.table.area.start.column){let g=p.calculated_type||p.type;g===2?n++:g===3&&a++;let _=p.calculated_type?p.calculated:p.value;f.text=_?.toString()||"",f.number=Number(_)||0,f.type=p.calculated_type||p.type}f.data.push({address:{row:u,column:b},data:p.value,type:p.type,style:p.style})}r.push(f)}let o=e.type;o==="auto"&&(a>n?o="numeric":o="text");let l=e.asc?1:-1;switch(o){case"numeric":r.sort((u,m)=>u.type===0?m.type===0?0:1:m.type===0?-1:(u.number-m.number)*l);break;case"text":default:r.sort((u,m)=>u.type===0?m.type===0?0:1:m.type===0?-1:u.text.localeCompare(m.text)*l);break}let c={row:e.table.area.start.row+1,column:e.table.area.start.column};for(let u=0;u<i.length;u++){c.row=i[u];let m=r[u];c.column=e.table.area.start.column;for(let f of m.data){if(f.type===1){let b=f.data,p={columns:0,rows:c.row-m.row},g=this.parser.Parse(b);g.expression&&(b="="+this.parser.Render(g.expression,{offset:p,missing:""})),t.SetCellValue(c,b)}else t.SetCellValue(c,f.data);t.UpdateCellStyle(c,f.style||{},!1),c.column++}}let h=this.model.tables.get(e.table.name.toLowerCase());h&&(h.sort={type:e.type,asc:!!e.asc,column:e.column});{let u=e.table.area.start.row;for(let m=e.table.area.start.column;m<=e.table.area.end.column;m++)t.cells.data[u][m]?.FlushStyle();if(e.table.totals_row){u=e.table.area.end.row;for(let m=e.table.area.start.column;m<=e.table.area.end.column;m++)t.cells.data[u][m]?.FlushStyle()}}return new v(e.table.area.start,e.table.area.end)}UpdateTableColumns(e){if(!e.area.start.sheet_id)throw new Error("invalid area in table");let t=this.model.sheets.Find(e.area.start.sheet_id);if(!t)throw new Error("invalid sheet in table");let r=e.columns?.slice(0)||void 0,i=[],s=e.area.start.row,n=e.area.end.column-e.area.start.column+1,a=e.area.start.column;for(let o=0;o<n;o++,a++){let l=t.CellData({row:s,column:a}),c="";l.type!==2?(typeof l.formatted<"u"?c=l.formatted.toString():typeof l.calculated<"u"?c=l.calculated.toString():typeof l.value<"u"&&(c=l.value.toString()),l.Set(c,2)):c=l.value||"",c||(c=`Column${o+1}`);let h=c,u=!1,m=1;for(;!u;){u=!0;e:for(let f of i)if(f.toLowerCase()===h.toLowerCase()){u=!1,h=`${c}${++m}`;break e}}l.Set(h,2),i.push(h.toLowerCase())}if(r&&r.length===i.length){let o=new Map;for(let l=0;l<r.length;l++){let c=r[l].toLowerCase();c!==i[l]&&o.set(c,i[l])}if(o.size){let l=e.name.toLowerCase();for(let c of this.model.sheets.list)c.cells.IterateAll(h=>{if(h.ValueIsFormula()){let u=!1,m=this.parser.Parse(h.value);m.expression&&(this.parser.Walk(m.expression,f=>{if(f.type==="structured-reference"&&(f.table.toLowerCase()===l||!f.table&&h.table===e))for(let[b,p]of o.entries())f.column.toLowerCase()===b&&(f.column=p,u=!0);return!0}),u&&(console.info("updating value"),h.value="="+this.parser.Render(m.expression,{missing:""})))}})}}return e.columns=i,{start:{...e.area.start},end:{row:e.area.start.row,column:e.area.end.column}}}SetRangeInternal(e,t={}){let r=L(e.area)?new v(e.area):new v(e.area.start,e.area.end),i=this.FindSheet(r);if(r.start.sheet_id||(r.start.sheet_id=i.id),!r.entire_row&&!r.entire_column&&(r.end.row>=i.rows||r.end.column>=i.columns)&&(i.cells.EnsureCell(r.end),i===this.active_sheet&&(t.layout=!0)),L(e.area)){let s=i.CellData(e.area);if(s.area&&(s.area.rows>1||s.area.columns>1)){this.Error(2);return}let n=Array.isArray(e.value)?Array.isArray(e.value[0])?e.value[0][0]:e.value[0]:e.value;return e.r1c1&&(n=this.TranslateR1C1(e.area,n)),e.array?i.SetArrayValue(r,n):i.SetCellValue(e.area,n),r}else{if(e.array){let s=Array.isArray(e.value)?Array.isArray(e.value[0])?e.value[0][0]:e.value[0]:e.value;e.r1c1&&(s=this.TranslateR1C1(r.start,s)),i.SetArrayValue(r,s)}else{if(e.r1c1){if(Array.isArray(e.value))for(let s=0;s<e.value.length&&s<r.rows;s++){e.value[s]||(e.value[s]=[]);let n=e.value[s];for(let a=0;a<n.length&&a<r.columns;a++){let o={...r.start,row:r.start.row+s,column:r.start.column+a};n[a]=this.TranslateR1C1(o,n[a])}}else if(typeof e.value=="string"&&e.value[0]==="="){let s=[];for(let n=0;n<r.rows;n++){let a=[];for(let o=0;o<r.columns;o++){let l={...r.start,row:r.start.row+n,column:r.start.column+o};a.push(this.TranslateR1C1(l,e.value))}s.push(a)}e.value=s}}i.SetAreaValues2(r,e.value)}return r}}ActivateSheetInternal(e){let t=this.ResolveSheet(e)||this.model.sheets.list[0];if(this.active_sheet===t&&!e.force)return;if(!t.visible)throw new Error("cannot activate hidden sheet");let r=this.active_sheet;this.active_sheet=t,this.grid_events.Publish({type:"sheet-change",deactivate:r,activate:this.active_sheet})}ShowSheetInternal(e){let t=this.ResolveSheet(e);if(t&&t.visible!==e.show){if(!e.show){let r=0;for(let i of this.model.sheets.list)(!t.visible||i===t)&&r++;if(r>=this.model.sheets.length)throw new Error("can't hide all sheets")}if(t.visible=e.show,t===this.active_sheet){let r=this.model.sheets.list;for(let i=0;i<r.length;i++)if(r[i]===this.active_sheet){for(let s=i+1;s<r.length;s++)if(r[s].visible){this.ActivateSheetInternal({key:21,index:s});return}for(let s=0;s<r.length;s++)if(r[s].visible){this.ActivateSheetInternal({key:21,index:s});return}throw new Error("no visible sheet")}}}}NormalizeCommands(e){Array.isArray(e)||(e=[e]);let t=this.active_sheet.id;for(let r of e)switch(r.key){case 0:case 17:case 24:case 18:case 19:case 20:case 21:case 22:case 23:case 26:break;case 27:case 29:r.table.area.start.sheet_id||(r.table.area.start.sheet_id=t);break;case 3:case 4:case 2:case 1:case 15:r.sheet_id||(r.sheet_id=t);break;case 11:case 13:case 14:case 8:case 9:case 10:case 25:case 6:case 7:case 16:case 5:case 28:r.area&&(L(r.area)?r.area.sheet_id||(r.area.sheet_id=t):r.area.start.sheet_id||(r.area.start.sheet_id=t));break}return e}AddSheetInternal(e=O.default_sheet_name,t=-1){if(!this.options.add_tab){console.warn("add tab option not set or false");return}for(;this.model.sheets.list.some(i=>i.name===e);){let i=e.match(/^(.*?)(\d+)$/);i?e=i[1]+(Number(i[2])+1):e=e+"2"}let r=O.Blank(this.model.theme_style_properties,e);return t>=0?this.model.sheets.Splice(t,0,r):this.model.sheets.Add(r),r.id}ResolveSheet(e){if(typeof e.index<"u")return this.model.sheets.list[e.index];if(typeof e.name<"u")return this.model.sheets.Find(e.name);if(e.id)return this.model.sheets.Find(e.id)}FindSheet(e){if(e===void 0)return this.active_sheet;let t=typeof e=="number"?e:L(e)?e.sheet_id:e.start.sheet_id;if(!t||t===this.active_sheet.id)return this.active_sheet;let r=this.model.sheets.Find(t);return r||this.active_sheet}PatchFormulasInternal(e,t,r,i,s,n,a){let o=this.parser.Parse(e||""),l=!1;if(o.expression&&(this.parser.Walk(o.expression,c=>{if(c.type==="range"||c.type==="address"){let h=[];c.type==="range"?(c.start.sheet&&c.start.sheet.toLowerCase()===n||!c.start.sheet&&a)&&h.push(c.start,c.end):c.type==="address"&&(c.sheet&&c.sheet.toLowerCase()===n||!c.sheet&&a)&&h.push(c);for(let u of h)r&&u.row>=t&&(r<0&&u.row+r<t?u.column=u.row=-1:u.row+=r,l=!0),s&&u.column>=i&&(s<0&&u.column+s<i?u.column=u.row=-1:u.column+=s,l=!0);return!1}return!0}),l))return"="+this.parser.Render(o.expression,{missing:""})}RenameSheetReferences(e,t,r){let i=0;t=t.toLowerCase();for(let s of e){s.cells.IterateAll(n=>{if(n.ValueIsFormula()){let a=!1,o=this.parser.Parse(n.value||"");o.expression&&(this.parser.Walk(o.expression,l=>(l.type==="address"&&l.sheet&&l.sheet.toLowerCase()===t&&(l.sheet=r,a=!0),!0)),a&&(n.value="="+this.parser.Render(o.expression,{missing:""}),i++))}});for(let n of s.annotations)if(n.data.formula){let a=!1,o=this.parser.Parse(n.data.formula||"");o.expression&&(this.parser.Walk(o.expression,l=>(l.type==="address"&&l.sheet&&l.sheet.toLowerCase()===t&&(l.sheet=r,a=!0),!0)),a&&(n.data.formula="="+this.parser.Render(o.expression,{missing:""}),i++))}}return i}ApplyBordersInternal(e){let t=e.borders,r=e.borders==="none"?0:e.width,i=new v(e.area.start,e.area.end),s=this.FindSheet(i);i.start.sheet_id=s.id;let n={border_top:r},a={border_bottom:r},o={border_left:r},l={border_right:r},c={border_top:0,border_top_fill:{}},h={border_bottom:0,border_bottom_fill:{}},u={border_left:0,border_left_fill:{}},m={border_right:0,border_right_fill:{}};return e.color?(n.border_top_fill={...e.color},a.border_bottom_fill={...e.color},o.border_left_fill={...e.color},l.border_right_fill={...e.color}):(n.border_top_fill={},a.border_bottom_fill={},o.border_left_fill={},l.border_right_fill={}),(t==="none"||t==="all")&&s.UpdateAreaStyle(i,{...n,...a,...o,...l},!0),(t==="top"||t==="outside")&&(i.entire_column||s.UpdateAreaStyle(i.top,{...n},!0)),(t==="none"||t==="all"||t==="outside"||t==="top")&&(i.entire_column||i.start.row&&s.UpdateAreaStyle(new v({row:i.start.row-1,column:i.start.column},{row:i.start.row-1,column:i.end.column}),{...h},!0)),(t==="bottom"||t==="outside")&&(i.entire_column||s.UpdateAreaStyle(i.bottom,{...a},!0)),(t==="none"||t==="all"||t==="outside"||t==="bottom")&&(i.entire_column||s.UpdateAreaStyle(new v({row:i.end.row+1,column:i.start.column},{row:i.end.row+1,column:i.end.column}),{...c},!0)),(t==="left"||t==="outside")&&(i.entire_row||s.UpdateAreaStyle(i.left,{...o},!0)),(t==="none"||t==="all"||t==="outside"||t==="left")&&(i.entire_row||i.start.column&&s.UpdateAreaStyle(new v({row:i.start.row,column:i.start.column-1},{row:i.end.row,column:i.start.column-1}),{...m},!0)),(t==="right"||t==="outside")&&(i.entire_row||s.UpdateAreaStyle(i.right,{...l},!0)),(t==="none"||t==="all"||t==="outside"||t==="right")&&(i.entire_row||s.UpdateAreaStyle(new v({row:i.start.row,column:i.end.column+1},{row:i.end.row,column:i.end.column+1}),{...u},!0)),v.Bleed(i)}TranslateR1C1(e,t){let r=!1,i=this.parser.flags.r1c1;if(this.parser.flags.r1c1=!0,typeof t=="string"&&t[0]==="="){let s=this.parser.Parse(t);s.expression&&(this.parser.Walk(s.expression,n=>(n.type==="address"&&n.r1c1&&(r=!0,n.offset_column&&(n.column=n.column+e.column),n.offset_row&&(n.row=n.row+e.row)),!0)),r&&(this.flags.warned_r1c1||(this.flags.warned_r1c1=!0,console.warn("NOTE: R1C1 support is experimental. the semantics may change in the future.")),t="="+this.parser.Render(s.expression,{missing:""})))}return this.parser.flags.r1c1=i,t}ClearAreaInternal(e){let t;if(e.start.sheet_id?t=this.model.sheets.Find(e.start.sheet_id):t=this.active_sheet,!t){console.warn("can't resolve sheet in ClearAreaInternal");return}let r=!1;e=t.RealArea(e),t.cells.Apply(e,s=>{s.area&&!e.ContainsArea(s.area)&&(r=!0)});let i=this.model.tables.keys();for(let s of i){let n=this.model.tables.get(s);if(n&&n.area.start.sheet_id===t.id){let a=new v(n.area.start,n.area.end);if(e.ContainsArea(a)){for(let o=a.start.row;o<=a.end.row;o++)for(let l=a.start.column;l<=n.area.end.column;l++){let c=t.cells.GetCell({row:o,column:l},!1);c&&(c.table=void 0)}this.model.tables.delete(s)}}}r?this.Error(2):t.ClearArea(e)}Error(e){this.grid_events.Publish({type:"error",code:e})}DuplicateSheetInternal(e){if(!this.options.add_tab){console.warn("add tab option not set or false");return}let t=this.ResolveSheet(e),r=this.model.sheets.list.reduce((o,l)=>Math.max(o,l.id),0)+1,i=-1;for(let o=0;o<this.model.sheets.length;o++)this.model.sheets.list[o]===t&&(i=o+1);if(!t||i<0)throw new Error("source sheet not found");if(typeof e.insert_before=="number")i=e.insert_before;else if(typeof e.insert_before=="string"){let o=e.insert_before.toLowerCase();for(let l=0;l<this.model.sheets.length;l++)if(this.model.sheets.list[l].name.toLowerCase()===o){i=l;break}}let s={rendered_values:!0},n=O.FromJSON(t.toJSON(s),this.model.theme_style_properties),a=e.new_name||t.name;for(;this.model.sheets.list.some(o=>o.name===a);){let o=a.match(/^(.*?)(\d+)$/);o?a=o[1]+(Number(o[2])+1):a=a+"2"}return n.name=a,n.id=r,this.model.sheets.Splice(i,0,n),n.id}SelectInternal(e){}FreezeInternal(e){let t=this.FindSheet(e.sheet_id||this.active_sheet.id);t.freeze.rows=e.rows,t.freeze.columns=e.columns}InsertRowsInternal(e){let t=this.FindSheet(e.sheet_id);if(e.count===1/0?e.count=1:e.count===-1/0&&(e.count=-t.rows),!t.InsertRows(e.before_row,e.count))return this.Error(2),{error:!0};let r=Array.from(this.model.tables.values());for(let o of r)if(o.area.start.sheet_id===e.sheet_id)if(e.count>0){if(e.before_row<=o.area.start.row)o.area.start.row+=e.count,o.area.end.row+=e.count;else if(e.before_row<=o.area.end.row){o.area.end.row+=e.count;for(let l=o.area.start.row;l<=o.area.end.row;l++)for(let c=o.area.start.column;c<=o.area.end.column;c++){let h=t.CellData({row:l,column:c});h.table=o}}}else if(e.before_row<=o.area.start.row)if(e.before_row-e.count<=o.area.start.row)o.area.start.row+=e.count,o.area.end.row+=e.count;else if(e.before_row-e.count>=o.area.end.row)this.model.tables.delete(o.name.toLowerCase());else{this.model.tables.delete(o.name.toLowerCase());for(let l=e.before_row;l<=o.area.end.row;l++)for(let c=o.area.start.column;c<=o.area.end.column;c++){let h=t.CellData({row:l,column:c});h.table===o&&(h.table=void 0)}}else e.before_row<=o.area.end.row&&(e.before_row-e.count>o.area.end.row&&(o.totals_row=!1),o.area.end.row=Math.max(0,o.area.end.row+e.count,e.before_row-1));this.model.named_ranges.PatchNamedRanges(t.id,0,0,e.before_row,e.count);let i=t.name.toLowerCase();for(let o of this.model.sheets.list){let l=o===t;o.cells.IterateAll(c=>{if(c.ValueIsFormula()){let h=this.PatchFormulasInternal(c.value||"",e.before_row,e.count,0,0,i,l);h&&(c.value=h)}});for(let c of o.annotations)if(c.data.formula){let h=this.PatchFormulasInternal(c.data.formula||"",e.before_row,e.count,0,0,i,l);h&&(c.data.formula=h)}}let s=[],n=[],a=[];if(e.count>0){let o=e.before_row;for(let l of t.annotations)if(l.data.layout){let[c,h,u]=[l.data.layout.tl.address.row,l.data.layout.br.address.row,l.data.layout.br.offset.y];if(o<=c)l.data.layout.tl.address.row+=e.count,l.data.layout.br.address.row+=e.count;else if(o<h||o===h&&u>0)l.data.layout.br.address.row+=e.count,n.push(l);else continue;s.push(l)}}else if(e.count<0){let o=e.before_row,l=e.before_row-e.count-1;for(let c of t.annotations)if(c.data.layout){let[h,u,m]=[c.data.layout.tl.address.row,c.data.layout.br.address.row,c.data.layout.br.offset.y];if(o<=h)if(l<h)c.data.layout.tl.address.row+=e.count,c.data.layout.br.address.row+=e.count;else if(l<u-1||l===u-1&&m>0)c.data.layout.tl.address.row=o,c.data.layout.tl.offset.y=0,c.data.layout.br.address.row+=e.count,n.push(c);else{a.push(c);continue}else if(o<u||o===u&&m>0)l<u-1||l===u-1&&m>0?(c.data.layout.br.address.row+=e.count,n.push(c)):(c.data.layout.br.address.row=o,c.data.layout.br.offset.y=0,n.push(c));else continue;s.push(c)}}for(let o of a)t.annotations=t.annotations.filter(l=>l!==o);return{update_annotations_list:s,resize_annotations_list:n,delete_annotations_list:a}}InsertColumnsInternal(e){let t=this.FindSheet(e.sheet_id);if(e.count===1/0?e.count=1:e.count===-1/0&&(e.count=-t.columns),!t.InsertColumns(e.before_column,e.count))return this.Error(2),{error:!0};let r=Array.from(this.model.tables.values());for(let o of r)if(o.area.start.sheet_id===e.sheet_id)if(e.count>0){if(e.before_column<=o.area.start.column)o.area.start.column+=e.count,o.area.end.column+=e.count;else if(e.before_column<=o.area.end.column){o.area.end.column+=e.count;for(let l=o.area.start.row;l<=o.area.end.row;l++)for(let c=o.area.start.column;c<=o.area.end.column;c++){let h=t.CellData({row:l,column:c});h.table=o}this.UpdateTableColumns(o)}}else e.before_column<=o.area.start.column?e.before_column-e.count<=o.area.start.column?(o.area.start.column+=e.count,o.area.end.column+=e.count):e.before_column-e.count>=o.area.end.column?this.model.tables.delete(o.name.toLowerCase()):(o.area.start.column=e.before_column,o.area.end.column+=e.count,this.UpdateTableColumns(o)):e.before_column<=o.area.end.column&&(o.area.end.column=Math.max(0,o.area.end.column+e.count,e.before_column-1),this.UpdateTableColumns(o));this.model.named_ranges.PatchNamedRanges(t.id,e.before_column,e.count,0,0);let i=t.name.toLowerCase();for(let o of this.model.sheets.list){let l=o===t;o.cells.IterateAll(c=>{if(c.ValueIsFormula()){let h=this.PatchFormulasInternal(c.value||"",0,0,e.before_column,e.count,i,l);h&&(c.value=h)}});for(let c of o.annotations)if(c.data.formula){let h=this.PatchFormulasInternal(c.data.formula,0,0,e.before_column,e.count,i,l);h&&(c.data.formula=h)}}let s=[],n=[],a=[];if(e.count>0){let o=e.before_column;for(let l of t.annotations)if(l.data.layout){let[c,h,u]=[l.data.layout.tl.address.column,l.data.layout.br.address.column,l.data.layout.br.offset.x];if(o<=c)l.data.layout.tl.address.column+=e.count,l.data.layout.br.address.column+=e.count;else if(o<h||o===h&&u>0)l.data.layout.br.address.column+=e.count,n.push(l);else continue;s.push(l)}}else if(e.count<0){let o=e.before_column,l=e.before_column-e.count-1;for(let c of t.annotations)if(c.data.layout){let[h,u,m]=[c.data.layout.tl.address.column,c.data.layout.br.address.column,c.data.layout.br.offset.x];if(o<=h)if(l<h)c.data.layout.tl.address.column+=e.count,c.data.layout.br.address.column+=e.count;else if(l<u-1||l===u-1&&m>0)c.data.layout.tl.address.column=o,c.data.layout.tl.offset.x=0,c.data.layout.br.address.column+=e.count,n.push(c);else{a.push(c);continue}else if(o<u||o===u&&m>0)l<u-1||l===u-1&&m>0?(c.data.layout.br.address.column+=e.count,n.push(c)):(c.data.layout.br.address.column=o,c.data.layout.br.offset.x=0,n.push(c));else continue;s.push(c)}}for(let o of a)t.annotations=t.annotations.filter(l=>l!==o);return{update_annotations_list:s,resize_annotations_list:n,delete_annotations_list:a}}ExecCommand(e,t=!0){let r={pending:[]},i=[];e=this.NormalizeCommands(e),t&&this.command_log.Publish({command:e,timestamp:new Date().getTime()});for(let s of e)switch(s.key){case 26:this.ResetInternal();break;case 11:if(s.area){let n=new v(s.area.start,s.area.end);this.ClearAreaInternal(n),r.data_area=v.Join(n,r.data_area),r.formula=!0}break;case 5:this.SelectInternal(s);break;case 15:this.FreezeInternal(s),r.structure_event=!0;break;case 28:{let n=this.FindSheet(s.area),a=new v(s.area.start,s.area.end),o=!0;e:for(let l=a.start.row;l<=a.end.row;l++)for(let c=a.start.column;c<=a.end.column;c++){let h=n.cells.GetCell({row:l,column:c},!1);if(h&&(h.area||h.merge_area||h.table)){o=!1;break e}}if(o){let l=this.model.tables.size+1,c="";for(;c=`Table${l++}`,!!this.model.tables.has(c.toLowerCase()););let h={area:s.area,name:c,sortable:s.sortable,theme:s.theme};s.totals&&(h.totals_row=!0),this.model.tables.set(c.toLowerCase(),h);for(let u=a.start.row;u<=a.end.row;u++)for(let m=a.start.column;m<=a.end.column;m++){let f=n.cells.GetCell({row:u,column:m},!0);f.table=h}this.UpdateTableColumns(h),n.Invalidate(new v(h.area.start,h.area.end)),n===this.active_sheet?(r.style_area=v.Join(a,r.style_area),r.render_area=v.Join(a,r.render_area)):r.style_event=!0}}break;case 29:{let n=this.FindSheet(s.table.area),a=new v(s.table.area.start,s.table.area.end);for(let l=a.start.row;l<=a.end.row;l++)for(let c=a.start.column;c<=a.end.column;c++){let h=n.cells.GetCell({row:l,column:c},!1);h&&(h.table=void 0)}this.model.tables.delete(s.table.name.toLowerCase());let o=n.RealArea(a.Clone().Shift(-1,-1).Resize(a.rows+2,a.columns+2));n.Invalidate(o),n===this.active_sheet?(r.style_area=v.Join(a,r.style_area),r.render_area=v.Join(a,r.render_area)):r.style_event=!0}break;case 9:{let n=this.FindSheet(s.area);n.MergeCells(new v(s.area.start,s.area.end)),r.structure_event=!0,r.structure_rebuild_required=!0,n===this.active_sheet?(r.data_area=v.Join(s.area,r.data_area),r.render_area=v.Join(s.area,r.render_area)):(r.data_event=!0,r.pending||(r.pending=[]),r.pending.push(n.id))}break;case 10:{let n=this.FindSheet(s.area),a={},o=new v(s.area.start,s.area.end);n.cells.Apply(o,c=>{if(c.merge_area){let h=v.CellAddressToLabel(c.merge_area.start)+":"+v.CellAddressToLabel(c.merge_area.end);a[h]=c.merge_area}},!1);let l=Object.keys(a);for(let c=0;c<l.length;c++)n.UnmergeCells(a[l[c]]);n===this.active_sheet?(r.render_area=v.Join(s.area,r.render_area),r.data_area=v.Join(s.area,r.data_area)):(r.data_event=!0,r.pending||(r.pending=[]),r.pending.push(n.id)),r.structure_event=!0,r.structure_rebuild_required=!0}break;case 7:{let n,a=this.FindSheet(s.area);L(s.area)?(n=new v(s.area),a.UpdateCellStyle(s.area,s.style,!!s.delta)):(n=new v(s.area.start,s.area.end),a.UpdateAreaStyle(n,s.style,!!s.delta)),a===this.active_sheet?(r.style_area=v.Join(n,r.style_area),(!s.delta||s.style.fill||s.style.border_top||s.style.border_left||s.style.border_right||s.style.border_bottom)&&(n=v.Bleed(n),this.active_sheet.Invalidate(n)),r.render_area=v.Join(n,r.render_area)):r.style_event=!0}break;case 25:this.SetValidationInternal(s),(!s.area.sheet_id||s.area.sheet_id===this.active_sheet.id)&&(r.render_area=v.Join(new v(s.area),r.render_area));break;case 16:s.area?(this.model.named_expressions.delete(s.name),this.model.named_ranges.SetName(s.name,new v(s.area.start,s.area.end)),this.autocomplete_matcher.AddFunctions({type:1,name:s.name})):s.expression?(this.model.named_ranges.ClearName(s.name),this.model.named_expressions.set(s.name,s.expression),this.autocomplete_matcher.AddFunctions({type:1,name:s.name})):(this.model.named_ranges.ClearName(s.name),this.model.named_expressions.delete(s.name),this.autocomplete_matcher.RemoveFunctions({type:1,name:s.name})),r.structure_event=!0,r.structure_rebuild_required=!0;break;case 8:{let n=this.ApplyBordersInternal(s);n.start.sheet_id===this.active_sheet.id?(r.render_area=v.Join(n,r.render_area),r.style_area=v.Join(n,r.style_area)):r.style_event=!0}break;case 24:this.ShowSheetInternal(s),r.sheets=!0,r.structure_event=!0;break;case 23:{let n=[],a=this.model.sheets.list[s.index];for(let o=0;o<this.model.sheets.length;o++)o!==s.index&&(o===s.move_before&&n.push(a),n.push(this.model.sheets.list[o]));s.move_before>=this.model.sheets.length&&n.push(a),this.model.sheets.Assign(n),r.sheets=!0,r.structure_event=!0}break;case 22:{let n=this.ResolveSheet(s);n&&(this.RenameSheetInternal(n,s.new_name),r.sheets=!0,r.structure_event=!0)}break;case 3:{let n=this.ResizeRowsInternal(s);if(n)if(n.start.sheet_id===this.active_sheet.id){let a=this.active_sheet.RealArea(new v(n.start,n.end));r.render_area=v.Join(a,r.render_area),r.data_area=v.Join(a,r.data_area),r.data_event=!0}else r.data_event=!0,r.pending||(r.pending=[]),n.start.sheet_id&&r.pending.push(n.start.sheet_id);r.structure_event=!0}break;case 4:this.ResizeColumnsInternal(s),r.structure_event=!0;break;case 17:this.active_sheet.SetHeaderSize(s.show?void 0:1,s.show?void 0:1),this.flags.layout=!0,this.flags.repaint=!0;break;case 1:this.InsertRowsInternal(s),r.structure_event=!0,r.structure_rebuild_required=!0;break;case 2:this.InsertColumnsInternal(s),r.structure_event=!0,r.structure_rebuild_required=!0;break;case 14:case 13:{let n=this.FindSheet(s.area),a=n.cells.GetCell(s.area,!0);if(a){let o;a.merge_area?(o=new v(a.merge_area.start),a=n.cells.GetCell(a.merge_area.start,!0)):o=new v(s.area),s.key===13?a.SetNote(s.note):(a.hyperlink=s.reference||void 0,a.render_clean=[]),n===this.active_sheet?(r.style_area=v.Join(o,r.style_area),r.render_area=v.Join(o,r.render_area)):r.style_event=!0}}break;case 27:{let n=this.SortTableInternal(s);n&&n.start.sheet_id===this.active_sheet.id?(r.data_area=v.Join(n,r.data_area),this.options.repaint_on_cell_change&&(r.render_area=v.Join(n,r.render_area))):r.data_event=!0}break;case 6:{let n=this.SetRangeInternal(s,r);if(n){let o=this.model.sheets.Find(n.start.sheet_id||this.active_sheet.id)?.TablesFromArea(n,!0)||[];for(let l of o)this.UpdateTableColumns(l)}n&&n.start.sheet_id===this.active_sheet.id?(r.data_area=v.Join(n,r.data_area),this.options.repaint_on_cell_change&&(r.render_area=v.Join(n,r.render_area))):r.data_event=!0}break;case 20:this.DeleteSheetInternal(s),r.sheets=!0,r.structure_event=!0,r.structure_rebuild_required=!0;break;case 19:this.DuplicateSheetInternal(s),r.sheets=!0,r.structure_event=!0,r.structure_rebuild_required=!0;break;case 18:{let n=this.AddSheetInternal(s.name,s.insert_index);typeof n=="number"&&s.show&&this.ActivateSheetInternal({key:21,id:n}),r.structure_event=!0,r.sheets=!0,r.structure=!0}break;case 21:this.ActivateSheetInternal(s);break;default:console.warn(`unhandled command: ${ut[s.key]} (${s.key})`)}return r.data_area?(r.data_area.start.sheet_id||r.data_area.SetSheetID(this.active_sheet.id),i.push({type:"data",area:r.data_area})):r.data_event&&i.push({type:"data"}),r.style_area?(r.style_area.start.sheet_id||r.style_area.SetSheetID(this.active_sheet.id),i.push({type:"style",area:r.style_area})):r.style_event&&i.push({type:"style"}),r.structure_event&&i.push({type:"structure",rebuild_required:r.structure_rebuild_required}),this.batch?this.batch_events.push(...i):this.grid_events.Publish(i),r}};var ft=class extends mt{constructor(t={},r,i,s=xt,n=!0){super(t,r,i);this.hide_selection=!1;this.headless=!1;this.hover_data={};this.editing_state=0;this.editing_cell={row:-1,column:-1,sheet_id:0};this.tile_update_pending=!1;this.pending_layout_update=new Set;this.decimal_separator_code=46;this.RESIZE_PIXEL_BUFFER=5;this.select_argument=!1;this.cell_resize={row:-1,column:-1};this.render_tiles=new v({row:0,column:0});this.primary_selection={target:{row:0,column:0},area:new v({row:0,column:0}),empty:!0};this.active_selection={target:{row:0,column:0},area:new v({row:0,column:0}),empty:!0};this.nub_select_flag=!1;this.additional_selections=[];this.double_click_data={};this.layout_token=0;this.render_token=0;if(this.decimal_separator_code=R.decimal_separator.charCodeAt(0),this.theme=JSON.parse(JSON.stringify(s)),!n){this.headless=!0,this.layout=new Lt(this.model,this.view);return}this.layout=new Vt(this.model,this.view),t.initial_scale&&(typeof t.initial_scale=="string"&&(t.initial_scale=Number(t.initial_scale)),this.layout.scale=t.initial_scale),this.tile_renderer=new Bt(this.theme,this.layout,this.model,this.view,this.options),this.selection_renderer=new Nt(this.theme,this.layout,this.model,this.view,this.primary_selection,this.additional_selections)}get scale(){return this.layout.scale}set scale(t){this.layout.scale=t,this.UpdateLayout(),this.UpdateAnnotationLayout(),this.layout.UpdateAnnotation(this.active_sheet.annotations),this.layout.ApplyTheme(this.theme),this.overlay_editor?.UpdateTheme(t),this.tab_bar?.UpdateScale(t),this.grid_events.Publish({type:"scale",scale:t});for(let r of this.model.sheets.list)for(let i of r.annotations)i.dirty=!0}SetLanguageMap(t){if(!t)this.language_map=this.reverse_language_map=void 0;else{let r=Object.keys(t);this.language_map={};for(let i of r)this.language_map[i.toUpperCase()]=t[i];this.reverse_language_map={};for(let i of r){let s=t[i];this.reverse_language_map[s.toUpperCase()]=i}}this.primary_selection.empty||this.Select(this.primary_selection,this.primary_selection.area,this.primary_selection.target)}SetNote(t,r){if(!t){if(this.primary_selection.empty)return;t=this.primary_selection.target}this.ExecCommand({key:13,area:t,note:r})}FindAnnotation(t){for(let r of this.active_sheet.annotations)if((r.view[this.view_index]||{}).node===t)return r}CreateAnnotation(t={},r=!0,i=!1,s){let n=new Ne(t);if(i)if(!n.data.layout&&n.scaled_rect&&(n.data.layout=this.layout.RectToAnnotationLayout(n.scaled_rect)),!n.data.layout)console.warn("can't offset annotation without layout");else{let a=this.layout.AnnotationLayoutToRect(n.data.layout).Shift(20,20),o=!0;for(;o;){o=!1;for(let l of this.active_sheet.annotations)if(l!==n&&l.scaled_rect&&l.scaled_rect.top===a.top&&l.scaled_rect.left===a.left){a=a.Shift(20,20),o=!0;break}}n.data.layout=this.layout.RectToAnnotationLayout(a)}return s&&(U.IsRectangle(s)?(n.data.layout=void 0,n.rect=U.Create(s)):s.start&&(n.rect=void 0,n.data.layout=this.layout.AddressToAnnotationLayout(s.start,s.end||s.start))),r&&(this.active_sheet.annotations.some(a=>a===n)||this.active_sheet.annotations.push(n),this.AddAnnotation(n)),n}UpdateAnnotationLayout(){}AddAnnotation(t,r=!1,i=!0){let s=t.view[this.view_index];if(s||(s={},t.view[this.view_index]=s),!s.node){s.node=document.createElement("div"),s.node.dataset.scale=this.layout.scale.toString(),s.node.style.fontSize=`${10*this.layout.scale}pt`,s.content_node=D.CreateDiv("annotation-content",s.node);let n=D.CreateDiv("annotation-move-target",s.node),a=D.CreateDiv("annotation-resize-target",s.node);if(s.node){let o=s.node;o.setAttribute("tabindex","-1"),o.addEventListener("mousedown",l=>{l.button===0&&this.layout.AnnotationMouseDown(t,o,l,n,a).then(c=>{c&&this.grid_events.Publish(c),t.data.layout&&this.EnsureAddress(t.data.layout.br.address,1)})}),o.addEventListener("focusin",()=>{for(let l of this.layout.GetFrozenAnnotations(t))l.classList.add("clone-focus");this.selected_annotation=t,this.primary_selection.empty=!0,this.primary_selection.target={row:-1,column:-1,sheet_id:this.active_sheet.id},this.HideGridSelection()}),o.addEventListener("focusout",l=>{for(let c of this.layout.GetFrozenAnnotations(t))c.classList.remove("clone-focus");this.formula_bar&&this.formula_bar.IsElement(l.relatedTarget)?(this.primary_selection.empty=!0,this.RenderSelections(),this.editing_annotation=t,this.layout.ShowSelections(!0)):(this.selected_annotation===t&&(this.selected_annotation=void 0),this.ShowGridSelection())}),o.addEventListener("keydown",l=>{let c=t.scaled_rect;if(!c){console.info("missing scaled rect!");return}let h=[o,...this.layout.GetFrozenAnnotations(t)],u={x:c.left,y:c.top};switch(l.key){case"ArrowUp":case"Up":l.ctrlKey?(this.layout.AnnotationLayoutOrder(t,1)&&this.grid_events.Publish({type:"annotation",event:"move",annotation:t}),o.focus()):u.y--;break;case"ArrowLeft":case"Left":if(l.ctrlKey)return;u.x--;break;case"ArrowRight":case"Right":if(l.ctrlKey)return;u.x++;break;case"ArrowDown":case"Down":l.ctrlKey?(this.layout.AnnotationLayoutOrder(t,-1)&&this.grid_events.Publish({type:"annotation",event:"move",annotation:t}),o.focus()):u.y++;break;case"Escape":case"Esc":this.Focus();break;case"Delete":case"Del":this.Focus(),this.RemoveAnnotation(t);break;default:return}if(l.stopPropagation(),l.preventDefault(),u.x=Math.max(u.x,0),u.y=Math.max(u.y,0),c.left!==u.x||c.top!==u.y){c.left=Math.round(u.x),c.top=Math.round(u.y);for(let m of h)m.style.top=c.top+"px",m.style.left=c.left+"px";t.data.extent=void 0,this.grid_events.Publish({type:"annotation",event:"move",annotation:t}),t.data.layout=this.layout.RectToAnnotationLayout(c)}})}}s.node.classList.add("annotation"),i&&(this.layout.AddAnnotation(t),t.data.layout&&this.EnsureAddress(t.data.layout.br.address,1)),r||this.grid_events.Publish({type:"annotation",annotation:t,event:"create"})}AnnotationUpdated(t){this.layout.CloneFrozenAnnotation(t)}RemoveAnnotation(t){for(let r=0;r<this.active_sheet.annotations.length;r++)if(t===this.active_sheet.annotations[r]){this.active_sheet.annotations.splice(r,1),this.layout.RemoveAnnotation(t),this.grid_events.Publish({type:"annotation",annotation:t,event:"delete"});return}}RemoveAnnotationNodes(){this.layout.RemoveAnnotationNodes()}Serialize(t={}){return this.active_sheet.selection=JSON.parse(JSON.stringify(this.primary_selection)),this.active_sheet.scroll_offset=this.layout.scroll_offset,super.Serialize(t)}ShowHeaders(t=!0){this.ExecCommand({key:17,show:t})}FromImportData(t,r=!1){this.RemoveAnnotationNodes();let i=t.sheets,s=i.map(()=>O.Blank(this.model.theme_style_properties).toJSON()),n;if(typeof t.active_tab=="number")n=s[t.active_tab]?.id;else for(let o=0;o<t.sheets.length;o++)if(!t.sheets[o].hidden){n=s[o].id;break}this.UpdateSheets(s,!0,n);let a={};this.model.macro_functions.clear(),this.ClearSelection(this.primary_selection),this.model.tables.clear();for(let o=0;o<i.length;o++){let l=this.model.sheets.list[o];l.ImportData(i[o]),a[l.name]=l.id;for(let c of i[o].cells)c.table&&(c.table.area.start.sheet_id=l.id,this.model.tables.set(c.table.name.toLowerCase(),c.table));for(let c of this.model.tables.values())this.UpdateTableColumns(c)}if(this.model.sheets.UpdateIndexes(),this.model.named_ranges.Reset(),this.model.named_expressions.clear(),t.names){for(let o of Object.keys(t.names)){let l=this.model.named_ranges.ValidateNamed(o);if(!l){console.warn(`invalid name: ${o}`);continue}let c=t.names[o];if(typeof c!="number"){let h=this.parser.Parse(c);if(h.expression)if(h.expression.type==="range"){let u=a[h.expression.start.sheet||""];u&&(h.expression.start.sheet_id=u,this.model.named_ranges.SetName(l,new v(h.expression.start,h.expression.end),!1))}else if(h.expression.type==="address"){let u=a[h.expression.sheet||""];u&&(h.expression.sheet_id=u,this.model.named_ranges.SetName(l,new v(h.expression),!1))}else{let u=h.expression;this.parser.Walk(u,m=>m.type==="address"||m.type==="range"?(m.type==="range"&&(m=m.start),m.sheet_id||(m.sheet_id=a[m.sheet||""]||0),!1):!0),this.model.named_expressions.set(l,u)}}}this.model.named_ranges.RebuildList()}for(let o of this.active_sheet.annotations)this.AddAnnotation(o,!0);this.ActivateSheetTasks(),this.QueueLayoutUpdate(),this.StyleDefaultFromTheme(),r&&this.Repaint(!1,!1),this.tab_bar&&this.tab_bar.Update()}NextSheet(t=1){if(this.model.sheets.length===1)return;let r=this.model.sheets.list.map((i,s)=>({sheet:i,index:s})).filter(i=>i.sheet.visible);if(r.length!==1){for(let i=0;i<r.length;i++)if(r[i].sheet===this.active_sheet){let s=(i+t)%r.length;for(;s<0;)s+=r.length;this.ActivateSheet(r[s].index);return}}}UpdateSheets(t,r=!1,i){if(super.UpdateSheets(t,r,i),this.RemoveAnnotationNodes(),this.ClearSelection(this.primary_selection),t[0]&&t[0].primary_selection){let s=t[0].primary_selection;s.empty||this.Select(this.primary_selection,new v(s.area.start,s.area.end),s.target)}else if(!this.active_sheet.selection.empty){let s=this.active_sheet.selection;this.Select(this.primary_selection,new v(s.area.start,s.area.end),s.target)}this.layout.ClearLayoutCaches();for(let s of this.model.sheets.list)for(let n of s.annotations)this.AddAnnotation(n,!0,s===this.active_sheet);this.ActivateSheetTasks(),this.QueueLayoutUpdate(JSON.parse(JSON.stringify(this.active_sheet.scroll_offset))),this.StyleDefaultFromTheme(),r&&this.Repaint(!1,!1),this.tab_bar&&this.tab_bar.Update()}UpdateLayout(){this.layout.UpdateTiles(),this.render_tiles=this.layout.VisibleTiles(),this.Repaint(!0)}UpdateTheme(t=!1,r){if(!t)for(let s of Object.keys(this.theme))delete this.theme[s];let i=JSON.parse(JSON.stringify(xt));this.view_node&&(i={...Kr(this.view_node)}),i={...this.theme,...i,...r},Object.assign(this.theme,i),this.StyleDefaultFromTheme(),this.active_sheet.UpdateDefaultRowHeight(),this.active_sheet.FlushCellStyles(),this.layout.ApplyTheme(this.theme),t||(this.UpdateLayout(),this.overlay_editor?.UpdateTheme(this.layout.scale),this.Repaint(!0,!0,!0))}Initialize(t,r=!1){if(!this.tile_renderer||!this.selection_renderer)return;this.view_node=t,this.UpdateTheme(!0);let s=t.querySelector(".treb-spreadsheet-body").querySelector("div"),n;this.options.formula_bar&&(n||(n=new ht({theme:this.theme,container:s})),this.InitFormulaBar(t,n)),this.options.tab_bar&&(this.tab_bar=new Ut(this.layout,this.model,this.view,this.options,t),this.tab_bar.Subscribe(a=>{switch(a.type){case"cancel":break;case"scale":{let o=this.layout.scale;if(o=Math.round(a.value*1e3)/1e3,o=Math.min(2,Math.max(o,.5)),this.options.persist_scale_key&&localStorage.setItem(this.options.persist_scale_key,JSON.stringify({scale:o})),this.scale=o,a.keep_focus)return}break;case"reorder-sheet":this.ReorderSheet(a.index,a.move_before);break;case"delete-sheet":this.DeleteSheet();break;case"add-sheet":this.AddSheet();break;case"rename-sheet":this.RenameSheet(a.sheet,a.name);break;case"activate-sheet":this.ActivateSheetID(a.sheet.id);break}this.SelectingArgument()||this.Focus()})),this.container=s,this.container.classList.add("treb-grid"),q.is_mac&&q.is_safari&&this.container.classList.add("safari"),this.container.setAttribute("tabindex","-1"),this.layout.Initialize(s,{scroll:()=>this.OnScroll(),dropdown:a=>this.OnDropdownSelect(a),sort:(a,o,l)=>{let c=this.model.tables.get(a.toLowerCase());c&&this.SortTable(c,{column:o,asc:l})},focus:()=>this.Focus()},this.options.scrollbars),this.selection_renderer.Initialize(),this.layout.UpdateTiles(),n||(n=new ht({theme:this.theme,container:s})),this.InitOverlayEditor(n),this.AttachListeners(),this.render_tiles=this.layout.VisibleTiles(),r||(this.tab_bar?.Update(),this.Repaint(!0))}MergeCells(t){!t&&this.primary_selection.empty||(this.layout.HideDropdownCaret(),this.ExecCommand({key:9,area:t||this.primary_selection.area}))}UnmergeCells(t){!t&&this.primary_selection.empty||(this.layout.HideDropdownCaret(),this.ExecCommand({key:10,area:t||this.primary_selection.area}))}Focus(t=""){q.is_mobile?this.container?.focus():this.overlay_editor?.Focus(t)}SetValidation(t,r,i){if(!t){if(this.primary_selection.empty)throw new Error("invalid target in set validation");t=this.primary_selection.target}let s={key:25,area:t,error:i};r&&(Array.isArray(r)?s.list=r:typeof r=="object"&&r.start&&r.end&&L(r.start)&&L(r.end)&&(s.range=r)),this.ExecCommand(s),!this.primary_selection.empty&&(!t.sheet_id||t.sheet_id===this.active_sheet.id)&&this.primary_selection.target.row===t.row&&this.primary_selection.target.column===t.column&&requestAnimationFrame(()=>this.Select(this.primary_selection,this.primary_selection.area,this.primary_selection.target))}SetName(t,r,i){let s=this.model.named_ranges.ValidateNamed(t);if(!s)throw new Error("invalid name");let n=t.trim().toUpperCase();if(this.autocomplete_matcher){for(let o of Object.keys(this.autocomplete_matcher.function_map))if(n===o.toUpperCase()){if(r||i)throw new Error("name already defined");break}}t=s;let a={key:16,name:t};if(r)L(r)&&(r=new v(r)),r.start.sheet_id||(r=new v({...r.start,sheet_id:this.active_sheet.id},r.end)),a.area=new v(r.start,r.end);else if(i){let o=this.parser.Parse(i);if(o.valid&&o.expression)this.parser.Walk(o.expression,l=>{if(l.type==="address"||l.type==="range"){if(l.type==="range"&&(l=l.start),!l.sheet_id&&l.sheet){let c=this.model.sheets.Find(l.sheet);c&&(l.sheet_id=c.id)}return l.sheet_id||(l.sheet_id=this.active_sheet.id),!1}return!0}),a.expression=o.expression;else throw new Error("invalid expression")}this.ExecCommand(a)}SelectAll(){this.Select(this.primary_selection,new v({row:1/0,column:1/0}),void 0,!0),this.RenderSelections()}SelectRange(t){this.Select(this.primary_selection,t),this.RenderSelections()}GetNumberFormat(t){let r=this.active_sheet.CellStyleData(t);if(r&&r.number_format)return M.Get(r.number_format).toString()}GetRangeStyle(t,r=!1){let i=0;if(L(t)?i=t.sheet_id||this.active_sheet.id:i=t.start.sheet_id||this.active_sheet.id,i)return this.model.sheets.Find(i)?.GetCellStyle(t,r)||void 0}GetRange(t,r){if(L(t)){let s=this.model.sheets.Find(t.sheet_id||this.active_sheet.id);return s?r==="formula"?s.cells.RawValue(t):r==="formatted"?s.GetFormattedRange(t):s.cells.GetRange(t):void 0}let i=this.model.sheets.Find(t.start.sheet_id||this.active_sheet.id);if(i)return r==="formula"?i.cells.RawValue(t.start,t.end):r==="formatted"?i.GetFormattedRange(t.start,t.end):i.cells.GetRange(t.start,t.end)}SetRange(t,r,i={}){let{recycle:s,transpose:n,array:a,r1c1:o}=i;if(i.argument_separator){let l={argument_separator:this.parser.argument_separator,decimal_mark:this.parser.decimal_mark},c=!1;if(i.argument_separator===","&&this.parser.argument_separator!==","&&(this.parser.argument_separator=",",this.parser.decimal_mark=".",c=!0),i.argument_separator===";"&&this.parser.argument_separator!==";"&&(this.parser.argument_separator=";",this.parser.decimal_mark=",",c=!0),c){let h=u=>{if(typeof u=="string"&&u[0]==="="){let m=this.parser.Parse(u);m.expression&&(u="="+this.parser.Render(m.expression,{missing:"",convert_decimal:l.decimal_mark,convert_argument_separator:l.argument_separator}))}return u};Array.isArray(r)?r=r.map(u=>Array.isArray(u)?u.map(m=>h(m)):h(u)):r=h(r)}this.parser.argument_separator=l.argument_separator,this.parser.decimal_mark=l.decimal_mark}if(r=this.UntranslateData(r),!Array.isArray(r))s||a?this.ExecCommand({key:6,area:t,value:r,array:a,r1c1:o}):this.ExecCommand({key:6,area:t.start,value:r,array:a,r1c1:o});else{if(!or(r))if(s){let l=t.entire_column?this.active_sheet.rows:t.rows,c=t.entire_row?this.active_sheet.columns:t.columns,h=l*c;if(h>r.length){let m=r.slice(0),f=Math.ceil(h/m.length);for(let b=1;b<f;b++)m=m.concat(r.slice(0));r=m}let u=[];for(let m=0,f=0;m<c;m++,f+=l)u[m]=r.slice(f,f+l);r=u}else r=[r];n&&(r=this.Transpose(r)),this.ExecCommand({key:6,area:t,value:r,array:a,r1c1:o})}!this.primary_selection.empty&&t.Contains(this.primary_selection.target)&&this.UpdateFormulaBarFormula()}ApplyStyle(t,r={},i=!0){if(!t){if(this.primary_selection.empty)return;t=this.primary_selection.area}O.UpdateStyle(r),this.ExecCommand({key:7,area:t,style:r,delta:i}),this.UpdateFormulaBarFormula()}GetSelection(){return this.primary_selection}Update(t=!1,r){this.DelayedRender(t,r)}ApplyBorders2(t,r="none",i,s=1){if(!t){if(this.primary_selection.empty)return;t=this.primary_selection.area}r==="none"&&(s=0),this.ExecCommand({key:8,color:i,area:t,borders:r,width:s})}Batch(t,r=!0){this.batch=!0,t(),this.batch=!1;let i=this.batch_events.slice(0);return this.batch_events=[],r&&this.DelayedRender(!1),i}ScrollTo(t,r=!0,i=!0,s=!1){this.layout.ScrollTo(t,r,i,s)}ScrollIntoView(t){this.options.scrollbars&&this.layout.ScrollIntoView(t)}GetScrollOffset(){return this.layout.GetScrollOffset()}ScrollOffset(t){if(t)this.layout.scroll_offset=t;else return this.layout.scroll_offset}TranslateInternal(t,r){let i=this.parser.Parse(t);if(i.expression){let s=!1;if(this.parser.Walk(i.expression,n=>{if(n.type==="call"){let a=r[n.name.toUpperCase()];a&&(s=!0,n.name=a)}return!0}),s)return"="+this.parser.Render(i.expression,{missing:""})}return t}RenameSheetInternal(t,r){super.RenameSheetInternal(t,r),this.tab_bar?.Update()}TranslateFunction(t){return this.language_map?this.TranslateInternal(t,this.language_map):t}UntranslateFunction(t){return this.reverse_language_map?this.TranslateInternal(t,this.reverse_language_map):t}UntranslateData(t){return Array.isArray(t)?or(t)?t.map(r=>r.map(i=>i&&typeof i=="string"&&i[0]==="="?this.UntranslateFunction(i):i)):t.map(r=>r&&typeof r=="string"&&r[0]==="="?this.UntranslateFunction(r):r):(t&&typeof t=="string"&&t[0]==="="&&(t=this.UntranslateFunction(t)),t)}StyleDefaultFromTheme(){this.model.theme_style_properties.font_face=this.theme.grid_cell?.font_face||"",this.model.theme_style_properties.font_size=this.theme.grid_cell?.font_size||{unit:"pt",value:10}}AutoSizeColumn(t,r,i=!0){if(!this.tile_renderer)return;let s=12,n=4*2;i||(s=t.GetColumnWidth(r));for(let a=0;a<t.cells.rows;a++){let o=t.CellData({row:a,column:r}),l=o.formatted||"";if(typeof l!="string"&&(l=l.map(c=>c.text).join("")),l&&l.length){let c=this.tile_renderer.MeasureText(l,k.Font(o.style||{}));s=Math.max(s,Math.ceil(c.width)+n)}}t.SetColumnWidth(r,s)}EnsureActiveSheet(t=!1){for(let r of this.model.sheets.list)if(r===this.active_sheet){t&&this.ActivateSheetInternal({key:21,id:r.id,force:!0});return}this.ActivateSheetInternal({key:21,index:0})}ActivateSheetInternal(t){let r=this.SelectingArgument(),i=this.ResolveSheet(t)||this.model.sheets.list[0];if(this.active_sheet===i&&!t.force)return;if(!i.visible)throw new Error("cannot activate hidden sheet");this.HideHoverInfo(),this.active_sheet.selection=JSON.parse(JSON.stringify(this.primary_selection)),this.active_sheet.scroll_offset=this.layout.scroll_offset;let s=this.active_sheet;this.RemoveAnnotationNodes(),this.active_sheet=i,r?this.RenderSelections():(this.ClearSelection(this.primary_selection),i.selection&&!i.selection.empty&&this.Select(this.primary_selection,new v(i.selection.area.start,i.selection.area.end),i.selection.target));let n=this.active_sheet.annotations;for(let a of n)this.AddAnnotation(a,!0);this.ActivateSheetTasks(),this.QueueLayoutUpdate(),this.pending_layout_update.has(this.active_sheet.id)?(this.Repaint(!0,!0),this.pending_layout_update.delete(this.active_sheet.id)):this.Repaint(!1,!1),this.grid_events.Publish({type:"sheet-change",deactivate:s,activate:this.active_sheet}),this.tab_bar&&this.tab_bar.Update(),this.layout.scroll_offset=this.active_sheet.scroll_offset,this.formula_bar?.selecting&&requestAnimationFrame(()=>this.formula_bar?.FocusEditor())}ActivateSheetTasks(){if(this.active_sheet.Activate(),this.active_sheet.image&&!this.active_sheet.image.complete){let t=this.active_sheet.image,r=0,i=()=>{t.complete?this.UpdateLayout():r++<5&&setTimeout(()=>i(),10)};i()}}HighlightFreezeArea(){for(let t of[this.layout.corner_selection,this.layout.row_header_selection,this.layout.column_header_selection])t.classList.add("highlight-area"),setTimeout(()=>{t.classList.remove("highlight-area")},400)}QueueLayoutUpdate(t){this.tile_update_pending=!0,t&&(this.scroll_offset_pending=t)}HandleAddressLabelEvent(t){if(t){let r=(a="")=>{let o=a.toLowerCase();for(let l of this.model.sheets.list)if(l.name.toLowerCase()===o)return l.id;return this.active_sheet.id},i=a=>{for(let o of this.model.sheets.list)if(o.id===a)return o;return this.active_sheet},s,n=this.parser.Parse(t);if(n.expression)switch(n.expression.type){case"address":n.expression.sheet_id=r(n.expression.sheet),s=new v(n.expression);break;case"range":n.expression.start.sheet_id=r(n.expression.start.sheet),s=new v(n.expression.start,n.expression.end);break;case"identifier":s=this.model.named_ranges.Get(n.expression.name),s||this.primary_selection.empty||this.SetName(n.expression.name.toUpperCase(),this.primary_selection.area);break;default:break}if(s){let a=i(s.start.sheet_id);if(a.columns>=s.end.column&&a.rows>=s.end.row){this.ExecCommand({key:5,area:s});return}else console.warn("address out of range")}}this.UpdateAddressLabel(),this.Focus()}InitFormulaBar(t,r){this.formula_bar=new Ot(t,this.parser,this.theme,this.model,this.view,this.options,r),this.formula_bar.autocomplete_matcher=this.autocomplete_matcher,this.formula_bar.Subscribe(i=>{switch(i.type){case"address-label-event":this.HandleAddressLabelEvent(i.text);break;case"stop-editing":this.editing_state=0;break;case"start-editing":this.editing_state=2,this.editing_cell={...this.primary_selection.target};break;case"discard":if(this.editing_state=0,this.editing_annotation){this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection);let s=this.editing_annotation.view[this.view_index]?.node;s&&s.focus(),this.editing_annotation=void 0,this.UpdateFormulaBarFormula(),this.DelayedRender();return}this.container&&this.Focus(),this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection),this.UpdateFormulaBarFormula(),this.DelayedRender();break;case"commit":if(this.active_sheet.id!==this.editing_cell.sheet_id&&this.editing_cell.sheet_id&&this.ActivateSheetID(this.editing_cell.sheet_id),this.editing_state=0,this.editing_annotation){let s=this.editing_annotation;this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection),s.data.formula=i.value?this.FixFormula(i.value):"";let n=this.editing_annotation.view[this.view_index]?.node;n&&n.focus(),this.grid_events.Publish({type:"annotation",event:"update",annotation:s}),this.editing_annotation=void 0,this.DelayedRender();return}this.container&&this.Focus(),this.SetInferredType(this.primary_selection,i.value,i.array),this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection),this.options.repaint_on_cell_change&&this.DelayedRender(!1,this.primary_selection.area),i.event&&this.OverlayKeyDown(i.event);break;case"update":i.dependencies&&this.HighlightDependencies(i.dependencies);break}})}InitOverlayEditor(t){this.container&&(this.overlay_editor=new Gt(this.container,this.parser,this.theme,this.model,this.view,t),this.overlay_editor.UpdateTheme(this.layout.scale),this.overlay_editor.autocomplete_matcher=this.autocomplete_matcher,this.overlay_editor.Subscribe(r=>{switch(r.type){case"stop-editing":this.editing_state=0;break;case"start-editing":this.editing_state=1,this.editing_cell={...this.primary_selection.target};break;case"update":r.dependencies&&this.HighlightDependencies(r.dependencies);break;case"end-selection":this.ClearSelection(this.active_selection),this.DelayedRender();break}}))}DelayedRender(t=!1,r,i=!1){!this.tile_update_pending&&r?this.layout.DirtyArea(r):!this.tile_update_pending&&t&&this.layout.DirtyAll(),this.render_token||(this.render_token=1,re().then(()=>{this.render_token=0,this.Repaint(t,i)}))}Repaint(t=!1,r=!1,i=!1){if(this.headless||!this.tile_renderer)return;if(this.tile_update_pending&&(this.tile_update_pending=!1,this.layout.UpdateTiles(),this.scroll_offset_pending&&(this.layout.scroll_offset=this.scroll_offset_pending,this.scroll_offset_pending=void 0),this.render_tiles=this.layout.VisibleTiles(),this.layout.UpdateAnnotation(this.active_sheet.annotations)),this.layout_token=0,this.tile_renderer.OverflowDirty(r),t)for(let l of this.layout.grid_tiles)for(let c of l)c.dirty=!0;let s=this.render_tiles.start,n=this.render_tiles.end,a=[];for(let l=s.row;l<=n.row;l++)a.push(l);let o=[];for(let l=s.column;l<=n.column;l++)o.push(l);s.row>0&&this.active_sheet.freeze.rows&&a.push(0),s.column>0&&this.active_sheet.freeze.columns&&o.push(0);for(let l of o)for(let c of a){let h=this.layout.grid_tiles[l][c];(t||h.dirty||h.needs_full_repaint)&&(this.tile_renderer.Render(h),h.dirty=h.needs_full_repaint=!1)}this.tile_renderer.RenderHeaders(this.render_tiles,i),this.tile_renderer.RenderCorner(),this.RenderSelections()}MouseMove_RowHeader(t){let r=this.layout.CoordinateToRowHeader(t.offsetY),i=this.layout.OffsetCellAddressToRectangle({row:r.row,column:0});this.hover_data.address&&(this.hover_data.address.row!==-1||this.hover_data.address.column!==-1)&&this.HoverCell({row:-1,column:-1});let s=-1;t.offsetY-i.top<=this.RESIZE_PIXEL_BUFFER&&r.row>0?s=r.row-1:i.bottom-t.offsetY<=this.RESIZE_PIXEL_BUFFER&&(s=r.row),s>=0?this.layout.ResizeCursor("row"):this.cell_resize.row&&(this.cell_resize.row=-1,this.layout.ResizeCursor()),this.cell_resize.row=s}MouseMove_ColumnHeader(t){let r=this.layout.CoordinateToColumnHeader(t.offsetX),i=this.layout.OffsetCellAddressToRectangle({row:0,column:r.column});this.hover_data.address&&(this.hover_data.address.row!==-1||this.hover_data.address.column!==-1)&&this.HoverCell({row:-1,column:-1});let s=-1;t.offsetX-i.left<=this.RESIZE_PIXEL_BUFFER&&r.column>0?s=r.column-1:i.right-t.offsetX<=this.RESIZE_PIXEL_BUFFER&&(s=r.column),s>=0?this.layout.ResizeCursor("column"):this.cell_resize.column&&(this.cell_resize.column=-1,this.layout.ResizeCursor()),this.cell_resize.column=s}MouseDown_RowHeader(t){if(t.button!==0)return;t.stopPropagation(),t.preventDefault();let r=this.layout.CoordinateToRowHeader(t.offsetY),i=this.layout.row_header_cover.getBoundingClientRect(),s={x:i.left,y:i.top};if(this.cell_resize.row>=0){let n=this.cell_resize.row,a=s.y+t.offsetY;if(this.layout.HideDropdownCaret(),this.IsDoubleClick({row:n,column:-1})){let f=[n];if(!this.primary_selection.empty&&this.primary_selection.area.rows>1&&this.primary_selection.area.start.column===1/0&&this.primary_selection.area.ContainsRow(n)){let b=this.active_sheet.RealArea(this.primary_selection.area);f=[];for(let p=b.start.row;p<=b.end.row;p++)f.push(p)}this.ExecCommand({key:3,row:f});return}let o=this.layout.RowHeight(n),l=o,c=this.layout.OffsetCellAddressToRectangle({row:n,column:0}),h=s.y+c.bottom;this.layout.ShowTooltip({left:!0,text:`${l}px`,x:Math.round(i.right+10),y:h});let u=[],m=[];for(let f of this.active_sheet.annotations){let b=c.bottom-1;if(!f.scaled_rect||f.scaled_rect.bottom<b)continue;let p=[...this.layout.GetFrozenAnnotations(f)],g=f.view[this.view_index]?.node;g&&p.push(g),b<=f.scaled_rect.top&&f.data.move_with_cells?u.push({annotation:f,y:f.scaled_rect.top,nodes:p}):b>f.scaled_rect.top&&f.data.resize_with_cells&&m.push({annotation:f,height:f.scaled_rect.height,nodes:p})}ge(this.layout.mask,"row-resize",f=>{let b=Math.max(-o,Math.round(f.offsetY-a));if(b+o!==l){l=b+o,this.layout.SetRowHeight(n,l),this.layout.UpdateTooltip({text:`${l}px`,y:h+b});for(let{annotation:p,y:g}of u)p.scaled_rect&&(p.scaled_rect.top=g+b);for(let{annotation:p,height:g}of m)p.scaled_rect&&(p.scaled_rect.height=g+b);requestAnimationFrame(()=>{for(let{annotation:p,nodes:g}of m)if(p.scaled_rect)for(let _ of g)p.scaled_rect.ApplyStyle(_);for(let{annotation:p,nodes:g}of u)if(p.scaled_rect)for(let _ of g)p.scaled_rect.ApplyStyle(_);this.layout.UpdateTileHeights(!0,n),this.Repaint(!1,!0),this.layout.UpdateAnnotation(this.active_sheet.annotations)})}},()=>{this.layout.HideTooltip(),requestAnimationFrame(()=>{let f=[n];if(!this.primary_selection.empty&&this.primary_selection.area.rows>1&&this.primary_selection.area.start.column===1/0&&this.primary_selection.area.ContainsRow(n)){let b=this.active_sheet.RealArea(this.primary_selection.area);f=[];for(let p=b.start.row;p<=b.end.row;p++)f.push(p)}this.layout.SetRowHeight(n,o),this.ExecCommand({key:3,row:f,height:l/this.scale});for(let{annotation:b}of u)b.scaled_rect&&(b.data.layout=this.layout.RectToAnnotationLayout(b.scaled_rect));for(let{annotation:b}of m){b.scaled_rect&&(b.data.layout=this.layout.RectToAnnotationLayout(b.scaled_rect));let p=b.view[this.view_index];p&&p.resize_callback&&p.resize_callback.call(void 0)}})})}else{let n=this.SelectingArgument()?this.active_selection:this.primary_selection;if(this.SelectingArgument()||this.Focus(),t.shiftKey&&!n.empty){let a=n.target;this.Select(n,new v(n.target,r,!0),void 0,!0),r=a}else this.Select(n,new v(r),{column:0,row:r.row});this.RenderSelections(),ge(this.layout.mask,[],a=>{let o=this.layout.CoordinateToRowHeader(a.offsetY-s.y),l=new v(o,r,!0);(n.empty||!l.Equals(n.area))&&(this.Select(n,l,void 0,!0),this.RenderSelections())},()=>{})}}MouseDown_ColumnHeader(t){if(t.button!==0)return;t.stopPropagation(),t.preventDefault();let r=this.layout.CoordinateToColumnHeader(t.offsetX),i=this.layout.column_header_cover.getBoundingClientRect(),s={x:i.left,y:i.top};if(this.cell_resize.column>=0){let n=this.cell_resize.column,a=s.x+t.offsetX;if(this.layout.HideDropdownCaret(),this.IsDoubleClick({row:-1,column:n})){let f=[n];if(!this.primary_selection.empty&&this.primary_selection.area.columns>1&&this.primary_selection.area.start.row===1/0&&this.primary_selection.area.ContainsColumn(n)){let b=this.active_sheet.RealArea(this.primary_selection.area);f=[];for(let p=b.start.column;p<=b.end.column;p++)f.push(p)}this.ExecCommand({key:4,column:f});return}let o=this.layout.ColumnWidth(n),l=o,c=this.layout.OffsetCellAddressToRectangle({row:0,column:n}),h=s.x+c.right;this.layout.ShowTooltip({up:!0,text:`${l}px`,x:h,y:Math.round(i.bottom+10)});let u=[],m=[];for(let f of this.active_sheet.annotations){let b=c.right-1;if(!f.scaled_rect||f.scaled_rect.right<b)continue;let p=[...this.layout.GetFrozenAnnotations(f)],g=f.view[this.view_index]?.node;g&&p.push(g),b<=f.scaled_rect.left&&f.data.move_with_cells?u.push({annotation:f,x:f.scaled_rect.left,nodes:p}):b>f.scaled_rect.left&&f.data.resize_with_cells&&m.push({annotation:f,width:f.scaled_rect.width,nodes:p})}ge(this.layout.mask,"column-resize",f=>{let b=Math.max(-o,Math.round(f.offsetX-a));if(b+o!==l){l=b+o,this.layout.UpdateTooltip({text:`${l}px`,x:h+b}),this.layout.SetColumnWidth(n,l);for(let{annotation:p,x:g}of u)p.scaled_rect&&(p.scaled_rect.left=g+b);for(let{annotation:p,width:g}of m)p.scaled_rect&&(p.scaled_rect.width=g+b);requestAnimationFrame(()=>{for(let{annotation:p,nodes:g}of m)if(p.scaled_rect)for(let _ of g)p.scaled_rect.ApplyStyle(_);for(let{annotation:p,nodes:g}of u)if(p.scaled_rect)for(let _ of g)p.scaled_rect.ApplyStyle(_);this.layout.UpdateTileWidths(!0,n),this.Repaint(!1,!0)})}},()=>{this.layout.HideTooltip(),requestAnimationFrame(()=>{let f=[n];if(!this.primary_selection.empty&&this.primary_selection.area.columns>1&&this.primary_selection.area.start.row===1/0&&this.primary_selection.area.ContainsColumn(n)){let b=this.active_sheet.RealArea(this.primary_selection.area);for(let p=b.start.column;p<=b.end.column;p++)f.push(p)}this.ExecCommand({key:4,column:f,width:l/this.scale});for(let{annotation:b}of u)b.scaled_rect&&(b.data.layout=this.layout.RectToAnnotationLayout(b.scaled_rect));for(let{annotation:b}of m){b.scaled_rect&&(b.data.layout=this.layout.RectToAnnotationLayout(b.scaled_rect));let p=b.view[this.view_index];p&&p.resize_callback&&p.resize_callback.call(void 0)}})})}else{let n=this.SelectingArgument()?this.active_selection:this.primary_selection;if(this.SelectingArgument()||this.Focus(),t.shiftKey&&!n.empty){let a=n.target;this.Select(n,new v(n.target,r,!0),void 0,!0),r=a}else this.Select(n,new v(r),{row:0,column:r.column});this.RenderSelections(),ge(this.layout.mask,[],a=>{let o=this.layout.CoordinateToColumnHeader(a.offsetX-s.x),l=new v(o,r,!0);(n.empty||!l.Equals(n.area))&&(this.Select(n,l,void 0,!0),this.RenderSelections())})}}HoverCell(t,r){let i=this.active_sheet.cells.GetCell(t,!1);if(i?.table&&i.table.area.start.row===t.row&&i.table.sortable!==!1?(this.hover_data.table_header=!0,this.layout.ShowTableSortButton(i.table,t.column-i.table.area.start.column,t)):(this.hover_data.table_header&&this.layout.HideTableSortButton(),this.hover_data.table_header=!1),i?.merge_area){let s=i.merge_area;t=s.start,i=this.active_sheet.cells.GetCell(t,!1),t={row:s.start.row,column:s.end.column}}if(i?.note){let s=this.options.markdown?we.instance.HTML(we.instance.Parse(i.note)):void 0;this.layout.ShowNote(i.note,t,r,s),this.hover_data.note=!0}else this.hover_data.note&&(this.layout.HideNote(),this.hover_data.note=!1);i?.hyperlink?(this.layout.ShowTitle("Link: "+i.hyperlink,t),this.hover_data.link=!0,this.hover_data.cell=i):this.hover_data.link&&(this.layout.HideTitle(),this.hover_data.cell=void 0),this.hover_data.address={...t}}HideHoverInfo(){this.layout.HideTitle(),this.layout.HideTooltip(),this.hover_data.note=this.hover_data.link=!1,this.hover_data.cell=void 0,this.hover_data.pointer&&this.layout.grid_cover.classList.remove("link-pointer"),this.hover_data.pointer=!1}MouseMove_Grid(t){if(t.stopPropagation(),t.preventDefault(),!this.selection_renderer)return;(this.cell_resize.row>=0||this.cell_resize.column>=0)&&this.layout.ResizeCursor();let r={x:t.offsetX,y:t.offsetY},i;if(this.overlay_editor?.editing||(i=this.layout.PointToAddress_Grid(r),(!this.hover_data.address||this.hover_data.address.row!==i.row||this.hover_data.address.column!==i.column)&&this.HoverCell(i,t)),this.hover_data.link&&i&&(this.hover_data.point=r,this.hover_data.handler||(this.hover_data.handler=requestAnimationFrame(()=>{let n=this.hover_data.address&&this.hover_data.point&&this.hover_data.cell&&this.PointInTextPart(this.hover_data.address,this.hover_data.point,this.hover_data.cell);n!==!!this.hover_data.pointer&&(this.hover_data.pointer=n,n?this.layout.grid_cover.classList.add("link-pointer"):this.layout.grid_cover.classList.remove("link-pointer")),this.hover_data.handler=void 0}))),this.primary_selection.empty||!this.selection_renderer.nub_rectangle){this.nub_select_flag&&(this.layout.grid_cover.classList.remove("nub-select"),this.nub_select_flag=!1);return}let s=this.selection_renderer.nub_rectangle.Contains(t.offsetX,t.offsetY);s!==this.nub_select_flag&&(s?this.layout.grid_cover.classList.add("nub-select"):this.layout.grid_cover.classList.remove("nub-select"),this.nub_select_flag=s)}ClearDoubleClick(){this.double_click_data.address=void 0}IsDoubleClick(t,r=300){if(this.double_click_data.address&&this.double_click_data.address.row===t.row&&this.double_click_data.address.column===t.column)return clearTimeout(this.double_click_data.timeout),this.double_click_data.address=void 0,this.double_click_data.timeout=void 0,!0;this.double_click_data.timeout&&clearTimeout(this.double_click_data.timeout),this.double_click_data.address={...t},this.double_click_data.timeout=window.setTimeout(()=>{this.double_click_data.address=void 0,this.double_click_data.timeout=void 0},r)}PointInTextPart(t,r,i){let s=this.layout.CellAddressToRectangle(t);i.merge_area&&(s=s.Combine(this.layout.CellAddressToRectangle(i.merge_area.end)));let n=r.x-s.left,a=r.y-s.top,o=i.renderer_data?.text_data?.strings||[];for(let l of o)for(let c of l)if(typeof c.left=="number"&&typeof c.top=="number"&&typeof c.width=="number"&&typeof c.height=="number"&&n>=c.left&&a>=c.top&&n<=c.left+c.width&&a<=c.top+c.height)return!0;return!1}MouseDown_Grid(t){if(t.button!==0)return;t.stopPropagation(),t.preventDefault();let r=this.SelectingArgument();!r&&this.additional_selections.length&&this.ClearAdditionalSelections(),(!r||!this.formula_bar?.selecting)&&this.Focus(),this.overlay_editor?.editing&&!this.overlay_editor?.selecting&&this.DismissEditor();let i={x:t.offsetX,y:t.offsetY},s=this.layout.PointToAddress_Grid(i),n=r?this.active_selection:this.primary_selection;if(!r&&this.IsDoubleClick(s)){q.is_mobile&&this.overlay_editor?.edit_node?.focus(),this.OverlayEditCell({target:s,area:new v(s)},!1);return}let a=this.layout.grid_cover.getBoundingClientRect(),o={x:a.left,y:a.top},l=[],c;if(t.shiftKey&&!n.empty){let u=n.target;this.Select(n,new v(s,n.target,!0),void 0,!0),s=u}else if(this.nub_select_flag)s=n.area.TopLeft(),l.push("nub-select"),c=this.active_sheet.RealArea(n.area);else{let u=s,m=this.active_sheet.CellData(u);if(m.merge_area&&(u=m.merge_area.start,m=this.active_sheet.CellData(m.merge_area.start)),m.hyperlink&&this.PointInTextPart(u,i,m)){let f=m.hyperlink;re().then(()=>{this.grid_events.Publish({type:"cell-event",data:{type:"hyperlink",data:f}})}),this.ClearDoubleClick();return}if(m.click_function){let f=this.layout.CellAddressToRectangle(u);m.merge_area&&(f=f.Combine(this.layout.CellAddressToRectangle(m.merge_area.end)));let b=m.click_function.call(this,{cell:m,x:i.x-f.left,y:i.y-f.top,width:f.width,height:f.height,scale:this.layout.scale});if(b.value&&this.ExecCommand({key:6,value:b.value,area:u}),b.block_selection){this.ClearDoubleClick(),!this.primary_selection.empty&&this.primary_selection.target.row===u.row&&this.primary_selection.target.column===u.column&&this.UpdateFormulaBarFormula();return}}this.Select(n,new v(s),s)}this.RenderSelections(),r&&this.UpdateSelectedArgument(n);let h=this.layout.CellAddressToRectangle({row:0,column:0}).Combine(this.layout.CellAddressToRectangle({row:this.active_sheet.rows-1,column:this.active_sheet.columns-1})).Expand(-1,-1);ge(this.layout.mask,l,u=>{let m={x:u.offsetX-o.x,y:u.offsetY-o.y},f=h.Clamp(m.x,m.y),b=this.layout.PointToAddress_Grid(f,!0),p=this.layout.scroll_reference_node,g=!1;this.container&&this.options.scrollbars&&(m.x<p.scrollLeft?(p.scrollLeft-=25,g=!0):m.x>p.scrollLeft+this.container.clientWidth&&(p.scrollLeft+=25,g=!0),m.y<p.scrollTop?(p.scrollTop-=25,g=!0):m.y>p.scrollTop+this.container.clientHeight&&(p.scrollTop+=25,g=!0),g&&(a=this.layout.grid_cover.getBoundingClientRect(),o.x=a.left+document.body.scrollLeft,o.y=a.top+document.body.scrollTop));let _=new v(b,s,!0);if(c&&(_=c.Clone(),_.ConsumeAddress(b),_.rows!==c.rows&&_.columns!==c.columns)){let y={rows:b.row>c.end.row?b.row-c.end.row:c.start.row-b.row,columns:b.column>c.end.column?b.column-c.end.column:c.start.column-b.column};y.rows>=y.columns?_=new v({row:_.start.row,column:c.start.column},{row:_.end.row,column:c.end.column}):_=new v({row:c.start.row,column:_.start.column},{row:c.end.row,column:_.end.column})}(n.empty||!_.Equals(n.area))&&(this.Select(n,_,void 0,!0),this.RenderSelections(),r?this.UpdateSelectedArgument(n):!n.empty&&!n.area.entire_sheet&&(n.area.entire_column?this.UpdateAddressLabel(void 0,n.area.columns+"C"):n.area.entire_row?this.UpdateAddressLabel(void 0,n.area.rows+"R"):n.area.count>1?this.UpdateAddressLabel(void 0,n.area.rows+"R x "+n.area.columns+"C"):this.UpdateAddressLabel(n)))},()=>{this.UpdateAddressLabel(),r?this.overlay_editor?.editing||this.select_argument||this.formula_bar&&this.formula_bar.FocusEditor():c&&this.RecycleNubArea(n.area,c)})}Transpose(t){let r=[],i=t.length,s=t[0].length;for(let n=0;n<s;n++){r[n]=[];for(let a=0;a<i;a++)r[n][a]=t[a][n]}return r}RecycleNubArea(t,r){if(t.Equals(r))return;let i=[];for(let u=0;u<r.rows;u++){i[u]=[];for(let m=0;m<r.columns;m++){let f={row:r.start.row+u,column:r.start.column+m};i[u][m]=this.active_sheet.CellData(f)}}if(i[0][0].area&&i[0][0].area.Equals(r)){this.ExecCommand({key:6,value:i[0][0].value,array:!0,area:t});return}if(i[0][0].table&&r.Equals(new v(i[0][0].table.area.start,i[0][0].table.area.end))){let u=i[0][0].table,m=u.sortable,f=u.totals_row,b=u.theme;this.ExecCommand([{key:29,table:u},{key:28,area:t,sortable:m,totals:f,theme:b}]);return}let s=[],n=[],a=r.columns,o=t.rows,l=!1,c=!1;t.columns===r.columns?l=t.start.row<r.start.row:(a=r.rows,o=t.columns,l=t.start.column<r.start.column,i=this.Transpose(i),c=!0);for(let u=0;u<o;u++)s[u]=[],n[u]=[];for(let u=0;u<a;u++){let m=0;if(i.length>1){m=1;let f=[],b=[];for(let p=0;p<i.length;p++){let g=i[p][u];g.ValueIsNumber()&&(b.push(p),f.push(g.value))}if(f.length>1){let p=f.slice(1).map((g,_)=>g-f[_]);p.every(g=>g===p[0])&&(m=p[0])}f.length&&(m+=f[f.length-1]-f[0])}for(let f=0;f<i.length;f++){let b,p=i[f][u];if(p.ValueIsFormula()){let A=this.parser.Parse(p.value);A.expression&&A.full_reference_list?.length&&(b=A.expression)}let g=0,_=f,y=i.length,x=0,w=m;l&&(_=o-i.length+f,y=-i.length,w=-m);for(let A=_;A>=0&&A<o;A+=y,g+=y,x+=w){if(b)s[A][u]="="+this.parser.Render(b,{offset:{rows:g,columns:0}});else{let S=i[f][u];S.ValueIsNumber()?s[A][u]=S.value+x:s[A][u]=S.value}n[A][u]=i[f][u].style||{}}}}let h=[{key:6,value:c?this.Transpose(s):s,array:!1,area:t}];c&&(n=this.Transpose(n));for(let u=0;u<n.length;u++)for(let m=0;m<n[u].length;m++)h.push({key:7,area:{row:u+t.start.row,column:m+t.start.column},style:n[u][m],delta:!1});this.ExecCommand(h)}UpdateSelectedArgument(t){let r=this.active_sheet.CellData(t.area.start),i=new v(r.merge_area?r.merge_area.start:t.target),s=this.model.named_ranges.MatchSelection(t.area,i);if(!s&&(s=t.area.spreadsheet_label,r.merge_area&&r.merge_area.Equals(t.area)&&(s=v.CellAddressToLabel(r.merge_area.start)),this.active_sheet.id!==this.editing_cell.sheet_id)){let n=this.active_sheet.name;lt.test(n)?s=`'${n}'!${s}`:s=`${n}!${s}`}this.overlay_editor?.editing&&this.overlay_editor.selecting?this.overlay_editor.InsertReference(s,0):this.formula_bar&&this.formula_bar.selecting?this.formula_bar.InsertReference(s,0):this.select_argument&&this.grid_events.Publish({type:"alternate-selection",selection:this.active_selection})}SelectingArgument(){return this.overlay_editor?.editing&&this.overlay_editor?.selecting||this.formula_bar&&this.formula_bar.selecting||this.select_argument}OverlayKeyDown(t){let r=!1;if(this.overlay_editor&&this.overlay_editor.editing)switch(r=!0,this.overlay_editor.HandleKeyDown(t)){case 1:return;case 3:this.editing_state=0,this.DismissEditor(),this.DelayedRender();return;case 2:if(this.active_sheet.id!==this.editing_cell.sheet_id&&this.editing_cell.sheet_id&&this.ActivateSheetID(this.editing_cell.sheet_id),this.editing_state=0,this.overlay_editor?.selection){let c=this.overlay_editor?.edit_node.textContent||void 0,h=t.key==="Enter"&&t.ctrlKey&&t.shiftKey;this.SetInferredType(this.overlay_editor.selection,c,h)}this.DismissEditor(),this.options.repaint_on_cell_change&&this.DelayedRender(!1,this.overlay_editor?.selection.area||void 0);break}let i=this.SelectingArgument();if(this.formula_bar&&this.formula_bar.focused&&!i||this.selected_annotation&&!i)return;let s=i?this.active_selection:this.primary_selection,n={rows:0,columns:0},a=!1,o=!1;if(t.ctrlKey||q.is_mac&&t.metaKey){switch(t.key){case"ArrowDown":case"Down":n.rows++;break;case"ArrowUp":case"Up":n.rows--;break;case"ArrowLeft":case"Left":n.columns--;break;case"ArrowRight":case"Right":n.columns++;break;case"Delete":case"Del":{t.stopPropagation(),t.preventDefault();for(let l=0;l<this.model.sheets.length;l++)if(this.model.sheets.list[l]===this.active_sheet){this.DeleteSheet(l);break}return}break;case"/":t.stopPropagation(),t.preventDefault(),this.SelectArrayOrTable();break;default:if(t.shiftKey)return}if(n.columns||n.rows)if(t.stopPropagation(),t.preventDefault(),!s.empty&&(n.columns||n.rows)){if(this.BlockSelection(s,!!t.shiftKey,n.columns,n.rows))return}else return;else{let l={},c=this.primary_selection.empty?{}:this.active_sheet.CellData(this.primary_selection.target).style||{};switch(t.key.toLowerCase()){case"b":l.bold=!c.bold;break;case"i":l.italic=!c.italic;break;case"u":l.underline=!c.underline;break;case"a":this.SelectAll();break;case"0":if(!t.altKey)return;this.ClearSelection(this.primary_selection),this.RenderSelections();break;default:t.key;return}Object.keys(l).length&&this.ApplyStyle(void 0,l)}}else switch(t.key){case"Tab":t.shiftKey?n.columns--:n.columns++,a=!0;break;case"Enter":t.shiftKey?n.rows--:n.rows++,a=!0;break;case"ArrowDown":case"Down":n.rows++,o=t.shiftKey;break;case"ArrowUp":case"Up":n.rows--,o=t.shiftKey;break;case"ArrowLeft":case"Left":n.columns--,o=t.shiftKey;break;case"ArrowRight":case"Right":n.columns++,o=t.shiftKey;break;case"Delete":case"Del":s.empty||this.DeleteSelection(s);break;case"PageUp":case"PageDown":if(t.shiftKey){this.NextSheet(t.key==="PageUp"?-1:1);break}return;case"Control":case"Shift":case"Alt":return;default:s.empty||this.OverlayEditCell(s,!0,t);return}t.stopPropagation(),t.preventDefault(),(n.rows||n.columns)&&this.AdvanceSelection(n,s,a,o,!r)}SelectArrayOrTable(){if(this.primary_selection.empty)return;let t=this.active_sheet.CellData(this.primary_selection.target);if(!(!t||!t.area&&!t.table)){if(t.area&&this.Select(this.primary_selection,t.area,t.area.start),t.table){let r=new v(t.table.area.start,t.table.area.end);this.Select(this.primary_selection,r,r.start)}this.RenderSelections()}}RenderSelections(t=!0){let r=this.hide_selection?!1:!this.editing_state||this.editing_cell.sheet_id===this.active_sheet.id;this.selection_renderer?.RenderSelections(r,t)}BlockSelection(t,r,i,s,n=!0){if(t.empty)return!1;let a={...t.target};s>0?a.row=Math.max(a.row,t.area.end.row):s<0&&(a.row=Math.min(a.row,t.area.start.row)),i>0?a.column=Math.max(a.column,t.area.end.column):i<0&&(a.column=Math.min(a.column,t.area.start.column));let o=this.active_sheet.cells,l=o.GetCell(t.target,!1);if(!l||l.type===0&&!l.area)return!1;let c={...a};for(;;){let h={row:c.row+s,column:c.column+i};if(h.column<0||h.row<0||h.column>=this.active_sheet.columns||h.row>=this.active_sheet.rows)break;let u=!1;if(s)for(let m=t.area.start.column;!u&&m<=t.area.end.column;m++)l=o.GetCell({row:h.row,column:m},!1),u=u||!!l&&(l.type!==0||!!l.area),!u&&l&&l.merge_area&&(l=o.GetCell(l.merge_area.start,!1),u=u||!!l&&(l.type!==0||!!l.area));else for(let m=t.area.start.row;!u&&m<=t.area.end.row;m++)l=o.GetCell({row:m,column:h.column},!1),u=u||!!l&&(l.type!==0||!!l.area),!u&&l&&l.merge_area&&(l=o.GetCell(l.merge_area.start,!1),u=u||!!l&&(l.type!==0||!!l.area));if(!u)break;c=h}if(r){s?(a.row=t.target.row,a.column=t.area.start.column,c.column=t.area.end.column):(a.column=t.target.column,a.row=t.area.start.row,c.row=t.area.end.row);let h=new v(a,c,!0);this.Select(t,h,t.target,!0)}else this.Select(t,new v(c));return this.ScrollIntoView(c),this.SelectingArgument()&&this.UpdateSelectedArgument(t),n&&this.DelayedRender(),!0}DeleteSelection(t){if(t.empty)return;let r=this.active_sheet.RealArea(t.area);this.ExecCommand({key:11,area:r})}SetInferredType(t,r,i=!1,s=!0){let n=t.target||t.area.start,a=this.active_sheet.CellData(n);if(a.area){if(!i&&a.area.count>1||!t.area||!t.area.Equals(a.area)){this.Error(2);return}}else if(i){let u=!1;if(this.active_sheet.cells.Apply(t.area,m=>{m.area&&(u=!0)},!1),u){this.Error(2);return}}if(a.validation&&a.validation.error){let u;if(a.validation.type===0?u=a.validation.list:a.validation.type===2&&(u=this.GetValidationRange(a.validation.area)),u&&u.length){let m=!1;if(r){let f=r.toUpperCase();for(let b of u)if(b&&b.toString().toUpperCase()===f){r=b.toString(),m=!0;break}}if(!m){this.Error(3);return}}}a.merge_area&&(n=a.merge_area.start);let o=typeof r=="string"&&r.trim()[0]==="=",l=[];if(o&&(r=this.FixFormula(r||""),!this.active_sheet.HasCellStyle(n))){let u=this.parser.Parse(r);if(u){if(u.expression?.type==="call"&&(!a.style||!a.style.number_format||M.Equals(a.style.number_format,"General"))){let m=u.expression.name.toLowerCase(),f;switch(m){case"today":f="Short Date";break;case"now":f="Timestamp";break}f&&l.push({key:7,area:i?t.area:n,style:{number_format:f},delta:!0})}if(u.dependencies){let m=u.dependencies;for(let f of Object.keys(m.addresses)){let b=m.addresses[f];if(this.active_sheet.HasCellStyle({...b})){let p=this.active_sheet.CellData({...b});if(p.style&&p.style.number_format){let g={number_format:p.style.number_format};l.push({key:7,area:i?t.area:n,style:g,delta:!0})}break}}}}}let c=this.parser.Parse(r||"").expression;c?.type==="group"&&c.elements.length===1&&c.elements[0].type==="complex"&&(c=c.elements[0]);let h=c&&c.type==="complex"?{type:7,value:{real:c.real,imaginary:c.imaginary}}:be.TryParse(r);if(!o&&h.type===3){let u="",m=h.hints||0;(!a.style||!a.style.number_format||M.Equals(a.style.number_format,"General"))&&(m&64?u="Short Date":m&2?u="Exponential":m&4?u="Percent":m&8?u="Currency":(m&16||m&32)&&(u="Accounting")),u&&l.push({key:7,area:i?t.area:n,style:{number_format:u},delta:!0})}if(l.push({key:6,area:i?t.area:n,array:i,value:o?this.UntranslateFunction(r||""):h.value}),s)this.ExecCommand(l);else return l}FixFormula(t){if(t.trim()[0]!=="=")return t;t=t.replace(/^\s+/,"");let r=!1,i=!1,s=0,n=!1,a=t.length;for(let o=0;o<a;o++){let l=t[o];if(!n)switch(l){case'"':r?t[o+1]==='"'?o++:r=!1:i||(r=!0);break;case"'":i?i=!1:r||(i=!0);break;case"\\":n=!0;break;case"(":!r&&!i&&s++;break;case")":!r&&!i&&s--;break}}for(r?t+='"':i&&(t+="'");s>0;)t+=")",s--;return t=this.NormalizeFormula(t),t}NormalizeFormula(t){let r=this.parser.Parse(t);return r.error&&console.warn(r.error),r&&r.expression&&(this.parser.Walk(r.expression,i=>{switch(i.type){case"call":i.name=this.autocomplete_matcher.NormalizeIdentifier(i.name)||i.name;break;case"identifier":this.model.named_ranges.Get(i.name)&&(i.name=i.name.toUpperCase());break}return!0}),t="="+this.parser.Render(r.expression,{missing:""})),t}DismissEditor(){this.overlay_editor?.active_cell&&(this.overlay_editor.active_cell.editing=!1,this.overlay_editor.active_cell.render_clean=[],this.DelayedRender(void 0,this.overlay_editor.selection.area)),this.editing_state=0,this.Focus(),this.overlay_editor?.CloseEditor(),this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection)}NormalizeCellValue(t){let r=t.value;if(t.ValueIsNumber()&&t.style&&t.style.number_format)if(M.Get(t.style.number_format).date_format){let s=Pe(t.value),n=s.getUTCHours()||s.getUTCMinutes()||s.getUTCSeconds()?"Timestamp":"Short Date";r=M.Get(n).Format(r)}else if(/(?:%|percent)/i.test(t.style.number_format)){let s=0,n=t.value.toString().match(/\.(.*?)$/);n&&n[1]&&(s=Math.max(0,n[1].length-2)),r=(t.value*100).toFixed(s)+"%",R.decimal_separator===","&&(r=r.replace(/\./,","))}else r&&R.decimal_separator===","&&(r=t.value.toString().replace(/\./,","));else{if(t.ValueIsBoolean())return t.value.toString().toUpperCase();t.ValueIsNumber()?r&&R.decimal_separator===","&&(r=t.value.toString().replace(/\./,",")):t.ValueIsComplex()?(t.value.imaginary?t.value.real?r=`${t.value.real.toString()}${t.value.imaginary<0?" - ":" + "}${t.value.imaginary===1||t.value.imaginary===-1?"":Math.abs(t.value.imaginary).toString()}i`:t.value.imaginary===1?r="i":t.value.imaginary===-1?r="-i":r=t.value.imaginary.toString()+"i":r=t.value.real.toString(),R.decimal_separator===","&&(r=r.replace(/\./,","))):t.ValueIsFormula()&&(r=this.TranslateFunction(t.value))}return r}IsNumeric(t){return t>=48&&t<=57||t===this.decimal_separator_code||t===45||t===43}OverlayEditCell(t,r=!0,i){if(!this.options.in_cell_editor)return;let s=t.target||t.area.start,n=this.active_sheet.CellData(s),a;if(this.HideHoverInfo(),n.merge_area?(a=this.layout.OffsetCellAddressToRectangle(n.merge_area.start).Combine(this.layout.OffsetCellAddressToRectangle(n.merge_area.end)),s=n.merge_area.start,n=this.active_sheet.CellData(s)):a=this.layout.OffsetCellAddressToRectangle(s),n.style?.locked){console.info("cell is locked for editing");return}a=a.Shift(this.layout.header_size.width,this.layout.header_size.height);let o=n.value;r?(n.type===3||n.rendered_type===3)&&n.style&&n.style.number_format&&/(?:%|percent)/i.test(n.style.number_format)&&(!i||this.IsNumeric(i.key.charCodeAt(0)))?o="%":o=void 0:o=this.NormalizeCellValue(n),this.overlay_editor?.Edit(t,a.Expand(-1,-1),n,o,i),n.editing=!0,n.render_clean=[],this.DelayedRender(!1,t.area)}BoundAddressArea(t,r){t.column>r.end.column?(t.row=this.StepVisibleRows(t.row,1),t.row>r.end.row&&(t.row=r.start.row),t.column=r.start.column):t.column<r.start.column?(t.row=this.StepVisibleRows(t.row,-1),t.row<r.start.row&&(t.row=r.end.row),t.column=r.end.column):t.row>r.end.row?(t.column=this.StepVisibleColumns(t.column,1),t.column>r.end.column&&(t.column=r.start.column),t.row=r.start.row):t.row<r.start.row&&(t.column=this.StepVisibleColumns(t.column,-1),t.column<r.start.column&&(t.column=r.end.column),t.row=r.end.row)}StepVisibleRows(t,r){if(r>0)for(let i=0;i<r;i++)this.layout.RowHeight(++t)||i--;else if(r<0)for(let i=0;i>r;i--)--t>=0&&!this.layout.RowHeight(t)&&i++;return t}StepVisibleColumns(t,r){if(r>0)for(let i=0;i<r;i++)this.layout.ColumnWidth(++t)||i--;else if(r<0)for(let i=0;i>r;i--)--t>=0&&!this.layout.ColumnWidth(t)&&i++;return t}EnsureAddress(t,r=8){let i=!1;if(this.options.expand){if(t.row!==1/0&&t.row>=this.active_sheet.rows){let s=this.active_sheet.rows;for(;t.row>=s;)s+=r;this.active_sheet.cells.EnsureRow(s),i=!0}if(t.column!==1/0&&t.column>=this.active_sheet.columns){let s=this.active_sheet.columns;for(;t.column>=s;)s+=r;this.active_sheet.cells.EnsureColumn(s),i=!0}i&&(this.layout.UpdateTiles(),this.layout.UpdateContentsSize(),this.Repaint(!0,!0))}return i}AdvanceSelection(t,r,i=!1,s=!1,n=!0){let a=this.SelectingArgument();if(r.empty)if(a){let o={row:Math.max(0,this.StepVisibleRows(this.primary_selection.target.row,t.rows)),column:Math.max(0,this.StepVisibleColumns(this.primary_selection.target.column,t.columns))};this.Select(r,new v(o))}else this.Select(r,new v({row:0,column:0}));else{let o=this.active_sheet.CellData(r.target);if(o.merge_area&&i&&(i=!o.merge_area.Equals(r.area)),i&&r.area.count>1){let l=this.active_sheet.RealArea(r.area),c=r.target;for(;;){c.row=this.StepVisibleRows(c.row,t.rows),c.column=this.StepVisibleColumns(c.column,t.columns),this.BoundAddressArea(c,l);let h=this.active_sheet.CellData(c);if(!h.merge_area||h.merge_area.start.row===c.row&&h.merge_area.start.column===c.column)break}this.Select(r,l,c)}else if(s&&r&&r.target){let l=r.area,c=r.target,h=l.start,u=l.end,m={row:1/0,column:1/0};if(t.columns&&(l.columns===1?t.columns>0?(u.column=this.StepVisibleColumns(u.column,1),m.column=u.column):(h.column=this.StepVisibleColumns(h.column,-1),m.column=h.column):l.end.column>c.column?(u.column=this.StepVisibleColumns(u.column,t.columns),m.column=u.column):l.start.column<c.column&&(h.column=this.StepVisibleColumns(h.column,t.columns),m.column=h.column),u.column=Math.max(0,u.column),h.column=Math.max(0,h.column)),t.rows&&(l.rows===1?t.rows>0?(u.row=this.StepVisibleRows(u.row,1),m.row=u.row):(h.row=this.StepVisibleRows(h.row,-1),m.row=h.row):l.end.row>c.row?(u.row=this.StepVisibleRows(u.row,t.rows),m.row=u.row):l.start.row<c.row&&(h.row=this.StepVisibleRows(h.row,t.rows),m.row=h.row),u.row=Math.max(0,u.row),h.row=Math.max(0,h.row)),this.options.expand){for(let f of[h,u,m])f.row!==1/0&&(f.row=Math.max(0,f.row)),f.column!==1/0&&(f.column=Math.max(0,f.column));this.EnsureAddress(u)&&(n=!0),this.ScrollIntoView(m),this.Select(r,new v(h,u),void 0,!0)}else{for(let f of[h,u,m])f.row!==1/0&&(f.row=Math.max(0,Math.min(f.row,this.active_sheet.rows-1))),f.column!==1/0&&(f.column=Math.max(0,Math.min(f.column,this.active_sheet.columns-1)));this.ScrollIntoView(m),this.Select(r,new v(h,u),void 0,!0)}}else{let l=r.target;o.merge_area?(t.columns<0?l.column=this.StepVisibleColumns(o.merge_area.start.column,-1):t.columns>0&&(l.column=this.StepVisibleColumns(o.merge_area.end.column,1)),t.rows<0?l.row=this.StepVisibleRows(o.merge_area.start.row,-1):t.rows>0&&(l.row=this.StepVisibleRows(o.merge_area.end.row,1))):(l.row=this.StepVisibleRows(l.row,t.rows),l.column=this.StepVisibleColumns(l.column,t.columns)),this.EnsureAddress(l)&&(n=!0),this.Select(r,new v({row:Math.min(Math.max(0,l.row),this.active_sheet.rows-1),column:Math.min(Math.max(0,l.column),this.active_sheet.columns-1)})),this.RenderSelections(),this.ScrollIntoView(r.target)}}this.SelectingArgument()&&this.UpdateSelectedArgument(r),n&&this.DelayedRender()}HighlightDependencies(t,r=!0){let i=0;e:for(let s of t)if((s.start.row===1/0||s.start.row<this.active_sheet.rows)&&(s.start.column===1/0||s.start.column<this.active_sheet.columns)){s=this.active_sheet.RealArea(s);let n=s.spreadsheet_label;if(this.additional_selections[i]&&this.additional_selections[i].area.spreadsheet_label===n)i++;else{for(let a=0;a<i;a++)if(this.additional_selections[a].area.spreadsheet_label===n&&this.additional_selections[a].area.start.sheet_id===s.start.sheet_id)continue e;this.additional_selections[i++]={target:s.start,area:s}}}this.additional_selections.splice(i),r&&this.RenderSelections(!1)}ClearAdditionalSelections(){this.additional_selections.splice(0,this.additional_selections.length)}ClearSelection(t){this.Select(t)}HideGridSelection(){this.UpdateAddressLabel(void 0,"");let t=this.selected_annotation&&this.selected_annotation.data.formula?this.selected_annotation.data.formula:"";this.UpdateFormulaBarFormula(t),this.layout.ShowSelections(!1)}ShowGridSelection(){this.UpdateAddressLabel(),this.UpdateFormulaBarFormula(),this.layout.ShowSelections(!0)}Select(t,r,i,s=!1){if(t.empty||s&&(i=t.target),r){let n=this.active_sheet.RealArea(r);i||(i=n.start);let a=!0;for(;a;)a=!1,this.active_sheet.cells.Apply(n,c=>{c.merge_area&&!n.ContainsArea(c.merge_area)&&(r.ConsumeArea(c.merge_area),n=this.active_sheet.RealArea(r),a=!0)});t.area=new v({...r.start,sheet_id:this.active_sheet.id},r.end),i&&(t.target={...i,sheet_id:this.active_sheet.id}),t.empty=!1;let o=this.active_sheet.CellData(t.target),l="";o.formatted&&(typeof o.formatted=="string"?l=o.formatted:l=o.formatted.map(c=>c.flag===1||c.flag===6?"":c.text).join("")),this.overlay_editor?.UpdateCaption(l)}else t.empty=!0;t===this.primary_selection&&(q.is_edge&&this.Focus(),this.grid_events.Publish({type:"selection",selection:this.primary_selection}),this.UpdateAddressLabel(),this.UpdateFormulaBarFormula(),this.formula_bar&&(this.formula_bar.target_address={...this.primary_selection.target}),this.options.stats&&this.UpdateStats())}UpdateFormulaBarFormula(t){if(this.formula_bar){if(t){this.formula_bar.formula=t;return}if(this.primary_selection.empty)this.formula_bar.formula="";else{let r=this.active_sheet.CellData(this.primary_selection.target),i=r.merge_area||r.area;i&&(i.start.column!==this.primary_selection.target.column||i.start.row!==this.primary_selection.target.row)&&(r=this.active_sheet.CellData(i.start)),this.formula_bar.editable=!r.style?.locked;let s=this.NormalizeCellValue(r);if(r.validation&&!r.style?.locked){let n;r.validation.type===0?n=r.validation.list:r.validation.type===2&&(n=this.GetValidationRange(r.validation.area)),n&&n.length&&this.layout.ShowDropdownCaret(r.merge_area||new v(this.primary_selection.target),n,r.value)}else this.layout.HideDropdownCaret();r.area?this.formula_bar.formula="{"+(s||"")+"}":this.formula_bar.formula=typeof s<"u"?s.toString():""}}}RenderStats(t){if(!Array.isArray(t))return[];let r=0,i=0,s={real:0,imaginary:0};for(let n of t)for(let a of n)typeof a=="number"?(s.real+=a,i++):ye(a)&&(s.real+=a.real,s.imaginary+=a.imaginary,i++),typeof a<"u"&&r++;if(r>1)if(i>0){let n=M.Get("General");if(s.imaginary){let a={real:s.real/i,imaginary:s.imaginary/i};return[{label:"Count",value:r.toString()},{label:"Sum",value:Y.FormatPartsAsText(n.FormatComplex(s))},{label:"Average",value:Y.FormatPartsAsText(n.FormatComplex(a))}]}else return[{label:"Count",value:r.toString()},{label:"Sum",value:n.Format(s.real)},{label:"Average",value:n.Format(s.real/i)}]}else return[{label:"Count",value:r.toString()}];return[]}UpdateStats(){if(this.tab_bar){let t=[];typeof this.options.stats=="function"?this.primary_selection.empty||(t=this.options.stats.call(void 0,this.GetRange(this.primary_selection.area))):!this.primary_selection.empty&&this.primary_selection.area.count>1&&(t=this.RenderStats(this.GetRange(this.primary_selection.area))),this.tab_bar.stats_data=t}}UpdateAddressLabel(t=this.primary_selection,r){if(this.formula_bar)if(typeof r<"u")this.formula_bar.label=r;else if(t.empty)this.formula_bar.label="";else{let i=this.active_sheet.CellData(this.primary_selection.target),s=new v(i.merge_area?i.merge_area.start:t.target);this.formula_bar.label=this.model.named_ranges.MatchSelection(t.area,s)||v.CellAddressToLabel(s.start)}}OnDropdownSelect(t){if(typeof t<"u"){let s=be.TryParse(t.toString());s.type===3&&(t=s.value)}let r=this.active_sheet.CellData(this.primary_selection.target),i=r.merge_area?r.merge_area.start:this.primary_selection.target;this.ExecCommand({key:6,area:i,value:t}),this.UpdateFormulaBarFormula()}OnScroll(){let t=this.layout.VisibleTiles();t.Equals(this.render_tiles)||(this.render_tiles=t,this.layout_token||(this.layout_token=requestAnimationFrame(()=>this.Repaint())))}AttachListeners(){if(!this.container)throw new Error("invalid container");this.container.addEventListener("copy",this.HandleCopy.bind(this)),this.container.addEventListener("cut",this.HandleCut.bind(this)),this.container.addEventListener("paste",this.HandlePaste.bind(this)),this.layout.grid_cover.addEventListener("mousedown",t=>this.MouseDown_Grid(t)),this.layout.column_header_cover.addEventListener("mousedown",t=>this.MouseDown_ColumnHeader(t)),this.layout.row_header_cover.addEventListener("mousedown",t=>this.MouseDown_RowHeader(t)),this.layout.column_header_cover.addEventListener("mousemove",t=>this.MouseMove_ColumnHeader(t)),this.layout.row_header_cover.addEventListener("mousemove",t=>this.MouseMove_RowHeader(t)),this.layout.grid_cover.addEventListener("mousemove",t=>this.MouseMove_Grid(t)),this.overlay_editor?.edit_node.addEventListener("keydown",t=>this.OverlayKeyDown(t)),this.layout.corner.addEventListener("dblclick",()=>{this.SelectAll()}),window.addEventListener("resize",()=>{this.layout.UpdateDPR()&&(this.QueueLayoutUpdate(),this.Repaint(!0,!0,!0))})}HandleCopy(t){if(t.stopPropagation(),t.preventDefault(),this.primary_selection.empty){if(t.clipboardData&&t.clipboardData.clearData(),this.selected_annotation&&t.clipboardData){let r=JSON.stringify({data:this.selected_annotation,source:this.active_sheet.id});t.clipboardData.setData("text/x-treb-annotation",r);let i=this.selected_annotation.view[this.view_index];if(i&&i.node){let s=i.node.firstChild;if(s){let n=li(s).outerHTML,a="text/plain";t.clipboardData.setData(a,n)}}}}else{let r=this.active_sheet.RealArea(this.primary_selection.area),i=r.columns,s=r.rows,n=[],a=[];for(let l=0;l<s;l++){let c=[];for(let h=0;h<i;h++){let u={row:r.start.row+l,column:r.start.column+h},m=this.active_sheet.CellData(u),f="";m.calculated?m.calculated_type===7?f=Ze(m.calculated):f=m.calculated.toString():m.type===7?f=Ze(m.value):f=m.value?.toString()||"",c.push(f);let b={address:u,data:m.value,type:m.type,style:this.active_sheet.GetCopyStyle(u)};m.area&&m.area.start.row===u.row&&m.area.start.column===u.column&&(b.array={rows:m.area.rows,columns:m.area.columns}),a.push(JSON.parse(JSON.stringify(b)))}n.push(c)}let o=n.map(l=>l.join(" ")).join(`
9
- `);t.clipboardData&&(t.clipboardData.clearData(),t.clipboardData.setData("text/plain",o),t.clipboardData.setData("text/x-treb",JSON.stringify({source:r,data:a})))}}HandleCut(t){if(t.stopPropagation(),t.preventDefault(),this.HandleCopy(t),this.primary_selection.empty)this.selected_annotation&&this.RemoveAnnotation(this.selected_annotation);else{let r=this.active_sheet.RealArea(this.primary_selection.area);this.ExecCommand({key:11,area:r})}}RecyclePasteAreas(t,r){let i=[];if(t.count===1)for(let s=r.start.row;s<=r.end.row;s++)for(let n=r.start.column;n<=r.end.column;n++)i.push(new v({row:s,column:n}));else if(t.columns===r.columns&&r.rows>=t.rows&&r.rows%t.rows===0)for(let s=r.start.row;s<=r.end.row;s+=t.rows)i.push(new v({row:s,column:r.start.column},{row:s+t.rows-1,column:r.end.column}));else if(t.rows===r.rows&&r.columns>=t.columns&&r.columns%t.columns===0)for(let s=r.start.column;s<=r.end.column;s+=t.columns)i.push(new v({column:s,row:r.start.row},{column:s+t.columns-1,row:r.end.row}));else i.push(r.Clone().Resize(t.rows,t.columns));return i}HandlePaste(t){if(this.overlay_editor?.editing||(t.stopPropagation(),t.preventDefault(),!t.clipboardData))return;let r=t.clipboardData.getData("text/x-treb-annotation");if(r){try{let a=JSON.parse(r);if(a.source&&a.source!==this.active_sheet.id&&a.data&&a.data.formula){let c="",h=this.model.sheets.Find(a.source);if(h&&(c=h.name),c){let u=this.parser.Parse(a.data.formula);u.expression&&(this.parser.Walk(u.expression,m=>m.type==="range"?(!m.start.sheet_id&&!m.start.sheet&&(m.start.sheet=c),!1):(m.type==="address"&&!m.sheet_id&&!m.sheet&&(m.sheet=c),!0)),a.data.formula="="+this.parser.Render(u.expression,{missing:""}))}}let l=this.CreateAnnotation(a.data,!0,!0).view[this.view_index];if(l&&l.node){let c=l.node;setTimeout(()=>{c.focus()},1)}}catch(a){console.error(a)}return}if(this.primary_selection.empty)return;let i=this.active_sheet.RealArea(this.primary_selection.area),s=[],n=t.clipboardData.getData("text/x-treb");if(n)try{let a=JSON.parse(n),o=new v(a.source.start,a.source.end),l=this.RecyclePasteAreas(o,i);if(l.length===1&&i.Resize(l[0].rows,l[0].columns),!this.ValidatePasteAreas(l)){this.Error(5);return}let c=[];for(let h of l){this.active_sheet.cells.EnsureCell(h.end),s.push({key:11,area:h});let u={rows:h.start.row-o.start.row,columns:h.start.column-o.start.column};a.data.forEach(m=>{let f=m.data,b={row:m.address.row-o.start.row+h.start.row,column:m.address.column-o.start.column+h.start.column};if(m.type===1){let p=this.parser.Parse(f);p.expression&&(f="="+this.parser.Render(p.expression,{offset:u,missing:""}))}if(m.array){let p={start:{...b},end:{row:b.row+m.array.rows-1,column:b.column+m.array.columns-1}},g={key:6,value:f,array:!0,area:p};c.push(new v(p.start,p.end)),s.push(g)}else{let p=!1;for(let g of c)if(g.Contains(b)){p=!0;break}p||s.push({key:6,value:f,area:b})}s.push({key:7,style:m.style||{},area:b})})}}catch(a){console.error("invalid treb data on clipboard"),console.info(a);return}else{let a=t.clipboardData.getData("text/plain");if(!a)return!0;let l=a.trim().split(`
10
- `).map(h=>h.split(" ").map(u=>u.trim())),c=this.RecyclePasteAreas(new v({row:0,column:0},{row:l.length-1,column:l[0].length-1}),i);if(c.length===1&&(i.Resize(l.length,l[0].length),i.Resize(c[0].rows,c[0].columns)),!this.ValidatePasteAreas(c)){this.Error(5);return}for(let h of c)for(let u=0;u<l.length;u++)for(let m=0;m<l[0].length;m++){let f=new v({row:u+h.start.row,column:m+h.start.column});if(this.active_sheet.cells.EnsureCell(f.end),l[u][m]){let b=this.SetInferredType({area:f,target:f.start,empty:!1},l[u][m],!1,!1);if(b)for(let p of b)s.push(p)}else{let b=this.active_sheet.cells.GetCell(f.start,!1);b&&b.type!==0&&s.push({key:11,area:f.Clone()})}}}this.ExecCommand(s),this.Select(this.primary_selection,i)}AllSelections(t=!1){let r=[this.primary_selection,this.active_selection].concat(this.additional_selections);return t?r:r.filter(i=>!i.empty)}InsertRowsInternal(t){let r=super.InsertRowsInternal(t);if(r.error)return r;let i=this.FindSheet(t.sheet_id);if(i===this.active_sheet){if(t.count<0)for(let s of this.AllSelections())s.empty=!0;else for(let s of this.AllSelections())s.target.row>=t.before_row&&(s.target.row+=t.count),s.area.entire_column||(s.area.start.row>=t.before_row?s.area.Shift(t.count,0):s.area.end.row>=t.before_row&&s.area.ConsumeAddress({row:s.area.end.row+t.count,column:s.area.end.column}));for(let s of r.delete_annotations_list||[])this.layout.RemoveAnnotation(s);if(this.QueueLayoutUpdate(),this.Repaint(),r.update_annotations_list?.length){this.layout.UpdateAnnotation(r.update_annotations_list);for(let s of r.resize_annotations_list||[]){let n=s.view[this.view_index];n?.resize_callback&&n.resize_callback.call(void 0)}}}else this.pending_layout_update.add(i.id);return r}InsertColumnsInternal(t){let r=super.InsertColumnsInternal(t);if(r.error)return r;let i=this.FindSheet(t.sheet_id);if(i===this.active_sheet){if(t.count<0)for(let s of this.AllSelections())s.empty=!0;else for(let s of this.AllSelections())s.target.column>=t.before_column&&(s.target.column+=t.count),s.area.entire_row||(s.area.start.column>=t.before_column?s.area.Shift(0,t.count):s.area.end.column>=t.before_column&&s.area.ConsumeAddress({row:s.area.end.row,column:s.area.end.column+t.count}));for(let s of r.delete_annotations_list||[])this.layout.RemoveAnnotation(s);if(this.tile_renderer?.FlushOverflows(),this.QueueLayoutUpdate(),this.DelayedRender(!0,void 0,!0),r.update_annotations_list?.length){this.layout.UpdateAnnotation(r.update_annotations_list);for(let s of r.resize_annotations_list||[]){let n=s.view[this.view_index];n?.resize_callback&&n.resize_callback.call(void 0)}}}else this.pending_layout_update.add(i.id);return r}ResetInternal(){super.ResetInternal(),this.RemoveAnnotationNodes(),this.ClearSelection(this.primary_selection),this.ScrollIntoView({row:0,column:0}),this.QueueLayoutUpdate(),this.layout.HideNote()}ResizeColumnsInternal(t){let r=t.sheet_id?this.FindSheet(t.sheet_id):this.active_sheet,i=t.column;if(typeof i>"u"){i=[];for(let a=0;a<r.columns;a++)i.push(a)}typeof i=="number"&&(i=[i]);let s=typeof t.width!="number",n=Math.round(t.width||0/this.scale);if(s)for(let a of i)this.AutoSizeColumn(r,a,!1);else for(let a of i)r.SetColumnWidth(a,n);r===this.active_sheet?(this.layout.UpdateTotalSize(),this.layout.container&&this.layout.container.offsetWidth&&this.layout.container.offsetWidth>this.layout.total_width?this.UpdateLayout():(this.layout.UpdateTileWidths(!0),this.render_tiles=this.layout.VisibleTiles(),this.Repaint(!1,!0)),this.layout.UpdateAnnotation(this.active_sheet.annotations),this.RenderSelections()):this.pending_layout_update.add(r.id)}ResizeRowsInternal(t){let r,i=t.sheet_id?this.FindSheet(t.sheet_id):this.active_sheet,s=t.row;if(typeof s>"u"){s=[];for(let l=0;l<i.rows;l++)s.push(l)}typeof s=="number"&&(s=[s]);let n=typeof t.shrink=="boolean"?t.shrink:!0,a=typeof t.height!="number",o=Math.round(t.height||0/this.scale);if(a)for(let l of s)i.GetRowHeight(l)||(r?r.ConsumeAddress({row:l,column:1}):r=new v({row:l,column:1/0,sheet_id:i.id})),i.AutoSizeRow(l,this.theme.grid_cell,n);else for(let l of s){let c=i.GetRowHeight(l);(!c&&o||c&&!o)&&(r?r.ConsumeAddress({row:l,column:1}):r=new v({row:l,column:1/0,sheet_id:i.id})),i.SetRowHeight(l,o)}return i===this.active_sheet?(this.layout.UpdateTotalSize(),this.layout.container&&this.layout.container.offsetHeight&&this.layout.container.offsetHeight>this.layout.total_height?this.UpdateLayout():(this.layout.UpdateTileHeights(!0),this.render_tiles=this.layout.VisibleTiles(),this.Repaint(!1,!0)),this.layout.UpdateAnnotation(this.active_sheet.annotations),this.RenderSelections()):this.pending_layout_update.add(i.id),r?{start:r.start,end:r.end}:void 0}SelectInternal(t){t.area?(t.area.start.sheet_id&&t.area.start.sheet_id!==this.active_sheet.id&&this.ActivateSheetInternal({key:21,id:t.area.start.sheet_id}),this.Select(this.primary_selection,new v(t.area.start,t.area.end)),this.RenderSelections()):this.ClearSelection(this.primary_selection)}FreezeInternal(t){let r=this.FindSheet(t.sheet_id||this.active_sheet.id),i=(typeof t.highlight_transition=="boolean"?t.highlight_transition:!0)&&r===this.active_sheet;if(t.rows===r.freeze.rows&&t.columns===r.freeze.columns){i&&this.HighlightFreezeArea();return}r.freeze.rows=t.rows,r.freeze.columns=t.columns,r===this.active_sheet?(this.QueueLayoutUpdate(),this.Repaint(),i&&this.HighlightFreezeArea(),t.rows||t.columns?this.layout.CloneFrozenAnnotations():this.layout.ClearFrozenAnnotations()):this.pending_layout_update.add(r.id)}ExecCommand(t,r=!0){let i=super.ExecCommand(t,r);this.batch||i.render_area&&this.DelayedRender(!1,i.render_area),i.repaint&&this.Repaint();for(let s of i.pending||[])this.pending_layout_update.add(s);return i.layout&&this.QueueLayoutUpdate(),i.sheets&&this.tab_bar&&this.tab_bar.Update(),i.formula&&this.UpdateFormulaBarFormula(),i}};var pt=class{constructor(){this.forward={};this.backward=[]}Count(){return this.backward.length}Serialize(){return JSON.parse(JSON.stringify(this.Map()))}Deserialize(e){if(this.Reset(),e){for(let t of Object.keys(e))this.SetName(t,new v(e[t].start,e[t].end),!1);this.RebuildList()}}MatchSelection(e,t){if(!e.start.sheet_id)throw new Error("match selection without sheet id");let r;for(let i of this.List())if(i.range.start.sheet_id===e.start.sheet_id&&(i.range.Equals(e)&&(r=i.name),t?.Equals(i.range)))return i.name;return r}SetName(e,t,r=!0){let i=this.ValidateNamed(e);return i?t.entire_column||t.entire_row?(console.warn("invalid range"),!1):(this.forward[i]=t,r&&this.RebuildList(),!0):(console.warn("invalid name"),!1)}SetNames(e){for(let t of Object.keys(e)){let r=e[t];this.SetName(t,new v(r.start,r.end),!1)}this.RebuildList()}ClearName(e,t=!0){delete this.forward[e],t&&this.RebuildList()}RemoveRangesForSheet(e,t=!0){let r={},i=this.List();for(let s of i)s.range.start.sheet_id!==e&&(r[s.name]=s.range);this.forward=r,t&&this.RebuildList()}Reset(){this.forward={},this.backward=[]}Get(e){return this.forward[e.toUpperCase()]}Map(){return this.forward}List(){return this.backward}ValidateNamed(e){return e=e.trim(),!e.length||/^[A-Za-z]{1,3}\d+$/.test(e)||/[^A-Za-z\d_.]/.test(e)||/^[^A-Za-z_]/.test(e)?!1:e.toUpperCase()}PatchNamedRanges(e,t,r,i,s){let n=this.List().slice(0);for(let a of n){let o=a.name,l=a.range;if(l.start.sheet_id!==e){console.info("skipping name",o);continue}if(r&&t<=l.end.column){if(r>0)t<=l.start.column?l.Shift(0,r):t>l.start.column&&t<=l.end.column?l.ConsumeAddress({row:l.end.row,column:l.end.column+r}):console.warn("PNR X case 1",t,r,JSON.stringify(l));else if(r<0)if(t-r<=l.start.column)l.Shift(0,r);else if(t<=l.start.column&&t-r>l.end.column)this.ClearName(o,!1);else if(t<=l.start.column){let c=t-r-1;this.SetName(o,new v({row:l.start.row,column:c+1+r,sheet_id:e},{row:l.end.row,column:l.end.column+r}),!1)}else t<=l.end.column?t-r-1>=l.end.column?this.SetName(o,new v({row:l.start.row,column:l.start.column,sheet_id:e},{row:l.end.row,column:t-1}),!1):this.SetName(o,new v({row:l.start.row,column:l.start.column,sheet_id:e},{row:l.end.row,column:l.start.column+l.columns+r-1}),!1):console.warn("PNR X case 2",t,r,JSON.stringify(l))}if(s&&i<=l.end.row){if(s>0)i<=l.start.row?l.Shift(s,0):i>l.start.row&&i<=l.end.row?l.ConsumeAddress({row:l.end.row+s,column:l.end.column}):console.warn("PNR X case 3",i,s,JSON.stringify(l));else if(s<0)if(i-s<=l.start.row)l.Shift(s,0);else if(i<=l.start.row&&i-s>l.end.row)this.ClearName(o,!1);else if(i<=l.start.row){let c=i-s-1;this.SetName(o,new v({column:l.start.column,row:c+1+s,sheet_id:e},{column:l.end.column,row:l.end.row+s}),!1)}else i<=l.end.row?i-s-1>=l.end.row?this.SetName(o,new v({column:l.start.column,row:l.start.row,sheet_id:e},{column:l.end.column,row:i-1}),!1):this.SetName(o,new v({column:l.start.column,row:l.start.row,sheet_id:e},{column:l.end.column,row:l.start.row+l.rows+s-1}),!1):console.warn("PNR X case 4",i,s,JSON.stringify(l))}}this.RebuildList()}RebuildList(){this.backward=[];for(let e of Object.keys(this.forward))this.backward.push({name:e,range:this.forward[e]})}};var zr=class{constructor(){this.names=new Map;this.ids=new Map;this.sheets_=[]}get list(){return this.sheets_.slice(0)}get length(){return this.sheets_.length}Assign(e){this.sheets_=[...e],this.UpdateIndexes()}Add(e){this.sheets_.push(e),this.UpdateIndexes()}Splice(e,t,...r){this.sheets_.splice(e,t,...r),this.UpdateIndexes()}Find(e){return typeof e=="string"?this.names.get(e.toLocaleUpperCase()):this.ids.get(e)}Name(e){return this.ids.get(e)?.name||void 0}ID(e){return this.names.get(e.toLocaleUpperCase())?.id||void 0}UpdateIndexes(){this.names.clear(),this.ids.clear();for(let e of this.sheets_){let t=e.name.toLocaleUpperCase();this.names.set(t,e),this.ids.set(e.id,e)}}},bt=class{constructor(){this.sheets=new zr;this.named_ranges=new pt;this.macro_functions=new Map;this.named_expressions=new Map;this.view_count=0;this.theme_style_properties=JSON.parse(JSON.stringify(k.DefaultProperties));this.tables=new Map}ResolveStructuredReference(e,t){let r;if(e.table?r=this.tables.get(e.table.toLowerCase()):t.sheet_id&&(r=this.sheets.Find(t.sheet_id)?.CellData(t)?.table),!r)return;let i=e.column.toLowerCase(),s=-1;if(r.columns){for(let n=0;n<r.columns.length;n++)if(i===r.columns[n]){s=r.area.start.column+n;break}}if(!(s<0))if(e.scope==="row"){let n=t.row;return n<r.area.start.row||n>r.area.end.row?void 0:{label:e.label,type:"address",row:n,column:s,sheet_id:r.area.start.sheet_id,id:e.id,position:e.position}}else{let n=r.area.start.row,a=r.area.end.row;return e.scope==="column"&&(n++,r.totals_row&&a--),{label:e.label,type:"range",position:e.position,id:e.id,start:{type:"address",row:n,column:s,sheet_id:r.area.start.sheet_id,label:e.label,position:e.position,id:0},end:{type:"address",row:a,column:s,label:e.label,position:e.position,id:0}}}}};var Mr=class{constructor(){this.type=Mr.type;this.color=0;this.edges_in=new Set;this.edges_out=new Set}get has_inbound_edges(){return this.edges_in.size>0}get has_outbound_edges(){return this.edges_out.size>0}Reset(){for(let e of this.edges_out)e.RemoveDependency(this);for(let e of this.edges_in)e.RemoveDependent(this);this.edges_out.clear(),this.edges_in.clear()}ClearDependencies(){for(let e of this.edges_in)e.RemoveDependent(this);this.edges_in.clear()}AddDependent(e){e!==this&&(this.edges_out.has(e)||this.edges_out.add(e))}RemoveDependent(e){this.edges_out.delete(e)}AddDependency(e){e!==this&&(this.edges_in.has(e)||this.edges_in.add(e))}RemoveDependency(e){this.edges_in.delete(e)}LinkTo(e){this.AddDependent(e),e.AddDependency(this)}DependsOn(e){this.AddDependency(e),e.AddDependent(this)}LoopCheck(){let e=[this];for(;e.length;){let t=e[e.length-1],r=!0;if(t.color!==2){t.color=1;for(let i of t.edges_out){if(i.color===1)return this.color=0,!0;i.color===0&&i.edges_out.size&&(e.push(i),r=!1)}}r&&(t.color=2,e.pop())}return this.color=2,!1}},gt=Mr;gt.type="vertex";var Je=class extends gt{constructor(){super(...arguments);this.dirty=!1}};var ki={error:"NOTIMPL"},Se=()=>({type:6,value:"N/A"}),ke=()=>({type:6,value:"EXPR"});var he=()=>({type:6,value:"DIV/0"}),W=()=>({type:6,value:"ARG"}),z=()=>({type:6,value:"VALUE"}),Z=()=>({type:6,value:"REF"}),Nr=()=>({type:6,value:"NAME"}),Zt=()=>({type:6,value:"UNK"});var Ur=class extends Je{constructor(){super(...arguments);this.error=0;this.result={type:0};this.expression={type:"missing",id:-1};this.expression_error=!1;this.short_circuit=!1;this.type=Ur.type}get array_head(){return this.address?!!this.reference&&!!this.reference.area&&this.reference.area.start.column===this.address.column&&this.reference.area.start.row===this.address.row:!1}TakeReferenceValue(){this.reference&&(this.result=j(this.reference.GetValue()))}Calculate(t){if(this.dirty){if(this.color===0&&this.LoopCheck()&&(this.dirty=!1,this.edges_in.size)){this.reference&&(this.array_head||this.reference.type===1)&&this.reference.SetCalculationError("LOOP");for(let r of this.edges_out)r.Calculate(t);return}for(let r of this.edges_in)if(r.dirty)return;if(this.reference){if(this.reference.type===1){this.short_circuit=!1;let r=t.CalculationCallback.call(t,this);if(this.result=r.value,this.short_circuit)return;r.volatile&&t.volatile_list.push(this)}else this.result=this.reference.GetValue4();if(this.array_head)t.SpreadCallback.call(t,this,this.result);else if(this.reference.type===1){let r=this.result.type===8?this.result.value[0][0]:this.result;this.reference.SetCalculatedValue(r.value,r.type)}}else console.info("skip dirty constant? [or dangling...]");this.dirty=!1;for(let r of this.edges_out)r.dirty&&t.calculation_list.push(r)}}},Ue=Ur;Ue.type="spreadsheet-vertex";var Ge=class extends Je{constructor(t){super();this.type=Ge.type;this.area=t.Clone(),Ge.list.push(this)}static GetVertex(t){for(let r of this.list)if(r.area.start.sheet_id===t.start.sheet_id&&r.area.Equals(t))return[r,!1];return[new Ge(t),!0]}static Clear(){this.list=[]}static GetContainingArrays(t){let r=[];for(let i of this.list)i.area.start.sheet_id===t.sheet_id&&i.area.Contains(t)&&r.push(i);return r}static CreateImplicitEdges(t,r){for(let i of this.list)i.area.start.sheet_id===r.sheet_id&&i.area.Contains(r)&&i.DependsOn(t)}RemoveDependent(t){super.RemoveDependent(t),this.edges_out.size||(this.Reset(),Ge.list=Ge.list.filter(r=>r!==this))}Calculate(t){if(this.dirty){if(this.color===0&&this.LoopCheck()&&(this.dirty=!1,this.edges_in.size)){for(let r of this.edges_out)r.Calculate(t);return}for(let r of this.edges_in)if(r.dirty)return;this.dirty=!1;for(let r of this.edges_out)r.Calculate(t)}}},Ee=Ge;Ee.type="array-vertex",Ee.list=[];var $t=class{constructor(){this.vertices=[[]];this.volatile_list=[];this.calculation_list=[];this.leaf_vertices=[];this.dirty_list=[];this.loop_check_required=!1;this.RIBcount=0}IsSpreadsheetVertex(e){return e.type===Ue.type}FlushTree(){this.dirty_list=[],this.volatile_list=[],this.vertices=[[]],this.leaf_vertices=[],Ee.Clear()}ResolveArrayHead(e){if(!e.sheet_id)throw new Error("resolve array head with no sheet id");let t=this.model.sheets.Find(e.sheet_id)?.cells;if(!t)throw new Error("no cells? sheet id "+e.sheet_id);let r=t.data[e.row];if(r){let i=r[e.column];if(i&&i.area){let s={row:i.area.start.row,column:i.area.start.column,sheet_id:e.sheet_id};return console.info("array head",e,s),s}}return e}GetVertex(e,t){if(!e.sheet_id)throw console.info({address:e,create:t}),new Error("getvertex with no sheet id");let r=this.model.sheets.Find(e.sheet_id)?.cells;if(!r)throw new Error("no cells? sheet id "+e.sheet_id);if(!this.vertices[e.sheet_id]){if(!t)return;this.vertices[e.sheet_id]=[]}if(this.vertices[e.sheet_id][e.column]){let s=this.vertices[e.sheet_id][e.column][e.row];if(s)return s;if(!t)return}else{if(!t)return;this.vertices[e.sheet_id][e.column]=[]}let i=new Ue;return i.address={row:e.row,column:e.column,absolute_row:e.absolute_row,absolute_column:e.absolute_column,sheet_id:e.sheet_id},i.reference=r.EnsureCell(e),this.vertices[e.sheet_id][e.column][e.row]=i,Ee.CreateImplicitEdges(i,e),i}RemoveVertex(e){if(!e.sheet_id)throw new Error("removevertex with no sheet id");let t=this.GetVertex(e,!1);t&&(t.Reset(),this.vertices[e.sheet_id][e.column][e.row]=void 0)}ResetVertex(e){let t=this.GetVertex(e,!1);t&&t.Reset()}ResetInbound(e,t=!1,r=!0,i=!1){this.RIBcount++;let s=this.GetVertex(e,r);if(!s){if(t){let a=Ee.GetContainingArrays(e);for(let o of a)this.SetVertexDirty(o)}return}let n=[];if(i&&(n=Array.from(s.edges_in)),s.ClearDependencies(),t&&this.SetVertexDirty(s),i){s.has_outbound_edges||this.RemoveVertex(e);for(let a of n)if(!a.has_inbound_edges&&!a.has_outbound_edges){let o=a;o.address&&this.RemoveVertex(o.address)}}}ResetLoopState(){for(let e of this.vertices)if(e){for(let t of e)if(t)for(let r of t)r&&(r.color=r.edges_out.size?0:2)}for(let e of this.leaf_vertices)e.color=2}LoopCheck(e=!1){if(!this.loop_check_required&&!e)return!1;let t=[];for(let i of this.vertices)if(i){for(let s of i)if(s)for(let n of s)n&&(n.color=n.edges_out.size?0:2,t.push(n))}let r=[];for(let i of t)if(i.color===0){for(i.color=1,r.push(i);r.length;){let s=r[r.length-1],n=!0;if(s.color!==2)for(let a of s.edges_out){if(a.color===1)return this.loop_hint=this.RenderAddress(i.address),console.info("loop detected @",this.loop_hint),!0;a.color===0&&(r.push(a),n=!1)}n&&(r.pop(),s.color=2)}i.color=2}return this.loop_check_required=!1,this.loop_hint=void 0,!1}RenderAddress(e){if(!e)return"undefined";let t="";if(e.sheet_id){let i=this.model.sheets.Find(e.sheet_id);i&&(t=i.name+"!")}let r=new v(e);return t+r.spreadsheet_label}AddArrayEdge(e,t){if(!e.start.sheet_id)throw new Error("AddArrayEdge called without sheet ID");let r=this.GetVertex(t,!0),[i,s]=Ee.GetVertex(e);if(r.DependsOn(i),this.loop_check_required=!0,!s)return;let n=this.vertices[e.start.sheet_id];if(n)if(e.entire_row){for(let a=0;a<n.length;a++)if(n[a])for(let o=e.start.row;o<=e.end.row;o++){let l=n[a][o];l&&i.DependsOn(l)}}else if(e.entire_column){for(let a=e.start.column;a<=e.end.column;a++)if(n[a])for(let o of n[a])o?.address&&i.DependsOn(o)}else for(let a=e.start.row;a<=e.end.row;a++)for(let o=e.start.column;o<=e.end.column;o++){let l=n[o][a];l&&i.DependsOn(l)}}AddEdge(e,t,r){let i=this.GetVertex(e,!0);this.GetVertex(t,!0).DependsOn(i),i.reference&&i.reference.area&&!i.array_head&&this.AddEdge({...e,row:i.reference.area.start.row,column:i.reference.area.start.column},t,"implicit"),this.loop_check_required=!0}RemoveEdge(e,t){let r=this.GetVertex(e,!1),i=this.GetVertex(t,!1);!r||!i||(r.RemoveDependent(i),i.RemoveDependency(r))}SetAreaDirty(e){if(e.start.column===1/0||e.end.column===1/0||e.start.row===1/0||e.end.row===1/0)throw new Error("don't iterate over infinite area");let t=e.start.sheet_id;if(!t)throw new Error("invalid area, missing sheet id");for(let r=e.start.column;r<=e.end.column;r++)for(let i=e.start.row;i<=e.end.row;i++){let s={row:i,column:r,sheet_id:t};this.GetVertex(s,!1)&&this.SetDirty(s)}}SetVertexDirty(e){if(!e.dirty){this.dirty_list.push(e),e.dirty=!0;for(let t of e.edges_out)this.SetVertexDirty(t)}}SetDirty(e){let t=this.GetVertex(e,!0);this.SetVertexDirty(t)}AddLeafVertex(e){for(let t of this.leaf_vertices)if(t===e)return;this.leaf_vertices.push(e)}RemoveLeafVertex(e){this.leaf_vertices=this.leaf_vertices.filter(t=>t!==e)}AddLeafVertexEdge(e,t){let r=this.GetVertex(e,!0);return t.DependsOn(r),0}RemoveLeafVertexEdge(e,t){let r=this.GetVertex(e,!1);r&&(r.RemoveDependent(t),t.RemoveDependency(r))}InitializeGraph(){for(let e of this.dirty_list)this.IsSpreadsheetVertex(e)&&(e.TakeReferenceValue(),this.CheckVolatile(e)&&this.volatile_list.push(e)),e.dirty=!1;this.dirty_list=[]}Recalculate(){for(let e of this.volatile_list)this.SetVertexDirty(e);this.calculation_list=this.dirty_list.slice(0),this.volatile_list=[],this.dirty_list=[],this.loop_check_required&&(this.ResetLoopState(),this.loop_check_required=!1);for(let e=0;e<this.calculation_list.length;e++)this.calculation_list[e].Calculate(this);this.calculation_list=[]}};var $s=d=>{let e={m:d,n:d,array:[]};for(let t=0;t<d;t++){let r=[];for(let i=0;i<d;i++)r.push({real:0,imaginary:0});e.array.push(r)}return e};var Ws=d=>{let{r:e,theta:t}=d,r=e*Math.cos(t),i=e*Math.sin(t);return{real:r,imaginary:i}},Wt=d=>{let e=Math.sqrt(d.real*d.real+d.imaginary*d.imaginary),t=Math.atan2(d.imaginary,d.real);return{r:e,theta:t}},ce=(d,e)=>({real:d.real*e.real-d.imaginary*e.imaginary,imaginary:d.real*e.imaginary+d.imaginary*e.real}),js=(d,e)=>{let t=[];for(let r=0;r<d.m;r++){let i=[];for(let s=0;s<d.n;s++)i.push(d.array[r][s]+e.array[r][s]);t.push(i)}return{m:d.m,n:d.n,array:t}},Lr=(d,e)=>{let t=[];for(let r=0;r<d.m;r++){let i=[];for(let s=0;s<e.n;s++){let n=0;for(let a=0;a<d.n;a++)n+=d.array[r][a]*e.array[a][s];i.push(n)}t.push(i)}return{array:t,m:d.m,n:e.n}},Ri=(d,e)=>{let t=[];for(let r=0;r<d.m;r++){let i=[];for(let s=0;s<e.n;s++){let n={real:0,imaginary:0};for(let a=0;a<d.n;a++)n.real+=d.array[r][a].real*e.array[a][s].real-d.array[r][a].imaginary*e.array[a][s].imaginary,n.imaginary+=d.array[r][a].real*e.array[a][s].imaginary+d.array[r][a].imaginary*e.array[a][s].real;i.push(n)}t.push(i)}return t},jt=d=>{let e={real:0,imaginary:0},t=d.n;if(t==2){let i=ce(d.array[0][0],d.array[1][1]),s=ce(d.array[1][0],d.array[0][1]);return{real:i.real-s.real,imaginary:i.imaginary-s.imaginary}}let r=$s(d.n);for(let i=0;i<t;i++){let s=0;for(let o=1;o<t;o++){let l=0;for(let c=0;c<t;c++)c!=i&&(r.array[s][l]={...d.array[o][c]},l++);s++}r.m=r.n=t-1;let n=Math.pow(-1,i),a=ce({real:d.array[0][i].real*n,imaginary:d.array[0][i].imaginary*n},jt(r));e.real+=a.real,e.imaginary+=a.imaginary}return e};var Ys=d=>{let e={real_values:!1,imaginary_values:!1,square:d.m===d.n,unit_diagonal:!0},t={m:d.m,n:d.n,array:[]},r={m:d.m,n:d.n,array:[]};for(let i=0;i<d.m;i++){let s=d.array[i],n=[],a=[];for(let o=0;o<d.n;o++)s[o].real&&(e.real_values=!0),s[o].imaginary&&(e.imaginary_values=!0),o===i&&e.unit_diagonal&&(s[o].real!==1||s[o].imaginary!==0)&&(e.unit_diagonal=!1),n.push(s[o].real),a.push(s[o].imaginary);t.array.push(n),r.array.push(a)}return{real:t,imaginary:r,flags:e}},Js=d=>{let e=d.array.map(t=>t.slice(0));return{m:d.m,n:d.n,array:e}},Ei=d=>{if(d.m!==d.n)return;let e=Js(d),t=e.array,r=0,i=0,s=0,n=0,a=d.m;for(i=1;i<a;i++)t[0][i]/=t[0][0];for(i=1;i<a;i++){for(s=i;s<a;s++){for(r=0,n=0;n<i;n++)r+=t[s][n]*t[n][i];t[s][i]-=r}if(i!=a-1)for(s=i+1;s<a;s++){for(r=0,n=0;n<i;n++)r+=t[i][n]*t[n][s];t[i][s]=(t[i][s]-r)/t[i][i]}}for(i=0;i<a;i++)for(s=i;s<a;s++){let o=1;if(i!=s)for(o=0,n=i;n<s;n++)o-=t[s][n]*t[n][i];t[s][i]=o/t[s][s]}for(i=0;i<a;i++)for(s=i;s<a;s++)if(i!=s){for(r=0,n=i;n<s;n++)r+=t[n][s]*(i==n?1:t[i][n]);t[i][s]=-r}for(i=0;i<a;i++)for(s=0;s<a;s++){for(r=0,n=i>s?i:s;n<a;n++)r+=(s==n?1:t[s][n])*t[n][i];t[s][i]=r}return e},Ti=d=>{let e=[];if(d.m!==d.n)return;let{real:t,imaginary:r,flags:i}=Ys(d),s=Ei(t);if(!s)return;if(!i.imaginary_values){for(let h=0;h<d.m;h++){let u=[];for(let m=0;m<d.n;m++)u.push({real:s.array[h][m],imaginary:0});e.push(u)}return e}let n=Lr(s,r),a=Lr(r,n),o=js(t,a),l=Ei(o);if(!l)return;let c=Lr(n,l);for(let h=0;h<d.m;h++){let u=[];for(let m=0;m<d.n;m++)u.push({real:l.array[h][m],imaginary:-c.array[h][m]});e.push(u)}return e},Ii=(d,e)=>{let t={real:e.real,imaginary:-e.imaginary},r=ce(d,t),i=ce(e,t);return{real:r.real/i.real,imaginary:r.imaginary/i.real}},Pr=d=>{let e=d.real||0,t=d.imaginary||0;return ce({real:Math.exp(e),imaginary:0},{real:Math.cos(t),imaginary:Math.sin(t)})},Xs=d=>{let e=Wt(d);return{real:Math.log(e.r),imaginary:e.theta}},ue=(d,e)=>{if(e.imaginary)return Pr(ce(e,Xs(d)));{let t=Wt(d);return Ws({r:Math.pow(t.r,e.real),theta:t.theta*e.real})}};var zi=(d,e=0)=>d&&d.type===7?d:{type:7,value:{real:e,imaginary:0}},He=d=>d.imaginary?{type:7,value:d}:{type:3,value:d.real},Be=(d,e)=>{if(d.type===6)return[0,0,d];if(e.type===6)return[0,0,e];let t=[0,0];switch(d.type){case 3:t[0]=d.value;break;case 4:t[0]=d.value?1:0;break;case 0:break;case 7:t[3]=d;break;default:return[0,0,z()]}switch(e.type){case 3:t[1]=e.value;break;case 4:t[1]=e.value?1:0;break;case 0:break;case 7:t[4]=e;break;default:return[0,0,z()]}return(t[3]||t[4])&&(t[3]=zi(t[3],t[0]),t[4]=zi(t[4],t[1])),t},Qs=(d,e)=>{let[t,r,i,s,n]=Be(d,e);return i||(s&&n?He({real:s.value.real+n.value.real,imaginary:s.value.imaginary+n.value.imaginary}):{value:t+r,type:3})},Hr=(d,e)=>{let[t,r,i,s,n]=Be(d,e);return i||(s&&n?He({real:s.value.real-n.value.real,imaginary:s.value.imaginary-n.value.imaginary}):{value:t-r,type:3})},qs=(d,e)=>{let[t,r,i,s,n]=Be(d,e);if(i)return i;if(s&&n)return He(ue(s.value,n.value));let a=Math.pow(t,r);return isNaN(a)?z():{type:3,value:a}},Ks=(d,e)=>{let[t,r,i,s,n]=Be(d,e);if(i)return i;if(s&&n)return He(ue(s.value,n.value));if(t<0&&r!==0&&Math.abs(r)<1)return He(ue({real:t,imaginary:0},{real:r,imaginary:0}));let a=Math.pow(t,r);return isNaN(a)?z():{type:3,value:a}},Fr=qs,en=(d,e)=>{let[t,r,i,s,n]=Be(d,e);return i||(s&&n?He(ce(s.value,n.value)):{value:t*r,type:3})},tn=(d,e)=>{let[t,r,i,s,n]=Be(d,e);return i||(s&&n?n.value.real===0&&n.value.imaginary===0?he():He(Ii(s.value,n.value)):r===0?he():{value:t/r,type:3})},rn=(d,e)=>{let[t,r,i]=Be(d,e);return i||(r===0?he():{value:t%r,type:3})},sn=(d,e)=>d.type===6?d:e.type===6?e:{type:2,value:`${d.type===0?"":d.value}${e.type===0?"":e.value}`},Gr=(d,e)=>{if(d.type===6)return d;if(e.type===6)return e;if(d.type===0&&(e.value===""||e.value===0||e.type===7&&e.value.real===0&&e.value.imaginary===0)||e.type===0&&(d.value===""||d.value===0||d.type===7&&d.value.real===0&&d.value.imaginary===0))return{type:4,value:!0};if(d.type===7||e.type===7){let t=!1;return d.type===e.type?t=d.value.real==e.value.real&&d.value.imaginary==e.value.imaginary:d.type===3?t=e.value.real==d.value&&!e.value.imaginary:e.type===3&&(t=d.value.real==e.value&&!d.value.imaginary),{type:4,value:t}}return{type:4,value:d.value==e.value}},Mi=(d,e)=>{let t=Gr(d,e);return t.type===6?t:{type:4,value:!t.value}},nn=(d,e)=>d.type===6?d:e.type===6?e:d.type===7||e.type===7?z():{type:4,value:(d.value||0)>(e.value||0)},an=(d,e)=>d.type===6?d:e.type===6?e:d.type===7||e.type===7?z():{type:4,value:d.value>=e.value},on=(d,e)=>d.type===6?d:e.type===6?e:d.type===7||e.type===7?z():{type:4,value:d.value<e.value},ln=(d,e)=>d.type===6?d:e.type===6?e:d.type===7||e.type===7?z():{type:4,value:d.value<=e.value},Ni=()=>{Fr=Ks},Di=d=>{switch(d){case"&":return sn;case"+":return Qs;case"-":return Hr;case"*":return en;case"/":return tn;case"^":return Fr;case"**":return Fr;case"%":return rn;case"=":return Gr;case"==":return Gr;case"!=":return Mi;case"<>":return Mi;case">":return nn;case">=":return an;case"<":return on;case"<=":return ln}};var Li=d=>!Array.isArray(d)&&d.type===5&&!!d.value.type,Jt=d=>d.type===5&&d.key==="metadata",Yt=class{constructor(e,t){this.library=e;this.parser=t;this.context={address:{row:-1,column:-1},volatile:!1,call_index:0};this.call_index=0;this.named_range_map={}}SetModel(e){this.data_model=e,this.named_range_map=e.named_ranges.Map(),this.context.model=e}Calculate(e,t,r=!1){return r||(this.context.address=t,this.context.volatile=!1,this.context.call_index=0,this.call_index=0),{value:this.CalculateExpression(e),volatile:this.context.volatile}}CellFunction2(e){if(!e.sheet_id)if(e.sheet)e.sheet_id=this.data_model.sheets.ID(e.sheet)||0;else return()=>Z();let t=this.data_model.sheets.Find(e.sheet_id)?.cells;if(!t)return console.warn("missing cells reference @ "+e.sheet_id),()=>Z();let r=t.GetCell(e);return r?()=>r.GetValue4():()=>({type:3,value:0})}CellFunction4(e,t){return e.sheet_id?this.data_model.sheets.Find(e.sheet_id)?.cells?.GetRange4(e,t,!0)||Z():Z()}GetMetadata(e,t){let r,i;switch(e.type){case"address":r=e;break;case"range":i=e;break;case"structured-reference":{let s=this.data_model.ResolveStructuredReference(e,this.context.address);s&&(s.type==="address"?r=s:s.type==="range"&&(i=s))}break;case"identifier":{let s=this.named_range_map[e.name.toUpperCase()];s&&(s.count===1?r=s.start:i=s)}break;case"call":{let s=this.CalculateExpression(e,!0);if(Li(s))if(s.value.type==="address")r=s.value;else if(s.value.type==="range")i=s.value;else return s;else return s}break;default:return this.CalculateExpression(e)}if(r){let s;if(r.sheet_id&&(s=this.data_model.sheets.Find(r.sheet_id)),!s)return console.error("missing sheet [ac8]"),Z();let n=s.CellData(r),a=n.calculated_type?n.calculated:n.value,o={type:"metadata",address:{...r},value:a,format:n.style?n.style.number_format:void 0,...t(n,r)};return{type:5,value:o,key:"metadata"}}else if(i){if(i.start.row===1/0||i.start.column===1/0)return Z();let s;if(i.start.sheet_id&&(s=this.data_model.sheets.Find(i.start.sheet_id)),!s)throw new Error("missing sheet [ac9]");let n=[];for(let a=i.start.column;a<=i.end.column;a++){let o=[];for(let l=i.start.row;l<=i.end.row;l++){let c=s.CellData({row:l,column:a});r={...i.start,row:l,column:a};let h=c.calculated_type?c.calculated:c.value,u={type:"metadata",address:r,value:h,format:c.style?c.style.number_format:void 0,...t(c,r)};o.push({type:5,value:u,key:"metadata"})}n.push(o)}return{type:8,value:n}}return this.CalculateExpression(e)}RewriteMacro(e,t){let r;switch(e.type){case"identifier":if(r=t[e.name.toUpperCase()],r)return JSON.parse(JSON.stringify(r));break;case"binary":e.left=this.RewriteMacro(e.left,t),e.right=this.RewriteMacro(e.right,t);break;case"unary":e.operand=this.RewriteMacro(e.operand,t);break;case"group":e.elements=e.elements.map(i=>this.RewriteMacro(i,t));break;case"call":e.args=e.args.map(i=>this.RewriteMacro(i,t));break}return e}CallMacro(e,t){if(!t.expression)return()=>ke();let r=JSON.stringify(t.expression),i={},s=t.argument_names?.map(n=>n.toUpperCase())||[];return n=>{let a=JSON.parse(r);for(let o=0;o<s.length;o++)i[s[o]]=n.args[o]||{type:"missing",id:0};return this.CalculateExpression(this.RewriteMacro(a,i))}}CallExpression(e,t=!1){let r=this.library.Get(e.name);return r?i=>{let s=this.call_index++;this.context.volatile=this.context.volatile||!!r.volatile;let n=e.name.toLowerCase()==="if",a=-1,o,l=r.arguments||[],c=i.args.map((h,u)=>{if(o)return;let m=l[Math.min(u,l.length-1)]||{};if(u===a)return m.boxed?{type:0}:void 0;if(typeof h>"u")return n&&u===0&&(a=1),m.boxed?{type:0}:void 0;if(m.address)return m.boxed?{type:2,value:this.parser.Render(h).replace(/\$/g,"")}:this.parser.Render(h).replace(/\$/g,"");if(m.metadata)return this.GetMetadata(h,()=>({}));{let f=this.CalculateExpression(h);if(f.type===6){if(m.allow_error)return f;o=f;return}if(n&&u===0&&f.type!==8){let b=!1;if(f.type===2){let p=f.value.toLowerCase().trim();b=p!=="false"&&p!=="f"}else b=!!f.value;a=b?2:1}return m.boxed?f:f.type===8?f.value.map(b=>b.map(p=>p.value)):f.value}});if(o)return o;if(this.context.call_index=s,r.return_type===1){let h=r.fn.apply(null,c);if(t)return h;if(Li(h)){if(h.value.type==="address")return this.CellFunction2(h.value)();if(h.value.type==="range")return this.CellFunction4(h.value.start,h.value.end)}return h}return r.fn.apply(null,c)}:()=>Nr()}ResolveStructuredReference(e){let t=this.data_model.ResolveStructuredReference(e,this.context.address);if(t){if(t.type==="address")return this.CellFunction2(t);if(t.type==="range")return()=>this.CellFunction4(t.start,t.end)}return()=>Z()}ResolveDimensionedQuantity(){return e=>{let t=this.CalculateExpression(e.expression);return{type:9,value:{value:t.value,unit:e.unit.name}}}}UnaryExpression(e){switch(e.operator){case"+":return t=>this.CalculateExpression(t.operand);case"-":{let t=Hr,r={type:3,value:0};return i=>{let s=this.CalculateExpression(i.operand);return s.type===8?{type:8,value:s.value.map(n=>n.map(a=>t(r,a)))}:t(r,s)}}default:return()=>(console.warn("unexpected unary operator:",e.operator),ke())}}RecycleArray(e,t,r){if(e[0].length<r){let i=e[0].length;for(let s of e)for(let n=i;n<r;n++)s[n]=s[n%i]}if(e.length<t){let i=e.length;for(let s=i;s<t;s++)e[s]=e[s%i].slice(0)}return e}ElementwiseBinaryExpression(e,t,r){let i=Math.max(t.value.length,r.value.length),s=Math.max(t.value[0].length,r.value[0].length),n=this.RecycleArray(t.value,i,s),a=this.RecycleArray(r.value,i,s),o=[];for(let l=0;l<i;l++){let c=[];for(let h=0;h<s;h++)c[h]=e(n[l][h],a[l][h]);o.push(c)}return{type:8,value:o}}BinaryExpression(e){let t=Di(e.operator);return t?r=>{let i=this.CalculateExpression(r.left),s=this.CalculateExpression(r.right);return i.type===8?s.type===8?this.ElementwiseBinaryExpression(t,i,s):this.ElementwiseBinaryExpression(t,i,{type:8,value:[[s]]}):s.type===8?this.ElementwiseBinaryExpression(t,{type:8,value:[[i]]},s):t(i,s)}:()=>(console.info(`(unexpected binary operator: ${e.operator})`),ke())}Identifier(e){let t=e.name;if(t[0]==="#")return()=>Z();let r=t.toUpperCase();switch(r){case"FALSE":case"F":return()=>({value:!1,type:4});case"TRUE":case"T":return()=>({value:!0,type:4});case"UNDEFINED":return()=>({value:void 0,type:0})}return()=>{let i=this.named_range_map[r];if(i)return i.count===1?this.CellFunction4(i.start,i.start):this.CellFunction4(i.start,i.end);let s=this.data_model.named_expressions.get(r);return s?this.CalculateExpression(s):Nr()}}GroupExpression(e){return!e.elements||e.elements.length!==1?(console.warn("Can't handle group !== 1"),()=>ke()):t=>this.CalculateExpression(t.elements[0])}CalculateExpression(e,t=!1){if(e.user_data)return e.user_data(e);switch(e.type){case"call":{let r=this.data_model.macro_functions.get(e.name.toUpperCase());return r?(e.user_data=this.CallMacro(e,r))(e):(e.user_data=this.CallExpression(e,t))(e)}case"address":return(e.user_data=this.CellFunction2(e))();case"range":return(e.user_data=r=>this.CellFunction4(r.start,r.end))(e);case"binary":return(e.user_data=this.BinaryExpression(e))(e);case"unary":return(e.user_data=this.UnaryExpression(e))(e);case"identifier":return(e.user_data=this.Identifier(e))();case"missing":return(e.user_data=()=>({value:void 0,type:0}))();case"dimensioned":return(e.user_data=this.ResolveDimensionedQuantity())(e);case"literal":{let r={value:e.value,type:ae(e.value)};return(e.user_data=()=>r)()}case"group":return(e.user_data=this.GroupExpression(e))(e);case"complex":{let r={value:{real:e.real,imaginary:e.imaginary},type:7};return(e.user_data=()=>r)()}case"structured-reference":return(e.user_data=this.ResolveStructuredReference(e))();case"array":return(e.user_data=()=>({type:8,value:e.values.map(r=>(Array.isArray(r)?r:[r]).map(i=>({type:ae(i),value:i})))}))();default:return console.warn("Unhandled parse expr:",e),Zt()}}};var Fc=1e3*60*60*24;var Xt=d=>{let e=[],t=d.length,r=d[0].length;for(let i=0;i<r;i++){e[i]=[];for(let s=0;s<t;s++)e[i][s]=d[s][i]}return e};var _e=d=>{let e=[];for(let t of d)if(t.type===8)for(let r of t.value)e=e.concat(_e(r));else e.push(t);return e},G=d=>Array.isArray(d)?d.reduce((e,t)=>typeof t>"u"?e:Array.isArray(t)?e.concat(G(t)):t instanceof Float32Array||t instanceof Float64Array?e.concat(Array.from(t)):e.concat([t]),[]):[d];var V=d=>(e,...t)=>Array.isArray(e)?{type:8,value:e.map(r=>r.map(i=>d(i,...t)))}:typeof e=="object"&&e&&e.type===8?{type:8,value:e.value.map(r=>r.map(i=>d(i,...t)))}:d(e,...t),Re=d=>(e,t,...r)=>{let i=!1,s=!1;return e&&typeof e=="object"&&e.type===8?(e=e.value,i=!0):i=Array.isArray(e),t&&typeof t=="object"&&t.type===8?(t=t.value,s=!0):s=Array.isArray(t),i?s?{type:8,value:e.map((n,a)=>n.map((o,l)=>d(o,t[a][l],...r)))}:{type:8,value:e.map(n=>n.map(a=>d(a,t,...r)))}:s?{type:8,value:t.map(n=>n.map(a=>d(e,a,...r)))}:d(e,t,...r)};var Qt=class{constructor(){this.functions={}}Register(...e){for(let t of e)for(let r of Object.keys(t)){if(/[^a-zA-Z0-9._]/.test(r))throw new Error("invalid function name (invalid character)");if(r.length>255)throw new Error("invalid function name (too long, > 255)");if(/^[^a-zA-Z]/.test(r))throw new Error("invalid function name (start with an ascii letter)");let i=r.toLowerCase();if(this.functions[i])throw new Error(`function name (${i}) is already in use`);let s=t[r];s.canonical_name=r,this.functions[i]=s}}Get(e){let t=e.toLowerCase();return this.functions[t]}List(){let e={};for(let t of Object.keys(this.functions))e[t]=this.functions[t];return e}Alias(e,t){let r=this.Get(t);if(!r)throw new Error(`referenced function ${t} does not exist`);this.Register({[e]:{...r}})}};var Qe=class{static UnpackValues(e){if(Array.isArray(e)){let t=e[0];return Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?e.reduce((r,i)=>r.concat(this.UnpackValues(i)),[]):e.map(r=>isNaN(r)?void 0:r)}else{if(e instanceof Float32Array||e instanceof Float64Array)return Array.prototype.slice.call(e);if(e&&typeof e=="object"){let r=Object.keys(e).length;if(typeof e[0]<"u"&&typeof e[(r-1).toString()]<"u"){let i=[];for(let s=0;s<r;s++)i[s]=e[s.toString()];return i}}}return[]}static SparklineCommon(e,t){let r=[],i=t.text?.text||this.default_color,s=[i,i];return Array.isArray(e.calculated)&&(r=this.UnpackValues(e.calculated[0]),typeof e.calculated[1]=="string"&&(s[0]=e.calculated[1]),typeof e.calculated[2]=="string"&&(s[1]=e.calculated[2])),{values:r,colors:s}}static RenderLine(e,t,r,i,s){let{values:n,colors:a}=this.SparklineCommon(i,s),o=.05,l=.1,c=1;Array.isArray(i.calculated)&&typeof i.calculated[2]=="number"&&(c=i.calculated[2]);let h=0,u=0,m=-1;for(let f=0;f<n.length;f++){let b=n[f];typeof b=="number"&&(m>=0?(h=Math.min(h,b),u=Math.max(u,b)):(m=f,h=u=b))}if(h!==u){let f=e*(1-2*o)/(n.length-1),b=u-h,p=t*(1-2*l),g=t*l;r.strokeStyle=a[0],r.lineWidth=c,r.lineCap="round",r.lineJoin="round",r.beginPath();let _=0;for(let y=m;y<n.length;y++){let x=n[y];if(typeof x=="number"){let w=e*o+f*y,A=t-(x-h)*p/b-g;_===0?(r.moveTo(w,A),_=1):r.lineTo(w,A)}else _=0}r.stroke()}}static RenderColumn(e,t,r,i,s){let{values:n,colors:a}=this.SparklineCommon(i,s),o=3,l=2.5,c=0,h=0,u=!1;for(let m of n)typeof m=="number"&&(u?(c=Math.min(c,m),h=Math.max(h,m)):(u=!0,c=h=m));if(n.length){let m=(e-2*o-2)/(n.length-0),f=t-2*l,b=l;if(c!==h)if(c<0&&h>0){let p=h-c,g=b+h/p*f;for(let _=0;_<n.length;_++){let y=n[_];if(typeof y=="number"){let x=o+_*m,w=Math.abs(y)/p*f;if(y>=0){r.fillStyle=a[0];let A=g-w;r.fillRect(x+2,A,m-2,w)}else{r.fillStyle=a[1];let A=g;r.fillRect(x+2,A,m-2,w)}}}}else if(h>0){r.fillStyle=a[0];let p=h-c;for(let g=0;g<n.length;g++){let _=n[g];if(typeof _=="number"){let y=o+g*m,x=Math.max(1,(_-c)/p*f),w=t-b-x;r.fillRect(y+2,w,m-2,x)}}}else{r.fillStyle=a[1];let p=h-c;for(let g=0;g<n.length;g++){let _=n[g];if(typeof _=="number"){let y=o+g*m,x=Math.max(1,Math.abs(h-_)/p*f),w=b;r.fillRect(y+2,w,m-2,x)}}}}}};Qe.default_color="#888";var Pi=d=>{let{x:e,y:t,width:r,height:i,cell:s}=d,n={},a=3,o=Math.round(16*(d.scale||1));if(s&&r&&i&&e&&t){let l={x:a,y:i-a-o};if(s.style){switch(s.style.vertical_align){case k.VerticalAlign.Top:l.y=a;break;case k.VerticalAlign.Middle:l.y=Math.round((i-o)/2);break}switch(s.style.horizontal_align){case k.HorizontalAlign.Right:l.x=Math.round(r-a-o);break;case k.HorizontalAlign.Center:l.x=Math.round((r-o)/2);break}}e>=l.x&&e<=l.x+o&&t>=l.y&&t<=l.y+o&&(n.value=`=Checkbox(${s.calculated?"FALSE":"TRUE"})`,n.block_selection=!0)}return n},Vi=d=>{let{context:e,width:t,height:r,cell:i}=d,s=d.scale||1;e.lineJoin="round",e.lineCap="round";let n=3*s,a=16*s,o=n,l=r-n-a;if(i.style){switch(i.style.vertical_align){case k.VerticalAlign.Top:l=n;break;case k.VerticalAlign.Middle:l=(r-a)/2;break}switch(i.style.horizontal_align){case k.HorizontalAlign.Right:o=t-n-a;break;case k.HorizontalAlign.Center:o=(t-a)/2;break}}o=Math.floor(o)+.5,l=Math.floor(l)+.5;let c=Math.floor(o+a)+.5,h=Math.floor(l+a)+.5;if(i&&i.calculated){e.lineWidth=.5,e.fillStyle=e.strokeStyle,e.beginPath(),e.moveTo(o,l),e.lineTo(o+16*s,l),e.lineTo(o+16*s,l+16*s),e.lineTo(o,l+16*s),e.closePath(),e.moveTo(o+15*s,l+4*s);for(let u of[[13.59,2.58],[6,10.17],[2.41,6.59],[1,8],[6,13]])e.lineTo(o+u[0]*s,l+u[1]*s);e.closePath(),e.fill()}else e.lineWidth=1,e.lineJoin="round",e.beginPath(),e.moveTo(o,l),e.lineTo(c,l),e.lineTo(c,h),e.lineTo(o,h),e.closePath(),e.stroke();return{handled:!0}};var Fi=d=>{let e=.254829592,t=-.284496736,r=1.421413741,i=-1.453152027,s=1.061405429,n=.3275911;d=Math.abs(d);let a=1/(1+n*d);return 1-((((s*a+i)*a+r)*a+t)*a+e)*a*Math.exp(-1*d*d)},dn=Math.sqrt(2*Math.PI),Gi=d=>{if(d===.5)return 0;let e=d<1&&d>.5?1-d:d,t=Math.sqrt(Math.log(1/Math.pow(e,2))),r=t-(2.515517+.802853*t+.010328*Math.pow(t,2))/(1+1.432788*t+.189269*Math.pow(t,2)+.001308*Math.pow(t,3));return d>.5?r:-r},Br={Sqrt:{description:"Returns the square root of the argument",arguments:[{boxed:!0}],fn:V(d=>{if(d.type===7){let e=ue(d.value,{real:.5,imaginary:0});return de(e)}else{if(d.type===0||!d.value)return{type:3,value:0};if(d.type===3&&d.value<0){let e=ue({real:d.value,imaginary:0},{real:.5,imaginary:0});return{type:7,value:e}}else{let e=Math.sqrt(d.value);return isNaN(e)?z():{type:3,value:e}}}})},Power:{description:"Returns base raised to the given power",arguments:[{name:"base",boxed:!0},{name:"exponent",boxed:!0}],fn:Re((d,e)=>{if(d.type===3&&e.type===3&&(d.value>=0||e.value===0||Math.abs(e.value)>=1)){let s=Math.pow(d.value,e.value);return isNaN(s)?z():{type:3,value:s}}let t=d.type===7?d.value:{real:d.value||0,imaginary:0},r=e.type===7?e.value:{real:e.value||0,imaginary:0},i=ue(t,r);return de(i)})}},qe={Int:{fn:d=>({type:3,value:Math.floor(d)})},Rand:{volatile:!0,fn:()=>({type:3,value:Math.random()})},RandBetween:{arguments:[{name:"min"},{name:"max"}],volatile:!0,fn:(d=0,e=1)=>{if(d>e){let t=d;d=e,e=t}return{type:3,value:Math.floor(Math.random()*(e+1-d)+d)}}},Sum:{description:"Adds arguments and ranges",arguments:[{boxed:!0,name:"values or ranges"}],fn:(...d)=>{let e={real:0,imaginary:0},t=_e(d);for(let r of t)switch(r.type){case 3:e.real+=r.value;break;case 4:e.real+=r.value?1:0;break;case 7:e.real+=r.value.real,e.imaginary+=r.value.imaginary;break;case 6:return r}return de(e)}},Now:{description:"Returns current time",volatile:!0,fn:()=>({type:3,value:je(new Date().getTime())})},Date:{description:"Constructs a Lotus date from parts",arguments:[{name:"year"},{name:"month"},{name:"day"}],fn:(d,e,t)=>{let r=new Date;return r.setMilliseconds(0),r.setSeconds(0),r.setMinutes(0),r.setHours(0),d<0||d>1e4?W():(d<1899&&(d+=1900),r.setFullYear(d),e<1||e>12?W():(r.setMonth(e-1),t<1||t>31?W():(r.setDate(t),{type:3,value:je(r.getTime())})))}},Today:{description:"Returns current day",volatile:!0,fn:()=>{let d=new Date;return d.setMilliseconds(0),d.setSeconds(0),d.setMinutes(0),d.setHours(12),{type:3,value:je(d.getTime())}}},IfError:{description:"Returns the original value, or the alternate value if the original value contains an error",arguments:[{name:"original value",allow_error:!0,boxed:!0},{name:"alternate value"}],fn:(d,e=0)=>d&&d.type===6?{value:e,type:ae(e)}:d},IsError:{description:"Checks if another cell contains an error",arguments:[{name:"reference",allow_error:!0,boxed:!0}],fn:(...d)=>{let e=_e(d);for(let t of e)if(t.type===6)return{type:4,value:!0};return{type:4,value:!1}}},Cell:{description:"Returns data about a cell",arguments:[{name:"type",description:"Type of data to return"},{name:"reference",description:"Cell reference",metadata:!0}],fn:Re((d,e)=>{if(!Jt(e))return Z();if(d)switch(d.toString().toLowerCase()){case"format":return e.value.format?{type:2,value:e.value.format}:Z();case"address":return{type:2,value:e.value.address.label.replace(/\$/g,"")}}return{type:6,value:ki.error}})},Year:{description:"Returns year from date",arguments:[{name:"date"}],fn:d=>j(new Date(Pe(d)).getUTCFullYear())},Month:{description:"Returns month from date",arguments:[{name:"date"}],fn:d=>j(new Date(Pe(d)).getUTCMonth()+1)},Day:{description:"Returns day of month from date",arguments:[{name:"date"}],fn:d=>j(new Date(Pe(d)).getUTCDate())},Radians:{description:"Converts degrees to radians",arguments:[{name:"Degrees",description:"Angle in degrees"}],fn:V(d=>j(d*Math.PI/180))},Degrees:{description:"Converts radians to degrees",arguments:[{name:"Radians",description:"Angle in radians"}],fn:V(d=>j(d/Math.PI*180))},CountA:{description:"Counts cells that are not empty",fn:(...d)=>j(G(d).reduce((e,t)=>typeof t>"u"?e:e+1,0))},Count:{description:"Counts cells that contain numbers",fn:(...d)=>j(G(d).reduce((e,t)=>typeof t=="number"?e+1:e,0))},Or:{fn:(...d)=>{let e=!1;d=G(d);for(let t of d)e=e||!!t;return j(e)}},And:{fn:(...d)=>{let e=!0;d=G(d);for(let t of d)e=e&&!!t;return j(e)}},Not:{fn:(...d)=>d.length===0?W():d.length===1?j(!d[0]):j(!0)},If:{arguments:[{name:"test value",boxed:!0},{name:"value if true",boxed:!0,allow_error:!0},{name:"value if false",boxed:!0,allow_error:!0}],fn:(d,e={type:4,value:!0},t={type:4,value:!1})=>{let r=e.type===8,i=t.type===8;return d.type===8?{type:8,value:d.value.map((n,a)=>n.map((o,l)=>(o.type===2?o.value.toLowerCase()!=="false"&&o.value.toLowerCase()!=="f":!!o.value)?r?e.value[a][l]:e:i?t.value[a][l]:t))}:(d.type===2?d.value.toLowerCase()!=="false"&&d.value.toLowerCase()!=="f":!!d.value)?e:t}},Fact:{description:"Returns the factorial of a number",arguments:[{name:"number"}],fn:V(d=>{d=Math.floor(d);let e=1;for(;d>1;)e*=d,d--;return{type:3,value:e}})},Power:{description:"Returns base raised to the given power",arguments:[{name:"base",boxed:!0},{name:"exponent",boxed:!0}],fn:Re((d,e)=>{if(d.type===7||e.type===7){let t=d.type===7?d.value:{real:d.value||0,imaginary:0},r=e.type===7?e.value:{real:e.value||0,imaginary:0},i=ue(t,r);return de(i)}else{let t=Math.pow(d.value,e.value);return isNaN(t)?z():{type:3,value:t}}})},Mod:{fn:Re((d,e)=>e?j(d%e):he())},Sort:{arguments:[{name:"values"}],fn:(...d)=>(d=G(d),d.every(e=>typeof e=="number")?d.sort((e,t)=>e-t):d.sort(),{type:8,value:[d.map(e=>j(e))]})},Transpose:{description:"Returns transpose of input matrix",arguments:[{name:"matrix",boxed:!0}],fn:d=>d.type===8?{type:8,value:Xt(d.value)}:d},Max:{fn:(...d)=>({type:3,value:Math.max.apply(0,G(d).filter(e=>typeof e=="number"))})},Min:{fn:(...d)=>({type:3,value:Math.min.apply(0,G(d).filter(e=>typeof e=="number"))})},SumProduct:{description:"Returns the sum of pairwise products of two or more ranges",fn:(...d)=>{let e=d.map(i=>G(i)),t=Math.max.apply(0,e.map(i=>i.length)),r=0;for(let i=0;i<t;i++)r+=e.reduce((s,n)=>s*(n[i]||0),1);return{type:3,value:r}}},VLookup:{fn:(d,e,t,r=!0)=>{if(t=Math.max(0,t-1),r){let i=Math.abs(d-e[0][0]),s=e[t][0];for(let n=1;n<e[0].length;n++){let a=Math.abs(e[0][n]-d);a<i&&(i=a,s=e[t][n])}return j(s)}else{for(let i=1;i<e[0].length;i++)if(e[0][i]==d)return e[t][i];return Se()}}},Product:{arguments:[{boxed:!0}],fn:(...d)=>{let e={real:1,imaginary:0};d=_e(d);for(let t of d)t.type===7?e=ce(e,t.value):t.type===3&&(e.real*=t.value,e.imaginary*=t.value);return de(e)}},Log:{fn:Re((d,e=10)=>({type:3,value:Math.log(d)/Math.log(e)}))},Log10:{fn:V(d=>({type:3,value:Math.log(d)/Math.log(10)}))},Ln:{fn:V(d=>({type:3,value:Math.log(d)}))},Round:{fn:Re((d,e=0)=>{let t=Math.pow(10,e);return{type:3,value:Math.round(t*d)/t}})},RoundDown:{fn:Re((d,e=0)=>{let t=Math.pow(10,e),r=d>=0;return{type:3,value:r?Math.floor(t*d)/t:Math.ceil(t*d)/t}})},Reverse:{arguments:[{boxed:!0}],fn:d=>d.type===8?(d.value.length===1?d.value[0].reverse():d.value.reverse(),d):{type:2,value:d.value.toString().split("").reverse().join("")}},Exp:{arguments:[{boxed:!0}],fn:V(d=>{if(d.type===7){let e=Pr(d.value);return de(e)}return{type:3,value:Math.exp(d.value||0)}})},Abs:{arguments:[{boxed:!0}],fn:V(d=>d.type===7?{type:3,value:Math.sqrt(d.value.real*d.value.real+d.value.imaginary*d.value.imaginary)}:{type:3,value:Math.abs(d.value||0)})},Simplify:{arguments:[{name:"value"},{name:"significant digits"}],fn:Re((d,e=2)=>{if(e=e||2,d===0)return{type:3,value:d};let t=d<0?-1:1;d*=t;let r=Math.pow(10,Math.floor(Math.log10(d))+1-e);return{type:3,value:Math.round(d/r)*r*t}})},Erf:{fn:d=>({type:3,value:Fi(d)})},NormsInv:{description:"Inverse of the normal cumulative distribution",arguments:[{name:"probability"}],fn:d=>({type:3,value:Gi(d)})},"Norm.Inv":{description:"Inverse of the normal cumulative distribution",arguments:[{name:"probability"},{name:"mean",default:0},{name:"standard deviation",default:1}],xlfn:!0,fn:(d,e=0,t=1)=>({type:3,value:Gi(d)*t+e})},"Norm.Dist":{description:"Cumulative normal distribution",arguments:[{name:"value"},{name:"mean",default:0},{name:"standard deviation",default:1},{name:"cumulative",default:!0}],xlfn:!0,fn:(d,e=0,t=1,r=!0)=>{let i=0;return r?i=.5*(1+(d<e?-1:1)*Fi(Math.abs(d-e)/(t*Math.sqrt(2)))):i=Math.exp(-1/2*Math.pow((d-e)/t,2))/(t*dn),{type:3,value:i}}},Sqrt:{description:"Returns the square root of the argument",arguments:[{boxed:!0}],fn:V(d=>{if(d.type===7){let e=ue(d.value,{real:.5,imaginary:0});return de(e)}else{if(d.type===0||!d.value)return{type:3,value:0};{let e=Math.sqrt(d.value);return isNaN(e)?z():{type:3,value:e}}}})},HexToDec:{arguments:[{description:"hexadecimal string"}],fn:d=>({type:3,value:parseInt(d,16)})},DecToHex:{arguments:[{description:"number"}],fn:d=>({type:2,value:d.toString(16)})},Checkbox:{arguments:[{name:"checked"}],click:Pi,render:Vi,fn:d=>({value:!!d,type:4})},"Sparkline.Column":{arguments:[{name:"data"},{name:"color"},{name:"negative color"}],render:d=>(Qe.RenderColumn(d.width,d.height,d.context,d.cell,d.style),{handled:!0}),fn:(...d)=>({type:5,value:d,key:"sparkline-data"})},"Sparkline.Line":{arguments:[{name:"data"},{name:"color"},{name:"line width"}],render:d=>(Qe.RenderLine(d.width,d.height,d.context,d.cell,d.style),{handled:!0}),fn:(...d)=>({type:5,value:d,key:"sparkline-data"})}},Hi={};for(let d of Object.keys(qe))Hi[d.toLowerCase()]=d;var hn=["pow"],Bi={};for(let d of hn)Bi[d.toLowerCase()]=d;for(let d of Object.getOwnPropertyNames(Math)){let e=d.toLowerCase();if(Hi[e]||Bi[e])continue;let t=Object.getOwnPropertyDescriptor(Math,d);if(!t)continue;let r=t.value,i=typeof r;switch(i){case"number":qe[d]={fn:()=>({type:3,value:r}),category:["Math Functions"]};break;case"function":qe[d]={fn:(...s)=>j(r(...s)),category:["Math Functions"]};break;default:console.info("unexpected type:",i,d);break}}Math.log10||(Math.log10=d=>Math.log(d)/Math.log(10));var _t=(d,e,t=0,r=0,i=0)=>i?-(t*(d/(1-Math.pow(1+d,-e))))/(1+d)-r*(1/((1+d)*((Math.pow(1+d,e)-1)/d))):-(t*d*Math.pow(1+d,e)+r*d)/(Math.pow(1+d,e)-1),Zi=(d,e,t,r=0,i=0)=>i?(1+d)*-t/d*(Math.pow(1+d,e)-1)-r*Math.pow(1+d,e):-t/d*(Math.pow(1+d,e)-1)-r*Math.pow(1+d,e),Or=(d,e,t,r=0,i=0,s=0)=>{if(e<1)return NaN;if(e===1&&s)return 0;let n=_t(d,t,r,i,s),a=Zi(d,e-1,n,r,s)*d;return s?a/(1+d):a},Oi=(d,e,t,r=0,i=0,s=0)=>_t(d,t,r,i,s)-Or(d,e,t,r,i,s),$i={NPV:{description:"Returns the present value of a series of future cashflows",arguments:[{name:"Rate"},{name:"Cashflow"}],fn:(d=0,...e)=>{let t=0,r=G(e);for(let i=0;i<r.length;i++){let s=r[i];typeof s=="number"&&(t+=Math.pow(1+d,-(i+1))*s)}return{type:3,value:t}}},IRR:{description:"Calculates the internal rate of return of a series of cashflows",arguments:[{name:"Cashflows"},{name:"Guess",default:.1}],fn:(d,e=.1)=>{let t=G(d).map(s=>typeof s=="number"?s:0),r=.1,i=[{found:!1,value:0},{found:!1,value:0}];for(let s=0;s<50;s++){let n=0;for(let a=0;a<t.length;a++)n+=Math.pow(1+e,-(a+1))*t[a];if(Math.abs(n)<=.00125)return{type:3,value:e};if(n>0){if(i[0].value=i[0].found?Math.max(i[0].value,e):e,i[0].found=!0,!i[1].found){e+=r;continue}}else if(i[1].value=i[1].found?Math.min(i[1].value,e):e,i[1].found=!0,!i[0].found){e-=r;continue}e=i[0].value+(i[1].value-i[0].value)/2}return{type:6,value:"NUM"}}},CUMPRINC:{description:"Returns cumulative principal paid on a loan between two periods",arguments:[{name:"Rate"},{name:"Periods"},{name:"Present Value"},{name:"Start Period"},{name:"End Period"},{name:"Type",default:0}],fn:(d,e,t,r,i,s=0)=>{let n=0;for(let a=r;a<=i;a++)n+=Oi(d,a,e,t,0,s);return{type:3,value:n}}},CUMIPMT:{description:"Returns cumulative interest paid on a loan between two periods",arguments:[{name:"Rate"},{name:"Periods"},{name:"Present Value"},{name:"Start Period"},{name:"End Period"},{name:"Type",default:0}],fn:(d,e,t,r,i,s=0)=>{let n=0;for(let a=r;a<=i;a++)n+=Or(d,a,e,t,0,s);return{type:3,value:n}}},IPMT:{description:"Returns the interest portion of a payment",arguments:[{name:"Rate"},{name:"Period"},{name:"Periods"},{name:"Present Value",default:0},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(d,e,t,r=0,i=0,s=0)=>({type:3,value:Or(d,e,t,r,i,s)})},PPMT:{description:"Returns the principal portion of a payment",arguments:[{name:"Rate"},{name:"Period"},{name:"Periods"},{name:"Present Value",default:0},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(d,e,t,r=0,i=0,s=0)=>({type:3,value:Oi(d,e,t,r,i,s)})},Rate:{description:"Returns the interest rate of a loan",arguments:[{name:"Periods"},{name:"Payment"},{name:"Present Value",default:0},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(d,e,t=0,r=0,i=0)=>{let s=.25,n=[-1,1],a=32,o=1e-6;for(let l=0;l<a;l++){let c=_t(s,d,t,r,i);if(Math.abs(c-e)<=o)return{type:3,value:s};let h=_t(n[1],d,t,r,i);e>=c&&e<=h||e>=h&&e<=c?n[0]=s:n[1]=s,s=n[0]+(n[1]-n[0])/2}return{type:3,value:s}}},FV:{description:"Returns the future value of an investment",arguments:[{name:"Rate"},{name:"Periods"},{name:"Payment"},{name:"Present Value",default:0},{name:"Type",default:0}],fn:(d,e,t,r=0,i=0)=>({type:3,value:Zi(d,e,t,r,i)})},PV:{description:"Returns the present value of an investment",arguments:[{name:"Rate"},{name:"Periods"},{name:"Payment"},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(d,e,t,r=0,i=0)=>i?(t+=r*(1/((1+d)*((Math.pow(1+d,e)-1)/d))),{type:3,value:-(t+t/d*(1-Math.pow(1+d,-(e-1))))}):{type:3,value:-(r+t/d*(Math.pow(1+d,e)-1))/Math.pow(1+d,e)}},NPER:{description:"Returns the number of periods of an investment",arguments:[{name:"Rate"},{name:"Payment"},{name:"Present Value"},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(d,e,t=0,r=0,i=0)=>i?{type:3,value:1+(-Math.log(1+d*(1-t/-e))+Math.log(1+r*d/(-e*(1+d))))/Math.log(1+d)}:{type:3,value:(Math.log(Math.pow(1-t*d/-e,-1))+Math.log(1+r*d/-e))/Math.log(1+d)}},PMT:{description:"Returns the periodic payment of a loan",arguments:[{name:"Rate"},{name:"Periods"},{name:"Present Value"},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(d,e,t,r=0,i=0)=>({type:3,value:_t(d,e,t,r,i)})}};var un=d=>{let e=[],t=d.length,r="[\\^$.|?*+()";for(let i=0;i<t;i++){let s=d[i];switch(s){case"*":e.push(".","*");break;case"?":e.push(".");break;case"~":s=d[++i]||"";default:for(let n=0;n<r.length;n++)if(s===r[n]){e.push("\\");break}e.push(s);break}}return e.join("")},Wi={Char:{arguments:[{name:"number"}],fn:d=>({type:2,value:String.fromCodePoint(d||32)}),category:["text"]},Code:{arguments:[{name:"string"}],fn:d=>({type:3,value:d.codePointAt(0)||0}),category:["text"]},Value:{arguments:[{name:"text"}],fn:d=>{let e=be.TryParse(d);return e.type===3?{type:3,value:e.value}:W()},category:["text"]},Text:{arguments:[{name:"value"},{name:"number format"}],fn:(d,e="0.00####")=>({type:2,value:M.Get(e).Format(d||0)}),category:["text"]},Left:{arguments:[{name:"string"},{name:"count"}],fn:(d,e=1)=>({type:2,value:d.substr(0,e)}),category:["text"]},Right:{arguments:[{name:"string"},{name:"count"}],fn:(d,e=1)=>({type:2,value:d.slice(-e)}),category:["text"]},Mid:{arguments:[{name:"string"},{name:"left"},{name:"count"}],fn:(d,e=0,t=1)=>({type:2,value:d.substr(Math.max(0,e-1),t)}),category:["text"]},Search:{description:"Find a string (needle) in another string (haystack). Case-insensitive.",arguments:[{name:"Needle"},{name:"Haystack"},{name:"Start",default:1}],fn:(d,e,t=1)=>{if(t>=1){if(!d)return{type:3,value:t};let r=un(d),i=new RegExp(r,"i").exec(e.substr(t-1));if(i)return{type:3,value:i.index+t}}return z()}},Find:{description:"Find a string (needle) in another string (haystack). Case-sensitive.",arguments:[{name:"Needle"},{name:"Haystack"},{name:"Start",default:1}],fn:(d,e,t=1)=>{if(t>=1){if(!d)return{type:3,value:t};let r=new RegExp(d).exec(e.substr(t-1));if(r)return{type:3,value:r.index+t}}return z()}},Concat:{description:"Pastes strings together",fn:(...d)=>{let t=G(d).map(r=>{let i=r?.toString()||"";return typeof r=="number"&&R.decimal_separator===","?i.replace(/\./,","):i}).join("");return{type:2,value:t}}}},Zr={Concatenate:"Concat"};var ji={IsBlank:{description:"Returns true if the reference is blank",arguments:[{name:"Reference",metadata:!0}],fn:V(d=>({type:4,value:!d?.value||typeof d.value.value>"u"}))},IsNumber:{description:"Returns true if the reference is a number",arguments:[{name:"Reference",metadata:!0}],fn:V(d=>({type:4,value:d?.value&&typeof d.value.value=="number"}))},IsLogical:{description:"Returns true if the reference is a logical TRUE or FALSE",arguments:[{name:"Reference",metadata:!0}],fn:V(d=>({type:4,value:d?.value&&typeof d.value.value=="boolean"}))},IsText:{description:"Returns true if the reference is text",arguments:[{name:"Reference",metadata:!0}],fn:V(d=>({type:4,value:d?.value&&typeof d.value.value=="string"}))}};var Te=(d,e=!1)=>{let t=d.length,r=0,i=0;for(let s=0;s<t;s++)r+=d[s];r/=t;for(let s=0;s<t;s++){let n=d[s]-r;i+=n*n}return e?i/(t-1):i/t},Yi={"StDev.P":{description:"Returns the standard deviation of a set of values, corresponding to a population",arguments:[{name:"data"}],fn:(...d)=>({type:3,value:Math.sqrt(Te(G(d),!1))})},"StDev.S":{description:"Returns the standard deviation of a set of values, corresponding to a sample of a population",arguments:[{name:"data"}],fn:(...d)=>({type:3,value:Math.sqrt(Te(G(d),!0))})},"Var.P":{description:"Returns the variance of a set of values, corresponding to a population",arguments:[{name:"data"}],fn:(...d)=>({type:3,value:Te(G(d),!1)})},"Var.S":{description:"Returns the variance of a set of values, corresponding to a sample of a population",arguments:[{name:"data"}],fn:(...d)=>({type:3,value:Te(G(d),!0)})},Covar:{description:"Returns the covariance between two ranges of values",arguments:[{name:"A"},{name:"B"}],fn:(d,e)=>{if(!Array.isArray(d)||!Array.isArray(e))return z();if(!Array.isArray(d[0])||!Array.isArray(e[0]))return z();if(d.length!==e.length)return W();let t=0,r=0,i={x:0,y:0},s={x:[],y:[]};for(let n=0;n<d.length;n++){if(!d[n]||!e[n])continue;if(d[n].length!==e[n].length)return W();let a=d[n].length;r+=a;for(let o=0;o<a;o++)i.x+=d[n][o]||0,i.y+=e[n][o]||0,s.x.push(d[n][o]||0),s.y.push(e[n][o]||0)}if(r===0)return Se();i.x/=r,i.y/=r;for(let n=0;n<r;n++)t+=(s.x[n]-i.x)*(s.y[n]-i.y);return{type:3,value:t/r}}},Correl:{description:"Returns the correlation between two ranges of values",arguments:[{name:"A"},{name:"B"}],fn:(d,e)=>{if(!Array.isArray(d)||!Array.isArray(e))return z();if(!Array.isArray(d[0])||!Array.isArray(e[0]))return z();let t=0,r=0,i=0,s=0,n=0,a=0,o=0;for(let l=0;l<d.length;l++){if(!d[l]||!e[l])continue;let c=d[l].length;for(let h=0;h<c;h++){let u=Number(d[l][h]),m=Number(e[l][h]);isNaN(u)||isNaN(m)||(r+=u*m,i+=u,s+=m,n+=u*u,a+=m*m,o++)}}return t=o*r-i*s,t&&(t/=Math.sqrt((o*n-i*i)*(o*a-s*s))),{type:3,value:t}}},GeoMean:{description:"Returns the geometric mean of all numeric arguments",arguments:[{boxed:!0}],fn:(...d)=>{d=_e(d);let e=0,t={real:1,imaginary:0},r=!1,i=!1;for(let s of d)s.type===7?(r=!0,t=ce(t,s.value),e++):s.type===3&&(s.value<0&&(i=!0),e++,t.real*=s.value,t.imaginary*=s.value);if(r){let s=ue(t,{real:1/e,imaginary:0});return s.imaginary?{type:7,value:s}:{type:3,value:s.real}}else return i?z():{type:3,value:Math.pow(t.real,1/e)}}},Average:{description:"Returns the arithmetic mean of all numeric arguments",arguments:[{boxed:!0}],fn:(...d)=>{d=_e(d);let e={real:0,imaginary:0},t=0;for(let r of d){if(r.type===6)return r;r.type===3&&(e.real+=r.value,t++),r.type===7&&(e.real+=r.value.real,e.imaginary+=r.value.imaginary,t++)}return e.real/=t,e.imaginary/=t,e.imaginary?{type:7,value:e}:{type:3,value:e.real}}},Percentile:{description:"Returns the kth percentile value from the range of data",arguments:[{name:"range"},{name:"percentile"}],fn:(d,e)=>{let t=G(d).filter(o=>typeof o=="number");t.sort((o,l)=>o-l);let r=t.length,i=Math.pow(10,8),s=Math.round((1+(r-1)*e)*i)/i,n=Math.floor(s),a=Math.ceil(s);return{type:3,value:(t[n-1]+t[a-1])/2}}},Median:{description:"Returns the median value of the range of data",arguments:[{name:"range"}],fn:(...d)=>{let e=G(d).filter(n=>typeof n=="number");e.sort((n,a)=>n-a);let r=1+(e.length-1)*.5,i=Math.floor(r),s=Math.ceil(r);return{type:3,value:(e[i-1]+e[s-1])/2}}}},$r={Mean:"Average",StDev:"StDev.S",Var:"Var.S"};var Ji={IsComplex:{description:"Returns true if the reference is a complex number",arguments:[{name:"Reference",metadata:!0}],fn:V(d=>({type:4,value:d?.value&&ye(d.value.value)}))},Real:{description:"Returns the real part of a complex number",arguments:[{boxed:!0}],fn:V(d=>d.type===3?{...d}:d.type===7?{type:3,value:d.value.real||0}:d.type===0||d.type===2&&d.value===""?{type:3,value:0}:z())},Imaginary:{description:"Returns the imaginary part of a complex number (as real)",arguments:[{boxed:!0}],fn:V(d=>d.type===7?{type:3,value:d.value.imaginary||0}:d.type===3||d.type===0||d.type===2&&d.value===""?{type:3,value:0}:z())},Conjugate:{description:"Returns the conjugate of a complex number",arguments:[{boxed:!0}],fn:V(d=>d.type===7?{type:7,value:{real:d.value.real,imaginary:-d.value.imaginary}}:d.type===3||d.type===0||!d.value?{type:3,value:d.value||0}:z())},Arg:{description:"Returns the principal argument of a complex number (in radians)",arguments:[{boxed:!0}],fn:V(d=>d.type===7?{type:3,value:Math.atan2(d.value.imaginary,d.value.real)}:d.type===3||d.type===0||d.type===2&&d.value===""?{type:3,value:Math.atan2(0,d.value||0)}:z())},Rectangular:{description:"Converts a complex number in polar form to rectangular form",arguments:[{name:"r"},{name:"\u03B8 in radians"}],fn:(d=0,e=0)=>({type:7,value:{real:d*Math.cos(e),imaginary:d*Math.sin(e)}})},Complex:{description:"Ensures that the given value will be treated as a complex number",arguments:[{boxed:!0}],fn:V(d=>d.type===7?d:d.type===3||d.type===0||!d.value?{type:7,value:{imaginary:0,real:d.value||0}}:z())},ComplexLog:{description:"Returns the principal value Log(z) of a complex number z",arguments:[{boxed:!0}],fn:V(d=>{if(d.type===3){if(!d.value)return z();d={type:7,value:{real:d.value,imaginary:0}}}else if(d.type===0||d.type===2&&d.value==="")return z();if(d.type===7){let e=Wt(d.value),t={real:Math.log(e.r),imaginary:e.theta};return t.imaginary?{type:7,value:t}:{type:3,value:t.real}}return z()})}};var qt=d=>{let e=[];d.type===8?e=d.value:e=[[d.value]];let t=e.length,r=t?e[0].length:0,i=[];if(!t||!r)return{m:t,n:r,array:i};for(let s=0;s<t;s++){let n=[];for(let a=0;a<r;a++){let o=e[s][a];if(o.type===7)n.push({...o.value});else if(o.type===3)n.push({real:o.value,imaginary:0});else if(o.type===0||o.value==="")n.push({real:0,imaginary:0});else return{m:t,n:r,error:!0,array:[]}}i.push(n)}return{m:t,n:r,array:i}},Xi={MDeterm:{description:"Returns the determinant of a matrix",arguments:[{name:"matrix",boxed:!0}],fn:d=>{let e=qt(d);if(!e.array||!e.m||!e.n||e.m!==e.n||e.error)return z();let t=jt(e);return t?de(t):z()}},MInverse:{description:"Returns the inverse matrix",arguments:[{name:"matrix",boxed:!0}],fn:d=>{let e=qt(d);if(!e.array||!e.m||!e.n||e.m!==e.n||e.error)return z();let t=jt(e);if(t&&t.real===0&&t?.imaginary===0)return z();let r=Ti(e);return r?{type:8,value:r.map(i=>i.map(s=>de(s)))}:z()}},MMult:{description:"Returns the dot product of A and B",arguments:[{name:"A",boxed:!0},{name:"B",boxed:!0}],fn:(d,e)=>{let t=qt(d),r=qt(e);if(!t.array||t.error||!r.array||r.error)return z();if(t.m!==r.n)return z();let i=Ri(r,t);return{type:8,value:i.map(s=>s.map(n=>de(n)))}}}};var Wr=class extends Ue{constructor(){super(...arguments);this.state_id=0;this.type=Wr.type;this.color=2;this.state_representation=""}UpdateState(){let t=JSON.stringify(Array.from(this.edges_in).map(r=>r.result));t!==this.state_representation&&(this.state_representation=t,this.state_id++)}Calculate(t){if(this.dirty){for(let r of this.edges_in)if(r.dirty)return;this.UpdateState(),this.dirty=!1}}AddDependent(t){throw new Error("leaf vertex cannot have dependents")}},Ke=Wr;Ke.type="leaf-vertex";var mn=d=>{if(typeof d=="string")switch(d=d.toUpperCase(),d){case"AVERAGE":case"MEAN":d=101;break;case"COUNT":d=102;break;case"COUNTA":d=103;break;case"MAX":d=104;break;case"MIN":d=105;break;case"PRODUCT":d=106;break;case"STDEV":d=107;break;case"STDEVP":d=108;break;case"SUM":d=109;break;case"VAR":d=110;break;case"VARP":d=111;break;default:d=0;break}return d},fn={complex_numbers:"off"},Kt=class extends $t{constructor(t,r={}){super();this.model=t;this.parser=new We;this.library=new Qt;this.registered_libraries={};this.expression_calculator=new Yt(this.library,this.parser);this.full_rebuild_required=!1;if({...fn,...r}.complex_numbers==="on"){for(let s of Object.keys(Br))qe[s]=Br[s];Ni()}this.UpdateLocale(),this.library.Register(qe,Wi,Yi,$i,ji,Ji,Xi);for(let s of Object.keys($r))this.library.Alias(s,$r[s]);for(let s of Object.keys(Zr))this.library.Alias(s,Zr[s]);this.library.Register({Subtotal:{arguments:[{name:"type"},{name:"range",metadata:!0}],fn:(s,...n)=>{if(s=mn(s),s>100&&(s-=100),s<1||s>11)return W();let a=_e(n),o=[],l=0,c=0,h;for(let m of a){let f=m.value?.address;if(!f)return Z();if(!h||h.id!==f.sheet_id){if(!f.sheet_id)return console.warn("invalid reference in metadata"),Z();if(h=this.model.sheets.Find(f.sheet_id),!h)return console.warn("invalid sheet in metadata"),Z()}if(!h.GetRowHeight(f.row))continue;let p=m.value?.value;typeof p>"u"||(l++,typeof p=="number"&&(c+=p,o.push(p)))}let u=0;switch(s){case 1:if(o.length===0)return he();u=c/o.length;break;case 2:u=o.length;break;case 3:u=l;break;case 4:if(o.length===0)return z();u=Math.max.apply(0,o);break;case 5:if(o.length===0)return z();u=Math.min.apply(0,o);break;case 6:if(o.length===0)return z();u=1;for(let m of o)u*=m;break;case 7:if(o.length<2)return he();u=Math.sqrt(Te(o,!0));break;case 8:if(o.length===0)return he();u=Math.sqrt(Te(o,!1));break;case 9:u=c;break;case 10:if(o.length<2)return he();u=Te(o,!0);break;case 11:if(o.length===0)return he();u=Te(o,!1);break}return{type:3,value:u}}},CountIf:{arguments:[{name:"range"},{name:"criteria"}],fn:(s,n)=>{let a=G(s);typeof n!="string"?n="="+(n||0).toString():(n=n.trim(),/^[=<>]/.test(n)||(n="="+n));let o=this.parser.Parse("{}"+n),l=o.expression;if(o.error||!l)return ke();if(l.type!=="binary")return ke();if(l.left.type!=="array")return ke();l.left.values=[a];let c=this.CalculateExpression(l);if(c.type===8){let h=0;for(let u of c.value)for(let m of u)m.value&&h++;return{type:3,value:h}}return c}},Offset:{arguments:[{name:"reference",description:"Base reference",metadata:!0},{name:"rows",description:"number of rows to offset"},{name:"columns",description:"number of columns to offset"},{name:"height"},{name:"width"}],return_type:1,volatile:!0,fn:((s,n=0,a=0,o,l)=>{if(!s)return W();if(s.type===8){let h=typeof o=="number"?n+o:void 0,u=typeof l=="number"?a+l:void 0;return{type:8,value:s.value.slice(n,h).map(f=>f.slice(a,u))}}if(!Jt(s))return console.info("e2",{reference:s}),Z();let c=this.DynamicDependencies(s.value.address,this.expression_calculator.context.address,!0,n,a,l,o);if(!c)return console.info("e1",{check_result:c}),Z();if(c.dirty){let h=this.GetVertex(this.expression_calculator.context.address,!0);return h.short_circuit=!0,{type:0,value:void 0}}if(c.area){let h={type:"address",...c.area.start,label:"",position:0,id:0},u={type:"address",...c.area.end,label:"",position:0,id:0},m=c.area.count===1?h:{type:"range",start:h,end:u,label:"",position:0,id:0};return{type:5,value:m}}return z()}).bind(this)},Indirect:{arguments:[{name:"reference",description:"Cell reference (string)"}],return_type:1,volatile:!0,fn:(s=>{if(!s||typeof s!="string")return W();let n=this.parser.Parse(s);if(n.error||!n.expression||n.expression.type!=="address"&&n.expression.type!=="range")return Z();let a=this.DynamicDependencies(n.expression,this.expression_calculator.context.address);if(!a)return Z();if(a.dirty){let o=this.GetVertex(this.expression_calculator.context.address,!0);return o.short_circuit=!0,{type:0,value:void 0}}return{type:5,value:n.expression}}).bind(this)},Match:{arguments:[{name:"value",boxed:!0},{name:"range",boxed:!0},{name:"type"}],fn:(s,n,a=0)=>{if(a)return console.warn("inexact match not supported",{value:s,range:n,type:a}),Se();if(n.type===8){if(n.value.length===1){let o=n.value[0];for(let l=0;l<o.length;l++)if(s.type==o[l].type&&s.value===o[l].value)return{type:3,value:l+1}}else for(let o=0;o<n.value.length;o++){let l=n.value[o];if(l.length!==1)return Se();if(s.type==l[0].type&&s.value===l[0].value)return{type:3,value:o+1}}return Se()}else return s.type===n.type&&s.value===n.value?{type:3,value:1}:Se();return W()}},Index:{arguments:[{name:"range",boxed:!0},{name:"row"},{name:"column"}],volatile:!1,fn:(s,n,a)=>{if(s&&s.type!==8&&(s={type:8,value:[[s]]}),n&&a){let o=s.value[a-1];if(o){let l=o[n-1];if(l)return l}}else if(n){let o=[];for(let l of s.value){if(!l[n-1])return W();o.push([l[n-1]])}return{type:8,value:o}}else if(a){let o=s.value[a-1];if(o)return{type:8,value:[o]}}return W()}},Rows:{arguments:[{name:"reference",description:"Array or reference"}],volatile:!1,fn:s=>{if(!s)return W();if(Array.isArray(s)){let n=s[0];return Array.isArray(n)?{type:3,value:n.length}:z()}return{type:3,value:1}}},Columns:{arguments:[{name:"reference",description:"Array or reference"}],volatile:!1,fn:s=>s?Array.isArray(s)?{type:3,value:s.length}:{type:3,value:1}:W()},IsFormula:{description:"Returns true if the reference is a formula",arguments:[{name:"Reference",metadata:!0}],fn:V(s=>{let n=this.model.sheets.Find(s?.value?.address?.sheet_id||0);if(n){let a=n.cells.GetCell(s.value.address,!1);return{type:4,value:a?.type===1}}return{type:4,value:!1}})}})}ExportCalculatedValues(){let t={};for(let r of this.model.sheets.list){let i=r.cells.toJSON({calculated_value:!0}).data;t[r.id]=i.filter(s=>s.calculated!==void 0)}return t}ApplyCalculatedValues(t){for(let r of this.model.sheets.list){let i=t[r.id];if(!i)console.info("mismatch",r.id);else for(let s of i)r.cells.data[s.row][s.column].SetCalculatedValue(s.calculated)}}SpreadCallback(t,r){if(!t.address||!t.address.sheet_id)throw new Error("spread callback called without sheet id");let i=this.model.sheets.Find(t.address.sheet_id)?.cells;if(!i)throw new Error("spread callback called without cells");if(!t||!t.reference)return;let s=t.reference.area;if(s){let n=s.rows,a=s.columns;if(r.type===8){let o=Xt(r.value);for(let l=0;l<n;l++)if(o[l]){let c=0;for(;c<a&&c<o[l].length;c++)i.data[l+s.start.row][c+s.start.column].SetCalculatedValue(o[l][c].value,o[l][c].type);for(;c<a;c++)i.data[l+s.start.row][c+s.start.column].SetCalculatedValue(void 0,0)}else for(let c=0;c<a;c++)i.data[l+s.start.row][c+s.start.column].SetCalculatedValue(void 0,0)}else for(let o=0;o<n;o++)for(let l=0;l<a;l++)i.data[o+s.start.row][l+s.start.column].SetCalculatedValue(r.value,r.type)}}CalculationCallback(t){if(!t.address)throw new Error("vertex missing address");return t.expression_error?{value:Zt()}:this.expression_calculator.Calculate(t.expression,t.address)}DynamicDependencies(t,r,i=!1,s=0,n=0,a=1,o=1){let l=this.ResolveExpressionAddress(t,r);if(!l)return;let c=!1,h;if(t.type==="address"||t.type==="range"){let m=t.type==="range"?t.start:t;m.sheet_id?h=this.model.sheets.Find(m.sheet_id):m.sheet&&(h=this.model.sheets.Find(m.sheet))}if(!h&&r?.sheet_id&&(h=this.model.sheets.Find(r.sheet_id)),!h)throw new Error("missing sheet in dynamic dependencies [b21]");l=h.RealArea(l);let u=l.start.sheet_id;i&&(l=new v({column:l.start.column+n,row:l.start.row+s,sheet_id:l.start.sheet_id},{column:l.start.column+n+a-1,row:l.start.row+s+o-1,sheet_id:l.end.sheet_id}));for(let m=l.start.row;m<=l.end.row;m++)for(let f=l.start.column;f<=l.end.column;f++){let b=this.GetVertex({row:m,column:f,sheet_id:u},!1);b&&b.dirty&&(this.AddEdge({row:m,column:f,sheet_id:u},this.expression_calculator.context.address),c=!0)}return{dirty:c,area:l}}UpdateLocale(){R.decimal_separator===","?(this.parser.decimal_mark=",",this.parser.argument_separator=";"):(this.parser.decimal_mark=".",this.parser.argument_separator=",")}SupportedFunctions(){let t=this.library.List(),r=Object.keys(t).map(i=>{let s=t[i].canonical_name;return s||(s=i.replace(/_/g,".")),{name:s,description:t[i].description,arguments:(t[i].arguments||[]).map(n=>({name:n.name||""}))}});for(let i of this.model.macro_functions.values())r.push({name:i.name,description:i.description,arguments:(i.argument_names||[]).map(s=>({name:s}))});return r}RegisterLibrary(t,r){return this.registered_libraries[t]?!1:(this.RegisterFunction(r),this.registered_libraries[t]=!0,!0)}RegisterFunction(t){for(let r of Object.keys(t)){let i=t[r],s=i.fn;i.fn=(...n)=>s.apply({address:{...this.expression_calculator.context.address}},n),this.library.Register({[r]:i})}}AttachModel(){this.expression_calculator.SetModel(this.model)}Calculate(t){if(this.AttachModel(),t&&!t.start.sheet_id)throw new Error("CalculateInternal called with subset w/out sheet ID");this.full_rebuild_required&&(t=void 0,this.UpdateAnnotations(),this.full_rebuild_required=!1),this.RebuildGraph(t);try{this.Recalculate()}catch(r){console.error(r),console.info("calculation error trapped")}}Reset(){this.FlushTree(),this.AttachModel(),this.full_rebuild_required=!0}DecoratedFunctionList(){let t={},r=this.library.List();for(let i of Object.keys(r)){let s=r[i];s.xlfn?t[i]="_xlfn":s.extension&&(t[i]="_xll")}return t}ResolveArea(t,r){let i=this.ResolveAddress(t,r);return L(i)?new v(i):new v(i.start,i.end)}ResolveAddress(t,r){if(typeof t=="string"){let i=this.parser.Parse(t);if(i.expression&&i.expression.type==="address")return this.ResolveSheetID(i.expression,void 0,r),{row:i.expression.row,column:i.expression.column,sheet_id:i.expression.sheet_id};if(i.expression&&i.expression.type==="range")return this.ResolveSheetID(i.expression,void 0,r),{start:{row:i.expression.start.row,column:i.expression.start.column,sheet_id:i.expression.start.sheet_id},end:{row:i.expression.end.row,column:i.expression.end.column}};if(i.expression&&i.expression.type==="identifier"){let s=this.model.named_ranges.Get(i.expression.name);if(s)return s}return{row:0,column:0}}return t}Evaluate(t,r,i={}){let s=this.parser.argument_separator,n=this.parser.flags.r1c1;i.argument_separator&&(i.argument_separator===","?(this.parser.argument_separator=",",this.parser.decimal_mark="."):(this.parser.argument_separator=";",this.parser.decimal_mark=",")),i.r1c1&&(this.parser.flags.r1c1=i.r1c1);let a=this.parser.Parse(t);if(this.parser.argument_separator=s,this.parser.decimal_mark=s===","?".":",",this.parser.flags.r1c1=n,a&&a.expression){this.parser.Walk(a.expression,l=>{if(l.type==="address"||l.type==="range"){if(l.type==="address"){if(l.offset_column||l.offset_row)throw new Error("Evaluate does not support offset references")}else if(l.start.offset_column||l.start.offset_row||l.end.offset_column||l.end.offset_row)throw new Error("Evaluate does not support offset references");this.ResolveSheetID(l,void 0,r)}return!0});let o=this.CalculateExpression(a.expression);return o.type===8?o.value.map(l=>l.map(c=>c.value)):o.value}throw a.error?new Error(a.error):new Error("invalid expression")}CalculateExpression(t,r={row:-1,column:-1},i=!1){return this.expression_calculator.Calculate(t,r,i).value}RebuildClean(t=!1){this.full_rebuild_required=!1,this.AttachModel(),this.RebuildGraph(),this.UpdateAnnotations(),this.InitializeGraph(),t&&this.volatile_list.length&&this.Recalculate()}FlattenCellList(t){let r={},i=[];for(let s of t){let n={column:s.column,row:s.row,sheet_id:s.sheet_id},a=v.CellAddressToLabel(n,!0);r[a]||(r[a]=a,i.push(n))}return i}RemoveAnnotation(t){let r=t.temp.vertex;r&&(r.Reset(),this.RemoveLeafVertex(r))}UpdateAnnotations(t,r){if(!t){for(let i of this.model.sheets.list)this.UpdateAnnotations(i.annotations,i);return}if(!r)throw new Error("invalid call to UpdateAnnotations with list but no sheet");typeof t<"u"&&!Array.isArray(t)&&(t=[t]);for(let i of t)if(i.data.formula){i.temp.vertex||(i.temp.vertex=new Ke);let s=i.temp.vertex;this.AddLeafVertex(s),this.UpdateLeafVertex(s,i.data.formula,r)}}ResolveSheetID(t,r,i){let s=t.type==="address"?t:t.start;if(s.sheet_id)return!0;if(s.sheet){let n=this.model.sheets.Find(s.sheet);if(n)return s.sheet_id=n.id,!0}else{if(r?.sheet_id)return s.sheet_id=r.sheet_id,!0;if(i?.id)return s.sheet_id=i.id,!0}return!1}ResolveExpressionAddress(t,r){switch(t.type){case"address":if(this.ResolveSheetID(t,r))return new v(t);break;case"range":if(this.ResolveSheetID(t,r))return new v(t.start,t.end);break;case"identifier":{let i=this.model.named_ranges.Get(t.name.toUpperCase());if(i)return new v(i.start,i.end)}break}}NamedRangeToAddressUnit(t){let r=t.name.toUpperCase(),i=this.model.named_ranges.Get(r);if(i)return i.count===1?this.ConstructAddressUnit(i.start,r,t.id,t.position):{type:"range",start:this.ConstructAddressUnit(i.start,r,t.id,t.position),end:this.ConstructAddressUnit(i.end,r,t.id,t.position),label:r,id:t.id,position:t.position}}ConstructAddressUnit(t,r,i,s){return{type:"address",row:t.row,column:t.column,sheet_id:t.sheet_id,label:r,id:i,position:s}}RebuildDependencies(t,r,i,s={addresses:{},ranges:{}},n){if(!i){let a=this.model.sheets.Find(r);a&&(i=a.name)}switch(t.type){case"literal":case"missing":case"operator":break;case"identifier":{let a=t.name.toUpperCase();if(this.model.named_expressions.has(a)){let o=this.model.named_expressions.get(a);o&&this.RebuildDependencies(o,r,i,s,n)}else{let o=this.NamedRangeToAddressUnit(t);o&&(o.type==="address"?s.addresses[o.label]=o:s.ranges[o.label]=o)}}break;case"structured-reference":{let a=this.model.ResolveStructuredReference(t,n);a&&(a.type==="address"?s.addresses[a.sheet_id+"!"+a.label]=a:s.ranges[a.label]=a);let o=this.model.tables.get(t.table.toLowerCase());if(o){let l=n.row;if(l<o.area.start.row||l>o.area.end.row)break;let c=t.column.toLowerCase(),h=-1;if(o.columns){for(let u=0;u<o.columns.length;u++)if(c===o.columns[u]){h=o.area.start.column+u;break}}if(h>=0){let u={label:t.label,type:"address",row:l,column:h,sheet_id:o.area.start.sheet_id,id:t.id,position:t.position};s.addresses[u.sheet_id+"!"+u.label]=u}}}break;case"address":if(!t.sheet_id)if(t.sheet){let a=this.model.sheets.Find(t.sheet);a&&(t.sheet_id=a.id)}else t.sheet_id=r,t.sheet=i;t.sheet_id?s.addresses[t.sheet_id+"!"+t.label]=t:console.warn("invalid address in range [9d]");break;case"range":if(!t.start.sheet_id)if(t.start.sheet){let a=this.model.sheets.Find(t.start.sheet);a&&(t.start.sheet_id=a.id)}else t.start.sheet_id=r,t.start.sheet=i;t.start.sheet_id?s.ranges[t.start.sheet_id+"!"+t.start.label+":"+t.end.label]=t:console.warn("invalid sheet in range",t);break;case"unary":this.RebuildDependencies(t.operand,r,i,s,n);break;case"binary":this.RebuildDependencies(t.left,r,i,s,n),this.RebuildDependencies(t.right,r,i,s,n);break;case"group":t.elements.forEach(a=>this.RebuildDependencies(a,r,i,s,n));break;case"call":{let a=t.args.slice(0),o=this.library.Get(t.name);o&&o.arguments&&o.arguments.forEach((l,c)=>{l&&l.address&&(this.RebuildDependencies(a[c],r,i,void 0,n),a[c]={type:"missing",id:-1})}),a.forEach(l=>this.RebuildDependencies(l,r,i,s,n))}break}return s}UpdateLeafVertex(t,r,i){t.Reset();let s=this.parser.Parse(r);if(s.expression){let n=this.RebuildDependencies(s.expression,i.id,i.name,void 0,{row:0,column:0});for(let a of Object.keys(n.ranges)){let o=n.ranges[a];new v(o.start,o.end).Iterate(c=>{this.AddLeafVertexEdge(c,t)})}for(let a of Object.keys(n.addresses)){let o=n.addresses[a];this.AddLeafVertexEdge(o,t)}}t.expression=s.expression||{type:"missing",id:-1},t.expression_error=!s.valid}RebuildGraphCell(t,r){if(t.area&&t.area.start.column===r.column&&t.area.start.row===r.row){let{start:i,end:s}=t.area,n=i.sheet_id||r.sheet_id;i.sheet_id||(i.sheet_id=n);for(let a=i.column;a<=s.column;a++)for(let o=i.row;o<=s.row;o++)this.ResetInbound({column:a,row:o,sheet_id:n},!0,!1);this.SetDirty(r);for(let a=i.column;a<=s.column;a++)for(let o=i.row;o<=s.row;o++)o===i.row&&a===i.column||this.AddEdge(i,{...i,row:o,column:a})}if(t.type===1){this.ResetInbound(r,!0);let i=this.parser.Parse(t.value);if(i.expression){if(i.expression.type==="call"){let a=this.library.Get(i.expression.name);a&&(a.render||a.click)&&(t.render_function=a.render,t.click_function=a.click)}let n=this.RebuildDependencies(i.expression,r.sheet_id,"",void 0,r);for(let a of Object.keys(n.ranges)){let o=n.ranges[a],l=new v(o.start,o.end);l.entire_row||l.entire_column?this.AddArrayEdge(l,r):l.Iterate(c=>this.AddEdge(c,r))}for(let a of Object.keys(n.addresses)){let o=n.addresses[a];this.AddEdge(o,r)}}let s=this.GetVertex(r,!0);s&&(s.expression=i.expression||{type:"missing",id:-1},s.expression_error=!i.valid)}else t.value!==t.calculated?this.ResetInbound(r,!0,!1):t.type===0&&this.ResetInbound(r,!0,!1,!0)}RebuildGraph(t){if(t){if(!t.start.sheet_id)throw new Error("subset missing sheet id");let r=this.model.sheets.Find(t.start.sheet_id)?.cells;if(r)for(let i=t.start.row;i<=t.end.row;i++){let s=r.data[i];if(s)for(let n=t.start.column;n<=t.end.column;n++){let a=s[n];a&&this.RebuildGraphCell(a,{row:i,column:n,sheet_id:t.start.sheet_id})}}}else for(let r of this.model.sheets.list||[]){let i=r.cells.data.length;for(let s=0;s<i;s++){let n=r.cells.data[s];if(n){let a=n.length;for(let o=0;o<a;o++){let l=n[o];l&&this.RebuildGraphCell(l,{row:s,column:o,sheet_id:r.id})}}}}}IsNativeOrTypedArray(t){return Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array}CheckVolatile(t){if(!t.expression||t.expression_error)return!1;let r=!1;return this.parser.Walk(t.expression,i=>{if(i.type==="call"){let s=this.library.Get(i.name);s&&s.volatile&&(r=!0)}return!r}),r}};var er=class{constructor(e){this.model={};this.visible_=!1;this.timeout=0;this.pending_dialog_resoltion=[];this.options_={type:"initial"};this.event_handler=e=>{(e.key==="Escape"||e.key==="Esc")&&(e.stopPropagation(),e.preventDefault(),this.visible=!1)};this.layout_element=e.parentElement;let t=this.layout_element?.querySelector(".treb-dialog-mask");if(t){let r=t.querySelectorAll("[data-bind]");for(let i of Array.from(r)){let s=i.dataset.bind;s&&(this.model[s]=i)}}if(this.model.about){let r=["<div>TREB version 25.9.1"];r.push("<small><a target=_blank href='https://treb.app'>http://treb.app</a></small>"),this.model.about.innerHTML=r.join(`
11
- `)}this.model.close?.addEventListener("click",r=>{r.stopPropagation(),r.preventDefault(),this.HideDialog()})}set options(e){if(e.type==="about"&&(e.close_box=!0,e.icon=!0),this.options_.icon!==e.icon&&(this.model.left.style.display=e.icon?"block":"none"),this.options_.close_box!==e.close_box&&(this.model.close.style.display=e.close_box?"block":"none"),this.options_.message!==e.message&&(this.model.message.textContent=e.message||"",this.model.message.style.display=e.message?"block":"none"),this.options_.title!==e.title&&(this.model.title.textContent=e.title||"",this.model.title.style.display=e.title?"block":"none"),this.options_.type!==e.type){let t=this.model.dialog.className.replace(/dialog-type-\S+/g,"").trim();e.type&&(t+=` dialog-type-${e.type}`),this.model.dialog.className=t,e.type==="about"?this.model.about.style.display="block":this.model.about.style.display="none"}this.options_=e}get visible(){return this.visible_}set visible(e){if(e!==this.visible_)if(this.visible_=e,e)this.layout_element?.setAttribute("dialog",""),window.addEventListener("keydown",this.event_handler);else{this.layout_element?.removeAttribute("dialog"),window.removeEventListener("keydown",this.event_handler);let t=this.pending_dialog_resoltion.slice(0);this.pending_dialog_resoltion=[],Promise.resolve().then(()=>{for(let r of t)r()})}}Update(e,t=!0){t&&(e={...this.options_,...e}),this.options=e}HideDialog(){this.visible=!1}ShowDialog(e){return new Promise(t=>{this.pending_dialog_resoltion.push(t),this.options=e,this.visible=!0,this.timeout&&(window.clearTimeout(this.timeout),this.timeout=0),e.timeout&&(this.timeout=window.setTimeout(()=>this.HideDialog(),e.timeout))})}};var tr=class{constructor(e){this.container=e;this.visible=!1;this.node=document.createElement("div"),this.node.classList.add("treb-spinner"),this.node.innerHTML="<div><div></div><div></div><div></div><div></div></div>",e.appendChild(this.node)}Show(){this.node.classList.add("visible")}Hide(){this.node.classList.remove("visible")}};var Qi={formula_bar:!0,in_cell_editor:!0,undo:!0,scrollbars:!0,headers:!0,export:!0,tab_bar:"auto",resizable:!0,hyperlinks:"_blank",max_file_size:94208,tint_theme_colors:!0,dnd:!1,add_tab:!1,expand_formula_button:!1,expand:!0,markdown:!1,spinner:!1,complex:"off"};var Ie=class{constructor(e=0,t=0,r=100,i=100){this.left=e;this.top=t;this.right=r;this.bottom=i}get width(){return this.right-this.left}get height(){return this.bottom-this.top}get center(){return{x:this.left+this.width/2,y:this.top+this.height/2}}};var yt="http://www.w3.org/2000/svg",I=(d,e={},t)=>{let r=document.createElementNS(yt,d);for(let i of Object.keys(e))if(e[i]!==void 0){let s=e[i];r.setAttribute(i,Array.isArray(s)?s.join(" "):s.toString())}return t&&(r.textContent=t),r},rr=class{constructor(){this.size={width:0,height:0};this.bounds=new Ie;this.container_group=I("g"),this.group=I("g"),this.axis_group=I("g",{class:"axis-group"}),this.label_group=I("g",{class:"label-group"}),this.container_group.appendChild(this.axis_group),this.container_group.appendChild(this.group),this.container_group.appendChild(this.label_group)}Initialize(e){this.parent=e,this.svg_node=I("svg",{class:"treb-chart"}),this.svg_node.style.overflow="hidden",this.svg_node.style.position="relative",this.svg_node.style.width="100%",this.svg_node.style.height="100%",this.svg_node.appendChild(this.container_group),this.parent.appendChild(this.svg_node),this.Resize()}Legend(e){let t=I("g");this.group.appendChild(t);let r=I("text");t.appendChild(r),t.setAttribute("class","legend");let i=[[]],s=10,n=e.area.width,a=0,o=0,l=e.area.width,c=e.style===1?14:26,h=e.labels.map((p,g)=>{r.textContent=p.label;let _=r.getBoundingClientRect(),y={width:_.width,height:_.height},x=y.width+c+s;return o=Math.max(o,y.height),e.layout===1?i[g]=[g]:x>n?i[a].length===0?(i[a].push(g),a++,i[a]=[],n=l):(a++,i[a]=[g],n=l-x):(i[a].push(g),n-=x),y});t.removeChild(r);let u=o,m=e.layout||0;m===0&&i.every(p=>p.length<=1)&&(m=0);for(let p=0;p<i.length;p++){let g=i[p].reduce((x,w)=>x+h[w].width+c,(i[p].length-1)*s),_=0,y=m===0?Math.round((l-g)/2):Math.round(s/2);for(let x=0;x<i[p].length;x++){let w=i[p][x],A=h[w],S=e.labels[w],E=u-1,F=!1;typeof navigator<"u"&&(F=/trident/i.test(navigator?.userAgent||""));let $=typeof S.index=="number"?S.index:w+1;t.appendChild(I("text",{"dominant-baseline":"middle",x:y+c,y:u,dy:F?".3em":void 0},S.label)),e.style===1?t.appendChild(I("rect",{class:`series-${$}`,x:y,y:E-4,width:8,height:8})):t.appendChild(I("rect",{class:`series-${$}`,x:y,y:E-1,width:c-3,height:2})),_=Math.max(_,A.height),y+=A.width+c+s}u=Math.round(u+_*1.1)}let f=t.getBoundingClientRect(),b={width:f.width,height:f.height+o};switch(e.position){case 1:t.setAttribute("transform",`translate(${e.area.left}, ${e.area.bottom-b.height})`);break;case 2:t.setAttribute("transform",`translate(${e.area.left}, ${e.area.top})`);break;case 3:t.setAttribute("transform",`translate(${e.area.right-b.width}, ${e.area.top})`);break;case 0:default:t.setAttribute("transform",`translate(${e.area.left}, ${e.area.top})`)}e.position===0?e.area.top+=b.height||0:e.position===3?e.area.right-=(b.width||0)+8:e.position===2?e.area.left+=(b.width||0)+8:e.area.bottom-=b.height||0}Clear(e){this.group.textContent="",this.axis_group.textContent="",this.label_group.textContent="",e="treb-chart"+(e?" "+e:""),this.svg_node.setAttribute("class",e)}Resize(){let e=this.parent.getBoundingClientRect();this.svg_node.setAttribute("width",e.width.toString()),this.svg_node.setAttribute("height",e.height.toString()),this.size={width:e.width,height:e.height}}Prerender(){let e=this.svg_node.getBoundingClientRect();this.bounds.top=e.top,this.bounds.left=e.left,this.bounds.right=e.right,this.bounds.bottom=e.bottom}RenderTitle(e,t,r,i){let s=I("text",{class:"chart-title",x:Math.round(t.width/2)},e);s.style.textAnchor="middle",this.group.appendChild(s);let n=s.getBoundingClientRect();switch(i){case"bottom":s.setAttribute("y",Math.round(t.bottom-n.height).toString()),t.bottom-=n.height+r;break;default:s.setAttribute("y",Math.round(t.top+r+n.height).toString()),t.top+=n.height+r;break}}MeasureText(e,t,r=!1){this.text_measurement_node||(this.text_measurement_node=I("text",{x:"-100px",y:"-100px"}),this.svg_node.appendChild(this.text_measurement_node)),typeof t<"u"?(typeof t=="string"&&(t=[t]),this.text_measurement_node.setAttribute("class",t.join(" "))):this.text_measurement_node.setAttribute("class",""),this.text_measurement_node.textContent=e;let i=this.text_measurement_node.getBoundingClientRect(),s={width:i.width,height:i.height,y_offset:i.height-(this.bounds.top-i.top-100)};return r&&(s.width=Math.ceil(s.width),s.height=Math.ceil(s.height),s.y_offset=Math.ceil(s.y_offset)),s}RenderTicks(e,t,r,i,s){let n=[],a=e.width/i;for(let o=0;o<i;o++){let l=Math.round(e.left+a/2+a*o)-.5;n.push(`M${l} ${t} L${l} ${r}`)}this.group.appendChild(I("path",{d:n,class:s}))}RenderXAxisBar(e,t,r,i,s){let n=r.length;if(!n)return;let a=4,o=t?e.width/n:e.width/(n-1),l=t?o/2:0,c=1,h=!0;for(;h;){h=!1;let u=0;for(let m=0;m<n;m+=c){let f=Math.round(e.left+l+o*m),b=f-i[m].width/2;if(u&&b<=u){c++,h=!0;break}u=f+i[m].width/2+a}}for(let u=0;u<n;u+=c){let m=Math.round(e.left+l+o*u);this.RenderText(this.axis_group,r[u],"center",{x:m,y:e.bottom},s)}}RenderXAxisTicks(e,t,r){let i=t?e.width/r:e.width/(r-1),s=t?i/2:0,n=[];for(let a=0;a<r;a++){let o=Math.round(e.left+s+i*a)+.5;n.push(`M${o},${e.bottom+.5} v6`)}this.axis_group.appendChild(I("path",{d:n.join(" "),class:"x-axis-tick axis-tick"}))}RenderXAxis(e,t,r,i,s){let n=r.length;if(!n)return;let a=4,o=t?e.width/n:e.width/(n-1),l=t?o/2:0,c=1,h=!0,u=(r.length-1)%2===0,m=(r.length-1)%3===0;for(;h;){h=!1;let f=0;for(let b=0;b<n;b+=c){let p=Math.round(e.left+l+o*b),g=p-i[b].width/2;if(f&&g<=f){c++,h=!0;break}f=p+i[b].width/2+a}}c===3&&!m&&u&&c++;for(let f=0;f<n;f+=c){let b=Math.round(e.left+l+o*f);this.RenderText(this.axis_group,r[f],"center",{x:b,y:e.bottom},s)}}RenderYAxisBar(e,t,r,i){r=r.slice(0),r.reverse();let s=r.length;if(!s)return;let n=e.height/s,a=1,o=!0;for(;o;){o=!1;let l=0;for(let c=0;c<s;c+=a){let h=r[c],u=Math.round(e.bottom-n*(c+.5)+h.metrics.height/4);if(l&&u>=l){a++,o=!0;break}l=u-h.metrics.height}}for(let l=0;l<s;l+=a){let c=r[l],h=Math.round(e.bottom-n*(l+.5)+c.metrics.height/4);this.RenderText(this.axis_group,c.label,"right",{x:t,y:h},i)}}RenderYAxis(e,t,r,i){let s=r.length;if(!s)return;let n=e.height/(s-1),a=1,o=!0;for(;o;){o=!1;let l=0;for(let c=0;c<s;c+=a){let h=r[c],u=Math.round(e.bottom-n*c+h.metrics.height/4);if(l&&u>=l){a++,o=!0;break}l=u-h.metrics.height}}for(let l=0;l<s;l+=a){let c=r[l],h=Math.round(e.bottom-n*l+c.metrics.height/4);this.RenderText(this.axis_group,c.label,"right",{x:t,y:h},i)}}LineProperties(e,t){let r=t.x-e.x,i=t.y-e.y;return{length:Math.sqrt(r*r+i*i),angle:Math.atan2(i,r)}}RenderSmoothLine(e,t,r=!1,i,s){let n=I("g"),a=[],o=[],l=t.length,c=l-1,h=e.width/l/2,u=[],m=t.map((p,g)=>{if(!(typeof p>"u"))return{x:Math.round(e.left+e.width/c*g),y:e.bottom-p}}),f=[],b=()=>{if(f.length<2)return;let p="",g=f[0],_=f[f.length-1];f.length===2?p=`${f[0].x},${f[0].y} L${f[1].x},${f[1].y}`:f.length>2&&(p=""+this.CatmullRomChain(f).map(x=>`${x.x},${x.y}`).join(" L")),p&&(a.push("M"+p),r&&(o.push(`M ${g.x},${e.bottom} L ${g.x},${g.y}`),o.push("L"+p),o.push(`L ${_.x},${e.bottom}`)))};for(let p of m)p?f.push(p):(b(),f=[]);if(f.length&&b(),r&&n.appendChild(I("path",{class:"fill",d:o})),n.appendChild(I("path",{class:"line",d:a})),typeof s<"u"&&(typeof s=="string"&&(s=[s]),n.setAttribute("class",s.join(" "))),this.group.appendChild(n),i&&u.length){let p=document.createElementNS(yt,"g");for(let g of u){let _=I("circle",{cx:g.x,cy:g.y,r:h});_.addEventListener("mouseenter",y=>{this.parent.setAttribute("title",i[g.i]||"")}),_.addEventListener("mouseleave",y=>{this.parent.setAttribute("title","")}),p.appendChild(_)}p.setAttribute("class","mouse-layer"),this.group.appendChild(p)}}RenderLine(e,t,r=!1,i,s){let n=document.createElementNS(yt,"g"),a=[],o=[],l=t.length,c=l-1,h=e.width/l/2,u=[],m=0,f=!0,b;for(;m<l;m++){let p=t[m];if(typeof p>"u"){f=!0,r&&typeof b<"u"&&o.push(`L${b} ${e.bottom}Z`),b=void 0;continue}let g=Math.round(+e.left+e.width/c*m);f?(r&&o.push(`M${g} ${e.bottom} L${g} ${e.bottom-p}`),a.push(`M${g} ${e.bottom-p}`)):(a.push(`L${g} ${e.bottom-p}`),o.push(`L${g} ${e.bottom-p}`)),u.push({x:g,y:e.bottom-p,i:m}),b=g,f=!1}if(r&&typeof b<"u"&&o.push(`L${b} ${e.bottom}Z`),r&&n.appendChild(I("path",{class:"fill",d:o})),n.appendChild(I("path",{class:"line",d:a})),typeof s<"u"&&(typeof s=="string"&&(s=[s]),n.setAttribute("class",s.join(" "))),this.group.appendChild(n),i&&u.length){let p=document.createElementNS(yt,"g");for(let g of u){let _=I("circle",{cx:g.x,cy:g.y,r:h});_.addEventListener("mouseenter",y=>{this.parent.setAttribute("title",i[g.i]||"")}),_.addEventListener("mouseleave",y=>{this.parent.setAttribute("title","")}),p.appendChild(_)}p.setAttribute("class","mouse-layer"),this.group.appendChild(p)}}RenderBarGrid(e,t,r){let i=[],s=e.width/t;for(let n=0;n<=t;n++){let a=Math.round(e.left+s*n)-.5;i.push(`M${a} ${e.top} L${a} ${e.bottom}`)}this.group.appendChild(I("path",{d:i,class:r}))}RenderGrid(e,t,r=0,i){let s=[],n=e.height/t;for(let a=0;a<=t;a++){let o=Math.round(e.top+n*a)-.5;s.push(`M${e.left} ${o} L${e.right} ${o}`)}n=e.width/(r-1);for(let a=0;a<r;a++){let o=Math.round(e.left+n*a)-.5;s.push(`M${o} ${e.top} L${o} ${e.bottom}`)}this.group.appendChild(I("path",{d:s,class:i}))}MultiplyPoint(e,t){return{x:e.x*t,y:e.y*t}}AddPoints(e,t){return{x:e.x+t.x,y:e.y+t.y}}CatmullRomSpline(e,t){let r=.5;r=r/2;let i=(h,u,m)=>{let{x:f,y:b}=u,{x:p,y:g}=m;return((p-f)**2+(g-b)**2)**r+h},s=0,n=i(s,e[0],e[1]),a=i(n,e[1],e[2]),o=i(a,e[2],e[3]),l=(a-n)/t,c=[];for(let h=0;h<t;h++){let u=n+l*h,m=this.AddPoints(this.MultiplyPoint(e[0],(n-u)/(n-s)),this.MultiplyPoint(e[1],(u-s)/(n-s))),f=this.AddPoints(this.MultiplyPoint(e[1],(a-u)/(a-n)),this.MultiplyPoint(e[2],(u-n)/(a-n))),b=this.AddPoints(this.MultiplyPoint(e[2],(o-u)/(o-a)),this.MultiplyPoint(e[3],(u-a)/(o-a))),p=this.AddPoints(this.MultiplyPoint(m,(a-u)/(a-s)),this.MultiplyPoint(f,(u-s)/(a-s))),g=this.AddPoints(this.MultiplyPoint(f,(o-u)/(o-n)),this.MultiplyPoint(b,(u-n)/(o-n))),_=this.AddPoints(this.MultiplyPoint(p,(a-u)/(a-n)),this.MultiplyPoint(g,(u-n)/(a-n)));c.push(_)}return c}CatmullRomChain(e,t=30){let r=e.slice(0),i=[],s=r.length;if(s){let n=r[s-1].x-r[s-2].x,a=r[s-1].y-r[s-2].y;r.push({x:r[s-1].x+n,y:r[s-1].y+a}),r.push({x:r[s-1].x+n,y:r[s-1].y+a}),n=r[1].x-r[0].x,a=r[1].y-r[0].y,r.unshift({x:r[0].x-n,y:r[0].y-a});for(let o=0;o<r.length-4;o++){let l=r.slice(o,o+4),c=this.CatmullRomSpline(l,t);i.push(...c)}}return i}RenderDataLabels(e,t,r,i,s,n,a){let o=Math.max(t.length,r.length),l=i.max-i.min||1,c=s.max-s.min||1;for(let h=0;h<o;h++){let u=t[h],m=r[h];if(u!==void 0&&m!==void 0){let f={x:e.left+(u-i.min)/l*e.width,y:e.bottom-(m-s.min)/c*e.height},b=n[h];if(b){this.label_group.appendChild(I("circle",{class:"label-target",cx:f.x,cy:f.y,r:10}));let p=I("g",{class:"data-label",transform:`translate(${f.x+10},${f.y})`});this.label_group.appendChild(p);let g=I("circle",{cx:-10,y:0,r:5,class:`marker-highlight series-${a}`});p.appendChild(g);let _=I("text",{x:4,y:0},b);p.appendChild(_);let y=_.getBoundingClientRect(),x=y.height,w=y.width+8;w+15+f.x>=e.right&&(p.setAttribute("transform",`translate(${f.x-w-15},${f.y})`),g.setAttribute("cx",(w+15).toString()));let A=I("path",{d:`M0,5 h${w} v-${x} h-${w} Z`});p.insertBefore(A,_)}}}}RenderScatterSeries(e,t,r,i,s,n=!0,a=!1,o=!1,l=!1,c=!1,h){let u=Math.max(t.length,r.length),m=i.max-i.min||1,f=s.max-s.min||1,b=[],p=[],g=[],_=I("g",{class:h});this.group.appendChild(_);for(let y=0;y<u;y++){let x=t[y],w=r[y];typeof x>"u"||typeof w>"u"?b.push(void 0):b.push({x:e.left+(x-i.min)/m*e.width,y:e.bottom-(w-s.min)/f*e.height})}if(n){let y=[],x=c?()=>y.length===2?`${y[0].x},${y[0].y} L${y[1].x},${y[1].y}`:y.length>2?this.CatmullRomChain(y).map(A=>`${A.x},${A.y}`).join(" L"):"":()=>y.map(w=>`${w.x},${w.y}`).join(" L");for(let w of b)if(w)y.push(w);else{if(y.length>=2){let A=x();p.push("M"+A),g.push(`M${y[0].x},${e.bottom}L`+A+`L${y[y.length-1].x},${e.bottom}Z`)}y=[]}if(y.length>=2){let w=x();p.push("M"+w),g.push(`M${y[0].x},${e.bottom}L`+w+`L${y[y.length-1].x},${e.bottom}Z`)}}if(o&&_.appendChild(I("path",{d:g,class:"fill"})),n&&_.appendChild(I("path",{d:p,class:"line"})),a)for(let y of b)y&&_.appendChild(I("circle",{cx:y.x,cy:y.y,r:1,class:"point"}));if(l)for(let y of b)y&&_.appendChild(I("circle",{cx:y.x,cy:y.y,r:3,class:"marker"}))}RenderPoints(e,t,r,i){let s=[];for(let n=0;n<t.length;n++){let a=t[n]*e.width+e.left,o=e.bottom-r[n]*e.height;s.push(`M${a-1},${o-1} L${a+1},${o+1}`),s.push(`M${a-1},${o+1} L${a+1},${o-1}`)}this.group.appendChild(I("path",{d:s,class:i}))}RenderPoint(e,t,r){this.group.appendChild(I("circle",{cx:e,cy:t,r:1,class:r}))}RenderCalloutLines(e){let t=I("g",{class:"callouts"});this.label_group.appendChild(t);for(let r of e)t.appendChild(I("path",{d:`M${r.x1},${r.y1} L${r.x2},${r.y2}`,class:"callout "+(r.classes||"").trim()}))}RenderRectangle(e,t,r,i,s,n){let a="";if(t)if(t[0]&&t[0]===t[1]&&t[0]>=e.height){let l=t[0],c=t[0]-e.height,h=Math.sqrt(l*l-c*c);a=`M${e.left+e.width/2-h},${e.bottom} a${l},${l} 0 0 1 ${h*2},0 z`}else if(t[1]&&t[1]===t[2]&&t[1]>=e.width){let l=t[1],c=t[1]-e.width,h=Math.sqrt(l*l-c*c);a=`M${e.left},${e.top+e.height/2-h} a${l},${l} 0 0 1 0,${h*2} z`}else a=`M${e.left},${e.top+t[0]} a${t[0]},${t[0]} 0 0 1 ${t[0]},${-t[0]} h${e.width-t[0]-t[1]} a${t[1]},${t[1]} 0 0 1 ${t[1]},${t[1]} v${e.height-t[1]-t[2]} a${t[2]},${t[2]} 0 0 1 ${-t[2]},${t[2]} h${-e.width+t[2]+t[3]} a${t[3]},${t[3]} 0 0 1 ${-t[3]},${-t[3]} v${-e.height+t[3]+t[0]} `;else a=`M${e.left},${e.top} h${e.width} v${e.height} h${-e.width} v${-e.height} `;let o=I("path",{d:a,class:r});if(i&&(o.addEventListener("mouseenter",l=>{this.parent.setAttribute("title",i)}),o.addEventListener("mouseleave",l=>{this.parent.setAttribute("title","")})),this.group.appendChild(o),s){this.label_group.appendChild(I("path",{class:"label-target",d:a}));let l=n||{x:Math.round(e.left+e.width/2),y:Math.round(e.top-10)},c=I("g",{class:"data-label",transform:`translate(${l.x},${l.y})`});this.label_group.appendChild(c);let h=I("text",{x:0,y:0},s);c.appendChild(h);let u=h.getBoundingClientRect(),m=u.height,f=u.width+8;l.y-u.height<4&&(l.y-=l.y-u.height-4,c.setAttribute("transform",`translate(${l.x},${l.y})`)),h.setAttribute("x",Math.floor(-u.width/2).toString());let b=Math.ceil(m*.125),p=I("rect",{rx:3,x:-f/2,y:Math.round(-m+b*2/3),width:f,height:m+b});c.insertBefore(p,h)}}RenderText(e,t,r,i,s){let n=I("text",{x:i.x,y:i.y,class:s},t);switch(r){case"right":n.style.textAnchor="end";break;case"center":n.style.textAnchor="middle";break;default:n.style.textAnchor="start";break}(e||this.group).appendChild(n)}RenderDonut(e,t,r,i,s,n,a){let o=-Math.PI/2,l=0;n&&(r*=.8,i*=.7);let c=(h,u,m)=>[Math.cos(m)*u+h.x,Math.sin(m)*u+h.y];for(let h of e){let u=h.title||"",m=h.percent,f=h.index,b=[],p=0,g=c.bind(0,t,r),_=c.bind(0,t,i);if(m>.5){p=o+m/2*Math.PI*2,l=o+m*Math.PI*2;let w=p-o,A=l-p;b.push(`M${g(o)}`,`A${r},${r},${w},0,1,${g(p)}`,`A${r},${r},${A},0,1,${g(l)}`,`L${_(l)}`,`A${i},${i},${A},0,0,${_(p)}`,`A${i},${i},${w},0,0,${_(o)}`,"Z")}else{l=o+m*Math.PI*2,p=(l-o)/2+o;let w=l-o;b.push(`M${g(o)}`,`A${r},${r},${w},0,1,${g(l)}`,`L${_(l)}`,`A${i},${i},${w},0,0,${_(o)}`,"Z")}let y=I("path",{d:b,class:typeof f>"u"?void 0:`series-${f}`});typeof f<"u"&&y.setAttribute("data-index",f.toString());let x=I("g",{class:a});if(x.appendChild(y),this.group.appendChild(x),m>=.05&&u){let w=r-i;b=[];let A=c(t,i+(r-i)/2+w,p);b.push(`M${c(t,i+(r-i)/2,p)}`),b.push(`L${A}`),x.appendChild(I("path",{d:b,class:"callout"}));let S=[],E=I("text",{class:"callout-label"});x.appendChild(E);let F=p+Math.PI/2,$=u;E.textContent=$;let te=E.getBoundingClientRect(),me={width:te.width,height:te.height},[ie,C]=A;ie+=me.height/2*Math.cos(p),C+=me.height/4+me.height/2*Math.sin(p);let K=!1;F>Math.PI?ie-me.width<=s.left&&(K=!0):ie+me.width>s.right&&(K=!0);let se=/[\s-]/;if(K&&se.test($)){let J=-1,X=1,Q=[];for(let N=0;N<$.length;N++)if(se.test($[N])){let B=Math.abs(.5-N/$.length);B<X&&(X=B,J=N)}J>0&&(S.push($.substr(0,J+1).trim()),S.push($.substr(J+1).trim()))}if(S.length){let J=0,X=0,Q=S.map(N=>{E.textContent=N,te=E.getBoundingClientRect();let B={width:te.width,height:te.height};return X=Math.max(X,B.width),{text:N,metrics:B}});E.textContent="";for(let N of Q){let B=document.createElementNS(yt,"tspan");B.textContent=N.text;let ts=F>Math.PI?ie-(X-N.metrics.width)/2:ie+(X-N.metrics.width)/2;B.setAttribute("x",ts.toString()),B.setAttribute("dy",J.toString()),E.appendChild(B),J=N.metrics.height}}let ne=F>Math.PI?"end":"start";E.setAttribute("text-anchor",ne),E.setAttribute("x",ie.toString()),E.setAttribute("y",C.toString()),typeof f<"u"&&E.setAttribute("data-index",f.toString())}o=l}}};var P=class{static Scale(e,t,r=6.5){return ci(e,t,r)}static Range(e){let t,r;for(let s of e)typeof s>"u"||((typeof t>"u"||t>s)&&(t=s),(typeof r>"u"||r<s)&&(r=s));let i=typeof t>"u"||typeof r>"u"?0:r-t;return{min:t,max:r,range:i}}static ApplyScale(e,t,r){return t*(e-r.min)/(r.max-r.min)}static Flatten(e){let t=[];if(Array.isArray(e))for(let r of e)Array.isArray(r)?t=t.concat(this.Flatten(r)):t.push(r);else typeof e<"u"&&t.push(e);return t}};var jr="#,##0.00",et=class{constructor(e=new rr){this.renderer=e;this.chart_data={type:"null"};this.margin={top:.025,left:.05,bottom:.025,right:.075}}Initialize(e){this.renderer.Initialize(e)}Exec(e,t){let r=t?.value||[];switch(e.toLowerCase()){case"column.chart":this.CreateColumnChart(r,"column");break;case"bar.chart":this.CreateColumnChart(r,"bar");break;case"line.chart":this.CreateLineChart(r,"line");break;case"area.chart":this.CreateLineChart(r,"area");break;case"donut.chart":case"pie.chart":this.CreateDonut(r,e.toLowerCase()==="pie.chart");break;case"scatter.plot":this.CreateScatterChart(r,"plot");break;case"scatter.line":this.CreateScatterChart(r,"line");break;default:this.Clear();break}}Clear(){this.chart_data={type:"null"}}CreateColumnChart(e,t){let r=this.TransformSeriesData(e[0]),i=this.CommonData(r),s;if(e[1]){s=(e[1].type===8?P.Flatten(e[1].value):P.Flatten(e[1])).map(c=>c?c.type===5&&c.value.type==="metadata"?typeof c.value.value=="number"?M.Get(c.value.format||jr).Format(c.value.value):c.value.value:typeof c.value=="number"?M.Get(c.format||jr).Format(c.value):c.value:"");let l=r.reduce((c,h)=>Math.max(c,h.y.data.length),0);for(l<s.length&&(s=s.slice(0,l));l>s.length;)s.push("")}let n=e[2]?.toString()||void 0,a=e[3]?.toString()||void 0;if(this.chart_data={type:t,legend:i.legend,legend_style:1,series2:r,scale:i.y.scale,title:n,y_labels:t==="bar"?s:i.y.labels,x_labels:t==="bar"?i.y.labels:s},a){this.chart_data.round=/round/i.test(a),this.chart_data.data_labels=/labels/i.test(a);let o=a.match(/labels="(.*?)"/);o&&r?this.ApplyLabels(r,o[1],s):(o=a.match(/labels=([^\s\r\n,]+)(?:\W|$)/),o&&r&&this.ApplyLabels(r,o[1],s)),o=a.match(/class=([\w_-]+)(?:\W|$)/),o&&(this.chart_data.class_name=o[1])}}ReadSeries(e){let t={x:{data:[]},y:{data:[]}};if(e[3]&&typeof e[3]=="number"&&(t.index=e[3]),e[4]&&(t.subtype=e[4].toString()),e[0]){let r=P.Flatten(e[0]);typeof r[0]=="object"?t.label=r[0]?.value?.toString()||"":t.label=r[0].toString()}if(e[2]&&typeof e[2]=="object"&&e[2].type===8){let r=P.Flatten(e[2].value);if(t.y.data=r.map(i=>typeof i.value.value=="number"?i.value.value:void 0),r[0].value?.format){t.y.format=r[0].value?.format;let i=M.Get(t.y.format);t.y.labels=t.y.data.map(s=>s===void 0?void 0:i.Format(s))}}if(e[1]&&typeof e[1]=="object"&&e[1].type===8){let r=P.Flatten(e[1].value);t.x.data=r.map(i=>typeof i.value.value=="number"?i.value.value:void 0),r[0].value.format&&(t.x.format=r[0].value.format)}for(let r of[t.x,t.y])if(r.data.length){let i=r.data.filter(s=>s||s===0);r.range={min:Math.min.apply(0,i),max:Math.max.apply(0,i)}}return t}ArrayToSeries(e){let t={x:{data:[]},y:{data:[]}},r=P.Flatten(e.value);if(t.y.data=r.map((s,n)=>typeof s.value=="number"?s.value:typeof s.value.value?.real=="number"?(t.x.data[n]=s.value.value.real,s.value.value.imaginary):typeof s.value.value=="number"?s.value.value:void 0),r[0].value.format){t.y.format=r[0].value.format||"";let s=M.Get(t.y.format||"");t.y.labels=t.y.data.map(n=>n===void 0?void 0:s.Format(n))}let i=t.y.data.filter(s=>s||s===0);if(t.y.range={min:Math.min.apply(0,i),max:Math.max.apply(0,i)},t.x.data.length){let s=t.x.data.filter(n=>typeof n=="number");if(t.x.range={min:Math.min.apply(0,s),max:Math.max.apply(0,s)},r[0].value.format){t.x.format=r[0].value.format||"";let n=M.Get(t.x.format||"");t.x.labels=t.x.data.map(a=>a===void 0?void 0:n.Format(a))}}return t}TransformSeriesData(e,t){if(!e)return[];let r=[];if(e.type===5){if(e.key==="group"){if(Array.isArray(e.value)){for(let n of e.value)if(n&&typeof n=="object")if(n.key==="series"){let a=this.ReadSeries(n.value);r.push(a)}else n.type===8&&r.push(this.ArrayToSeries(n))}}else if(e.key==="series"){let n=this.ReadSeries(e.value);r.push(n)}}else e.type===8&&r.push(this.ArrayToSeries(e));let i,s=0;if(t?.type===8){let n=P.Flatten(t.value),a="0.00###";n[0]&&n[0].type===5&&(a=n[0].value.format);let o=n.map(c=>{if(c.type===3)return c.value;if(c.type===5)return c.value.value}),l=o.filter(c=>typeof c=="number");i={data:o,format:a,range:{min:Math.min.apply(0,l),max:Math.max.apply(0,l)}}}for(let n of r)s=Math.max(s,n.y.data.length),n.x.data.length&&(i||(i=n.x));if(!i){i={data:[],range:{min:0,max:Math.max(0,s-1)}};for(let n=0;n<s;n++)i.data.push(n)}for(let n of r)n.x.data.length||(n.x=i);return r}CommonData(e,t,r){let i="",s="";for(let g of e)g.y.format&&!s&&(s=g.y.format),g.x.format&&!i&&(i=g.x.format);let n;e.some(g=>g.label&&g.label.length>0)&&(n=e.map((g,_)=>({label:g.label||`Series ${_+1}`,index:typeof g.index=="number"?g.index:_+1})));let a=e.filter(g=>g.x.range),o=Math.min.apply(0,a.map(g=>g.x.range?.min||0)),l=Math.max.apply(0,a.map(g=>g.x.range?.max||0)),c=e.filter(g=>g.y.range),h=Math.min.apply(0,a.map(g=>g.y.range?.min||0)),u=Math.max.apply(0,a.map(g=>g.y.range?.max||0));typeof t<"u"&&(h=Math.min(h,t)),typeof r<"u"&&(u=Math.max(u,r));let m=P.Scale(o,l,7),f=P.Scale(h,u,7),b,p;if(i){b=[];let g=M.Get(i);for(let _=0;_<=m.count;_++)b.push(g.Format(m.min+_*m.step))}if(s){p=[];let g=M.Get(s);for(let _=0;_<=f.count;_++)p.push(g.Format(f.min+_*f.step))}return{x:{format:i,scale:m,labels:b},y:{format:s,scale:f,labels:p},legend:n}}CreateScatterChart(e,t="plot"){let r=this.TransformSeriesData(e[0]),i=this.CommonData(r),s=e[1]?.toString()||void 0,n=e[2]?.toString()||void 0;if(this.chart_data={legend:i.legend,style:t,type:"scatter2",series:r,title:s,x_scale:i.x.scale,x_labels:i.x.labels,y_scale:i.y.scale,y_labels:i.y.labels,lines:t==="line",points:t==="plot"},n){this.chart_data.markers=/marker/i.test(n),this.chart_data.smooth=/smooth/i.test(n),this.chart_data.data_labels=/labels/i.test(n);let a=n.match(/labels="(.*?)"/);a&&this.chart_data.series?this.ApplyLabels(this.chart_data.series,a[1]):(a=n.match(/labels=([^\s\r\n,]+)(?:\W|$)/),a&&this.chart_data.series&&this.ApplyLabels(this.chart_data.series,a[1])),a=n.match(/class=([\w_-]+)(?:\W|$)/),a&&(this.chart_data.class_name=a[1])}}ApplyLabels(e,t,r){for(let i of e){let s={x:M.Get(i.x.format||""),y:M.Get(i.y.format||"")};i.y.labels=[];for(let n=0;n<i.y.data.length;n++){let a=r?r[n]:typeof i.x.data[n]=="number"?s.x.Format(i.x.data[n]):"",o=typeof i.y.data[n]=="number"?s.y.Format(i.y.data[n]):"";i.y.labels[n]=t.replace(/\bx\b/g,a).replace(/\by\b/g,o)}}}CreateLineChart(e,t){let r=this.TransformSeriesData(e[0],e[1]),i=this.CommonData(r,0,0),s=e[2]?.toString()||void 0,n=e[3]?.toString()||void 0;if(this.chart_data={legend:i.legend,type:"scatter2",series:r,title:s,x_scale:i.x.scale,x_labels:i.x.labels,y_scale:i.y.scale,y_labels:i.y.labels,lines:!0,filled:t==="area"},n){this.chart_data.smooth=/smooth/i.test(n);let a=n.match(/class=([\w_-]+)(?:\W|$)/);a&&(this.chart_data.class_name=a[1])}}CreateDonut(e,t=!1){let r=e[0]?.type===8?e[0].value:e[0],i=P.Flatten(r),s=i.map(g=>typeof g.value.value=="number"?g.value.value:void 0),n=e[1]?.type===8?e[1].value:e[1],a=P.Flatten(n).map(g=>{if(g&&typeof g=="object"){let _=g.value?.value;return typeof _=="number"&&g.value?.format?M.Get(g.value?.format).Format(_):_?_.toString():""}else return g?g.toString():""});s=s.map(g=>g<0?(console.warn("pie/donut chart does not support negative values (omitted)"),0):g);let o=e[2]||"",l=0,c=s.map((g,_)=>(typeof g<"u"&&(l+=g),{value:g,label:a[_]||"",index:_+1,percent:0}));if(l)for(let g of c)g.percent=(g.value||0)/l;let h=i.length&&i[0].value?.format?i[0].value.format:"",u=M.Get(h||jr),m=M.Get("percent");typeof e[4]>"u"&&e[1]&&(e[4]="label");let f=e[4]||"";if(f)for(let g of c){let _=u.Format(g.value||0),y=m.Format(g.percent);g.title=f.replace(/value%/ig,m.Format(g.value||0)).replace(/value/ig,_).replace(/percent/ig,y).replace(/label/ig,g.label||"").trim()}let b=(e[3]||"").toString().trim(),p=b.toUpperCase();if(p==="ASC"||p==="ASCENDING"||p==="INC")c.sort((g,_)=>(g.value||0)-(_.value||0));else if(p==="DESC"||p==="DESCENDING"||p==="DEC")c.sort((g,_)=>(_.value||0)-(g.value||0));else{let g=b.match(/sort=([\w]+)(?:\W|$)/i);g&&(p=g[1],/^(asc|inc)/i.test(p)?c.sort((_,y)=>(_.value||0)-(y.value||0)):/^(desc|dec)/i.test(p)&&c.sort((_,y)=>(y.value||0)-(_.value||0)))}if(this.chart_data={type:t?"pie":"donut",slices:c,title:o},b){let g=b.match(/class=([_-\w]+)(?:\W|$)/);g&&(this.chart_data.class_name=g[1])}}Resize(){this.renderer.Resize()}Update(){this.renderer.Resize(),this.renderer.Prerender(),this.renderer.Clear(this.chart_data.class_name);let e=new Ie(0,0,this.renderer.size.width,this.renderer.size.height),t={top:Math.round(e.height)*this.margin.top,bottom:Math.round(e.height)*this.margin.bottom,left:Math.round(e.width)*this.margin.left,right:Math.round(e.width)*this.margin.right},r=this.chart_data.title;if(r&&this.renderer.RenderTitle(r,e,t.top,this.chart_data.title_layout||"top"),e.top+=t.top,e.left+=t.left,e.bottom-=t.bottom,e.right-=t.right,this.chart_data.legend&&this.chart_data.legend.length){let i=0;this.chart_data.title&&(!this.chart_data.title_layout||this.chart_data.title_layout==="top")&&(i=1);let s=this.chart_data.legend_position||i;this.renderer.Legend({labels:this.chart_data.legend,position:s,style:this.chart_data.legend_style,layout:s===0||s===1?0:1,area:e})}if(this.chart_data.type==="histogram"||this.chart_data.type==="line"||this.chart_data.type==="area"||this.chart_data.type==="column"||this.chart_data.type==="histogram2"||this.chart_data.type==="bar"||this.chart_data.type==="scatter2"){let i=[],s=0;if(this.chart_data.x_labels&&this.chart_data.x_labels.length&&(i=this.chart_data.x_labels.map(n=>{let a=this.renderer.MeasureText(n,["axis-label","x-axis-label"],!0);return s=Math.max(s,a.height),a})),this.chart_data.y_labels&&this.chart_data.y_labels.length){let n=[],a=0,o=0,l=this.chart_data.type==="scatter2"?this.chart_data.y_scale:this.chart_data.scale,c=this.chart_data.type==="bar"?this.chart_data.y_labels.length:l.count+1;for(let h=0;h<c;h++){let u=this.renderer.MeasureText(this.chart_data.y_labels[h],["axis-label","y-axis-label"]);n.push({label:this.chart_data.y_labels[h],metrics:u}),a=Math.max(a,u.width),o=Math.max(o,u.height)}e.bottom=Math.round(e.bottom-o/2),e.top=Math.round(e.top+o/2),i.length&&(e.bottom-=s+t.bottom),this.chart_data.type==="bar"?this.renderer.RenderYAxisBar(e,e.left+a,n,["axis-label","y-axis-label"]):this.renderer.RenderYAxis(e,e.left+a,n,["axis-label","y-axis-label"]),e.left+=a+t.left}if(i.length&&this.chart_data.x_labels&&this.chart_data.x_labels.length){let n=this.chart_data.type==="histogram2",a=this.chart_data.type!=="line"&&this.chart_data.type!=="area"&&this.chart_data.type!=="bar"&&this.chart_data.type!=="scatter2"&&this.chart_data.type!=="histogram2";n&&this.renderer.RenderXAxisTicks(e,a,this.chart_data.x_labels.length),this.chart_data.y_labels&&(e.bottom+=s+t.bottom),this.renderer.RenderXAxis(e,a,this.chart_data.x_labels,i,["axis-label","x-axis-label"]),e.bottom-=s+t.bottom}}switch(this.chart_data.type){case"scatter":this.renderer.RenderPoints(e,this.chart_data.x,this.chart_data.y,"mc mc-correlation series-1");break;case"scatter2":if(this.renderer.RenderGrid(e,this.chart_data.y_scale.count,this.chart_data.x_scale.count+1,"chart-grid"),this.chart_data.series){for(let i=0;i<this.chart_data.series.length;i++){let s=this.chart_data.series[i],n=!!this.chart_data.lines,a=!!this.chart_data.points;s.subtype==="plot"?(a=!0,n=!1):s.subtype==="line"&&(a=!1,n=!0);let o=typeof s.index=="number"?s.index:i+1;this.renderer.RenderScatterSeries(e,s.x.data,s.y.data,this.chart_data.x_scale,this.chart_data.y_scale,n,a,!!this.chart_data.filled,!!this.chart_data.markers,!!this.chart_data.smooth,`scatter-plot series-${o}`)}if(this.chart_data.data_labels)for(let i=0;i<this.chart_data.series.length;i++){let s=this.chart_data.series[i];s.y.labels&&this.renderer.RenderDataLabels(e,s.x.data,s.y.data,this.chart_data.x_scale,this.chart_data.y_scale,s.y.labels,i+1)}}break;case"pie":case"donut":{let i=Math.min(e.height,e.width)/2*.9,s=this.chart_data.type==="pie"?0:i*.8;this.renderer.RenderDonut(this.chart_data.slices,e.center,i,s,e,!0,"donut")}break;case"line":case"area":{let i=this.chart_data.scale;if(this.chart_data.series){let s=this.chart_data.x_scale?this.chart_data.x_scale.max:Math.max.apply(0,this.chart_data.series.map(o=>o.length)),n=this.chart_data.smooth?this.renderer.RenderSmoothLine:this.renderer.RenderLine;this.renderer.RenderGrid(e,this.chart_data.scale.count,this.chart_data.x_scale?this.chart_data.x_scale.count+1:s,"chart-grid");let a=0;for(let o of this.chart_data.series){let l=o.map(h=>{if(!(typeof h>"u"))return P.ApplyScale(h,e.height,i)});if(l.length<s)for(let h=l.length;h<s;h++)l.push(void 0);let c=[this.chart_data.type==="area"?"chart-area":"chart-line",`series-${a+1}`];n.call(this.renderer,e,l,this.chart_data.type==="area",this.chart_data.titles,c),a++}}}break;case"bar":{let i;if(this.renderer.RenderBarGrid(e,this.chart_data.scale.count,"chart-grid"),this.chart_data.series2){let s=0,n=this.chart_data.series2.length;for(let u of this.chart_data.series2)s=Math.max(s,u.y.data.length);let a=e.height/s,o=.7;typeof this.chart_data.space=="number"&&(o=Math.max(0,Math.min(1,1-this.chart_data.space)));let l=a*(1-o)/2,c=(a-l*2)/n,h=0;if(this.chart_data.scale.min<0&&(h=P.ApplyScale(0,e.width,this.chart_data.scale)),this.chart_data.round){let u=Math.floor(c/2);i=[0,u,u,0]}for(let u=0;u<n;u++){let m=this.chart_data.series2[u],f=typeof m.index=="number"?m.index:u+1;for(let b=0;b<m.y.data.length;b++){let p=m.y.data[b];if(typeof p=="number"){let g=Math.round(e.top+b*a+l)+u*c,_=0,y=0,x=!1;h?p>0?(y=P.ApplyScale(p+this.chart_data.scale.min,e.width,this.chart_data.scale),_=e.left+h):(y=P.ApplyScale(this.chart_data.scale.min-p,e.width,this.chart_data.scale),_=e.left+h-y,x=!0):(y=P.ApplyScale(p,e.width,this.chart_data.scale),_=e.left);let w=void 0;y&&this.renderer.RenderRectangle(new Ie(_,g,_+y,g+c),i,["chart-column",`series-${f}`],w||void 0)}}}}}break;case"column":case"histogram2":if(this.renderer.RenderGrid(e,this.chart_data.scale.count,0,"chart-grid"),this.chart_data.series2){let i=0,s=this.chart_data.series2.length;for(let u of this.chart_data.series2)i=Math.max(i,u.y.data.length);let n=e.width/i,a=.7;typeof this.chart_data.space=="number"&&(a=Math.max(0,Math.min(1,1-this.chart_data.space)));let o=n*(1-a)/2,l=(n-o*2)/s,c=0;if(this.chart_data.scale.min<0&&(c=P.ApplyScale(0,e.height,this.chart_data.scale)),this.chart_data.callouts&&this.chart_data.x_scale){let u=this.chart_data.x_scale,m=this.chart_data.callouts.map((f,b)=>{let p=Math.round(e.left+P.ApplyScale(f.value,e.width,u))+.5;return{x1:p,y1:e.bottom-e.height,x2:p,y2:e.bottom,classes:`callout-${b+1}`}});this.renderer.RenderCalloutLines(m)}let h;if(this.chart_data.round){let u=Math.floor(l/2);h=[u,u,0,0]}for(let u=0;u<s;u++){let m=this.chart_data.series2[u],f=typeof m.index=="number"?m.index:u+1;for(let b=0;b<m.y.data.length;b++){let p=m.y.data[b];if(typeof p=="number"){let g=e.left+b*n+o+u*l,_=0,y=0,x=!1;c?p>0?(_=P.ApplyScale(p+this.chart_data.scale.min,e.height,this.chart_data.scale),y=e.bottom-_-c):(_=P.ApplyScale(this.chart_data.scale.min-p,e.height,this.chart_data.scale),y=e.bottom-c,x=!0):(_=P.ApplyScale(p,e.height,this.chart_data.scale),y=e.bottom-_);let w=void 0;if(_){let A=this.chart_data.data_labels&&m.y.labels?m.y.labels[b]:"",S={x:Math.round(g+l/2),y:Math.round(y-10)};this.renderer.RenderRectangle(new Ie(g,y,g+l,y+_),h,["chart-column",`series-${f}`],w||void 0,A,S)}}}}}break;case"histogram":{this.renderer.RenderGrid(e,this.chart_data.scale.count,0,"chart-grid");let i=e.width/this.chart_data.count,s=this.chart_data.column_width,n=i*(1-s)/2;for(let a=0;a<this.chart_data.count;a++){let o=Math.round(e.left+a*i+n),l=i-n*2,c=P.ApplyScale(this.chart_data.bins[a],e.height,this.chart_data.scale),h=e.bottom-c,u=this.chart_data.titles?this.chart_data.titles[a]:void 0;this.renderer.RenderRectangle(new Ie(o,h,o+l,h+c),void 0,"chart-column series-1",u||void 0)}}break}}IsCellData(e){return typeof e=="object"&&typeof e.address=="object"&&typeof e.address.row=="number"&&typeof e.address.column=="number"}};et.functions_registered=!1;var Le=(...d)=>({type:5,value:d,key:"arguments"}),Yr={Group:{arguments:[{name:"Array...",metadata:!0}],fn:(...d)=>({type:5,value:d,key:"group"})},Series:{arguments:[{name:"Label"},{name:"X",metadata:!0},{name:"Y",metadata:!0},{name:"index"},{name:"subtype"}],fn:(...d)=>({type:5,value:d,key:"series"})},"Bar.Chart":{arguments:[{name:"Data",metadata:!0},{name:"Categories",metadata:!0},{name:"ChartTitle"}],fn:Le},"Line.Chart":{arguments:[{name:"y",metadata:!0},{name:"x",metadata:!0},{name:"ChartTitle"}],fn:Le},"Area.Chart":{arguments:[{name:"y",metadata:!0},{name:"x",metadata:!0},{name:"ChartTitle"}],fn:Le},"Pie.Chart":{arguments:[{name:"Values",metadata:!0},{name:"Labels"},{name:"Title"},{name:"Sort"},{name:"Label"}],fn:Le},"Donut.Chart":{arguments:[{name:"Values",metadata:!0},{name:"Labels",metadata:!0},{name:"Title"},{name:"Sort"},{name:"Label"}],fn:Le},"Scatter.Line":{arguments:[{name:"Data",metadata:!0},{name:"ChartTitle"}],fn:Le},"Scatter.Plot":{arguments:[{name:"Data",metadata:!0},{name:"ChartTitle"}],fn:Le},"Column.Chart":{arguments:[{name:"Data",metadata:!0},{name:"Categories",metadata:!0},{name:"Chart Title"}],fn:Le}};var Jr={};is(Jr,{default:()=>Xr});var Xr='var vi=Object.create;var pr=Object.defineProperty;var Ai=Object.getOwnPropertyDescriptor;var Ci=Object.getOwnPropertyNames;var Ii=Object.getPrototypeOf,Ni=Object.prototype.hasOwnProperty;var De=(s=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(s,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):s)(function(s){if(typeof require<"u")return require.apply(this,arguments);throw new Error(\'Dynamic require of "\'+s+\'" is not supported\')});var be=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var ki=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ci(e))!Ni.call(s,n)&&n!==t&&pr(s,n,{get:()=>e[n],enumerable:!(i=Ai(e,n))||i.enumerable});return s};var st=(s,e,t)=>(t=s!=null?vi(Ii(s)):{},ki(e||!s||!s.__esModule?pr(t,"default",{value:s,enumerable:!0}):t,s));var Nt=be((mr,It)=>{(function(s){typeof mr=="object"&&typeof It<"u"?It.exports=s():typeof define=="function"&&define.amd?define([],s):(typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:this).JSZip=s()})(function(){return function s(e,t,i){function n(o,l){if(!t[o]){if(!e[o]){var u=typeof De=="function"&&De;if(!l&&u)return u(o,!0);if(r)return r(o,!0);var h=new Error("Cannot find module \'"+o+"\'");throw h.code="MODULE_NOT_FOUND",h}var c=t[o]={exports:{}};e[o][0].call(c.exports,function(b){var f=e[o][1][b];return n(f||b)},c,c.exports,s,e,t,i)}return t[o].exports}for(var r=typeof De=="function"&&De,a=0;a<i.length;a++)n(i[a]);return n}({1:[function(s,e,t){"use strict";var i=s("./utils"),n=s("./support"),r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";t.encode=function(a){for(var o,l,u,h,c,b,f,p=[],g=0,_=a.length,w=_,A=i.getTypeOf(a)!=="string";g<a.length;)w=_-g,u=A?(o=a[g++],l=g<_?a[g++]:0,g<_?a[g++]:0):(o=a.charCodeAt(g++),l=g<_?a.charCodeAt(g++):0,g<_?a.charCodeAt(g++):0),h=o>>2,c=(3&o)<<4|l>>4,b=1<w?(15&l)<<2|u>>6:64,f=2<w?63&u:64,p.push(r.charAt(h)+r.charAt(c)+r.charAt(b)+r.charAt(f));return p.join("")},t.decode=function(a){var o,l,u,h,c,b,f=0,p=0,g="data:";if(a.substr(0,g.length)===g)throw new Error("Invalid base64 input, it looks like a data url.");var _,w=3*(a=a.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(a.charAt(a.length-1)===r.charAt(64)&&w--,a.charAt(a.length-2)===r.charAt(64)&&w--,w%1!=0)throw new Error("Invalid base64 input, bad content length.");for(_=n.uint8array?new Uint8Array(0|w):new Array(0|w);f<a.length;)o=r.indexOf(a.charAt(f++))<<2|(h=r.indexOf(a.charAt(f++)))>>4,l=(15&h)<<4|(c=r.indexOf(a.charAt(f++)))>>2,u=(3&c)<<6|(b=r.indexOf(a.charAt(f++))),_[p++]=o,c!==64&&(_[p++]=l),b!==64&&(_[p++]=u);return _}},{"./support":30,"./utils":32}],2:[function(s,e,t){"use strict";var i=s("./external"),n=s("./stream/DataWorker"),r=s("./stream/Crc32Probe"),a=s("./stream/DataLengthProbe");function o(l,u,h,c,b){this.compressedSize=l,this.uncompressedSize=u,this.crc32=h,this.compression=c,this.compressedContent=b}o.prototype={getContentWorker:function(){var l=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),u=this;return l.on("end",function(){if(this.streamInfo.data_length!==u.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),l},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(l,u,h){return l.pipe(new r).pipe(new a("uncompressedSize")).pipe(u.compressWorker(h)).pipe(new a("compressedSize")).withStreamInfo("compression",u)},e.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(s,e,t){"use strict";var i=s("./stream/GenericWorker");t.STORE={magic:"\\0\\0",compressWorker:function(){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},t.DEFLATE=s("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(s,e,t){"use strict";var i=s("./utils"),n=function(){for(var r,a=[],o=0;o<256;o++){r=o;for(var l=0;l<8;l++)r=1&r?3988292384^r>>>1:r>>>1;a[o]=r}return a}();e.exports=function(r,a){return r!==void 0&&r.length?i.getTypeOf(r)!=="string"?function(o,l,u,h){var c=n,b=h+u;o^=-1;for(var f=h;f<b;f++)o=o>>>8^c[255&(o^l[f])];return-1^o}(0|a,r,r.length,0):function(o,l,u,h){var c=n,b=h+u;o^=-1;for(var f=h;f<b;f++)o=o>>>8^c[255&(o^l.charCodeAt(f))];return-1^o}(0|a,r,r.length,0):0}},{"./utils":32}],5:[function(s,e,t){"use strict";t.base64=!1,t.binary=!1,t.dir=!1,t.createFolders=!0,t.date=null,t.compression=null,t.compressionOptions=null,t.comment=null,t.unixPermissions=null,t.dosPermissions=null},{}],6:[function(s,e,t){"use strict";var i=null;i=typeof Promise<"u"?Promise:s("lie"),e.exports={Promise:i}},{lie:37}],7:[function(s,e,t){"use strict";var i=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",n=s("pako"),r=s("./utils"),a=s("./stream/GenericWorker"),o=i?"uint8array":"array";function l(u,h){a.call(this,"FlateWorker/"+u),this._pako=null,this._pakoAction=u,this._pakoOptions=h,this.meta={}}t.magic="\\b\\0",r.inherits(l,a),l.prototype.processChunk=function(u){this.meta=u.meta,this._pako===null&&this._createPako(),this._pako.push(r.transformTo(o,u.data),!1)},l.prototype.flush=function(){a.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},l.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},l.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var u=this;this._pako.onData=function(h){u.push({data:h,meta:u.meta})}},t.compressWorker=function(u){return new l("Deflate",u)},t.uncompressWorker=function(){return new l("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(s,e,t){"use strict";function i(c,b){var f,p="";for(f=0;f<b;f++)p+=String.fromCharCode(255&c),c>>>=8;return p}function n(c,b,f,p,g,_){var w,A,v=c.file,z=c.compression,W=_!==o.utf8encode,$=r.transformTo("string",_(v.name)),T=r.transformTo("string",o.utf8encode(v.name)),Y=v.comment,K=r.transformTo("string",_(Y)),C=r.transformTo("string",o.utf8encode(Y)),B=T.length!==v.name.length,m=C.length!==Y.length,G="",O="",R="",J=v.dir,Z=v.date,D={crc32:0,compressedSize:0,uncompressedSize:0};b&&!f||(D.crc32=c.crc32,D.compressedSize=c.compressedSize,D.uncompressedSize=c.uncompressedSize);var N=0;b&&(N|=8),W||!B&&!m||(N|=2048);var k=0,P=0;J&&(k|=16),g==="UNIX"?(P=798,k|=function(U,q){var X=U;return U||(X=q?16893:33204),(65535&X)<<16}(v.unixPermissions,J)):(P=20,k|=function(U){return 63&(U||0)}(v.dosPermissions)),w=Z.getUTCHours(),w<<=6,w|=Z.getUTCMinutes(),w<<=5,w|=Z.getUTCSeconds()/2,A=Z.getUTCFullYear()-1980,A<<=4,A|=Z.getUTCMonth()+1,A<<=5,A|=Z.getUTCDate(),B&&(O=i(1,1)+i(l($),4)+T,G+="up"+i(O.length,2)+O),m&&(R=i(1,1)+i(l(K),4)+C,G+="uc"+i(R.length,2)+R);var M="";return M+=`\n\\0`,M+=i(N,2),M+=z.magic,M+=i(w,2),M+=i(A,2),M+=i(D.crc32,4),M+=i(D.compressedSize,4),M+=i(D.uncompressedSize,4),M+=i($.length,2),M+=i(G.length,2),{fileRecord:u.LOCAL_FILE_HEADER+M+$+G,dirRecord:u.CENTRAL_FILE_HEADER+i(P,2)+M+i(K.length,2)+"\\0\\0\\0\\0"+i(k,4)+i(p,4)+$+G+K}}var r=s("../utils"),a=s("../stream/GenericWorker"),o=s("../utf8"),l=s("../crc32"),u=s("../signature");function h(c,b,f,p){a.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=b,this.zipPlatform=f,this.encodeFileName=p,this.streamFiles=c,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}r.inherits(h,a),h.prototype.push=function(c){var b=c.meta.percent||0,f=this.entriesCount,p=this._sources.length;this.accumulate?this.contentBuffer.push(c):(this.bytesWritten+=c.data.length,a.prototype.push.call(this,{data:c.data,meta:{currentFile:this.currentFile,percent:f?(b+100*(f-p-1))/f:100}}))},h.prototype.openedSource=function(c){this.currentSourceOffset=this.bytesWritten,this.currentFile=c.file.name;var b=this.streamFiles&&!c.file.dir;if(b){var f=n(c,b,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:f.fileRecord,meta:{percent:0}})}else this.accumulate=!0},h.prototype.closedSource=function(c){this.accumulate=!1;var b=this.streamFiles&&!c.file.dir,f=n(c,b,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(f.dirRecord),b)this.push({data:function(p){return u.DATA_DESCRIPTOR+i(p.crc32,4)+i(p.compressedSize,4)+i(p.uncompressedSize,4)}(c),meta:{percent:100}});else for(this.push({data:f.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},h.prototype.flush=function(){for(var c=this.bytesWritten,b=0;b<this.dirRecords.length;b++)this.push({data:this.dirRecords[b],meta:{percent:100}});var f=this.bytesWritten-c,p=function(g,_,w,A,v){var z=r.transformTo("string",v(A));return u.CENTRAL_DIRECTORY_END+"\\0\\0\\0\\0"+i(g,2)+i(g,2)+i(_,4)+i(w,4)+i(z.length,2)+z}(this.dirRecords.length,f,c,this.zipComment,this.encodeFileName);this.push({data:p,meta:{percent:100}})},h.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},h.prototype.registerPrevious=function(c){this._sources.push(c);var b=this;return c.on("data",function(f){b.processChunk(f)}),c.on("end",function(){b.closedSource(b.previous.streamInfo),b._sources.length?b.prepareNextSource():b.end()}),c.on("error",function(f){b.error(f)}),this},h.prototype.resume=function(){return!!a.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},h.prototype.error=function(c){var b=this._sources;if(!a.prototype.error.call(this,c))return!1;for(var f=0;f<b.length;f++)try{b[f].error(c)}catch{}return!0},h.prototype.lock=function(){a.prototype.lock.call(this);for(var c=this._sources,b=0;b<c.length;b++)c[b].lock()},e.exports=h},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(s,e,t){"use strict";var i=s("../compressions"),n=s("./ZipFileWorker");t.generateWorker=function(r,a,o){var l=new n(a.streamFiles,o,a.platform,a.encodeFileName),u=0;try{r.forEach(function(h,c){u++;var b=function(_,w){var A=_||w,v=i[A];if(!v)throw new Error(A+" is not a valid compression method !");return v}(c.options.compression,a.compression),f=c.options.compressionOptions||a.compressionOptions||{},p=c.dir,g=c.date;c._compressWorker(b,f).withStreamInfo("file",{name:h,dir:p,date:g,comment:c.comment||"",unixPermissions:c.unixPermissions,dosPermissions:c.dosPermissions}).pipe(l)}),l.entriesCount=u}catch(h){l.error(h)}return l}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(s,e,t){"use strict";function i(){if(!(this instanceof i))return new i;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var n=new i;for(var r in this)typeof this[r]!="function"&&(n[r]=this[r]);return n}}(i.prototype=s("./object")).loadAsync=s("./load"),i.support=s("./support"),i.defaults=s("./defaults"),i.version="3.10.1",i.loadAsync=function(n,r){return new i().loadAsync(n,r)},i.external=s("./external"),e.exports=i},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(s,e,t){"use strict";var i=s("./utils"),n=s("./external"),r=s("./utf8"),a=s("./zipEntries"),o=s("./stream/Crc32Probe"),l=s("./nodejsUtils");function u(h){return new n.Promise(function(c,b){var f=h.decompressed.getContentWorker().pipe(new o);f.on("error",function(p){b(p)}).on("end",function(){f.streamInfo.crc32!==h.decompressed.crc32?b(new Error("Corrupted zip : CRC32 mismatch")):c()}).resume()})}e.exports=function(h,c){var b=this;return c=i.extend(c||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:r.utf8decode}),l.isNode&&l.isStream(h)?n.Promise.reject(new Error("JSZip can\'t accept a stream when loading a zip file.")):i.prepareContent("the loaded zip file",h,!0,c.optimizedBinaryString,c.base64).then(function(f){var p=new a(c);return p.load(f),p}).then(function(f){var p=[n.Promise.resolve(f)],g=f.files;if(c.checkCRC32)for(var _=0;_<g.length;_++)p.push(u(g[_]));return n.Promise.all(p)}).then(function(f){for(var p=f.shift(),g=p.files,_=0;_<g.length;_++){var w=g[_],A=w.fileNameStr,v=i.resolve(w.fileNameStr);b.file(v,w.decompressed,{binary:!0,optimizedBinaryString:!0,date:w.date,dir:w.dir,comment:w.fileCommentStr.length?w.fileCommentStr:null,unixPermissions:w.unixPermissions,dosPermissions:w.dosPermissions,createFolders:c.createFolders}),w.dir||(b.file(v).unsafeOriginalName=A)}return p.zipComment.length&&(b.comment=p.zipComment),b})}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(s,e,t){"use strict";var i=s("../utils"),n=s("../stream/GenericWorker");function r(a,o){n.call(this,"Nodejs stream input adapter for "+a),this._upstreamEnded=!1,this._bindStream(o)}i.inherits(r,n),r.prototype._bindStream=function(a){var o=this;(this._stream=a).pause(),a.on("data",function(l){o.push({data:l,meta:{percent:0}})}).on("error",function(l){o.isPaused?this.generatedError=l:o.error(l)}).on("end",function(){o.isPaused?o._upstreamEnded=!0:o.end()})},r.prototype.pause=function(){return!!n.prototype.pause.call(this)&&(this._stream.pause(),!0)},r.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},e.exports=r},{"../stream/GenericWorker":28,"../utils":32}],13:[function(s,e,t){"use strict";var i=s("readable-stream").Readable;function n(r,a,o){i.call(this,a),this._helper=r;var l=this;r.on("data",function(u,h){l.push(u)||l._helper.pause(),o&&o(h)}).on("error",function(u){l.emit("error",u)}).on("end",function(){l.push(null)})}s("../utils").inherits(n,i),n.prototype._read=function(){this._helper.resume()},e.exports=n},{"../utils":32,"readable-stream":16}],14:[function(s,e,t){"use strict";e.exports={isNode:typeof Buffer<"u",newBufferFrom:function(i,n){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(i,n);if(typeof i=="number")throw new Error(\'The "data" argument must not be a number\');return new Buffer(i,n)},allocBuffer:function(i){if(Buffer.alloc)return Buffer.alloc(i);var n=new Buffer(i);return n.fill(0),n},isBuffer:function(i){return Buffer.isBuffer(i)},isStream:function(i){return i&&typeof i.on=="function"&&typeof i.pause=="function"&&typeof i.resume=="function"}}},{}],15:[function(s,e,t){"use strict";function i(v,z,W){var $,T=r.getTypeOf(z),Y=r.extend(W||{},l);Y.date=Y.date||new Date,Y.compression!==null&&(Y.compression=Y.compression.toUpperCase()),typeof Y.unixPermissions=="string"&&(Y.unixPermissions=parseInt(Y.unixPermissions,8)),Y.unixPermissions&&16384&Y.unixPermissions&&(Y.dir=!0),Y.dosPermissions&&16&Y.dosPermissions&&(Y.dir=!0),Y.dir&&(v=g(v)),Y.createFolders&&($=p(v))&&_.call(this,$,!0);var K=T==="string"&&Y.binary===!1&&Y.base64===!1;W&&W.binary!==void 0||(Y.binary=!K),(z instanceof u&&z.uncompressedSize===0||Y.dir||!z||z.length===0)&&(Y.base64=!1,Y.binary=!0,z="",Y.compression="STORE",T="string");var C=null;C=z instanceof u||z instanceof a?z:b.isNode&&b.isStream(z)?new f(v,z):r.prepareContent(v,z,Y.binary,Y.optimizedBinaryString,Y.base64);var B=new h(v,C,Y);this.files[v]=B}var n=s("./utf8"),r=s("./utils"),a=s("./stream/GenericWorker"),o=s("./stream/StreamHelper"),l=s("./defaults"),u=s("./compressedObject"),h=s("./zipObject"),c=s("./generate"),b=s("./nodejsUtils"),f=s("./nodejs/NodejsStreamInputAdapter"),p=function(v){v.slice(-1)==="/"&&(v=v.substring(0,v.length-1));var z=v.lastIndexOf("/");return 0<z?v.substring(0,z):""},g=function(v){return v.slice(-1)!=="/"&&(v+="/"),v},_=function(v,z){return z=z!==void 0?z:l.createFolders,v=g(v),this.files[v]||i.call(this,v,null,{dir:!0,createFolders:z}),this.files[v]};function w(v){return Object.prototype.toString.call(v)==="[object RegExp]"}var A={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(v){var z,W,$;for(z in this.files)$=this.files[z],(W=z.slice(this.root.length,z.length))&&z.slice(0,this.root.length)===this.root&&v(W,$)},filter:function(v){var z=[];return this.forEach(function(W,$){v(W,$)&&z.push($)}),z},file:function(v,z,W){if(arguments.length!==1)return v=this.root+v,i.call(this,v,z,W),this;if(w(v)){var $=v;return this.filter(function(Y,K){return!K.dir&&$.test(Y)})}var T=this.files[this.root+v];return T&&!T.dir?T:null},folder:function(v){if(!v)return this;if(w(v))return this.filter(function(T,Y){return Y.dir&&v.test(T)});var z=this.root+v,W=_.call(this,z),$=this.clone();return $.root=W.name,$},remove:function(v){v=this.root+v;var z=this.files[v];if(z||(v.slice(-1)!=="/"&&(v+="/"),z=this.files[v]),z&&!z.dir)delete this.files[v];else for(var W=this.filter(function(T,Y){return Y.name.slice(0,v.length)===v}),$=0;$<W.length;$++)delete this.files[W[$].name];return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(v){var z,W={};try{if((W=r.extend(v||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:n.utf8encode})).type=W.type.toLowerCase(),W.compression=W.compression.toUpperCase(),W.type==="binarystring"&&(W.type="string"),!W.type)throw new Error("No output type specified.");r.checkSupport(W.type),W.platform!=="darwin"&&W.platform!=="freebsd"&&W.platform!=="linux"&&W.platform!=="sunos"||(W.platform="UNIX"),W.platform==="win32"&&(W.platform="DOS");var $=W.comment||this.comment||"";z=c.generateWorker(this,W,$)}catch(T){(z=new a("error")).error(T)}return new o(z,W.type||"string",W.mimeType)},generateAsync:function(v,z){return this.generateInternalStream(v).accumulate(z)},generateNodeStream:function(v,z){return(v=v||{}).type||(v.type="nodebuffer"),this.generateInternalStream(v).toNodejsStream(z)}};e.exports=A},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(s,e,t){"use strict";e.exports=s("stream")},{stream:void 0}],17:[function(s,e,t){"use strict";var i=s("./DataReader");function n(r){i.call(this,r);for(var a=0;a<this.data.length;a++)r[a]=255&r[a]}s("../utils").inherits(n,i),n.prototype.byteAt=function(r){return this.data[this.zero+r]},n.prototype.lastIndexOfSignature=function(r){for(var a=r.charCodeAt(0),o=r.charCodeAt(1),l=r.charCodeAt(2),u=r.charCodeAt(3),h=this.length-4;0<=h;--h)if(this.data[h]===a&&this.data[h+1]===o&&this.data[h+2]===l&&this.data[h+3]===u)return h-this.zero;return-1},n.prototype.readAndCheckSignature=function(r){var a=r.charCodeAt(0),o=r.charCodeAt(1),l=r.charCodeAt(2),u=r.charCodeAt(3),h=this.readData(4);return a===h[0]&&o===h[1]&&l===h[2]&&u===h[3]},n.prototype.readData=function(r){if(this.checkOffset(r),r===0)return[];var a=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./DataReader":18}],18:[function(s,e,t){"use strict";var i=s("../utils");function n(r){this.data=r,this.length=r.length,this.index=0,this.zero=0}n.prototype={checkOffset:function(r){this.checkIndex(this.index+r)},checkIndex:function(r){if(this.length<this.zero+r||r<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+r+"). Corrupted zip ?")},setIndex:function(r){this.checkIndex(r),this.index=r},skip:function(r){this.setIndex(this.index+r)},byteAt:function(){},readInt:function(r){var a,o=0;for(this.checkOffset(r),a=this.index+r-1;a>=this.index;a--)o=(o<<8)+this.byteAt(a);return this.index+=r,o},readString:function(r){return i.transformTo("string",this.readData(r))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var r=this.readInt(4);return new Date(Date.UTC(1980+(r>>25&127),(r>>21&15)-1,r>>16&31,r>>11&31,r>>5&63,(31&r)<<1))}},e.exports=n},{"../utils":32}],19:[function(s,e,t){"use strict";var i=s("./Uint8ArrayReader");function n(r){i.call(this,r)}s("../utils").inherits(n,i),n.prototype.readData=function(r){this.checkOffset(r);var a=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(s,e,t){"use strict";var i=s("./DataReader");function n(r){i.call(this,r)}s("../utils").inherits(n,i),n.prototype.byteAt=function(r){return this.data.charCodeAt(this.zero+r)},n.prototype.lastIndexOfSignature=function(r){return this.data.lastIndexOf(r)-this.zero},n.prototype.readAndCheckSignature=function(r){return r===this.readData(4)},n.prototype.readData=function(r){this.checkOffset(r);var a=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./DataReader":18}],21:[function(s,e,t){"use strict";var i=s("./ArrayReader");function n(r){i.call(this,r)}s("../utils").inherits(n,i),n.prototype.readData=function(r){if(this.checkOffset(r),r===0)return new Uint8Array(0);var a=this.data.subarray(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(s,e,t){"use strict";var i=s("../utils"),n=s("../support"),r=s("./ArrayReader"),a=s("./StringReader"),o=s("./NodeBufferReader"),l=s("./Uint8ArrayReader");e.exports=function(u){var h=i.getTypeOf(u);return i.checkSupport(h),h!=="string"||n.uint8array?h==="nodebuffer"?new o(u):n.uint8array?new l(i.transformTo("uint8array",u)):new r(i.transformTo("array",u)):new a(u)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(s,e,t){"use strict";t.LOCAL_FILE_HEADER="PK",t.CENTRAL_FILE_HEADER="PK",t.CENTRAL_DIRECTORY_END="PK",t.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\\x07",t.ZIP64_CENTRAL_DIRECTORY_END="PK",t.DATA_DESCRIPTOR="PK\\x07\\b"},{}],24:[function(s,e,t){"use strict";var i=s("./GenericWorker"),n=s("../utils");function r(a){i.call(this,"ConvertWorker to "+a),this.destType=a}n.inherits(r,i),r.prototype.processChunk=function(a){this.push({data:n.transformTo(this.destType,a.data),meta:a.meta})},e.exports=r},{"../utils":32,"./GenericWorker":28}],25:[function(s,e,t){"use strict";var i=s("./GenericWorker"),n=s("../crc32");function r(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}s("../utils").inherits(r,i),r.prototype.processChunk=function(a){this.streamInfo.crc32=n(a.data,this.streamInfo.crc32||0),this.push(a)},e.exports=r},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(s,e,t){"use strict";var i=s("../utils"),n=s("./GenericWorker");function r(a){n.call(this,"DataLengthProbe for "+a),this.propName=a,this.withStreamInfo(a,0)}i.inherits(r,n),r.prototype.processChunk=function(a){if(a){var o=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=o+a.data.length}n.prototype.processChunk.call(this,a)},e.exports=r},{"../utils":32,"./GenericWorker":28}],27:[function(s,e,t){"use strict";var i=s("../utils"),n=s("./GenericWorker");function r(a){n.call(this,"DataWorker");var o=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,a.then(function(l){o.dataIsReady=!0,o.data=l,o.max=l&&l.length||0,o.type=i.getTypeOf(l),o.isPaused||o._tickAndRepeat()},function(l){o.error(l)})}i.inherits(r,n),r.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},r.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},r.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},r.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var a=null,o=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":a=this.data.substring(this.index,o);break;case"uint8array":a=this.data.subarray(this.index,o);break;case"array":case"nodebuffer":a=this.data.slice(this.index,o)}return this.index=o,this.push({data:a,meta:{percent:this.max?this.index/this.max*100:0}})},e.exports=r},{"../utils":32,"./GenericWorker":28}],28:[function(s,e,t){"use strict";function i(n){this.name=n||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(n){this.emit("data",n)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(n){this.emit("error",n)}return!0},error:function(n){return!this.isFinished&&(this.isPaused?this.generatedError=n:(this.isFinished=!0,this.emit("error",n),this.previous&&this.previous.error(n),this.cleanUp()),!0)},on:function(n,r){return this._listeners[n].push(r),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(n,r){if(this._listeners[n])for(var a=0;a<this._listeners[n].length;a++)this._listeners[n][a].call(this,r)},pipe:function(n){return n.registerPrevious(this)},registerPrevious:function(n){if(this.isLocked)throw new Error("The stream \'"+this+"\' has already been used.");this.streamInfo=n.streamInfo,this.mergeStreamInfo(),this.previous=n;var r=this;return n.on("data",function(a){r.processChunk(a)}),n.on("end",function(){r.end()}),n.on("error",function(a){r.error(a)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var n=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),n=!0),this.previous&&this.previous.resume(),!n},flush:function(){},processChunk:function(n){this.push(n)},withStreamInfo:function(n,r){return this.extraStreamInfo[n]=r,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var n in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,n)&&(this.streamInfo[n]=this.extraStreamInfo[n])},lock:function(){if(this.isLocked)throw new Error("The stream \'"+this+"\' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var n="Worker "+this.name;return this.previous?this.previous+" -> "+n:n}},e.exports=i},{}],29:[function(s,e,t){"use strict";var i=s("../utils"),n=s("./ConvertWorker"),r=s("./GenericWorker"),a=s("../base64"),o=s("../support"),l=s("../external"),u=null;if(o.nodestream)try{u=s("../nodejs/NodejsStreamOutputAdapter")}catch{}function h(b,f){return new l.Promise(function(p,g){var _=[],w=b._internalType,A=b._outputType,v=b._mimeType;b.on("data",function(z,W){_.push(z),f&&f(W)}).on("error",function(z){_=[],g(z)}).on("end",function(){try{var z=function(W,$,T){switch(W){case"blob":return i.newBlob(i.transformTo("arraybuffer",$),T);case"base64":return a.encode($);default:return i.transformTo(W,$)}}(A,function(W,$){var T,Y=0,K=null,C=0;for(T=0;T<$.length;T++)C+=$[T].length;switch(W){case"string":return $.join("");case"array":return Array.prototype.concat.apply([],$);case"uint8array":for(K=new Uint8Array(C),T=0;T<$.length;T++)K.set($[T],Y),Y+=$[T].length;return K;case"nodebuffer":return Buffer.concat($);default:throw new Error("concat : unsupported type \'"+W+"\'")}}(w,_),v);p(z)}catch(W){g(W)}_=[]}).resume()})}function c(b,f,p){var g=f;switch(f){case"blob":case"arraybuffer":g="uint8array";break;case"base64":g="string"}try{this._internalType=g,this._outputType=f,this._mimeType=p,i.checkSupport(g),this._worker=b.pipe(new n(g)),b.lock()}catch(_){this._worker=new r("error"),this._worker.error(_)}}c.prototype={accumulate:function(b){return h(this,b)},on:function(b,f){var p=this;return b==="data"?this._worker.on(b,function(g){f.call(p,g.data,g.meta)}):this._worker.on(b,function(){i.delay(f,arguments,p)}),this},resume:function(){return i.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(b){if(i.checkSupport("nodestream"),this._outputType!=="nodebuffer")throw new Error(this._outputType+" is not supported by this method");return new u(this,{objectMode:this._outputType!=="nodebuffer"},b)}},e.exports=c},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(s,e,t){"use strict";if(t.base64=!0,t.array=!0,t.string=!0,t.arraybuffer=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u",t.nodebuffer=typeof Buffer<"u",t.uint8array=typeof Uint8Array<"u",typeof ArrayBuffer>"u")t.blob=!1;else{var i=new ArrayBuffer(0);try{t.blob=new Blob([i],{type:"application/zip"}).size===0}catch{try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);n.append(i),t.blob=n.getBlob("application/zip").size===0}catch{t.blob=!1}}}try{t.nodestream=!!s("readable-stream").Readable}catch{t.nodestream=!1}},{"readable-stream":16}],31:[function(s,e,t){"use strict";for(var i=s("./utils"),n=s("./support"),r=s("./nodejsUtils"),a=s("./stream/GenericWorker"),o=new Array(256),l=0;l<256;l++)o[l]=252<=l?6:248<=l?5:240<=l?4:224<=l?3:192<=l?2:1;o[254]=o[254]=1;function u(){a.call(this,"utf-8 decode"),this.leftOver=null}function h(){a.call(this,"utf-8 encode")}t.utf8encode=function(c){return n.nodebuffer?r.newBufferFrom(c,"utf-8"):function(b){var f,p,g,_,w,A=b.length,v=0;for(_=0;_<A;_++)(64512&(p=b.charCodeAt(_)))==55296&&_+1<A&&(64512&(g=b.charCodeAt(_+1)))==56320&&(p=65536+(p-55296<<10)+(g-56320),_++),v+=p<128?1:p<2048?2:p<65536?3:4;for(f=n.uint8array?new Uint8Array(v):new Array(v),_=w=0;w<v;_++)(64512&(p=b.charCodeAt(_)))==55296&&_+1<A&&(64512&(g=b.charCodeAt(_+1)))==56320&&(p=65536+(p-55296<<10)+(g-56320),_++),p<128?f[w++]=p:(p<2048?f[w++]=192|p>>>6:(p<65536?f[w++]=224|p>>>12:(f[w++]=240|p>>>18,f[w++]=128|p>>>12&63),f[w++]=128|p>>>6&63),f[w++]=128|63&p);return f}(c)},t.utf8decode=function(c){return n.nodebuffer?i.transformTo("nodebuffer",c).toString("utf-8"):function(b){var f,p,g,_,w=b.length,A=new Array(2*w);for(f=p=0;f<w;)if((g=b[f++])<128)A[p++]=g;else if(4<(_=o[g]))A[p++]=65533,f+=_-1;else{for(g&=_===2?31:_===3?15:7;1<_&&f<w;)g=g<<6|63&b[f++],_--;1<_?A[p++]=65533:g<65536?A[p++]=g:(g-=65536,A[p++]=55296|g>>10&1023,A[p++]=56320|1023&g)}return A.length!==p&&(A.subarray?A=A.subarray(0,p):A.length=p),i.applyFromCharCode(A)}(c=i.transformTo(n.uint8array?"uint8array":"array",c))},i.inherits(u,a),u.prototype.processChunk=function(c){var b=i.transformTo(n.uint8array?"uint8array":"array",c.data);if(this.leftOver&&this.leftOver.length){if(n.uint8array){var f=b;(b=new Uint8Array(f.length+this.leftOver.length)).set(this.leftOver,0),b.set(f,this.leftOver.length)}else b=this.leftOver.concat(b);this.leftOver=null}var p=function(_,w){var A;for((w=w||_.length)>_.length&&(w=_.length),A=w-1;0<=A&&(192&_[A])==128;)A--;return A<0||A===0?w:A+o[_[A]]>w?A:w}(b),g=b;p!==b.length&&(n.uint8array?(g=b.subarray(0,p),this.leftOver=b.subarray(p,b.length)):(g=b.slice(0,p),this.leftOver=b.slice(p,b.length))),this.push({data:t.utf8decode(g),meta:c.meta})},u.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:t.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},t.Utf8DecodeWorker=u,i.inherits(h,a),h.prototype.processChunk=function(c){this.push({data:t.utf8encode(c.data),meta:c.meta})},t.Utf8EncodeWorker=h},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(s,e,t){"use strict";var i=s("./support"),n=s("./base64"),r=s("./nodejsUtils"),a=s("./external");function o(f){return f}function l(f,p){for(var g=0;g<f.length;++g)p[g]=255&f.charCodeAt(g);return p}s("setimmediate"),t.newBlob=function(f,p){t.checkSupport("blob");try{return new Blob([f],{type:p})}catch{try{var g=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return g.append(f),g.getBlob(p)}catch{throw new Error("Bug : can\'t construct the Blob.")}}};var u={stringifyByChunk:function(f,p,g){var _=[],w=0,A=f.length;if(A<=g)return String.fromCharCode.apply(null,f);for(;w<A;)p==="array"||p==="nodebuffer"?_.push(String.fromCharCode.apply(null,f.slice(w,Math.min(w+g,A)))):_.push(String.fromCharCode.apply(null,f.subarray(w,Math.min(w+g,A)))),w+=g;return _.join("")},stringifyByChar:function(f){for(var p="",g=0;g<f.length;g++)p+=String.fromCharCode(f[g]);return p},applyCanBeUsed:{uint8array:function(){try{return i.uint8array&&String.fromCharCode.apply(null,new Uint8Array(1)).length===1}catch{return!1}}(),nodebuffer:function(){try{return i.nodebuffer&&String.fromCharCode.apply(null,r.allocBuffer(1)).length===1}catch{return!1}}()}};function h(f){var p=65536,g=t.getTypeOf(f),_=!0;if(g==="uint8array"?_=u.applyCanBeUsed.uint8array:g==="nodebuffer"&&(_=u.applyCanBeUsed.nodebuffer),_)for(;1<p;)try{return u.stringifyByChunk(f,g,p)}catch{p=Math.floor(p/2)}return u.stringifyByChar(f)}function c(f,p){for(var g=0;g<f.length;g++)p[g]=f[g];return p}t.applyFromCharCode=h;var b={};b.string={string:o,array:function(f){return l(f,new Array(f.length))},arraybuffer:function(f){return b.string.uint8array(f).buffer},uint8array:function(f){return l(f,new Uint8Array(f.length))},nodebuffer:function(f){return l(f,r.allocBuffer(f.length))}},b.array={string:h,array:o,arraybuffer:function(f){return new Uint8Array(f).buffer},uint8array:function(f){return new Uint8Array(f)},nodebuffer:function(f){return r.newBufferFrom(f)}},b.arraybuffer={string:function(f){return h(new Uint8Array(f))},array:function(f){return c(new Uint8Array(f),new Array(f.byteLength))},arraybuffer:o,uint8array:function(f){return new Uint8Array(f)},nodebuffer:function(f){return r.newBufferFrom(new Uint8Array(f))}},b.uint8array={string:h,array:function(f){return c(f,new Array(f.length))},arraybuffer:function(f){return f.buffer},uint8array:o,nodebuffer:function(f){return r.newBufferFrom(f)}},b.nodebuffer={string:h,array:function(f){return c(f,new Array(f.length))},arraybuffer:function(f){return b.nodebuffer.uint8array(f).buffer},uint8array:function(f){return c(f,new Uint8Array(f.length))},nodebuffer:o},t.transformTo=function(f,p){if(p=p||"",!f)return p;t.checkSupport(f);var g=t.getTypeOf(p);return b[g][f](p)},t.resolve=function(f){for(var p=f.split("/"),g=[],_=0;_<p.length;_++){var w=p[_];w==="."||w===""&&_!==0&&_!==p.length-1||(w===".."?g.pop():g.push(w))}return g.join("/")},t.getTypeOf=function(f){return typeof f=="string"?"string":Object.prototype.toString.call(f)==="[object Array]"?"array":i.nodebuffer&&r.isBuffer(f)?"nodebuffer":i.uint8array&&f instanceof Uint8Array?"uint8array":i.arraybuffer&&f instanceof ArrayBuffer?"arraybuffer":void 0},t.checkSupport=function(f){if(!i[f.toLowerCase()])throw new Error(f+" is not supported by this platform")},t.MAX_VALUE_16BITS=65535,t.MAX_VALUE_32BITS=-1,t.pretty=function(f){var p,g,_="";for(g=0;g<(f||"").length;g++)_+="\\\\x"+((p=f.charCodeAt(g))<16?"0":"")+p.toString(16).toUpperCase();return _},t.delay=function(f,p,g){setImmediate(function(){f.apply(g||null,p||[])})},t.inherits=function(f,p){function g(){}g.prototype=p.prototype,f.prototype=new g},t.extend=function(){var f,p,g={};for(f=0;f<arguments.length;f++)for(p in arguments[f])Object.prototype.hasOwnProperty.call(arguments[f],p)&&g[p]===void 0&&(g[p]=arguments[f][p]);return g},t.prepareContent=function(f,p,g,_,w){return a.Promise.resolve(p).then(function(A){return i.blob&&(A instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(A))!==-1)&&typeof FileReader<"u"?new a.Promise(function(v,z){var W=new FileReader;W.onload=function($){v($.target.result)},W.onerror=function($){z($.target.error)},W.readAsArrayBuffer(A)}):A}).then(function(A){var v=t.getTypeOf(A);return v?(v==="arraybuffer"?A=t.transformTo("uint8array",A):v==="string"&&(w?A=n.decode(A):g&&_!==!0&&(A=function(z){return l(z,i.uint8array?new Uint8Array(z.length):new Array(z.length))}(A))),A):a.Promise.reject(new Error("Can\'t read the data of \'"+f+"\'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,setimmediate:54}],33:[function(s,e,t){"use strict";var i=s("./reader/readerFor"),n=s("./utils"),r=s("./signature"),a=s("./zipEntry"),o=s("./support");function l(u){this.files=[],this.loadOptions=u}l.prototype={checkSignature:function(u){if(!this.reader.readAndCheckSignature(u)){this.reader.index-=4;var h=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+n.pretty(h)+", expected "+n.pretty(u)+")")}},isSignature:function(u,h){var c=this.reader.index;this.reader.setIndex(u);var b=this.reader.readString(4)===h;return this.reader.setIndex(c),b},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var u=this.reader.readData(this.zipCommentLength),h=o.uint8array?"uint8array":"array",c=n.transformTo(h,u);this.zipComment=this.loadOptions.decodeFileName(c)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var u,h,c,b=this.zip64EndOfCentralSize-44;0<b;)u=this.reader.readInt(2),h=this.reader.readInt(4),c=this.reader.readData(h),this.zip64ExtensibleData[u]={id:u,length:h,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var u,h;for(u=0;u<this.files.length;u++)h=this.files[u],this.reader.setIndex(h.localHeaderOffset),this.checkSignature(r.LOCAL_FILE_HEADER),h.readLocalPart(this.reader),h.handleUTF8(),h.processAttributes()},readCentralDir:function(){var u;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(r.CENTRAL_FILE_HEADER);)(u=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(u);if(this.centralDirRecords!==this.files.length&&this.centralDirRecords!==0&&this.files.length===0)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var u=this.reader.lastIndexOfSignature(r.CENTRAL_DIRECTORY_END);if(u<0)throw this.isSignature(0,r.LOCAL_FILE_HEADER)?new Error("Corrupted zip: can\'t find end of central directory"):new Error("Can\'t find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");this.reader.setIndex(u);var h=u;if(this.checkSignature(r.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===n.MAX_VALUE_16BITS||this.diskWithCentralDirStart===n.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===n.MAX_VALUE_16BITS||this.centralDirRecords===n.MAX_VALUE_16BITS||this.centralDirSize===n.MAX_VALUE_32BITS||this.centralDirOffset===n.MAX_VALUE_32BITS){if(this.zip64=!0,(u=this.reader.lastIndexOfSignature(r.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can\'t find the ZIP64 end of central directory locator");if(this.reader.setIndex(u),this.checkSignature(r.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,r.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(r.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can\'t find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(r.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var c=this.centralDirOffset+this.centralDirSize;this.zip64&&(c+=20,c+=12+this.zip64EndOfCentralSize);var b=h-c;if(0<b)this.isSignature(h,r.CENTRAL_FILE_HEADER)||(this.reader.zero=b);else if(b<0)throw new Error("Corrupted zip: missing "+Math.abs(b)+" bytes.")},prepareReader:function(u){this.reader=i(u)},load:function(u){this.prepareReader(u),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},e.exports=l},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(s,e,t){"use strict";var i=s("./reader/readerFor"),n=s("./utils"),r=s("./compressedObject"),a=s("./crc32"),o=s("./utf8"),l=s("./compressions"),u=s("./support");function h(c,b){this.options=c,this.loadOptions=b}h.prototype={isEncrypted:function(){return(1&this.bitFlag)==1},useUTF8:function(){return(2048&this.bitFlag)==2048},readLocalPart:function(c){var b,f;if(c.skip(22),this.fileNameLength=c.readInt(2),f=c.readInt(2),this.fileName=c.readData(this.fileNameLength),c.skip(f),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn\'t get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if((b=function(p){for(var g in l)if(Object.prototype.hasOwnProperty.call(l,g)&&l[g].magic===p)return l[g];return null}(this.compressionMethod))===null)throw new Error("Corrupted zip : compression "+n.pretty(this.compressionMethod)+" unknown (inner file : "+n.transformTo("string",this.fileName)+")");this.decompressed=new r(this.compressedSize,this.uncompressedSize,this.crc32,b,c.readData(this.compressedSize))},readCentralPart:function(c){this.versionMadeBy=c.readInt(2),c.skip(2),this.bitFlag=c.readInt(2),this.compressionMethod=c.readString(2),this.date=c.readDate(),this.crc32=c.readInt(4),this.compressedSize=c.readInt(4),this.uncompressedSize=c.readInt(4);var b=c.readInt(2);if(this.extraFieldsLength=c.readInt(2),this.fileCommentLength=c.readInt(2),this.diskNumberStart=c.readInt(2),this.internalFileAttributes=c.readInt(2),this.externalFileAttributes=c.readInt(4),this.localHeaderOffset=c.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");c.skip(b),this.readExtraFields(c),this.parseZIP64ExtraField(c),this.fileComment=c.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var c=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),c==0&&(this.dosPermissions=63&this.externalFileAttributes),c==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var c=i(this.extraFields[1].value);this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=c.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=c.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=c.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS&&(this.diskNumberStart=c.readInt(4))}},readExtraFields:function(c){var b,f,p,g=c.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});c.index+4<g;)b=c.readInt(2),f=c.readInt(2),p=c.readData(f),this.extraFields[b]={id:b,length:f,value:p};c.setIndex(g)},handleUTF8:function(){var c=u.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var b=this.findExtraFieldUnicodePath();if(b!==null)this.fileNameStr=b;else{var f=n.transformTo(c,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(f)}var p=this.findExtraFieldUnicodeComment();if(p!==null)this.fileCommentStr=p;else{var g=n.transformTo(c,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(g)}}},findExtraFieldUnicodePath:function(){var c=this.extraFields[28789];if(c){var b=i(c.value);return b.readInt(1)!==1||a(this.fileName)!==b.readInt(4)?null:o.utf8decode(b.readData(c.length-5))}return null},findExtraFieldUnicodeComment:function(){var c=this.extraFields[25461];if(c){var b=i(c.value);return b.readInt(1)!==1||a(this.fileComment)!==b.readInt(4)?null:o.utf8decode(b.readData(c.length-5))}return null}},e.exports=h},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(s,e,t){"use strict";function i(b,f,p){this.name=b,this.dir=p.dir,this.date=p.date,this.comment=p.comment,this.unixPermissions=p.unixPermissions,this.dosPermissions=p.dosPermissions,this._data=f,this._dataBinary=p.binary,this.options={compression:p.compression,compressionOptions:p.compressionOptions}}var n=s("./stream/StreamHelper"),r=s("./stream/DataWorker"),a=s("./utf8"),o=s("./compressedObject"),l=s("./stream/GenericWorker");i.prototype={internalStream:function(b){var f=null,p="string";try{if(!b)throw new Error("No output type specified.");var g=(p=b.toLowerCase())==="string"||p==="text";p!=="binarystring"&&p!=="text"||(p="string"),f=this._decompressWorker();var _=!this._dataBinary;_&&!g&&(f=f.pipe(new a.Utf8EncodeWorker)),!_&&g&&(f=f.pipe(new a.Utf8DecodeWorker))}catch(w){(f=new l("error")).error(w)}return new n(f,p,"")},async:function(b,f){return this.internalStream(b).accumulate(f)},nodeStream:function(b,f){return this.internalStream(b||"nodebuffer").toNodejsStream(f)},_compressWorker:function(b,f){if(this._data instanceof o&&this._data.compression.magic===b.magic)return this._data.getCompressedWorker();var p=this._decompressWorker();return this._dataBinary||(p=p.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(p,b,f)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof l?this._data:new r(this._data)}};for(var u=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],h=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},c=0;c<u.length;c++)i.prototype[u[c]]=h;e.exports=i},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(s,e,t){(function(i){"use strict";var n,r,a=i.MutationObserver||i.WebKitMutationObserver;if(a){var o=0,l=new a(b),u=i.document.createTextNode("");l.observe(u,{characterData:!0}),n=function(){u.data=o=++o%2}}else if(i.setImmediate||i.MessageChannel===void 0)n="document"in i&&"onreadystatechange"in i.document.createElement("script")?function(){var f=i.document.createElement("script");f.onreadystatechange=function(){b(),f.onreadystatechange=null,f.parentNode.removeChild(f),f=null},i.document.documentElement.appendChild(f)}:function(){setTimeout(b,0)};else{var h=new i.MessageChannel;h.port1.onmessage=b,n=function(){h.port2.postMessage(0)}}var c=[];function b(){var f,p;r=!0;for(var g=c.length;g;){for(p=c,c=[],f=-1;++f<g;)p[f]();g=c.length}r=!1}e.exports=function(f){c.push(f)!==1||r||n()}}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}],37:[function(s,e,t){"use strict";var i=s("immediate");function n(){}var r={},a=["REJECTED"],o=["FULFILLED"],l=["PENDING"];function u(g){if(typeof g!="function")throw new TypeError("resolver must be a function");this.state=l,this.queue=[],this.outcome=void 0,g!==n&&f(this,g)}function h(g,_,w){this.promise=g,typeof _=="function"&&(this.onFulfilled=_,this.callFulfilled=this.otherCallFulfilled),typeof w=="function"&&(this.onRejected=w,this.callRejected=this.otherCallRejected)}function c(g,_,w){i(function(){var A;try{A=_(w)}catch(v){return r.reject(g,v)}A===g?r.reject(g,new TypeError("Cannot resolve promise with itself")):r.resolve(g,A)})}function b(g){var _=g&&g.then;if(g&&(typeof g=="object"||typeof g=="function")&&typeof _=="function")return function(){_.apply(g,arguments)}}function f(g,_){var w=!1;function A(W){w||(w=!0,r.reject(g,W))}function v(W){w||(w=!0,r.resolve(g,W))}var z=p(function(){_(v,A)});z.status==="error"&&A(z.value)}function p(g,_){var w={};try{w.value=g(_),w.status="success"}catch(A){w.status="error",w.value=A}return w}(e.exports=u).prototype.finally=function(g){if(typeof g!="function")return this;var _=this.constructor;return this.then(function(w){return _.resolve(g()).then(function(){return w})},function(w){return _.resolve(g()).then(function(){throw w})})},u.prototype.catch=function(g){return this.then(null,g)},u.prototype.then=function(g,_){if(typeof g!="function"&&this.state===o||typeof _!="function"&&this.state===a)return this;var w=new this.constructor(n);return this.state!==l?c(w,this.state===o?g:_,this.outcome):this.queue.push(new h(w,g,_)),w},h.prototype.callFulfilled=function(g){r.resolve(this.promise,g)},h.prototype.otherCallFulfilled=function(g){c(this.promise,this.onFulfilled,g)},h.prototype.callRejected=function(g){r.reject(this.promise,g)},h.prototype.otherCallRejected=function(g){c(this.promise,this.onRejected,g)},r.resolve=function(g,_){var w=p(b,_);if(w.status==="error")return r.reject(g,w.value);var A=w.value;if(A)f(g,A);else{g.state=o,g.outcome=_;for(var v=-1,z=g.queue.length;++v<z;)g.queue[v].callFulfilled(_)}return g},r.reject=function(g,_){g.state=a,g.outcome=_;for(var w=-1,A=g.queue.length;++w<A;)g.queue[w].callRejected(_);return g},u.resolve=function(g){return g instanceof this?g:r.resolve(new this(n),g)},u.reject=function(g){var _=new this(n);return r.reject(_,g)},u.all=function(g){var _=this;if(Object.prototype.toString.call(g)!=="[object Array]")return this.reject(new TypeError("must be an array"));var w=g.length,A=!1;if(!w)return this.resolve([]);for(var v=new Array(w),z=0,W=-1,$=new this(n);++W<w;)T(g[W],W);return $;function T(Y,K){_.resolve(Y).then(function(C){v[K]=C,++z!==w||A||(A=!0,r.resolve($,v))},function(C){A||(A=!0,r.reject($,C))})}},u.race=function(g){var _=this;if(Object.prototype.toString.call(g)!=="[object Array]")return this.reject(new TypeError("must be an array"));var w=g.length,A=!1;if(!w)return this.resolve([]);for(var v=-1,z=new this(n);++v<w;)W=g[v],_.resolve(W).then(function($){A||(A=!0,r.resolve(z,$))},function($){A||(A=!0,r.reject(z,$))});var W;return z}},{immediate:36}],38:[function(s,e,t){"use strict";var i={};(0,s("./lib/utils/common").assign)(i,s("./lib/deflate"),s("./lib/inflate"),s("./lib/zlib/constants")),e.exports=i},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(s,e,t){"use strict";var i=s("./zlib/deflate"),n=s("./utils/common"),r=s("./utils/strings"),a=s("./zlib/messages"),o=s("./zlib/zstream"),l=Object.prototype.toString,u=0,h=-1,c=0,b=8;function f(g){if(!(this instanceof f))return new f(g);this.options=n.assign({level:h,method:b,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:""},g||{});var _=this.options;_.raw&&0<_.windowBits?_.windowBits=-_.windowBits:_.gzip&&0<_.windowBits&&_.windowBits<16&&(_.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new o,this.strm.avail_out=0;var w=i.deflateInit2(this.strm,_.level,_.method,_.windowBits,_.memLevel,_.strategy);if(w!==u)throw new Error(a[w]);if(_.header&&i.deflateSetHeader(this.strm,_.header),_.dictionary){var A;if(A=typeof _.dictionary=="string"?r.string2buf(_.dictionary):l.call(_.dictionary)==="[object ArrayBuffer]"?new Uint8Array(_.dictionary):_.dictionary,(w=i.deflateSetDictionary(this.strm,A))!==u)throw new Error(a[w]);this._dict_set=!0}}function p(g,_){var w=new f(_);if(w.push(g,!0),w.err)throw w.msg||a[w.err];return w.result}f.prototype.push=function(g,_){var w,A,v=this.strm,z=this.options.chunkSize;if(this.ended)return!1;A=_===~~_?_:_===!0?4:0,typeof g=="string"?v.input=r.string2buf(g):l.call(g)==="[object ArrayBuffer]"?v.input=new Uint8Array(g):v.input=g,v.next_in=0,v.avail_in=v.input.length;do{if(v.avail_out===0&&(v.output=new n.Buf8(z),v.next_out=0,v.avail_out=z),(w=i.deflate(v,A))!==1&&w!==u)return this.onEnd(w),!(this.ended=!0);v.avail_out!==0&&(v.avail_in!==0||A!==4&&A!==2)||(this.options.to==="string"?this.onData(r.buf2binstring(n.shrinkBuf(v.output,v.next_out))):this.onData(n.shrinkBuf(v.output,v.next_out)))}while((0<v.avail_in||v.avail_out===0)&&w!==1);return A===4?(w=i.deflateEnd(this.strm),this.onEnd(w),this.ended=!0,w===u):A!==2||(this.onEnd(u),!(v.avail_out=0))},f.prototype.onData=function(g){this.chunks.push(g)},f.prototype.onEnd=function(g){g===u&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=g,this.msg=this.strm.msg},t.Deflate=f,t.deflate=p,t.deflateRaw=function(g,_){return(_=_||{}).raw=!0,p(g,_)},t.gzip=function(g,_){return(_=_||{}).gzip=!0,p(g,_)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(s,e,t){"use strict";var i=s("./zlib/inflate"),n=s("./utils/common"),r=s("./utils/strings"),a=s("./zlib/constants"),o=s("./zlib/messages"),l=s("./zlib/zstream"),u=s("./zlib/gzheader"),h=Object.prototype.toString;function c(f){if(!(this instanceof c))return new c(f);this.options=n.assign({chunkSize:16384,windowBits:0,to:""},f||{});var p=this.options;p.raw&&0<=p.windowBits&&p.windowBits<16&&(p.windowBits=-p.windowBits,p.windowBits===0&&(p.windowBits=-15)),!(0<=p.windowBits&&p.windowBits<16)||f&&f.windowBits||(p.windowBits+=32),15<p.windowBits&&p.windowBits<48&&!(15&p.windowBits)&&(p.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var g=i.inflateInit2(this.strm,p.windowBits);if(g!==a.Z_OK)throw new Error(o[g]);this.header=new u,i.inflateGetHeader(this.strm,this.header)}function b(f,p){var g=new c(p);if(g.push(f,!0),g.err)throw g.msg||o[g.err];return g.result}c.prototype.push=function(f,p){var g,_,w,A,v,z,W=this.strm,$=this.options.chunkSize,T=this.options.dictionary,Y=!1;if(this.ended)return!1;_=p===~~p?p:p===!0?a.Z_FINISH:a.Z_NO_FLUSH,typeof f=="string"?W.input=r.binstring2buf(f):h.call(f)==="[object ArrayBuffer]"?W.input=new Uint8Array(f):W.input=f,W.next_in=0,W.avail_in=W.input.length;do{if(W.avail_out===0&&(W.output=new n.Buf8($),W.next_out=0,W.avail_out=$),(g=i.inflate(W,a.Z_NO_FLUSH))===a.Z_NEED_DICT&&T&&(z=typeof T=="string"?r.string2buf(T):h.call(T)==="[object ArrayBuffer]"?new Uint8Array(T):T,g=i.inflateSetDictionary(this.strm,z)),g===a.Z_BUF_ERROR&&Y===!0&&(g=a.Z_OK,Y=!1),g!==a.Z_STREAM_END&&g!==a.Z_OK)return this.onEnd(g),!(this.ended=!0);W.next_out&&(W.avail_out!==0&&g!==a.Z_STREAM_END&&(W.avail_in!==0||_!==a.Z_FINISH&&_!==a.Z_SYNC_FLUSH)||(this.options.to==="string"?(w=r.utf8border(W.output,W.next_out),A=W.next_out-w,v=r.buf2string(W.output,w),W.next_out=A,W.avail_out=$-A,A&&n.arraySet(W.output,W.output,w,A,0),this.onData(v)):this.onData(n.shrinkBuf(W.output,W.next_out)))),W.avail_in===0&&W.avail_out===0&&(Y=!0)}while((0<W.avail_in||W.avail_out===0)&&g!==a.Z_STREAM_END);return g===a.Z_STREAM_END&&(_=a.Z_FINISH),_===a.Z_FINISH?(g=i.inflateEnd(this.strm),this.onEnd(g),this.ended=!0,g===a.Z_OK):_!==a.Z_SYNC_FLUSH||(this.onEnd(a.Z_OK),!(W.avail_out=0))},c.prototype.onData=function(f){this.chunks.push(f)},c.prototype.onEnd=function(f){f===a.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=f,this.msg=this.strm.msg},t.Inflate=c,t.inflate=b,t.inflateRaw=function(f,p){return(p=p||{}).raw=!0,b(f,p)},t.ungzip=b},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(s,e,t){"use strict";var i=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";t.assign=function(a){for(var o=Array.prototype.slice.call(arguments,1);o.length;){var l=o.shift();if(l){if(typeof l!="object")throw new TypeError(l+"must be non-object");for(var u in l)l.hasOwnProperty(u)&&(a[u]=l[u])}}return a},t.shrinkBuf=function(a,o){return a.length===o?a:a.subarray?a.subarray(0,o):(a.length=o,a)};var n={arraySet:function(a,o,l,u,h){if(o.subarray&&a.subarray)a.set(o.subarray(l,l+u),h);else for(var c=0;c<u;c++)a[h+c]=o[l+c]},flattenChunks:function(a){var o,l,u,h,c,b;for(o=u=0,l=a.length;o<l;o++)u+=a[o].length;for(b=new Uint8Array(u),o=h=0,l=a.length;o<l;o++)c=a[o],b.set(c,h),h+=c.length;return b}},r={arraySet:function(a,o,l,u,h){for(var c=0;c<u;c++)a[h+c]=o[l+c]},flattenChunks:function(a){return[].concat.apply([],a)}};t.setTyped=function(a){a?(t.Buf8=Uint8Array,t.Buf16=Uint16Array,t.Buf32=Int32Array,t.assign(t,n)):(t.Buf8=Array,t.Buf16=Array,t.Buf32=Array,t.assign(t,r))},t.setTyped(i)},{}],42:[function(s,e,t){"use strict";var i=s("./common"),n=!0,r=!0;try{String.fromCharCode.apply(null,[0])}catch{n=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{r=!1}for(var a=new i.Buf8(256),o=0;o<256;o++)a[o]=252<=o?6:248<=o?5:240<=o?4:224<=o?3:192<=o?2:1;function l(u,h){if(h<65537&&(u.subarray&&r||!u.subarray&&n))return String.fromCharCode.apply(null,i.shrinkBuf(u,h));for(var c="",b=0;b<h;b++)c+=String.fromCharCode(u[b]);return c}a[254]=a[254]=1,t.string2buf=function(u){var h,c,b,f,p,g=u.length,_=0;for(f=0;f<g;f++)(64512&(c=u.charCodeAt(f)))==55296&&f+1<g&&(64512&(b=u.charCodeAt(f+1)))==56320&&(c=65536+(c-55296<<10)+(b-56320),f++),_+=c<128?1:c<2048?2:c<65536?3:4;for(h=new i.Buf8(_),f=p=0;p<_;f++)(64512&(c=u.charCodeAt(f)))==55296&&f+1<g&&(64512&(b=u.charCodeAt(f+1)))==56320&&(c=65536+(c-55296<<10)+(b-56320),f++),c<128?h[p++]=c:(c<2048?h[p++]=192|c>>>6:(c<65536?h[p++]=224|c>>>12:(h[p++]=240|c>>>18,h[p++]=128|c>>>12&63),h[p++]=128|c>>>6&63),h[p++]=128|63&c);return h},t.buf2binstring=function(u){return l(u,u.length)},t.binstring2buf=function(u){for(var h=new i.Buf8(u.length),c=0,b=h.length;c<b;c++)h[c]=u.charCodeAt(c);return h},t.buf2string=function(u,h){var c,b,f,p,g=h||u.length,_=new Array(2*g);for(c=b=0;c<g;)if((f=u[c++])<128)_[b++]=f;else if(4<(p=a[f]))_[b++]=65533,c+=p-1;else{for(f&=p===2?31:p===3?15:7;1<p&&c<g;)f=f<<6|63&u[c++],p--;1<p?_[b++]=65533:f<65536?_[b++]=f:(f-=65536,_[b++]=55296|f>>10&1023,_[b++]=56320|1023&f)}return l(_,b)},t.utf8border=function(u,h){var c;for((h=h||u.length)>u.length&&(h=u.length),c=h-1;0<=c&&(192&u[c])==128;)c--;return c<0||c===0?h:c+a[u[c]]>h?c:h}},{"./common":41}],43:[function(s,e,t){"use strict";e.exports=function(i,n,r,a){for(var o=65535&i|0,l=i>>>16&65535|0,u=0;r!==0;){for(r-=u=2e3<r?2e3:r;l=l+(o=o+n[a++]|0)|0,--u;);o%=65521,l%=65521}return o|l<<16|0}},{}],44:[function(s,e,t){"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(s,e,t){"use strict";var i=function(){for(var n,r=[],a=0;a<256;a++){n=a;for(var o=0;o<8;o++)n=1&n?3988292384^n>>>1:n>>>1;r[a]=n}return r}();e.exports=function(n,r,a,o){var l=i,u=o+a;n^=-1;for(var h=o;h<u;h++)n=n>>>8^l[255&(n^r[h])];return-1^n}},{}],46:[function(s,e,t){"use strict";var i,n=s("../utils/common"),r=s("./trees"),a=s("./adler32"),o=s("./crc32"),l=s("./messages"),u=0,h=4,c=0,b=-2,f=-1,p=4,g=2,_=8,w=9,A=286,v=30,z=19,W=2*A+1,$=15,T=3,Y=258,K=Y+T+1,C=42,B=113,m=1,G=2,O=3,R=4;function J(d,L){return d.msg=l[L],L}function Z(d){return(d<<1)-(4<d?9:0)}function D(d){for(var L=d.length;0<=--L;)d[L]=0}function N(d){var L=d.state,E=L.pending;E>d.avail_out&&(E=d.avail_out),E!==0&&(n.arraySet(d.output,L.pending_buf,L.pending_out,E,d.next_out),d.next_out+=E,L.pending_out+=E,d.total_out+=E,d.avail_out-=E,L.pending-=E,L.pending===0&&(L.pending_out=0))}function k(d,L){r._tr_flush_block(d,0<=d.block_start?d.block_start:-1,d.strstart-d.block_start,L),d.block_start=d.strstart,N(d.strm)}function P(d,L){d.pending_buf[d.pending++]=L}function M(d,L){d.pending_buf[d.pending++]=L>>>8&255,d.pending_buf[d.pending++]=255&L}function U(d,L){var E,x,y=d.max_chain_length,I=d.strstart,F=d.prev_length,j=d.nice_match,S=d.strstart>d.w_size-K?d.strstart-(d.w_size-K):0,V=d.window,Q=d.w_mask,H=d.prev,te=d.strstart+Y,ce=V[I+F-1],ie=V[I+F];d.prev_length>=d.good_match&&(y>>=2),j>d.lookahead&&(j=d.lookahead);do if(V[(E=L)+F]===ie&&V[E+F-1]===ce&&V[E]===V[I]&&V[++E]===V[I+1]){I+=2,E++;do;while(V[++I]===V[++E]&&V[++I]===V[++E]&&V[++I]===V[++E]&&V[++I]===V[++E]&&V[++I]===V[++E]&&V[++I]===V[++E]&&V[++I]===V[++E]&&V[++I]===V[++E]&&I<te);if(x=Y-(te-I),I=te-Y,F<x){if(d.match_start=L,j<=(F=x))break;ce=V[I+F-1],ie=V[I+F]}}while((L=H[L&Q])>S&&--y!=0);return F<=d.lookahead?F:d.lookahead}function q(d){var L,E,x,y,I,F,j,S,V,Q,H=d.w_size;do{if(y=d.window_size-d.lookahead-d.strstart,d.strstart>=H+(H-K)){for(n.arraySet(d.window,d.window,H,H,0),d.match_start-=H,d.strstart-=H,d.block_start-=H,L=E=d.hash_size;x=d.head[--L],d.head[L]=H<=x?x-H:0,--E;);for(L=E=H;x=d.prev[--L],d.prev[L]=H<=x?x-H:0,--E;);y+=H}if(d.strm.avail_in===0)break;if(F=d.strm,j=d.window,S=d.strstart+d.lookahead,V=y,Q=void 0,Q=F.avail_in,V<Q&&(Q=V),E=Q===0?0:(F.avail_in-=Q,n.arraySet(j,F.input,F.next_in,Q,S),F.state.wrap===1?F.adler=a(F.adler,j,Q,S):F.state.wrap===2&&(F.adler=o(F.adler,j,Q,S)),F.next_in+=Q,F.total_in+=Q,Q),d.lookahead+=E,d.lookahead+d.insert>=T)for(I=d.strstart-d.insert,d.ins_h=d.window[I],d.ins_h=(d.ins_h<<d.hash_shift^d.window[I+1])&d.hash_mask;d.insert&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[I+T-1])&d.hash_mask,d.prev[I&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=I,I++,d.insert--,!(d.lookahead+d.insert<T)););}while(d.lookahead<K&&d.strm.avail_in!==0)}function X(d,L){for(var E,x;;){if(d.lookahead<K){if(q(d),d.lookahead<K&&L===u)return m;if(d.lookahead===0)break}if(E=0,d.lookahead>=T&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+T-1])&d.hash_mask,E=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),E!==0&&d.strstart-E<=d.w_size-K&&(d.match_length=U(d,E)),d.match_length>=T)if(x=r._tr_tally(d,d.strstart-d.match_start,d.match_length-T),d.lookahead-=d.match_length,d.match_length<=d.max_lazy_match&&d.lookahead>=T){for(d.match_length--;d.strstart++,d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+T-1])&d.hash_mask,E=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart,--d.match_length!=0;);d.strstart++}else d.strstart+=d.match_length,d.match_length=0,d.ins_h=d.window[d.strstart],d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+1])&d.hash_mask;else x=r._tr_tally(d,0,d.window[d.strstart]),d.lookahead--,d.strstart++;if(x&&(k(d,!1),d.strm.avail_out===0))return m}return d.insert=d.strstart<T-1?d.strstart:T-1,L===h?(k(d,!0),d.strm.avail_out===0?O:R):d.last_lit&&(k(d,!1),d.strm.avail_out===0)?m:G}function ee(d,L){for(var E,x,y;;){if(d.lookahead<K){if(q(d),d.lookahead<K&&L===u)return m;if(d.lookahead===0)break}if(E=0,d.lookahead>=T&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+T-1])&d.hash_mask,E=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),d.prev_length=d.match_length,d.prev_match=d.match_start,d.match_length=T-1,E!==0&&d.prev_length<d.max_lazy_match&&d.strstart-E<=d.w_size-K&&(d.match_length=U(d,E),d.match_length<=5&&(d.strategy===1||d.match_length===T&&4096<d.strstart-d.match_start)&&(d.match_length=T-1)),d.prev_length>=T&&d.match_length<=d.prev_length){for(y=d.strstart+d.lookahead-T,x=r._tr_tally(d,d.strstart-1-d.prev_match,d.prev_length-T),d.lookahead-=d.prev_length-1,d.prev_length-=2;++d.strstart<=y&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+T-1])&d.hash_mask,E=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),--d.prev_length!=0;);if(d.match_available=0,d.match_length=T-1,d.strstart++,x&&(k(d,!1),d.strm.avail_out===0))return m}else if(d.match_available){if((x=r._tr_tally(d,0,d.window[d.strstart-1]))&&k(d,!1),d.strstart++,d.lookahead--,d.strm.avail_out===0)return m}else d.match_available=1,d.strstart++,d.lookahead--}return d.match_available&&(x=r._tr_tally(d,0,d.window[d.strstart-1]),d.match_available=0),d.insert=d.strstart<T-1?d.strstart:T-1,L===h?(k(d,!0),d.strm.avail_out===0?O:R):d.last_lit&&(k(d,!1),d.strm.avail_out===0)?m:G}function re(d,L,E,x,y){this.good_length=d,this.max_lazy=L,this.nice_length=E,this.max_chain=x,this.func=y}function ae(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=_,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new n.Buf16(2*W),this.dyn_dtree=new n.Buf16(2*(2*v+1)),this.bl_tree=new n.Buf16(2*(2*z+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new n.Buf16($+1),this.heap=new n.Buf16(2*A+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new n.Buf16(2*A+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function se(d){var L;return d&&d.state?(d.total_in=d.total_out=0,d.data_type=g,(L=d.state).pending=0,L.pending_out=0,L.wrap<0&&(L.wrap=-L.wrap),L.status=L.wrap?C:B,d.adler=L.wrap===2?0:1,L.last_flush=u,r._tr_init(L),c):J(d,b)}function fe(d){var L=se(d);return L===c&&function(E){E.window_size=2*E.w_size,D(E.head),E.max_lazy_match=i[E.level].max_lazy,E.good_match=i[E.level].good_length,E.nice_match=i[E.level].nice_length,E.max_chain_length=i[E.level].max_chain,E.strstart=0,E.block_start=0,E.lookahead=0,E.insert=0,E.match_length=E.prev_length=T-1,E.match_available=0,E.ins_h=0}(d.state),L}function he(d,L,E,x,y,I){if(!d)return b;var F=1;if(L===f&&(L=6),x<0?(F=0,x=-x):15<x&&(F=2,x-=16),y<1||w<y||E!==_||x<8||15<x||L<0||9<L||I<0||p<I)return J(d,b);x===8&&(x=9);var j=new ae;return(d.state=j).strm=d,j.wrap=F,j.gzhead=null,j.w_bits=x,j.w_size=1<<j.w_bits,j.w_mask=j.w_size-1,j.hash_bits=y+7,j.hash_size=1<<j.hash_bits,j.hash_mask=j.hash_size-1,j.hash_shift=~~((j.hash_bits+T-1)/T),j.window=new n.Buf8(2*j.w_size),j.head=new n.Buf16(j.hash_size),j.prev=new n.Buf16(j.w_size),j.lit_bufsize=1<<y+6,j.pending_buf_size=4*j.lit_bufsize,j.pending_buf=new n.Buf8(j.pending_buf_size),j.d_buf=1*j.lit_bufsize,j.l_buf=3*j.lit_bufsize,j.level=L,j.strategy=I,j.method=E,fe(d)}i=[new re(0,0,0,0,function(d,L){var E=65535;for(E>d.pending_buf_size-5&&(E=d.pending_buf_size-5);;){if(d.lookahead<=1){if(q(d),d.lookahead===0&&L===u)return m;if(d.lookahead===0)break}d.strstart+=d.lookahead,d.lookahead=0;var x=d.block_start+E;if((d.strstart===0||d.strstart>=x)&&(d.lookahead=d.strstart-x,d.strstart=x,k(d,!1),d.strm.avail_out===0)||d.strstart-d.block_start>=d.w_size-K&&(k(d,!1),d.strm.avail_out===0))return m}return d.insert=0,L===h?(k(d,!0),d.strm.avail_out===0?O:R):(d.strstart>d.block_start&&(k(d,!1),d.strm.avail_out),m)}),new re(4,4,8,4,X),new re(4,5,16,8,X),new re(4,6,32,32,X),new re(4,4,16,16,ee),new re(8,16,32,32,ee),new re(8,16,128,128,ee),new re(8,32,128,256,ee),new re(32,128,258,1024,ee),new re(32,258,258,4096,ee)],t.deflateInit=function(d,L){return he(d,L,_,15,8,0)},t.deflateInit2=he,t.deflateReset=fe,t.deflateResetKeep=se,t.deflateSetHeader=function(d,L){return d&&d.state?d.state.wrap!==2?b:(d.state.gzhead=L,c):b},t.deflate=function(d,L){var E,x,y,I;if(!d||!d.state||5<L||L<0)return d?J(d,b):b;if(x=d.state,!d.output||!d.input&&d.avail_in!==0||x.status===666&&L!==h)return J(d,d.avail_out===0?-5:b);if(x.strm=d,E=x.last_flush,x.last_flush=L,x.status===C)if(x.wrap===2)d.adler=0,P(x,31),P(x,139),P(x,8),x.gzhead?(P(x,(x.gzhead.text?1:0)+(x.gzhead.hcrc?2:0)+(x.gzhead.extra?4:0)+(x.gzhead.name?8:0)+(x.gzhead.comment?16:0)),P(x,255&x.gzhead.time),P(x,x.gzhead.time>>8&255),P(x,x.gzhead.time>>16&255),P(x,x.gzhead.time>>24&255),P(x,x.level===9?2:2<=x.strategy||x.level<2?4:0),P(x,255&x.gzhead.os),x.gzhead.extra&&x.gzhead.extra.length&&(P(x,255&x.gzhead.extra.length),P(x,x.gzhead.extra.length>>8&255)),x.gzhead.hcrc&&(d.adler=o(d.adler,x.pending_buf,x.pending,0)),x.gzindex=0,x.status=69):(P(x,0),P(x,0),P(x,0),P(x,0),P(x,0),P(x,x.level===9?2:2<=x.strategy||x.level<2?4:0),P(x,3),x.status=B);else{var F=_+(x.w_bits-8<<4)<<8;F|=(2<=x.strategy||x.level<2?0:x.level<6?1:x.level===6?2:3)<<6,x.strstart!==0&&(F|=32),F+=31-F%31,x.status=B,M(x,F),x.strstart!==0&&(M(x,d.adler>>>16),M(x,65535&d.adler)),d.adler=1}if(x.status===69)if(x.gzhead.extra){for(y=x.pending;x.gzindex<(65535&x.gzhead.extra.length)&&(x.pending!==x.pending_buf_size||(x.gzhead.hcrc&&x.pending>y&&(d.adler=o(d.adler,x.pending_buf,x.pending-y,y)),N(d),y=x.pending,x.pending!==x.pending_buf_size));)P(x,255&x.gzhead.extra[x.gzindex]),x.gzindex++;x.gzhead.hcrc&&x.pending>y&&(d.adler=o(d.adler,x.pending_buf,x.pending-y,y)),x.gzindex===x.gzhead.extra.length&&(x.gzindex=0,x.status=73)}else x.status=73;if(x.status===73)if(x.gzhead.name){y=x.pending;do{if(x.pending===x.pending_buf_size&&(x.gzhead.hcrc&&x.pending>y&&(d.adler=o(d.adler,x.pending_buf,x.pending-y,y)),N(d),y=x.pending,x.pending===x.pending_buf_size)){I=1;break}I=x.gzindex<x.gzhead.name.length?255&x.gzhead.name.charCodeAt(x.gzindex++):0,P(x,I)}while(I!==0);x.gzhead.hcrc&&x.pending>y&&(d.adler=o(d.adler,x.pending_buf,x.pending-y,y)),I===0&&(x.gzindex=0,x.status=91)}else x.status=91;if(x.status===91)if(x.gzhead.comment){y=x.pending;do{if(x.pending===x.pending_buf_size&&(x.gzhead.hcrc&&x.pending>y&&(d.adler=o(d.adler,x.pending_buf,x.pending-y,y)),N(d),y=x.pending,x.pending===x.pending_buf_size)){I=1;break}I=x.gzindex<x.gzhead.comment.length?255&x.gzhead.comment.charCodeAt(x.gzindex++):0,P(x,I)}while(I!==0);x.gzhead.hcrc&&x.pending>y&&(d.adler=o(d.adler,x.pending_buf,x.pending-y,y)),I===0&&(x.status=103)}else x.status=103;if(x.status===103&&(x.gzhead.hcrc?(x.pending+2>x.pending_buf_size&&N(d),x.pending+2<=x.pending_buf_size&&(P(x,255&d.adler),P(x,d.adler>>8&255),d.adler=0,x.status=B)):x.status=B),x.pending!==0){if(N(d),d.avail_out===0)return x.last_flush=-1,c}else if(d.avail_in===0&&Z(L)<=Z(E)&&L!==h)return J(d,-5);if(x.status===666&&d.avail_in!==0)return J(d,-5);if(d.avail_in!==0||x.lookahead!==0||L!==u&&x.status!==666){var j=x.strategy===2?function(S,V){for(var Q;;){if(S.lookahead===0&&(q(S),S.lookahead===0)){if(V===u)return m;break}if(S.match_length=0,Q=r._tr_tally(S,0,S.window[S.strstart]),S.lookahead--,S.strstart++,Q&&(k(S,!1),S.strm.avail_out===0))return m}return S.insert=0,V===h?(k(S,!0),S.strm.avail_out===0?O:R):S.last_lit&&(k(S,!1),S.strm.avail_out===0)?m:G}(x,L):x.strategy===3?function(S,V){for(var Q,H,te,ce,ie=S.window;;){if(S.lookahead<=Y){if(q(S),S.lookahead<=Y&&V===u)return m;if(S.lookahead===0)break}if(S.match_length=0,S.lookahead>=T&&0<S.strstart&&(H=ie[te=S.strstart-1])===ie[++te]&&H===ie[++te]&&H===ie[++te]){ce=S.strstart+Y;do;while(H===ie[++te]&&H===ie[++te]&&H===ie[++te]&&H===ie[++te]&&H===ie[++te]&&H===ie[++te]&&H===ie[++te]&&H===ie[++te]&&te<ce);S.match_length=Y-(ce-te),S.match_length>S.lookahead&&(S.match_length=S.lookahead)}if(S.match_length>=T?(Q=r._tr_tally(S,1,S.match_length-T),S.lookahead-=S.match_length,S.strstart+=S.match_length,S.match_length=0):(Q=r._tr_tally(S,0,S.window[S.strstart]),S.lookahead--,S.strstart++),Q&&(k(S,!1),S.strm.avail_out===0))return m}return S.insert=0,V===h?(k(S,!0),S.strm.avail_out===0?O:R):S.last_lit&&(k(S,!1),S.strm.avail_out===0)?m:G}(x,L):i[x.level].func(x,L);if(j!==O&&j!==R||(x.status=666),j===m||j===O)return d.avail_out===0&&(x.last_flush=-1),c;if(j===G&&(L===1?r._tr_align(x):L!==5&&(r._tr_stored_block(x,0,0,!1),L===3&&(D(x.head),x.lookahead===0&&(x.strstart=0,x.block_start=0,x.insert=0))),N(d),d.avail_out===0))return x.last_flush=-1,c}return L!==h?c:x.wrap<=0?1:(x.wrap===2?(P(x,255&d.adler),P(x,d.adler>>8&255),P(x,d.adler>>16&255),P(x,d.adler>>24&255),P(x,255&d.total_in),P(x,d.total_in>>8&255),P(x,d.total_in>>16&255),P(x,d.total_in>>24&255)):(M(x,d.adler>>>16),M(x,65535&d.adler)),N(d),0<x.wrap&&(x.wrap=-x.wrap),x.pending!==0?c:1)},t.deflateEnd=function(d){var L;return d&&d.state?(L=d.state.status)!==C&&L!==69&&L!==73&&L!==91&&L!==103&&L!==B&&L!==666?J(d,b):(d.state=null,L===B?J(d,-3):c):b},t.deflateSetDictionary=function(d,L){var E,x,y,I,F,j,S,V,Q=L.length;if(!d||!d.state||(I=(E=d.state).wrap)===2||I===1&&E.status!==C||E.lookahead)return b;for(I===1&&(d.adler=a(d.adler,L,Q,0)),E.wrap=0,Q>=E.w_size&&(I===0&&(D(E.head),E.strstart=0,E.block_start=0,E.insert=0),V=new n.Buf8(E.w_size),n.arraySet(V,L,Q-E.w_size,E.w_size,0),L=V,Q=E.w_size),F=d.avail_in,j=d.next_in,S=d.input,d.avail_in=Q,d.next_in=0,d.input=L,q(E);E.lookahead>=T;){for(x=E.strstart,y=E.lookahead-(T-1);E.ins_h=(E.ins_h<<E.hash_shift^E.window[x+T-1])&E.hash_mask,E.prev[x&E.w_mask]=E.head[E.ins_h],E.head[E.ins_h]=x,x++,--y;);E.strstart=x,E.lookahead=T-1,q(E)}return E.strstart+=E.lookahead,E.block_start=E.strstart,E.insert=E.lookahead,E.lookahead=0,E.match_length=E.prev_length=T-1,E.match_available=0,d.next_in=j,d.input=S,d.avail_in=F,E.wrap=I,c},t.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(s,e,t){"use strict";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],48:[function(s,e,t){"use strict";e.exports=function(i,n){var r,a,o,l,u,h,c,b,f,p,g,_,w,A,v,z,W,$,T,Y,K,C,B,m,G;r=i.state,a=i.next_in,m=i.input,o=a+(i.avail_in-5),l=i.next_out,G=i.output,u=l-(n-i.avail_out),h=l+(i.avail_out-257),c=r.dmax,b=r.wsize,f=r.whave,p=r.wnext,g=r.window,_=r.hold,w=r.bits,A=r.lencode,v=r.distcode,z=(1<<r.lenbits)-1,W=(1<<r.distbits)-1;e:do{w<15&&(_+=m[a++]<<w,w+=8,_+=m[a++]<<w,w+=8),$=A[_&z];t:for(;;){if(_>>>=T=$>>>24,w-=T,(T=$>>>16&255)===0)G[l++]=65535&$;else{if(!(16&T)){if(!(64&T)){$=A[(65535&$)+(_&(1<<T)-1)];continue t}if(32&T){r.mode=12;break e}i.msg="invalid literal/length code",r.mode=30;break e}Y=65535&$,(T&=15)&&(w<T&&(_+=m[a++]<<w,w+=8),Y+=_&(1<<T)-1,_>>>=T,w-=T),w<15&&(_+=m[a++]<<w,w+=8,_+=m[a++]<<w,w+=8),$=v[_&W];r:for(;;){if(_>>>=T=$>>>24,w-=T,!(16&(T=$>>>16&255))){if(!(64&T)){$=v[(65535&$)+(_&(1<<T)-1)];continue r}i.msg="invalid distance code",r.mode=30;break e}if(K=65535&$,w<(T&=15)&&(_+=m[a++]<<w,(w+=8)<T&&(_+=m[a++]<<w,w+=8)),c<(K+=_&(1<<T)-1)){i.msg="invalid distance too far back",r.mode=30;break e}if(_>>>=T,w-=T,(T=l-u)<K){if(f<(T=K-T)&&r.sane){i.msg="invalid distance too far back",r.mode=30;break e}if(B=g,(C=0)===p){if(C+=b-T,T<Y){for(Y-=T;G[l++]=g[C++],--T;);C=l-K,B=G}}else if(p<T){if(C+=b+p-T,(T-=p)<Y){for(Y-=T;G[l++]=g[C++],--T;);if(C=0,p<Y){for(Y-=T=p;G[l++]=g[C++],--T;);C=l-K,B=G}}}else if(C+=p-T,T<Y){for(Y-=T;G[l++]=g[C++],--T;);C=l-K,B=G}for(;2<Y;)G[l++]=B[C++],G[l++]=B[C++],G[l++]=B[C++],Y-=3;Y&&(G[l++]=B[C++],1<Y&&(G[l++]=B[C++]))}else{for(C=l-K;G[l++]=G[C++],G[l++]=G[C++],G[l++]=G[C++],2<(Y-=3););Y&&(G[l++]=G[C++],1<Y&&(G[l++]=G[C++]))}break}}break}}while(a<o&&l<h);a-=Y=w>>3,_&=(1<<(w-=Y<<3))-1,i.next_in=a,i.next_out=l,i.avail_in=a<o?o-a+5:5-(a-o),i.avail_out=l<h?h-l+257:257-(l-h),r.hold=_,r.bits=w}},{}],49:[function(s,e,t){"use strict";var i=s("../utils/common"),n=s("./adler32"),r=s("./crc32"),a=s("./inffast"),o=s("./inftrees"),l=1,u=2,h=0,c=-2,b=1,f=852,p=592;function g(C){return(C>>>24&255)+(C>>>8&65280)+((65280&C)<<8)+((255&C)<<24)}function _(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function w(C){var B;return C&&C.state?(B=C.state,C.total_in=C.total_out=B.total=0,C.msg="",B.wrap&&(C.adler=1&B.wrap),B.mode=b,B.last=0,B.havedict=0,B.dmax=32768,B.head=null,B.hold=0,B.bits=0,B.lencode=B.lendyn=new i.Buf32(f),B.distcode=B.distdyn=new i.Buf32(p),B.sane=1,B.back=-1,h):c}function A(C){var B;return C&&C.state?((B=C.state).wsize=0,B.whave=0,B.wnext=0,w(C)):c}function v(C,B){var m,G;return C&&C.state?(G=C.state,B<0?(m=0,B=-B):(m=1+(B>>4),B<48&&(B&=15)),B&&(B<8||15<B)?c:(G.window!==null&&G.wbits!==B&&(G.window=null),G.wrap=m,G.wbits=B,A(C))):c}function z(C,B){var m,G;return C?(G=new _,(C.state=G).window=null,(m=v(C,B))!==h&&(C.state=null),m):c}var W,$,T=!0;function Y(C){if(T){var B;for(W=new i.Buf32(512),$=new i.Buf32(32),B=0;B<144;)C.lens[B++]=8;for(;B<256;)C.lens[B++]=9;for(;B<280;)C.lens[B++]=7;for(;B<288;)C.lens[B++]=8;for(o(l,C.lens,0,288,W,0,C.work,{bits:9}),B=0;B<32;)C.lens[B++]=5;o(u,C.lens,0,32,$,0,C.work,{bits:5}),T=!1}C.lencode=W,C.lenbits=9,C.distcode=$,C.distbits=5}function K(C,B,m,G){var O,R=C.state;return R.window===null&&(R.wsize=1<<R.wbits,R.wnext=0,R.whave=0,R.window=new i.Buf8(R.wsize)),G>=R.wsize?(i.arraySet(R.window,B,m-R.wsize,R.wsize,0),R.wnext=0,R.whave=R.wsize):(G<(O=R.wsize-R.wnext)&&(O=G),i.arraySet(R.window,B,m-G,O,R.wnext),(G-=O)?(i.arraySet(R.window,B,m-G,G,0),R.wnext=G,R.whave=R.wsize):(R.wnext+=O,R.wnext===R.wsize&&(R.wnext=0),R.whave<R.wsize&&(R.whave+=O))),0}t.inflateReset=A,t.inflateReset2=v,t.inflateResetKeep=w,t.inflateInit=function(C){return z(C,15)},t.inflateInit2=z,t.inflate=function(C,B){var m,G,O,R,J,Z,D,N,k,P,M,U,q,X,ee,re,ae,se,fe,he,d,L,E,x,y=0,I=new i.Buf8(4),F=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!C||!C.state||!C.output||!C.input&&C.avail_in!==0)return c;(m=C.state).mode===12&&(m.mode=13),J=C.next_out,O=C.output,D=C.avail_out,R=C.next_in,G=C.input,Z=C.avail_in,N=m.hold,k=m.bits,P=Z,M=D,L=h;e:for(;;)switch(m.mode){case b:if(m.wrap===0){m.mode=13;break}for(;k<16;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(2&m.wrap&&N===35615){I[m.check=0]=255&N,I[1]=N>>>8&255,m.check=r(m.check,I,2,0),k=N=0,m.mode=2;break}if(m.flags=0,m.head&&(m.head.done=!1),!(1&m.wrap)||(((255&N)<<8)+(N>>8))%31){C.msg="incorrect header check",m.mode=30;break}if((15&N)!=8){C.msg="unknown compression method",m.mode=30;break}if(k-=4,d=8+(15&(N>>>=4)),m.wbits===0)m.wbits=d;else if(d>m.wbits){C.msg="invalid window size",m.mode=30;break}m.dmax=1<<d,C.adler=m.check=1,m.mode=512&N?10:12,k=N=0;break;case 2:for(;k<16;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(m.flags=N,(255&m.flags)!=8){C.msg="unknown compression method",m.mode=30;break}if(57344&m.flags){C.msg="unknown header flags set",m.mode=30;break}m.head&&(m.head.text=N>>8&1),512&m.flags&&(I[0]=255&N,I[1]=N>>>8&255,m.check=r(m.check,I,2,0)),k=N=0,m.mode=3;case 3:for(;k<32;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}m.head&&(m.head.time=N),512&m.flags&&(I[0]=255&N,I[1]=N>>>8&255,I[2]=N>>>16&255,I[3]=N>>>24&255,m.check=r(m.check,I,4,0)),k=N=0,m.mode=4;case 4:for(;k<16;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}m.head&&(m.head.xflags=255&N,m.head.os=N>>8),512&m.flags&&(I[0]=255&N,I[1]=N>>>8&255,m.check=r(m.check,I,2,0)),k=N=0,m.mode=5;case 5:if(1024&m.flags){for(;k<16;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}m.length=N,m.head&&(m.head.extra_len=N),512&m.flags&&(I[0]=255&N,I[1]=N>>>8&255,m.check=r(m.check,I,2,0)),k=N=0}else m.head&&(m.head.extra=null);m.mode=6;case 6:if(1024&m.flags&&(Z<(U=m.length)&&(U=Z),U&&(m.head&&(d=m.head.extra_len-m.length,m.head.extra||(m.head.extra=new Array(m.head.extra_len)),i.arraySet(m.head.extra,G,R,U,d)),512&m.flags&&(m.check=r(m.check,G,U,R)),Z-=U,R+=U,m.length-=U),m.length))break e;m.length=0,m.mode=7;case 7:if(2048&m.flags){if(Z===0)break e;for(U=0;d=G[R+U++],m.head&&d&&m.length<65536&&(m.head.name+=String.fromCharCode(d)),d&&U<Z;);if(512&m.flags&&(m.check=r(m.check,G,U,R)),Z-=U,R+=U,d)break e}else m.head&&(m.head.name=null);m.length=0,m.mode=8;case 8:if(4096&m.flags){if(Z===0)break e;for(U=0;d=G[R+U++],m.head&&d&&m.length<65536&&(m.head.comment+=String.fromCharCode(d)),d&&U<Z;);if(512&m.flags&&(m.check=r(m.check,G,U,R)),Z-=U,R+=U,d)break e}else m.head&&(m.head.comment=null);m.mode=9;case 9:if(512&m.flags){for(;k<16;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(N!==(65535&m.check)){C.msg="header crc mismatch",m.mode=30;break}k=N=0}m.head&&(m.head.hcrc=m.flags>>9&1,m.head.done=!0),C.adler=m.check=0,m.mode=12;break;case 10:for(;k<32;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}C.adler=m.check=g(N),k=N=0,m.mode=11;case 11:if(m.havedict===0)return C.next_out=J,C.avail_out=D,C.next_in=R,C.avail_in=Z,m.hold=N,m.bits=k,2;C.adler=m.check=1,m.mode=12;case 12:if(B===5||B===6)break e;case 13:if(m.last){N>>>=7&k,k-=7&k,m.mode=27;break}for(;k<3;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}switch(m.last=1&N,k-=1,3&(N>>>=1)){case 0:m.mode=14;break;case 1:if(Y(m),m.mode=20,B!==6)break;N>>>=2,k-=2;break e;case 2:m.mode=17;break;case 3:C.msg="invalid block type",m.mode=30}N>>>=2,k-=2;break;case 14:for(N>>>=7&k,k-=7&k;k<32;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if((65535&N)!=(N>>>16^65535)){C.msg="invalid stored block lengths",m.mode=30;break}if(m.length=65535&N,k=N=0,m.mode=15,B===6)break e;case 15:m.mode=16;case 16:if(U=m.length){if(Z<U&&(U=Z),D<U&&(U=D),U===0)break e;i.arraySet(O,G,R,U,J),Z-=U,R+=U,D-=U,J+=U,m.length-=U;break}m.mode=12;break;case 17:for(;k<14;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(m.nlen=257+(31&N),N>>>=5,k-=5,m.ndist=1+(31&N),N>>>=5,k-=5,m.ncode=4+(15&N),N>>>=4,k-=4,286<m.nlen||30<m.ndist){C.msg="too many length or distance symbols",m.mode=30;break}m.have=0,m.mode=18;case 18:for(;m.have<m.ncode;){for(;k<3;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}m.lens[F[m.have++]]=7&N,N>>>=3,k-=3}for(;m.have<19;)m.lens[F[m.have++]]=0;if(m.lencode=m.lendyn,m.lenbits=7,E={bits:m.lenbits},L=o(0,m.lens,0,19,m.lencode,0,m.work,E),m.lenbits=E.bits,L){C.msg="invalid code lengths set",m.mode=30;break}m.have=0,m.mode=19;case 19:for(;m.have<m.nlen+m.ndist;){for(;re=(y=m.lencode[N&(1<<m.lenbits)-1])>>>16&255,ae=65535&y,!((ee=y>>>24)<=k);){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(ae<16)N>>>=ee,k-=ee,m.lens[m.have++]=ae;else{if(ae===16){for(x=ee+2;k<x;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(N>>>=ee,k-=ee,m.have===0){C.msg="invalid bit length repeat",m.mode=30;break}d=m.lens[m.have-1],U=3+(3&N),N>>>=2,k-=2}else if(ae===17){for(x=ee+3;k<x;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}k-=ee,d=0,U=3+(7&(N>>>=ee)),N>>>=3,k-=3}else{for(x=ee+7;k<x;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}k-=ee,d=0,U=11+(127&(N>>>=ee)),N>>>=7,k-=7}if(m.have+U>m.nlen+m.ndist){C.msg="invalid bit length repeat",m.mode=30;break}for(;U--;)m.lens[m.have++]=d}}if(m.mode===30)break;if(m.lens[256]===0){C.msg="invalid code -- missing end-of-block",m.mode=30;break}if(m.lenbits=9,E={bits:m.lenbits},L=o(l,m.lens,0,m.nlen,m.lencode,0,m.work,E),m.lenbits=E.bits,L){C.msg="invalid literal/lengths set",m.mode=30;break}if(m.distbits=6,m.distcode=m.distdyn,E={bits:m.distbits},L=o(u,m.lens,m.nlen,m.ndist,m.distcode,0,m.work,E),m.distbits=E.bits,L){C.msg="invalid distances set",m.mode=30;break}if(m.mode=20,B===6)break e;case 20:m.mode=21;case 21:if(6<=Z&&258<=D){C.next_out=J,C.avail_out=D,C.next_in=R,C.avail_in=Z,m.hold=N,m.bits=k,a(C,M),J=C.next_out,O=C.output,D=C.avail_out,R=C.next_in,G=C.input,Z=C.avail_in,N=m.hold,k=m.bits,m.mode===12&&(m.back=-1);break}for(m.back=0;re=(y=m.lencode[N&(1<<m.lenbits)-1])>>>16&255,ae=65535&y,!((ee=y>>>24)<=k);){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(re&&!(240&re)){for(se=ee,fe=re,he=ae;re=(y=m.lencode[he+((N&(1<<se+fe)-1)>>se)])>>>16&255,ae=65535&y,!(se+(ee=y>>>24)<=k);){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}N>>>=se,k-=se,m.back+=se}if(N>>>=ee,k-=ee,m.back+=ee,m.length=ae,re===0){m.mode=26;break}if(32&re){m.back=-1,m.mode=12;break}if(64&re){C.msg="invalid literal/length code",m.mode=30;break}m.extra=15&re,m.mode=22;case 22:if(m.extra){for(x=m.extra;k<x;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}m.length+=N&(1<<m.extra)-1,N>>>=m.extra,k-=m.extra,m.back+=m.extra}m.was=m.length,m.mode=23;case 23:for(;re=(y=m.distcode[N&(1<<m.distbits)-1])>>>16&255,ae=65535&y,!((ee=y>>>24)<=k);){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(!(240&re)){for(se=ee,fe=re,he=ae;re=(y=m.distcode[he+((N&(1<<se+fe)-1)>>se)])>>>16&255,ae=65535&y,!(se+(ee=y>>>24)<=k);){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}N>>>=se,k-=se,m.back+=se}if(N>>>=ee,k-=ee,m.back+=ee,64&re){C.msg="invalid distance code",m.mode=30;break}m.offset=ae,m.extra=15&re,m.mode=24;case 24:if(m.extra){for(x=m.extra;k<x;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}m.offset+=N&(1<<m.extra)-1,N>>>=m.extra,k-=m.extra,m.back+=m.extra}if(m.offset>m.dmax){C.msg="invalid distance too far back",m.mode=30;break}m.mode=25;case 25:if(D===0)break e;if(U=M-D,m.offset>U){if((U=m.offset-U)>m.whave&&m.sane){C.msg="invalid distance too far back",m.mode=30;break}q=U>m.wnext?(U-=m.wnext,m.wsize-U):m.wnext-U,U>m.length&&(U=m.length),X=m.window}else X=O,q=J-m.offset,U=m.length;for(D<U&&(U=D),D-=U,m.length-=U;O[J++]=X[q++],--U;);m.length===0&&(m.mode=21);break;case 26:if(D===0)break e;O[J++]=m.length,D--,m.mode=21;break;case 27:if(m.wrap){for(;k<32;){if(Z===0)break e;Z--,N|=G[R++]<<k,k+=8}if(M-=D,C.total_out+=M,m.total+=M,M&&(C.adler=m.check=m.flags?r(m.check,O,M,J-M):n(m.check,O,M,J-M)),M=D,(m.flags?N:g(N))!==m.check){C.msg="incorrect data check",m.mode=30;break}k=N=0}m.mode=28;case 28:if(m.wrap&&m.flags){for(;k<32;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(N!==(4294967295&m.total)){C.msg="incorrect length check",m.mode=30;break}k=N=0}m.mode=29;case 29:L=1;break e;case 30:L=-3;break e;case 31:return-4;case 32:default:return c}return C.next_out=J,C.avail_out=D,C.next_in=R,C.avail_in=Z,m.hold=N,m.bits=k,(m.wsize||M!==C.avail_out&&m.mode<30&&(m.mode<27||B!==4))&&K(C,C.output,C.next_out,M-C.avail_out)?(m.mode=31,-4):(P-=C.avail_in,M-=C.avail_out,C.total_in+=P,C.total_out+=M,m.total+=M,m.wrap&&M&&(C.adler=m.check=m.flags?r(m.check,O,M,C.next_out-M):n(m.check,O,M,C.next_out-M)),C.data_type=m.bits+(m.last?64:0)+(m.mode===12?128:0)+(m.mode===20||m.mode===15?256:0),(P==0&&M===0||B===4)&&L===h&&(L=-5),L)},t.inflateEnd=function(C){if(!C||!C.state)return c;var B=C.state;return B.window&&(B.window=null),C.state=null,h},t.inflateGetHeader=function(C,B){var m;return C&&C.state&&2&(m=C.state).wrap?((m.head=B).done=!1,h):c},t.inflateSetDictionary=function(C,B){var m,G=B.length;return C&&C.state?(m=C.state).wrap!==0&&m.mode!==11?c:m.mode===11&&n(1,B,G,0)!==m.check?-3:K(C,B,G,G)?(m.mode=31,-4):(m.havedict=1,h):c},t.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(s,e,t){"use strict";var i=s("../utils/common"),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],r=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],a=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],o=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(l,u,h,c,b,f,p,g){var _,w,A,v,z,W,$,T,Y,K=g.bits,C=0,B=0,m=0,G=0,O=0,R=0,J=0,Z=0,D=0,N=0,k=null,P=0,M=new i.Buf16(16),U=new i.Buf16(16),q=null,X=0;for(C=0;C<=15;C++)M[C]=0;for(B=0;B<c;B++)M[u[h+B]]++;for(O=K,G=15;1<=G&&M[G]===0;G--);if(G<O&&(O=G),G===0)return b[f++]=20971520,b[f++]=20971520,g.bits=1,0;for(m=1;m<G&&M[m]===0;m++);for(O<m&&(O=m),C=Z=1;C<=15;C++)if(Z<<=1,(Z-=M[C])<0)return-1;if(0<Z&&(l===0||G!==1))return-1;for(U[1]=0,C=1;C<15;C++)U[C+1]=U[C]+M[C];for(B=0;B<c;B++)u[h+B]!==0&&(p[U[u[h+B]]++]=B);if(W=l===0?(k=q=p,19):l===1?(k=n,P-=257,q=r,X-=257,256):(k=a,q=o,-1),C=m,z=f,J=B=N=0,A=-1,v=(D=1<<(R=O))-1,l===1&&852<D||l===2&&592<D)return 1;for(;;){for($=C-J,Y=p[B]<W?(T=0,p[B]):p[B]>W?(T=q[X+p[B]],k[P+p[B]]):(T=96,0),_=1<<C-J,m=w=1<<R;b[z+(N>>J)+(w-=_)]=$<<24|T<<16|Y|0,w!==0;);for(_=1<<C-1;N&_;)_>>=1;if(_!==0?(N&=_-1,N+=_):N=0,B++,--M[C]==0){if(C===G)break;C=u[h+p[B]]}if(O<C&&(N&v)!==A){for(J===0&&(J=O),z+=m,Z=1<<(R=C-J);R+J<G&&!((Z-=M[R+J])<=0);)R++,Z<<=1;if(D+=1<<R,l===1&&852<D||l===2&&592<D)return 1;b[A=N&v]=O<<24|R<<16|z-f|0}}return N!==0&&(b[z+N]=C-J<<24|64<<16|0),g.bits=O,0}},{"../utils/common":41}],51:[function(s,e,t){"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],52:[function(s,e,t){"use strict";var i=s("../utils/common"),n=0,r=1;function a(y){for(var I=y.length;0<=--I;)y[I]=0}var o=0,l=29,u=256,h=u+1+l,c=30,b=19,f=2*h+1,p=15,g=16,_=7,w=256,A=16,v=17,z=18,W=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],$=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],T=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],Y=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],K=new Array(2*(h+2));a(K);var C=new Array(2*c);a(C);var B=new Array(512);a(B);var m=new Array(256);a(m);var G=new Array(l);a(G);var O,R,J,Z=new Array(c);function D(y,I,F,j,S){this.static_tree=y,this.extra_bits=I,this.extra_base=F,this.elems=j,this.max_length=S,this.has_stree=y&&y.length}function N(y,I){this.dyn_tree=y,this.max_code=0,this.stat_desc=I}function k(y){return y<256?B[y]:B[256+(y>>>7)]}function P(y,I){y.pending_buf[y.pending++]=255&I,y.pending_buf[y.pending++]=I>>>8&255}function M(y,I,F){y.bi_valid>g-F?(y.bi_buf|=I<<y.bi_valid&65535,P(y,y.bi_buf),y.bi_buf=I>>g-y.bi_valid,y.bi_valid+=F-g):(y.bi_buf|=I<<y.bi_valid&65535,y.bi_valid+=F)}function U(y,I,F){M(y,F[2*I],F[2*I+1])}function q(y,I){for(var F=0;F|=1&y,y>>>=1,F<<=1,0<--I;);return F>>>1}function X(y,I,F){var j,S,V=new Array(p+1),Q=0;for(j=1;j<=p;j++)V[j]=Q=Q+F[j-1]<<1;for(S=0;S<=I;S++){var H=y[2*S+1];H!==0&&(y[2*S]=q(V[H]++,H))}}function ee(y){var I;for(I=0;I<h;I++)y.dyn_ltree[2*I]=0;for(I=0;I<c;I++)y.dyn_dtree[2*I]=0;for(I=0;I<b;I++)y.bl_tree[2*I]=0;y.dyn_ltree[2*w]=1,y.opt_len=y.static_len=0,y.last_lit=y.matches=0}function re(y){8<y.bi_valid?P(y,y.bi_buf):0<y.bi_valid&&(y.pending_buf[y.pending++]=y.bi_buf),y.bi_buf=0,y.bi_valid=0}function ae(y,I,F,j){var S=2*I,V=2*F;return y[S]<y[V]||y[S]===y[V]&&j[I]<=j[F]}function se(y,I,F){for(var j=y.heap[F],S=F<<1;S<=y.heap_len&&(S<y.heap_len&&ae(I,y.heap[S+1],y.heap[S],y.depth)&&S++,!ae(I,j,y.heap[S],y.depth));)y.heap[F]=y.heap[S],F=S,S<<=1;y.heap[F]=j}function fe(y,I,F){var j,S,V,Q,H=0;if(y.last_lit!==0)for(;j=y.pending_buf[y.d_buf+2*H]<<8|y.pending_buf[y.d_buf+2*H+1],S=y.pending_buf[y.l_buf+H],H++,j===0?U(y,S,I):(U(y,(V=m[S])+u+1,I),(Q=W[V])!==0&&M(y,S-=G[V],Q),U(y,V=k(--j),F),(Q=$[V])!==0&&M(y,j-=Z[V],Q)),H<y.last_lit;);U(y,w,I)}function he(y,I){var F,j,S,V=I.dyn_tree,Q=I.stat_desc.static_tree,H=I.stat_desc.has_stree,te=I.stat_desc.elems,ce=-1;for(y.heap_len=0,y.heap_max=f,F=0;F<te;F++)V[2*F]!==0?(y.heap[++y.heap_len]=ce=F,y.depth[F]=0):V[2*F+1]=0;for(;y.heap_len<2;)V[2*(S=y.heap[++y.heap_len]=ce<2?++ce:0)]=1,y.depth[S]=0,y.opt_len--,H&&(y.static_len-=Q[2*S+1]);for(I.max_code=ce,F=y.heap_len>>1;1<=F;F--)se(y,V,F);for(S=te;F=y.heap[1],y.heap[1]=y.heap[y.heap_len--],se(y,V,1),j=y.heap[1],y.heap[--y.heap_max]=F,y.heap[--y.heap_max]=j,V[2*S]=V[2*F]+V[2*j],y.depth[S]=(y.depth[F]>=y.depth[j]?y.depth[F]:y.depth[j])+1,V[2*F+1]=V[2*j+1]=S,y.heap[1]=S++,se(y,V,1),2<=y.heap_len;);y.heap[--y.heap_max]=y.heap[1],function(ie,ye){var Oe,we,je,de,it,Ct,Ae=ye.dyn_tree,ur=ye.max_code,yi=ye.stat_desc.static_tree,xi=ye.stat_desc.has_stree,wi=ye.stat_desc.extra_bits,fr=ye.stat_desc.extra_base,$e=ye.stat_desc.max_length,nt=0;for(de=0;de<=p;de++)ie.bl_count[de]=0;for(Ae[2*ie.heap[ie.heap_max]+1]=0,Oe=ie.heap_max+1;Oe<f;Oe++)$e<(de=Ae[2*Ae[2*(we=ie.heap[Oe])+1]+1]+1)&&(de=$e,nt++),Ae[2*we+1]=de,ur<we||(ie.bl_count[de]++,it=0,fr<=we&&(it=wi[we-fr]),Ct=Ae[2*we],ie.opt_len+=Ct*(de+it),xi&&(ie.static_len+=Ct*(yi[2*we+1]+it)));if(nt!==0){do{for(de=$e-1;ie.bl_count[de]===0;)de--;ie.bl_count[de]--,ie.bl_count[de+1]+=2,ie.bl_count[$e]--,nt-=2}while(0<nt);for(de=$e;de!==0;de--)for(we=ie.bl_count[de];we!==0;)ur<(je=ie.heap[--Oe])||(Ae[2*je+1]!==de&&(ie.opt_len+=(de-Ae[2*je+1])*Ae[2*je],Ae[2*je+1]=de),we--)}}(y,I),X(V,ce,y.bl_count)}function d(y,I,F){var j,S,V=-1,Q=I[1],H=0,te=7,ce=4;for(Q===0&&(te=138,ce=3),I[2*(F+1)+1]=65535,j=0;j<=F;j++)S=Q,Q=I[2*(j+1)+1],++H<te&&S===Q||(H<ce?y.bl_tree[2*S]+=H:S!==0?(S!==V&&y.bl_tree[2*S]++,y.bl_tree[2*A]++):H<=10?y.bl_tree[2*v]++:y.bl_tree[2*z]++,V=S,ce=(H=0)===Q?(te=138,3):S===Q?(te=6,3):(te=7,4))}function L(y,I,F){var j,S,V=-1,Q=I[1],H=0,te=7,ce=4;for(Q===0&&(te=138,ce=3),j=0;j<=F;j++)if(S=Q,Q=I[2*(j+1)+1],!(++H<te&&S===Q)){if(H<ce)for(;U(y,S,y.bl_tree),--H!=0;);else S!==0?(S!==V&&(U(y,S,y.bl_tree),H--),U(y,A,y.bl_tree),M(y,H-3,2)):H<=10?(U(y,v,y.bl_tree),M(y,H-3,3)):(U(y,z,y.bl_tree),M(y,H-11,7));V=S,ce=(H=0)===Q?(te=138,3):S===Q?(te=6,3):(te=7,4)}}a(Z);var E=!1;function x(y,I,F,j){M(y,(o<<1)+(j?1:0),3),function(S,V,Q,H){re(S),H&&(P(S,Q),P(S,~Q)),i.arraySet(S.pending_buf,S.window,V,Q,S.pending),S.pending+=Q}(y,I,F,!0)}t._tr_init=function(y){E||(function(){var I,F,j,S,V,Q=new Array(p+1);for(S=j=0;S<l-1;S++)for(G[S]=j,I=0;I<1<<W[S];I++)m[j++]=S;for(m[j-1]=S,S=V=0;S<16;S++)for(Z[S]=V,I=0;I<1<<$[S];I++)B[V++]=S;for(V>>=7;S<c;S++)for(Z[S]=V<<7,I=0;I<1<<$[S]-7;I++)B[256+V++]=S;for(F=0;F<=p;F++)Q[F]=0;for(I=0;I<=143;)K[2*I+1]=8,I++,Q[8]++;for(;I<=255;)K[2*I+1]=9,I++,Q[9]++;for(;I<=279;)K[2*I+1]=7,I++,Q[7]++;for(;I<=287;)K[2*I+1]=8,I++,Q[8]++;for(X(K,h+1,Q),I=0;I<c;I++)C[2*I+1]=5,C[2*I]=q(I,5);O=new D(K,W,u+1,h,p),R=new D(C,$,0,c,p),J=new D(new Array(0),T,0,b,_)}(),E=!0),y.l_desc=new N(y.dyn_ltree,O),y.d_desc=new N(y.dyn_dtree,R),y.bl_desc=new N(y.bl_tree,J),y.bi_buf=0,y.bi_valid=0,ee(y)},t._tr_stored_block=x,t._tr_flush_block=function(y,I,F,j){var S,V,Q=0;0<y.level?(y.strm.data_type===2&&(y.strm.data_type=function(H){var te,ce=4093624447;for(te=0;te<=31;te++,ce>>>=1)if(1&ce&&H.dyn_ltree[2*te]!==0)return n;if(H.dyn_ltree[18]!==0||H.dyn_ltree[20]!==0||H.dyn_ltree[26]!==0)return r;for(te=32;te<u;te++)if(H.dyn_ltree[2*te]!==0)return r;return n}(y)),he(y,y.l_desc),he(y,y.d_desc),Q=function(H){var te;for(d(H,H.dyn_ltree,H.l_desc.max_code),d(H,H.dyn_dtree,H.d_desc.max_code),he(H,H.bl_desc),te=b-1;3<=te&&H.bl_tree[2*Y[te]+1]===0;te--);return H.opt_len+=3*(te+1)+5+5+4,te}(y),S=y.opt_len+3+7>>>3,(V=y.static_len+3+7>>>3)<=S&&(S=V)):S=V=F+5,F+4<=S&&I!==-1?x(y,I,F,j):y.strategy===4||V===S?(M(y,2+(j?1:0),3),fe(y,K,C)):(M(y,4+(j?1:0),3),function(H,te,ce,ie){var ye;for(M(H,te-257,5),M(H,ce-1,5),M(H,ie-4,4),ye=0;ye<ie;ye++)M(H,H.bl_tree[2*Y[ye]+1],3);L(H,H.dyn_ltree,te-1),L(H,H.dyn_dtree,ce-1)}(y,y.l_desc.max_code+1,y.d_desc.max_code+1,Q+1),fe(y,y.dyn_ltree,y.dyn_dtree)),ee(y),j&&re(y)},t._tr_tally=function(y,I,F){return y.pending_buf[y.d_buf+2*y.last_lit]=I>>>8&255,y.pending_buf[y.d_buf+2*y.last_lit+1]=255&I,y.pending_buf[y.l_buf+y.last_lit]=255&F,y.last_lit++,I===0?y.dyn_ltree[2*F]++:(y.matches++,I--,y.dyn_ltree[2*(m[F]+u+1)]++,y.dyn_dtree[2*k(I)]++),y.last_lit===y.lit_bufsize-1},t._tr_align=function(y){M(y,2,3),U(y,w,K),function(I){I.bi_valid===16?(P(I,I.bi_buf),I.bi_buf=0,I.bi_valid=0):8<=I.bi_valid&&(I.pending_buf[I.pending++]=255&I.bi_buf,I.bi_buf>>=8,I.bi_valid-=8)}(y)}},{"../utils/common":41}],53:[function(s,e,t){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(s,e,t){(function(i){(function(n,r){"use strict";if(!n.setImmediate){var a,o,l,u,h=1,c={},b=!1,f=n.document,p=Object.getPrototypeOf&&Object.getPrototypeOf(n);p=p&&p.setTimeout?p:n,a={}.toString.call(n.process)==="[object process]"?function(A){process.nextTick(function(){_(A)})}:function(){if(n.postMessage&&!n.importScripts){var A=!0,v=n.onmessage;return n.onmessage=function(){A=!1},n.postMessage("","*"),n.onmessage=v,A}}()?(u="setImmediate$"+Math.random()+"$",n.addEventListener?n.addEventListener("message",w,!1):n.attachEvent("onmessage",w),function(A){n.postMessage(u+A,"*")}):n.MessageChannel?((l=new MessageChannel).port1.onmessage=function(A){_(A.data)},function(A){l.port2.postMessage(A)}):f&&"onreadystatechange"in f.createElement("script")?(o=f.documentElement,function(A){var v=f.createElement("script");v.onreadystatechange=function(){_(A),v.onreadystatechange=null,o.removeChild(v),v=null},o.appendChild(v)}):function(A){setTimeout(_,0,A)},p.setImmediate=function(A){typeof A!="function"&&(A=new Function(""+A));for(var v=new Array(arguments.length-1),z=0;z<v.length;z++)v[z]=arguments[z+1];var W={callback:A,args:v};return c[h]=W,a(h),h++},p.clearImmediate=g}function g(A){delete c[A]}function _(A){if(b)setTimeout(_,0,A);else{var v=c[A];if(v){b=!0;try{(function(z){var W=z.callback,$=z.args;switch($.length){case 0:W();break;case 1:W($[0]);break;case 2:W($[0],$[1]);break;case 3:W($[0],$[1],$[2]);break;default:W.apply(r,$)}})(v)}finally{g(A),b=!1}}}}function w(A){A.source===n&&typeof A.data=="string"&&A.data.indexOf(u)===0&&_(+A.data.slice(u.length))}})(typeof self>"u"?i===void 0?this:i:self)}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})});var Zt=be(Ce=>{"use strict";var br=":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD",Ri=br+"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040",_r="["+br+"]["+Ri+"]*",zi=new RegExp("^"+_r+"$"),Wi=function(s,e){let t=[],i=e.exec(s);for(;i;){let n=[];n.startIndex=e.lastIndex-i[0].length;let r=i.length;for(let a=0;a<r;a++)n.push(i[a]);t.push(n),i=e.exec(s)}return t},Bi=function(s){let e=zi.exec(s);return!(e===null||typeof e>"u")};Ce.isExist=function(s){return typeof s<"u"};Ce.isEmptyObject=function(s){return Object.keys(s).length===0};Ce.merge=function(s,e,t){if(e){let i=Object.keys(e),n=i.length;for(let r=0;r<n;r++)t==="strict"?s[i[r]]=[e[i[r]]]:s[i[r]]=e[i[r]]}};Ce.getValue=function(s){return Ce.isExist(s)?s:""};Ce.isName=Bi;Ce.getAllMatches=Wi;Ce.nameRegexp=_r});var Rt=be(Ar=>{"use strict";var Et=Zt(),Fi={allowBooleanAttributes:!1,unpairedTags:[]};Ar.validate=function(s,e){e=Object.assign({},Fi,e);let t=[],i=!1,n=!1;s[0]==="\\uFEFF"&&(s=s.substr(1));for(let r=0;r<s.length;r++)if(s[r]==="<"&&s[r+1]==="?"){if(r+=2,r=xr(s,r),r.err)return r}else if(s[r]==="<"){let a=r;if(r++,s[r]==="!"){r=wr(s,r);continue}else{let o=!1;s[r]==="/"&&(o=!0,r++);let l="";for(;r<s.length&&s[r]!==">"&&s[r]!==" "&&s[r]!==" "&&s[r]!==`\n`&&s[r]!=="\\r";r++)l+=s[r];if(l=l.trim(),l[l.length-1]==="/"&&(l=l.substring(0,l.length-1),r--),!Di(l)){let c;return l.trim().length===0?c="Invalid space after \'<\'.":c="Tag \'"+l+"\' is an invalid name.",ue("InvalidTag",c,ge(s,r))}let u=Ui(s,r);if(u===!1)return ue("InvalidAttr","Attributes for \'"+l+"\' have open quote.",ge(s,r));let h=u.value;if(r=u.index,h[h.length-1]==="/"){let c=r-h.length;h=h.substring(0,h.length-1);let b=vr(h,e);if(b===!0)i=!0;else return ue(b.err.code,b.err.msg,ge(s,c+b.err.line))}else if(o)if(u.tagClosed){if(h.trim().length>0)return ue("InvalidTag","Closing tag \'"+l+"\' can\'t have attributes or invalid starting.",ge(s,a));{let c=t.pop();if(l!==c.tagName){let b=ge(s,c.tagStartPos);return ue("InvalidTag","Expected closing tag \'"+c.tagName+"\' (opened in line "+b.line+", col "+b.col+") instead of closing tag \'"+l+"\'.",ge(s,a))}t.length==0&&(n=!0)}}else return ue("InvalidTag","Closing tag \'"+l+"\' doesn\'t have proper closing.",ge(s,r));else{let c=vr(h,e);if(c!==!0)return ue(c.err.code,c.err.msg,ge(s,r-h.length+c.err.line));if(n===!0)return ue("InvalidXml","Multiple possible root nodes found.",ge(s,r));e.unpairedTags.indexOf(l)!==-1||t.push({tagName:l,tagStartPos:a}),i=!0}for(r++;r<s.length;r++)if(s[r]==="<")if(s[r+1]==="!"){r++,r=wr(s,r);continue}else if(s[r+1]==="?"){if(r=xr(s,++r),r.err)return r}else break;else if(s[r]==="&"){let c=ji(s,r);if(c==-1)return ue("InvalidChar","char \'&\' is not expected.",ge(s,r));r=c}else if(n===!0&&!yr(s[r]))return ue("InvalidXml","Extra text at the end",ge(s,r));s[r]==="<"&&r--}}else{if(yr(s[r]))continue;return ue("InvalidChar","char \'"+s[r]+"\' is not expected.",ge(s,r))}if(i){if(t.length==1)return ue("InvalidTag","Unclosed tag \'"+t[0].tagName+"\'.",ge(s,t[0].tagStartPos));if(t.length>0)return ue("InvalidXml","Invalid \'"+JSON.stringify(t.map(r=>r.tagName),null,4).replace(/\\r?\\n/g,"")+"\' found.",{line:1,col:1})}else return ue("InvalidXml","Start tag expected.",1);return!0};function yr(s){return s===" "||s===" "||s===`\n`||s==="\\r"}function xr(s,e){let t=e;for(;e<s.length;e++)if(s[e]=="?"||s[e]==" "){let i=s.substr(t,e-t);if(e>5&&i==="xml")return ue("InvalidXml","XML declaration allowed only at the start of the document.",ge(s,e));if(s[e]=="?"&&s[e+1]==">"){e++;break}else continue}return e}function wr(s,e){if(s.length>e+5&&s[e+1]==="-"&&s[e+2]==="-"){for(e+=3;e<s.length;e++)if(s[e]==="-"&&s[e+1]==="-"&&s[e+2]===">"){e+=2;break}}else if(s.length>e+8&&s[e+1]==="D"&&s[e+2]==="O"&&s[e+3]==="C"&&s[e+4]==="T"&&s[e+5]==="Y"&&s[e+6]==="P"&&s[e+7]==="E"){let t=1;for(e+=8;e<s.length;e++)if(s[e]==="<")t++;else if(s[e]===">"&&(t--,t===0))break}else if(s.length>e+9&&s[e+1]==="["&&s[e+2]==="C"&&s[e+3]==="D"&&s[e+4]==="A"&&s[e+5]==="T"&&s[e+6]==="A"&&s[e+7]==="["){for(e+=8;e<s.length;e++)if(s[e]==="]"&&s[e+1]==="]"&&s[e+2]===">"){e+=2;break}}return e}var Gi=\'"\',Mi="\'";function Ui(s,e){let t="",i="",n=!1;for(;e<s.length;e++){if(s[e]===Gi||s[e]===Mi)i===""?i=s[e]:i!==s[e]||(i="");else if(s[e]===">"&&i===""){n=!0;break}t+=s[e]}return i!==""?!1:{value:t,index:e,tagClosed:n}}var Li=new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\'"])(([\\\\s\\\\S])*?)\\\\5)?`,"g");function vr(s,e){let t=Et.getAllMatches(s,Li),i={};for(let n=0;n<t.length;n++){if(t[n][1].length===0)return ue("InvalidAttr","Attribute \'"+t[n][2]+"\' has no space in starting.",Ye(t[n]));if(t[n][3]!==void 0&&t[n][4]===void 0)return ue("InvalidAttr","Attribute \'"+t[n][2]+"\' is without value.",Ye(t[n]));if(t[n][3]===void 0&&!e.allowBooleanAttributes)return ue("InvalidAttr","boolean attribute \'"+t[n][2]+"\' is not allowed.",Ye(t[n]));let r=t[n][2];if(!$i(r))return ue("InvalidAttr","Attribute \'"+r+"\' is an invalid name.",Ye(t[n]));if(!i.hasOwnProperty(r))i[r]=1;else return ue("InvalidAttr","Attribute \'"+r+"\' is repeated.",Ye(t[n]))}return!0}function Oi(s,e){let t=/\\d/;for(s[e]==="x"&&(e++,t=/[\\da-fA-F]/);e<s.length;e++){if(s[e]===";")return e;if(!s[e].match(t))break}return-1}function ji(s,e){if(e++,s[e]===";")return-1;if(s[e]==="#")return e++,Oi(s,e);let t=0;for(;e<s.length;e++,t++)if(!(s[e].match(/\\w/)&&t<20)){if(s[e]===";")break;return-1}return e}function ue(s,e,t){return{err:{code:s,msg:e,line:t.line||t,col:t.col}}}function $i(s){return Et.isName(s)}function Di(s){return Et.isName(s)}function ge(s,e){let t=s.substring(0,e).split(/\\r?\\n/);return{line:t.length,col:t[t.length-1].length+1}}function Ye(s){return s.startIndex+s[1].length}});var Ir=be(zt=>{var Cr={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(s,e){return e},attributeValueProcessor:function(s,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1},Vi=function(s){return Object.assign({},Cr,s)};zt.buildOptions=Vi;zt.defaultOptions=Cr});var kr=be((fa,Nr)=>{"use strict";var Wt=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){e==="__proto__"&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){e.tagname==="__proto__"&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,[":@"]:e[":@"]}):this.child.push({[e.tagname]:e.child})}};Nr.exports=Wt});var Pr=be((pa,Sr)=>{function Yi(s,e){let t={};if(s[e+3]==="O"&&s[e+4]==="C"&&s[e+5]==="T"&&s[e+6]==="Y"&&s[e+7]==="P"&&s[e+8]==="E"){e=e+9;let i=1,n=!1,r=!1,a="";for(;e<s.length;e++)if(s[e]==="<"&&!r){if(n&&Xi(s,e))e+=7,[entityName,val,e]=Hi(s,e+1),val.indexOf("&")===-1&&(t[entityName]={regx:RegExp(`&${entityName};`,"g"),val});else if(n&&Qi(s,e))e+=8;else if(n&&qi(s,e))e+=8;else if(n&&Ki(s,e))e+=9;else if(Ji)r=!0;else throw new Error("Invalid DOCTYPE");i++,a=""}else if(s[e]===">"){if(r?s[e-1]==="-"&&s[e-2]==="-"&&(r=!1,i--):i--,i===0)break}else s[e]==="["?n=!0:a+=s[e];if(i!==0)throw new Error("Unclosed DOCTYPE")}else throw new Error("Invalid Tag instead of DOCTYPE");return{entities:t,i:e}}function Hi(s,e){let t="";for(;e<s.length&&s[e]!=="\'"&&s[e]!==\'"\';e++)t+=s[e];if(t=t.trim(),t.indexOf(" ")!==-1)throw new Error("External entites are not supported");let i=s[e++],n="";for(;e<s.length&&s[e]!==i;e++)n+=s[e];return[t,n,e]}function Ji(s,e){return s[e+1]==="!"&&s[e+2]==="-"&&s[e+3]==="-"}function Xi(s,e){return s[e+1]==="!"&&s[e+2]==="E"&&s[e+3]==="N"&&s[e+4]==="T"&&s[e+5]==="I"&&s[e+6]==="T"&&s[e+7]==="Y"}function Qi(s,e){return s[e+1]==="!"&&s[e+2]==="E"&&s[e+3]==="L"&&s[e+4]==="E"&&s[e+5]==="M"&&s[e+6]==="E"&&s[e+7]==="N"&&s[e+8]==="T"}function qi(s,e){return s[e+1]==="!"&&s[e+2]==="A"&&s[e+3]==="T"&&s[e+4]==="T"&&s[e+5]==="L"&&s[e+6]==="I"&&s[e+7]==="S"&&s[e+8]==="T"}function Ki(s,e){return s[e+1]==="!"&&s[e+2]==="N"&&s[e+3]==="O"&&s[e+4]==="T"&&s[e+5]==="A"&&s[e+6]==="T"&&s[e+7]==="I"&&s[e+8]==="O"&&s[e+9]==="N"}Sr.exports=Yi});var Zr=be((ma,Tr)=>{var en=/^[-+]?0x[a-fA-F0-9]+$/,tn=/^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt);!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);var rn={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function nn(s,e={}){if(e=Object.assign({},rn,e),!s||typeof s!="string")return s;let t=s.trim();if(e.skipLike!==void 0&&e.skipLike.test(t))return s;if(e.hex&&en.test(t))return Number.parseInt(t,16);{let i=tn.exec(t);if(i){let n=i[1],r=i[2],a=sn(i[3]),o=i[4]||i[6];if(!e.leadingZeros&&r.length>0&&n&&t[2]!==".")return s;if(!e.leadingZeros&&r.length>0&&!n&&t[1]!==".")return s;{let l=Number(t),u=""+l;return u.search(/[eE]/)!==-1||o?e.eNotation?l:s:t.indexOf(".")!==-1?u==="0"&&a===""||u===a||n&&u==="-"+a?l:s:r?a===u||n+a===u?l:s:t===u||t===n+u?l:s}}else return s}}function sn(s){return s&&s.indexOf(".")!==-1&&(s=s.replace(/0+$/,""),s==="."?s="0":s[0]==="."?s="0"+s:s[s.length-1]==="."&&(s=s.substr(0,s.length-1))),s}Tr.exports=nn});var Rr=be((ba,Er)=>{"use strict";var Mt=Zt(),He=kr(),an=Pr(),on=Zr(),ga="<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)".replace(/NAME/g,Mt.nameRegexp),Bt=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"\'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:\'"\'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"\\xA2"},pound:{regex:/&(pound|#163);/g,val:"\\xA3"},yen:{regex:/&(yen|#165);/g,val:"\\xA5"},euro:{regex:/&(euro|#8364);/g,val:"\\u20AC"},copyright:{regex:/&(copy|#169);/g,val:"\\xA9"},reg:{regex:/&(reg|#174);/g,val:"\\xAE"},inr:{regex:/&(inr|#8377);/g,val:"\\u20B9"}},this.addExternalEntities=ln,this.parseXml=fn,this.parseTextData=cn,this.resolveNameSpace=hn,this.buildAttributesMap=un,this.isItStopNode=gn,this.replaceEntitiesValue=pn,this.readStopNodeData=_n,this.saveTextToParentTag=mn}};function ln(s){let e=Object.keys(s);for(let t=0;t<e.length;t++){let i=e[t];this.lastEntities[i]={regex:new RegExp("&"+i+";","g"),val:s[i]}}}function cn(s,e,t,i,n,r,a){if(s!==void 0&&(this.options.trimValues&&!i&&(s=s.trim()),s.length>0)){a||(s=this.replaceEntitiesValue(s));let o=this.options.tagValueProcessor(e,s,t,n,r);return o==null?s:typeof o!=typeof s||o!==s?o:this.options.trimValues?Gt(s,this.options.parseTagValue,this.options.numberParseOptions):s.trim()===s?Gt(s,this.options.parseTagValue,this.options.numberParseOptions):s}}function hn(s){if(this.options.removeNSPrefix){let e=s.split(":"),t=s.charAt(0)==="/"?"/":"";if(e[0]==="xmlns")return"";e.length===2&&(s=t+e[1])}return s}var dn=new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*([\'"])([\\\\s\\\\S]*?)\\\\3)?`,"gm");function un(s,e){if(!this.options.ignoreAttributes&&typeof s=="string"){let t=Mt.getAllMatches(s,dn),i=t.length,n={};for(let r=0;r<i;r++){let a=this.resolveNameSpace(t[r][1]),o=t[r][4],l=this.options.attributeNamePrefix+a;if(a.length)if(this.options.transformAttributeName&&(l=this.options.transformAttributeName(l)),l==="__proto__"&&(l="#__proto__"),o!==void 0){this.options.trimValues&&(o=o.trim()),o=this.replaceEntitiesValue(o);let u=this.options.attributeValueProcessor(a,o,e);u==null?n[l]=o:typeof u!=typeof o||u!==o?n[l]=u:n[l]=Gt(o,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(n[l]=!0)}if(!Object.keys(n).length)return;if(this.options.attributesGroupName){let r={};return r[this.options.attributesGroupName]=n,r}return n}}var fn=function(s){s=s.replace(/\\r\\n?/g,`\n`);let e=new He("!xml"),t=e,i="",n="";for(let r=0;r<s.length;r++)if(s[r]==="<")if(s[r+1]==="/"){let o=We(s,">",r,"Closing Tag is not closed."),l=s.substring(r+2,o).trim();if(this.options.removeNSPrefix){let u=l.indexOf(":");u!==-1&&(l=l.substr(u+1))}this.options.transformTagName&&(l=this.options.transformTagName(l)),t&&(i=this.saveTextToParentTag(i,t,n)),n=n.substr(0,n.lastIndexOf(".")),t=this.tagsNodeStack.pop(),i="",r=o}else if(s[r+1]==="?"){let o=Ft(s,r,!1,"?>");if(!o)throw new Error("Pi Tag is not closed.");if(i=this.saveTextToParentTag(i,t,n),!(this.options.ignoreDeclaration&&o.tagName==="?xml"||this.options.ignorePiTags)){let l=new He(o.tagName);l.add(this.options.textNodeName,""),o.tagName!==o.tagExp&&o.attrExpPresent&&(l[":@"]=this.buildAttributesMap(o.tagExp,n)),t.addChild(l)}r=o.closeIndex+1}else if(s.substr(r+1,3)==="!--"){let o=We(s,"-->",r+4,"Comment is not closed.");if(this.options.commentPropName){let l=s.substring(r+4,o-2);i=this.saveTextToParentTag(i,t,n),t.add(this.options.commentPropName,[{[this.options.textNodeName]:l}])}r=o}else if(s.substr(r+1,2)==="!D"){let o=an(s,r);this.docTypeEntities=o.entities,r=o.i}else if(s.substr(r+1,2)==="!["){let o=We(s,"]]>",r,"CDATA is not closed.")-2,l=s.substring(r+9,o);if(i=this.saveTextToParentTag(i,t,n),this.options.cdataPropName)t.add(this.options.cdataPropName,[{[this.options.textNodeName]:l}]);else{let u=this.parseTextData(l,t.tagname,n,!0,!1,!0);u==null&&(u=""),t.add(this.options.textNodeName,u)}r=o+2}else{let o=Ft(s,r,this.options.removeNSPrefix),l=o.tagName,u=o.tagExp,h=o.attrExpPresent,c=o.closeIndex;this.options.transformTagName&&(l=this.options.transformTagName(l)),t&&i&&t.tagname!=="!xml"&&(i=this.saveTextToParentTag(i,t,n,!1)),l!==e.tagname&&(n+=n?"."+l:l);let b=t;if(b&&this.options.unpairedTags.indexOf(b.tagname)!==-1&&(t=this.tagsNodeStack.pop()),this.isItStopNode(this.options.stopNodes,n,l)){let f="";if(u.length>0&&u.lastIndexOf("/")===u.length-1)r=o.closeIndex;else if(this.options.unpairedTags.indexOf(l)!==-1)r=o.closeIndex;else{let g=this.readStopNodeData(s,l,c+1);if(!g)throw new Error(`Unexpected end of ${l}`);r=g.i,f=g.tagContent}let p=new He(l);l!==u&&h&&(p[":@"]=this.buildAttributesMap(u,n)),f&&(f=this.parseTextData(f,l,n,!0,h,!0,!0)),n=n.substr(0,n.lastIndexOf(".")),p.add(this.options.textNodeName,f),t.addChild(p)}else{if(u.length>0&&u.lastIndexOf("/")===u.length-1){l[l.length-1]==="/"?(l=l.substr(0,l.length-1),u=l):u=u.substr(0,u.length-1),this.options.transformTagName&&(l=this.options.transformTagName(l));let f=new He(l);l!==u&&h&&(f[":@"]=this.buildAttributesMap(u,n)),n=n.substr(0,n.lastIndexOf(".")),t.addChild(f)}else{let f=new He(l);this.tagsNodeStack.push(t),l!==u&&h&&(f[":@"]=this.buildAttributesMap(u,n)),t.addChild(f),t=f}i="",r=c}}else i+=s[r];return e.child},pn=function(s){if(this.options.processEntities){for(let e in this.docTypeEntities){let t=this.docTypeEntities[e];s=s.replace(t.regx,t.val)}for(let e in this.lastEntities){let t=this.lastEntities[e];s=s.replace(t.regex,t.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){let t=this.htmlEntities[e];s=s.replace(t.regex,t.val)}s=s.replace(this.ampEntity.regex,this.ampEntity.val)}return s};function mn(s,e,t,i){return s&&(i===void 0&&(i=Object.keys(e.child).length===0),s=this.parseTextData(s,e.tagname,t,!1,e[":@"]?Object.keys(e[":@"]).length!==0:!1,i),s!==void 0&&s!==""&&e.add(this.options.textNodeName,s),s=""),s}function gn(s,e,t){let i="*."+t;for(let n in s){let r=s[n];if(i===r||e===r)return!0}return!1}function bn(s,e,t=">"){let i,n="";for(let r=e;r<s.length;r++){let a=s[r];if(i)a===i&&(i="");else if(a===\'"\'||a==="\'")i=a;else if(a===t[0])if(t[1]){if(s[r+1]===t[1])return{data:n,index:r}}else return{data:n,index:r};else a===" "&&(a=" ");n+=a}}function We(s,e,t,i){let n=s.indexOf(e,t);if(n===-1)throw new Error(i);return n+e.length-1}function Ft(s,e,t,i=">"){let n=bn(s,e+1,i);if(!n)return;let r=n.data,a=n.index,o=r.search(/\\s/),l=r,u=!0;if(o!==-1&&(l=r.substr(0,o).replace(/\\s\\s*$/,""),r=r.substr(o+1)),t){let h=l.indexOf(":");h!==-1&&(l=l.substr(h+1),u=l!==n.data.substr(h+1))}return{tagName:l,tagExp:r,closeIndex:a,attrExpPresent:u}}function _n(s,e,t){let i=t,n=1;for(;t<s.length;t++)if(s[t]==="<")if(s[t+1]==="/"){let r=We(s,">",t,`${e} is not closed`);if(s.substring(t+2,r).trim()===e&&(n--,n===0))return{tagContent:s.substring(i,t),i:r};t=r}else if(s[t+1]==="?")t=We(s,"?>",t+1,"StopNode is not closed.");else if(s.substr(t+1,3)==="!--")t=We(s,"-->",t+3,"StopNode is not closed.");else if(s.substr(t+1,2)==="![")t=We(s,"]]>",t,"StopNode is not closed.")-2;else{let r=Ft(s,t,">");r&&((r&&r.tagName)===e&&r.tagExp[r.tagExp.length-1]!=="/"&&n++,t=r.closeIndex)}}function Gt(s,e,t){if(e&&typeof s=="string"){let i=s.trim();return i==="true"?!0:i==="false"?!1:on(s,t)}else return Mt.isExist(s)?s:""}Er.exports=Bt});var Br=be(Wr=>{"use strict";function yn(s,e){return zr(s,e)}function zr(s,e,t){let i,n={};for(let r=0;r<s.length;r++){let a=s[r],o=xn(a),l="";if(t===void 0?l=o:l=t+"."+o,o===e.textNodeName)i===void 0?i=a[o]:i+=""+a[o];else{if(o===void 0)continue;if(a[o]){let u=zr(a[o],e,l),h=vn(u,e);a[":@"]?wn(u,a[":@"],l,e):Object.keys(u).length===1&&u[e.textNodeName]!==void 0&&!e.alwaysCreateTextNode?u=u[e.textNodeName]:Object.keys(u).length===0&&(e.alwaysCreateTextNode?u[e.textNodeName]="":u=""),n[o]!==void 0&&n.hasOwnProperty(o)?(Array.isArray(n[o])||(n[o]=[n[o]]),n[o].push(u)):e.isArray(o,l,h)?n[o]=[u]:n[o]=u}}}return typeof i=="string"?i.length>0&&(n[e.textNodeName]=i):i!==void 0&&(n[e.textNodeName]=i),n}function xn(s){let e=Object.keys(s);for(let t=0;t<e.length;t++){let i=e[t];if(i!==":@")return i}}function wn(s,e,t,i){if(e){let n=Object.keys(e),r=n.length;for(let a=0;a<r;a++){let o=n[a];i.isArray(o,t+"."+o,!0,!0)?s[o]=[e[o]]:s[o]=e[o]}}}function vn(s,e){let t=Object.keys(s).length;return!!(t===0||t===1&&s[e.textNodeName])}Wr.prettify=yn});var Gr=be((ya,Fr)=>{var{buildOptions:An}=Ir(),Cn=Rr(),{prettify:In}=Br(),Nn=Rt(),Ut=class{constructor(e){this.externalEntities={},this.options=An(e)}parse(e,t){if(typeof e!="string")if(e.toString)e=e.toString();else throw new Error("XML data is accepted in String or Bytes[] form.");if(t){t===!0&&(t={});let r=Nn.validate(e,t);if(r!==!0)throw Error(`${r.err.msg}:${r.err.line}:${r.err.col}`)}let i=new Cn(this.options);i.addExternalEntities(this.externalEntities);let n=i.parseXml(e);return this.options.preserveOrder||n===void 0?n:In(n,this.options)}addEntity(e,t){if(t.indexOf("&")!==-1)throw new Error("Entity value can\'t have \'&\'");if(e.indexOf("&")!==-1||e.indexOf(";")!==-1)throw new Error("An entity must be set without \'&\' and \';\'. Eg. use \'#xD\' for \'&#xD;\'");if(t==="&")throw new Error("An entity with value \'&\' is not permitted");this.externalEntities[e]=t}};Fr.exports=Ut});var jr=be((xa,Or)=>{var kn=`\n`;function Sn(s,e){let t="";return e.format&&e.indentBy.length>0&&(t=kn),Ur(s,e,"",t)}function Ur(s,e,t,i){let n="",r=!1;for(let a=0;a<s.length;a++){let o=s[a],l=Pn(o),u="";if(t.length===0?u=l:u=`${t}.${l}`,l===e.textNodeName){let p=o[l];Tn(u,e)||(p=e.tagValueProcessor(l,p),p=Lr(p,e)),r&&(n+=i),n+=p,r=!1;continue}else if(l===e.cdataPropName){r&&(n+=i),n+=`<![CDATA[${o[l][0][e.textNodeName]}]]>`,r=!1;continue}else if(l===e.commentPropName){n+=i+`<!--${o[l][0][e.textNodeName]}-->`,r=!0;continue}else if(l[0]==="?"){let p=Mr(o[":@"],e),g=l==="?xml"?"":i,_=o[l][0][e.textNodeName];_=_.length!==0?" "+_:"",n+=g+`<${l}${_}${p}?>`,r=!0;continue}let h=i;h!==""&&(h+=e.indentBy);let c=Mr(o[":@"],e),b=i+`<${l}${c}`,f=Ur(o[l],e,u,h);e.unpairedTags.indexOf(l)!==-1?e.suppressUnpairedNode?n+=b+">":n+=b+"/>":(!f||f.length===0)&&e.suppressEmptyNode?n+=b+"/>":f&&f.endsWith(">")?n+=b+`>${f}${i}</${l}>`:(n+=b+">",f&&i!==""&&(f.includes("/>")||f.includes("</"))?n+=i+e.indentBy+f+i:n+=f,n+=`</${l}>`),r=!0}return n}function Pn(s){let e=Object.keys(s);for(let t=0;t<e.length;t++){let i=e[t];if(i!==":@")return i}}function Mr(s,e){let t="";if(s&&!e.ignoreAttributes)for(let i in s){let n=e.attributeValueProcessor(i,s[i]);n=Lr(n,e),n===!0&&e.suppressBooleanAttributes?t+=` ${i.substr(e.attributeNamePrefix.length)}`:t+=` ${i.substr(e.attributeNamePrefix.length)}="${n}"`}return t}function Tn(s,e){s=s.substr(0,s.length-e.textNodeName.length-1);let t=s.substr(s.lastIndexOf(".")+1);for(let i in e.stopNodes)if(e.stopNodes[i]===s||e.stopNodes[i]==="*."+t)return!0;return!1}function Lr(s,e){if(s&&s.length>0&&e.processEntities)for(let t=0;t<e.entities.length;t++){let i=e.entities[t];s=s.replace(i.regex,i.val)}return s}Or.exports=Sn});var Dr=be((wa,$r)=>{"use strict";var Zn=jr(),En={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(s,e){return e},attributeValueProcessor:function(s,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("\'","g"),val:"&apos;"},{regex:new RegExp(\'"\',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[]};function Ze(s){this.options=Object.assign({},En,s),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=Wn),this.processTextOrObjNode=Rn,this.options.format?(this.indentate=zn,this.tagEndChar=`>\n`,this.newLine=`\n`):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}Ze.prototype.build=function(s){return this.options.preserveOrder?Zn(s,this.options):(Array.isArray(s)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(s={[this.options.arrayNodeName]:s}),this.j2x(s,0).val)};Ze.prototype.j2x=function(s,e){let t="",i="";for(let n in s)if(!(typeof s[n]>"u"))if(s[n]===null)n[0]==="?"?i+=this.indentate(e)+"<"+n+"?"+this.tagEndChar:i+=this.indentate(e)+"<"+n+"/"+this.tagEndChar;else if(s[n]instanceof Date)i+=this.buildTextValNode(s[n],n,"",e);else if(typeof s[n]!="object"){let r=this.isAttribute(n);if(r)t+=this.buildAttrPairStr(r,""+s[n]);else if(n===this.options.textNodeName){let a=this.options.tagValueProcessor(n,""+s[n]);i+=this.replaceEntitiesValue(a)}else i+=this.buildTextValNode(s[n],n,"",e)}else if(Array.isArray(s[n])){let r=s[n].length;for(let a=0;a<r;a++){let o=s[n][a];typeof o>"u"||(o===null?n[0]==="?"?i+=this.indentate(e)+"<"+n+"?"+this.tagEndChar:i+=this.indentate(e)+"<"+n+"/"+this.tagEndChar:typeof o=="object"?i+=this.processTextOrObjNode(o,n,e):i+=this.buildTextValNode(o,n,"",e))}}else if(this.options.attributesGroupName&&n===this.options.attributesGroupName){let r=Object.keys(s[n]),a=r.length;for(let o=0;o<a;o++)t+=this.buildAttrPairStr(r[o],""+s[n][r[o]])}else i+=this.processTextOrObjNode(s[n],n,e);return{attrStr:t,val:i}};Ze.prototype.buildAttrPairStr=function(s,e){return e=this.options.attributeValueProcessor(s,""+e),e=this.replaceEntitiesValue(e),this.options.suppressBooleanAttributes&&e==="true"?" "+s:" "+s+\'="\'+e+\'"\'};function Rn(s,e,t){let i=this.j2x(s,t+1);return s[this.options.textNodeName]!==void 0&&Object.keys(s).length===1?this.buildTextValNode(s[this.options.textNodeName],e,i.attrStr,t):this.buildObjectNode(i.val,e,i.attrStr,t)}Ze.prototype.buildObjectNode=function(s,e,t,i){if(s==="")return e[0]==="?"?this.indentate(i)+"<"+e+t+"?"+this.tagEndChar:this.indentate(i)+"<"+e+t+this.closeTag(e)+this.tagEndChar;{let n="</"+e+this.tagEndChar,r="";return e[0]==="?"&&(r="?",n=""),t&&s.indexOf("<")===-1?this.indentate(i)+"<"+e+t+r+">"+s+n:this.options.commentPropName!==!1&&e===this.options.commentPropName&&r.length===0?this.indentate(i)+`<!--${s}-->`+this.newLine:this.indentate(i)+"<"+e+t+r+this.tagEndChar+s+this.indentate(i)+n}};Ze.prototype.closeTag=function(s){let e="";return this.options.unpairedTags.indexOf(s)!==-1?this.options.suppressUnpairedNode||(e="/"):this.options.suppressEmptyNode?e="/":e=`></${s}`,e};Ze.prototype.buildTextValNode=function(s,e,t,i){if(this.options.cdataPropName!==!1&&e===this.options.cdataPropName)return this.indentate(i)+`<![CDATA[${s}]]>`+this.newLine;if(this.options.commentPropName!==!1&&e===this.options.commentPropName)return this.indentate(i)+`<!--${s}-->`+this.newLine;if(e[0]==="?")return this.indentate(i)+"<"+e+t+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(e,s);return n=this.replaceEntitiesValue(n),n===""?this.indentate(i)+"<"+e+t+this.closeTag(e)+this.tagEndChar:this.indentate(i)+"<"+e+t+">"+n+"</"+e+this.tagEndChar}};Ze.prototype.replaceEntitiesValue=function(s){if(s&&s.length>0&&this.options.processEntities)for(let e=0;e<this.options.entities.length;e++){let t=this.options.entities[e];s=s.replace(t.regex,t.val)}return s};function zn(s){return this.options.indentBy.repeat(s)}function Wn(s){return s.startsWith(this.options.attributeNamePrefix)?s.substr(this.attrPrefixLen):!1}$r.exports=Ze});var Lt=be((va,Vr)=>{"use strict";var Bn=Rt(),Fn=Gr(),Gn=Dr();Vr.exports={XMLParser:Fn,XMLValidator:Bn,XMLBuilder:Gn}});var bi=st(Nt());var at=s=>{let e=Math.floor((s-5)/7*100+.5)/100;return Math.floor((e*7+5)/7*256)/256},kt=s=>Math.floor((256*s+Math.floor(18.285714285714285))/256*7);var gr="UEsDBAoAAAAAAAAAIQBi7p1okAQAAJAEAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxUeXBlcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzIj48RGVmYXVsdCBFeHRlbnNpb249InJlbHMiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbCIvPjxEZWZhdWx0IEV4dGVuc2lvbj0ieG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24veG1sIi8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvd29ya2Jvb2sueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3Jrc2hlZXRzL3NoZWV0MS54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sIi8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvdGhlbWUvdGhlbWUxLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZSt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC9zdHlsZXMueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbCIvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3NoYXJlZFN0cmluZ3MueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkU3RyaW5ncyt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii9kb2NQcm9wcy9jb3JlLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmNvcmUtcHJvcGVydGllcyt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii9kb2NQcm9wcy9hcHAueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmV4dGVuZGVkLXByb3BlcnRpZXMreG1sIi8+PC9UeXBlcz5QSwMECgAAAAAAAAAhALVVMCNMAgAATAIAAAsAAABfcmVscy8ucmVsczw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDMiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZXh0ZW5kZWQtcHJvcGVydGllcyIgVGFyZ2V0PSJkb2NQcm9wcy9hcHAueG1sIi8+PFJlbGF0aW9uc2hpcCBJZD0icklkMiIgVHlwZT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzL21ldGFkYXRhL2NvcmUtcHJvcGVydGllcyIgVGFyZ2V0PSJkb2NQcm9wcy9jb3JlLnhtbCIvPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDEiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiIFRhcmdldD0ieGwvd29ya2Jvb2sueG1sIi8+PC9SZWxhdGlvbnNoaXBzPlBLAwQKAAAAAAAAACEAunCeZsoGAADKBgAADwAAAHhsL3dvcmtib29rLnhtbDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjx3b3JrYm9vayB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiB4bWxuczptYz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiIG1jOklnbm9yYWJsZT0ieDE1IHhyIHhyNiB4cjEwIHhyMiIgeG1sbnM6eDE1PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvbWFpbiIgeG1sbnM6eHI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNC9yZXZpc2lvbiIgeG1sbnM6eHI2PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTYvcmV2aXNpb242IiB4bWxuczp4cjEwPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTYvcmV2aXNpb24xMCIgeG1sbnM6eHIyPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTUvcmV2aXNpb24yIj48ZmlsZVZlcnNpb24gYXBwTmFtZT0ieGwiIGxhc3RFZGl0ZWQ9IjciIGxvd2VzdEVkaXRlZD0iNyIgcnVwQnVpbGQ9IjIxMTI2Ii8+PHdvcmtib29rUHIgZGVmYXVsdFRoZW1lVmVyc2lvbj0iMTY2OTI1Ii8+PG1jOkFsdGVybmF0ZUNvbnRlbnQgeG1sbnM6bWM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2Ij48bWM6Q2hvaWNlIFJlcXVpcmVzPSJ4MTUiPjx4MTVhYzphYnNQYXRoIHVybD0iSDpcVFJFQlx0cmViLWV4cG9ydFx0ZW1wbGF0ZVwiIHhtbG5zOngxNWFjPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvYWMiLz48L21jOkNob2ljZT48L21jOkFsdGVybmF0ZUNvbnRlbnQ+PHhyOnJldmlzaW9uUHRyIHJldklETGFzdFNhdmU9IjAiIGRvY3VtZW50SWQ9Ijhfe0Q4NThGOUY3LTBEOTItNEFFNC04QTQyLTQ4MENCMzU5QjYyRH0iIHhyNjpjb2F1dGhWZXJzaW9uTGFzdD0iNDAiIHhyNjpjb2F1dGhWZXJzaW9uTWF4PSI0MCIgeHIxMDp1aWRMYXN0U2F2ZT0iezAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMH0iLz48Ym9va1ZpZXdzPjx3b3JrYm9va1ZpZXcgeFdpbmRvdz0iMCIgeVdpbmRvdz0iMCIgd2luZG93V2lkdGg9IjI0NTcwIiB3aW5kb3dIZWlnaHQ9IjExMTMwIiB4cjI6dWlkPSJ7REU0RTdEMzUtNDkyRC00MEQ3LTk5MjUtNDY0N0Y1ODdFMURFfSIvPjwvYm9va1ZpZXdzPjxzaGVldHM+PHNoZWV0IG5hbWU9IlNoZWV0MSIgc2hlZXRJZD0iMSIgcjppZD0icklkMSIvPjwvc2hlZXRzPjxjYWxjUHIgY2FsY0lkPSIxOTEwMjkiLz48ZXh0THN0PjxleHQgdXJpPSJ7MTQwQTcwOTQtMEUzNS00ODkyLTg0MzItQzREMkU1N0VERUI1fSIgeG1sbnM6eDE1PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvbWFpbiI+PHgxNTp3b3JrYm9va1ByIGNoYXJ0VHJhY2tpbmdSZWZCYXNlPSIxIi8+PC9leHQ+PC9leHRMc3Q+PC93b3JrYm9vaz5QSwMECgAAAAAAAAAhAIE+lJe6AgAAugIAABoAAAB4bC9fcmVscy93b3JrYm9vay54bWwucmVsczw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDMiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc3R5bGVzIiBUYXJnZXQ9InN0eWxlcy54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQyIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RoZW1lIiBUYXJnZXQ9InRoZW1lL3RoZW1lMS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQxIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0MS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQ0IiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoYXJlZFN0cmluZ3MiIFRhcmdldD0ic2hhcmVkU3RyaW5ncy54bWwiLz48L1JlbGF0aW9uc2hpcHM+UEsDBAoAAAAAAAAAIQACrURzpAMAAKQDAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDEueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPHdvcmtzaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiB4bWxuczptYz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiIG1jOklnbm9yYWJsZT0ieDE0YWMgeHIgeHIyIHhyMyIgeG1sbnM6eDE0YWM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAwOS85L2FjIiB4bWxuczp4cj0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDE0L3JldmlzaW9uIiB4bWxuczp4cjI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNS9yZXZpc2lvbjIiIHhtbG5zOnhyMz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDE2L3JldmlzaW9uMyIgeHI6dWlkPSJ7MEQ4RTVDQTItNUM5RS00RDRCLTk0QzUtRjM1QzA0MUYzOUJEfSI+PGRpbWVuc2lvbiByZWY9IkExIi8+PHNoZWV0Vmlld3M+PHNoZWV0VmlldyB0YWJTZWxlY3RlZD0iMSIgd29ya2Jvb2tWaWV3SWQ9IjAiLz48L3NoZWV0Vmlld3M+PHNoZWV0Rm9ybWF0UHIgZGVmYXVsdFJvd0hlaWdodD0iMTUiIHgxNGFjOmR5RGVzY2VudD0iMC4yNSIvPjxzaGVldERhdGEvPjxwYWdlTWFyZ2lucyBsZWZ0PSIwLjciIHJpZ2h0PSIwLjciIHRvcD0iMC43NSIgYm90dG9tPSIwLjc1IiBoZWFkZXI9IjAuMyIgZm9vdGVyPSIwLjMiLz48L3dvcmtzaGVldD5QSwMECgAAAAAAAAAhAMEXEL7GIAAAxiAAABMAAAB4bC90aGVtZS90aGVtZTEueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPGE6dGhlbWUgeG1sbnM6YT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L21haW4iIG5hbWU9Ik9mZmljZSBUaGVtZSI+PGE6dGhlbWVFbGVtZW50cz48YTpjbHJTY2hlbWUgbmFtZT0iT2ZmaWNlIj48YTpkazE+PGE6c3lzQ2xyIHZhbD0id2luZG93VGV4dCIgbGFzdENscj0iMDAwMDAwIi8+PC9hOmRrMT48YTpsdDE+PGE6c3lzQ2xyIHZhbD0id2luZG93IiBsYXN0Q2xyPSJGRkZGRkYiLz48L2E6bHQxPjxhOmRrMj48YTpzcmdiQ2xyIHZhbD0iNDQ1NDZBIi8+PC9hOmRrMj48YTpsdDI+PGE6c3JnYkNsciB2YWw9IkU3RTZFNiIvPjwvYTpsdDI+PGE6YWNjZW50MT48YTpzcmdiQ2xyIHZhbD0iNDQ3MkM0Ii8+PC9hOmFjY2VudDE+PGE6YWNjZW50Mj48YTpzcmdiQ2xyIHZhbD0iRUQ3RDMxIi8+PC9hOmFjY2VudDI+PGE6YWNjZW50Mz48YTpzcmdiQ2xyIHZhbD0iQTVBNUE1Ii8+PC9hOmFjY2VudDM+PGE6YWNjZW50ND48YTpzcmdiQ2xyIHZhbD0iRkZDMDAwIi8+PC9hOmFjY2VudDQ+PGE6YWNjZW50NT48YTpzcmdiQ2xyIHZhbD0iNUI5QkQ1Ii8+PC9hOmFjY2VudDU+PGE6YWNjZW50Nj48YTpzcmdiQ2xyIHZhbD0iNzBBRDQ3Ii8+PC9hOmFjY2VudDY+PGE6aGxpbms+PGE6c3JnYkNsciB2YWw9IjA1NjNDMSIvPjwvYTpobGluaz48YTpmb2xIbGluaz48YTpzcmdiQ2xyIHZhbD0iOTU0RjcyIi8+PC9hOmZvbEhsaW5rPjwvYTpjbHJTY2hlbWU+PGE6Zm9udFNjaGVtZSBuYW1lPSJPZmZpY2UiPjxhOm1ham9yRm9udD48YTpsYXRpbiB0eXBlZmFjZT0iQ2FsaWJyaSBMaWdodCIgcGFub3NlPSIwMjBGMDMwMjAyMDIwNDAzMDIwNCIvPjxhOmVhIHR5cGVmYWNlPSIiLz48YTpjcyB0eXBlZmFjZT0iIi8+PGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSLmuLjjgrTjgrfjg4Pjgq8gTGlnaHQiLz48YTpmb250IHNjcmlwdD0iSGFuZyIgdHlwZWZhY2U9IuunkeydgCDqs6DrlJUiLz48YTpmb250IHNjcmlwdD0iSGFucyIgdHlwZWZhY2U9Iuetiee6vyBMaWdodCIvPjxhOmZvbnQgc2NyaXB0PSJIYW50IiB0eXBlZmFjZT0i5paw57Sw5piO6auUIi8+PGE6Zm9udCBzY3JpcHQ9IkFyYWIiIHR5cGVmYWNlPSJUaW1lcyBOZXcgUm9tYW4iLz48YTpmb250IHNjcmlwdD0iSGViciIgdHlwZWZhY2U9IlRpbWVzIE5ldyBSb21hbiIvPjxhOmZvbnQgc2NyaXB0PSJUaGFpIiB0eXBlZmFjZT0iVGFob21hIi8+PGE6Zm9udCBzY3JpcHQ9IkV0aGkiIHR5cGVmYWNlPSJOeWFsYSIvPjxhOmZvbnQgc2NyaXB0PSJCZW5nIiB0eXBlZmFjZT0iVnJpbmRhIi8+PGE6Zm9udCBzY3JpcHQ9Ikd1anIiIHR5cGVmYWNlPSJTaHJ1dGkiLz48YTpmb250IHNjcmlwdD0iS2htciIgdHlwZWZhY2U9Ik1vb2xCb3JhbiIvPjxhOmZvbnQgc2NyaXB0PSJLbmRhIiB0eXBlZmFjZT0iVHVuZ2EiLz48YTpmb250IHNjcmlwdD0iR3VydSIgdHlwZWZhY2U9IlJhYXZpIi8+PGE6Zm9udCBzY3JpcHQ9IkNhbnMiIHR5cGVmYWNlPSJFdXBoZW1pYSIvPjxhOmZvbnQgc2NyaXB0PSJDaGVyIiB0eXBlZmFjZT0iUGxhbnRhZ2VuZXQgQ2hlcm9rZWUiLz48YTpmb250IHNjcmlwdD0iWWlpaSIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBZaSBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJUaWJ0IiB0eXBlZmFjZT0iTWljcm9zb2Z0IEhpbWFsYXlhIi8+PGE6Zm9udCBzY3JpcHQ9IlRoYWEiIHR5cGVmYWNlPSJNViBCb2xpIi8+PGE6Zm9udCBzY3JpcHQ9IkRldmEiIHR5cGVmYWNlPSJNYW5nYWwiLz48YTpmb250IHNjcmlwdD0iVGVsdSIgdHlwZWZhY2U9IkdhdXRhbWkiLz48YTpmb250IHNjcmlwdD0iVGFtbCIgdHlwZWZhY2U9IkxhdGhhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cmMiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJPcnlhIiB0eXBlZmFjZT0iS2FsaW5nYSIvPjxhOmZvbnQgc2NyaXB0PSJNbHltIiB0eXBlZmFjZT0iS2FydGlrYSIvPjxhOmZvbnQgc2NyaXB0PSJMYW9vIiB0eXBlZmFjZT0iRG9rQ2hhbXBhIi8+PGE6Zm9udCBzY3JpcHQ9IlNpbmgiIHR5cGVmYWNlPSJJc2tvb2xhIFBvdGEiLz48YTpmb250IHNjcmlwdD0iTW9uZyIgdHlwZWZhY2U9Ik1vbmdvbGlhbiBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJWaWV0IiB0eXBlZmFjZT0iVGltZXMgTmV3IFJvbWFuIi8+PGE6Zm9udCBzY3JpcHQ9IlVpZ2giIHR5cGVmYWNlPSJNaWNyb3NvZnQgVWlnaHVyIi8+PGE6Zm9udCBzY3JpcHQ9Ikdlb3IiIHR5cGVmYWNlPSJTeWxmYWVuIi8+PGE6Zm9udCBzY3JpcHQ9IkFybW4iIHR5cGVmYWNlPSJBcmlhbCIvPjxhOmZvbnQgc2NyaXB0PSJCdWdpIiB0eXBlZmFjZT0iTGVlbGF3YWRlZSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJCb3BvIiB0eXBlZmFjZT0iTWljcm9zb2Z0IEpoZW5nSGVpIi8+PGE6Zm9udCBzY3JpcHQ9IkphdmEiIHR5cGVmYWNlPSJKYXZhbmVzZSBUZXh0Ii8+PGE6Zm9udCBzY3JpcHQ9Ikxpc3UiIHR5cGVmYWNlPSJTZWdvZSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJNeW1yIiB0eXBlZmFjZT0iTXlhbm1hciBUZXh0Ii8+PGE6Zm9udCBzY3JpcHQ9Ik5rb28iIHR5cGVmYWNlPSJFYnJpbWEiLz48YTpmb250IHNjcmlwdD0iT2xjayIgdHlwZWZhY2U9Ik5pcm1hbGEgVUkiLz48YTpmb250IHNjcmlwdD0iT3NtYSIgdHlwZWZhY2U9IkVicmltYSIvPjxhOmZvbnQgc2NyaXB0PSJQaGFnIiB0eXBlZmFjZT0iUGhhZ3NwYSIvPjxhOmZvbnQgc2NyaXB0PSJTeXJuIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz48YTpmb250IHNjcmlwdD0iU3lyaiIgdHlwZWZhY2U9IkVzdHJhbmdlbG8gRWRlc3NhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cmUiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJTb3JhIiB0eXBlZmFjZT0iTmlybWFsYSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJUYWxlIiB0eXBlZmFjZT0iTWljcm9zb2Z0IFRhaSBMZSIvPjxhOmZvbnQgc2NyaXB0PSJUYWx1IiB0eXBlZmFjZT0iTWljcm9zb2Z0IE5ldyBUYWkgTHVlIi8+PGE6Zm9udCBzY3JpcHQ9IlRmbmciIHR5cGVmYWNlPSJFYnJpbWEiLz48L2E6bWFqb3JGb250PjxhOm1pbm9yRm9udD48YTpsYXRpbiB0eXBlZmFjZT0iQ2FsaWJyaSIgcGFub3NlPSIwMjBGMDUwMjAyMDIwNDAzMDIwNCIvPjxhOmVhIHR5cGVmYWNlPSIiLz48YTpjcyB0eXBlZmFjZT0iIi8+PGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSLmuLjjgrTjgrfjg4Pjgq8iLz48YTpmb250IHNjcmlwdD0iSGFuZyIgdHlwZWZhY2U9IuunkeydgCDqs6DrlJUiLz48YTpmb250IHNjcmlwdD0iSGFucyIgdHlwZWZhY2U9Iuetiee6vyIvPjxhOmZvbnQgc2NyaXB0PSJIYW50IiB0eXBlZmFjZT0i5paw57Sw5piO6auUIi8+PGE6Zm9udCBzY3JpcHQ9IkFyYWIiIHR5cGVmYWNlPSJBcmlhbCIvPjxhOmZvbnQgc2NyaXB0PSJIZWJyIiB0eXBlZmFjZT0iQXJpYWwiLz48YTpmb250IHNjcmlwdD0iVGhhaSIgdHlwZWZhY2U9IlRhaG9tYSIvPjxhOmZvbnQgc2NyaXB0PSJFdGhpIiB0eXBlZmFjZT0iTnlhbGEiLz48YTpmb250IHNjcmlwdD0iQmVuZyIgdHlwZWZhY2U9IlZyaW5kYSIvPjxhOmZvbnQgc2NyaXB0PSJHdWpyIiB0eXBlZmFjZT0iU2hydXRpIi8+PGE6Zm9udCBzY3JpcHQ9IktobXIiIHR5cGVmYWNlPSJEYXVuUGVuaCIvPjxhOmZvbnQgc2NyaXB0PSJLbmRhIiB0eXBlZmFjZT0iVHVuZ2EiLz48YTpmb250IHNjcmlwdD0iR3VydSIgdHlwZWZhY2U9IlJhYXZpIi8+PGE6Zm9udCBzY3JpcHQ9IkNhbnMiIHR5cGVmYWNlPSJFdXBoZW1pYSIvPjxhOmZvbnQgc2NyaXB0PSJDaGVyIiB0eXBlZmFjZT0iUGxhbnRhZ2VuZXQgQ2hlcm9rZWUiLz48YTpmb250IHNjcmlwdD0iWWlpaSIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBZaSBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJUaWJ0IiB0eXBlZmFjZT0iTWljcm9zb2Z0IEhpbWFsYXlhIi8+PGE6Zm9udCBzY3JpcHQ9IlRoYWEiIHR5cGVmYWNlPSJNViBCb2xpIi8+PGE6Zm9udCBzY3JpcHQ9IkRldmEiIHR5cGVmYWNlPSJNYW5nYWwiLz48YTpmb250IHNjcmlwdD0iVGVsdSIgdHlwZWZhY2U9IkdhdXRhbWkiLz48YTpmb250IHNjcmlwdD0iVGFtbCIgdHlwZWZhY2U9IkxhdGhhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cmMiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJPcnlhIiB0eXBlZmFjZT0iS2FsaW5nYSIvPjxhOmZvbnQgc2NyaXB0PSJNbHltIiB0eXBlZmFjZT0iS2FydGlrYSIvPjxhOmZvbnQgc2NyaXB0PSJMYW9vIiB0eXBlZmFjZT0iRG9rQ2hhbXBhIi8+PGE6Zm9udCBzY3JpcHQ9IlNpbmgiIHR5cGVmYWNlPSJJc2tvb2xhIFBvdGEiLz48YTpmb250IHNjcmlwdD0iTW9uZyIgdHlwZWZhY2U9Ik1vbmdvbGlhbiBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJWaWV0IiB0eXBlZmFjZT0iQXJpYWwiLz48YTpmb250IHNjcmlwdD0iVWlnaCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBVaWdodXIiLz48YTpmb250IHNjcmlwdD0iR2VvciIgdHlwZWZhY2U9IlN5bGZhZW4iLz48YTpmb250IHNjcmlwdD0iQXJtbiIgdHlwZWZhY2U9IkFyaWFsIi8+PGE6Zm9udCBzY3JpcHQ9IkJ1Z2kiIHR5cGVmYWNlPSJMZWVsYXdhZGVlIFVJIi8+PGE6Zm9udCBzY3JpcHQ9IkJvcG8iIHR5cGVmYWNlPSJNaWNyb3NvZnQgSmhlbmdIZWkiLz48YTpmb250IHNjcmlwdD0iSmF2YSIgdHlwZWZhY2U9IkphdmFuZXNlIFRleHQiLz48YTpmb250IHNjcmlwdD0iTGlzdSIgdHlwZWZhY2U9IlNlZ29lIFVJIi8+PGE6Zm9udCBzY3JpcHQ9Ik15bXIiIHR5cGVmYWNlPSJNeWFubWFyIFRleHQiLz48YTpmb250IHNjcmlwdD0iTmtvbyIgdHlwZWZhY2U9IkVicmltYSIvPjxhOmZvbnQgc2NyaXB0PSJPbGNrIiB0eXBlZmFjZT0iTmlybWFsYSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJPc21hIiB0eXBlZmFjZT0iRWJyaW1hIi8+PGE6Zm9udCBzY3JpcHQ9IlBoYWciIHR5cGVmYWNlPSJQaGFnc3BhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cm4iIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJTeXJqIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz48YTpmb250IHNjcmlwdD0iU3lyZSIgdHlwZWZhY2U9IkVzdHJhbmdlbG8gRWRlc3NhIi8+PGE6Zm9udCBzY3JpcHQ9IlNvcmEiIHR5cGVmYWNlPSJOaXJtYWxhIFVJIi8+PGE6Zm9udCBzY3JpcHQ9IlRhbGUiIHR5cGVmYWNlPSJNaWNyb3NvZnQgVGFpIExlIi8+PGE6Zm9udCBzY3JpcHQ9IlRhbHUiIHR5cGVmYWNlPSJNaWNyb3NvZnQgTmV3IFRhaSBMdWUiLz48YTpmb250IHNjcmlwdD0iVGZuZyIgdHlwZWZhY2U9IkVicmltYSIvPjwvYTptaW5vckZvbnQ+PC9hOmZvbnRTY2hlbWU+PGE6Zm10U2NoZW1lIG5hbWU9Ik9mZmljZSI+PGE6ZmlsbFN0eWxlTHN0PjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+PGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj48YTpnc0xzdD48YTpncyBwb3M9IjAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpsdW1Nb2QgdmFsPSIxMTAwMDAiLz48YTpzYXRNb2QgdmFsPSIxMDUwMDAiLz48YTp0aW50IHZhbD0iNjcwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48YTpncyBwb3M9IjUwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6bHVtTW9kIHZhbD0iMTA1MDAwIi8+PGE6c2F0TW9kIHZhbD0iMTAzMDAwIi8+PGE6dGludCB2YWw9IjczMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpsdW1Nb2QgdmFsPSIxMDUwMDAiLz48YTpzYXRNb2QgdmFsPSIxMDkwMDAiLz48YTp0aW50IHZhbD0iODEwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48L2E6Z3NMc3Q+PGE6bGluIGFuZz0iNTQwMDAwMCIgc2NhbGVkPSIwIi8+PC9hOmdyYWRGaWxsPjxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+PGE6Z3NMc3Q+PGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2F0TW9kIHZhbD0iMTAzMDAwIi8+PGE6bHVtTW9kIHZhbD0iMTAyMDAwIi8+PGE6dGludCB2YWw9Ijk0MDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPSI1MDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnNhdE1vZCB2YWw9IjExMDAwMCIvPjxhOmx1bU1vZCB2YWw9IjEwMDAwMCIvPjxhOnNoYWRlIHZhbD0iMTAwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpsdW1Nb2QgdmFsPSI5OTAwMCIvPjxhOnNhdE1vZCB2YWw9IjEyMDAwMCIvPjxhOnNoYWRlIHZhbD0iNzgwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48L2E6Z3NMc3Q+PGE6bGluIGFuZz0iNTQwMDAwMCIgc2NhbGVkPSIwIi8+PC9hOmdyYWRGaWxsPjwvYTpmaWxsU3R5bGVMc3Q+PGE6bG5TdHlsZUxzdD48YTpsbiB3PSI2MzUwIiBjYXA9ImZsYXQiIGNtcGQ9InNuZyIgYWxnbj0iY3RyIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRGaWxsPjxhOnByc3REYXNoIHZhbD0ic29saWQiLz48YTptaXRlciBsaW09IjgwMDAwMCIvPjwvYTpsbj48YTpsbiB3PSIxMjcwMCIgY2FwPSJmbGF0IiBjbXBkPSJzbmciIGFsZ249ImN0ciI+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9InNvbGlkIi8+PGE6bWl0ZXIgbGltPSI4MDAwMDAiLz48L2E6bG4+PGE6bG4gdz0iMTkwNTAiIGNhcD0iZmxhdCIgY21wZD0ic25nIiBhbGduPSJjdHIiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPSJzb2xpZCIvPjxhOm1pdGVyIGxpbT0iODAwMDAwIi8+PC9hOmxuPjwvYTpsblN0eWxlTHN0PjxhOmVmZmVjdFN0eWxlTHN0PjxhOmVmZmVjdFN0eWxlPjxhOmVmZmVjdExzdC8+PC9hOmVmZmVjdFN0eWxlPjxhOmVmZmVjdFN0eWxlPjxhOmVmZmVjdExzdC8+PC9hOmVmZmVjdFN0eWxlPjxhOmVmZmVjdFN0eWxlPjxhOmVmZmVjdExzdD48YTpvdXRlclNoZHcgYmx1clJhZD0iNTcxNTAiIGRpc3Q9IjE5MDUwIiBkaXI9IjU0MDAwMDAiIGFsZ249ImN0ciIgcm90V2l0aFNoYXBlPSIwIj48YTpzcmdiQ2xyIHZhbD0iMDAwMDAwIj48YTphbHBoYSB2YWw9IjYzMDAwIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz48L2E6ZWZmZWN0THN0PjwvYTplZmZlY3RTdHlsZT48L2E6ZWZmZWN0U3R5bGVMc3Q+PGE6YmdGaWxsU3R5bGVMc3Q+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI5NTAwMCIvPjxhOnNhdE1vZCB2YWw9IjE3MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOnNvbGlkRmlsbD48YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPjxhOmdzTHN0PjxhOmdzIHBvcz0iMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI5MzAwMCIvPjxhOnNhdE1vZCB2YWw9IjE1MDAwMCIvPjxhOnNoYWRlIHZhbD0iOTgwMDAiLz48YTpsdW1Nb2QgdmFsPSIxMDIwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48YTpncyBwb3M9IjUwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9Ijk4MDAwIi8+PGE6c2F0TW9kIHZhbD0iMTMwMDAwIi8+PGE6c2hhZGUgdmFsPSI5MDAwMCIvPjxhOmx1bU1vZCB2YWw9IjEwMzAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPjxhOmdzIHBvcz0iMTAwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2hhZGUgdmFsPSI2MzAwMCIvPjxhOnNhdE1vZCB2YWw9IjEyMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPjwvYTpnc0xzdD48YTpsaW4gYW5nPSI1NDAwMDAwIiBzY2FsZWQ9IjAiLz48L2E6Z3JhZEZpbGw+PC9hOmJnRmlsbFN0eWxlTHN0PjwvYTpmbXRTY2hlbWU+PC9hOnRoZW1lRWxlbWVudHM+PGE6b2JqZWN0RGVmYXVsdHMvPjxhOmV4dHJhQ2xyU2NoZW1lTHN0Lz48YTpleHRMc3Q+PGE6ZXh0IHVyaT0iezA1QTRDMjVDLTA4NUUtNDM0MC04NUEzLUE1NTMxRTUxMERCMn0iPjx0aG0xNTp0aGVtZUZhbWlseSB4bWxuczp0aG0xNT0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvdGhlbWVtbC8yMDEyL21haW4iIG5hbWU9Ik9mZmljZSBUaGVtZSIgaWQ9Ins2MkY5MzlCNi05M0FGLTREQjgtOUM2Qi1ENkM3REZEQzU4OUZ9IiB2aWQ9Ins0QTNDNDZFOC02MUNDLTQ2MDMtQTU4OS03NDIyQTQ3QThFNEF9Ii8+PC9hOmV4dD48L2E6ZXh0THN0PjwvYTp0aGVtZT5QSwMECgAAAAAAAAAhAHmhgGxSBgAAUgYAAA0AAAB4bC9zdHlsZXMueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPHN0eWxlU2hlZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIgeG1sbnM6bWM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2IiBtYzpJZ25vcmFibGU9IngxNGFjIHgxNnIyIHhyIiB4bWxuczp4MTRhYz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvYWMiIHhtbG5zOngxNnIyPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTUvMDIvbWFpbiIgeG1sbnM6eHI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNC9yZXZpc2lvbiI+PGZvbnRzIGNvdW50PSIxIiB4MTRhYzprbm93bkZvbnRzPSIxIj48Zm9udD48c3ogdmFsPSIxMSIvPjxjb2xvciB0aGVtZT0iMSIvPjxuYW1lIHZhbD0iQ2FsaWJyaSIvPjxmYW1pbHkgdmFsPSIyIi8+PHNjaGVtZSB2YWw9Im1pbm9yIi8+PC9mb250PjwvZm9udHM+PGZpbGxzIGNvdW50PSIyIj48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9Im5vbmUiLz48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPSJncmF5MTI1Ii8+PC9maWxsPjwvZmlsbHM+PGJvcmRlcnMgY291bnQ9IjEiPjxib3JkZXI+PGxlZnQvPjxyaWdodC8+PHRvcC8+PGJvdHRvbS8+PGRpYWdvbmFsLz48L2JvcmRlcj48L2JvcmRlcnM+PGNlbGxTdHlsZVhmcyBjb3VudD0iMSI+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiLz48L2NlbGxTdHlsZVhmcz48Y2VsbFhmcyBjb3VudD0iMSI+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIHhmSWQ9IjAiLz48L2NlbGxYZnM+PGNlbGxTdHlsZXMgY291bnQ9IjEiPjxjZWxsU3R5bGUgbmFtZT0iTm9ybWFsIiB4ZklkPSIwIiBidWlsdGluSWQ9IjAiLz48L2NlbGxTdHlsZXM+PGR4ZnMgY291bnQ9IjAiLz48dGFibGVTdHlsZXMgY291bnQ9IjAiIGRlZmF1bHRUYWJsZVN0eWxlPSJUYWJsZVN0eWxlTWVkaXVtMiIgZGVmYXVsdFBpdm90U3R5bGU9IlBpdm90U3R5bGVMaWdodDE2Ii8+PGV4dExzdD48ZXh0IHVyaT0ie0VCNzlERUYyLTgwQjgtNDNlNS05NUJELTU0Q0JEREY5MDIwQ30iIHhtbG5zOngxND0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvbWFpbiI+PHgxNDpzbGljZXJTdHlsZXMgZGVmYXVsdFNsaWNlclN0eWxlPSJTbGljZXJTdHlsZUxpZ2h0MSIvPjwvZXh0PjxleHQgdXJpPSJ7OTI2MEE1MTAtRjMwMS00NmE4LTg2MzUtRjUxMkQ2NEJFNUY1fSIgeG1sbnM6eDE1PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvbWFpbiI+PHgxNTp0aW1lbGluZVN0eWxlcyBkZWZhdWx0VGltZWxpbmVTdHlsZT0iVGltZVNsaWNlclN0eWxlTGlnaHQxIi8+PC9leHQ+PC9leHRMc3Q+PC9zdHlsZVNoZWV0PlBLAwQKAAAAAAAAACEA0IywC4EAAACBAAAAFAAAAHhsL3NoYXJlZFN0cmluZ3MueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPHNzdCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIi8+UEsDBAoAAAAAAAAAIQDcCx83XQIAAF0CAAARAAAAZG9jUHJvcHMvY29yZS54bWw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+DQo8Y3A6Y29yZVByb3BlcnRpZXMgeG1sbnM6Y3A9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvbWV0YWRhdGEvY29yZS1wcm9wZXJ0aWVzIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmRjdGVybXM9Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8iIHhtbG5zOmRjbWl0eXBlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48ZGM6Y3JlYXRvcj5kdW5jYW48L2RjOmNyZWF0b3I+PGNwOmxhc3RNb2RpZmllZEJ5PmR1bmNhbjwvY3A6bGFzdE1vZGlmaWVkQnk+PGRjdGVybXM6Y3JlYXRlZCB4c2k6dHlwZT0iZGN0ZXJtczpXM0NEVEYiPjIwMTktMDEtMzFUMTY6NDg6MDNaPC9kY3Rlcm1zOmNyZWF0ZWQ+PGRjdGVybXM6bW9kaWZpZWQgeHNpOnR5cGU9ImRjdGVybXM6VzNDRFRGIj4yMDE5LTAxLTMxVDE2OjQ4OjI4WjwvZGN0ZXJtczptb2RpZmllZD48L2NwOmNvcmVQcm9wZXJ0aWVzPlBLAwQKAAAAAAAAACEAYUkJEBEDAAARAwAAEAAAAGRvY1Byb3BzL2FwcC54bWw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+DQo8UHJvcGVydGllcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvZXh0ZW5kZWQtcHJvcGVydGllcyIgeG1sbnM6dnQ9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2RvY1Byb3BzVlR5cGVzIj48QXBwbGljYXRpb24+TWljcm9zb2Z0IEV4Y2VsPC9BcHBsaWNhdGlvbj48RG9jU2VjdXJpdHk+MDwvRG9jU2VjdXJpdHk+PFNjYWxlQ3JvcD5mYWxzZTwvU2NhbGVDcm9wPjxIZWFkaW5nUGFpcnM+PHZ0OnZlY3RvciBzaXplPSIyIiBiYXNlVHlwZT0idmFyaWFudCI+PHZ0OnZhcmlhbnQ+PHZ0Omxwc3RyPldvcmtzaGVldHM8L3Z0Omxwc3RyPjwvdnQ6dmFyaWFudD48dnQ6dmFyaWFudD48dnQ6aTQ+MTwvdnQ6aTQ+PC92dDp2YXJpYW50PjwvdnQ6dmVjdG9yPjwvSGVhZGluZ1BhaXJzPjxUaXRsZXNPZlBhcnRzPjx2dDp2ZWN0b3Igc2l6ZT0iMSIgYmFzZVR5cGU9Imxwc3RyIj48dnQ6bHBzdHI+U2hlZXQxPC92dDpscHN0cj48L3Z0OnZlY3Rvcj48L1RpdGxlc09mUGFydHM+PENvbXBhbnk+PC9Db21wYW55PjxMaW5rc1VwVG9EYXRlPmZhbHNlPC9MaW5rc1VwVG9EYXRlPjxTaGFyZWREb2M+ZmFsc2U8L1NoYXJlZERvYz48SHlwZXJsaW5rc0NoYW5nZWQ+ZmFsc2U8L0h5cGVybGlua3NDaGFuZ2VkPjxBcHBWZXJzaW9uPjE2LjAzMDA8L0FwcFZlcnNpb24+PC9Qcm9wZXJ0aWVzPlBLAQIUAAoAAAAAAAAAIQBi7p1okAQAAJAEAAATAAAAAAAAAAAAAAAAAAAAAABbQ29udGVudF9UeXBlc10ueG1sUEsBAhQACgAAAAAAAAAhALVVMCNMAgAATAIAAAsAAAAAAAAAAAAAAAAAwQQAAF9yZWxzLy5yZWxzUEsBAhQACgAAAAAAAAAhALpwnmbKBgAAygYAAA8AAAAAAAAAAAAAAAAANgcAAHhsL3dvcmtib29rLnhtbFBLAQIUAAoAAAAAAAAAIQCBPpSXugIAALoCAAAaAAAAAAAAAAAAAAAAAC0OAAB4bC9fcmVscy93b3JrYm9vay54bWwucmVsc1BLAQIUAAoAAAAAAAAAIQACrURzpAMAAKQDAAAYAAAAAAAAAAAAAAAAAB8RAAB4bC93b3Jrc2hlZXRzL3NoZWV0MS54bWxQSwECFAAKAAAAAAAAACEAwRcQvsYgAADGIAAAEwAAAAAAAAAAAAAAAAD5FAAAeGwvdGhlbWUvdGhlbWUxLnhtbFBLAQIUAAoAAAAAAAAAIQB5oYBsUgYAAFIGAAANAAAAAAAAAAAAAAAAAPA1AAB4bC9zdHlsZXMueG1sUEsBAhQACgAAAAAAAAAhANCMsAuBAAAAgQAAABQAAAAAAAAAAAAAAAAAbTwAAHhsL3NoYXJlZFN0cmluZ3MueG1sUEsBAhQACgAAAAAAAAAhANwLHzddAgAAXQIAABEAAAAAAAAAAAAAAAAAID0AAGRvY1Byb3BzL2NvcmUueG1sUEsBAhQACgAAAAAAAAAhAGFJCRARAwAAEQMAABAAAAAAAAAAAAAAAAAArD8AAGRvY1Byb3BzL2FwcC54bWxQSwUGAAAAAAoACgCAAgAA60IAAAAA";var St=s=>s!==null&&typeof s=="object"&&"row"in s&&"column"in s;var oe=class{constructor(e,t=e,i=!1){this.end_=this.PatchNull(t),this.start_=this.PatchNull(e),i&&this.Normalize()}static FromColumn(e){return new oe({row:1/0,column:e})}static FromRow(e){return new oe({row:e,column:1/0})}static ColumnToLabel(e){let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}static CellAddressToLabel(e,t=!1){return(t?`${e.sheet_id||0}!`:"")+(e.absolute_column?"$":"")+this.ColumnToLabel(e.column)+(e.absolute_row?"$":"")+(e.row+1)}static Join(e,...t){let i=new oe(e.start,e.end);for(let n of t)n&&(i.ConsumeAddress(n.start),i.ConsumeAddress(n.end));return i}static Bleed(e,t=1){return new oe({row:Math.max(0,e.start.row-t),column:Math.max(0,e.start.column-t),sheet_id:e.start.sheet_id},{row:e.end.row+t,column:e.end.column+t})}get start(){return{...this.start_}}set start(e){this.start_=e}get end(){return{...this.end_}}set end(e){this.end_=e}get rows(){return this.start_.row===1/0||this.end_.row===1/0?1/0:this.end_.row-this.start_.row+1}get columns(){return this.start_.column===1/0||this.end_.column===1/0?1/0:this.end_.column-this.start_.column+1}get count(){return this.rows*this.columns}get entire_sheet(){return this.entire_row&&this.entire_column}get entire_column(){return this.start_.row===1/0}get entire_row(){return this.start_.column===1/0}PatchNull(e){let t={...e};return t.row===null&&(t.row=1/0),t.column===null&&(t.column=1/0),t}SetSheetID(e){this.start_.sheet_id=e}Normalize(){let e={...this.start_},t={...this.end_};e.row===1/0||t.row===1/0?e.row=t.row=1/0:e.row>t.row&&(e.row=this.end_.row,e.absolute_row=this.end_.absolute_row,t.row=this.start_.row,t.absolute_row=this.start_.absolute_row),e.column===1/0||t.column===1/0?e.column=t.column=1/0:e.column>t.column&&(e.column=this.end_.column,e.absolute_column=this.end_.absolute_column,t.column=this.start_.column,t.absolute_column=this.start_.absolute_column),this.start_=e,this.end_=t}TopLeft(){let e={row:0,column:0};return this.entire_row||(e.column=this.start.column),this.entire_column||(e.row=this.start.row),e}BottomRight(){let e={row:0,column:0};return this.entire_row||(e.column=this.end.column),this.entire_column||(e.row=this.end.row),e}ContainsRow(e){return this.entire_column||e>=this.start_.row&&e<=this.end_.row}ContainsColumn(e){return this.entire_row||e>=this.start_.column&&e<=this.end_.column}Contains(e){return(this.entire_column||e.row>=this.start_.row&&e.row<=this.end_.row)&&(this.entire_row||e.column>=this.start_.column&&e.column<=this.end_.column)}ContainsArea(e){return this.start.column<=e.start.column&&this.end.column>=e.end.column&&this.start.row<=e.start.row&&this.end.row>=e.end.row}Intersects(e){return!(e.start.column>this.end.column||this.start.column>e.end.column||e.start.row>this.end.row||this.start.row>e.end.row)}Equals(e){return e.start_.row===this.start_.row&&e.start_.column===this.start_.column&&e.end_.row===this.end_.row&&e.end_.column===this.end_.column}Clone(){return new oe(this.start,this.end)}Array(){if(this.entire_column||this.entire_row)throw new Error("can\'t convert infinite area to array");let e=new Array(this.rows*this.columns),t=this.start_.sheet_id,i=0;for(let n=this.start_.row;n<=this.end_.row;n++)for(let r=this.start_.column;r<=this.end_.column;r++)e[i++]={row:n,column:r,sheet_id:t};return e}get left(){let e=new oe(this.start_,this.end_);return e.end_.column=e.start_.column,e}get right(){let e=new oe(this.start_,this.end_);return e.start_.column=e.end_.column,e}get top(){let e=new oe(this.start_,this.end_);return e.end_.row=e.start_.row,e}get bottom(){let e=new oe(this.start_,this.end_);return e.start_.row=e.end_.row,e}Shift(e,t){return this.start_.row+=e,this.start_.column+=t,this.end_.row+=e,this.end_.column+=t,this}ConsumeAddress(e){this.entire_row||(e.column<this.start_.column&&(this.start_.column=e.column),e.column>this.end_.column&&(this.end_.column=e.column)),this.entire_column||(e.row<this.start_.row&&(this.start_.row=e.row),e.row>this.end_.row&&(this.end_.row=e.row))}ConsumeArea(e){this.ConsumeAddress(e.start),this.ConsumeAddress(e.end)}Resize(e,t){return this.end_.row=this.start_.row+e-1,this.end_.column=this.start_.column+t-1,this}Iterate(e){if(this.entire_column||this.entire_row){console.warn("don\'t iterate infinite area");return}for(let t=this.start_.column;t<=this.end_.column;t++)for(let i=this.start_.row;i<=this.end_.row;i++)e({column:t,row:i,sheet_id:this.start_.sheet_id})}get spreadsheet_label(){let e;return this.entire_sheet?"":this.entire_column?(e=oe.ColumnToLabel(this.start_.column),e+=":"+oe.ColumnToLabel(this.end_.column),e):this.entire_row?(e=String(this.start_.row+1),e+=":"+(this.end_.row+1),e):(e=oe.CellAddressToLabel(this.start_),this.columns>1||this.rows>1?e+":"+oe.CellAddressToLabel(this.end_):e)}toJSON(){return{start:{...this.start_},end:{...this.end_}}}};var Si=s=>typeof s=="object"&&!!s&&typeof s.real=="number"&&typeof s.imaginary=="number";var Pt=s=>typeof s=="object"&&!!s&&typeof s.value=="number"&&typeof s.unit=="string";var ze=s=>{switch(typeof s){case"undefined":return 0;case"number":return 3;case"boolean":return 4;case"object":return s===null?0:Si(s)?7:Pt(s)?9:5;case"string":return s[0]==="="?1:2;default:return 6}};var me=class{constructor(e,t){this.type=0;this.render_clean=[];typeof e<"u"&&this.Set(e,t)}static StringToColumn(e){let t=0;e=e.toUpperCase();for(let i=0;i<e.length;i++)t*=26,t+=e.charCodeAt(i)-64;return t-1}ValueIsNumber(){return this.type===3}ValueIsFormula(){return this.type===1}ValueIsBoolean(){return this.type===4}ValueIsComplex(){return this.type===7}FlushStyle(){this.formatted=this.rendered_type=this.style=void 0,this.render_clean=[]}FlushArray(){this.area=void 0}FlushCache(){this.calculated=this.calculated_type=this.formatted=this.rendered_type=this.render_function=this.click_function=void 0,this.render_clean=[]}Reset(){this.type=0,this.value=this.note=this.hyperlink=this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.area=this.renderer_data=this.render_function=this.click_function=void 0,this.render_clean=[]}Set(e,t=ze(e)){this.value=e,this.type=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.render_function=this.click_function=this.area=void 0,this.render_clean=[]}SetCalculatedValue(e,t=ze(e)){e===void 0&&(e=0,t=3),this.calculated!==e&&(this.calculated=e,this.calculated_type=t,this.formatted=this.rendered_type=void 0,this.render_clean=[])}GetValue(){return this.calculated_type?this.calculated:typeof this.value=="string"&&this.value[0]==="\'"?this.value.slice(1):this.value}GetValue4(){return this.calculated_type?{type:this.calculated_type,value:this.calculated}:this.type===1?{type:3,value:0}:{type:this.type,value:typeof this.value=="string"&&this.value[0]==="\'"?this.value.slice(1):this.value}}SetNote(e){this.note=e,this.render_clean=[]}SetCalculationError(e="ERR"){this.SetCalculatedValue(e,6)}SetArray(e){this.type=0,this.value=this.formatted=this.rendered_type=this.style=this.hyperlink=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}SetArrayHead(e,t){this.type=ze(t),this.value=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}};var Pi=s=>!s.cells,Ti=s=>!!s[0]&&Pi(s[0]),Zi=s=>!!s[0]&&s[0].row!==void 0,ot=class{constructor(){this.data=[];this.rows_=0;this.columns_=0}get rows(){return this.rows_}get columns(){return this.columns_}EnsureRow(e){this.rows_=Math.max(e+1,this.rows_)}EnsureColumn(e){this.columns_=Math.max(e+1,this.columns_)}InsertColumns(e=0,t=1){let i=JSON.parse(JSON.stringify(this.data[13]));this.data=this.data.map(n=>{if(n.length>=e){let r=n.slice(0,e),a=e+t,o=n.slice(e);for(let l=0;l<o.length;l++)r[a++]=o[l];return r}return n}),this.columns_+=t}DeleteColumns(e,t=1){this.data.forEach(i=>i.splice(e,t)),this.columns_-=t}DeleteRows(e,t=1){this.data.splice(e,t),this.rows_-=t}InsertRows(e=0,t=1){let i=[e,0,[]];for(let n=1;n<t;n++)i.push([]);Array.prototype.splice.apply(this.data,i),this.rows_+=t}GetCell(e,t){let{row:i,column:n}=e;if(!this.data[i])if(t)this.data[i]=[],this.rows_=Math.max(this.rows_,i+1);else return;return this.data[i][n]||t&&(this.data[i][n]=new me,this.columns_=Math.max(this.columns_,n+1)),this.data[i][n]}EnsureCell(e){let{row:t,column:i}=e,n=this.data[t];n||(this.data[t]=n=[],this.rows_=Math.max(this.rows_,t+1));let r=n[i];return r||(r=n[i]=new me,this.columns_=Math.max(this.columns_,i+1)),r}FromArray(e=[],t=!1){this.data=[];let i=0,n=0;if(t){n=e.length;for(let r=0;r<n;r++){let a=e[r];i=Math.max(i,a.length);for(let o=0;o<a.length;o++)this.data[o]||(this.data[o]=[]),this.data[o][r]=new me(a[o])}}else{i=e.length;for(let r=0;r<i;r++){let a=[],o=e[r];n=Math.max(n,o.length);for(let l=0;l<o.length;l++)a[l]=new me(o[l]);this.data[r]=a}}this.rows_=i,this.columns_=n}FromJSON(e=[],t){if(this.data=[],!Ti(e)){let n=[];if(Zi(e))for(let r of e)for(let a of r.cells)n.push({...a,row:r.row});else for(let r of e)for(let a of r.cells)n.push({...a,column:r.column});e=n}let i=[];for(let n of e){this.data[n.row]||(this.data[n.row]=[]);let r=new me(n.value);if(typeof n.calculated<"u"&&r.SetCalculatedValue(n.calculated,n.calculated_type),t&&typeof n.style_ref<"u"&&(r.style=t[n.style_ref]),typeof n.note<"u"&&(r.note=n.note),typeof n.hyperlink<"u"&&(r.hyperlink=n.hyperlink),this.data[n.row][n.column]&&this.data[n.row][n.column].area&&(r.area=this.data[n.row][n.column].area),this.data[n.row][n.column]=r,n.area){let a=new oe(n.area.start,n.area.end);for(let o=a.start.row;o<=a.end.row;o++)for(let l=a.start.column;l<=a.end.column;l++)this.data[o]||(this.data[o]=[]),this.data[o][l]||(this.data[o][l]=new me),this.data[o][l].area=a}if(n.table&&i.push({...n.table}),n.merge_area){let a=new oe(n.merge_area.start,n.merge_area.end);for(let o=a.start.row;o<=a.end.row;o++)for(let l=a.start.column;l<=a.end.column;l++)this.data[o]||(this.data[o]=[]),this.data[o][l]||(this.data[o][l]=new me),this.data[o][l].merge_area=a}n.validation&&(r.validation=n.validation)}for(let n of i)for(let r=n.area.start.row;r<=n.area.end.row;r++)for(let a=n.area.start.column;a<=n.area.end.column;a++)this.data[r]||(this.data[r]=[]),this.data[r][a]||(this.data[r][a]=new me),this.data[r][a].table=n;this.rows_=this.data.length,this.columns_=this.data.reduce((n,r)=>Math.max(n,r.length),0)}toJSON(e={}){let t=0,i=0,n=this.data.length-1,r;e.subset&&(t=e.subset.start.column,i=e.subset.start.row,n=e.subset.end.row);let a=[],o=-1,l=-1,u={},h={};for(let c=i;c<=n;c++)if(this.data[c]){let b=this.data[c];r=b.length-1,e.subset&&(r=e.subset.end.column);for(let f=t;f<=r;f++){let p=b[f],g=p&&p.merge_area&&p.merge_area.start.row===c&&p.merge_area.start.column===f,_=p&&p.area&&p.area.start.row===c&&p.area.start.column===f,w=p&&p.table&&p.table.area.start.row===c&&p.table.area.start.column===f,A=p?p.type===2&&!p.value:!0;if(p&&(!A||e.preserve_empty_strings)&&(g||p.type||p.calculated_type&&e.expand_arrays||p.calculated_type&&e.calculated_value||p.note||p.validation||e.decorated_cells&&p.style&&(p.style.fill||p.style.border_bottom||p.style.border_top||p.style.border_left||p.style.border_right))){let v={row:c,column:f,value:p.value};p.note&&(v.note=p.note),p.hyperlink&&(v.hyperlink=p.hyperlink),e.preserve_type&&(v.type=p.type),e.sheet_id&&(v.sheet_id=e.sheet_id),e.calculated_value&&typeof p.calculated<"u"&&(v.calculated=p.calculated,(e.preserve_type||p.calculated_type===6)&&(v.calculated_type=p.calculated_type)),p.table&&w&&e.tables&&(v.table=JSON.parse(JSON.stringify(p.table))),p.area&&_&&(v.area=p.area.toJSON()),p.merge_area&&(v.merge_area=p.merge_area.toJSON()),p.validation&&(v.validation=p.validation),e.cell_style_refs&&e.cell_style_refs[f]&&e.cell_style_refs[f][c]&&(v.style_ref=e.cell_style_refs[f][c],e.cell_style_refs[f][c]=0),u[c]=c,h[f]=f,o=Math.max(c,o),l=Math.max(f,l),a.push(v)}}}if(e.nested){let c=Object.keys(u),b=Object.keys(h);if(c.length<=b.length&&c.length){let f={},p=[];for(let g of a){let{row:_,...w}=g;f[g.row]||(f[g.row]=[]),f[g.row].push(w)}for(let g of c){let _=Number(g);p.push({row:_,cells:f[_]})}return{data:p,rows:o,columns:l+1}}else if(b.length){let f={},p=[];for(let g of a){let{column:_,...w}=g;f[g.column]||(f[g.column]=[]),f[g.column].push(w)}for(let g of b){let _=Number(g);p.push({column:_,cells:f[_]})}return{data:p,rows:o,columns:l+1}}}return{data:a,rows:o+1,columns:l+1}}GetAll(e=!1){return this.GetRange({row:0,column:0},{row:this.rows_-1,column:this.columns_-1},e)}Normalize2(e,t){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),t.column===1/0&&(t={...t,column:this.columns_-1}),t.row===1/0&&(t={...t,row:this.rows_-1}),{from:e,to:t}}Normalize1(e){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),e}RawValue(e,t=e){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].value:void 0;let i=[],n=this.data.slice(e.row,t.row+1),r=e.column,a=t.column+1;for(let o of n){let l=[];for(let u=r,h=0;u<a;u++,h++){let c=o[u];l.push(c?c.value:void 0)}i.push(l)}return i}GetRange(e,t,i=!1){if(t?{from:e,to:t}=this.Normalize2(e,t):e=this.Normalize1(e),!t||e===t||e.column===t.column&&e.row===t.row)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue():void 0;let n=[];if(i)for(let r=e.column;r<=t.column;r++){let a=[];for(let o=e.row;o<=t.row;o++)this.data[o]&&this.data[o][r]?a.push(this.data[o][r].GetValue()):a.push(void 0);n.push(a)}else for(let r=e.row;r<=t.row;r++){let a=[];for(let o=e.column;o<=t.column;o++)this.data[r]&&this.data[r][o]?a.push(this.data[r][o].GetValue()):a.push(void 0);n.push(a)}return n}GetRange4(e,t=e,i=!1){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue4():{value:void 0,type:0};let n=[];if(i)for(let r=e.column;r<=t.column;r++){let a=[];for(let o=e.row;o<=t.row;o++)this.data[o]&&this.data[o][r]?a.push(this.data[o][r].GetValue4()):a.push({type:0});n.push(a)}else for(let r=e.row;r<=t.row;r++){let a=[];for(let o=e.column;o<=t.column;o++)this.data[r]&&this.data[r][o]?a.push(this.data[r][o].GetValue4()):a.push({type:0});n.push(a)}return{type:8,value:n}}Apply(e,t,i=!1){if(St(e)&&(e=new oe(e)),e.entire_column||e.entire_row)throw new Error("don\'t iterate infinite cells");let n=e.start,r=e.end;if(i)for(let a=n.row;a<=r.row;a++){this.data[a]||(this.data[a]=[]);let o=this.data[a];for(let l=n.column;l<=r.column;l++)o[l]||(o[l]=new me),t(o[l],l,a)}else for(let a=n.row;a<=r.row;a++)if(this.data[a]){let o=this.data[a];for(let l=n.column;l<=r.column;l++)o[l]&&t(o[l],l,a)}}Apply2(e,t,i=!1){if(St(e)&&(e=new oe(e)),e.entire_column||e.entire_row)throw new Error("don\'t iterate infinite cells");let n=e.start,r=e.end;if(i)for(let a=n.row;a<=r.row;a++){this.data[a]||(this.data[a]=[]);let o=this.data[a];for(let l=n.column;l<=r.column;l++)if(o[l]||(o[l]=new me),!t(o[l],l,a))return}else for(let a=n.row;a<=r.row;a++)if(this.data[a]){let o=this.data[a];for(let l=n.column;l<=r.column;l++)if(o[l]&&!t(o[l],l,a))return}}SetArea(e,t){if(ArrayBuffer.isView(t))throw new Error("ABIV");if(Array.isArray(t))for(let i=e.start.row,n=0;i<=e.end.row;i++,n++){this.data[i]||(this.data[i]=[]);let r=this.data[i];if(t[n])for(let a=e.start.column,o=0;a<=e.end.column;a++,o++)r[a]||(r[a]=new me),r[a].Set(t[n][o])}else{let i=ze(t);for(let n=e.start.row;n<=e.end.row;n++){this.data[n]||(this.data[n]=[]);let r=this.data[n];for(let a=e.start.column;a<=e.end.column;a++)r[a]||(r[a]=new me),r[a].Set(t,i)}}this.rows_=Math.max(this.rows_,e.end.row+1),this.columns_=Math.max(this.columns_,e.end.column+1)}IterateAll(e){for(let t of this.data)if(t)for(let i of t)i&&e(i)}FlushCellStyles(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushStyle()}FlushCachedValues(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushCache()}};var le=class{static UpdateLocale(e){if(e)this.locale=e;else if(typeof self<"u"){let n=self?.document?.location;if(n&&n.search&&/locale=([^?&]+?)(?:\\?|$|&)/.test(n.search)){let r=n.search.match(/locale=(.*?)(?:\\?|$|&)/);r&&(this.locale=r[1]),console.info("override locale",this.locale)}else typeof navigator<"u"&&(navigator.languages&&navigator.languages[0]?this.locale=navigator.languages[0]:this.locale=navigator.language)}let t=new Intl.NumberFormat(this.locale,{minimumFractionDigits:1}).format(3.3).replace(/\\d/g,"");this.decimal_separator=t===","?",":".",this.decimal_separator===","?(this.argument_separator=";",this.grouping_separator=" "):(this.argument_separator=",",this.grouping_separator=",");let i=new Date(2e3,0,2,12,0,0,0);this.UpdateDateComponent(0,0,i),i=new Date(2e3,1,7,12,0,0,0),this.UpdateDateComponent(1,1,i),i=new Date(2e3,2,7,12,0,0,0),this.UpdateDateComponent(2,2,i),i=new Date(2e3,3,5,12,0,0,0),this.UpdateDateComponent(3,3,i),i=new Date(2e3,4,4,12,0,0,0),this.UpdateDateComponent(4,4,i),i=new Date(2e3,5,2,12,0,0,0),this.UpdateDateComponent(5,5,i),i=new Date(2e3,6,1,12,0,0,0),this.UpdateDateComponent(6,6,i),i=new Date(2e3,7,1,12,0,0,0),this.UpdateDateComponent(7,-1,i),i=new Date(2e3,8,1,12,0,0,0),this.UpdateDateComponent(8,-1,i),i=new Date(2e3,9,1,12,0,0,0),this.UpdateDateComponent(9,-1,i),i=new Date(2e3,10,1,12,0,0,0),this.UpdateDateComponent(10,-1,i),i=new Date(2e3,11,1,12,0,0,0),this.UpdateDateComponent(11,-1,i)}static UpdateDateComponent(e,t,i){t>=0&&(this.date_components.short_days[t]=i.toLocaleString(this.locale,{weekday:"short"}),this.date_components.long_days[t]=i.toLocaleString(this.locale,{weekday:"long"})),e>=0&&(this.date_components.short_months[e]=i.toLocaleString(this.locale,{month:"short"}),this.date_components.long_months[e]=i.toLocaleString(this.locale,{month:"long"}))}};le.locale="en-us",le.decimal_separator=".",le.argument_separator=",",le.grouping_separator=",",le.date_components={short_days:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],long_days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],short_months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months:["January","February","March","April","May","June","July","August","September","October","November","December"]};le.UpdateLocale();var pe;(f=>{let s=JSON.stringify({}),e;(A=>(A.None="",A.Left="left",A.Center="center",A.Right="right"))(e=f.HorizontalAlign||={});let t;(A=>(A.None="",A.Top="top",A.Bottom="bottom",A.Middle="middle"))(t=f.VerticalAlign||={}),f.DefaultProperties={horizontal_align:"",vertical_align:"",number_format:"General",nan:"NaN",font_size:{unit:"pt",value:10.5},font_face:"sans-serif",bold:!1,italic:!1,underline:!1,strike:!1,text:{theme:1},border_top:0,border_left:0,border_right:0,border_bottom:0},f.CompositeBorders=p=>({top:{width:p.border_top||0,color:p.border_top_fill||{}},left:{width:p.border_left||0,color:p.border_left_fill||{}},right:{width:p.border_right||0,color:p.border_right_fill||{}},bottom:{width:p.border_bottom||0,color:p.border_bottom_fill||{}}}),f.Merge=(p,g,_=!0)=>{let w=_?{...p,...g}:{...g};return JSON.parse(JSON.stringify(w))},f.Composite=p=>JSON.parse(JSON.stringify(p.reduce((g,_)=>({...g,..._}),{}))),f.Empty=p=>JSON.stringify(p)===s,f.ValidColor=p=>!!(p&&!p.none&&(p.text||p.theme||p.theme===0)),f.ParseFontSize=(p="",g="em")=>{let _=p.match(/(-*[\\d.]+)\\s*(\\S*)/);if(_){let w=Number(_[1]);if(!w||isNaN(w)||w<0)return{};let A=_[2].toLowerCase()||g;if(A==="pt"||A==="em"||A==="%"||A==="px")return{font_size:{unit:A,value:w}}}return{}},f.RelativeFontSize=(p,g)=>{let _=12,w=12;switch(p.font_size?.unit){case"pt":if(!p.font_size.value)return 1;w=p.font_size.value;break;case"px":if(!p.font_size.value)return 1;w=Math.round(p.font_size.value*300/4)/100;break;case"em":return p.font_size.value||1;case"%":return(p.font_size.value||100)/100;default:return 1}switch(g.font_size?.unit){case"pt":if(!g.font_size.value)return 1;_=g.font_size.value;break;case"px":if(!g.font_size.value)return 1;_=Math.round(g.font_size.value*300/4)/100;break;default:return 1}return w/_},f.FontSize=(p,g=!0)=>{let _=p.font_size?.value;switch(p.font_size?.unit){case"pt":return(_||12)+"pt";case"px":return g?Math.round((_||16)*300/4)/100+"pt":(_||16)+"px";case"em":return(_||1)+"em";case"%":return(_||100)+"%"}return""},f.Font=(p,g=1)=>{let _=[];return p.bold&&_.push("bold"),p.italic&&_.push("italic"),_.push(((p.font_size?.value||0)*g).toFixed(2)+(p.font_size?.unit||"pt")),_.push(p.font_face||""),_.join(" ")}})(pe||={});var Tt=class{Darken(e,t,i,n,r=!1){let{h:a,s:o,l}=this.RGBToHSL(e,t,i);return r?l-=l*n/100:l-=n/100,l=Math.max(0,Math.min(1,l)),this.HSLToRGB(a,o,l)}Lighten(e,t,i,n,r=!1){let{h:a,s:o,l}=this.RGBToHSL(e,t,i);return r?l+=l*n/100:l+=n/100,l=Math.max(0,Math.min(1,l)),this.HSLToRGB(a,o,l)}RGBToHSL(e,t,i){e/=255,t/=255,i/=255;let n=Math.max(e,t,i),r=Math.min(e,t,i),a=0,o=0,l=(n+r)/2;if(n===r)a=o=0;else{let u=n-r;switch(o=l>.5?u/(2-n-r):u/(n+r),n){case e:a=(t-i)/u+(t<i?6:0);break;case t:a=(i-e)/u+2;break;case i:a=(e-t)/u+4;break}a/=6}return{h:a*360,s:o,l}}HSLToRGB(e,t,i){let n,r,a;if(t===0)n=r=a=i;else{e=e/360;let o=i<.5?i*(1+t):i+t-i*t,l=2*i-o;n=this.HueToRGB(l,o,e+1/3),r=this.HueToRGB(l,o,e),a=this.HueToRGB(l,o,e-1/3)}return{r:Math.round(n*255),g:Math.round(r*255),b:Math.round(a*255)}}HueToRGB(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+(t-e)*6*i:i<1/2?t:i<2/3?e+(t-e)*(2/3-i)*6:e}},Ei=new Tt;var _t=st(Lt());var Mn={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":\'"\',"&apos;":"\'"},Un=/&\\w+;/g,Ln=s=>s.replace(Un,e=>Mn[e]||e);var lt=Ln;var Yr=(s,e)=>lt(e),Hr={ignoreAttributes:!1,attributeNamePrefix:"__",trimValues:!1,textNodeName:"text__",tagValueProcessor:Yr,ignoreDeclaration:!0},ct={ignoreAttributes:!1,attributesGroupName:"a$",attributeNamePrefix:"",textNodeName:"t$",trimValues:!1,ignoreDeclaration:!0,isArray:(s,e,t,i)=>/Relationship$/.test(s),tagValueProcessor:Yr},ne=class{static FindChild(e={},t){let i=t.split("/");for(let n of i)if(e=e[n],!e)return;return e}static FindAll(e={},t){let i=t.split("/");if(i[0]==="."&&i.shift(),i[0]==="..")throw new Error("invalid path (no access to parent)");if(i[0]==="")throw new Error("invalid path (no access to root)");if(i[0]==="**")throw new Error("ENOTIMPL");return this.FindAllTail(e,i)}static FindAllTail(e,t){if(Array.isArray(e))return e.reduce((i,n)=>i.concat(this.FindAllTail(n,t)),[]);for(let i=0;i<t.length;i++){let n=t[i];if(n==="*"?e=Object.keys(e).filter(r=>r!=="a$"&&r!=="t$").map(r=>e[r]):e=e[n],!e)return[];if(Array.isArray(e)){if(i===t.length-1||e.length===0)return e;let r=t.slice(1);return e.reduce((a,o)=>a.concat(this.FindAllTail(o,r)),[])}}return[e]}};var Ge=class{constructor(){this.strings=[];this.reverse={}}FromXML(e){this.strings=[],this.reverse={};let t=0;for(let i of ne.FindAll(e,"sst/si")){if(i.t){let n="";typeof i.t=="string"?n=i.t:i.t.t$&&(n=i.t.t$),this.strings[t]=n,this.reverse[n]=t}else if(i.r){let r=ne.FindAll(i.r,"t").map(a=>typeof a=="string"?a:a.t$||"").join("");this.strings[t]=r,this.reverse[r]=t}else console.warn(` ** unexpected shared string @ ${t}`),console.info(i);t++}}Get(e){return this.strings[e]}Ensure(e){e[0]==="\'"&&(e=e.substring(1));let t=this.reverse[e];return typeof t=="number"||(t=this.strings.length,this.strings.push(e),this.reverse[e]=t),t}};var Ot=class{constructor(){this.colors={}}FromXML(e){let t=Object.keys(e)[0],i="",n=t.toString().match(/^(.*?):/);if(n&&(i=n[1]+":"),e[t]&&e[t][`${i}themeElements`]){let r=e[t][`${i}themeElements`][`${i}clrScheme`];for(let a of Ot.color_map){let o=r[`${i}${a}`],l,u="rgb";o[`${i}srgbClr`]?(u="rgb",l=o[`${i}srgbClr`].a$.val||""):o[`${i}sysClr`]&&(u="system",l=o[`${i}sysClr`].a$.lastClr||""),this.colors[a]={name:a,value:l,type:u}}}}},Ie=Ot;Ie.color_map=["lt1","dk1","lt2","dk2","accent1","accent2","accent3","accent4","accent5","accent6","hlink","folHlink"];var Ne=class{constructor(){this.date_format=!1;this.string_format=!1;this.fraction_format=!1;this.twelve_hour=!1;this.fraction_denominator=0;this.fraction_integer=!0;this.fraction_align=0;this.fraction_denominator_digits=0;this.integer_min_digits=0;this.decimal_min_digits=0;this.decimal_max_digits=0;this.grouping=!1;this.has_number_format=!1;this.prefix=[{text:""}];this.suffix=[{text:""}];this.scaling=0;this.percent=!1;this.exponential=!1;this.has_asterisk=!1}};var Jr=42,Xr=95,jt=63,ht=48,Qr=46,$t=44,qr=37,Dt=34,Je=35,Kr=59,dt=92,ei=64,jn=91,$n=93,ti=69,ri=101,Dn=72,Vn=104,Yn=77,Hn=109,Jn=83,Xn=115,Qn=68,qn=100,Kn=89,es=121,ts=65,rs=97;var _e=class{static Parse(e){if(this.pattern=e,this.characters=e.split("").map(t=>t.charCodeAt(0)),this.char_index=0,this.current_section=new Ne,this.sections=[this.current_section],this.ParseDatePattern())return this.sections;for(this.char_index=0,this.current_section=new Ne,this.sections=[this.current_section];this.char_index<this.characters.length;)this.ConsumeChar();return this.sections}static ConsumeString(){let e="";for(this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case dt:this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index+1<this.characters.length&&(e+=this.pattern[++this.char_index]);break;case Dt:return this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated string")}static ConsumeFormatting(){let e="";for(++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case dt:throw new Error("invalid escape character in formatting block");case $n:return this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated format")}static ScanFractionFormat(){let e=/^([#?]+ +){0,1}([#?]+)\\/([#?0-9]+)(?:$|[^#?0-9])/,i=this.pattern.substr(this.char_index).match(e);if(!i)return!1;let n=(i[1]||"").length+i[2].length+i[3].length+1;this.current_section.fraction_format=!0,this.current_section.fraction_integer=!!i[1];let r=Number(i[3]);return isNaN(r)||(this.current_section.fraction_denominator=r),this.current_section.decimal_max_digits=this.current_section.fraction_denominator_digits=i[3].length,this.char_index+=n,this.current_section.has_number_format=!0,!0}static ConsumeNumberFormat(){let e=0;for(this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case this.group_separator:{let i=!1;for(let n=this.char_index+1;!i&&n<this.characters.length;n++){let r=this.characters[n];if(r===this.decimal_mark||r===Je||r===ht)i=!0;else if(r!==$t)break}if(i){if(e===1)throw new Error("invalid grouping in decimal part");this.current_section.grouping=!0}else this.current_section.scaling=(this.current_section.scaling||1)*1e3}break;case this.decimal_mark:if(e===1)throw new Error("too many decimal marks");e=1;break;case Je:e===1?this.current_section.decimal_max_digits++:this.current_section.integer_min_digits&&this.current_section.integer_min_digits++;break;case ht:e===1?(this.current_section.decimal_max_digits++,this.current_section.decimal_min_digits=this.current_section.decimal_max_digits):this.current_section.integer_min_digits++;break;default:return}}static AppendCharAsText(e=!0){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=this.pattern[this.char_index]:this.current_section.prefix[this.current_section.prefix.length-1].text+=this.pattern[this.char_index],e&&this.char_index++}static AppendString(e){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=e:this.current_section.prefix[this.current_section.prefix.length-1].text+=e}static AppendTextPart(e){this.current_section.has_number_format?(this.current_section.suffix.push(e),this.current_section.suffix.push({text:""})):(this.current_section.prefix.push(e),this.current_section.prefix.push({text:""}))}static ConsumeChar(){let e=this.characters[this.char_index];if(!((e===jt||e===Je)&&!this.current_section.has_number_format&&!this.current_section.string_format&&this.ScanFractionFormat()))switch(e){case Kr:this.char_index++,this.current_section=new Ne,this.sections.length===3&&(this.current_section.string_format=!0),this.sections.push(this.current_section);break;case ei:this.char_index++,this.AppendTextPart({text:"@",flag:5}),this.current_section.string_format=!0;break;case ht:case Je:case Qr:case $t:!this.current_section.has_number_format&&!this.current_section.string_format?(this.ConsumeNumberFormat(),this.current_section.has_number_format=!0):this.AppendCharAsText();break;case jn:this.AppendTextPart({text:this.ConsumeFormatting(),flag:6});break;case Dt:this.AppendString(this.ConsumeString());break;case jt:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case Xr:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case Jr:if(this.current_section.has_asterisk)throw new Error("we don\'t support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case ri:case ti:this.current_section.percent||this.current_section.exponential||this.current_section.string_format?this.AppendCharAsText():(this.current_section.exponential=!0,this.char_index++);break;case qr:!this.current_section.exponential&&!this.current_section.string_format&&(this.current_section.percent=!0),this.AppendCharAsText();break;case dt:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}static ParseDatePattern(){for(this.date_pattern=!0;this.date_pattern&&this.char_index<this.pattern.length;)this.DatePatternConsumeChar();if(this.date_pattern){this.date_pattern=!1;for(let e of this.sections)for(let t of e.prefix)t.flag&&t.flag&7&&(this.date_pattern=!0)}return this.date_pattern&&(this.sections[0].date_format=!0,this.sections[0].prefix.forEach((e,t)=>{if(e.flag===3&&(e.text==="mm"||e.text==="m")){if(t)for(let i=t-1;i;i--){let n=this.sections[0].prefix[i];if(n.flag===3){/h/i.test(n.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}if(t<this.sections[0].prefix.length-1)for(let i=t+1;i<this.sections[0].prefix.length;i++){let n=this.sections[0].prefix[i];if(n.flag===3){/s/i.test(n.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}}})),this.date_pattern}static ConsumeDatePart(){let e=this.pattern[this.char_index++],t=e.toLowerCase(),i={text:e,flag:3};for(;this.pattern[this.char_index]&&this.pattern[this.char_index].toLowerCase()===t;)i.text+=this.pattern[this.char_index++];if(t==="s"&&this.pattern[this.char_index]===".")for(i.text+=this.pattern[this.char_index++];this.pattern[this.char_index]==="0";)i.text+=this.pattern[this.char_index++];return i}static ConsumeAMPM(){let e=this.pattern.substr(this.char_index,5);if(e==="am/pm"||e==="AM/PM")return this.char_index+=5,this.sections[0].twelve_hour=!0,{text:e,flag:3};if(e=this.pattern.substr(this.char_index,3),e==="a/p"||e==="A/P")return this.char_index+=3,this.sections[0].twelve_hour=!0,{text:e,flag:3}}static DatePatternConsumeChar(){switch(this.characters[this.char_index]){case Kr:this.char_index=this.characters.length;break;case ht:case Je:case ri:case ti:case qr:case ei:this.date_pattern=!1;break;case Dn:case Vn:case Yn:case Hn:case Jn:case Xn:case Qn:case qn:case Kn:case es:this.AppendTextPart(this.ConsumeDatePart());break;case ts:case rs:{let t=this.ConsumeAMPM();t?this.AppendTextPart(t):this.AppendCharAsText()}break;case Dt:this.AppendString(this.ConsumeString());break;case jt:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case Xr:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case Jr:if(this.current_section.has_asterisk)throw new Error("we don\'t support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case dt:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}};_e.date_pattern=!1,_e.pattern="",_e.char_index=0,_e.characters=[],_e.sections=[],_e.current_section=new Ne,_e.preserve_formatting_characters=!1,_e.decimal_mark=Qr,_e.group_separator=$t;var is=s=>(s>=60&&s--,new Date(-22090752e5+864e5*s)),ii=(s,e=!0)=>{if(e){let t=new Date(s),i=new Date;i.setUTCMilliseconds(t.getUTCMilliseconds()),i.setUTCSeconds(t.getUTCSeconds()),i.setUTCMinutes(t.getUTCMinutes()),i.setUTCHours(t.getHours()),i.setUTCDate(t.getDate()),i.setUTCMonth(t.getMonth()),i.setUTCFullYear(t.getFullYear()),s=i.getTime()}return s=(s+22090752e5)/864e5,s>=60&&s++,s},ke=class{constructor(e){this.magic_decimal=!1;this._pattern="";this.decimal_zero_regexp=[];this.cloned=[];if(this._pattern=e,this.sections=_e.Parse(e),this.sections.length||(this.sections=[]),this.sections[0]||(this.sections[0]=new Ne),this.sections[1]||(this.sections[1]={...this.sections[0]},this.sections[1].prefix=JSON.parse(JSON.stringify(this.sections[1].prefix)),this.sections[1].suffix=JSON.parse(JSON.stringify(this.sections[1].suffix)),this.sections[1].prefix.push({text:"-"}),this.cloned[1]=!0),this.sections[2]||(this.sections[2]={...this.sections[0]},this.cloned[2]=!0),!this.sections[3]){for(let t of this.sections[0].prefix)if(t.flag===5){this.sections[3]={...this.sections[0]},this.sections[3].string_format=!0,this.cloned[3]=!0;break}}this.decimal_zero_regexp=this.sections.map(t=>{if(t.decimal_max_digits>t.decimal_min_digits)return new RegExp(`0{1,${t.decimal_max_digits-t.decimal_min_digits}}(?:$|e)`)})}get pattern(){return this._pattern}get date_format(){return this.sections[0]&&this.sections[0].date_format}static FormatPartsAsText(e,t=0){let i=-1,n=e.map((r,a)=>{switch(r.flag){case 2:return i=a,r.text;case 1:return r.text.replace(/./g," ");case 6:return"";default:return r.text}});if(i>=0&&t){let r=n.reduce((o,l,u)=>u===i?o:o+l.length,0),a="";for(let o=0;o<t-r;o++)a+=n[i];n[i]=a}return n.join("")}SetDecimal(e){for(let t of this.sections)t.fraction_format||(t.decimal_min_digits=e,t.decimal_max_digits=e)}IncreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.min(e.fraction_denominator_digits+1,4)):(e.decimal_min_digits++,e.decimal_max_digits=e.decimal_min_digits)})}DecreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.max(e.fraction_denominator_digits-1,1)):(e.decimal_min_digits=Math.max(0,e.decimal_min_digits-1),e.decimal_max_digits=e.decimal_min_digits)})}AddGrouping(){this.sections.forEach(e=>{e.grouping=!0})}RemoveGrouping(){this.sections.forEach(e=>{e.grouping=!1})}ToggleGrouping(){let e=!this.sections[0].grouping;this.sections.forEach(t=>{t.grouping=e})}toString(){return this.sections[0].date_format?this._pattern:this.sections.filter((e,t)=>!this.cloned[t]).map(e=>{let t="",i=0;if(e.fraction_format){e.fraction_integer&&(t+="? ");let n="";for(let r=0;r<e.fraction_denominator_digits;r++)n+="#";t+=n,t+="/",e.fraction_denominator?t+=e.fraction_denominator:t+=n}else if(e.has_number_format){for(i=0;i<e.integer_min_digits;i++)t+="0";if(e.grouping&&(t.length<4&&(t=("####"+t).slice(-4)),t=t.replace(/[\\d#]{1,3}(?=([\\d#]{3})+(?![\\d#]))/g,"$&,")),e.decimal_max_digits||e.decimal_min_digits){for(t+=".",i=0;i<e.decimal_min_digits;i++)t+="0";for(;i<e.decimal_max_digits;i++)t+="#"}if(e.scaling){let n=Math.log10(e.scaling)/3;for(i=0;i<n;i++)t+=","}e.exponential&&(t+="e")}return e.prefix.map(n=>n.flag===1?n.text==="0"?"?":"_"+n.text:n.flag===2?"*"+n.text:n.flag===6?"["+n.text+"]":n.text).join("")+t+e.suffix.map(n=>n.flag===1?n.text==="0"?"?":"_"+n.text:n.flag===2?"*"+n.text:n.text).join("")}).join(";")}FormatDimensionedQuantity(e){if(this.transform_value){let i=this.transform_value(e);if(Pt(i))e=i;else return typeof i=="string"?i:this.FormatParts(i)}let t=this.FormatParts(e.value||0);return e.unit&&t.push({text:" "},{text:e.unit}),t}FormatComplex(e){let t=[],i=[],n=!1,r=!!e.imaginary;r&&(t=this.FormatParts(e.imaginary),r=t.some(l=>/[1-9]/.test(l.text)),t.length===1&&this.sections[0].integer_min_digits<=1&&t[0].text==="1"?(t[0].text="",n=!0):t.length===1&&this.sections[1].integer_min_digits<=1&&t[0].text==="-1"&&(t[0].text="-",n=!0));let a=!!e.real;a&&(i=this.FormatParts(e.real),a=i.some(l=>/[1-9]/.test(l.text)));let o=[];if(a||!a&&!r){if(o.push(...i),r){let l=Math.abs(e.imaginary);o.push({text:e.imaginary<0?` ${ke.minus_character} `:" + "});let u=n?[]:this.FormatParts(Math.abs(e.imaginary));o.push(...u,{text:ke.imaginary_character})}}else r&&o.push(...t,{text:ke.imaginary_character});return o}FormatParts(e){if(typeof e!="number"&&!this.sections[3])return[{text:e.toString()}];let{parts:t,section:i}=this.BaseFormat(e),n=[];if(i.date_format||i.string_format)for(let r of t)typeof r=="string"?n.push({text:r}):n.push(r);else this.magic_decimal&&t[1]===""&&t.splice(1,1),n=[...i.prefix.map(r=>({...r})),{text:i.has_number_format?t.join(le.decimal_separator):""},...i.suffix.map(r=>({...r}))];for(let r=1;r<n.length;r++)n[r].flag===n[r-1].flag&&(n[r].text=n[r-1].text+n[r].text,n[r-1].text="");return n.filter(r=>r.text)}Format(e,t=0){return ke.FormatPartsAsText(this.FormatParts(e),t)}ZeroPad(e,t){for(;e.length<t;)e="0"+e;return e}DateFormat(e){let t=is(e),i=this.sections[0],n=t.getUTCHours();return i.twelve_hour&&(n>12&&(n-=12),n===0&&(n=12)),{parts:i.prefix.map(a=>{if(a.flag===4)return a.text==="mm"?{text:this.ZeroPad(t.getUTCMinutes().toString(),2)}:{text:this.ZeroPad(t.getUTCMinutes().toString(),1)};if(a.flag===3){switch(a.text.toLowerCase()){case"am/pm":case"a/p":{let l=a.text.split("/");return{text:t.getUTCHours()>12?l[1]:l[0]}}case"mmmmm":return{text:le.date_components.long_months[t.getUTCMonth()][0]};case"mmmm":return a.text==="MMMM"?{text:le.date_components.long_months[t.getUTCMonth()].toUpperCase()}:{text:le.date_components.long_months[t.getUTCMonth()]};case"mmm":return a.text==="MMM"?{text:le.date_components.short_months[t.getUTCMonth()].toUpperCase()}:{text:le.date_components.short_months[t.getUTCMonth()]};case"mm":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),2)};case"m":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),1)};case"ddddd":case"dddd":return a.text==="DDDDD"||a.text==="DDDD"?{text:le.date_components.long_days[t.getUTCDay()].toUpperCase()}:{text:le.date_components.long_days[t.getUTCDay()]};case"ddd":return a.text==="DDD"?{text:le.date_components.short_days[t.getUTCDay()].toUpperCase()}:{text:le.date_components.short_days[t.getUTCDay()]};case"dd":return{text:this.ZeroPad(t.getUTCDate().toString(),2)};case"d":return{text:this.ZeroPad(t.getUTCDate().toString(),1)};case"yyyy":case"yyy":return{text:t.getUTCFullYear().toString()};case"yy":case"y":return{text:this.ZeroPad((t.getUTCFullYear()%100).toString(),2)};case"hh":return{text:this.ZeroPad(n.toString(),2)};case"h":return{text:this.ZeroPad(n.toString(),1)};case"ss":return{text:this.ZeroPad(t.getUTCSeconds().toString(),2)};case"s":return{text:this.ZeroPad(t.getUTCSeconds().toString(),1)}}let o=a.text.match(/^(s+)\\.(0+)$/);if(o)return{text:this.ZeroPad(t.getUTCSeconds().toString(),o[1].length)+le.decimal_separator+(t.getUTCMilliseconds()/1e3).toFixed(o[2].length).substr(2)}}return{...a}}),section:i}}StringFormat(e,t){let i=[];for(let n of t.prefix)n.flag===5?i.push({text:e}):i.push({...n});return{parts:i,section:t}}Round2(e,t){let i=Math.pow(10,t);return Math.round(i*e)/i}FormatFraction(e,t){t.percent&&(e*=100);let i={denominator:1,numerator:Math.round(e),error:Math.abs(Math.round(e)-e)};if(t.fraction_denominator)i.denominator=t.fraction_denominator,i.numerator=Math.round(e*i.denominator);else if(i.error){let r=ke.fraction_limits[t.fraction_denominator_digits-1]||ke.fraction_limits[0];for(let a=2;a<=r;a++){let o=Math.round(e*a),l=Math.abs(o/a-e);if(l<i.error&&(i={numerator:o,denominator:a,error:l},!l))break}}let n=[];if(t.fraction_integer){let r=Math.floor(i.numerator/i.denominator);i.numerator%=i.denominator,(r||!i.numerator)&&(n.push(r.toString()),i.numerator&&n.push(" "))}else i.numerator||n.push("0");return i.numerator&&(n.push(i.numerator.toString()),n.push("/"),n.push(i.denominator.toString())),n.join("")}BaseFormat(e){if(this.sections[0].date_format)return this.DateFormat(Number(e));if(typeof e!="number")return this.StringFormat(e.toString(),this.sections[3]);let t=this.sections[0],i=this.decimal_zero_regexp[0];e<0&&(t=this.sections[1]);let n=t.percent?t.decimal_max_digits+2:t.decimal_max_digits,r=Math.pow(10,-n)/2,a=Math.abs(e);if(a<r&&(t=this.sections[2],i=this.decimal_zero_regexp[2]),t.scaling&&(a/=t.scaling,a<r&&(t=this.sections[2],i=this.decimal_zero_regexp[2])),t.string_format)return this.StringFormat(e.toString(),t);let o="";if(t.fraction_format)return{parts:[this.FormatFraction(a,t)],section:t};t.exponential?o=a.toExponential(t.decimal_max_digits):(t.percent&&(a*=100),o=this.Round2(a,t.decimal_max_digits).toFixed(t.decimal_max_digits)),i&&(o=o.replace(i,""));let l=o.split(".");for(;l[0].length<t.integer_min_digits;)l[0]=("0000000000000000"+l[0]).slice(-t.integer_min_digits);return t.integer_min_digits===0&&l[0]==="0"&&(l[0]=""),t.grouping&&(l[0]=l[0].replace(ke.grouping_regexp,"$&"+le.grouping_separator)),{parts:l,section:t}}},ve=ke;ve.grouping_regexp=/\\d{1,3}(?=(\\d{3})+(?!\\d))/g,ve.fraction_limits=[9,99,999,9999],ve.imaginary_character="\\u{1D456}",ve.minus_character="-";var Se=class{static Get(e,t=!1){if(t&&e==="General")return this.complex_general;let i=this.symbolc_name_map[e.toLowerCase()],n=this.cache[i||e];return n||(n=new ve(e),this.cache[e]=n),n}static Equals(e,t){if(e===t)return!0;let i=this.Get(e),n=this.Get(t);return i.pattern===n.pattern}static Translate(e){let t=this.symbolc_name_map[e.toLowerCase()];return t?this.cache[t].toString():e}static SymbolicName(e){for(let t of Object.keys(this.base_formats))if(e===this.base_formats[t])return t;return null}static InitCache(){for(let e of Object.keys(this.base_formats))this.cache[e]=new ve(this.base_formats[e]),this.symbolc_name_map[e.toLowerCase()]=e;this.cache.General.magic_decimal=!0,this.complex_general=new ve("0.###"),this.complex_general.magic_decimal=!0;for(let e of Object.keys(this.aliases))this.cache[e]=this.cache[this.aliases[e]],this.symbolc_name_map[e.toLowerCase()]=e}};Se.cache={},Se.symbolc_name_map={},Se.base_formats={Accounting:"_(#,##0.00_);(#,##0.00);-???",Number:"0.00",Integer:"0",Percent:"0.00%",General:"0.######",Fraction:"# ?/?",Dollar:"$* _(#,##0.00_);$* (#,##0.00);$* -???",Exponential:"0.000e","Short Date":"mm/dd/yy","Long Date":"dddd, mmm d yyyy",Timestamp:"mm-dd-yy hh:mm:ss"},Se.aliases={Scientific:"Exponential",Percentage:"Percent",Currency:"Dollar"};Se.InitCache();var ni=new Date().getUTCFullYear(),Vt=class{TestDate(e){let t=Date.parse(e);if(isNaN(t))return!1;let i=new Date(t),r=e.replace(/[\\d\\-\\\\/,.\\s]+/g," ").toLocaleLowerCase().split(/\\s+/).map(l=>l.trim()).filter(l=>!!l);if(!r.length)return t;if(!this.compare_month){this.compare_month={};for(let l=0;l<12;l++)this.compare_month[le.date_components.long_months[l].toLocaleLowerCase().replace(/\\./,"")]=l,this.compare_month[le.date_components.short_months[l].toLocaleLowerCase().replace(/\\./,"")]=l}if(!this.compare_day){this.compare_day={};for(let l=0;l<7;l++)this.compare_day[le.date_components.long_days[l].toLocaleLowerCase().replace(/\\./,"")]=l,this.compare_day[le.date_components.short_days[l].toLocaleLowerCase().replace(/\\./,"")]=l}let a=!1,o=!1;for(let l of r){let u=!1;for(let[h,c]of Object.entries(this.compare_month))if(l===h){if(a||i.getUTCMonth()!==c)return!1;u=!0,a=!0}if(!u){for(let[h,c]of Object.entries(this.compare_day))if(l===h){if(o||i.getUTCDay()!==c)return!1;u=!0,o=!0}}if(!u)return!1}return o&&!a?!1:t}TryParse(e=""){let t=0;if(e[0]==="\'")return{value:e,type:2};if(e==="")return{value:e,type:2};if(e==="NaN")return{value:NaN,type:3,hints:1};let i=e.trim(),n=i.match(/^[$](.*?)$/);n&&(i=n[1],t|=8);let r=i.match(/^\\((.*?)\\)$/);r&&(i=r[1],t|=32);let a=i.match(/^(.*?)%\\s*$/);a&&(i=a[1],t|=4),le.decimal_separator==="."?/,/.test(i)&&(i=i.replace(/,/g,""),t|=16):(i=i.replace(/(\\d)\\s+/g,"$1"),i=i.replace(/\\./g,""),i=i.replace(/,/,"."));let o=Number(i);if(o===null||isNaN(o)){let l=e.toLowerCase();if(l==="false")return{value:!1,type:4};if(l==="true")return{value:!0,type:4};let u=this.TestDate(e);if(u!==!1&&!isNaN(u)){let h=new Date(u),c=h.getUTCFullYear();if(c>=ni-200&&c<=ni+200)return t=64,(h.getHours()||h.getMinutes()||h.getSeconds())&&(t|=128),{value:ii(u),type:3,hints:t}}return{value:e,type:2}}if(r&&(o=-o),a){let l=o<0?-1:1,u=(l*o).toString().split(".");u[0]=("00"+u[0]).replace(/(\\d\\d)$/,".$1"),o=Number(u.join(""))*l}return/e/.test(e)&&(t|=2),{value:o,type:3,hints:t}}},La=new Vt;var Yt={top:{},left:{},bottom:{},right:{},diagonal:{}},ut=class{constructor(){this.theme=new Ie;this.cell_xfs=[];this.fonts=[];this.borders=[];this.fills=[];this.number_formats=[];this.base_number_format_id=200;this.modified=!1}Clamp(e,t,i){return Math.max(t,Math.min(e,i))}TintColor(e,t){let i=parseInt(e.substr(0,2),16),n=parseInt(e.substr(2,2),16),r=parseInt(e.substr(4,2),16);return t<0?(i=Math.round(i*t+i),n=Math.round(n*t+n),r=Math.round(r*t+r)):(i=Math.round((255-i)*t+i),n=Math.round((255-n)*t+n),r=Math.round((255-r)*t+r)),[i,n,r].map(a=>{let o=this.Clamp(a,0,255).toString(16);return o.length<2?"0"+o:o}).join("")}StyleOptionsFromProperties(e){let t=JSON.parse(JSON.stringify(e));for(let u of Object.keys(t))t[u]==="none"&&delete t[u];let i={},n={pattern_type:"none"},r=JSON.parse(JSON.stringify(Yt)),a={font:i,border:r};t.number_format&&(a.number_format={format:Se.Translate(t.number_format),symbolic_name:t.number_format}),t.font_size?.unit&&t.font_size.value&&(t.font_size.unit!=="pt"?console.warn("can\'t handle non-point font (FIXME)"):i.size=t.font_size.value),t.bold&&(i.bold=!0),t.italic&&(i.italic=!0),t.underline&&(i.underline=!0),t.text&&(t.text.text?i.color_argb=t.text.text:typeof t.text.theme=="number"&&(i.color_theme=t.text.theme,t.text.tint&&(i.color_tint=t.text.tint)));let o=(u,h)=>{u.width&&(h.style="thin",u.color.text?h.rgba=u.color.text:typeof u.color.theme=="number"?(h.theme=u.color.theme,u.color.tint&&(h.tint=u.color.tint)):h.color=64)},l=pe.CompositeBorders(t);switch(o(l.top,r.top),o(l.left,r.left),o(l.right,r.right),o(l.bottom,r.bottom),t.vertical_align){case pe.VerticalAlign.Top:a.vertical_alignment="top";break;case pe.VerticalAlign.Middle:a.vertical_alignment="center";break}switch(t.horizontal_align){case pe.HorizontalAlign.Center:a.horizontal_alignment="center";break;case pe.HorizontalAlign.Left:a.horizontal_alignment="left";break;case pe.HorizontalAlign.Right:a.horizontal_alignment="right";break}return t.fill&&(n.pattern_type="solid",t.fill.text?n.fg_color={argb:t.fill.text}:typeof t.fill.theme=="number"?(n.fg_color={theme:t.fill.theme},t.fill.tint&&(n.fg_color.tint=t.fill.tint)):n.fg_color={theme:1},a.fill=n),t.wrap&&(a.wrap=!0),a}CellXfToStyle(e){let t={},i=ut.default_styles[e.number_format];if(!i){for(let l of this.number_formats)if(l.id===e.number_format&&l.format){i=l.format;break}}if(i){let l=/\\[\\$(.)-[0-9A-Za-z]{1,4}\\]/g;i=i.replace(l,"$1");let u=/\\[\\$-[0-9A-Za-z]{1,4}\\]/g;i=i.replace(u,""),t.number_format=i}let n=this.fonts[0],r=this.fonts[e.font||0];r&&(r.bold&&(t.bold=!0),r.italic&&(t.italic=!0),r.underline&&(t.underline=!0),r.strike&&(t.strike=!0),n&&n.size&&r.size&&n.size!==r.size&&(t.font_size={value:100*r.size/n.size,unit:"%"}),r.color_argb?t.text={text:"#"+(r.color_argb.length>6?r.color_argb.substr(r.color_argb.length-6):r.color_argb)}:typeof r.color_theme=="number"&&(t.text={theme:r.color_theme}));let a=this.fills[e.fill||0];if(a&&a.pattern_type!=="none"){if(a.pattern_type==="gray"){let l=Math.round((a.pattern_gray||0)/1e3*255);t.fill={text:`rgb(${l}, ${l}, ${l})`}}a.pattern_type==="solid"&&a.fg_color&&(a.fg_color.argb?t.fill={text:"#"+(a.fg_color.argb.length>6?a.fg_color.argb.substr(a.fg_color.argb.length-6):a.fg_color.argb)}:typeof a.fg_color.theme=="number"&&(t.fill={theme:a.fg_color.theme},a.fg_color.tint&&(t.fill.tint=Math.round(a.fg_color.tint*1e3)/1e3)))}switch(e.horizontal_alignment){case"center":t.horizontal_align=pe.HorizontalAlign.Center;break;case"right":t.horizontal_align=pe.HorizontalAlign.Right;break;case"left":t.horizontal_align=pe.HorizontalAlign.Left;break}switch(e.vertical_alignment){case"center":t.vertical_align=pe.VerticalAlign.Middle;break;case"top":t.vertical_align=pe.VerticalAlign.Top;break;case"bottom":t.vertical_align=pe.VerticalAlign.Bottom;break}e.wrap_text&&(t.wrap=!0);let o=this.borders[e.border||0];return o&&(o.bottom.style&&(o.bottom.style==="double"?t.border_bottom=2:t.border_bottom=1),o.left.style&&(t.border_left=1),o.top.style&&(t.border_top=1),o.right.style&&(t.border_right=1)),t}CellXfToStyles(){return this.cell_xfs.map(e=>this.CellXfToStyle(e))}EnsureNumberFormat(e){if(typeof e.format>"u"||e.symbolic_name&&/^general$/i.test(e.symbolic_name))return 0;for(let i=0;i<100;i++){let n=ut.default_styles[i];if(n&&n===e.format)return i}for(let i of this.number_formats)if(i.format===e.format)return i.id||0;this.modified=!0;let t={id:this.base_number_format_id++,format:e.format};return this.number_formats.push(t),t.id}CompareBorderEdge(e,t){return e.color===t.color&&e.rgba===t.rgba&&e.style===t.style&&e.theme===t.theme&&e.tint===t.tint}CompareBorder(e,t){return this.CompareBorderEdge(e.top,t.top)&&this.CompareBorderEdge(e.left,t.left)&&this.CompareBorderEdge(e.bottom,t.bottom)&&this.CompareBorderEdge(e.right,t.right)&&this.CompareBorderEdge(e.diagonal,t.diagonal)}EnsureBorder(e){for(let i=0;i<this.borders.length;i++){let n=this.borders[i];if(this.CompareBorder(n,e))return i}this.modified=!0;let t=JSON.parse(JSON.stringify(e));return this.borders.push(t),this.borders.length-1}MatchColor(e,t){return!e&&!t?!0:!e||!t?!1:e.argb===t.argb&&e.indexed===t.indexed&&e.theme===t.theme&&e.tint===t.tint}EnsureFill(e){for(let i=0;i<this.fills.length;i++){let n=this.fills[i];if(this.MatchColor(e.bg_color,n.bg_color)&&this.MatchColor(e.fg_color,n.fg_color)&&e.pattern_gray===n.pattern_gray&&e.pattern_type===n.pattern_type)return i}this.modified=!0;let t={...e};return this.fills.push(t),this.fills.length-1}EnsureFont(e){let t={...this.fonts[0],...e};for(let i=0;i<this.fonts.length;i++){let n=this.fonts[i];if(n.bold===t.bold&&n.italic===t.italic&&n.underline===t.underline&&n.size===t.size&&n.strike===t.strike&&n.color_argb===t.color_argb&&n.color_theme===t.color_theme&&n.color_tint===t.color_tint&&n.family===t.family)return i}return this.modified=!0,this.fonts.push(t),this.fonts.length-1}EnsureStyle(e){let t=this.EnsureFont(e.font||{}),i=this.EnsureBorder(e.border||Yt),n=this.EnsureNumberFormat(e.number_format||{}),r=this.EnsureFill(e.fill||{pattern_type:"none"});for(let o=0;o<this.cell_xfs.length;o++){let l=this.cell_xfs[o];if(l.font===t&&l.fill===r&&l.border===i&&l.number_format===n&&!!l.wrap_text==!!e.wrap&&(!e.horizontal_alignment&&!l.horizontal_alignment||e.horizontal_alignment===l.horizontal_alignment)&&(!e.vertical_alignment&&!l.vertical_alignment||e.vertical_alignment===l.vertical_alignment))return o}this.modified=!0;let a={font:t,fill:r,border:i,number_format:n};return e.horizontal_alignment&&(a.horizontal_alignment=e.horizontal_alignment),e.vertical_alignment&&(a.vertical_alignment=e.vertical_alignment),e.wrap&&(a.wrap_text=!0),this.cell_xfs.push(a),this.cell_xfs.length-1}FromXML(e,t){let i=ne.FindAll.bind(ne,e);this.theme=t;let n=i("styleSheet/numFmts/numFmt");this.number_formats=n.map(r=>({id:Number(r.a$?.numFmtId||0),format:lt(r.a$?.formatCode||"")})),n=i("styleSheet/borders/border"),this.borders=n.map(r=>{let a=JSON.parse(JSON.stringify(Yt));return r.left&&(a.left.style=r.left.a$.style,a.left.color=Number(r.left.color?.a$?.indexed)),r.right&&(a.right.style=r.right.a$.style,a.right.color=Number(r.right.color?.a$?.indexed)),r.top&&(a.top.style=r.top.a$.style,a.top.color=Number(r.top.color?.a$?.indexed)),r.bottom&&(a.bottom.style=r.bottom.a$.style,a.bottom.color=Number(r.bottom.color?.a$?.indexed)),a}),n=i("styleSheet/cellXfs/xf"),this.cell_xfs=n.map(r=>{let a={number_format:Number(r.a$.numFmtId),font:Number(r.a$.fontId),fill:Number(r.a$.fillId),border:Number(r.a$.borderId),xfid:Number(r.a$.xfId)};return r.alignment&&(a.horizontal_alignment=r.alignment.a$.horizontal,a.vertical_alignment=r.alignment.a$.vertical,a.wrap_text=!!r.alignment.a$.wrapText),a}),n=i("styleSheet/fills/fill"),this.fills=n.map(r=>{let a={pattern_type:"none"};if(r.patternFill){let o=r.patternFill.a$?.patternType;switch(o){case"none":case void 0:break;case"solid":a.pattern_type="solid",r.patternFill.fgColor&&(a.fg_color={theme:r.patternFill.fgColor.a$?.theme?Number(r.patternFill.fgColor.a$.theme):void 0,indexed:r.patternFill.fgColor.a$?.indexed?Number(r.patternFill.fgColor.a$.indexed):void 0,tint:r.patternFill.fgColor.a$?.tint?Number(r.patternFill.fgColor.a$.tint):void 0,argb:r.patternFill.fgColor.a$?.rgb});break;default:{let l=o?.match(/^gray(\\d+)$/);if(l){a.pattern_type="gray",a.pattern_gray=Number(l[1]);break}}}}return a}),n=i("styleSheet/fonts/font"),this.fonts=n.map(r=>{let a={};return a.italic=typeof r.i<"u",a.bold=typeof r.b<"u",a.underline=typeof r.u<"u",a.strike=typeof r.strike<"u",r.sz&&(a.size=Number(r.sz.a$.val)),r.scheme&&(a.scheme=r.scheme.a$.val),r.name&&(a.name=r.name.a$.val),r.family&&(a.family=Number(r.family.a$.val)),r.color&&(r.color.a$?.theme&&(a.color_theme=Number(r.color.a$.theme)),r.color.a$?.tint&&(a.color_tint=Number(r.color.a$.tint)),r.color.a$?.rgb&&(a.color_argb=r.color.a$.rgb)),a})}},Be=ut;Be.default_styles={0:"General",1:"0",2:"0.00",3:"#,##0",4:"#,##0.00",9:"0%",10:"0.00%",11:"0.00E+00",12:"# ?/?",13:"# ??/??",14:"mm-dd-yy",15:"d-mmm-yy",16:"d-mmm",17:"mmm-yy",18:"h:mm AM/PM",19:"h:mm:ss AM/PM",20:"h:mm",21:"h:mm:ss",22:"m/d/yy h:mm",37:"#,##0 ;(#,##0)",38:"#,##0 ;[Red](#,##0)",39:"#,##0.00;(#,##0.00)",40:"#,##0.00;[Red](#,##0.00)",45:"mm:ss",46:"[h]:mm:ss",47:"mmss.0",48:"##0.0E+0",49:"@"};var xe=(s,e,t,i)=>{let r=`rId${Object.keys(s).length+1}`;return s[r]={id:r,type:e,target:t,mode:i},r};var ir=/[\\s-+=<>!()]/;var Ht=34,Jt=39,ns=160,si=32,ss=9,as=10,os=13,Pe=48,Xe=57,Xt=46,Qt=43,Qe=45,ai=40,qt=41,qe=44,ls=37,Kt=95,ft=36,cs=123,hs=125,Ke=91,oi=93,ds=33,li=59,us=35,fs=64,Me=65,et=97,ps=69,ms=101,pt=90,mt=122,gs=105;var er=192,tr=312,rr={"==":6,"!=":6,"<>":6,"=":6,"<":7,">":7,"<=":7,">=":7,"+":9,"-":9,"&":9,"*":10,"/":10,"^":11,":":13},bs=Object.keys(rr).sort((s,e)=>e.length-s.length),_s={"-":100,"+":100},Ue=class{constructor(){this.argument_separator=",";this.decimal_mark=".";this.flags={spreadsheet_semantics:!0,dimensioned_quantities:!1,fractions:!0};this.r1c1_regex=/[rR]((?:\\[[-+]{0,1}\\d+\\]|\\d+))[cC]((?:\\[[-+]{0,1}\\d+\\]|\\d+))$/;this.argument_separator_char=qe;this.decimal_mark_char=Xt;this.imaginary_char=gs;this.imaginary_number="i";this.id_counter=0;this.expression="";this.data=[];this.index=0;this.length=0;this.valid=!0;this.dependencies={addresses:{},ranges:{}};this.address_refcount={};this.full_reference_list=[]}Walk(e,t){switch(e.type){case"address":case"missing":case"literal":case"complex":case"identifier":case"operator":case"structured-reference":t(e);return;case"dimensioned":t(e)&&(this.Walk(e.expression,t),this.Walk(e.unit,t));return;case"range":t(e)&&(this.Walk(e.start,t),this.Walk(e.end,t));return;case"binary":t(e)&&(this.Walk(e.left,t),this.Walk(e.right,t));return;case"unary":t(e)&&this.Walk(e.operand,t);return;case"group":t(e)&&e.elements.forEach(i=>this.Walk(i,t));return;case"call":t(e)&&e.args.forEach(i=>this.Walk(i,t))}}Transpose(e){let t=e.length,i=[],n=0;for(let r=0;r<t;r++)Array.isArray(e[r])&&(n=Math.max(n,e[r].length));for(let r=0;r<n;r++){i[r]=[];for(let a=0;a<t;a++)i[r][a]=e[a][r]}return i}Render(e,t={}){let i=t.offset||{rows:0,columns:0},n=t.missing??"(missing)",{convert_decimal:r,convert_argument_separator:a,convert_imaginary_number:o,long_structured_references:l,table_name:u}=t,h=this.argument_separator+" ";a===","?h=", ":a===";"&&(h="; ");let c=this.imaginary_number;o&&(c=o);let b=r===","?",":".",f=this.decimal_mark===","?/,/:/\\./,p=this.decimal_mark===","?/,/g:/\\./g;switch(e.type){case"address":return this.AddressLabel(e,i);case"range":return this.AddressLabel(e.start,i)+":"+this.AddressLabel(e.end,i);case"missing":return n;case"array":return"{"+this.Transpose(e.values).map(g=>g.map(_=>typeof _=="string"?\'"\'+_+\'"\':_).join(", ")).join("; ")+"}";case"binary":return this.Render(e.left,t)+" "+e.operator+" "+this.Render(e.right,t);case"unary":return e.operator+this.Render(e.operand,t);case"complex":if(e.text)return r?e.text.replace(p,b):e.text;{let g=Math.abs(e.imaginary).toString();if((r===","||this.decimal_mark===",")&&(g=g.replace(/\\./,",")),e.real){let _=e.real.toString();(r===","||this.decimal_mark===",")&&(_=_.replace(/\\./,","));let w=Math.abs(e.imaginary);return`${_}${e.imaginary<0?" - ":" + "}${w===1?"":g}i`}else return e.imaginary===-1?"-i":e.imaginary===1?"i":`${e.imaginary<0?"-":""}${g}i`}break;case"literal":if(typeof e.value=="string")return\'"\'+e.value.replace(/"/g,\'""\')+\'"\';if(r&&typeof e.value=="number")if(e.text){let g=e.text;return r===","&&this.decimal_mark==="."&&(g=g.replace(/,/g,"")),g.replace(f,b)}else return e.value.toString().replace(/\\./,b);else if(e.text)return e.text;return e.value.toString();case"identifier":return e.name;case"operator":return"["+e.operator+"]";case"group":return e.explicit?"("+e.elements.map(g=>this.Render(g,t)).join(h)+")":e.elements.map(g=>this.Render(g,t)).join(h);case"call":return e.name+"("+e.args.map(g=>this.Render(g,t)).join(h)+")";case"dimensioned":return this.Render(e.expression)+" "+this.Render(e.unit);case"structured-reference":{let g=e.column;/[^A-Za-z]/.test(g)&&(g="["+g+"]");let _=e.table;switch(!_&&l&&u&&(_=u),e.scope){case"all":return`${_}[[#all],${g}]`;case"row":return l?`${_}[[#this row],${g}]`:`${_}[@${g}]`;case"column":return`${_}[${g}]`}throw new Error("unhandled scope in structured reference")}}return"??"}Parse(e){switch(e=e.trim(),e[0]==="="&&(e=e.substr(1).trim()),this.expression=e,this.data=[],this.length=e.length,this.index=0,this.valid=!0,this.error_position=void 0,this.error=void 0,this.dependencies.addresses={},this.dependencies.ranges={},this.address_refcount={},this.full_reference_list=[],this.id_counter=0,this.argument_separator){case";":this.argument_separator_char=li;break;default:this.argument_separator_char=qe;break}switch(this.decimal_mark){case",":this.decimal_mark_char=qe;break;default:this.decimal_mark_char=Xt;break}for(let n=0;n<this.length;n++)this.data[n]=e.charCodeAt(n);let t=this.ParseGeneric(),i={};for(let n of Object.keys(this.dependencies.addresses))this.address_refcount[n]&&(i[n]=this.dependencies.addresses[n]);return this.dependencies.addresses=i,{expression:t||void 0,valid:this.valid,error:this.error,error_position:this.error_position,dependencies:this.dependencies,separator:this.argument_separator,decimal_mark:this.decimal_mark,full_reference_list:this.full_reference_list.slice(0)}}ColumnLabel(e){if(e===1/0)return"";let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}AddressLabel(e,t){let i=e.column;!e.absolute_column&&e.column!==1/0&&(i+=t.columns);let n=e.row;if(!e.absolute_row&&e.row!==1/0&&(n+=t.rows),n<0||i<0||n===1/0&&i===1/0)return"#REF";let r="";return e.sheet&&(r=(ir.test(e.sheet)?"\'"+e.sheet+"\'":e.sheet)+"!"),n===1/0?r+(e.absolute_column?"$":"")+this.ColumnLabel(i):i===1/0?r+(e.absolute_row?"$":"")+(n+1):r+(e.absolute_column?"$":"")+this.ColumnLabel(i)+(e.absolute_row?"$":"")+(n+1)}ParseGeneric(e=[0]){let t=[];for(;this.index<this.length;){let i=this.ParseNext(t.length===0);if(typeof i=="number"){if(e.some(n=>i===n))break;if(i===ai){this.index++;let n=this.ParseGeneric([qt]);this.index++,n&&t.push({type:"group",id:this.id_counter++,elements:[n],explicit:!0})}else{let n=this.ConsumeOperator();n?t.push(n):(this.error=`unexpected character [1]: ${String.fromCharCode(i)}, 0x${i.toString(16)}`,this.valid=!1,this.index++)}}else t.push(i)}if(t.length){if(t=this.BinaryToRange2(t),this.flags.fractions){let i=[],n=a=>a.type==="literal"&&typeof a.value=="number"&&a.value%1===0,r=0;for(;r<t.length-3;r++)if(n(t[r])&&n(t[r+1])&&t[r+2].type==="operator"&&t[r+2].operator==="/"&&n(t[r+3])){let a=t[r],o=t[r+1],l=t[r+3],u=(a.value<0?-1:1)*(o.value/l.value);r+=3,i.push({id:t[r].id,type:"literal",text:this.expression.substring(a.position,l.position+1),value:a.value+u,position:a.position})}else i.push(t[r]);for(;r<t.length;r++)i.push(t[r]);t=i}if(t=t.map(i=>i.type==="identifier"&&i.name===this.imaginary_number?{type:"complex",real:0,imaginary:1,position:i.position,text:i.name,id:this.id_counter++}:i),this.flags.dimensioned_quantities){let i=[],n;for(let r=0;r<t.length;r++){let a=t[r];if(!n)n=a;else if(a.type==="identifier"&&(n.type==="literal"||n.type==="group"||n.type==="call")){let o=a;for(;t[r+1]?.type==="identifier";)o.name+=" "+t[++r].name;i.push({type:"dimensioned",expression:n,unit:a,id:this.id_counter++}),n=void 0}else i.push(n),n=a}n&&i.push(n),t=i}}return t.length===0?null:t.length===1?t[0]:this.BinaryToComplex(this.ArrangeUnits(t))}UnitToAddress(e){if(e.type==="literal"){if(typeof e.value=="number"&&e.value>0&&!/\\./.test(e.text||""))return{type:"address",position:e.position,label:e.value.toString(),row:e.value-1,id:this.id_counter++,column:1/0}}else{let t,i=e.name,n=i.split("!");if(n.length>1&&(t=n.slice(0,n.length-1).join("!"),i=i.substr(t.length+1),t[0]==="\'"))if(t.length>1&&t[t.length-1]==="\'")t=t.substr(1,t.length-2);else return;let r=i[0]==="$";i=(r?i.substr(1):i).toUpperCase();let a=Number(i);if(isNaN(a)){if(/[A-Z]{1,3}/.test(i)){let o=-1;for(let l=0;l<i.length;l++){let u=i[l].charCodeAt(0);o=26*(1+o)+(u-Me)}return{type:"address",position:e.position,absolute_column:r,label:e.name,column:o,id:this.id_counter++,row:1/0,sheet:t}}}else if(a>0&&a!==1/0&&!/\\./.test(i))return{type:"address",position:e.position,absolute_row:r,label:e.name,row:a-1,id:this.id_counter++,column:1/0,sheet:t}}}BinaryToRange2(e){let t=[];for(let i=0;i<e.length;i++){let n=e[i],r=e[i+1],a=e[i+2],o,l="",u;if(n&&r&&a&&r.type==="operator"&&r.operator===":"){if(n.type==="address"&&a.type==="address"){let h=n.position+n.label.length,c=a.position;o={type:"range",id:this.id_counter++,position:n.position,start:n,end:a,label:n.label+this.expression.substring(h,c)+a.label},l=o.start.label+":"+o.end.label,this.address_refcount[o.start.label]--,this.address_refcount[o.end.label]--;let b=[n.position,a.position];this.full_reference_list=this.full_reference_list.filter(f=>f.position!==b[0]&&f.position!==b[1])}else if((n.type==="literal"||n.type==="identifier")&&(a.type==="literal"||a.type==="identifier")){let h=this.UnitToAddress(n);if(!h&&n.type==="literal"&&typeof n.value=="number"&&n.value<0){let b={...n,text:(n.text||"").replace(/^-/,""),position:n.position+1,value:-n.value};h=this.UnitToAddress(b),h&&(u={type:"operator",operator:"-",position:n.position,id:this.id_counter++})}let c=this.UnitToAddress(a);h&&c&&(h.column===1/0&&c.column===1/0||h.row===1/0&&c.row===1/0)&&(l=h.label+":"+c.label,o={type:"range",id:this.id_counter++,position:h.position,start:h,end:c,label:l})}}o?(u&&t.push(u),t.push(o),this.dependencies.ranges[l]=o,this.full_reference_list.push(o),i+=2):t.push(n)}return t}BinaryToComplex(e){if(e.type==="binary")if((e.operator==="+"||e.operator==="-")&&e.left.type==="literal"&&typeof e.left.value=="number"&&e.right.type==="complex"&&!e.right.composited){let t="";t=this.expression.substring(e.left.position,e.right.position+(e.right.text?.length||0));let i=e.right.imaginary;return e.operator==="-"&&(i=-i),{type:"complex",position:e.left.position,text:t,id:this.id_counter++,imaginary:i,real:e.left.value,composited:!0}}else e.left=this.BinaryToComplex(e.left),e.right=this.BinaryToComplex(e.right);else if(e.type==="unary"&&(e.operator==="-"||e.operator==="+")&&e.operand.type==="complex"&&e.operand.text===this.imaginary_number)return{...e.operand,position:e.position,text:this.expression.substring(e.position,e.operand.position+(e.operand.text||"").length),imaginary:e.operand.imaginary*(e.operator==="-"?-1:1)};return e}BinaryToRangeX(e){if(e.type==="binary"){if(e.operator===":"){let t,i="";if(e.left.type==="address"&&e.right.type==="address"){let n=e.left.position+e.left.label.length,r=e.right.position;t={type:"range",id:this.id_counter++,position:e.left.position,start:e.left,end:e.right,label:e.left.label+this.expression.substring(n,r)+e.right.label},i=t.start.label+":"+t.end.label,this.address_refcount[t.start.label]--,this.address_refcount[t.end.label]--;let a=[e.left.position,e.right.position];this.full_reference_list=this.full_reference_list.filter(o=>o.position!==a[0]&&o.position!==a[1])}else if((e.left.type==="literal"||e.left.type==="identifier")&&(e.right.type==="literal"||e.right.type==="identifier")){let n=this.UnitToAddress(e.left),r=this.UnitToAddress(e.right);n&&r&&(n.column===1/0&&r.column===1/0||n.row===1/0&&r.row===1/0)&&(i=n.label+":"+r.label,t={type:"range",id:this.id_counter++,position:e.left.position,start:n,end:r,label:i})}if(t)return this.dependencies.ranges[i]=t,this.full_reference_list.push(t),t;this.error="unexpected character: :",this.valid=!1}e.left=this.BinaryToRangeX(e.left),e.right=this.BinaryToRangeX(e.right)}return e}ArrangeUnits(e){if(e.length===0)return{type:"missing",id:this.id_counter++};if(e.length===1)return e[0];let t=[];for(let i=0;i<e.length;i++){let n=e[i];if(n.type==="operator")if(t.length===0||t[t.length-1].type==="operator")if(_s[n.operator]){let r=this.BinaryToComplex(this.ArrangeUnits(e.slice(i+1)));if(!this.valid)return{type:"group",id:this.id_counter++,elements:e,explicit:!1};r.type==="binary"?(r.left={type:"unary",id:this.id_counter++,operator:n.operator,operand:r.left,position:n.position},n=r):n={type:"unary",id:this.id_counter++,operator:n.operator,operand:r,position:n.position},i=e.length}else return this.error=`unexpected character [2]: ${n.operator}`,this.error_position=n.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1};else{t.push(n);continue}if(t.length<2)t.push(n);else if(t[t.length-1].type==="operator"){let r=t[t.length-2],a=t[t.length-1],o=a.operator,l={type:"binary",id:this.id_counter++,left:r,operator:o,position:a.position,right:n};r.type==="binary"&&rr[o]>rr[r.operator]&&(l.left=r.left,l.operator=r.operator,l.position=r.position,l.right={type:"binary",id:this.id_counter++,left:r.right,right:n,operator:o,position:a.position}),t.splice(-2,2,l)}else return this.error="multiple expressions",this.error_position=n.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1}}return t[0]}ParseNext(e=!0){this.ConsumeWhiteSpace();let t=this.data[this.index];if(t===Ht)return{type:"literal",id:this.id_counter++,position:this.index,value:this.ConsumeString()};if(t>=Pe&&t<=Xe||t===this.decimal_mark_char)return this.ConsumeNumber();if(t===cs)return this.ConsumeArray();if(e&&(t===Qe||t===Qt)){let i=this.data[this.index+1];if(i>=Pe&&i<=Xe||i===this.decimal_mark_char)return this.ConsumeNumber()}else if(t>=Me&&t<=pt||t>=et&&t<=mt||t===Kt||t===us||t===Jt||t===ft||t===Ke||t>=er&&t<=tr)return this.ConsumeToken(t);return t}ConsumeArray(){let e={type:"array",id:this.id_counter++,values:[],position:this.index};this.index++;let t=0,i=0;for(;this.index<this.length;){let n=this.ParseNext(),r=this.index;if(typeof n=="number")switch(this.index++,n){case li:i++,t=0;break;case qe:t++;break;case hs:return e;default:this.valid&&(this.error="invalid character in array literal",this.error_position=r,this.valid=!1);break}else switch(n.type){case"literal":e.values[t]||(e.values[t]=[]),e.values[t][i]=n.value;break;default:this.valid&&(this.error="invalid value in array literal",this.error_position=r,this.valid=!1);break}}return e}ConsumeOperator(){for(let e of bs)if(this.expression.substr(this.index,e.length)===e){let t=this.index;return this.index+=e.length,{type:"operator",id:this.id_counter++,operator:e,position:t}}return null}ConsumeArguments(){this.index++;let e=0,t=[];for(;this.index<this.length;){let i=this.ParseGeneric([this.argument_separator_char,qt]);i!==null&&t.push(i);let n=this.data[this.index];if(n===this.argument_separator_char){this.index++,e++;for(let r=t.length;r<e;r++)t.push({type:"missing",id:this.id_counter++})}else if(n===qt)return this.index++,t}return t}ConsumeToken(e){let t=[e],i=this.index,n=e===Jt,r=0,a=!1;for(e===Ke&&(r=1,a=!0),++this.index;this.index<this.length;this.index++){let h=this.data[this.index];if(h>=Me&&h<=pt||h>=et&&h<=mt||h>=er&&h<=tr||h===Kt||h===ft||h===Xt||h===ds||n||h>=Pe&&h<=Xe||h===Ke||r>0&&h===oi||h===Qe&&this.flags.r1c1&&r===1||r>0&&h===fs&&this.data[this.index-1]===Ke||r===1&&(h===qe||h===si)||r>1)t.push(h),h===Ke&&(r++,a=!0),h===oi&&r--,h===Jt&&(n=!1);else break}let o=t.map(h=>String.fromCharCode(h)).join("");if(n)return this.error="unbalanced single quote",this.error_position=i,this.valid=!1,{type:"identifier",id:this.id_counter++,name:o,position:i};if(r)return this.error="unbalanced square bracket",this.error_position=i,this.valid=!1,{type:"identifier",id:this.id_counter++,name:o,position:i};if(o.toLowerCase()==="true")return{type:"literal",id:this.id_counter++,value:!0,position:i};if(o.toLowerCase()==="false")return{type:"literal",id:this.id_counter++,value:!1,position:i};if(this.ConsumeWhiteSpace(),this.data[this.index]===ai){let h=this.ConsumeArguments();return{type:"call",id:this.id_counter++,name:o,args:h,position:i}}if(this.flags.spreadsheet_semantics){let h=this.ConsumeAddress(o,i);if(h)return h;if(a){let c=this.ConsumeStructuredReference(o,i);if(c)return c}}let u={type:"identifier",id:this.id_counter++,name:o,position:i};return this.full_reference_list.push(u),u}ConsumeStructuredReference(e,t){let i=t,n=e.length,r=e,a="",o=0;for(;o<n;o++){if(e[o]==="["){e=e.substring(o);break}a+=e[o]}if(e[0]!=="["||e[e.length-1]!=="]")return;e=e.substring(1,e.length-1);let l=e.split(",").map(b=>b.trim()),u="column",h="";if(l.length>2)return;l.length===2?(/\\[#this row\\]/i.test(l[0])?u="row":/\\[#all\\]/i.test(l[0])&&(u="all"),h=l[1]):(h=l[0],h[0]==="@"&&(u="row",h=h.substring(1,h.length))),h[0]==="["&&h[h.length-1]==="]"&&(h=h.substring(1,h.length-1));let c={type:"structured-reference",id:this.id_counter++,label:r,position:t,scope:u,column:h,table:a};return this.full_reference_list.push(c),c}ConsumeAddress(e,t){let i=t,n=e.length,r,a=e.split("!");if(a.length>1&&(r=a.slice(0,a.length-1).join("!"),t+=r.length+1),this.flags.r1c1){let c=a[a.length-1].match(this.r1c1_regex);if(c){let b={type:"address",id:this.id_counter++,label:e,row:0,column:0,position:i,sheet:r,r1c1:!0};return c[1][0]==="["?(b.offset_row=!0,b.row=Number(c[1].substring(1,c[1].length-1))):b.row=Number(c[1])-1,c[2][0]==="["?(b.offset_column=!0,b.column=Number(c[2].substring(1,c[2].length-1))):b.column=Number(c[2])-1,b}}let o=this.ConsumeAddressColumn(t);if(!o)return null;t=o.position;let l=this.ConsumeAddressRow(t);if(!l)return null;t=l.position;let u=r?r+e.substr(r.length,t-i).toUpperCase():e.substr(0,t-i).toUpperCase();r&&r[0]==="\'"&&(r=r.substr(1,r.length-2));let h={type:"address",id:this.id_counter++,label:u,row:l.row,column:o.column,absolute_row:l.absolute,absolute_column:o.absolute,position:i,sheet:r};return n!==t-i?null:(this.dependencies.addresses[h.label]=h,this.address_refcount[h.label]=(this.address_refcount[h.label]||0)+1,this.full_reference_list.push(h),h)}ConsumeAddressRow(e){let t=this.data[e]===ft;t&&e++;let i=e,n=0;for(;;e++){let r=this.data[e];if(r>=Pe&&r<=Xe)n*=10,n+=r-Pe;else break}return i===e?!1:{absolute:t,row:n-1,position:e}}ConsumeAddressColumn(e){let t=-1,i=0,n=this.data[e]===ft;for(n&&e++;;e++,i++){if(i>=4)return!1;let r=this.data[e];if(r>=Me&&r<=pt)t=26*(1+t)+(r-Me);else if(r>=et&&r<=mt)t=26*(1+t)+(r-et);else break}return t<0?!1:{absolute:n,column:t,position:e}}ConsumeNumber(){let e=this.index,t=0,i=!1,n=!1,r=0,a=0,o=0,l="integer",u=0,h=!1,c=this.index;for(;this.index<this.length;this.index++,u++){let f=this.data[this.index];if(f===this.decimal_mark_char)if(l==="integer")l="fraction";else break;else if(f===ls){r/=100,o/=100,this.index++;break}else if(f===Qt||f===Qe)if(u===0)f===Qe&&(n=!0);else break;else if(f===ps||f===ms)if(l==="integer"||l==="fraction")l="exponent",this.index<this.length-1&&(this.data[this.index+1]===Qt?this.index++:this.data[this.index+1]===Qe&&(this.index++,i=!0));else break;else if(f===this.imaginary_char){let p=this.data[this.index+1];if(p>=Me&&p<=pt||p>=et&&p<=mt||p>=er&&p<=tr||p===Kt)break;if(l==="integer"||l==="fraction"){this.index++,h=!0;break}}else if(f>=Pe&&f<=Xe)switch(l){case"integer":r=r*10+(f-Pe);break;case"fraction":o=o*10+(f-Pe),a++;break;case"exponent":t=t*10+(f-Pe);break}else break}let b=r+o/Math.pow(10,a);return l==="exponent"&&(b=b*Math.pow(10,(i?-1:1)*t)),h?{type:"complex",id:this.id_counter++,position:e,imaginary:n?-b:b,real:0,text:this.expression.substring(c,this.index)||""}:{type:"literal",id:this.id_counter++,position:e,value:n?-b:b,text:this.expression.substring(c,this.index)||""}}ConsumeString(){this.index++;let e=[];for(;this.index<this.length;this.index++){let t=this.data[this.index];if(t===Ht&&(this.index++,this.index>=this.length||this.data[this.index]!==Ht))break;e.push(t)}return e.map(t=>String.fromCharCode(t)).join("")}ConsumeWhiteSpace(){for(;this.index<this.length;){let e=this.data[this.index];if(e===si||e===ss||e===as||e===os||e===ns)this.index++;else return}}};var sr=class{constructor(){}static get instance(){return this._instance}HTML(e){let t=[];for(let i of e){let n=[];for(let r of i)r.pre&&n.push("<pre>"),r.emphasis&&n.push("<em>"),r.strong&&n.push("<strong>"),r.strike&&n.push("<strike>"),n.push(r.text),r.strike&&n.push("</strike>"),r.strong&&n.push("</strong>"),r.emphasis&&n.push("</em>"),r.pre&&n.push("</pre>");t.push(n.join(""))}return t.join(`<br/>\n`)}Dummy(e=""){return e.split(/\\n/).map(t=>[{text:t}])}Parse(e=""){let t=this.Tokenize(e);for(let i=0;i<t.length;i++){let n=t[i];if(n.type==="delimeter"){let r=t[i-1],a=t[i+1],o=!r||r.type==="whitespace"||r.type==="newline",l=r&&r.type==="text"&&/[^\\w\\d]$/.test(r.text),u=!a||a.type==="whitespace"||a.type==="newline",h=a&&a.type==="text"&&/^[^\\w\\d]/.test(a.text);n.left_flanking=!u&&(!h||o),n.right_flanking=!o&&(!l||u||h)}}return this.ApplyFormatting(t),this.Consolidate(t)}IsWhitespace(e){return e===" "||e===" "}IsNewline(e){return e==="\\r"||e===`\n`}IsDelimeter(e){return e==="*"||e==="_"||e==="~"}Consolidate(e){let t=[],i={},n=[],r={type:"text",text:""};for(let a of e)if(a.type==="newline")r.text.length&&n.push(r),r={...i,text:"",type:"text"},t.push(n),n=[];else switch((!!i.strong!=!!a.strong||!!i.emphasis!=!!a.emphasis||!!i.strike!=!!a.strike)&&(i.strong=!!a.strong,i.emphasis=!!a.emphasis,i.strike=!!a.strike,r.text.length&&n.push(r),r={...i,text:"",type:"text"}),a.type){case"text":case"whitespace":r.text+=a.text;break;case"delimeter":for(let o=0;o<a.length;o++)r.text+=a.char;break}return r.text.length&&n.push(r),n.length&&t.push(n),t}ApplyFormatting(e,t){let i=0,n=e.length;for(i=0;i<n;i++){let r=e[i];if(r.type==="delimeter"){if(t&&r.right_flanking&&t.char===r.char&&r.length>0)return{index:i,token:r};if(r.left_flanking){let a=this.ApplyFormatting(e.slice(i+1),r);if(a.token){let o=Math.min(a.token.length,r.length),l=r.char==="~",u=!l&&!!(o%2),h=!l&&o>=2;for(let c=i+1;c<=i+a.index;c++)e[c].strong=!!e[c].strong||h,e[c].emphasis=!!e[c].emphasis||u,e[c].strike=!!e[c].strike||l;a.token.length-=o,r.length-=o,r.length>0?i--:i+=a.index}}}}return{index:i}}Tokenize(e=""){let t=[],i=e.length,n=0,r=!1,a="";for(n=0;n<i;n++){let o=e[n];if(this.IsWhitespace(o)){a&&t.push({type:"text",text:a});let l=o;for(;;){let u=e[n+1];if(this.IsWhitespace(u))l+=u,n++;else break}t.push({type:"whitespace",text:l}),r=!1,a=""}else if(this.IsNewline(o)){a&&t.push({type:"text",text:a});let l=o;for(;;){let u=e[n+1];if(this.IsNewline(u))l+=u,n++;else break}t.push({type:"newline",text:l}),r=!1,a=""}else if(r)a+=o,r=!1;else if(this.IsDelimeter(o)){a&&t.push({type:"text",text:a});let l=o;for(;;){let u=e[n+1];if(u===o)l+=u,n++;else break}t.push({type:"delimeter",text:l,char:o,length:l.length}),r=!1,a=""}else o==="\\\\"?r=!0:a+=o}return a&&t.push({type:"text",text:a}),t}},nr=sr;nr._instance=new sr;var ci={"c:tx":{"c:strRef":{"c:f":"","c:strCache":{"c:ptCount":{a$:{val:"1"}},"c:pt":{a$:{idx:"0"},"c:v":""}}}},"c:overlay":{a$:{val:"0"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"1400",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",spc:"0",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}}},hi={"c:tx":{"c:rich":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"1400",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",spc:"0",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:r":{"a:rPr":{a$:{lang:""}},"a:t":""}}}},"c:overlay":{a$:{val:"0"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"1400",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",spc:"0",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}}},gt={"c:chartSpace":{a$:{"xmlns:c":"http://schemas.openxmlformats.org/drawingml/2006/chart","xmlns:a":"http://schemas.openxmlformats.org/drawingml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:c16r2":"http://schemas.microsoft.com/office/drawing/2015/06/chart"},"c:date1904":{a$:{val:"0"}},"c:lang":{a$:{val:"en-US"}},"c:roundedCorners":{a$:{val:"0"}},"mc:AlternateContent":{a$:{"xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006"},"mc:Choice":{a$:{Requires:"c14","xmlns:c14":"http://schemas.microsoft.com/office/drawing/2007/8/2/chart"},"c14:style":{a$:{val:"102"}}},"mc:Fallback":{"c:style":{a$:{val:"2"}}}},"c:chart":{},"c:spPr":{"a:solidFill":{"a:schemeClr":{a$:{val:"bg1"}}},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:printSettings":{"c:headerFooter":{},"c:pageMargins":{a$:{b:"0.75",l:"0.7",r:"0.7",t:"0.75",header:"0.3",footer:"0.3"}},"c:pageSetup":{}}}};var di={"c:idx":{a$:{val:"0"}},"c:order":{a$:{val:"0"}},"c:spPr":{"a:solidFill":{"a:schemeClr":{a$:{val:"accent1"}}},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:invertIfNegative":{a$:{val:"0"}},"c:val":{"c:numRef":{"c:f":""}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000000-F52E-47BC-822F-A046A80610BE}"}}}}},ui={"c:title":{},"c:autoTitleDeleted":{a$:{val:"0"}},"c:plotArea":{"c:layout":{},"c:barChart":{"c:barDir":{a$:{val:"col"}},"c:grouping":{a$:{val:"clustered"}},"c:varyColors":{a$:{val:"0"}},"c:ser":[],"c:dLbls":{"c:showLegendKey":{a$:{val:"0"}},"c:showVal":{a$:{val:"0"}},"c:showCatName":{a$:{val:"0"}},"c:showSerName":{a$:{val:"0"}},"c:showPercent":{a$:{val:"0"}},"c:showBubbleSize":{a$:{val:"0"}}},"c:gapWidth":{a$:{val:"219"}},"c:overlap":{a$:{val:"-27"}},"c:axId":[{a$:{val:"47003664"}},{a$:{val:"1789284464"}}]},"c:catAx":{"c:axId":{a$:{val:"47003664"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"b"}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"1789284464"}},"c:crosses":{a$:{val:"autoZero"}},"c:auto":{a$:{val:"1"}},"c:lblAlgn":{a$:{val:"ctr"}},"c:lblOffset":{a$:{val:"100"}},"c:noMultiLvlLbl":{a$:{val:"0"}}},"c:valAx":{"c:axId":{a$:{val:"1789284464"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"l"}},"c:majorGridlines":{"c:spPr":{"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}}},"c:numFmt":{a$:{formatCode:"General",sourceLinked:"1"}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"47003664"}},"c:crosses":{a$:{val:"autoZero"}},"c:crossBetween":{a$:{val:"between"}}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}}},"c:plotVisOnly":{a$:{val:"1"}},"c:dispBlanksAs":{a$:{val:"gap"}},"c:extLst":{"c:ext":{a$:{uri:"{56B9EC1D-385E-4148-901F-78D8002777C0}","xmlns:c16r3":"http://schemas.microsoft.com/office/drawing/2017/03/chart"},"c16r3:dataDisplayOptions16":{"c16r3:dispNaAsBlank":{a$:{val:"1"}}}}},"c:showDLblsOverMax":{a$:{val:"0"}}};var fi={"c:title":{},"c:autoTitleDeleted":{a$:{val:"0"}},"c:plotArea":{"c:layout":{},"c:doughnutChart":{"c:varyColors":{a$:{val:"1"}},"c:ser":{"c:idx":{a$:{val:"0"}},"c:order":{a$:{val:"0"}},"c:dPt":{"c:idx":{a$:{val:"3"}},"c:bubble3D":{a$:{val:"0"}},"c:spPr":{"a:solidFill":{"a:schemeClr":{a$:{val:"accent4"}}},"a:ln":{a$:{w:"19050"},"a:solidFill":{"a:schemeClr":{a$:{val:"lt1"}}}},"a:effectLst":{}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000007-E886-49A6-AE6D-C67D8A27530F}"}}}}},"c:cat":{"c:strRef":{"c:f":""}},"c:val":{"c:numRef":{"c:f":""}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000000-3689-4BB4-A84F-05B9F3BBE577}"}}}}},"c:dLbls":{"c:showLegendKey":{a$:{val:"0"}},"c:showVal":{a$:{val:"0"}},"c:showCatName":{a$:{val:"0"}},"c:showSerName":{a$:{val:"0"}},"c:showPercent":{a$:{val:"0"}},"c:showBubbleSize":{a$:{val:"0"}},"c:showLeaderLines":{a$:{val:"1"}}},"c:firstSliceAng":{a$:{val:"0"}},"c:holeSize":{a$:{val:"75"}}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}}},"c:legend":{"c:legendPos":{a$:{val:"b"}},"c:overlay":{a$:{val:"0"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{a$:{rtl:"0"},"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}}},"c:plotVisOnly":{a$:{val:"1"}},"c:dispBlanksAs":{a$:{val:"gap"}},"c:extLst":{"c:ext":{a$:{uri:"{56B9EC1D-385E-4148-901F-78D8002777C0}","xmlns:c16r3":"http://schemas.microsoft.com/office/drawing/2017/03/chart"},"c16r3:dataDisplayOptions16":{"c16r3:dispNaAsBlank":{a$:{val:"1"}}}}},"c:showDLblsOverMax":{a$:{val:"0"}}};var pi={"c:title":{},"c:autoTitleDeleted":{a$:{val:"0"}},"c:plotArea":{"c:layout":{},"c:scatterChart":{"c:scatterStyle":{a$:{val:"lineMarker"}},"c:varyColors":{a$:{val:"0"}},"c:ser":[],"c:dLbls":{"c:showLegendKey":{a$:{val:"0"}},"c:showVal":{a$:{val:"0"}},"c:showCatName":{a$:{val:"0"}},"c:showSerName":{a$:{val:"0"}},"c:showPercent":{a$:{val:"0"}},"c:showBubbleSize":{a$:{val:"0"}}},"c:axId":[{a$:{val:"2028657983"}},{a$:{val:"2023395087"}}]},"c:valAx":[{"c:axId":{a$:{val:"2028657983"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"b"}},"c:majorGridlines":{"c:spPr":{"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"25000"}},"a:lumOff":{a$:{val:"75000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"2023395087"}},"c:crosses":{a$:{val:"autoZero"}},"c:crossBetween":{a$:{val:"midCat"}}},{"c:axId":{a$:{val:"2023395087"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"l"}},"c:majorGridlines":{"c:spPr":{"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}}},"c:numFmt":{a$:{formatCode:"0.00",sourceLinked:"1"}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"25000"}},"a:lumOff":{a$:{val:"75000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"2028657983"}},"c:crosses":{a$:{val:"autoZero"}},"c:crossBetween":{a$:{val:"midCat"}}}],"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}}},"c:plotVisOnly":{a$:{val:"1"}},"c:dispBlanksAs":{a$:{val:"gap"}},"c:extLst":{"c:ext":{a$:{uri:"{56B9EC1D-385E-4148-901F-78D8002777C0}","xmlns:c16r3":"http://schemas.microsoft.com/office/drawing/2017/03/chart"},"c16r3:dataDisplayOptions16":{"c16r3:dispNaAsBlank":{a$:{val:"1"}}}}},"c:showDLblsOverMax":{a$:{val:"0"}}},mi={"c:spPr":{"a:ln":{a$:{w:"19050",cap:"rnd"},"a:solidFill":{"a:schemeClr":{a$:{val:"accent1"}}},"a:round":{}},"a:effectLst":{}},"c:marker":{"c:symbol":{a$:{val:"none"}}},"c:xVal":{"c:numRef":{"c:f":""}},"c:yVal":{"c:numRef":{"c:f":""}},"c:smooth":{a$:{val:"0"}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000000-1F6C-44A9-AA4F-6706F20CC72E}"}}}}};var ar=class{constructor(e,t=ar.next_chart_index++){this.options=e;this.index=t;this.relationships={}}UpdateChartTitle(e){let t=this.options.title||{type:"literal",value:""};if(t&&t.type==="literal"){let i=JSON.parse(JSON.stringify(hi)),n=i["c:tx"]["c:rich"]["a:p"];n["a:r"]={"a:rPr":{a$:{lang:le.locale}},"a:t":t.value},e["c:title"]=i}else if(t){let i=JSON.parse(JSON.stringify(ci));i["c:tx"]["c:strRef"]["c:f"]=t.label,e["c:title"]=i}}toJSON(){switch(this.options.type){case"column":case"bar":return this.CreateBarChart();case"scatter":case"scatter2":return this.CreateScatterChart();case"donut":return this.CreateDonutChart();default:console.info("unhandled chart type",this.options.type)}return this.CreateBarChart()}CreateScatterChart(){let e=JSON.parse(JSON.stringify(gt)),t=e["c:chartSpace"],i=JSON.parse(JSON.stringify(pi));this.options.smooth&&(i["c:plotArea"]["c:scatterChart"]["c:scatterStyle"].a$.val="smoothMarker"),t["c:chart"]=i,this.UpdateChartTitle(t["c:chart"]);let n=t["c:chart"]["c:plotArea"]["c:scatterChart"]["c:ser"],r=!1;for(let a=0;a<this.options.data.length;a++){let o=JSON.parse(JSON.stringify(mi));if(o["c:idx"]={a$:{val:a.toString()}},o["c:order"]={a$:{val:a.toString()}},this.options.names&&this.options.names[a]){let l=this.options.names[a];switch(l.type){case"literal":o["c:tx"]={"c:v":l.value.toString()},r=!0;break;case"range":case"address":o["c:tx"]={"c:strRef":{"c:f":l.label}},r=!0;break}}o["c:spPr"]["a:ln"]["a:solidFill"]["a:schemeClr"].a$.val=`accent${a+1}`,o["c:yVal"]["c:numRef"]["c:f"]=this.options.data[a]?.label,this.options.labels2&&this.options.labels2[a]&&(o["c:xVal"]["c:numRef"]["c:f"]=this.options.labels2[a]?.label),this.options.smooth&&(o["c:smooth"]={a$:{val:1}}),n.push(o)}return r&&(t["c:chart"]["c:legend"]={"c:legendPos":{a$:{val:"b"}},"c:overlay":{a$:{val:"0"}}}),e}CreateDonutChart(){let e=JSON.parse(JSON.stringify(gt)),t=e["c:chartSpace"],i=JSON.parse(JSON.stringify(fi));t["c:chart"]=i,this.UpdateChartTitle(t["c:chart"]);let n=i["c:plotArea"]["c:doughnutChart"];return n&&(n["c:ser"]["c:cat"]["c:strRef"]["c:f"]=this.options.labels?.label||"",n["c:ser"]["c:val"]["c:numRef"]["c:f"]=this.options.data[0]?.label||""),e}CreateBarChart(){let e=JSON.parse(JSON.stringify(gt)),t=e["c:chartSpace"],i=JSON.parse(JSON.stringify(ui));t["c:chart"]=i,this.UpdateChartTitle(t["c:chart"]);let n=i["c:plotArea"]["c:barChart"];if(n){let r=n["c:barDir"];r&&(r.a$.val=this.options.type==="bar"?"bar":"col");let a=n["c:ser"];for(let o=0;o<this.options.data.length;o++){let l=JSON.parse(JSON.stringify(di));l["c:idx"]={a$:{val:o.toString()}},l["c:order"]={a$:{val:o.toString()}},l["c:spPr"]["a:solidFill"]["a:schemeClr"].a$.val=`accent${o+1}`,!o&&this.options.labels&&(l["c:cat"]={"c:strRef":{"c:f":this.options.labels.label}}),l["c:val"]["c:numRef"]["c:f"]=this.options.data[o]?.label,a.push(l)}}return e}},Fe=ar;Fe.next_chart_index=1;var or=class{constructor(e,t=or.next_image_index++){this.options=e;this.index=t;this.extension="";switch(e.mimetype){case"svg+xml":this.extension="svg";break;case"image/png":this.extension="png";break;case"jpg":this.extension="jpeg";break;case"svg":case"png":case"jpeg":case"gif":this.extension=e.mimetype;break;default:console.warn("unhandled mime type",e.mimetype);break}}},tt=or;tt.next_image_index=1;var gi=9525,lr=class{constructor(e=lr.next_drawing_index++){this.index=e;this.sheet_drawing_relationship=0;this.charts=[];this.images=[];this.relationships={}}AddImage(e,t){let i=new tt(e);if(i.extension){let n=xe(this.relationships,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",`../media/image${i.index}.${i.extension}`);this.images.push({image:i,relationship:n,anchor:t})}}AddChart(e,t){let i=new Fe(e),n=xe(this.relationships,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",`../charts/chart${i.index}.xml`);this.charts.push({chart:i,anchor:t,relationship:n})}CornerToJSON(e){return{"xdr:col":e.column,"xdr:colOff":(e.column_offset||0)*gi,"xdr:row":e.row,"xdr:rowOff":(e.row_offset||0)*gi}}AnchorToJSON(e){return{"xdr:from":{...this.CornerToJSON(e.from)},"xdr:to":{...this.CornerToJSON(e.to)}}}toJSON(){let e=this.images.map(n=>({a$:{editAs:"oneCell"},...this.AnchorToJSON(n.anchor),"xdr:pic":{"xdr:nvPicPr":{"xdr:cNvPr":{a$:{id:n.image.index+1,name:"Image "+n.image.index}},"xdr:cNvPicPr":{"a:picLocks":{a$:{noChangeAspect:1}}}},"xdr:blipFill":{"a:blip":{a$:n.image.extension==="svg"?{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships"}:{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:embed":n.relationship},"a:extLst":{"a:ext":[{a$:{uri:"{28A0092B-C50C-407E-A947-70E740481C1C}"},"a14:useLocalDpi":{a$:{"xmlns:a14":"http://schemas.microsoft.com/office/drawing/2010/main",val:0}}},n.image.extension==="svg"?{a$:{uri:"{96DAC541-7B7A-43D3-8B79-37D633B846F1}"},"asvg:svgBlip":{a$:{"xmlns:asvg":"http://schemas.microsoft.com/office/drawing/2016/SVG/main","r:embed":n.relationship}}}:void 0]}},"a:stretch":{"a:fillRect":{}}},"xdr:spPr":{"a:xfrm":{"a:off":{a$:{x:0,y:0}},"a:ext":{a$:{cx:4057650,cy:6172200}}},"a:prstGeom":{a$:{prst:"rect"},"a:avLst":{}}}},"xdr:clientData":{}})),t=this.charts.map(n=>({...this.AnchorToJSON(n.anchor),"xdr:graphicFrame":{a$:{macro:""},"xdr:nvGraphicFramePr":{"xdr:cNvPr":{a$:{id:n.chart.index+1,name:`Chart ${n.chart.index}`}},"xdr:cNvGraphicFramePr":{}},"xdr:xfrm":{"a:off":{a$:{x:0,y:0}},"a:ext":{a$:{cx:0,cy:0}}},"a:graphic":{"a:graphicData":{a$:{uri:"http://schemas.openxmlformats.org/drawingml/2006/chart"},"c:chart":{a$:{"xmlns:c":"http://schemas.openxmlformats.org/drawingml/2006/chart","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:id":n.relationship}}}}},"xdr:clientData":{}}));return{"xdr:wsDr":{a$:{"xmlns:xdr":"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing","xmlns:a":"http://schemas.openxmlformats.org/drawingml/2006/main"},"xdr:twoCellAnchor":[...t,...e]}}}},Le=lr;Le.next_drawing_index=1;var Te=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n`,bt=class{constructor(){this.xmloptions={format:!0,attributesGroupName:"a$",textNodeName:"t$",ignoreAttributes:!1,suppressEmptyNode:!0};this.xmlbuilder1=new _t.XMLBuilder(this.xmloptions);this.xmlparser2=new _t.XMLParser(ct);this.parser=new Ue;this.decorated_functions={}}async Init(e={}){for(let t of Object.keys(e))this.decorated_functions[t.toLowerCase()]=e[t];this.zip=await new bi.default().loadAsync(gr,{base64:!0})}async WriteRels(e,t,i=!1){if(!this.zip)throw new Error("missing zip");let n=Object.keys(e),r={Relationships:{a$:{xmlns:"http://schemas.openxmlformats.org/package/2006/relationships"},Relationship:n.map(o=>{let l=e[o],u={Id:l.id,Target:l.target,Type:l.type};return l.mode&&(u.TargetMode=l.mode),{a$:u}})}},a=Te+this.xmlbuilder1.build(r);i&&console.info(a),await this.zip?.file(t,a)}async WriteStyleCache(e){if(!this.zip)throw new Error("missing zip");let t=h=>{let c={};return h.indexed!==void 0&&(c.indexed=h.indexed),h.theme!==void 0&&(c.theme=h.theme),h.tint!==void 0&&(c.tint=h.tint),h.argb!==void 0&&(c.rgb=h.argb),c},i=e.cell_xfs.map(h=>{let c={a$:{numFmtId:h.number_format,fontId:h.font,fillId:h.fill,borderId:h.border}};return(h.horizontal_alignment||h.vertical_alignment||h.wrap_text)&&(c.alignment={a$:{}},h.horizontal_alignment&&(c.alignment.a$.horizontal=h.horizontal_alignment),h.vertical_alignment&&(c.alignment.a$.vertical=h.vertical_alignment),h.wrap_text&&(c.alignment.a$.wrapText=1)),c}),n=h=>{if(h.color)return{indexed:h.color};if(h.rgba)return{rgb:h.rgba};if(h.theme){let c={theme:h.theme};return h.tint&&(c.tint=h.tint),c}},r=e.borders.map(h=>{let c={left:{},right:{},top:{},bottom:{},diagonal:{}};if(h.top.style){c.top.a$={style:h.top.style};let b=n(h.top);b&&(c.top.color={a$:b})}if(h.left.style){c.left.a$={style:h.left.style};let b=n(h.left);b&&(c.left.color={a$:b})}if(h.bottom.style){c.bottom.a$={style:h.bottom.style};let b=n(h.bottom);b&&(c.bottom.color={a$:b})}if(h.right.style){c.right.a$={style:h.right.style};let b=n(h.right);b&&(c.right.color={a$:b})}if(h.diagonal.style){c.diagonal.a$={style:h.diagonal.style};let b=n(h.diagonal);b&&(c.diagonal.color={a$:b})}return c}),a=e.fills.map(h=>{let c={a$:{patternType:h.pattern_type}};return h.pattern_gray!==void 0&&(c.a$.patternType=`gray${h.pattern_gray}`),h.bg_color&&(c.bgColor={a$:t(h.bg_color)}),h.fg_color&&(c.fgColor={a$:t(h.fg_color)}),{patternFill:c}}),o=e.fonts.map(h=>{let c={};return h.bold&&(c.b=""),h.italic&&(c.i=""),h.underline&&(c.u=""),h.strike&&(c.strike=""),h.size!==void 0&&(c.sz={a$:{val:h.size}}),h.family!==void 0&&(c.family={a$:{val:h.family}}),h.name!==void 0&&(c.name={a$:{val:h.name}}),h.scheme!==void 0&&(c.scheme={a$:{val:h.scheme}}),h.color_argb!==void 0?c.color={a$:{rgb:h.color_argb}}:h.color_theme!==void 0&&(c.color={a$:{theme:h.color_theme}},h.color_tint&&(c.color.a$.tint=h.color_tint)),c}),l={styleSheet:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac x16r2 xr","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac","xmlns:x16r2":"http://schemas.microsoft.com/office/spreadsheetml/2015/02/main","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision"}}};e.number_formats.length&&(l.styleSheet.numFmts={a$:{count:e.number_formats.length},numFmt:e.number_formats.map(h=>({a$:{numFmtId:h.id,formatCode:h.format}}))}),o.length&&(l.styleSheet.fonts={a$:{count:o.length},font:o}),a.length&&(l.styleSheet.fills={a$:{count:a.length},fill:a}),r.length&&(l.styleSheet.borders={a$:{count:r.length},border:r}),i.length&&(l.styleSheet.cellXfs={a$:{count:i.length},xf:i});let u=Te+this.xmlbuilder1.build(l);await this.zip?.file("xl/styles.xml",u)}async WriteSharedStrings(e){if(!this.zip)throw new Error("missing zip");let t={sst:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main",count:e.strings.length,uniqueCount:e.strings.length},si:[...e.strings.map(n=>({t:n}))]}},i=Te+this.xmlbuilder1.build(t);await this.zip?.file("xl/sharedStrings.xml",i)}StyleFromCell(e,t,i,n,r={}){let a=e.styles||e.cell_style_refs||[],o=[e.sheet_style];if(e.row_pattern&&e.row_pattern.length&&o.push(e.row_pattern[i%e.row_pattern.length]),e.row_style){let u=e.row_style[i];typeof u=="number"&&(u=a[u]),u&&o.push(u)}if(e.column_style){let u=e.column_style[n];typeof u=="number"&&(u=a[u]),u&&o.push(u)}o.push(r);let l=t.StyleOptionsFromProperties(pe.Composite(o));return t.EnsureStyle(l)}NormalizeAddress(e,t){let i=e.type==="address"?[e]:[e.start,e.end];for(let n of i)n.absolute_row=!0,n.absolute_column=!0,n.sheet||(n.sheet=t.name);return e.type==="range"&&(e.end.sheet=void 0),e.label=this.parser.Render(e),e}AnnotationLayoutToAnchor(e,t){let i=n=>{let r=t.column_width&&t.column_width[n.address.column]?t.column_width[n.address.column]:t.default_column_width||100,a=t.row_height&&t.row_height[n.address.row]?t.row_height[n.address.row]:t.default_row_height||20;return{...n.address,row_offset:Math.round(n.offset.y*a),column_offset:Math.round(n.offset.x*r)}};return{from:i(e.tl),to:i(e.br)}}AnnotationRectToAnchor(e,t){let i={from:{row:-1,column:-1},to:{row:-1,column:-1}},n={top:0,left:0,width:301,height:301,...e},r={...n,right:n.left+n.width,bottom:n.top+n.height};for(let a=0,o=0;o<1e3;o++){let l=t.column_width&&t.column_width[o]?t.column_width[o]:t.default_column_width||100;if(i.from.column<0&&r.left<=a+l&&(i.from.column=o,i.from.column_offset=r.left-a),i.to.column<0&&r.right<=a+l){i.to.column=o,i.to.column_offset=r.right-a;break}a+=l}for(let a=0,o=0;o<1e3;o++){let l=t.row_height&&t.row_height[o]?t.row_height[o]:t.default_row_height||20;if(i.from.row<0&&r.top<=a+l&&(i.from.row=o,i.from.row_offset=r.top-a),i.to.row<0&&r.bottom<=a+l){i.to.row=o,i.to.row_offset=r.bottom-a;break}a+=l}return i}ParseImages(e){let t=[];for(let i of e.annotations||[])if(i.type==="image"&&i.data?.src){let n=i.data.src,r=n.match(/^data:image\\/([^;]*?);base64,/);if(r){let a=n.substr(r[0].length),o=r[1],l={data:a,mimetype:o,encoding:"base64"};switch(o){case"svg+xml":case"webp":case"jpeg":case"jpg":case"image/png":case"png":case"gif":i.rect?t.push({anchor:this.AnnotationRectToAnchor(i.rect,e),options:l}):i.layout?t.push({anchor:this.AnnotationLayoutToAnchor(i.layout,e),options:l}):console.warn("annotation missing layout");break;default:console.info("unhandled image type",o);break}}}return t}ParseCharts(e){let t=[],i=(n,r,a)=>{if(n.type==="range")r.data.push(this.NormalizeAddress(n,e));else if(n.type==="call"){if(/group/i.test(n.name))for(let o of n.args||[])i(o,r,a?a+" (recurse)":void 0);else if(/series/i.test(n.name)){let[o,l,u]=n.args;u&&u.type==="range"?(r.data.push(this.NormalizeAddress(u,e)),o&&(r.names||(r.names=[]),o.type==="address"&&this.NormalizeAddress(o,e),o.type==="range"?(this.NormalizeAddress(o.start,e),r.names[r.data.length-1]=o.start):r.names[r.data.length-1]=o),r.labels2||(r.labels2=[]),l&&l.type==="range"&&(r.labels2[r.data.length-1]=this.NormalizeAddress(l,e))):console.info("invalid series missing Y",{y:u,arg:n,ref:a})}}};for(let n of e.annotations||[]){let r=this.parser.Parse(n.formula||"");if(r.expression&&r.expression.type==="call"){let a="";switch(r.expression.name.toLowerCase()){case"line.chart":a="scatter";break;case"scatter.line":a="scatter2";break;case"donut.chart":a="donut";break;case"bar.chart":a="bar";break;case"column.chart":a="column";break}if(a==="column"||a==="donut"||a==="bar"||a==="scatter"||a==="scatter2"){let o={type:a,data:[]},l=a==="scatter2"?1:2,u=r.expression.args[l];if(u&&u.type==="literal"?o.title=u:u&&u.type==="address"&&(o.title=this.NormalizeAddress(u,e)),r.expression.args[0]){let c=r.expression.args[0];if(a==="scatter2"||a==="bar"||a==="column"||a==="scatter")i(c,o,e.name);else if(c.type==="range")o.data.push(this.NormalizeAddress(c,e));else if(c.type==="call"&&/group/i.test(c.name))for(let b of c.args)b.type==="range"?o.data.push(this.NormalizeAddress(b,e)):b.type==="call"&&/series/i.test(b.name)&&b.args[2]&&b.args[2].type==="range"&&o.data.push(this.NormalizeAddress(b.args[2],e));else c.type==="call"&&/series/i.test(c.name)&&c.args[2]&&c.args[2].type==="range"&&o.data.push(this.NormalizeAddress(c.args[2],e))}a!=="scatter2"&&r.expression.args[1]&&r.expression.args[1].type==="range"&&(o.labels=this.NormalizeAddress(r.expression.args[1],e)),(a==="scatter"&&r.expression.args[4]&&r.expression.args[4].type==="literal"&&r.expression.args[4].value.toString().toLowerCase()==="smooth"||a==="scatter2"&&r.expression.args[2]&&r.expression.args[2].type==="literal"&&/smooth/i.test(r.expression.args[2].value.toString()))&&(o.smooth=!0);let h=n.rect;h?t.push({anchor:this.AnnotationRectToAnchor(h,e),options:o}):n.layout?t.push({anchor:this.AnnotationLayoutToAnchor(n.layout,e),options:o}):console.warn("annotation missing layout")}}}return t}FormulaText(e,t){if(e[0]!=="=")return e;let i=this.parser.Parse(e);if(i.expression){this.parser.Walk(i.expression,r=>{if(r.type==="call"){let a=r.name.toLowerCase();this.decorated_functions[a]&&(r.name=this.decorated_functions[a]+"."+r.name)}return!0});let n=t.table?.name||"";return this.parser.Render(i.expression,{missing:"",long_structured_references:!0,table_name:n})}else return console.warn("parsing function failed"),console.warn(e),e.substring(1)}async Export(e){let t=0,i=[];for(let A=0;A<e.sheet_data.length;A++){let v=e.sheet_data[A],z=v.id||0;z&&(i[z]=v.name||""),z===e.active_sheet&&(t=A)}let n=new Ge,r=new Be,a=new Ie,o=await this.zip?.file("xl/theme/theme1.xml")?.async("text");a.FromXML(this.xmlparser2.parse(o||"")),o=await this.zip?.file("xl/styles.xml")?.async("text"),r.FromXML(this.xmlparser2.parse(o||""),a),Le.next_drawing_index=1,Fe.next_chart_index=1;let l=[],u=[];for(let A=0;A<e.sheet_data.length;A++){let v=e.sheet_data[A],z={},W={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac xr xr2 xr3","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr2":"http://schemas.microsoft.com/office/spreadsheetml/2015/revision2","xmlns:xr3":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision3","xr:uid":"{D37933E2-499F-4789-8D13-194E11B743FC}"},$=v.default_row_height?v.default_row_height/20*15:15,T={worksheet:{a$:{...W},dimension:{a$:{ref:"A1"}},sheetViews:{sheetView:{a$:{workbookViewId:0}}},sheetFormatPr:{a$:$===15?{"x14ac:dyDescent":.25}:{defaultRowHeight:$,customHeight:1,"x14ac:dyDescent":.25}},cols:{},sheetData:{},mergeCells:{a$:{count:0}},dataValidations:{},hyperlinks:{},pageMargins:{a$:{left:.7,right:.7,top:.75,bottom:.75,header:.3,footer:.3}},drawing:{},tableParts:{a$:{count:0}},extLst:{ext:{a$:{uri:"{05C60535-1F16-4fd2-B633-F4F36F0B64E0}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}}}}},Y=v.styles||v.cell_style_refs||[],K=new ot;K.FromJSON(v.data,Y);for(let P of v.cell_styles){let M=K.EnsureCell(P);M.style||(M.style=Y[P.ref])}let C={start:{row:K.rows+1,column:K.columns+1},end:{row:K.rows+1,column:K.columns+1}},B={row:[]},m=[],G=[],O=[],R=[],J=[];for(let P=0;P<K.data.length;P++)if(K.data[P]&&K.data[P].length){P<C.start.row&&(C.start.row=P);let M={start:-1,end:-1},U=[];for(let q=0;q<K.data[P].length;q++){let X=K.data[P][q];if(X){if(X.table&&X.table.area.start.row===P&&X.table.area.start.column===q){let he=new oe(X.table.area.start,X.table.area.end),d=u.length+1,L=`../tables/table${d}.xml`,E=[];for(let I=0;I<he.columns;I++){let F=K.data[P][q+I],j="";F.type!==2?(typeof F.calculated<"u"?j=F.calculated.toString():typeof F.value<"u"&&(j=F.value.toString()),F.type=2,F.value=j):j=F.value||"",j||(j=`Column${I+1}`);let S=j,V=!1,Q=1;for(;!V;){V=!0;e:for(let H of E)if(H.toLowerCase()===S.toLowerCase()){V=!1,S=`${j}${++Q}`;break e}}F.value=S,E.push(S)}let x;if(X.table.totals_row){x=[];for(let I=0;I<he.columns;I++){let F=K.data[he.end.row][he.start.column+I];F.type&&(F.type===1?x[I]={type:"formula",value:(F.value||"").toString().substring(1)}:(F.type!==2&&(F.type=2,F.value=F.value?.toString()||""),x[I]={type:"label",value:F.value}))}}let y={rel:xe(z,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table",L),index:d,ref:he.spreadsheet_label,name:`Table${d}`,display_name:`Table${d}`,totals_row_shown:0,totals_row_count:X.table?.totals_row?1:0,columns:E,footers:x};if(X.table.totals_row){let I=new oe(he.start,{row:he.end.row-1,column:he.end.column});y.filterRef=I.spreadsheet_label}R.push(y),u.push(y)}if(X.merge_area&&X.merge_area.start.row===P&&X.merge_area.start.column===q&&O.push(new oe(X.merge_area.start,X.merge_area.end)),X.hyperlink){let he=xe(z,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",X.hyperlink,"External");m.push({rel:he,target:X.hyperlink,address:{row:P,column:q}})}if(X.validation&&(X.validation.type===0||X.validation.type===2)&&J.push({address:{row:P,column:q},validation:X.validation}),X.type===1&&/^=?sparkline\\./i.test(X.value)){G.push({address:{row:P,column:q},formula:X.value,style:X.style});continue}q<C.start.column&&(C.start.column=q),M.start<0&&(M.start=q),M.end=q;let ee=this.StyleFromCell(v,r,P,q,X.style),re,ae,se;switch(X.type){case 1:switch(se=this.FormulaText(X.value,X),X.calculated_type){case 2:re=X.calculated,ae="str";break;case 3:re=X.calculated;break;case 4:re=X.calculated?1:0,ae="b";break}break;case 2:re=n.Ensure(X.value),ae="s";break;case 3:re=X.value;break;case 4:re=X.value?1:0,ae="b";break}X.area&&X.area.start.row===P&&X.area.start.column===q&&typeof se=="string"&&(se={t$:se,a$:{t:"array",ref:X.area.spreadsheet_label}});let fe={a$:{r:oe.CellAddressToLabel({row:P,column:q})}};ae!==void 0&&(fe.a$.t=ae),ee!==void 0&&(fe.a$.s=ee),se!==void 0&&(fe.f=se),re!==void 0&&(fe.v=re),U.push(fe)}}if(U.length){let q={a$:{r:P+1,spans:`${M.start+1}:${M.end+1}`},c:U};v.row_height&&typeof v.row_height[P]=="number"&&v.row_height[P]!==v.default_row_height&&(q.a$.customHeight=1,q.a$.ht=v.row_height[P]*3/4),B.row.push(q)}}let Z=[];v.default_column_width&&(T.worksheet.sheetFormatPr.a$.defaultColWidth=at(v.default_column_width));for(let P=0;P<v.columns;P++){let M={index:P};v.column_width&&v.default_column_width&&typeof v.column_width[P]=="number"&&v.column_width[P]!==v.default_column_width&&(M.width=at(v.column_width[P]));let U=v.column_style[P];typeof U=="number"&&(U=Y[U]),U&&(M.style=r.EnsureStyle(r.StyleOptionsFromProperties(U))),(M.style!==void 0||M.width!==void 0)&&(Z[P]=M)}if(Z.length)for(let P of Z)T.worksheet.cols.col=Z.map(M=>{let U={min:M.index+1,max:M.index+1};return M.style!==void 0&&(U.style=M.style),M.width!==void 0?(U.width=M.width,U.customWidth=1):U.width=at(v.default_column_width||90),{a$:U}});else delete T.worksheet.cols;J.length?T.worksheet.dataValidations={a$:{count:J.length},dataValidation:J.map(P=>{let M={a$:{type:"list",allowBlank:1,showInputMessage:1,showErrorMessage:1,sqref:new oe(P.address).spreadsheet_label}};if(P.validation.type===2){let U={id:0,type:"range",label:"",position:0,start:{...P.validation.area.start,absolute_column:!0,absolute_row:!0,id:0,label:"",position:0,type:"address"},end:{...P.validation.area.end,absolute_column:!0,absolute_row:!0,id:0,label:"",position:0,type:"address"}};typeof P.validation.area.start.sheet_id<"u"&&(U.start.sheet=i[P.validation.area.start.sheet_id]),M.formula1=this.parser.Render(U)}else P.validation.type===0&&(M.formula1=`"${P.validation.list.join(",")}"`);return M})}:delete T.worksheet.dataValidations,R.length?(T.worksheet.tableParts.a$.count=R.length,T.worksheet.tableParts.tablePart=R.map(P=>({a$:{"r:id":P.rel||""}}))):delete T.worksheet.tableParts;for(let P of R){let M={};P.totals_row_count&&(M.totalsRowCount=1);let U={a$:{count:(P.columns||[]).length},tableColumn:[]};if(P.columns)for(let ee=0;ee<P.columns.length;ee++){let re=P.columns[ee],ae=(P.footers||[])[ee],se={a$:{id:ee+1,name:re||`Column${ee+1}`}};ae&&(ae.type==="label"?se.a$.totalsRowLabel=ae.value:ae.type==="formula"&&(se.a$.totalsRowFunction="custom",se.totalsRowFormula=ae.value)),U.tableColumn.push(se)}let q={table:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"xr xr3","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr3":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision3",id:P.index||0,name:P.name,displayName:P.display_name,...M,ref:P.ref},autoFilter:{a$:{ref:P.filterRef||P.ref}},tableColumns:U,tableStyleInfo:{a$:{name:"TableStyleMedium2",showFirstColumn:0,showLastColumn:0,showRowStripes:1,showColumnStripes:0}}}},X=Te+this.xmlbuilder1.build(q);await this.zip?.file(`xl/tables/table${P.index}.xml`,X)}O.length?(T.worksheet.mergeCells.a$.count=O.length,T.worksheet.mergeCells.mergeCell=O.map(P=>({a$:{ref:P.spreadsheet_label}}))):delete T.worksheet.mergeCells,m.length?T.worksheet.hyperlinks.hyperlink=m.map(P=>({a$:{"r:id":P.rel,ref:new oe(P.address).spreadsheet_label,"xr:uid":"{0C6B7792-7EA0-4932-BF15-D49C453C565D}"}})):delete T.worksheet.hyperlinks,G.length?T.worksheet.extLst.ext["x14:sparklineGroups"]={a$:{"xmlns:xm":"http://schemas.microsoft.com/office/excel/2006/main"},"x14:sparklineGroup":G.map(P=>{let M=this.parser.Parse(P.formula),U="";if(M.expression&&M.expression.type==="call"&&M.expression.args.length>0){let X=M.expression.args[0];if(X.type==="range"||X.type==="address"){let ee=X.type==="range"?X.start:X;ee.sheet||(typeof ee.sheet_id<"u"?ee.sheet=i[ee.sheet_id]:ee.sheet=v.name),U=this.parser.Render(X)}}let q={displayEmptyCellsAs:"gap"};return/column/i.test(P.formula)&&(q.type="column"),{a$:q,"x14:colorSeries":{a$:{rgb:"FF376092"}},"x14:sparklines":{"x14:sparkline":{"xm:f":U,"xm:sqref":new oe(P.address).spreadsheet_label}}}})}:delete T.worksheet.extLst,T.worksheet.sheetData=B;let D=this.ParseCharts(v),N=this.ParseImages(v);if(D.length||N.length){let P=new Le;for(let q of D)P.AddChart(q.options,q.anchor);for(let q of N)P.AddImage(q.options,q.anchor);for(let{image:q}of P.images)await this.zip?.file(`xl/media/image${q.index}.${q.extension}`,q.options.data||"",{base64:q.options.encoding==="base64"});for(let{chart:q}of P.charts){let X=q.toJSON(),ee=Te+this.xmlbuilder1.build(X);await this.zip?.file(`xl/charts/chart${q.index}.xml`,ee),await this.WriteRels(q.relationships,`xl/charts/_rels/chart${q.index}.xml.rels`)}await this.WriteRels(P.relationships,`xl/drawings/_rels/drawing${P.index}.xml.rels`);let M=Te+this.xmlbuilder1.build(P.toJSON());await this.zip?.file(`xl/drawings/drawing${P.index}.xml`,M),l.push(P);let U=xe(z,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",`../drawings/drawing${P.index}.xml`);T.worksheet.drawing={a$:{"r:id":U}}}else delete T.worksheet.drawing;T.worksheet.dimension.a$.ref=new oe(C.start,C.end).spreadsheet_label;let k=Te+this.xmlbuilder1.build(T);await this.zip?.file(`xl/worksheets/sheet${A+1}.xml`,k),Object.keys(z).length&&this.WriteRels(z,`xl/worksheets/_rels/sheet${A+1}.xml.rels`)}await this.WriteSharedStrings(n),await this.WriteStyleCache(r);let h={};xe(h,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles","styles.xml"),xe(h,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme","theme/theme1.xml"),xe(h,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings","sharedStrings.xml");let c=e.sheet_data.map((A,v)=>xe(h,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet",`worksheets/sheet${v+1}.xml`));await this.WriteRels(h,"xl/_rels/workbook.xml.rels");let b={definedName:[]};if(e.named_ranges){let A=Object.keys(e.named_ranges);for(let v of A){let z="",W=new oe(e.named_ranges[v].start,e.named_ranges[v].end);if(W.start.absolute_column=W.start.absolute_row=!0,W.end.absolute_column=W.end.absolute_row=!0,W.start.sheet_id){for(let $ of e.sheet_data)if($.id===W.start.sheet_id){z=$.name||"";break}}z&&(ir.test(z)&&(z=`\'${z}\'`),z+="!"),b.definedName.push({a$:{name:v},t$:z+W.spreadsheet_label})}}if(e.named_expressions)for(let A of e.named_expressions)b.definedName.push({a$:{name:A.name},t$:A.expression});b.definedName.length||(b=void 0);let f={workbook:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x15 xr xr6 xr10 xr2","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr6":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision6","xmlns:xr10":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision10","xmlns:xr2":"http://schemas.microsoft.com/office/spreadsheetml/2015/revision2"},workbookPr:{a$:{defaultThemeVersion:"166925"}},bookViews:{workbookView:{a$:{activeTab:t||0}}},sheets:{sheet:e.sheet_data.map((A,v)=>{let z={name:A.name||`Sheet${v+1}`,sheetId:v+1,"r:id":c[v]};return A.visible===!1&&(z.state="hidden"),{a$:z}})},definedNames:b}},p=Te+this.xmlbuilder1.build(f);await this.zip?.file("xl/workbook.xml",p);let g={};for(let A of l)for(let v of A.images)switch(v.image.extension){case"gif":case"png":case"jpeg":g[v.image.extension]="image/"+v.image.extension;break;case"svg":g.svg="image/svg+xml";break}let _={Types:{a$:{xmlns:"http://schemas.openxmlformats.org/package/2006/content-types"},Default:[{a$:{Extension:"rels",ContentType:"application/vnd.openxmlformats-package.relationships+xml"}},{a$:{Extension:"xml",ContentType:"application/xml"}},...Object.keys(g).map(A=>({a$:{Extension:A,ContentType:g[A]}}))],Override:[{a$:{PartName:"/xl/workbook.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"}},...e.sheet_data.map((A,v)=>({a$:{ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",PartName:`/xl/worksheets/sheet${v+1}.xml`}})),...l.reduce((A,v)=>A.concat([...v.charts.map(z=>({a$:{ContentType:"application/vnd.openxmlformats-officedocument.drawingml.chart+xml",PartName:`/xl/charts/chart${z.chart.index}.xml`}})),{a$:{ContentType:"application/vnd.openxmlformats-officedocument.drawing+xml",PartName:`/xl/drawings/drawing${v.index}.xml`}}]),[]),{a$:{PartName:"/xl/theme/theme1.xml",ContentType:"application/vnd.openxmlformats-officedocument.theme+xml"}},{a$:{PartName:"/xl/styles.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"}},{a$:{PartName:"/xl/sharedStrings.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"}},...u.map(A=>({a$:{ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml",PartName:`/xl/tables/table${A.index||0}.xml`}})),{a$:{PartName:"/docProps/core.xml",ContentType:"application/vnd.openxmlformats-package.core-properties+xml"}},{a$:{PartName:"/docProps/app.xml",ContentType:"application/vnd.openxmlformats-officedocument.extended-properties+xml"}}]}},w=Te+this.xmlbuilder1.build(_);await this.zip?.file("[Content_Types].xml",w)}async AsBinaryString(e){if(!this.zip)throw new Error("missing zip");let t={type:"binarystring"};return typeof e<"u"&&(t.compression="DEFLATE",t.compressionOptions={level:e}),await this.zip.generateAsync(t)}async AsBlob(e){if(!this.zip)throw new Error("missing zip");let t={type:"blob"};return typeof e<"u"&&(t.compression="DEFLATE",t.compressionOptions={level:e}),await this.zip.generateAsync(t)}};var _i=st(Nt());var hr=st(Lt());var rt=s=>"row"in s&&"col"in s,Ee=s=>"from"in s&&"to"in s&&rt(s.from)&&rt(s.to),yt=(s,e)=>e.sheet===s.sheet&&e.row>=s.from.row&&e.row<=s.to.row&&e.col>=s.from.col&&e.col<=s.to.col,cr=(s,e=0,t=0)=>({from:{row:s.from.row+e,col:s.from.col+t,sheet:s.from.sheet},to:{row:s.to.row+e,col:s.to.col+t,sheet:s.to.sheet}});var xt=class{constructor(e={}){this.options=e;this.rels={};this.sheet_data={};this.tab_selected=!1;this.default_width=0;this.drawings=[]}TranslateAddress(e){e=e.toUpperCase();let t=e.match(/([A-Z]+\\d+):([A-Z]+\\d+)/);if(t)return{from:this.TranslateAddress(t[1]),to:this.TranslateAddress(t[2])};let i=0,n=0;if(t=e.match(/^([A-Z]+)(\\d+)$/),t){i=Number(t[2]),n=0;let r=t[1].length;for(let a=0;a<r;a++){let o=t[1].charCodeAt(a)-64;n=n*26+o}}return{row:i,col:n}}Address(e,t=!1){if(Ee(e))return this.Address(e.from,t)+":"+this.Address(e.to,t);let i="",n=e.col;for(;n>0;){let a=(n-1)%26+1;i=String.fromCharCode(64+a)+i,n=(n-a)/26}let r=e.sheet?`\'${e.sheet}\'!`:"";return t?`${r}$${i}$${e.row}`:r+i+e.row}NormalizeAddress(e){let t,i;return typeof e=="string"?(t=e.toUpperCase(),i=this.TranslateAddress(t)):(i=e,t=this.Address(i)),{a:t,rc:i}}Parse(){let e=this.sheet_data.worksheet?.dimension?.a$?.ref,t=this.TranslateAddress(e||"");Ee(t)?this.extent=JSON.parse(JSON.stringify(t)):this.extent={from:JSON.parse(JSON.stringify(t)),to:JSON.parse(JSON.stringify(t))}}};var ws=new hr.XMLParser(Hr),Re=new hr.XMLParser(ct);var wt=class{constructor(e){this.zip=e;this.xml={};this.shared_strings=new Ge;this.style_cache=new Be;this.theme=new Ie;this.defined_names={};this.rels={};this.sheets=[];this.active_tab=0}get sheet_count(){return this.sheets.length}async ReadRels(e){let t={},i=await this.zip.file(e)?.async("text"),n=Re.parse(i||"");for(let r of n.Relationships?.Relationship||[]){let a=r.a$.Id;t[a]={id:a,type:r.a$.Type,target:r.a$.Target}}return t}async Init(){this.rels=await this.ReadRels("xl/_rels/workbook.xml.rels");let e=await this.zip.file("xl/sharedStrings.xml")?.async("text"),t=Re.parse(e||"");this.shared_strings.FromXML(t),e=await this.zip.file("xl/theme/theme1.xml")?.async("text"),t=Re.parse(e),this.theme.FromXML(t),e=await this.zip.file("xl/styles.xml")?.async("text"),t=Re.parse(e),this.style_cache.FromXML(t,this.theme),console.info({c:this.style_cache}),e=await this.zip.file("xl/workbook.xml")?.async("text"),t=Re.parse(e),this.defined_names={};let i=ne.FindAll(t,"workbook/definedNames/definedName");for(let a of i){let o=a.a$?.name,l=a.t$||"";o&&l&&(this.defined_names[o]=l)}let n=ne.FindAll(t,"workbook/bookViews/workbookView");n[0]?.a$?.activeTab&&(this.active_tab=Number(n[0].a$.activeTab)||0);let r=ne.FindAll(t,"workbook/sheets/sheet");for(let a of r){let o=a.a$?.name;if(o){let l=a.a$.state,u=a.a$["r:id"],h=new xt({name:o,rid:u,id:Number(a.a$.sheetId)});l==="hidden"?h.visible_state=1:l==="veryHidden"&&(h.visible_state=2),h.shared_strings=this.shared_strings,h.path=`xl/${this.rels[u].target}`,h.rels_path=h.path.replace("worksheets","worksheets/_rels")+".rels",e=await this.zip.file(h.path)?.async("text"),h.sheet_data=Re.parse(e||""),h.rels=await this.ReadRels(h.rels_path),h.Parse(),this.sheets.push(h)}}}async ReadTable(e){let t=await this.zip.file(e.replace(/^../,"xl"))?.async("text");if(!t)return;let i=Re.parse(t),n=i.table?.a$?.name||"";return{name:n,display_name:i.table?.a$?.displayName||n,ref:i.table?.a$.ref||"",totals_row_shown:Number(i.table?.a$.totalsRowShown||"0")||0,totals_row_count:Number(i.table?.a$.totalsRowCount||"0")||0}}async ReadDrawing(e){let t=await this.zip.file(e.replace(/^../,"xl"))?.async("text");if(!t)return;let i=Re.parse(t),n=await this.ReadRels(e.replace(/^..\\/drawings/,"xl/drawings/_rels")+".rels"),r=[],a=ne.FindAll(i,"xdr:wsDr/xdr:twoCellAnchor"),o=(l={})=>({column:l["xdr:col"]||0,column_offset:l["xdr:colOff"]||0,row:l["xdr:row"]||0,row_offset:l["xdr:rowOff"]||0});for(let l of a){let h={anchor:{from:o(l["xdr:from"]),to:o(l["xdr:to"])}},c=ne.FindAll(l,"xdr:graphicFrame/a:graphic/a:graphicData/c:chart")[0];if(c&&c.a$&&c.a$["r:id"]){let b=n[c.a$["r:id"]];b&&b.target&&(h.chart=await this.ReadChart(b.target))}r.push(h)}return r}async ReadChart(e){let t=await this.zip.file(e.replace(/^../,"xl"))?.async("text");if(!t)return;let i=ws.parse(t),n={type:0},r=ne.FindChild(i,"c:chartSpace/c:chart/c:title");if(r){let l=ne.FindChild(r,"c:tx/c:strRef/c:f");if(l)typeof l=="string"?n.title=l:l.text__&&(n.title=l.text__);else{let u=ne.FindAll(r,"c:tx/c:rich/a:p/a:r/a:t");n.title=\'"\'+u.join("")+\'"\'}}let a=(l,u=!1)=>{let h=[],c=l["c:ser"]||[];Array.isArray(c)||(c=[c]);for(let b of c){let f=h.length,p=b["c:order"];p&&(f=Number(p.__val||0)||0);let g={},_=ne.FindChild(b,"c:tx/c:v");if(_){let w=_;w&&(g.title=`"${w}"`)}else _=ne.FindChild(b,"c:tx/c:strRef/c:f"),_&&(g.title=_);if(u){let w=ne.FindChild(b,"c:xVal/c:numRef/c:f");w&&(g.categories=w);let A=ne.FindChild(b,"c:yVal/c:numRef/c:f");A&&(g.values=A)}else{let w=ne.FindChild(b,"c:val/c:numRef/c:f");w&&(g.values=w);let A=ne.FindChild(b,"c:cat/c:strRef/c:f");A||(A=ne.FindChild(b,"c:cat/c:numRef/c:f")),A&&(g.categories=A)}h[f]=g}return h},o=ne.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:barChart");return o&&(n.type=2,o["c:barDir"]&&o["c:barDir"].__val==="col"&&(n.type=1),n.series=a(o)),o||(o=ne.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:lineChart"),o&&(n.type=3,n.series=a(o))),o||(o=ne.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:doughnutChart"),o&&(n.type=5,n.series=a(o))),o||(o=ne.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:pieChart"),o&&(n.type=6,n.series=a(o))),o||(o=ne.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:scatterChart"),o&&(n.type=4,n.series=a(o,!0))),n}GetNamedRanges(){return this.defined_names}};var vt=class{constructor(){this.parser=new Ue}async Init(e){typeof e=="string"?this.archive=await(0,_i.default)().loadAsync(e):this.archive=e,this.archive&&(this.workbook=new wt(this.archive),await this.workbook.Init())}SheetCount(){return this.workbook?.sheet_count||0}ParseCell(e,t,i,n,r,a,o){let l=t.a$?.r;if(!l){console.warn("cell missing address");return}let u=e.TranslateAddress(l);if(Ee(u)){console.warn("cell has range address");return}let h,c=0,b,f=0;if(t.a$?.t&&t.a$.t==="s"){if(c=2,typeof t.v!==void 0){let _=Number(t.v);!isNaN(_)&&e.shared_strings&&(h=e.shared_strings.Get(_)||"",h[0]==="="&&(h="\'"+h))}}else if(typeof t.f<"u"){c=1;let _=(typeof t.f=="string"?t.f:t.f.t$)||"";if(_){h="="+_.replace(/^_xll\\./g,"");let w=this.parser.Parse(_);w.expression&&(this.parser.Walk(w.expression,A=>(A.type==="call"&&/^_xll\\./.test(A.name)&&(A.name=A.name.substr(5)),!0)),h="="+this.parser.Render(w.expression,{missing:""})),typeof t.f!="string"&&t.f.a$?.t==="shared"&&t.f.a$.si&&(i[t.f.a$.si]={row:u.row-1,column:u.col-1,formula:h,parse_result:this.parser.Parse(h)})}else if(typeof t.f!="string"&&t.f.a$?.t==="shared"&&t.f.a$.si){let w=i[t.f.a$.si];w&&(w.parse_result.expression?h="="+this.parser.Render(w.parse_result.expression,{offset:{rows:u.row-1-w.row,columns:u.col-1-w.column},missing:""}):h=w.formula)}if(typeof t.f!="string"&&t.f.a$?.t==="array"){let w=e.TranslateAddress(t.f.a$.ref||"");Ee(w)&&n.push(cr(w,-1,-1))}if(typeof t.v<"u"){let w=Number(t.v.toString());isNaN(w)?(f=2,b=t.v.toString()):(f=3,b=w)}}else if(typeof t.v<"u"){let _=Number(t.v.toString());isNaN(_)?(c=2,h=t.v.toString()):(c=3,h=_)}let p={row:u.row-1,col:u.col-1};for(let _ of n)yt(_,p)&&(p.row!==_.from.row||p.col!==_.from.col)&&(f=c,b=h,h=void 0,c=0);let g={row:p.row,column:p.col,value:h,type:c};typeof b<"u"&&(g.calculated_type=f,g.calculated=b),t.a$?.s&&(g.style_ref=Number(t.a$.s));for(let _ of a)_.address.row===u.row&&_.address.col===u.col&&(g.hyperlink=_.reference);for(let _ of o)if(_.address.row===p.row&&_.address.column===p.col){g.validation=_.validation;break}for(let _ of r)yt(_,p)&&(g.merge_area={start:{row:_.from.row,column:_.from.col},end:{row:_.to.row,column:_.to.col}});for(let _ of n)yt(_,p)&&(g.area={start:{row:_.from.row,column:_.from.col},end:{row:_.to.row,column:_.to.col}});return g}async GetSheet(e=0){if(!this.workbook)throw new Error("missing workbook");let t=this.workbook.sheets[e],i=[],n={},r=[],a=[],o=[],l=[],u=[],h=ne.FindAll.bind(ne,t.sheet_data),c=h("worksheet/mergeCells/mergeCell");for(let O of c)if(O.a$.ref){let R=t.TranslateAddress(O.a$.ref);Ee(R)&&a.push(cr(R,-1,-1))}let b=h("worksheet/dataValidations/dataValidation");for(let O of b){let R=O.a$?.type,J=O.a$?.sqref,Z=O.formula1;if(J&&Z&&R==="list"){let D,N,k=this.parser.Parse(J);k.expression&&(k.expression.type==="address"?D=k.expression:k.expression.type==="range"&&(D=k.expression.start)),k=this.parser.Parse(Z),k.expression&&(k.expression.type==="range"?N={type:2,area:k.expression}:k.expression.type==="literal"&&(N={type:0,list:k.expression.value.toString().split(/,/).map(P=>{let M=this.parser.Parse(P);if(M.expression?.type==="group"&&/\\s/.test(P))return P;if(M.expression?.type==="literal")return M.expression.value;if(M.expression?.type==="identifier")return M.expression.name})})),D&&N&&l.push({address:D,validation:N})}}let f=h("worksheet/hyperlinks/hyperlink");for(let O of f){let R=t.TranslateAddress(O.a$?.ref||"");Ee(R)&&(R=R.from);let J="",Z="";if(O.a$&&O.a$["r:id"]){J="remote link";let D=t.rels[O.a$["r:id"]];D&&(Z=D.target||"")}else Z=O.__location||"",J=O.__display||"";o.push({address:R,reference:Z,text:J})}let p=21,g=100,_=t.sheet_data.worksheet?.sheetFormatPr;if(_){if(_.a$?.defaultColWidth){let O=Number(_.a$.defaultColWidth);isNaN(O)||(g=kt(O))}if(_.a$?.defaultRowHeight){let O=Number(_.a$.defaultRowHeight);isNaN(O)||(p=Math.round(O*4/3))}}let w=[],A=[],v=h("worksheet/sheetData/row");for(let O of v){let R=O.a$?.r?Number(O.a$.r):1,J=p;if(O.a$?.ht){let D=Number(O.a$.ht);isNaN(D)||(J=Math.round(D*4/3))}if(O.a$?.outlineLevel){let D=Number(O.a$.outlineLevel);isNaN(D)||(A[R-1]=D)}J!==p&&(w[R-1]=J);let Z=O.c||[];Array.isArray(Z)||(Z=[Z]);for(let D of Z){let N=this.ParseCell(t,D,n,r,a,o,l);N&&i.push(N)}}let z=[],W=-1,$=[],T=h("worksheet/cols/col");for(let O of T){let R=Number(O.a$?.min),J=Number(O.a$?.max);if(O.a$?.style){let Z=Number(O.a$.style);if(!isNaN(R)&&!isNaN(J)&&!isNaN(Z))if(t.extent&&J>=t.extent.to.col||J-R>100)W=Z;else for(let D=R;D<=J;D++)z[D]=Z}if(O.a$?.customWidth){let Z=Number(O.a$.width);if(!isNaN(R)&&!isNaN(J)&&!isNaN(Z)&&J!==16384){Z=kt(Z);for(let D=R;D<=J;D++)$[D-1]=Z}}}let Y=h("worksheet/tableParts/tablePart");for(let O of Y){let R=O.a$?O.a$["r:id"]:void 0;if(R){let J="",Z=t.rels[R];if(Z){J=Z.target||"";let D=await this.workbook.ReadTable(J);if(D){let N=t.TranslateAddress(D.ref),k=rt(N)?{start:{row:N.row-1,column:N.col-1},end:{row:N.row-1,column:N.col-1}}:{start:{row:N.from.row-1,column:N.from.col-1},end:{row:N.to.row-1,column:N.to.col-1}};for(let P of i)if(P.row===k.start.row&&P.column===k.start.column){P.table={area:k,name:D.name,totals_row:!!D.totals_row_count};break}}}}}let K=h("worksheet/drawing"),C=[];for(let O of K){let R=O.a$?O.a$["r:id"]:void 0;if(R){let J="",Z=t.rels[R];if(Z&&(J=Z.target||""),J){let D=await this.workbook.ReadDrawing(J);D&&D.length&&C.push(...D)}}}let B=O=>{let R={address:{row:O.row,column:O.column},offset:{x:0,y:0}};if(O.row_offset){let J=w[O.row];J===void 0&&(J=p),R.offset.y=O.row_offset/9525/J}if(O.column_offset){let J=$[O.column];J===void 0&&(J=g),R.offset.x=O.column_offset/9525/J}return R};for(let O of C)if(O&&O.chart){let R={tl:B(O.anchor.from),br:B(O.anchor.to)},J,Z=[],D="",N=O.chart?.series;switch(O.chart.type){case 4:J="treb-chart",D="Scatter.Line",N&&N.length&&(Z[0]=`Group(${N.map(P=>`Series(${P.title||""},${P.categories||""},${P.values||""})`||"").join(", ")})`),Z[1]=O.chart.title;break;case 5:case 6:D=O.chart.type===5?"Donut.Chart":"Pie.Chart",J="treb-chart",N&&N[0]&&(Z[0]=N[0].values,Z[1]=N[0]?.categories||""),Z[2]=O.chart.title;break;case 2:case 1:case 3:switch(Z[2]=O.chart.title,J="treb-chart",O.chart.type){case 2:D="Bar.Chart";break;case 1:D="Column.Chart";break;default:D="Line.Chart"}N&&(N.length>1?Z[0]=`Group(${N.map(P=>`Series(${P.title||""},,${P.values||""})`||"").join(", ")})`:N.length===1&&(N[0].title?Z[0]=`Series(${N[0].title||""},,${N[0].values||""})`:Z[0]=N[0].values),Z[1]=N[0]?.categories||"");break}let k=`=${D}(${Z.join(", ")})`;J&&k&&u.push({layout:R,type:J,formula:k})}let m=h("worksheet/extLst/ext");for(let O of m){let R="";for(let Z of Object.keys(O?.a$||{})){let D=Z.match(/^xmlns:(.*)$/);if(D){R=D[1];break}}let J=ne.FindAll(O,`${R}:sparklineGroups/${R}:sparklineGroup`);for(let Z of J){let D="Sparkline.line",N="",k="";Z.a$?.type==="column"&&(D="Sparkline.column");let P=ne.FindAll(Z,`${R}:sparklines/${R}:sparkline`);for(let M of P)for(let U of Object.keys(M))/:f$/.test(U)?k=M[U]:/:sqref$/.test(U)&&(N=M[U]);if(k&&N){let M=`=${D}(${k})`,U=t.TranslateAddress(N);if(rt(U)){let q={row:U.row-1,column:U.col-1,value:M,type:1},X=!1;for(let ee of i)if(ee.row===q.row&&ee.column===q.column){X=!0,ee.type=1,ee.value=M;break}X||i.push(q)}}}}let G={name:t.options.name,cells:i,default_column_width:g,column_widths:$,row_heights:w,annotations:u,styles:this.workbook?.style_cache?.CellXfToStyles()||[]};return A.length&&(G.outline=A),(t.visible_state===1||t.visible_state===2)&&(G.hidden=!0),W>=0&&(G.sheet_style=W),z.length&&(G.column_styles=z),G}};var At=self,dr=new bt,vs=async s=>{if(s.sheet){await dr.Init(s.decorated||[]),await dr.Export(s.sheet);let e=await dr.AsBlob(1),t=e.slice(0,e.size,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");At.postMessage({status:"complete",blob:t})}},As=async s=>{let e=new vt;try{await e.Init(s.data);let t=e.SheetCount(),i={sheets:[],names:e.workbook?.GetNamedRanges(),active_tab:e.workbook?.active_tab};for(let n=0;n<t;n++){let r=await e.GetSheet(n);r&&i.sheets.push(r)}At.postMessage({status:"complete",results:i})}catch(t){console.warn("error importing xlsx file"),console.info(t),At.postMessage({status:"error",data:t})}};At.addEventListener("message",s=>{s.data&&s.data.command==="export"?vs(s.data):s.data&&s.data.command==="import"&&As(s.data)});\n/*! Bundled license information:\n\njszip/dist/jszip.min.js:\n (*!\n \n JSZip v3.10.1 - A JavaScript class for generating and reading zip files\n <http://stuartk.com/jszip>\n \n (c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\n Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n \n JSZip uses the library pako released under the MIT license :\n https://github.com/nodeca/pako/blob/main/LICENSE\n *)\n*/\n';var vt=class{constructor(e){this.loaded=!1;this.document_styles={number_formats:[],colors:[],theme_colors:[]};this.selection_state={};this.events=new oe;this.calculation=0;this.file_version=0;this.last_save_version=0;this.file_chooser_operation=0;this.views=[];this.focus_target=this;this.undo_pointer=0;this.undo_stack=[];e.storage_key&&!e.local_storage&&(e.local_storage=e.storage_key),this.options={...Qi,...e,local_storage:this.ResolveStorageKey(e.local_storage,"document")},typeof this.options.imaginary_value=="string"&&(Y.imaginary_character=this.options.imaginary_value),this.options.network_document&&(console.warn("the option `network_document` is deprecated. please use `document` instead."),this.options.document||(this.options.document=this.options.network_document)),this.options.document&&this.options.inline_document&&console.warn("both document and inline-document are provided");let t=this.options.document,r,i;this.options.local_storage&&!this.options.toll_initial_load&&!e.model&&(r=localStorage.getItem(this.options.local_storage)||void 0,r&&(i="local-storage")),!r&&!this.options.toll_initial_load&&!e.model&&e.inline_document&&(r=e.inline_document,i="inline-document"),this.options.local_storage&&!e.model&&window.addEventListener("beforeunload",()=>{this.options.local_storage&&this.SaveLocalStorage(this.options.local_storage)});let s;typeof this.options.container=="string"?s=document.querySelector(this.options.container):this.options.container&&(s=this.options.container);let n={insert_function_button:!1,in_cell_editor:!0,repaint_on_cell_change:!1,scrollbars:this.options.scrollbars,markdown:!!this.options.markdown,formula_bar:this.options.formula_bar,expand_formula_button:this.options.expand_formula_button,tab_bar:this.options.tab_bar,add_tab:this.options.add_tab,expand:this.options.expand};if(this.options.scale&&(n.initial_scale=this.options.scale),this.options.stats&&(n.stats=this.options.stats,n.tab_bar=!0),this.options.scale_control&&(n.scale_control=!0,n.tab_bar=!0,this.options.persist_scale&&(n.persist_scale_key=this.ResolveStorageKey(this.options.persist_scale,"scale"),n.persist_scale_key))){let a=localStorage.getItem(n.persist_scale_key);if(a)try{let o=JSON.parse(a);n.initial_scale=o.scale||1}catch{console.warn("parsing persisted scale failed")}}if(e.model?(this.model=e.model.model,this.calculator=e.model.calculator):(this.model=new bt,this.model.sheets.Add(O.Blank(this.model.theme_style_properties)),this.calculator=this.CreateCalculator(this.model,e)),this.grid=new ft(n,this.parser,this.model,void 0,!!s),this.options.headless&&(this.grid.headless=!0),s){this.parent_view||(q.is_windows?s.parentElement?.classList.add("treb-ua-windows"):q.is_mac&&s.parentElement?.classList.add("treb-ua-osx"));let a=s.querySelector(".treb-view-template");this.view=a.content.firstElementChild?.cloneNode(!0),s.prepend(this.view),this.view.addEventListener("focusin",()=>{this.focus_target!==this&&(this.Publish({type:"focus-view"}),this.focus_target=this)}),this.key_listener=l=>this.HandleKeyDown(l),s.addEventListener("keydown",this.key_listener);let o=!!(r||this.options.document);this.grid.Initialize(this.view,o),this.options.dnd&&(this.view.addEventListener("dragenter",l=>this.HandleDrag(l)),this.view.addEventListener("dragover",l=>this.HandleDrag(l)),this.view.addEventListener("drop",l=>this.HandleDrop(l))),this.grid.grid_events.Subscribe(l=>{switch(l.type){case"error":this.dialog?.ShowDialog({type:"error",...this.TranslateGridError(l.code),timeout:3e3,close_box:!0});break;case"selection":this.UpdateSelection(l.selection),this.UpdateSelectionStyle(l.selection);break;case"sheet-change":this.OnSheetChange(l),this.UpdateSelectionStyle();break;case"data":{let c=this.last_selection;(this.calculation===0?this.Recalculate(l):Promise.resolve()).then(()=>{this.DocumentChange(c)})}break;case"style":this.DocumentChange(),this.UpdateDocumentStyles(!1),this.UpdateSelectionStyle();break;case"scale":this.RebuildAllAnnotations();break;case"annotation":if(l.annotation){let c=l.annotation.view[this.grid.view_index]||{};switch(this.DocumentChange(),l.event){case"create":this.InflateAnnotation(l.annotation),this.calculator.UpdateAnnotations(l.annotation,this.grid.active_sheet),this.grid.AnnotationUpdated(l.annotation);break;case"delete":this.calculator.RemoveAnnotation(l.annotation);break;case"update":c.update_callback?(c.update_callback(),this.grid.AnnotationUpdated(l.annotation)):console.info("annotation update event without update callback"),this.calculator.UpdateAnnotations(l.annotation,this.grid.active_sheet);break;case"resize":c.resize_callback&&(c.resize_callback(),this.grid.AnnotationUpdated(l.annotation));break}}else console.info("annotation event without annotation");break;case"structure":{let c=this.last_selection;l.rebuild_required?(this.calculator.Reset(),(this.calculation===0?this.Recalculate(l):Promise.resolve()).then(()=>{this.DocumentChange(c)})):this.DocumentChange(c)}this.UpdateSelectionStyle();break;case"cell-event":this.HandleCellEvent(l);break}}),this.options.prompt_save&&window.addEventListener("beforeunload",l=>{this.last_save_version!==this.file_version&&(l.preventDefault(),l.returnValue="")})}else vt.one_time_warnings.headless||(vt.one_time_warnings.headless=!0,console.info("not initializing layout; don't call UI functions"));if(r?(typeof r=="string"&&(r=JSON.parse(r)),r&&this.LoadDocument(r,{recalculate:!!this.options.recalculate,source:i})):t||this.calculator.RebuildClean(!0),this.FlushUndo(),this.grid.ShowHeaders(this.options.headers),this.options.scroll&&!this.options.document){let a=this.options.scroll;requestAnimationFrame(()=>{this.ScrollTo(a)})}this.UpdateAC(),this.options.global_name&&(self[this.options.global_name]=this),s&&this.options.spinner&&(this.spinner=new tr(s)),t&&!e.model&&!r&&this.LoadNetworkDocument(t,this.options),s&&(this.dialog=new er(s))}get Localization(){return R}get parser(){return this.calculator.parser}get modified(){return this.undo_stack.length!==1}get document_name(){return this.grid.model.document_name}set document_name(e){this.grid.model.document_name=e,this.DocumentChange()}get user_data(){return this.grid.model.user_data}set user_data(e){this.grid.model.user_data=e,this.DocumentChange()}get scale(){return this.grid.scale}set scale(e){this.grid.scale=e}get headless(){return this.grid.headless}set headless(e){this.grid.headless!==e&&(this.grid.headless=e,e||(this.grid.Update(!0),this.RebuildAllAnnotations()))}get state(){return this.file_version}get dirty(){return this.file_version!==this.last_save_version}static BuildPath(){let e=typeof document>"u"?[]:document.querySelectorAll("script"),t=process.env.BUILD_ENTRY_MAIN||"",r=new RegExp(t);for(let i=0;i<e.length;i++){let n=e[i].src;if(n&&r.test(n)){n&&/\?.*?engine/i.test(n)&&(this.enable_engine=!0),n&&/\?.*?format/i.test(n)&&(this.enable_formatter=!0),this.treb_embedded_script_path=n,this.treb_base_path=n.replace(new RegExp(t+".*$"),"");return}}r=new RegExp(`import.*?from.*?['"](.*?${t}.*?)['"]`);for(let i=0;i<e.length;i++){let s=e[i];if(!s.src){let a=(s.textContent||"").match(r);if(a){let o=a[1];this.treb_embedded_script_path=o,this.treb_base_path=o.replace(new RegExp(t+".*$"),"");return}}}}UpdateAC(){let e=this.calculator.SupportedFunctions();if(this.language_model){let t={};for(let r of this.language_model.functions||[])t[r.base.toUpperCase()]=r;e=e.map(r=>t[r.name.toUpperCase()]||r)}this.grid.SetAutocompleteFunctions(e)}CreateCalculator(e,t){return new Kt(e,{complex_numbers:t.complex})}TranslateGridError(e){switch(e){case 0:return{message:"No error"};case 2:return{message:"You can't change part of an array"};case 5:return{message:"Invalid area for paste"};case 4:return{message:"Invalid area for table"};case 3:return{message:"Invalid value (data validation)"};default:return{message:`Unknown error (${e})`}}}CreateView(){let e=new vt({...this.options,global_name:void 0,model:this});return e.parent_view=this,e}Unsplit(){let e=this.views.pop();if(e){let t=e.view;t.grid.grid_events.CancelAll(),t.events.CancelAll(),t.view?.parentElement&&(t.key_listener&&t.view.parentElement.removeEventListener("keydown",t.key_listener),t.view.parentElement.removeChild(t.view)),this.view?.focus(),this.Resize()}}Split(){let e=this.CreateView();e.grid.EnsureActiveSheet(!0),e.view?.addEventListener("focusin",()=>{this.focus_target!==e&&(this.Publish({type:"focus-view"}),this.focus_target=e)}),e.grid.grid_events.Subscribe(r=>{r.type==="structure"&&(this.grid.EnsureActiveSheet(),this.grid.UpdateLayout(),this.grid.tab_bar?.Update())}),e.Subscribe(r=>{switch(r.type){case"selection":break;default:e.UpdateAnnotations(),this.grid.Update(!0)}}),this.grid.grid_events.Subscribe(r=>{r.type==="structure"&&(e.grid.EnsureActiveSheet(),e.grid.UpdateLayout(),e.grid.tab_bar?.Update())});let t=this.Subscribe(r=>{switch(r.type){case"selection":break;case"load":case"reset":e.grid.EnsureActiveSheet(!0),e.UpdateAnnotations(),e.grid.Update(!0);break;default:e.UpdateAnnotations(),e.grid.Update(!0)}});this.views.push({view:e,subscription:t})}HandleToolbarMessage(e){if(this.focus_target!==this){this.focus_target.HandleToolbarMessage(e);return}let t={},r=i=>{let s=this.grid.GetSelection();if(s&&!s.empty){let n=s.area.spreadsheet_label;this.InsertAnnotation(`=${i}(${n},,"${n}")`,void 0,void 0,",")}};if(/^border-/.test(e.command))if(e.command==="border-color")try{t.border_top_fill=t.border_bottom_fill=t.border_left_fill=t.border_right_fill=e.color||{}}catch(i){console.error(i)}else{let i=1,s=e.command.substring(7);e.command==="border-double-bottom"&&(s="bottom",i=2),this.grid.ApplyBorders2(void 0,s,e.color||{},i)}else switch(e.command){case"about":this.About();break;case"number-format":t.number_format=e.format||"General";break;case"font-scale":{let i=this.grid.GetSelection(),s=this.grid.active_sheet.RealArea(i.area),n=Number(e.scale||1);if(n&&!isNaN(n)){this.grid.ApplyStyle(void 0,{font_size:{unit:"em",value:n}},!0);let a=[];for(let o=s.start.row;o<=s.end.row;o++)a.push(o);this.selection_state?.merge||this.grid.SetRowHeight(a,void 0,!1)}}break;case"update-comment":this.SetNote(void 0,e.comment||"");break;case"clear-comment":this.SetNote(void 0,"");break;case"text-color":case"fill-color":try{let i=e.color||{};e.command==="text-color"?t.text=i:e.command==="fill-color"&&(t.fill=i)}catch(i){console.error(i)}break;case"insert-table":this.InsertTable();break;case"remove-table":this.RemoveTable();break;case"insert-row":this.InsertRows();break;case"insert-column":this.InsertColumns();break;case"delete-row":this.DeleteRows();break;case"delete-column":this.DeleteColumns();break;case"insert-sheet":this.grid.InsertSheet();break;case"delete-sheet":this.grid.DeleteSheet();break;case"freeze-panes":{let i=this.grid.GetFreeze();i.rows||i.columns?this.Freeze(0,0):this.FreezeSelection()}break;case"insert-image":this.InsertImage();break;case"insert-donut-chart":r("Donut.Chart");break;case"insert-column-chart":r("Column.Chart");break;case"insert-bar-chart":r("Bar.Chart");break;case"insert-line-chart":r("Line.Chart");break;case"increase-precision":case"decrease-precision":if(this.selection_state?.style){let i=M.Get(this.selection_state.style.number_format||"General");if(i.date_format)break;let s=new Y(i.pattern);if(i.magic_decimal){let n=0,a=this.GetRange();Array.isArray(a)||(a=[[a]]);e:for(let o=0;o<a.length;o++)for(let l=0;l<a[o].length;l++){let c=a[o][l];if(typeof c<"u"&&ye(c)){let h=M.Get(this.selection_state.style.number_format||"General",!0),u=h.BaseFormat(c.real),m=h.BaseFormat(c.imaginary);u.parts&&typeof u.parts[1]=="string"&&(n=u.parts[1].length),m.parts&&typeof m.parts[1]=="string"&&(n=Math.max(n,m.parts[1].length));break e}else if(typeof c=="number"){let h=i.BaseFormat(c);h.parts&&typeof h.parts[1]=="string"&&(n=h.parts[1].length);break e}}e.command==="increase-precision"?s.SetDecimal(n+1):s.SetDecimal(Math.max(0,n-1))}else e.command==="increase-precision"?s.IncreaseDecimal():s.DecreaseDecimal();t.number_format=s.toString()}break;case"merge-cells":this.grid.MergeCells();break;case"unmerge-cells":this.grid.UnmergeCells();break;case"lock-cells":t={locked:this.selection_state?.style?!this.selection_state.style.locked:!0};break;case"wrap-text":t={wrap:this.selection_state?.style?!this.selection_state?.style.wrap:!0};break;case"justify-left":t={horizontal_align:k.HorizontalAlign.Left};break;case"justify-center":t={horizontal_align:k.HorizontalAlign.Center};break;case"justify-right":t={horizontal_align:k.HorizontalAlign.Right};break;case"align-top":t={vertical_align:k.VerticalAlign.Top};break;case"align-middle":t={vertical_align:k.VerticalAlign.Middle};break;case"align-bottom":t={vertical_align:k.VerticalAlign.Bottom};break;case"reset":this.Reset();break;case"import-file":this.LoadLocalFile();break;case"save-json":this.SaveToDesktop();break;case"save-csv":this.SaveToDesktop("csv");break;case"export-xlsx":this.Export();break;case"revert":this.Revert();break;case"recalculate":this.Recalculate();break;case"toggle-toolbar":case"show-toolbar":case"hide-toolbar":this.ShowToolbar(e.command==="toggle-toolbar"?void 0:e.command==="show-toolbar");break;case"toggle-sidebar":case"show-sidebar":case"hide-sidebar":this.ShowSidebar(e.command==="toggle-sidebar"?void 0:e.command==="show-sidebar");break;default:console.info("unhandled",e.command);break}Object.keys(t).length&&this.grid.ApplyStyle(void 0,t,!0),this.Focus()}ShowToolbar(e){if(this.options.toolbar&&this.options.container instanceof HTMLElement){let t=this.options.container.parentElement;t&&(e===void 0&&(e=!t.hasAttribute("toolbar")),e?t.setAttribute("toolbar",""):t.removeAttribute("toolbar"))}}ShowSidebar(e){if(this.options.toolbar&&this.options.container instanceof HTMLElement){let t=this.options.container.parentElement;t&&(e===void 0&&(e=t.hasAttribute("collapsed")),e?t.removeAttribute("collapsed"):t.setAttribute("collapsed",""))}}CreateChart(){return this.calculator.RegisterLibrary("treb-charts",Yr)&&this.UpdateAC(),new et}SetLanguage(e){if(this.language_model=e,!e)this.grid.SetLanguageMap();else{let t={};for(let r of e.functions||[])t[r.base]=r.name;this.grid.SetLanguageMap(t)}this.UpdateAC()}async Batch(e,t=!1){let r=this.last_selection,i=this.grid.Batch(e,t),s=!1,n=!1;for(let a of i)a.type==="data"?s=!0:a.type==="structure"&&a.rebuild_required&&(n=!0);n&&this.calculator.Reset(),(s||n)&&(await this.Recalculate(),this.DocumentChange(r))}Freeze(e=0,t=0){this.grid.Freeze(e,t,!0)}FreezeSelection(){let e=this.grid.GetSelection();if(e.empty)this.grid.Freeze(0,0);else{let t=e.area;t.entire_sheet||(t.entire_row?this.grid.Freeze(t.end.row+1,0):t.entire_column?this.grid.Freeze(0,t.end.column+1):this.grid.Freeze(t.end.row+1,t.end.column+1))}}GetFreeze(){return this.grid.GetFreeze()}UpdateTheme(){this.grid.UpdateTheme(void 0),this.UpdateDocumentStyles()}GetSheetID(e){if(typeof e=="number"){let t=this.grid.model.sheets.list[e];if(t)return t.id}else{let t=this.model.sheets.Find(e);if(t)return t.id}}InsertTable(e,t={}){let r=e?this.calculator.ResolveArea(e,this.grid.active_sheet):this.GetSelectionReference().area,i=t.theme;typeof i=="number"&&(i=Ct(i)),this.grid.InsertTable(r,t.totals_row,t.sortable,i)}RemoveTable(e){let t=this.ResolveTable(e||this.GetSelectionReference().target);t&&this.grid.RemoveTable(t)}UpdateTableStyle(e,t=4){let r=this.ResolveTable(e||this.GetSelectionReference().target);r&&(typeof t=="number"&&(t=Ct(t)),r.theme=t,this.grid.active_sheet.FlushCellStyles(),this.grid.Update(!0),this.PushUndo())}AddSheet(e){this.grid.AddSheet(e);let t=this.model.sheets.list[this.model.sheets.list.length-1];return this.calculator.Reset(),t.id}InsertAnnotation(e,t="treb-chart",r,i){let s;if(r&&(s=U.IsRectangle(r)?r:this.calculator.ResolveArea(r,this.grid.active_sheet)),i&&i!==this.parser.argument_separator){let c={argument_separator:this.parser.argument_separator,decimal_mark:this.parser.decimal_mark};i===","?(this.parser.argument_separator=",",this.parser.decimal_mark="."):(this.parser.argument_separator=";",this.parser.decimal_mark=",");let h=this.parser.Parse(e);this.parser.argument_separator=c.argument_separator,this.parser.decimal_mark=c.decimal_mark,h.expression&&(e="="+this.parser.Render(h.expression,{missing:""}))}let{x:n,y:a}=this.grid.GetScrollOffset(),o=this.grid.scale||1,l={width:301,height:301};this.grid.CreateAnnotation({type:t,formula:e},void 0,void 0,s||{top:a/o+30,left:n/o+30,...l})}InsertImage(){this.SelectFile2(".png, .jpg, .jpeg, .gif, .svg",2)}RenameSheet(e,t){let r;typeof e=="number"?r=this.grid.model.sheets.list[e]:typeof e=="string"?r=this.model.sheets.Find(e):r=this.grid.active_sheet,r&&this.grid.RenameSheet(r,t)}DeleteSheet(e){if(typeof e=="string"){let t=this.model.sheets.Find(e);t&&this.grid.DeleteSheetID(t.id)}else this.grid.DeleteSheet(e);this.calculator.Reset()}HideSheet(e=0,t=!0){this.grid.ShowSheet(e,!t)}ShowSheet(e=0,t=!0){this.grid.ShowSheet(e,t)}ActivateSheet(e){this.grid.ActivateSheet(e)}SetColumnWidth(e,t){this.grid.SetColumnWidth(e,t)}SetRowHeight(e,t){this.grid.SetRowHeight(e,t)}InsertRows(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_column?0:i.start.row}this.grid.InsertRows(e,t)}InsertColumns(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_row?0:i.start.column}this.grid.InsertColumns(e,t)}DeleteRows(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_column?0:i.start.row,t=i.rows}this.grid.InsertRows(e,-t)}DeleteColumns(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_row?0:i.start.column,t=i.columns}this.grid.InsertColumns(e,-t)}FilterTable(e,t=0,r){let i=this.ResolveTable(e);if(!i)throw new Error("invalid table reference");r?this.grid.FilterTable(i,t,s=>r.call(0,s.value,s.calculated||void 0,JSON.parse(JSON.stringify(s.style||{})))):this.grid.FilterTable(i,0,()=>!0)}SortTable(e,t={}){let r=this.ResolveTable(e);if(!r)throw new Error("invalid table reference");this.grid.SortTable(r,t)}MergeCells(e){this.grid.MergeCells(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0)}UnmergeCells(e){this.grid.UnmergeCells(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0)}async ExportBlob(){return this.export_worker||(this.export_worker=await this.LoadWorker("export")),new Promise((e,t)=>{if(this.export_worker){this.export_worker.onmessage=i=>{e(i.data?i.data.blob:void 0)},this.export_worker.onerror=i=>{console.error("export worker error"),console.info(i),t(i)};let r=this.grid.Serialize({rendered_values:!0,expand_arrays:!0,export_colors:!0,decorated_cells:!0,tables:!0,share_resources:!1});r.decimal_mark=R.decimal_separator,this.export_worker.postMessage({command:"export",sheet:r,decorated:this.calculator.DecoratedFunctionList()})}else t("worker failed")})}Revert(){if(this.options.inline_document){this.LoadDocument(this.options.inline_document),this.options.local_storage&&(this.SaveLocalStorage("reverted_backup"),localStorage.removeItem(this.options.local_storage));return}let e=this.options.document;if(e){this.LoadNetworkDocument(e),this.options.local_storage&&(this.SaveLocalStorage("reverted_backup"),localStorage.removeItem(this.options.local_storage));return}console.warn("to revert, there must be a document set in options"),this.dialog?.ShowDialog({title:"Can't revert -- no document is set in options",close_box:!0,timeout:3e3,type:"error"})}Export(){this.ExportBlob().then(e=>{let t="export";this.grid.model.document_name&&(t=this.grid.model.document_name.toLowerCase().replace(/\s+/g,"-")),e&&(this.SaveAs(e,t+".xlsx"),this.last_save_version=this.file_version)}).catch(e=>{throw/invalid uri/i.test(e.message)&&this.dialog?.ShowDialog({title:"Error exporting file",close_box:!0,message:"The worker cannot run from the filesystem, please use a web server.",timeout:3e3,type:"error"}),e})}GetSelectionReference(){return this.grid.GetSelection()}Focus(){this.grid.Focus()}Resize(){this.grid.UpdateLayout();for(let e of this.views)e.view.grid.UpdateLayout();this.Publish({type:"resize"})}Reset(){if(this.parent_view)return this.parent_view.Reset();this.grid.Reset(),this.ResetInternal(),this.calculator.AttachModel(),this.UpdateAC(),this.Publish({type:"reset"})}LoadFromLocalStorage(e){this.options.local_storage=e;let t=localStorage.getItem(e);if(t)try{let r=JSON.parse(t);return this.LoadDocument(r,{source:"local-storage"}),!0}catch(r){console.error(r)}return!1}async LoadNetworkDocument(e,t){let r=t?t.scroll:void 0,i=t?!!t.recalculate:!1,s=t?t.sheet:void 0,n=/csv(?:$|\?|&)/i.test(e),a=/tsv(?:$|\?|&)/i.test(e);try{this.spinner?.Show();let o=await fetch(e);if(this.spinner?.Hide(),!o.ok)throw new Error("network error");let l=await o.text();if(typeof l=="string")if(n)this.LoadCSV(l,"network-file");else{if(a)throw new Error("tsv not supported (TODO)");{l.substr(0,11)==="&&&START&&&"?l=l.substr(11):l.substr(0,8)==="for(;;);"&&(l=l.substr(8));let c=JSON.parse(l);this.LoadDocument(c,{scroll:r,recalculate:i,override_sheet:s,source:"network-file"})}}}catch(o){console.info("error loading network document",e),console.error(o),this.dialog?.ShowDialog({title:"Error loading file",close_box:!0,message:"The network document returned an error",type:"error",timeout:3e3}),this.Reset()}}async LoadLocalFile(){this.SelectFile2(".treb, .csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/json",1)}ExportDelimited(e={}){if(e={delimiter:",",...e},!e.delimiter||e.delimiter!==","&&e.delimiter!==" ")throw new Error("invalid delimiter");let t=this.grid.active_sheet;switch(typeof e.sheet){case"undefined":break;case"string":t=this.model.sheets.Find(e.sheet);break;case"number":t=this.grid.model.sheets.list[e.sheet];break;default:t=void 0;break}if(!t)throw new Error("invalid sheet identifier");let r=t.cells.toJSON({nested:!1,expand_arrays:!0,calculated_value:!0}),i=[];for(let a=0;a<r.columns;a++)i.push("");let s=[];for(let a=0;a<r.rows;a++)s.push(i.slice(0));let n=new RegExp(`[
12
- \r"${e.delimiter}]`);if(rt(r.data))for(let a of r.data){let o="";!e.formulas&&typeof a.calculated<"u"?o=ye(a.calculated)?Ze(a.calculated):a.calculated.toString():typeof a.value=="string"&&a.value[0]==="'"?o=a.value.substr(1):typeof a.value<"u"&&(o=ye(a.value)?Ze(a.value):a.value.toString()),n.test(o)&&(o=o.replace(/"/g,'""'),o='"'+o+'"'),s[a.row][a.column]=o}return s.map(a=>a.join(e.delimiter)).join(`\r
13
- `)}SaveLocalFile(e="treb.json",t={}){this.SaveToDesktop(e,t)}SaveToDesktop(e="treb.json",t={}){let r=this.grid.model.document_name||"document",i,s,n=e.split(/\./).filter(o=>o.trim().length),a=n.length?n[n.length-1].toLowerCase():"treb";if(n.length<=1||e==="treb.json")if(e==="treb.json"&&(a=e),(a==="csv"||a==="tsv")&&this.grid.model.sheets.length>1){let o=this.grid.active_sheet.name;e=(r+"-"+o).toLowerCase().replace(/\W+/g,"-")+"."+a}else e=r.toLowerCase().replace(/\W+/g,"-")+"."+a;switch(a){case"csv":s=this.ExportDelimited({delimiter:","});break;case"tsv":s=this.ExportDelimited({delimiter:" "});break;case"treb":case"json":case"treb.json":i=this.SerializeDocument({...t}),s=JSON.stringify(i,void 0,t.pretty?2:void 0),this.last_save_version=this.file_version;break;default:throw new Error("invalid file type")}if(s&&e){let o=new Blob([s],{type:"text/plain;charset=utf-8"});this.SaveAs(o,e)}}LoadCSV(e,t){if(this.parent_view)return this.parent_view.LoadCSV(e,t);this.grid.FromCSV(e),this.ResetInternal(),this.grid.Update(!0),this.Publish({type:"load",source:t}),this.UpdateDocumentStyles()}ScrollOffset(e){return this.grid.ScrollOffset(e)}LoadDocument(e,t={}){if(this.parent_view)return this.parent_view.LoadDocument(e,t);if(t={flush:!0,recalculate:!1,...t},t.override_selection&&e.sheet_data){let r=Array.isArray(e.sheet_data)?e.sheet_data:[e.sheet_data];for(let i of r)if(i.id===t.override_selection.target.sheet_id){i.selection=t.override_selection;break}}if(this.ImportDocumentData(e,t.override_sheet),this.calculator.Reset(),e.rendered_values&&!t.recalculate?(this.grid.Update(),this.calculator.RebuildClean(!0)):this.Recalculate(),this.InflateAnnotations(),t.flush&&this.FlushUndo(),this.Publish({type:"load",source:t.source}),this.UpdateDocumentStyles(),this.loaded=!0,t.scroll){let r=t.scroll;re().then(()=>this.ScrollTo(r))}}SetNote(e,t){if(typeof e=="string"){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=L(r)?r:r.start}this.grid.SetNote(e,t)}SetValidation(e,t,r){if(typeof e=="string"){let i=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=L(i)?i:i.start}if(typeof t>"u"||Array.isArray(t))this.grid.SetValidation(e,t,r);else{let i=this.calculator.ResolveArea(t,this.grid.active_sheet);this.grid.SetValidation(e,i,r)}}RemoveFunction(e){let t=e.toUpperCase();this.model.macro_functions.delete(t),this.UpdateAC()}DefineFunction(e,t="",r="0"){if(!e.length||/^[^A-Za-z]/.test(e)||/[^\w_.]/.test(e))throw new Error("invalid function name");typeof t=="string"&&(t=t?t.split(this.parser.argument_separator).map(i=>i.trim()):[]);for(let i of t)if(!i.length||/^[^A-Za-z]/.test(i)||/[^\w_.]/.test(i))throw new Error("invalid argument name");this.RemoveFunction(e),this.grid.model.macro_functions.set(e.toUpperCase(),{name:e,function_def:r,argument_names:t,expression:this.parser.Parse(r).expression}),this.UpdateAC()}SerializeDocument(e={}){e={share_resources:!0,shrink:!0,...e};let t=this.grid.Serialize(e),r={app:"@trebco/treb",version:"25.9.1",revision:this.file_version,name:this.grid.model.document_name,user_data:this.grid.model.user_data,decimal_mark:R.decimal_separator,...t};if(e.share_resources){let i=1,s=new Map,n=Array.isArray(r.sheet_data)?r.sheet_data:[r.sheet_data],a=l=>{let c=s.get(l);return c||(c=(i++).toString(),s.set(l,c)),`resource:${c}`};for(let l of n)if(l){l.background_image&&(l.background_image=a(l.background_image));for(let c of l.annotations||[])c.type==="image"&&c.data?.src&&(c.data.src=a(c.data.src))}let o={};for(let[l,c]of s.entries())o[c]=l;r.shared_resources=o}return e.rendered_values&&(r.rendered_values=!0),r}async Recalculate(e){let t;e&&e.type==="data"&&e.area&&(t=e.area),this.calculator.Calculate(t),this.grid.Update(!0),this.UpdateAnnotations(),this.Publish({type:"data"}),this.grid.UpdateStats()}SaveLocalStorage(e=this.options.local_storage){if(!e){console.warn("not saving, no key");return}let t=JSON.stringify(this.SerializeDocument({rendered_values:!0,expand_arrays:!0}));localStorage.setItem(e,t)}Undo(){if(this.parent_view)return this.parent_view.Undo();if(this.undo_pointer<=1){console.warn("nothing to undo");return}let e=this.undo_stack[--this.undo_pointer-1],t=e.selection?JSON.parse(e.selection):void 0;this.LoadDocument(JSON.parse(e.data),{flush:!1,override_selection:t,source:"undo"})}About(){this.dialog?.ShowDialog({type:"about"})}ScrollTo(e,t={}){if(typeof e=="string"){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=L(r)?r:r.start}t={x:!0,y:!0,smooth:!1,...t},this.grid.ScrollTo(e,t.x,t.y,t.smooth)}Resolve(e){let t=this.calculator.ResolveAddress(e,this.grid.active_sheet);return L(t)?t.sheet_id?t:void 0:t.start.sheet_id?t:void 0}Evaluate(e,t={}){return this.calculator.Evaluate(e,this.grid.active_sheet,t)}GetSelection(e=!0){let t=this.grid.GetSelection();if(t.empty)return"";let r="";if(t.area.count>1?r=v.CellAddressToLabel(t.area.start)+":"+v.CellAddressToLabel(t.area.end):r=v.CellAddressToLabel(t.area.start),!e)return r;let i=t.area.start.sheet_id||this.grid.active_sheet.id,s=this.ResolveSheetName(i,!0);return s?s+"!"+r:r}ParseNumber(e){return be.TryParse(e).value}FormatNumber(e,t="General"){return M.Get(t).Format(e)}ApplyBorders(e,t,r=1){this.grid.ApplyBorders2(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0,t,{},r)}ApplyStyle(e,t={},r=!0){this.grid.ApplyStyle(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0,t,r)}ClearName(e){this.grid.SetName(e)}DefineName(e,t){if(typeof t>"u"||t===null)throw new Error("invalid value (null or undefined)");if(typeof t=="object"&&(L(t)||Qr(t))){this.grid.SetName(e,this.calculator.ResolveArea(t,this.grid.active_sheet));return}if(typeof t=="string"){let r=this.parser.Parse(t);if(!r.expression)throw new Error("invalid expression");switch(r.expression.type){case"address":case"range":this.grid.SetName(e,this.calculator.ResolveArea(r.expression,this.grid.active_sheet));return}this.grid.SetName(e,void 0,t)}else this.grid.SetName(e,void 0,t.toString())}SetLink(e,t=""){if(typeof e=="string"){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=L(r)?r:r.start}if(!e){let r=this.GetSelectionReference();if(r.empty)return;e=r.target}this.grid.SetLink(e,t)}Select(e){let t=this.calculator.ResolveArea(e,this.grid.active_sheet);t.start.sheet_id&&t.start.sheet_id!==this.grid.active_sheet.id&&this.grid.ActivateSheetID(t.start.sheet_id),this.grid.SelectRange(t)}GetRange(e,t={}){if(!e){let r=this.GetSelectionReference();r.empty||(e=r.area)}if(e)return t.type||(t.formatted&&(t.type="formatted"),t.formula&&(t.type="formula")),this.grid.GetRange(this.calculator.ResolveAddress(e,this.grid.active_sheet),t.type)}GetStyle(e,t=!1){if(!e){let r=this.GetSelectionReference();r.empty||(e=r.area)}if(e)return this.grid.GetRangeStyle(this.calculator.ResolveAddress(e,this.grid.active_sheet),t)}SetRange(e,t=void 0,r={}){if(!e){let i=this.GetSelectionReference();i.empty||(e=i.area)}if(e){let i=this.calculator.ResolveArea(e,this.grid.active_sheet);if(r.spill&&Array.isArray(t)){let s=t.length,n=Math.max(0,...t.map(o=>o.length)),a={row:i.start.row+s+1,column:i.start.column+n+1};i.ConsumeAddress(a)}return this.grid.SetRange(i,t,r)}}Subscribe(e){return this.events.Subscribe(e)}Cancel(e){this.events.Cancel(e)}ResolveTable(e){let t;if(typeof e=="string"){let r=e.toLowerCase();this.model.tables.has(r)&&(t=this.model.tables.get(r))}if(!t){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);L(r)||(r=r.start),t=this.grid.GetTableReference(r)}return t}Unresolve(e,t=!0,r=!0){let i="",s=L(e)?new v(e):new v(e.start,e.end);if(r){let o=this.model.named_ranges.MatchSelection(s);if(o)return o}if(s.count>1?i=v.CellAddressToLabel(s.start)+":"+v.CellAddressToLabel(s.end):i=v.CellAddressToLabel(s.start),!t)return i;let n=s.start.sheet_id||this.grid.active_sheet.id,a=this.ResolveSheetName(n,!0);return a?a+"!"+i:i}SaveAs(e,t){let r=document.createElement("a");r.href=URL.createObjectURL(e),r.download=t,r.click(),URL.revokeObjectURL(r.href)}Publish(e){this.events.Publish(e)}async ImportXLSX(e,t){return this.parent_view?this.parent_view.ImportXLSX(e,t):(this.export_worker||(this.export_worker=await this.LoadWorker("export")),new Promise((r,i)=>{this.export_worker?(this.dialog?.ShowDialog({message:"Importing XLSX..."}),this.export_worker.onmessage=s=>{if(s.data){if(s.data.status==="error")return i(s.data.error||"unknown error");this.grid.FromImportData(s.data.results),this.ResetInternal(),this.grid.Update(),this.UpdateAC(),this.calculator.AttachModel(),this.Publish({type:"load",source:t}),this.UpdateDocumentStyles(),this.InflateAnnotations()}else return i("unknown error (missing data)");this.dialog?.HideDialog(),r()},this.export_worker.onerror=s=>{console.error("import worker error"),console.info(s),i(s)},this.export_worker.postMessage({command:"import",data:e})):i("worker failed")}))}ResetInternal(){this.calculator.Reset(),this.FlushUndo(),this.file_version=this.last_save_version=0}HandleCellEvent(e){if(e.data?.type==="hyperlink"){let r="hyperlink invalid target",i=e.data.data||"";if(typeof i=="string"){if(/^https{0,1}:\/\//i.test(i)){if(!this.options.hyperlinks){console.warn("hyperlinks are disabled");return}let s=document.createElement("a");s.setAttribute("target",this.options.hyperlinks),s.setAttribute("href",i),s.setAttribute("noreferrer","true"),s.setAttribute("nofollow","true"),s.click();return}else{let s=this.parser.Parse(i);if(s.expression){if(s.expression.type==="address"){(s.expression.sheet||s.expression.sheet_id)&&this.ActivateSheet(s.expression.sheet||s.expression.sheet_id),this.Select(i);return}else if(s.expression.type==="range"){(s.expression.start.sheet||s.expression.start.sheet_id)&&this.ActivateSheet(s.expression.start.sheet||s.expression.start.sheet_id),this.Select(i);return}}}console.warn(r,2);return}}}OnSheetChange(e){for(let t of e.activate.annotations)this.InflateAnnotation(t),this.calculator.UpdateAnnotations(t,e.activate);this.UpdateAnnotations()}HandleDrag(e){if(e.dataTransfer&&e.dataTransfer.types){if(e.dataTransfer.types.some&&e.dataTransfer.types.some(t=>t==="Files"))e.preventDefault();else for(let t=0;t<e.dataTransfer.types.length;t++)if(e.dataTransfer.types[t]==="files"){e.preventDefault();return}}}HandleDrop(e){if(e.dataTransfer&&e.dataTransfer.files&&e.dataTransfer.files.length){e.preventDefault();let t=e.dataTransfer.files[0];/^image/.test(t.type)?this.InsertImageInternal(t):this.LoadFileInternal(t,"drag-and-drop").catch(()=>{})}}SelectFile2(e,t){if(!this.file_chooser){this.file_chooser=document.createElement("input"),this.file_chooser.type="file";let r=this.file_chooser;r.addEventListener("change",()=>{if(r.files&&r.files[0]){let i=r.files[0];switch(r.value="",this.file_chooser_operation){case 2:this.InsertImageInternal(i);break;case 1:this.LoadFileInternal(i,"local-file",!0);break;default:console.warn("file chooser: no operation");break}}})}if(!this.file_chooser)throw new Error("could not create file chooser");this.file_chooser_operation=t,this.file_chooser.accept=e||"",this.file_chooser.click()}async InsertImageInternal(e){if(this.options.max_file_size&&e.size>this.options.max_file_size){this.dialog?.ShowDialog({type:"error",message:"This file exceeds the allowed image size. Please try a smaller image.",title:"Error adding image",timeout:3e3,close_box:!0});return}let t=e;await new Promise((r,i)=>{let s=new FileReader;s.onload=async()=>{try{if(s.result){let n;if(typeof s.result=="string")n=s.result;else{n="";let l=new Uint8Array(s.result);for(let c=0;c<l.byteLength;c++)n+=String.fromCharCode(l[c])}let a=document.createElement("img");a.src=n,await Promise.resolve();let o=this.grid.CreateAnnotation({type:"image",formula:"",data:{scale:"",src:n,original_size:{width:a.width||300,height:a.height||300}}},void 0,void 0,{top:30,left:30,width:a.width||300,height:a.height||300})}r()}catch(n){i(n)}},s.onabort=()=>{i("Aborted")},s.onerror=()=>{i("File error")},setTimeout(()=>{s.readAsDataURL(t)},100)})}LoadFileInternal(e,t,r=!0){if(!e)return Promise.resolve();let i=new FileReader;return new Promise((s,n)=>{let a=o=>{i.onload=null,i.onabort=null,i.onerror=null,o?(r&&(this.dialog?.ShowDialog({title:"Error reading file",close_box:!0,message:"Please make sure your file is a valid XLSX, CSV or TREB file.",type:"error",timeout:3e3}),console.error(o)),n(o)):s()};i.onload=()=>{try{if(i.result)if(/\.csv$/i.test(e.name))this.LoadCSV(i.result,t);else if(/\.xls[xm]$/i.test(e.name)){let o;if(typeof i.result=="string")o=i.result;else{o="";let l=new Uint8Array(i.result);for(let c=0;c<l.byteLength;c++)o+=String.fromCharCode(l[c])}this.ImportXLSX(o,t).then(()=>a()).catch(l=>a(l));return}else{let o=JSON.parse(i.result);this.LoadDocument(o,{source:t})}a()}catch(o){a(o?.toString())}},i.onabort=()=>{a("Aborted")},i.onerror=()=>{a("File error")},setTimeout(()=>{/\.xlsx$/i.test(e.name)?i.readAsBinaryString?i.readAsBinaryString(e):i.readAsArrayBuffer(e):i.readAsText(e)},100)})}UpdateAnnotations(){for(let e of this.grid.active_sheet.annotations){if(e.temp.vertex){let r=e.temp.vertex;if(r.state_id!==e.temp.state){e.temp.state=r.state_id;for(let i of e.view)i.dirty=!0}}let t=e.view[this.grid.view_index]||{};t.dirty&&(t.update_callback&&t.update_callback(),this.grid.AnnotationUpdated(e))}}RebuildAllAnnotations(){for(let e of this.grid.active_sheet.annotations){this.InflateAnnotation(e);let t=e.view[this.grid.view_index]||{};t.resize_callback&&t.resize_callback(),t.update_callback&&t.update_callback()}}InflateAnnotations(){for(let e of this.grid.active_sheet.annotations)this.InflateAnnotation(e)}InflateAnnotation(e){if(this.grid.headless)return;let t=e.view[this.grid.view_index]||{};if(t.inflated){e.dirty&&(t.resize_callback&&t.resize_callback(),e.dirty=!1);return}if(t.inflated=!0,e.dirty&&(e.dirty=!1),t.content_node){if(e.data.type==="treb-chart"){let r=this.CreateChart();r.Initialize(t.content_node);let i=()=>{if(e.data.formula){let s=this.parser.Parse(e.data.formula);if(s&&s.expression&&s.expression.type==="call"){this.parser.Walk(s.expression,o=>((o.type==="address"||o.type==="range")&&this.calculator.ResolveSheetID(o,void 0,this.grid.active_sheet),!0));let n=s.expression.name.toLowerCase(),a=this.calculator.CalculateExpression(s.expression);r.Exec(n,a)}}r.Update()};t.resize_callback=()=>{this.grid.headless||(r.Resize(),r.Update())},t.update_callback=()=>{this.grid.headless||i()},t.node?.parentElement&&(this.grid.headless||i())}else if(e.data.type==="image"&&typeof e.data.data?.src=="string"){let r=Tt(e.data.data.src);if(r){let i=document.createElement("img");i.src=r,e.data.data.scale==="fixed"?(i.style.position="relative",i.style.left="50%",i.style.top="50%",i.style.transform="translate(-50%, -50%)"):(i.style.width="100%",i.style.height="100%"),t.content_node.appendChild(i)}}}}DocumentChange(e){re().then(()=>{this.file_version++,this.file_version>=65536&&(this.file_version=1);let t=JSON.stringify(this.SerializeDocument({optimize:"size",rendered_values:!0,expand_arrays:!0}));this.options.local_storage&&localStorage.setItem(this.options.local_storage,t),this.options.undo&&this.PushUndo(t,e,!1),this.Publish({type:"document-change"})})}ResolveStorageKey(e,t=""){if(e){if(e===!0){let r=0,i=document.location.href;for(let n=0,a=i.length;n<a;n++)r=(r<<5)-r+i.charCodeAt(n),r|=0;let s=Math.abs(r).toString(16);return t?t+"-"+s:s}return e}}PushUndo(e,t,r=!0){let i=t||this.last_selection;this.undo_stack[this.undo_pointer-1]&&(this.undo_stack[this.undo_pointer-1].selection=i),r&&(this.file_version++,this.file_version>=65536&&(this.file_version=1)),e||(e=JSON.stringify(this.SerializeDocument({optimize:"size",rendered_values:!0,expand_arrays:!0}))),this.undo_stack[this.undo_pointer++]={data:e,selection:void 0};let s=this.undo_stack.length;if(s>16){let n=s-16;this.undo_stack=this.undo_stack.slice(n),this.undo_pointer-=n}}FlushUndo(e=!0){this.undo_stack=[],this.undo_pointer=0,this.last_save_version=this.file_version,e&&this.PushUndo(void 0,void 0,!1)}UpdateSelection(e){this.last_selection=JSON.stringify(e),this.Publish({type:"selection"})}UpdateSelectionStyle(e){let t=this.grid.GetFreeze(),r={frozen:!!t.rows||!!t.columns};if(e||(e=this.grid.GetSelection()),e&&!e.empty){r.selection=e;let i=this.grid.active_sheet.CellData(e.target);r.table=!!i.table,r.merge=!!i.merge_area,r.merge&&i.merge_area&&(i.merge_area.start.row!==e.target.row||i.merge_area.start.column!==e.target.column)&&(i=this.grid.active_sheet.CellData(i.merge_area.start)),r.comment=i.note,r.style=i.style?{...i.style}:void 0,r.relative_font_size=k.RelativeFontSize(r.style||{},this.grid.theme.grid_cell||{})}this.selection_state=r}UpdateDocumentStyles(e=!0){let t={},r={};for(let s of this.grid.model.sheets.list)s.NumberFormatsAndColors(r,t);this.document_styles.colors=Object.keys(r),this.document_styles.number_formats=Object.keys(t),this.document_styles.theme_colors=[];let i=[.5,.25,0,-.25,-.5];for(let s=0;s<10;s++)this.document_styles.theme_colors.push(i.map(n=>{let a={theme:s,tint:n},o=T(this.grid.theme,a);return{color:a,resolved:o}}))}ConvertLocale(e){let t=new We;t.flags={...this.parser.flags};let r,i;e.decimal_mark==="."?(t.decimal_mark=".",t.argument_separator=",",r=",",i=";"):(t.decimal_mark=",",t.argument_separator=";",r=".",i=",");let s=n=>{let a=t.Parse(n);if(a.expression)return"="+t.Render(a.expression,{missing:"",convert_decimal:r,convert_argument_separator:i})};if(e.macro_functions)for(let n of e.macro_functions){let a=s(n.function_def);a&&(n.function_def=a)}if(e.sheet_data){let n=Array.isArray(e.sheet_data)?e.sheet_data:[e.sheet_data];for(let a of n){if(a.annotations){for(let o of a.annotations)if(o.formula){let l=s(o.formula);l&&(o.formula=l)}}if(a.data?.length)for(let o of a.data){let l=nr(o)?[o]:o.cells;for(let c of l)if(c.value&&typeof c.value=="string"&&c.value[0]==="="){let h=s(c.value.slice(1));h&&(c.value=h)}}}}}CompareVersions(e="",t=""){let r=e.split(".").map(a=>Number(a)||0).concat([0,0,0]),i=t.split(".").map(a=>Number(a)||0).concat([0,0,0]),s=[0,1,2],n={match:0};for(let a=0;a<3;a++)if(r[a]!==i[a]){n.match=r[a]>i[a]?1:-1,n.level=s[a];break}return n}ImportDocumentData(e,t){this.file_version=e.revision||0;let r=[],i=this.CompareVersions(e.version,"25.9.1");if(i.match>0&&(i.level===0||i.level===1)&&console.warn(`The file you are opening was created with a newer version of TREB (${e.version} vs 25.9.1).
14
- You may encounter compatibility errors.`),e.sheet_data&&(Array.isArray(e.sheet_data)?r=e.sheet_data:r.push(e.sheet_data)),e.shared_resources){let a=e.shared_resources,o=l=>/^resource:/.test(l)?a[l.substring(9)]||"":l;for(let l of r){l.background_image&&(l.background_image=o(l.background_image));for(let c of l.annotations||[])c.type==="image"&&c.data?.src&&(c.data.src=o(c.data.src))}}e.decimal_mark&&e.decimal_mark!==R.decimal_separator&&this.ConvertLocale(e);let s=this.grid.model;if(s.tables.clear(),e.tables)for(let a of e.tables)s.tables.set(a.name.toLowerCase(),a);this.grid.UpdateSheets(r,void 0,t||e.active_sheet);for(let[a,o]of this.model.tables.entries())if(o.area.start.sheet_id){let l=s.sheets.Find(o.area.start.sheet_id);if(l)for(let c=o.area.start.row;c<=o.area.end.row;c++)for(let h=o.area.start.column;h<=o.area.end.column;h++){let u=l.cells.GetCell({row:c,column:h},!0);u.table=o}}s.document_name=e.name,s.user_data=e.user_data,s.named_ranges.Reset();let n=e.named_ranges;if(!n&&r[0]&&r[0].named_ranges&&(n=r[0].named_ranges),n&&s.named_ranges.Deserialize(n),s.named_expressions.clear(),e.named_expressions)for(let a of e.named_expressions){let o=this.parser.Parse(a.expression);o.valid&&o.expression&&(this.parser.Walk(o.expression,l=>{if(l.type==="address"||l.type==="range"){if(l.type==="range"&&(l=l.start),!l.sheet_id&&l.sheet){let c=this.model.sheets.Find(l.sheet);c&&(l.sheet_id=c.id)}return l.sheet_id||(l.sheet_id=this.grid.active_sheet.id),!1}return!0}),s.named_expressions.set(a.name.toUpperCase(),o.expression))}if(s.macro_functions.clear(),e.macro_functions)for(let a of e.macro_functions)s.macro_functions.set(a.name.toUpperCase(),{...a,expression:this.parser.Parse(a.function_def||"").expression});this.UpdateAC()}async LoadWorker(e){if(Jr)try{return new Worker(URL.createObjectURL(new Blob([Xr],{type:"application/javascript"})))}catch(t){console.info("embedded worker failed"),console.error(t)}throw new Error("creating worker failed")}HandleKeyDown(e){e.ctrlKey&&(e.code==="KeyZ"||e.key==="z")&&(e.stopPropagation(),e.preventDefault(),this.Undo())}ResolveSheetName(e,t=!1){let r=this.model.sheets.Find(e);if(r)return t&&lt.test(r.name)?`'${r.name}'`:r.name}},ze=vt;ze.treb_base_path="",ze.treb_embedded_script_path="",ze.enable_engine=!1,ze.enable_formatter=!1,ze.one_time_warnings={};var qi=`@charset "UTF-8";.treb-main .treb-mouse-mask{background:transparent;bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:9999}.treb-main .treb-mouse-mask.column-resize{cursor:col-resize}.treb-main .treb-mouse-mask.row-resize{cursor:row-resize}.treb-main .treb-mouse-mask.nub-select{cursor:crosshair}.treb-main .treb-mouse-mask.move{cursor:move}.treb-main .treb-mouse-mask.nw-resize{cursor:nw-resize}.treb-main .treb-note{max-width:15em;min-width:15em}.treb-main .treb-hover-title,.treb-main .treb-note{background:var(--treb-note-background,#fff);border:1px solid var(--treb-note-border-color,var(--treb-ui-border-color,#ddd));border-radius:2px;box-shadow:0 1px 4px 2px hsla(0,0%,43%,.2);color:var(--treb-note-color,#333);font-family:BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,"sans-serif";font-size:10.5pt;left:100px;line-height:normal;opacity:0;padding:7px 10px;position:fixed;top:100px;transition:opacity .2s;white-space:pre-line;z-index:39}.treb-main .treb-hover-title{min-width:10em;pointer-events:none}.treb-main .treb-sort-button{background:#fff;border:1px solid #ccc;border-radius:2px;height:1em;left:100px;opacity:0;pointer-events:none;position:absolute;top:100px;transition:opacity .1s ease;width:1em;z-index:39}.treb-main .treb-sort-button:after{box-sizing:border-box}.treb-main .treb-sort-button.asc:after{border:.4em solid transparent;border-top-color:currentcolor;transform:translate(-50%,-25%)}.treb-main .treb-sort-button.asc:after,.treb-main .treb-sort-button.desc:after{content:"";height:.8em;left:50%;opacity:.5;position:absolute;top:50%;width:.8em}.treb-main .treb-sort-button.desc:after{border:.4em solid transparent;border-bottom-color:currentcolor;transform:translate(-50%,-80%)}.treb-main .treb-tooltip{border-radius:2px;box-shadow:0 1px 4px 2px hsla(0,0%,43%,.2);display:none;line-height:normal;padding:2px 10px;pointer-events:none;position:fixed;z-index:39}.treb-main .treb-tooltip.arrow-up:after{border:4px solid transparent;border-bottom-color:inherit;left:calc(50% - 4px);top:-8px}.treb-main .treb-tooltip.arrow-left:after,.treb-main .treb-tooltip.arrow-up:after{box-sizing:border-box;content:" ";height:8px;overflow:hidden;position:absolute;width:8px}.treb-main .treb-tooltip.arrow-left:after{border:4px solid transparent;border-right-color:inherit;left:-8px;top:calc(50% - 4px)}.treb-main .treb-dropdown-caret{background:var(--treb-dropdown-caret-background,#fff);border:1px solid var(--treb-dropdown-caret-border-color,#ccc);border-radius:2px;box-shadow:0 1px 4px 2px hsla(0,0%,43%,.2);display:none;height:20px;position:absolute;width:20px;z-index:39}.treb-main .treb-dropdown-caret path{fill:none;stroke:var(--treb-dropdown-caret-color,#444);stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.treb-main .treb-dropdown-list{background:var(--treb-dropdown-background,#fff);border:1px solid var(--treb-dropdown-border-color,unset);box-shadow:0 1px 4px 2px hsla(0,0%,43%,.2);color:var(--treb-dropdown-color,inherit);display:none;font-size:10pt;max-height:10em;outline:none;overflow-y:auto;position:absolute;text-align:left;z-index:39}.treb-main .treb-dropdown-list div{cursor:default;padding:2px}.treb-main .treb-dropdown-list div.selected{background:var(--treb-dropdown-selected-background,#555);color:var(--treb-dropdown-selected-color,#fff)}.treb-main .treb-dropdown-caret.active{background:var(--treb-dropdown-caret-active-background,#eee)}.treb-main .treb-dropdown-caret.active+.treb-dropdown-list{display:block}.treb-main .treb-error-highlight{background:rgba(255,0,0,.25);opacity:0;pointer-events:none;position:absolute;transition:opacity .15s ease-in-out;z-index:40}.treb-main .treb-autocomplete{box-sizing:border-box;font-size:inherit;font-weight:400;line-height:normal;max-height:10em;overflow-y:auto;position:fixed;text-align:left;top:-1000px;z-index:39}.treb-main .treb-autocomplete *{box-sizing:border-box}.treb-main .treb-autocomplete ul{list-style-type:none}.treb-main .treb-autocomplete ul,.treb-main .treb-autocomplete ul li{font-size:inherit;font-weight:inherit;margin:0;padding:0}.treb-main .treb-autocomplete ul li a{color:inherit;cursor:default;display:inline-block;font-size:inherit;font-weight:inherit;padding:3px 6px;text-decoration:none;width:100%}.treb-main .treb-autocomplete-tooltip{position:fixed;top:-1000px;white-space:pre;z-index:39}.treb-main .treb-formula-bar{display:flex;flex-direction:row;grid-area:1/1/2/2;max-width:100%;overflow-x:hidden;padding:0 2px 12px;text-align:left}.treb-main .treb-formula-bar[hidden]{display:none}.treb-main .treb-formula-bar .treb-address-label{border:1px solid var(--treb-formula-bar-border-color,var(--treb-ui-border-color,#ccc));border-radius:2px;display:flex;flex-direction:column;height:1.75em;justify-content:center;margin-right:6px;min-height:1.5em;min-width:95px;padding-left:3px;width:95px}.treb-main .treb-formula-bar .treb-address-label>div{outline:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.treb-main .treb-formula-bar .expand-button{background:transparent;border:0;border-radius:2px;height:1.75em;margin-left:2px;outline:none;padding:1px}.treb-main .treb-formula-bar .expand-button:after{border:5px solid transparent;border-top-color:#999;content:" ";display:inline-block;margin:0;padding:0;position:relative;top:-6px;transition:transform .15s ease}.treb-main .treb-formula-bar[expanded] .expand-button:after{transform:rotate(180deg) translateY(6px)}.treb-main .treb-formula-bar .treb-editor-container{border:1px solid var(--treb-formula-bar-border-color,var(--treb-ui-border-color,#ccc));border-radius:2px;display:flex;flex-direction:column;flex-grow:1;height:1.75em;justify-content:center;min-width:0}.treb-main .treb-formula-bar[expanded] .treb-editor-container{height:4.5em;transition:height .1s ease-in-out}.treb-main .treb-formula-bar[expanded] .treb-editor-container>div{overflow-y:auto}.treb-main .treb-formula-bar .treb-editor-container>div{flex-grow:1;line-height:1.35;margin:2px;min-height:1em;outline:none;overflow-x:hidden;overflow-y:hidden;width:100%}.treb-main .treb-formula-bar .formula-button{border:1px solid #ccc;border-radius:2px;height:1.75em;margin-left:6px;overflow:hidden;white-space:nowrap}.treb-main .treb-formula-bar .formula-button .text-1{font-style:italic;padding-right:.1em}.treb-main .treb-formula-bar .formula-button .text-1:after{content:"f"}.treb-main .treb-formula-bar .formula-button .text-2{font-size:.7em}.treb-main .treb-formula-bar .formula-button .text-2:after{content:"(x)"}.treb-main .treb-mouse-mask .ghost-tab{position:fixed}.treb-main .treb-spreadsheet-footer{align-items:center;grid-area:3/1/4/2}.treb-main .treb-spreadsheet-footer,.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs{color:var(--treb-ui-color,inherit);display:flex;flex-direction:row;height:2.2em;list-style-type:none;max-width:100%;padding-inline-start:0;z-index:2}.treb-main .treb-spreadsheet-footer[hidden]{display:none}.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li{display:inline-block;position:relative}.treb-main .treb-spreadsheet-footer .treb-add-tab,.treb-main .treb-spreadsheet-footer .treb-delete-tab,.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li{align-items:center;border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top-width:1px;border:1px solid var(--treb-tab-bar-tab-border-color,var(--treb-ui-border-color,#ccc));border-top:0 solid var(--treb-tab-bar-tab-border-color,var(--treb-ui-border-color,#ccc));color:var(--treb-tab-bar-tab-color,var(--treb-ui-color,#fff));cursor:default;display:inline-flex;font-size:inherit;height:100%;justify-content:center;margin-right:-2px;overflow:hidden;padding:0 .75em;z-index:1}.treb-main .treb-spreadsheet-footer .treb-add-tab:active,.treb-main .treb-spreadsheet-footer .treb-add-tab:focus,.treb-main .treb-spreadsheet-footer .treb-delete-tab:active,.treb-main .treb-spreadsheet-footer .treb-delete-tab:focus,.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li:active,.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li:focus{z-index:3}.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li{overflow-x:hidden;white-space:nowrap}.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li[selected]{z-index:2}.treb-main .treb-spreadsheet-footer .treb-scale-control{align-items:center;display:flex;flex-direction:row;font-size:inherit;height:2.2em;justify-content:center;position:relative;width:5em}.treb-main .treb-spreadsheet-footer .treb-scale-control .treb-scale-input{background:transparent;border:1px solid transparent;border-radius:2px;color:inherit;font-family:inherit;font-size:inherit;padding:initial;text-align:center;transition:border-color .25s ease,background-color .25s ease;width:4em}.treb-main .treb-spreadsheet-footer .treb-scale-control .treb-slider-container{accent-color:var(--treb-scale-slider-accent-color,undefined);align-items:center;background:var(--treb-scale-slider-background,#fff);border:1px solid var(--treb-scale-slider-border-color,var(--treb-ui-border-color,#ccc));display:flex;flex-direction:row;height:4em;justify-content:center;left:.5em;opacity:0;pointer-events:none;position:absolute;top:0;transform:rotate(-90deg);transform-origin:left top;transition:opacity .25s ease;width:10em;z-index:40}.treb-main .treb-spreadsheet-footer .treb-scale-control .treb-scale-input:focus,.treb-main .treb-spreadsheet-footer .treb-scale-control:hover .treb-scale-input{border-color:var(--treb-ui-border-color,#ccc)}.treb-main .treb-spreadsheet-footer .treb-scale-control .treb-slider-container>input[type=range]{width:8.5em}.treb-main .treb-spreadsheet-footer .treb-scale-control .treb-scale-input:focus+.treb-slider-container,.treb-main .treb-spreadsheet-footer .treb-scale-control .treb-slider-container:focus-within,.treb-main .treb-spreadsheet-footer .treb-scale-control:hover .treb-slider-container{opacity:.85;pointer-events:auto}.treb-main .treb-spreadsheet-footer .treb-delete-tab{align-items:center;background:transparent;border:none;border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top:0;color:currentColor;cursor:default;display:inline-flex;flex-direction:row;font-size:inherit;margin-right:-2px;padding:.25em .75em;z-index:1}.treb-main .treb-spreadsheet-footer .treb-delete-tab svg{height:1em;opacity:.75;pointer-events:none;transition:opacity .125s ease-in-out;width:1em}.treb-main .treb-spreadsheet-footer .treb-delete-tab:hover svg{opacity:.75}.treb-main .treb-spreadsheet-footer .treb-delete-tab path{stroke:currentColor;stroke-width:1.5px;stroke-linecap:round}.treb-main .treb-spreadsheet-footer .treb-delete-tab:active,.treb-main .treb-spreadsheet-footer .treb-delete-tab:focus{z-index:3}.treb-main .treb-spreadsheet-footer .treb-stats-panel{margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.treb-main .treb-spreadsheet-footer .treb-stats-panel>*{margin-left:.5em}.treb-main .treb-spreadsheet-footer .treb-stats-panel .treb-stats-value{background:var(--treb-stats-value-background,#f8f8ff);border:1px solid var(--treb-stats-value-border-color,var(--treb-ui-border-color,#ddd));border-radius:3px;padding:0 .3em}.treb-main .treb-grid .treb-overlay-container{margin:0;opacity:0;outline:none;padding:0;position:absolute;z-index:24}.treb-main .treb-grid .treb-overlay-container.align-right .treb-overlay-inset{padding-right:3px;right:0;text-align:right}.treb-main .treb-grid .treb-overlay-container.align-center .treb-overlay-inset{left:50%;text-align:center;transform:translateX(-50%)}.treb-main .treb-grid .treb-overlay-inset{display:flex;flex-direction:column;height:100%;justify-content:flex-end;margin:0;min-width:100%;padding:0 4px;position:absolute}.treb-main .treb-grid .treb-overlay-editor{outline:none;position:relative;white-space:nowrap}.treb-main .treb-grid .treb-overlay-editor.firefox:before{content:"\u200B"}.treb-main .treb-buffer-canvas{display:none;position:absolute}.treb-main .treb-spreadsheet-body{-webkit-overflow-scrolling:touch;display:flex;grid-area:2/1/3/2;overflow:hidden;z-index:1}.treb-main .treb-grid,.treb-main .treb-spreadsheet-body{-webkit-tap-highlight-color:transparent;position:relative}.treb-main .treb-grid{-webkit-overflow-scrolling:touch;display:grid;flex-grow:1;grid-template-columns:100px auto;grid-template-rows:20px auto;order:2;outline:none;overflow:scroll}.treb-main .treb-grid .tile-cover.grid-cover{grid-area:2/2/3/3}.treb-main .treb-grid .tile-cover.column-header-cover{grid-area:1/2/2/3;position:-webkit-sticky;position:sticky;top:0}.treb-main .treb-grid .tile-cover.row-header-cover{grid-area:2/1/3/2;left:0;position:-webkit-sticky;position:sticky}.treb-main .treb-grid .treb-grid-selection{grid-area:1/1/2/2}.treb-main .treb-grid .treb-corner{grid-area:1/1/2/2;position:-webkit-sticky;position:sticky}.treb-main .treb-grid .treb-left-header{display:grid;grid-area:2/1/3/2;grid-template-columns:auto;grid-template-rows:auto;position:-webkit-sticky;position:sticky}.treb-main .treb-grid .treb-top-header{display:grid;grid-area:1/2/2/3;grid-template-columns:auto;grid-template-rows:auto;position:-webkit-sticky;position:sticky}.treb-main .treb-grid .treb-contents{display:grid;grid-area:2/2/3/3;grid-template-columns:auto;grid-template-rows:auto}.treb-main .treb-grid.safari::-webkit-scrollbar{-webkit-appearance:none;height:7px;width:7px}.treb-main .treb-grid.safari::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.25);border-radius:4px;-webkit-box-shadow:0 0 1px hsla(0,0%,100%,.5)}.treb-main .treb-grid canvas{background:transparent;border:0;margin:0;padding:0}.treb-main .treb-grid .nub-select{cursor:crosshair}.treb-main .treb-grid .link-pointer{cursor:pointer}.treb-main .treb-grid .mock-selection-node{background:red;left:-100px;position:fixed;top:-100px}.treb-main .treb-grid .tile-cover{background:transparent;position:relative;z-index:14}.treb-main .treb-grid .tile-cover.column-header-cover{z-index:22}.treb-main .treb-grid .tile-cover.column-header-cover.resize{cursor:col-resize}.treb-main .treb-grid .tile-cover.row-header-cover{z-index:22}.treb-main .treb-grid .tile-cover.row-header-cover.resize{cursor:row-resize}.treb-main .treb-grid .frozen-annotation-container,.treb-main .treb-grid .treb-annotation-container{left:0;pointer-events:none;position:absolute;top:0;z-index:16}.treb-main .treb-grid .frozen-annotation-container .annotation,.treb-main .treb-grid .treb-annotation-container .annotation{background:hsla(0,0%,100%,.5);border:1px solid #999;overflow:hidden;pointer-events:auto;position:absolute;z-index:1}.treb-main .treb-grid .frozen-annotation-container .annotation .annotation-content,.treb-main .treb-grid .treb-annotation-container .annotation .annotation-content{font-family:inherit;font-size:inherit;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.treb-main .treb-grid .frozen-annotation-container .annotation .annotation-move-target,.treb-main .treb-grid .treb-annotation-container .annotation .annotation-move-target{cursor:move;height:10%;left:0;min-height:14px;position:absolute;top:0;width:100%;z-index:2}.treb-main .treb-grid .frozen-annotation-container .annotation .annotation-resize-target,.treb-main .treb-grid .treb-annotation-container .annotation .annotation-resize-target{bottom:0;cursor:nwse-resize;height:10%;min-height:14px;min-width:14px;position:absolute;right:0;width:10%;z-index:3}.treb-main .treb-grid .frozen-annotation-container .annotation.clone-focus,.treb-main .treb-grid .frozen-annotation-container .annotation.retain-focus,.treb-main .treb-grid .frozen-annotation-container .annotation:focus,.treb-main .treb-grid .treb-annotation-container .annotation.clone-focus,.treb-main .treb-grid .treb-annotation-container .annotation.retain-focus,.treb-main .treb-grid .treb-annotation-container .annotation:focus{box-shadow:0 0 0 3px rgba(14,165,233,.33)}.treb-main .treb-grid .frozen-annotation-container .move-buffer,.treb-main .treb-grid .treb-annotation-container .move-buffer{border:1px solid red;cursor:move;height:10%;left:0;position:absolute;top:0;width:100%}.treb-main .treb-grid .treb-grid-selection{background:transparent;position:absolute;-moz-transform:scale(1);z-index:10}.treb-main .treb-grid .frozen-selection{overflow:hidden;pointer-events:none;position:absolute;-moz-transform:scale(1);transition:background .33s;z-index:12}.treb-main .treb-grid .frozen-selection.frozen-selection-rows{border-bottom:1px solid transparent}.treb-main .treb-grid .frozen-selection.frozen-selection-columns{border-right:1px solid transparent}.treb-main .treb-grid .frozen-annotation-container{height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.treb-main .treb-grid .treb-corner{left:0;top:0;z-index:20}.treb-main .treb-grid .treb-corner canvas{left:0;pointer-events:none;position:absolute;top:0}.treb-main .treb-grid .treb-left-header{left:0;pointer-events:none;z-index:18}.treb-main .treb-grid .treb-top-header{pointer-events:none;top:0;z-index:18}.treb-main .treb-grid .treb-contents{height:2000px;width:2000px}.treb-main:focus-within .treb-grid-selection .primary-selection,.treb-main:focus-within .treb-header-overlay{color:var(--treb-selection-color,#4caaf1)}.treb-main .theme-color-1{color:var(--treb-theme-color-1,#e7e6e6)}.treb-main .theme-color-2{color:var(--treb-theme-color-2,#44546a)}.treb-main .theme-color-3{color:var(--treb-theme-color-3,#4472c4)}.treb-main .theme-color-4{color:var(--treb-theme-color-4,#ed7d31)}.treb-main .theme-color-5{color:var(--treb-theme-color-5,#a5a5a5)}.treb-main .theme-color-6{color:var(--treb-theme-color-6,#ffc000)}.treb-main .theme-color-7{color:var(--treb-theme-color-7,#5b9bd5)}.treb-main .theme-color-8{color:var(--treb-theme-color-8,#70ad47)}.treb-main .theme-color-9{color:var(--treb-theme-color-9,#0563c1)}.treb-main .theme-color-10{color:var(--treb-theme-color-10,#954f72)}.treb-main .treb-offset-dark{color:#000}.treb-main .treb-offset-light{color:#fff}.treb-main .note-marker{background:var(--treb-note-marker-color,#6fab20)}.treb-main .grid-headers{stroke:var(--treb-grid-header-grid-color,var(--treb-grid-grid-color,#ccccd4));background:var(--treb-grid-header-background,#eeeef2);color:var(--treb-grid-header-color,var(--treb-grid-default-color,#666));font-family:var(--treb-grid-header-font-family,inherit);font-size:var(--treb-grid-header-font-size,10pt);font-style:var(--treb-grid-header-font-style,normal);font-weight:var(--treb-grid-header-font-weight,normal)}.treb-main .grid-cells{stroke:var(--treb-grid-grid-color,#ccccd4);background:var(--treb-grid-background,#fff);color:var(--treb-grid-default-color,inherit);font-family:var(--treb-grid-font-family,inherit);font-size:var(--treb-grid-font-size,14px)}.treb-main .frozen-selection.highlight-area{background:rgba(87,184,255,.25);border-bottom-color:#2176ae;border-left-color:#2176ae}.treb-main .treb-autocomplete-tooltip{background:var(--treb-autocomplete-tooltip-background,#fffbb5);border:1px solid var(--treb-autocomplete-tooltip-border-color,unset);border-radius:2px;color:var(--treb-autocomplete-tooltip-color,inherit);font-size:14px;line-height:normal;margin:4px 0;padding:3px 8px}.treb-main .treb-autocomplete-tooltip .active-argument{font-weight:700}.treb-main .treb-autocomplete-tooltip .function-description{font-style:italic}.treb-main .treb-autocomplete{background:var(--treb-autocomplete-background,#fff);border:1px solid var(--treb-autocomplete-border-color,var(--treb-ui-border-color,#ccc));border-radius:2px;box-shadow:0 1px 4px 2px hsla(0,0%,43%,.2);font-size:14px}.treb-main .treb-autocomplete li{color:var(--treb-autocomplete-entry-color,#333)}.treb-main .treb-autocomplete li a.selected{background:var(--treb-autocomplete-selected-entry-background,#2e8dd6);color:var(--treb-autocomplete-selected-entry-color,#fff)}.treb-main .treb-header-overlay{stroke:none;color:var(--treb-selection-color-unfocused,var(--treb-selection-color,#4caaf1))}.treb-main .treb-header-overlay .treb-overlay{fill:#000;stroke:none;opacity:.05}.treb-main .treb-header-overlay .treb-highlight{fill:currentColor}.treb-main .treb-editor-container>div span.highlight-1,.treb-main .treb-overlay-editor span.highlight-1{color:#fa9b05}.treb-main .treb-editor-container>div span.highlight-2,.treb-main .treb-overlay-editor span.highlight-2{color:#3aad3a}.treb-main .treb-editor-container>div span.highlight-3,.treb-main .treb-overlay-editor span.highlight-3{color:#b66d0d}.treb-main .treb-editor-container>div span.highlight-4,.treb-main .treb-overlay-editor span.highlight-4{color:#2176ae}.treb-main .treb-editor-container>div span.highlight-5,.treb-main .treb-overlay-editor span.highlight-5{color:#fe2f01}.treb-main .frozen-selection .selection,.treb-main .treb-grid-selection .selection{stroke-width:var(--treb-selection-stroke-width,2px)}.treb-main .frozen-selection .selection .outline,.treb-main .treb-grid-selection .selection .outline{stroke:currentColor;fill:none}.treb-main .frozen-selection .selection .fill,.treb-main .treb-grid-selection .selection .fill{stroke:none;fill:currentColor;opacity:var(--treb-selection-fill-opacity,.1)}.treb-main .frozen-selection .alternate-selection,.treb-main .treb-grid-selection .alternate-selection{stroke-dasharray:var(--treb-alternate-selection-dasharray,3 2)}.treb-main .frozen-selection .alternate-selection:nth-of-type(1n),.treb-main .treb-grid-selection .alternate-selection:nth-of-type(1n){color:#fbb13c}.treb-main .frozen-selection .alternate-selection:nth-of-type(2n),.treb-main .treb-grid-selection .alternate-selection:nth-of-type(2n){color:#40c040}.treb-main .frozen-selection .alternate-selection:nth-of-type(3n),.treb-main .treb-grid-selection .alternate-selection:nth-of-type(3n){color:#b66d0d}.treb-main .frozen-selection .alternate-selection:nth-of-type(4n),.treb-main .treb-grid-selection .alternate-selection:nth-of-type(4n){color:#2176ae}.treb-main .frozen-selection .alternate-selection:nth-of-type(5n),.treb-main .treb-grid-selection .alternate-selection:nth-of-type(5n){color:#fe6847}.treb-main .frozen-selection .primary-selection,.treb-main .treb-grid-selection .primary-selection{color:var(--treb-selection-color-unfocused,var(--treb-selection-color,#4caaf1))}.treb-main .frozen-selection .primary-selection .nub,.treb-main .treb-grid-selection .primary-selection .nub{stroke:#fff;fill:currentColor;stroke-width:1px}.treb-main .treb-tooltip{background:var(--treb-resize-tooltip-background,rgba(0,0,0,.8));border-color:var(--treb-resize-tooltip-background,rgba(0,0,0,.8));color:var(--treb-resize-tooltip-color,#fff);font-size:11pt}.treb-main .treb-spreadsheet-footer .treb-add-tab,.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li{background:var(--treb-tab-bar-tab-background,#eeeef2);color:var(--treb-tab-bar-tab-color,var(--treb-ui-color,inherit))}.treb-main .treb-spreadsheet-footer .treb-add-tab[selected],.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li[selected]{background:var(--treb-tab-bar-active-tab-background,#fff);color:var(--treb-tab-bar-active-tab-color,var(--treb-ui-color,inherit))}.treb-main .treb-formula-bar .treb-address-label,.treb-main .treb-formula-bar .treb-editor-container{background:var(--treb-formula-bar-background,transparent);color:var(--treb-formula-bar-color,var(--treb-ui-color,inherit))}.treb-main .treb-formula-bar .treb-address-label[locked],.treb-main .treb-formula-bar .treb-editor-container[locked]{background:var(--treb-formula-bar-locked-background,#eef4fc);position:relative}.treb-main .treb-formula-bar .treb-address-label[locked]:after,.treb-main .treb-formula-bar .treb-editor-container[locked]:after{--icon:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath fill='currentColor' d='M416 224h-16v-80C400 65 335 0 256 0S112 65 112 144v80H96c-35 0-64 29-64 64v160c0 35 29 64 64 64h320c35 0 64-29 64-64V288c0-35-29-64-64-64Zm-240-80c0-44 36-80 80-80s80 36 80 80v80H176v-80Z'/%3E%3C/svg%3E");background:var(--treb-formula-bar-lock-icon-color,currentColor);content:"";height:12px;mask-image:var(--icon);-webkit-mask-image:var(--icon);mask-position:center;-webkit-mask-position:center;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:12px 12px;-webkit-mask-size:12px 12px;opacity:.4;position:absolute;right:2px;top:2px;width:12px}.treb-main.treb-ua-windows .grid-cells{font-family:var(--treb-grid-font-family-windows,var(--treb-grid-font-family,"Calibri","BlinkMacSystemFont","Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue","sans-serif"));font-size:var(--treb-grid-font-size-windows,var(--treb-grid-font-size,12pt))}.treb-main.treb-ua-osx .grid-cells{font-family:var(--treb-grid-font-family-osx,var(--treb-grid-font-family,inherit));font-size:var(--treb-grid-font-size-osx,var(--treb-grid-font-size,10pt))}.treb-dark-theme{--treb-autocomplete-background:#333;--treb-autocomplete-border-color:#fff;--treb-autocomplete-entry-color:#fff;--treb-autocomplete-selected-entry-background:darkred;--treb-autocomplete-tooltip-background:darkred;--treb-autocomplete-tooltip-border-color:#fff;--treb-autocomplete-tooltip-color:#fff;--treb-chart-background:#000;--treb-chart-grid-color:#976;--treb-chart-text-color:#fff;--treb-dialog-background:#000;--treb-dialog-color:#fff;--treb-dropdown-background:#000;--treb-dropdown-border-color:#fff;--treb-dropdown-caret-active-background:darkred;--treb-dropdown-caret-background:#444;--treb-dropdown-caret-border-color:#fff;--treb-dropdown-caret-color:#fff;--treb-dropdown-color:#fff;--treb-dropdown-selected-background:darkred;--treb-grid-background:#000;--treb-grid-default-color:#fff;--treb-grid-grid-color:#444;--treb-grid-header-background:#444;--treb-grid-header-grid-color:#000;--treb-note-background:#333;--treb-note-border-color:#aaa;--treb-note-color:#fff;--treb-note-marker-color:pink;--treb-resize-tooltip-background:#fff;--treb-resize-tooltip-color:#000;--treb-scale-slider-accent-color:#fff;--treb-scale-slider-background:#333;--treb-scale-slider-border-color:#aaa;--treb-selection-color:#ff0;--treb-selection-fill-opacity:.2;--treb-sidebar-button-background:#000;--treb-sidebar-button-border-color:#888;--treb-stats-value-background:#223;--treb-tab-bar-active-tab-background:#444;--treb-tab-bar-tab-background:#000;--treb-tab-bar-tab-color:#fff;--treb-theme-color-1:#222;--treb-theme-color-2:#ddd;--treb-toolbar-active-button-background:#555;--treb-toolbar-button-background:#000;--treb-toolbar-hover-button-background:#444;--treb-ui-color:#fff;--treb-table-header-background:#334;--treb-table-odd-background:#122;--treb-table-header-font-weight:700;--treb-table-header-border-top:#889;--treb-table-header-border-bottom:#889;--treb-table-footer-border-bottom:#889;--treb-table-odd-border-top:#889;--treb-table-odd-border-bottom:#889;--treb-table-even-border-top:#889;--treb-table-even-border-bottom:#889;--treb-table-total-border-top:#889;--treb-table-total-border-bottom:#889;--treb-table-total-background:#334;--treb-table-total-font-weight:700;--treb-color-scheme:dark;--treb-resize-handle-color:#add8e6;--treb-resize-frame-color:#add8e6;--treb-formula-bar-locked-background:#234;--treb-grid-background:#1e1e1e;--treb-grid-header-background:#565656;--treb-grid-header-color:#ddd;--treb-tab-bar-active-tab-background:field;--treb-tab-bar-tab-background:transparent;--treb-tab-bar-tab-border-color:#444;--treb-ui-border-color:#aaa;--treb-toolbar-button-background:#565656;--treb-toolbar-button-background:#212121;--treb-toolbar-border-color:#434343;--treb-toolbar-color:#ddd}@media (prefers-color-scheme:dark){.treb-light-dark-theme{--treb-autocomplete-background:#333;--treb-autocomplete-border-color:#fff;--treb-autocomplete-entry-color:#fff;--treb-autocomplete-selected-entry-background:darkred;--treb-autocomplete-tooltip-background:darkred;--treb-autocomplete-tooltip-border-color:#fff;--treb-autocomplete-tooltip-color:#fff;--treb-chart-background:#000;--treb-chart-grid-color:#976;--treb-chart-text-color:#fff;--treb-dialog-background:#000;--treb-dialog-color:#fff;--treb-dropdown-background:#000;--treb-dropdown-border-color:#fff;--treb-dropdown-caret-active-background:darkred;--treb-dropdown-caret-background:#444;--treb-dropdown-caret-border-color:#fff;--treb-dropdown-caret-color:#fff;--treb-dropdown-color:#fff;--treb-dropdown-selected-background:darkred;--treb-grid-background:#000;--treb-grid-default-color:#fff;--treb-grid-grid-color:#444;--treb-grid-header-background:#444;--treb-grid-header-grid-color:#000;--treb-note-background:#333;--treb-note-border-color:#aaa;--treb-note-color:#fff;--treb-note-marker-color:pink;--treb-resize-tooltip-background:#fff;--treb-resize-tooltip-color:#000;--treb-scale-slider-accent-color:#fff;--treb-scale-slider-background:#333;--treb-scale-slider-border-color:#aaa;--treb-selection-color:#ff0;--treb-selection-fill-opacity:.2;--treb-sidebar-button-background:#000;--treb-sidebar-button-border-color:#888;--treb-stats-value-background:#223;--treb-tab-bar-active-tab-background:#444;--treb-tab-bar-tab-background:#000;--treb-tab-bar-tab-color:#fff;--treb-theme-color-1:#222;--treb-theme-color-2:#ddd;--treb-toolbar-active-button-background:#555;--treb-toolbar-button-background:#000;--treb-toolbar-hover-button-background:#444;--treb-ui-color:#fff;--treb-table-header-background:#334;--treb-table-odd-background:#122;--treb-table-header-font-weight:700;--treb-table-header-border-top:#889;--treb-table-header-border-bottom:#889;--treb-table-footer-border-bottom:#889;--treb-table-odd-border-top:#889;--treb-table-odd-border-bottom:#889;--treb-table-even-border-top:#889;--treb-table-even-border-bottom:#889;--treb-table-total-border-top:#889;--treb-table-total-border-bottom:#889;--treb-table-total-background:#334;--treb-table-total-font-weight:700;--treb-color-scheme:dark;--treb-resize-handle-color:#add8e6;--treb-resize-frame-color:#add8e6;--treb-formula-bar-locked-background:#234;--treb-grid-background:#1e1e1e;--treb-grid-header-background:#565656;--treb-grid-header-color:#ddd;--treb-tab-bar-active-tab-background:field;--treb-tab-bar-tab-background:transparent;--treb-tab-bar-tab-border-color:#444;--treb-ui-border-color:#aaa;--treb-toolbar-button-background:#565656;--treb-toolbar-button-background:#212121;--treb-toolbar-border-color:#434343;--treb-toolbar-color:#ddd}}.treb-chart{background:var(--treb-chart-background,#fff)}.treb-chart .series-1{color:var(--treb-chart-color-series-1,#80b1d3)}.treb-chart .series-2{color:var(--treb-chart-color-series-2,#8dd3c7)}.treb-chart .series-3{color:var(--treb-chart-color-series-3,#bebada)}.treb-chart .series-4{color:var(--treb-chart-color-series-4,#fb8072)}.treb-chart .series-5{color:var(--treb-chart-color-series-5,#fdb462)}.treb-chart .series-6{color:var(--treb-chart-color-series-6,#b3de69)}.treb-chart .series-7{color:var(--treb-chart-color-series-7,#fccde5)}.treb-chart .series-8{color:var(--treb-chart-color-series-8,#d9d9d9)}.treb-chart .series-9{color:var(--treb-chart-color-series-9,#bc80bd)}.treb-chart .series-10{color:var(--treb-chart-color-series-10,#ccebc5)}.treb-chart .series-11{color:var(--treb-chart-color-series-11,#ffed6f)}.treb-chart .series-12{color:var(--treb-chart-color-series-12,#ffffb3)}.treb-chart .chart-title{font-size:1.4em}.treb-chart .axis-group{font-size:.9em}.treb-chart text{fill:var(--treb-chart-text-color,#000);stroke:none}.treb-chart .legend{font-size:1.05em}.treb-chart .legend rect{fill:currentColor}.treb-chart .chart-grid,.treb-chart .chart-ticks{stroke:var(--treb-chart-grid-color,#ddd)}.treb-chart .label-target{stroke:none;fill:transparent}.treb-chart path.label-target{transition:fill .2s}.treb-chart path.label-target:hover{fill:rgba(0,0,0,.15)}.treb-chart .data-label{opacity:0;pointer-events:none;transition:opacity .2s ease-in-out}.treb-chart .data-label text{fill:#fff}.treb-chart .data-label path{fill:#000}.treb-chart .data-label .marker-highlight{fill:currentColor;stroke:none}.treb-chart .label-target:hover+.data-label{opacity:1}.treb-chart .chart-line{stroke:currentColor;fill:none;stroke-width:2}.treb-chart .chart-area .line{stroke:currentColor;stroke-width:2px;fill:none}.treb-chart .chart-area .fill{fill:currentColor;opacity:.5}.treb-chart .scatter-plot{stroke-width:3;fill:none;stroke:currentColor}.treb-chart .scatter-plot .fill{fill:currentColor;stroke:none;opacity:.5}.treb-chart .scatter-plot .marker{stroke-width:2.5px;fill:#fff;transition:stroke-width .15s ease-in}.treb-chart .scatter-plot .marker:hover{stroke-width:5px}.treb-chart .donut path{fill:currentColor}.treb-chart .donut path.callout{fill:none;stroke:#999;stroke-dasharray:2 2}.treb-chart .donut text.callout-label{font-size:1em}.treb-chart .chart-column{fill:currentColor;stroke:none}.treb-chart .mc-correlation{stroke:currentColor;stroke-width:1}.treb-main{--treb-icon-svg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='153.073' height='133.742' viewBox='0.673 4.629 153.073 133.742'%3E%3ClinearGradient id='a' x1='.673' x2='153.746' y1='71.5' y2='71.5' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' style='stop-color:%235cb5ff'/%3E%3Cstop offset='1' style='stop-color:%230059b9'/%3E%3C/linearGradient%3E%3Cpath fill='url(%23a)' d='M91.656 28.313c-4.989 0-17.266 6.249-21.305 8.504-2.344-2.473-2.603-6.162-3.036-10.933-2.344 2.429-.824 9.806 0 12.496-10.238 7.635-18.83 15.531-27.597 24.471-2.992-4.729-5.031-8.593-5.726-17.183-3.038 6.509.867 15.057 3.121 19.784-9.674 12.193-19.263 25.297-27.03 37.834-35.488-74.973 72.853-119.534 143.663-88.855-43.867 29.199-55.192 121.353-132.248 96.843-5.423 7.809-9.069 18.006-13.538 27.072-3.73.263-6.334-1.646-7.288-3.12 7.506-18.181 17.183-34.192 27.075-49.984 10.718.306 21.346.478 30.198-1.04-7.681-2.038-16.877-.78-26.032-3.123C37.51 70.361 45.667 62.203 53.78 54.004c8.808.782 17.746 3.21 27.074 1.041-8.111-1.431-15.966-1.952-22.909-4.165 7.594-8.378 22.777-17.491 33.711-22.567z'/%3E%3C/svg%3E")}.treb-main .treb-icon-64{background:no-repeat 50%/100% var(--treb-icon-svg);height:64px;width:64px}.treb-main .treb-dialog-mask{align-items:center;display:flex;height:100%;justify-content:center;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transition:opacity .2s;width:100%;z-index:1000}.treb-main .treb-embed-dialog{align-items:center;background:var(--treb-dialog-background,#fff);border:1px solid var(--treb-dialog-border-color,var(--treb-ui-border-color,#999));border-radius:3px;border-top:3px solid #999;box-shadow:0 4px 6px -4px rgba(0,0,0,.3);color:var(--treb-dialog-color,#000);display:flex;flex-direction:row;font-size:var(--treb-dialog-font-size,16px);line-height:1.6em;padding:1rem;position:relative;text-align:left}.treb-main .treb-embed-dialog>*{display:none}.treb-main .treb-embed-dialog>div{position:relative}.treb-main .treb-embed-dialog>:nth-child(2){display:block;flex-grow:1;padding:2px 20px 2px 12px}.treb-main .treb-embed-dialog>.treb-close-box{background:transparent;border:0;padding:4px;position:absolute;right:0;top:0}.treb-main .treb-embed-dialog>.treb-close-box>svg{fill:#73828c;cursor:default;height:20px;width:20px}.treb-main .treb-embed-dialog>.treb-close-box>svg:active,.treb-main .treb-embed-dialog>.treb-close-box>svg:hover{fill:#049cfb}.treb-main .treb-embed-dialog small{display:block;font-size:.9em}.treb-main .treb-embed-dialog a{color:inherit;text-decoration:none}.treb-main .treb-embed-dialog a:active,.treb-main .treb-embed-dialog a:hover{color:#049cfb}.treb-main .treb-embed-dialog.dialog-type-success{border-top-color:#44d926;border-top-width:3px}.treb-main .treb-embed-dialog.dialog-type-about{border-top-color:#009dff;border-top-width:3px}.treb-main .treb-embed-dialog.dialog-type-error{border-top-color:#f92f06;border-top-width:3px}.treb-main .treb-embed-dialog.dialog-type-info{border-top-color:#009dff;border-top-width:3px}.treb-main .treb-embed-dialog .treb-embed-dialog-message,.treb-main .treb-embed-dialog .treb-embed-dialog-title{white-space:pre}.treb-main .treb-embed-dialog .treb-embed-progress-container{border:1px solid #ddd;height:6px;margin:1rem auto .5rem;position:relative;width:100%}.treb-main .treb-embed-dialog .treb-embed-progress-bar{background:#52880b;height:100%;left:0;position:relative;top:0}.treb-main .treb-spinner{align-items:center;background:transparent;display:flex;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:visibility .25s,opacity .25s ease;visibility:collapse;width:100%;z-index:1000}.treb-main .treb-spinner.visible{opacity:1;transition:visibility 0s,opacity 1s ease;visibility:visible}.treb-main .treb-spinner>div{display:inline-block;height:80px;position:relative;width:80px}.treb-main .treb-spinner>div div{animation:treb-spinner 1.2s cubic-bezier(.5,0,.5,1) infinite;border:8px solid #fff;border-color:var(--treb-spinner-color,currentColor) transparent transparent transparent;border-radius:50%;box-sizing:border-box;display:block;height:64px;margin:8px;position:absolute;width:64px}.treb-main .treb-spinner>div div:first-child{animation-delay:-.45s}.treb-main .treb-spinner>div div:nth-child(2){animation-delay:-.3s}.treb-main .treb-spinner>div div:nth-child(3){animation-delay:-.15s}@keyframes treb-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.treb-main{--icon-x:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"/></svg>');--icon-popout:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28"><path fill="currentColor" d="M22 14.5v5c0 2.484-2.016 4.5-4.5 4.5h-13A4.502 4.502 0 0 1 0 19.5v-13C0 4.016 2.016 2 4.5 2h11c.281 0 .5.219.5.5v1c0 .281-.219.5-.5.5h-11A2.507 2.507 0 0 0 2 6.5v13C2 20.875 3.125 22 4.5 22h13c1.375 0 2.5-1.125 2.5-2.5v-5c0-.281.219-.5.5-.5h1c.281 0 .5.219.5.5zM28 1v8c0 .547-.453 1-1 1a.99.99 0 0 1-.703-.297l-2.75-2.75L13.36 17.14c-.094.094-.234.156-.359.156s-.266-.063-.359-.156l-1.781-1.781c-.094-.094-.156-.234-.156-.359s.063-.266.156-.359L21.048 4.454l-2.75-2.75a.996.996 0 0 1-.297-.703c0-.547.453-1 1-1h8c.547 0 1 .453 1 1z"/></svg>');--icon-toolbar:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 28"><path fill="currentColor" d="M5.5 22v2H0v-2h5.5zm5.5-2c.547 0 1 .453 1 1v4c0 .547-.453 1-1 1H7c-.547 0-1-.453-1-1v-4c0-.547.453-1 1-1h4zm2.5-6v2H0v-2h13.5zm-10-8v2H0V6h3.5zM24 22v2H12.5v-2H24zM9 4c.547 0 1 .453 1 1v4c0 .547-.453 1-1 1H5c-.547 0-1-.453-1-1V5c0-.547.453-1 1-1h4zm10 8c.547 0 1 .453 1 1v4c0 .547-.453 1-1 1h-4c-.547 0-1-.453-1-1v-4c0-.547.453-1 1-1h4zm5 2v2h-3.5v-2H24zm0-8v2H10.5V6H24z"/></svg>');--icon-export:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 26 28"><path fill="currentColor" d="M20 21c0-.547-.453-1-1-1s-1 .453-1 1 .453 1 1 1 1-.453 1-1zm4 0c0-.547-.453-1-1-1s-1 .453-1 1 .453 1 1 1 1-.453 1-1zm2-3.5v5a1.5 1.5 0 0 1-1.5 1.5h-23A1.5 1.5 0 0 1 0 22.5v-5A1.5 1.5 0 0 1 1.5 16h7.266l2.109 2.125c.578.562 1.328.875 2.125.875s1.547-.313 2.125-.875L17.25 16h7.25a1.5 1.5 0 0 1 1.5 1.5zm-5.078-8.891a.984.984 0 0 1-.219 1.094l-7 7c-.187.203-.453.297-.703.297s-.516-.094-.703-.297l-7-7a.984.984 0 0 1-.219-1.094C5.234 8.25 5.594 8 6 8h4V1c0-.547.453-1 1-1h4c.547 0 1 .453 1 1v7h4c.406 0 .766.25.922.609z"/></svg>');--icon-reset:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 28"><path fill="currentColor" d="M23.609 16.5c0 .031 0 .078-.016.109C22.265 22.14 17.702 26 11.937 26c-3.047 0-6-1.203-8.219-3.313l-2.016 2.016A.996.996 0 0 1 .999 25c-.547 0-1-.453-1-1v-7c0-.547.453-1 1-1h7c.547 0 1 .453 1 1a.99.99 0 0 1-.297.703l-2.141 2.141A7.985 7.985 0 0 0 11.998 22a7.976 7.976 0 0 0 6.813-3.813c.375-.609.562-1.203.828-1.828.078-.219.234-.359.469-.359h3c.281 0 .5.234.5.5zM24 4v7c0 .547-.453 1-1 1h-7c-.547 0-1-.453-1-1a.99.99 0 0 1 .297-.703l2.156-2.156A8.036 8.036 0 0 0 12 6a7.976 7.976 0 0 0-6.813 3.813c-.375.609-.562 1.203-.828 1.828-.078.219-.234.359-.469.359H.781a.503.503 0 0 1-.5-.5v-.109C1.625 5.844 6.234 2 12 2c3.063 0 6.047 1.219 8.266 3.313l2.031-2.016A.996.996 0 0 1 23 3c.547 0 1 .453 1 1z"/></svg>');--icon-about:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 28"><path fill="currentColor" d="M14 21.5v-3c0-.281-.219-.5-.5-.5h-3c-.281 0-.5.219-.5.5v3c0 .281.219.5.5.5h3c.281 0 .5-.219.5-.5zM18 11c0-2.859-3-5-5.688-5-2.547 0-4.453 1.094-5.797 3.328a.49.49 0 0 0 .125.656l2.063 1.563a.477.477 0 0 0 .297.094.498.498 0 0 0 .391-.187c.734-.938 1.047-1.219 1.344-1.437.266-.187.781-.375 1.344-.375 1 0 1.922.641 1.922 1.328 0 .812-.422 1.219-1.375 1.656-1.109.5-2.625 1.797-2.625 3.313v.562c0 .281.219.5.5.5h3c.281 0 .5-.219.5-.5 0-.359.453-1.125 1.188-1.547 1.188-.672 2.812-1.578 2.812-3.953zm6 3c0 6.625-5.375 12-12 12S0 20.625 0 14 5.375 2 12 2s12 5.375 12 12z"/></svg>');--icon-chevron-left:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21 28"><path fill="currentColor" d="M18.297 4.703 10 13l8.297 8.297a.99.99 0 0 1 0 1.406l-2.594 2.594a.99.99 0 0 1-1.406 0L2.703 13.703a.99.99 0 0 1 0-1.406L14.297.703a.99.99 0 0 1 1.406 0l2.594 2.594a.99.99 0 0 1 0 1.406z"/></svg>');--icon-chevron-right:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 28"><path fill="currentColor" d="M17.297 13.703 5.703 25.297a.99.99 0 0 1-1.406 0l-2.594-2.594a.99.99 0 0 1 0-1.406L10 13 1.703 4.703a.99.99 0 0 1 0-1.406L4.297.703a.99.99 0 0 1 1.406 0l11.594 11.594a.99.99 0 0 1 0 1.406z"/></svg>');--icon-revert:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 28"><path fill="currentColor" d="M24 14c0 6.609-5.391 12-12 12a11.972 11.972 0 0 1-9.234-4.328.52.52 0 0 1 .031-.672l2.141-2.156a.599.599 0 0 1 .391-.141.51.51 0 0 1 .359.187A7.91 7.91 0 0 0 12 21.999c4.406 0 8-3.594 8-8s-3.594-8-8-8A7.952 7.952 0 0 0 6.563 8.14l2.141 2.156a.964.964 0 0 1 .219 1.078 1.002 1.002 0 0 1-.922.625h-7c-.547 0-1-.453-1-1v-7c0-.406.25-.766.625-.922a.964.964 0 0 1 1.078.219l2.031 2.016c2.203-2.078 5.187-3.313 8.266-3.313 6.609 0 12 5.391 12 12zM14 9.5v7c0 .281-.219.5-.5.5h-5a.494.494 0 0 1-.5-.5v-1c0-.281.219-.5.5-.5H12V9.5c0-.281.219-.5.5-.5h1c.281 0 .5.219.5.5z"/></svg>');--icon-text-align-left:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path fill-rule="evenodd" d="M2 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z"/></svg>');--icon-text-align-center:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path fill-rule="evenodd" d="M4 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z"/></svg>');--icon-text-align-right:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path fill-rule="evenodd" d="M6 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z"/></svg>');--icon-text-align-top:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='16' height='16'%3E%3Cpath d='M8 15a.5.5 0 0 0 .5-.5V5.707l3.146 3.146a.5.5 0 0 0 .707-.707l-4-4a.5.5 0 0 0-.706-.001l-.001.001-4 4a.5.5 0 0 0 .708.707L7.5 5.707V14.5a.5.5 0 0 0 .5.5z'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10' d='M3 1.5h10'/%3E%3C/svg%3E");--icon-text-align-middle:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8zm7-8a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 4.293V.5A.5.5 0 0 1 8 0zm-.5 11.707-1.146 1.147a.5.5 0 0 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 11.707V15.5a.5.5 0 0 1-1 0v-3.793z"/></svg>');--icon-text-align-bottom:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='16' height='16'%3E%3Cpath d='M8 1a.5.5 0 0 0-.5.5v8.793L4.354 7.146a.5.5 0 0 0-.707.707l4 4a.5.5 0 0 0 .707.001l.001-.001 4-4a.5.5 0 0 0-.708-.707L8.5 10.293V1.5A.5.5 0 0 0 8 1z'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10' d='M13 14.5H3'/%3E%3C/svg%3E");--icon-file-menu:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M.54 3.87.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3h3.982a2 2 0 0 1 1.992 2.181l-.637 7A2 2 0 0 1 13.174 14H2.826a2 2 0 0 1-1.991-1.819l-.637-7a1.99 1.99 0 0 1 .342-1.31zM2.19 4a1 1 0 0 0-.996 1.09l.637 7a1 1 0 0 0 .995.91h10.348a1 1 0 0 0 .995-.91l.637-7A1 1 0 0 0 13.81 4H2.19zm4.69-1.707A1 1 0 0 0 6.172 2H2.5a1 1 0 0 0-1 .981l.006.139C1.72 3.042 1.95 3 2.19 3h5.396l-.707-.707z"/></svg>');--icon-wrap-text:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M4 5h8a.5.5 0 0 0 0-1H4a.5.5 0 0 0 0 1zM10 8H4a.5.5 0 0 0 0 1h6a1.5 1.5 0 0 1 0 3v-1.203l-2.953 1.707L10 14.203V13a2.5 2.5 0 1 0 0-5zM3.75 12.5a.5.5 0 0 0 .5.5H6v-1H4.25a.5.5 0 0 0-.5.5z"/></svg>');--icon-unmerge-cells:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M1.5 1a.5.5 0 0 0-.5.5v4a.5.5 0 0 1-1 0v-4A1.5 1.5 0 0 1 1.5 0h4a.5.5 0 0 1 0 1h-4zM10 .5a.5.5 0 0 1 .5-.5h4A1.5 1.5 0 0 1 16 1.5v4a.5.5 0 0 1-1 0v-4a.5.5 0 0 0-.5-.5h-4a.5.5 0 0 1-.5-.5zM.5 10a.5.5 0 0 1 .5.5v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 0 14.5v-4a.5.5 0 0 1 .5-.5zm15 0a.5.5 0 0 1 .5.5v4a1.5 1.5 0 0 1-1.5 1.5h-4a.5.5 0 0 1 0-1h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 1 .5-.5z"/></svg>');--icon-merge-cells:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M5.5 0a.5.5 0 0 1 .5.5v4A1.5 1.5 0 0 1 4.5 6h-4a.5.5 0 0 1 0-1h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 1 .5-.5zm5 0a.5.5 0 0 1 .5.5v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 10 4.5v-4a.5.5 0 0 1 .5-.5zM0 10.5a.5.5 0 0 1 .5-.5h4A1.5 1.5 0 0 1 6 11.5v4a.5.5 0 0 1-1 0v-4a.5.5 0 0 0-.5-.5h-4a.5.5 0 0 1-.5-.5zm10 1a1.5 1.5 0 0 1 1.5-1.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 0-.5.5v4a.5.5 0 0 1-1 0v-4z"/></svg>');--icon-lock:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2zm3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2zM5 8h6a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1z"/></svg>');--icon-comment:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"/></svg>');--icon-fill-color:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M6.192 2.78c-.458-.677-.927-1.248-1.35-1.643a2.972 2.972 0 0 0-.71-.515c-.217-.104-.56-.205-.882-.02-.367.213-.427.63-.43.896-.003.304.064.664.173 1.044.196.687.556 1.528 1.035 2.402L.752 8.22c-.277.277-.269.656-.218.918.055.283.187.593.36.903.348.627.92 1.361 1.626 2.068.707.707 1.441 1.278 2.068 1.626.31.173.62.305.903.36.262.05.64.059.918-.218l5.615-5.615c.118.257.092.512.05.939-.03.292-.068.665-.073 1.176v.123h.003a1 1 0 0 0 1.993 0H14v-.057a1.01 1.01 0 0 0-.004-.117c-.055-1.25-.7-2.738-1.86-3.494a4.322 4.322 0 0 0-.211-.434c-.349-.626-.92-1.36-1.627-2.067-.707-.707-1.441-1.279-2.068-1.627-.31-.172-.62-.304-.903-.36-.262-.05-.64-.058-.918.219l-.217.216zM4.16 1.867c.381.356.844.922 1.311 1.632l-.704.705c-.382-.727-.66-1.402-.813-1.938a3.283 3.283 0 0 1-.131-.673c.091.061.204.15.337.274zm.394 3.965c.54.852 1.107 1.567 1.607 2.033a.5.5 0 1 0 .682-.732c-.453-.422-1.017-1.136-1.564-2.027l1.088-1.088c.054.12.115.243.183.365.349.627.92 1.361 1.627 2.068.706.707 1.44 1.278 2.068 1.626.122.068.244.13.365.183l-4.861 4.862a.571.571 0 0 1-.068-.01c-.137-.027-.342-.104-.608-.252-.524-.292-1.186-.8-1.846-1.46-.66-.66-1.168-1.32-1.46-1.846-.147-.265-.225-.47-.251-.607a.573.573 0 0 1-.01-.068l3.048-3.047zm2.87-1.935a2.44 2.44 0 0 1-.241-.561c.135.033.324.11.562.241.524.292 1.186.8 1.846 1.46.45.45.83.901 1.118 1.31a3.497 3.497 0 0 0-1.066.091 11.27 11.27 0 0 1-.76-.694c-.66-.66-1.167-1.322-1.458-1.847z"/></svg>');--icon-text-color:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="16" height="16"><path d="m12.259 14.001-1.389-3.727H5.465l-1.354 3.727h-1.3L7.609 1.397h1.178l4.772 12.604h-1.3zM8.418 3.604a5.908 5.908 0 0 1-.127-.387 3.618 3.618 0 0 1-.11-.501h-.035a5.492 5.492 0 0 1-.247.888L5.86 9.211h4.614L8.418 3.604z"/></svg>');--icon-border-bottom:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969V0zm.937 1h.938V0h-.938v1zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938v1zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469h.031zM9.406 1h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031V1zM1 2.844v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM1 6.594v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5V8.5zm1.406 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031V8.5zM0 9.406v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zM0 15h16v1H0v-1z"/></svg>');--icon-border-top:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M0 0v1h16V0H0zm1 2.844v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM1 6.594v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5V8.5zm1.406 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031V8.5zM0 9.406v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0V16zm1.906 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469h.031zm1.875.5h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469h.031z"/></svg>');--icon-border-left:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M0 0v16h1V0H0zm1.906 1h.938V0h-.938v1zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938v1zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469h.031zM9.406 1h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031V1zM7.5 1.906v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM7.5 3.781v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM7.5 5.656v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM1.906 8.5h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031V8.5zM7.5 9.406v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-8.5.937v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-8.5.937v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zM1.906 16h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469h.031zm1.875.5h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469h.031z"/></svg>');--icon-border-right:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969V0zm.937 1h.938V0h-.938v1zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938v1zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469h.031zM9.406 1h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zM16 0h-1v16h1V0zM1 2.844v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zM1 6.594v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5V8.5zm1.406 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zM0 9.406v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zM0 11.281v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zM0 13.156v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0V16zm1.906 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469h.031zm1.875.5h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1z"/></svg>');--icon-border-double-bottom:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969V0zm.937 1h.938V0h-.938v1zm1.875 0h.938V0H3.78v1h.001zm1.875 0h.938V0h-.938v1zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469h.031zM9.406 1h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031V1zM1 2.844v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM1 4.719V3.78H0v.938l1 .001zm6.5-.938v.938h1V3.78h-1v.001zm7.5 0v.938h1V3.78h-1v.001zM1 6.594v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5V8.5zm1.406 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1h.001zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031V8.5zM0 9.406v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zM0 15h16v1H0v-1zm0-2h16v1H0v-1z"/></svg>');--icon-border-all:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M0 0h16v16H0V0zm1 1v6.5h6.5V1H1zm7.5 0v6.5H15V1H8.5zM15 8.5H8.5V15H15V8.5zM7.5 15V8.5H1V15h6.5z"/></svg>');--icon-border-outer:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M7.5 1.906v.938h1v-.938h-1zm0 1.875v.938h1V3.78h-1zm0 1.875v.938h1v-.938h-1zM1.906 8.5h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zM7.5 9.406v.938h1v-.938h-1zm0 1.875v.938h1v-.938h-1zm0 1.875v.938h1v-.938h-1z"/><path d="M0 0v16h16V0H0zm1 1h14v14H1V1z"/></svg>');--icon-border-none:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M0 0h.969v.5H1v.469H.969V1H.5V.969H0V0zm2.844 1h-.938V0h.938v1zm1.875 0H3.78V0h.938v1zm1.875 0h-.938V0h.938v1zm.937 0V.969H7.5V.5h.031V0h.938v.5H8.5v.469h-.031V1H7.53zm2.813 0h-.938V0h.938v1zm1.875 0h-.938V0h.938v1zm1.875 0h-.938V0h.938v1zM15.5 1h-.469V.969H15V.5h.031V0H16v.969h-.5V1zM1 1.906v.938H0v-.938h1zm6.5.938v-.938h1v.938h-1zm7.5 0v-.938h1v.938h-1zM1 3.78v.938H0V3.78h1zm6.5.938V3.78h1v.938h-1zm7.5 0V3.78h1v.938h-1zM1 5.656v.938H0v-.938h1zm6.5.938v-.938h1v.938h-1zm7.5 0v-.938h1v.938h-1zM.969 8.5H.5v-.031H0V7.53h.5V7.5h.469v.031H1v.938H.969V8.5zm1.875 0h-.938v-1h.938v1zm1.875 0H3.78v-1h.938v1zm1.875 0h-.938v-1h.938v1zm1.875-.031V8.5H7.53v-.031H7.5V7.53h.031V7.5h.938v.031H8.5v.938h-.031zm1.875.031h-.938v-1h.938v1zm1.875 0h-.938v-1h.938v1zm1.875 0h-.938v-1h.938v1zm1.406 0h-.469v-.031H15V7.53h.031V7.5h.469v.031h.5v.938h-.5V8.5zM0 10.344v-.938h1v.938H0zm7.5 0v-.938h1v.938h-1zm8.5-.938v.938h-1v-.938h1zM0 12.22v-.938h1v.938H0zm7.5 0v-.938h1v.938h-1zm8.5-.938v.938h-1v-.938h1zM0 14.094v-.938h1v.938H0zm7.5 0v-.938h1v.938h-1zm8.5-.938v.938h-1v-.938h1zM.969 16H0v-.969h.5V15h.469v.031H1v.469H.969v.5zm1.875 0h-.938v-1h.938v1zm1.875 0H3.78v-1h.938v1zm1.875 0h-.938v-1h.938v1zm.937 0v-.5H7.5v-.469h.031V15h.938v.031H8.5v.469h-.031v.5H7.53zm2.813 0h-.938v-1h.938v1zm1.875 0h-.938v-1h.938v1zm1.875 0h-.938v-1h.938v1zm.937 0v-.5H15v-.469h.031V15h.469v.031h.5V16h-.969z"/></svg>');--icon-palette:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M0 .5A.5.5 0 0 1 .5 0h5a.5.5 0 0 1 .5.5v5.277l4.147-4.131a.5.5 0 0 1 .707 0l3.535 3.536a.5.5 0 0 1 0 .708L10.261 10H15.5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5H3a2.99 2.99 0 0 1-2.121-.879A2.99 2.99 0 0 1 0 13.044m6-.21 7.328-7.3-2.829-2.828L6 7.188v5.647zM4.5 13a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0zM15 15v-4H9.258l-4.015 4H15zM0 .5v12.495V.5z"/><path d="M0 12.995V13a3.07 3.07 0 0 0 0-.005z"/></svg>');--icon-layout:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="20" height="20"><path d="m3 0 17 17.156v-.114z"/><path d="M3 0H0v16h1V1h1.585L19 17.455V19H4v1h16v-2.844z"/><path d="M6.886 3.922 5.343 5.465a.5.5 0 0 0 .708.707l1.539-1.54-.704-.71zM9.702 6.763l-1.53 1.53A.5.5 0 0 0 8.879 9l1.526-1.526-.703-.711zM12.517 9.604 11 11.121a.5.5 0 0 0 .707.707l1.514-1.514-.704-.71zM15.332 12.445l-1.504 1.504a.5.5 0 0 0 .707.707l1.501-1.5-.704-.711zM1 16H0a4 4 0 0 0 4 4v-1c-1.654 0-3-1.346-3-3zM5 9v6h6L5 9zm1 2.414L8.586 14H6v-2.586z"/></svg>');--icon-freeze:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M8 16a.5.5 0 0 1-.5-.5v-1.293l-.646.647a.5.5 0 0 1-.707-.708L7.5 12.793V8.866l-3.4 1.963-.496 1.85a.5.5 0 1 1-.966-.26l.237-.882-1.12.646a.5.5 0 0 1-.5-.866l1.12-.646-.884-.237a.5.5 0 1 1 .26-.966l1.848.495L7 8 3.6 6.037l-1.85.495a.5.5 0 0 1-.258-.966l.883-.237-1.12-.646a.5.5 0 1 1 .5-.866l1.12.646-.237-.883a.5.5 0 1 1 .966-.258l.495 1.849L7.5 7.134V3.207L6.147 1.854a.5.5 0 1 1 .707-.708l.646.647V.5a.5.5 0 1 1 1 0v1.293l.647-.647a.5.5 0 1 1 .707.708L8.5 3.207v3.927l3.4-1.963.496-1.85a.5.5 0 1 1 .966.26l-.236.882 1.12-.646a.5.5 0 0 1 .5.866l-1.12.646.883.237a.5.5 0 1 1-.26.966l-1.848-.495L9 8l3.4 1.963 1.849-.495a.5.5 0 0 1 .259.966l-.883.237 1.12.646a.5.5 0 0 1-.5.866l-1.12-.646.236.883a.5.5 0 1 1-.966.258l-.495-1.849-3.4-1.963v3.927l1.353 1.353a.5.5 0 0 1-.707.708l-.647-.647V15.5a.5.5 0 0 1-.5.5z"/></svg>');--icon-column-chart:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="20" height="20"><path d="M4.5 17.5a.5.5 0 0 1-1 0v-5a.5.5 0 0 1 1 0v5zM12.5 17.5a.5.5 0 0 1-1 0v-9a.5.5 0 0 1 1 0v9zM16.5 17.5a.5.5 0 0 1-1 0v-13a.5.5 0 0 1 1 0v13zM8.5 17.5a.5.5 0 0 1-1 0v-14a.5.5 0 0 1 1 0v14z"/></svg>');--icon-donut-chart:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="20" height="20"><path d="M12 1.23v1.548c2.526.701 4.5 2.699 5.203 5.222h1.565A9.006 9.006 0 0 0 12 1.23zM2.5 10c0-3.51 2.426-6.456 5.688-7.27V1.183A9.001 9.001 0 0 0 1 10c0 1.761.513 3.397 1.387 4.784l1.093-1.093A7.432 7.432 0 0 1 2.5 10zM17.221 12c-.878 3.166-3.778 5.5-7.221 5.5a7.448 7.448 0 0 1-3.692-.979l-1.093 1.093A8.956 8.956 0 0 0 10 19c4.282 0 7.859-2.993 8.77-7h-1.549z"/></svg>');--icon-bar-chart:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="20" height="20"><path d="M2.5 4.5a.5.5 0 0 1 0-1h5a.5.5 0 0 1 0 1h-5zM2.5 12.5a.5.5 0 0 1 0-1h9a.5.5 0 0 1 0 1h-9zM2.5 16.5a.5.5 0 0 1 0-1h13a.5.5 0 0 1 0 1h-13zM2.5 8.5a.5.5 0 0 1 0-1h14a.5.5 0 0 1 0 1h-14z"/></svg>');--icon-line-chart:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="20" height="20"><path d="m1 8 3-3 7 5 8-8v2l-8 8-7-5-3 3z"/></svg>');--icon-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M6.002 5.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z"/><path d="M2.002 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2h-12zm12 1a1 1 0 0 1 1 1v6.5l-3.777-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12V3a1 1 0 0 1 1-1h12z"/></svg>');--icon-recalculate:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="20" height="20"><path d="M9.478 4.022c2.402-.209 4.583 1.047 5.711 3.014l1.083-.095c-1.233-2.528-3.912-4.175-6.881-3.916-2.97.26-5.321 2.347-6.098 5.051l1.083-.095c.768-2.132 2.698-3.748 5.102-3.959zM10.523 15.977c-2.403.211-4.585-1.047-5.712-3.013l-1.08.095c1.234 2.527 3.91 4.175 6.879 3.914 2.971-.259 5.32-2.347 6.095-5.05l-1.08.095c-.769 2.132-2.699 3.749-5.102 3.959z"/><path d="m2.272 15.616 5.197-3-4.098-1.097zM17.728 4.384l-5.197 3 4.098 1.098z"/></svg>');--icon-check:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z"/></svg>');--icon-table:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm15 2h-4v3h4V4zm0 4h-4v3h4V8zm0 4h-4v3h3a1 1 0 0 0 1-1v-2zm-5 3v-3H6v3h4zm-5 0v-3H1v2a1 1 0 0 0 1 1h3zm-4-4h4V8H1v3zm0-4h4V4H1v3zm5-3v3h4V4H6zm4 4H6v3h4V8z"/></svg>')}.treb-main .treb-layout-header{-ms-overflow-style:none;overflow:hidden;overflow-x:scroll;position:relative;scrollbar-width:none}.treb-main .treb-layout-header::-webkit-scrollbar{display:none}.treb-main .treb-toolbar{color:var(--treb-toolbar-color,var(--treb-ui-color,#333));font-size:var(--treb-toolbar-font-size,inherit);gap:.5rem}.treb-main .treb-toolbar,.treb-main .treb-toolbar>div{display:flex;flex-direction:row}.treb-main .treb-toolbar>div>input,.treb-main .treb-toolbar>input{background-color:var(--treb-toolbar-button-background,transparent);border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));height:32px;overflow:hidden;padding-left:.5em;padding-right:.5em;text-overflow:ellipsis}.treb-main .treb-toolbar>.treb-menu>button{border-radius:3px}.treb-main .treb-toolbar>.group>.treb-menu+button,.treb-main .treb-toolbar>.group>button+.treb-menu>button,.treb-main .treb-toolbar>.group>button+button,.treb-main .treb-toolbar>.group>input+.treb-menu>button,.treb-main .treb-toolbar>.group>input+button,.treb-main .treb-toolbar>[composite]>.treb-menu+button,.treb-main .treb-toolbar>[composite]>button+.treb-menu>button,.treb-main .treb-toolbar>[composite]>button+button,.treb-main .treb-toolbar>[composite]>input+.treb-menu>button,.treb-main .treb-toolbar>[composite]>input+button{border-left-width:0}.treb-main .treb-toolbar>.group>button:first-child,.treb-main .treb-toolbar>.group>input:first-child,.treb-main .treb-toolbar>[composite]>button:first-child,.treb-main .treb-toolbar>[composite]>input:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}.treb-main .treb-toolbar>.group>.treb-menu:last-child>button,.treb-main .treb-toolbar>.group>button:last-child,.treb-main .treb-toolbar>[composite]>.treb-menu:last-child>button,.treb-main .treb-toolbar>[composite]>button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}.treb-main .treb-toolbar .treb-icon-buttons>button,.treb-main .treb-toolbar .treb-menu>button,.treb-main .treb-toolbar button[data-icon],.treb-main .treb-toolbar>button,.treb-main .treb-toolbar>div>button{align-items:center;background-color:var(--treb-toolbar-button-background,transparent);border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));display:flex;flex-direction:column;height:32px;justify-content:center;position:relative;width:32px}.treb-main .treb-toolbar .treb-icon-buttons>button[dropdown],.treb-main .treb-toolbar .treb-menu>button[dropdown],.treb-main .treb-toolbar button[data-icon][dropdown],.treb-main .treb-toolbar>button[dropdown],.treb-main .treb-toolbar>div>button[dropdown]{width:16px}.treb-main .treb-toolbar .treb-icon-buttons>button[dropdown]:after,.treb-main .treb-toolbar .treb-menu>button[dropdown]:after,.treb-main .treb-toolbar button[data-icon][dropdown]:after,.treb-main .treb-toolbar>button[dropdown]:after,.treb-main .treb-toolbar>div>button[dropdown]:after{border:5px solid transparent;border-top-color:currentcolor;box-sizing:content-box;content:"";height:0;left:50%;position:absolute;top:18px;transform:translate(-50%,-50%);width:0}.treb-main .treb-toolbar .treb-icon-buttons>button:hover,.treb-main .treb-toolbar .treb-icon-buttons>button[active],.treb-main .treb-toolbar .treb-menu>button:hover,.treb-main .treb-toolbar .treb-menu>button[active],.treb-main .treb-toolbar button[data-icon]:hover,.treb-main .treb-toolbar button[data-icon][active],.treb-main .treb-toolbar>button:hover,.treb-main .treb-toolbar>button[active],.treb-main .treb-toolbar>div>button:hover,.treb-main .treb-toolbar>div>button[active]{background-color:var(--treb-toolbar-hover-button-background,#f3f4f6)}.treb-main .treb-toolbar .treb-icon-buttons>button[data-color-bar]:after,.treb-main .treb-toolbar .treb-menu>button[data-color-bar]:after,.treb-main .treb-toolbar button[data-icon][data-color-bar]:after,.treb-main .treb-toolbar>button[data-color-bar]:after,.treb-main .treb-toolbar>div>button[data-color-bar]:after{background:var(--treb-color-bar-color,var(--treb-default-color,unset));border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));box-sizing:border-box;content:"";display:block;height:6px;position:relative;width:20px}.treb-main .treb-toolbar .treb-icon-buttons>button[data-command]:before,.treb-main .treb-toolbar .treb-icon-buttons>button[data-icon]:before,.treb-main .treb-toolbar .treb-menu>button[data-command]:before,.treb-main .treb-toolbar .treb-menu>button[data-icon]:before,.treb-main .treb-toolbar button[data-icon][data-command]:before,.treb-main .treb-toolbar button[data-icon][data-icon]:before,.treb-main .treb-toolbar>button[data-command]:before,.treb-main .treb-toolbar>button[data-icon]:before,.treb-main .treb-toolbar>div>button[data-command]:before,.treb-main .treb-toolbar>div>button[data-icon]:before{background:currentColor;content:"";display:block;height:20px;mask-image:var(--icon);-webkit-mask-image:var(--icon);mask-position:center;-webkit-mask-position:center;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:var(--icon-size,16px 16px);-webkit-mask-size:var(--icon-size,16px 16px);position:relative;width:20px}.treb-main .treb-toolbar .treb-split{display:flex;flex-direction:column;gap:0}.treb-main .treb-toolbar .treb-split button[data-command]{font-size:10px}.treb-main .treb-toolbar .treb-split button[data-command]:before{display:none}.treb-main .treb-toolbar .treb-split>button{align-items:center;display:flex;height:16px;justify-content:center}.treb-main .treb-toolbar .treb-split>button:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.treb-main .treb-toolbar .treb-split>button:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:0}.treb-main .treb-toolbar .treb-menu{outline:none}.treb-main .treb-toolbar .treb-menu>div{background:var(--treb-toolbar-button-background,#fff);border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));border-radius:3px;box-shadow:0 4px 6px -4px rgba(0,0,0,.4);display:none;flex-direction:column;margin-top:.5rem;position:fixed;top:48px;z-index:20}.treb-main .treb-toolbar .treb-menu>div button{background:transparent;border:0;margin:3px 0;padding:.4rem 1rem;text-align:left;transition:background-color .125s ease;white-space:nowrap}.treb-main .treb-toolbar .treb-menu>div button:hover{background:var(--treb-toolbar-hover-button-background,#f3f4f6)}.treb-main .treb-toolbar .treb-menu>div.treb-icon-buttons>.treb-menu>button,.treb-main .treb-toolbar .treb-menu>div.treb-icon-buttons>button{padding:0}.treb-main .treb-toolbar .treb-menu>div>[separator]{background:var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));height:1px;margin:2px 0}.treb-main .treb-toolbar .treb-menu.visible>div,.treb-main .treb-toolbar .treb-menu:focus-within>div{display:flex}.treb-main .treb-toolbar [data-icon=file-menu]{--icon:var(--icon-file-menu)}.treb-main .treb-toolbar [data-command=justify-left]{--icon:var(--icon-text-align-left)}.treb-main .treb-toolbar [data-command=justify-right]{--icon:var(--icon-text-align-right)}.treb-main .treb-toolbar [data-command=justify-center]{--icon:var(--icon-text-align-center)}.treb-main .treb-toolbar [data-command=align-top]{--icon:var(--icon-text-align-top)}.treb-main .treb-toolbar [data-command=align-middle]{--icon:var(--icon-text-align-middle)}.treb-main .treb-toolbar [data-command=align-bottom]{--icon:var(--icon-text-align-bottom)}.treb-main .treb-toolbar [data-command=merge-cells]{--icon:var(--icon-merge-cells)}.treb-main .treb-toolbar [data-command=unmerge-cells]{--icon:var(--icon-unmerge-cells)}.treb-main .treb-toolbar [data-command=fill-color]{--icon:var(--icon-fill-color)}.treb-main .treb-toolbar [data-command=text-color]{--icon:var(--icon-text-color)}.treb-main .treb-toolbar [data-command=lock-cells]{--icon:var(--icon-lock)}.treb-main .treb-toolbar [data-command=wrap-text]{--icon:var(--icon-wrap-text)}.treb-main .treb-toolbar [data-icon=comment]{--icon:var(--icon-comment)}.treb-main .treb-toolbar [data-icon=table]{--icon:var(--icon-table)}.treb-main .treb-toolbar [data-icon=layout]{--icon:var(--icon-layout)}.treb-main .treb-toolbar [data-command=freeze-panes]{--icon:var(--icon-freeze)}.treb-main .treb-toolbar [data-command=insert-column-chart]{--icon:var(--icon-column-chart)}.treb-main .treb-toolbar [data-command=insert-donut-chart]{--icon:var(--icon-donut-chart)}.treb-main .treb-toolbar [data-command=insert-bar-chart]{--icon:var(--icon-bar-chart)}.treb-main .treb-toolbar [data-command=insert-line-chart]{--icon:var(--icon-line-chart)}.treb-main .treb-toolbar [data-command=insert-image]{--icon:var(--icon-image)}.treb-main .treb-toolbar [data-command=border-bottom]{--icon:var(--icon-border-bottom)}.treb-main .treb-toolbar [data-command=border-left]{--icon:var(--icon-border-left)}.treb-main .treb-toolbar [data-command=border-right]{--icon:var(--icon-border-right)}.treb-main .treb-toolbar [data-command=border-top]{--icon:var(--icon-border-top)}.treb-main .treb-toolbar [data-command=border-outside]{--icon:var(--icon-border-outer)}.treb-main .treb-toolbar [data-command=border-all]{--icon:var(--icon-border-all)}.treb-main .treb-toolbar [data-command=border-none]{--icon:var(--icon-border-none)}.treb-main .treb-toolbar [data-command=border-double-bottom]{--icon:var(--icon-border-double-bottom)}.treb-main .treb-toolbar [data-icon=palette]{--icon:var(--icon-palette)}.treb-main .treb-toolbar [data-command=recalculate]{--icon:var(--icon-recalculate);--icon-size:20px 20px}.treb-main .treb-toolbar .treb-font-scale{width:4em}.treb-main .treb-toolbar .treb-number-format{width:8em}.treb-main .treb-toolbar .treb-color-chooser button[data-command=set-color]{align-items:center;display:flex;justify-content:center;padding:0;width:32px}.treb-main .treb-toolbar .treb-color-chooser>div{padding:.75rem}.treb-main .treb-toolbar .treb-color-chooser>div+div{padding-top:0}.treb-main .treb-toolbar .treb-color-chooser>div:last-child{align-items:center;display:flex;flex-direction:row;gap:.5rem}.treb-main .treb-toolbar .treb-color-chooser>div:last-child input{flex-grow:1;padding:0 .5rem}.treb-main .treb-toolbar .treb-color-chooser>div:last-child button,.treb-main .treb-toolbar .treb-color-chooser>div:last-child input{border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));border-radius:3px;height:32px}.treb-main .treb-toolbar .treb-color-chooser .treb-swatches{display:grid;gap:.5rem;grid-template-columns:repeat(10,1fr)}.treb-main .treb-toolbar .treb-color-chooser .treb-swatches button{border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));border-radius:2px;height:18px;margin:0;padding:0;width:18px}.treb-main .treb-toolbar .treb-color-chooser .treb-swatches .treb-default-color:before{background:currentColor;content:"";display:block;height:100%;mask-image:var(--icon-x);-webkit-mask-image:var(--icon-x);mask-position:center;-webkit-mask-position:center;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:24px 24px;-webkit-mask-size:24px 24px;opacity:.7;position:relative;width:100%}.treb-main .treb-toolbar .treb-comment-box textarea{border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));font:inherit;height:10rem;line-height:1.5;margin:.5rem;padding:.25rem;resize:both}.treb-main .treb-toolbar .treb-comment-box textarea+div{align-items:center;display:flex;flex-direction:row;gap:.5rem;justify-content:center;padding:0 0 .5rem}.treb-main .treb-toolbar .treb-comment-box textarea+div button{border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));border-radius:3px}.treb-main{all:revert;box-sizing:border-box;color:inherit;color-scheme:var(--treb-color-scheme,unset);display:grid;font-family:var(--treb-default-font,system-ui,"BlinkMacSystemFont","Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue","sans-serif");font-family:BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,"sans-serif";font-size:14px;font-style:normal;font-weight:400;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto minmax(0,1fr);height:100%;position:relative;text-align:start;width:100%}.treb-main a,.treb-main button,.treb-main div,.treb-main input,.treb-main li,.treb-main ol,.treb-main textarea,.treb-main ul{all:revert;box-sizing:border-box;font-family:var(--treb-default-font,system-ui,"BlinkMacSystemFont","Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue","sans-serif")}.treb-main button,.treb-main input{color:inherit;font:inherit}.treb-main *{box-sizing:border-box}.treb-main [contenteditable]{-webkit-user-modify:read-write;-moz-user-modify:read-write}.treb-main[animate] .treb-layout-header{transition:height var(--treb-sidebar-transition,.2s ease),opacity var(--treb-sidebar-transition,.2s ease)}.treb-main .treb-layout-header{grid-column:1/3;grid-row:1;height:1px;opacity:0}.treb-main[toolbar] .treb-layout-header{height:42px;opacity:1}.treb-main[dialog] .treb-layout-header,.treb-main[dialog]>*{opacity:.6}.treb-main[dialog] .treb-dialog-mask{opacity:1;pointer-events:auto}.treb-main .treb-layout-spreadsheet{display:flex;flex-direction:row;gap:1em;grid-column:1;grid-row:2;position:relative;transition:opacity .2s ease;z-index:5}.treb-main .treb-view{display:grid;flex:1 1 0px;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;position:relative}.treb-main .treb-view .treb-spreadsheet-backdrop{box-shadow:0 4px 6px -4px rgba(0,0,0,.4);grid-column:1;grid-row:2;z-index:2}.treb-main .treb-view .treb-spreadsheet-body{position:relative;z-index:4}.treb-main .treb-view .treb-spreadsheet-footer{position:relative;z-index:5}.treb-main .treb-view .treb-layout-resize-handle{display:none}.treb-main .treb-view:last-of-type .treb-layout-resize-handle{align-self:end;border-bottom:.5rem solid var(--treb-resize-handle-color,blue);border-left:.5rem solid transparent;border-right:.5rem solid var(--treb-resize-handle-color,blue);border-top:.5rem solid transparent;cursor:nw-resize;display:block;grid-area:2/1/3/2;height:1rem;justify-self:end;width:1rem;z-index:20}.treb-main[animate] .treb-layout-sidebar{transition:width var(--treb-sidebar-transition,.2s ease),opacity var(--treb-sidebar-transition,.2s ease)}.treb-main .treb-layout-sidebar{align-items:center;display:flex;flex-direction:column;gap:.75rem;grid-column:2;grid-row:2;justify-content:flex-start;overflow:hidden;padding-top:3rem;width:2.5rem;width:3rem}.treb-main[collapsed] .treb-layout-sidebar{opacity:0;width:0}.treb-main[collapsed] .treb-toggle-sidebar-button{background:var(--treb-toolbar-button-background,#fff);border-bottom-right-radius:0;border-color:var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));border-right-color:var(--treb-toolbar-button-background,transparent);border-top-right-radius:0;right:0}.treb-main[collapsed] .treb-toggle-sidebar-button:after{mask-image:var(--icon-chevron-left);-webkit-mask-image:var(--icon-chevron-left)}.treb-main .treb-layout-sidebar>button,.treb-main .treb-toggle-sidebar-button{background:transparent;border:0;margin:0;padding:0}.treb-main .treb-layout-sidebar>button:after,.treb-main .treb-toggle-sidebar-button:after{background:#ccc;content:"";display:block;height:24px;mask-image:var(--icon);-webkit-mask-image:var(--icon);mask-position:center;-webkit-mask-position:center;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;transition:background-color .1s ease;width:24px}.treb-main .treb-layout-sidebar>button:hover:after,.treb-main .treb-toggle-sidebar-button:hover:after{background:#666}.treb-main .treb-layout-sidebar>button[data-command=recalculate],.treb-main .treb-toggle-sidebar-button[data-command=recalculate]{--icon:var(--icon-reset)}.treb-main .treb-layout-sidebar>button[data-command=toggle-toolbar],.treb-main .treb-toggle-sidebar-button[data-command=toggle-toolbar]{--icon:var(--icon-toolbar)}.treb-main .treb-layout-sidebar>button[data-command=revert],.treb-main .treb-toggle-sidebar-button[data-command=revert]{--icon:var(--icon-revert)}.treb-main .treb-layout-sidebar>button[data-command=export-xlsx],.treb-main .treb-toggle-sidebar-button[data-command=export-xlsx]{--icon:var(--icon-export)}.treb-main .treb-layout-sidebar>button[data-command=about],.treb-main .treb-toggle-sidebar-button[data-command=about]{--icon:var(--icon-about)}.treb-main .treb-toggle-sidebar-button{align-items:center;background:transparent;border:1px solid transparent;border-radius:12px;bottom:6rem;display:flex;height:24px;justify-content:center;margin:0;padding:0;position:absolute;right:.5rem;right:calc(1.5rem - 12px);width:24px;z-index:39}.treb-main .treb-toggle-sidebar-button:after{height:12px;mask-image:var(--icon-chevron-right);-webkit-mask-image:var(--icon-chevron-right);width:12px}.treb-main .treb-resize-rect{border:1px dotted var(--treb-resize-frame-color,blue);display:block;height:100%;left:0;position:fixed;top:0;width:100%;z-index:9998}.treb-main .treb-resize-mask{height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:9999}treb-spreadsheet{display:block;position:relative}.treb-default-size{height:550px;width:800px}`;var Ki=`<div class="treb-main treb-theme"><div class="treb-layout-header treb-animate"><div class="treb-toolbar"></div></div><div class="treb-dialog-mask"><div data-bind="dialog" class="treb-embed-dialog"><div data-bind="left"><a href="https://treb.app" target="_blank"><div class="treb-icon-64"></div></a></div><div data-bind="middle"><div data-bind="title" class="treb-embed-dialog-title"></div><div data-bind="message" class="treb-embed-dialog-message"></div><div data-bind="about" class="treb-embed-dialog-body"></div></div><button type="button" title="Close dialog" data-bind="close" class="treb-close-box"><svg viewBox="0 0 16 16"><path d="M11.854 4.146a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708-.708l7-7a.5.5 0 0 1 .708 0z"/><path d="M4.146 4.146a.5.5 0 0 0 0 .708l7 7a.5.5 0 0 0 .708-.708l-7-7a.5.5 0 0 0-.708 0z"/></svg></button></div></div><div class="treb-layout-spreadsheet treb-views"><template class="treb-view-template"><div class="treb-view"><div class="treb-formula-bar notranslate" hidden><div class="treb-address-label"><div></div></div><div class="treb-editor-container"><div contenteditable="true"></div></div></div><div class="treb-spreadsheet-backdrop"></div><div class="treb-spreadsheet-body" role="grid"><div class="treb-grid" tabindex="-1"><div class="treb-overlay-container notranslate" translate="no"><div class="treb-overlay-inset"><div class="treb-overlay-editor" contenteditable tabindex="-1" spellcheck="true" role="gridcell"></div></div></div></div></div><div class="treb-spreadsheet-footer" hidden><button class="treb-delete-tab" title="Delete current sheet" data-command="delete-tab" data-conditional="delete-tab"><svg tabindex="-1" viewbox="0 0 16 16"><path d="M4,4 L12,12 M12,4 L4,12"/></svg></button><ol class="treb-spreadsheet-tabs" role="tablist"></ol><button class="treb-add-tab" data-command="add-tab" data-conditional="add-tab" title="Add sheet">+</button><div class="treb-stats-panel"></div><div class="treb-scale-control" data-conditional="scale-control"></div></div><div class="treb-layout-resize-handle" data-conditional="resize"></div></div></template></div><div class="treb-layout-sidebar treb-animate"><button data-command="recalculate" title="Recalculate"></button> <button data-command="toggle-toolbar" data-conditional="toolbar" title="Toggle toolbar"></button> <button data-command="export-xlsx" data-conditional="export" title="Export as XLSX"></button> <button data-command="revert" data-conditional="revert" title="Revert to original version"></button> <button data-command="about" title="What's this?"></button></div><button class="treb-toggle-sidebar-button" title="Toggle sidebar"></button></div>`;var es='<div class="treb-menu" title="File menu" file-menu><button data-icon="file-menu" menu-target></button><div><button data-command="reset">New document</button><div separator></div><button data-command="import-file">Open file...</button> <button data-command="save-json">Save JSON</button><div separator xlsx-support></div><button data-command="export-xlsx" xlsx-support>Export XLSX</button></div></div><div composite narrow><button data-command="justify-left" data-target="justify" title="Left-align text"></button><div class="treb-menu"><button dropdown></button><div class="treb-icon-buttons" data-replace="justify"><button data-command="justify-left" title="Left-align text"></button> <button data-command="justify-center" title="Center-align text"></button> <button data-command="justify-right" title="Right-align text"></button></div></div></div><div composite narrow><button data-command="align-top" data-target="align" title="Align to top"></button><div class="treb-menu"><button dropdown></button><div class="treb-icon-buttons" data-replace="align"><button data-command="align-top" title="Align to top"></button> <button data-command="align-middle" title="Align to middle"></button> <button data-command="align-bottom" title="Align to bottom"></button></div></div></div><div class="group" wide><button data-command="justify-left" title="Left-align text"></button> <button data-command="justify-center" title="Center-align text"></button> <button data-command="justify-right" title="Right-align text"></button></div><div class="group" wide><button data-command="align-top" title="Align to top"></button> <button data-command="align-middle" title="Align to middle"></button> <button data-command="align-bottom" title="Align to bottom"></button></div><div class="group"><button data-command="wrap-text" title="Wrap text"></button> <button data-command="merge-cells" data-id="merge" data-title="Merge cells" data-active-title="Unmerge cells"></button> <button data-command="lock-cells" data-title="Lock cells" data-active-title="Unlock cells"></button> <button data-command="freeze-panes" data-title="Freeze panes" data-active-title="Unfreeze panes" freeze-button></button> <button data-command="insert-table" data-icon="table" data-title="Insert table" data-active-title="Remove table" table-button></button><div class="treb-menu"><button data-icon="comment" data-title="Comment" data-active-title="Update comment"></button><div class="treb-comment-box"><textarea></textarea><div><button data-command="clear-comment">Clear</button> <button data-command="update-comment">Save</button></div></div></div></div><div composite><button data-command="fill-color" data-color-bar="fill" data-color="{}" title="Fill color"></button><div class="treb-menu treb-color-menu" data-color-command="fill-color" data-replace-color="fill" data-default-color-text="No fill"><button dropdown></button><div class="treb-color-chooser"><div class="treb-caption">Theme colors</div><div class="treb-swatches"></div><div class="treb-caption">Other colors</div><div class="treb-swatches"></div><div><input placeholder="New color" class="treb-color-input"> <button data-command="set-color" data-color=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" viewBox="0 0 16 16"><path d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z"/></svg></button></div></div></div></div><div composite><button data-command="text-color" data-color-bar="text" data-color="{}" title="Text color"></button><div class="treb-menu treb-color-menu" data-color-command="text-color" data-replace-color="text" data-default-color-text="Default text color"><button dropdown></button></div></div><div composite><button data-command="border-bottom" data-target="border" title="Bottom border"></button><div class="treb-menu"><button dropdown></button><div class="treb-icon-buttons" data-replace="border"><button data-command="border-top" title="Top border"></button> <button data-command="border-left" title="Left border"></button> <button data-command="border-right" title="Right border"></button> <button data-command="border-bottom" title="Bottom border"></button> <button data-command="border-double-bottom" title="Double bottom border"></button> <button data-command="border-outside" title="Outside borders"></button> <button data-command="border-all" title="All borders"></button> <button data-command="border-none" title="Clear borders"></button><div separator></div><div class="treb-menu treb-color-menu treb-submenu" data-color-command="border-color" data-replace-color="border" title="Border color" data-default-color-text="Default border color"><button data-icon="palette" data-color-bar="border" data-color="{}"></button></div></div></div></div><div composite font-scale><input class="treb-font-scale" title="Font scale"><div class="treb-menu"><button dropdown></button><div><button data-command="font-scale" data-scale="0.8">0.80</button> <button data-command="font-scale" data-scale="0.9">0.90</button> <button data-command="font-scale" data-scale="1.0">1.00</button> <button data-command="font-scale" data-scale="1.1">1.10</button> <button data-command="font-scale" data-scale="1.2">1.20</button> <button data-command="font-scale" data-scale="1.5">1.50</button> <button data-command="font-scale" data-scale="2.0">2.00</button></div></div></div><div class="treb-menu"><button data-icon="layout" title="Rows & columns"></button><div><button data-command="insert-row">Insert row</button> <button data-command="insert-column">Insert column</button> <button data-command="delete-row">Delete row</button> <button data-command="delete-column">Delete column</button><div separator add-remove-sheet></div><button data-command="insert-sheet" add-remove-sheet>Add sheet</button> <button data-command="delete-sheet" add-remove-sheet>Delete sheet</button></div></div><div composite><input class="treb-number-format" title="Number format"><div class="treb-menu"><button dropdown></button><div class="treb-number-format-menu"></div></div></div><div class="treb-split"><button data-command="decrease-precision" title="Decrease precision"></button> <button data-command="increase-precision" title="Increase precision"></button></div><div composite chart-menu><button data-command="insert-column-chart" data-target="annotation" title="Insert column chart"></button><div class="treb-menu"><button dropdown></button><div class="treb-icon-buttons" data-replace="annotation"><button data-command="insert-column-chart" title="Insert column chart"></button> <button data-command="insert-donut-chart" title="Insert donut chart"></button> <button data-command="insert-bar-chart" title="Insert bar chart"></button> <button data-command="insert-line-chart" title="Insert line chart"></button><div separator></div><button data-command="insert-image" title="Insert image"></button></div></div></div><button data-command="recalculate" title="Recalculate" recalculate-button></button>';var Oe=(d,e,t={},r={})=>{let i=document.createElement(d);if(t.classes&&(Array.isArray(t.classes)?i.classList.add(...t.classes):i.classList.add(t.classes)),t.title&&(i.title=t.title),t.text&&(i.textContent=t.text),t.style&&i.setAttribute("style",t.style),t.data)for(let[s,n]of Object.entries(t.data))i.dataset[s]=n;for(let[s,n]of Object.entries(r))i.setAttribute(s,n);return e&&e.appendChild(i),i},tt=class{constructor(e){this.color_bar_elements={};this.replace_targets={};this.toolbar_controls={};this.swatch_lists={};if(typeof e=="string"&&(e=document.querySelector(e)),typeof HTMLElement<"u"&&e instanceof HTMLElement&&(this.root=e,!document.head.querySelector("style[treb-stylesheet]"))){let r=document.createElement("style");r.setAttribute("treb-stylesheet",""),r.textContent=qi,document.head.prepend(r)}}CoerceAttributeValue(e){if(e===null||e.toString().toLowerCase()==="true"||e==="")return!0;if(e.toLowerCase()==="false")return!1;{let t=Number(e);if(!isNaN(t))return t}return e||""}ParseOptionAttributes(){let e={};if(this.root){let t=this.root.getAttributeNames();for(let r of t){switch(r){case"class":case"style":case"id":continue;case"data-options":case"options":{let s=(this.root.getAttribute(r)||"").split(",");for(let n of s){let a=n.split(/=/);a.length===1?e[a[0]]=!0:e[a[0]]=this.CoerceAttributeValue(a[1])}}continue;case"data-treb":continue;case"inline-document":continue;case"src":e.document=this.root.getAttribute("src")||void 0;continue}r=r.replace(/-/g,"_"),e[r]=this.CoerceAttributeValue(this.root.getAttribute(r))}}return{...e}}AttachElement(e={}){if(e={...this.ParseOptionAttributes(),...e},this.root){if(!e.headless){let t=this.root.getBoundingClientRect();(!t.width||!t.height)&&this.root.classList.add("treb-default-size")}if(this.root.hasAttribute("inline-document")){let t=this.root.getAttribute("inline-document")||"";for(let r of Array.from(this.root.children))if(r instanceof HTMLScriptElement&&r.type==="application/json"){let i=r.getAttribute("name")||"";if(i===t||!i&&t==="true"){let s=r.textContent;if(s)try{e.inline_document=JSON.parse(s)}catch(n){console.error(n)}break}}e.inline_document||console.warn("inline document failed")}this.root.innerHTML=Ki,e.container=this.root.querySelector(".treb-layout-spreadsheet")}this.sheet=new ze(e),this.root&&this.CreateLayout(this.sheet,this.root)}CreateLayout(e,t){new ResizeObserver(()=>e.Resize()).observe(t),this.layout_element=t.querySelector(".treb-main");let i=t.querySelector(".treb-toggle-sidebar-button");if(i&&this.layout_element){let a=this.layout_element;i.addEventListener("click",()=>{let o=a.getAttribute("collapsed");typeof o=="string"&&(o===""||o==="true")?a.removeAttribute("collapsed"):a.setAttribute("collapsed","")})}(e.options.toolbar==="show"||e.options.toolbar==="show-narrow")&&this.layout_element?.setAttribute("toolbar",""),e.options.collapsed&&this.layout_element?.setAttribute("collapsed",""),t.querySelector(".treb-layout-sidebar")?.addEventListener("click",a=>{let o=a.target;if(o.dataset.command)switch(o.dataset.command){case"toggle-toolbar":this.ToggleToolbar();break;default:e.HandleToolbarMessage({command:o.dataset.command});break}}),e.options.toolbar&&this.AttachToolbar(e,t);let n={"table-button":!!e.options.table_button,revert:!!e.options.revert_button,toolbar:!!e.options.toolbar,export:!!e.options.export,resize:!!e.options.resizable,"add-tab":!!e.options.add_tab,"delete-tab":!!e.options.delete_tab||!!e.options.add_tab};for(let[a,o]of Object.entries(n))if(!o){let l=this.layout_element.querySelectorAll(`[data-conditional=${a}]`);for(let c of Array.from(l))c.style.display="none"}if(e.options.resizable){let a={width:0,height:0},o={x:0,y:0},l={x:0,y:0},c=t.querySelector(".treb-views"),h,u,m=t.querySelector(".treb-layout-resize-handle"),f=()=>p(),b=g=>{g.buttons===0?p():(l.x=g.screenX-o.x,l.y=g.screenY-o.y,u&&(u.style.width=a.width+l.x+"px",u.style.height=a.height+l.y+"px"))},p=()=>{if(l.x||l.y){let g=t.getBoundingClientRect();t.style.width=g.width+l.x+"px",t.style.height=g.height+l.y+"px"}h&&(h.removeEventListener("mouseup",f),h.removeEventListener("mousemove",b),h.parentElement?.removeChild(h),h=void 0),u?.parentElement?.removeChild(u),u=void 0};m.addEventListener("mousedown",g=>{g.stopPropagation(),g.preventDefault();let _=t.querySelector(".treb-main");u=Oe("div",_,{classes:"treb-resize-rect"}),h=Oe("div",_,{classes:"treb-resize-mask",style:"cursor: nw-resize;"}),h.addEventListener("mouseup",f),h.addEventListener("mousemove",b),o.x=g.screenX,o.y=g.screenY,l.x=0,l.y=0;let y=c?.querySelectorAll(".treb-spreadsheet-body"),x=Array.from(y||[]).map(w=>w.getBoundingClientRect());if(x.length){let w=JSON.parse(JSON.stringify(x.shift()));for(let E of x)w.top=Math.min(E.top,w.top),w.left=Math.min(E.left,w.left),w.right=Math.max(E.right,w.right),w.bottom=Math.max(E.bottom,w.bottom);let A=w.right-w.left,S=w.bottom-w.top;u.style.top=w.top+"px",u.style.left=w.left+"px",u.style.width=A+"px",u.style.height=S+"px",a.width=A,a.height=S}})}setTimeout(()=>this.layout_element?.setAttribute("animate",""),250)}ToggleToolbar(){if(this.layout_element){let e=this.layout_element.getAttribute("toolbar");typeof e=="string"&&(e===""||e==="true")?this.layout_element.removeAttribute("toolbar"):this.layout_element.setAttribute("toolbar","")}}UpdateSelectionStyle(e,t,r){let i=e.selection_state;r.value="";for(let[o,l]of Object.entries(this.toolbar_controls))l&&(l.removeAttribute("active"),l.dataset.title&&(l.title=l.dataset.title));let s=o=>{o&&(o.setAttribute("active",""),o.dataset.activeTitle&&(o.title=o.dataset.activeTitle))};i.comment&&(s(this.toolbar_controls.comment),r.value=i.comment),i.style?.locked&&s(this.toolbar_controls.locked),i.frozen&&s(this.toolbar_controls.freeze),i.style?.wrap&&s(this.toolbar_controls.wrap),this.toolbar_controls.table&&(i.table?(s(this.toolbar_controls.table),this.toolbar_controls.table.dataset.command="remove-table"):this.toolbar_controls.table.dataset.command="insert-table"),this.toolbar_controls.merge&&(i.merge?(s(this.toolbar_controls.merge),this.toolbar_controls.merge.dataset.command="unmerge-cells"):this.toolbar_controls.merge.dataset.command="merge-cells");let n=this.toolbar_controls.format;n&&(i.style?.number_format?n.value=M.SymbolicName(i.style.number_format)||i.style.number_format:n.value="General");let a=this.toolbar_controls.scale;switch(a&&(a.value=e.FormatNumber(i.relative_font_size||1,"0.00")),i.style?.horizontal_align){case k.HorizontalAlign.Left:s(this.toolbar_controls.left);break;case k.HorizontalAlign.Center:s(this.toolbar_controls.center);break;case k.HorizontalAlign.Right:s(this.toolbar_controls.right);break}switch(i.style?.vertical_align){case k.VerticalAlign.Top:s(this.toolbar_controls.top);break;case k.VerticalAlign.Middle:s(this.toolbar_controls.middle);break;case k.VerticalAlign.Bottom:s(this.toolbar_controls.bottom);break}}UpdateDocumentStyles(e,t){{let a=document.createDocumentFragment(),o=e.document_styles.theme_colors.length,l=["Background","Text","Background","Text","Accent"];if(o){let m=e.document_styles.theme_colors[0].length;for(let f=0;f<m;f++)for(let b=0;b<o;b++){let p=e.document_styles.theme_colors[b][f],g=`background: ${p.resolved};`,_=l[b]||l[4];p.color.tint?_+=` (${(p.color.tint>0?"+":"")+p.color.tint*100}%)`:b===0?this.color_bar_elements.fill?.style.setProperty("--treb-default-color",p.resolved):b===1&&(this.color_bar_elements.text?.style.setProperty("--treb-default-color",p.resolved),this.color_bar_elements.border?.style.setProperty("--treb-default-color",p.resolved)),Oe("button",a,{style:g,title:_,data:{command:"set-color",color:JSON.stringify(p.color)}})}}this.swatch_lists.theme?.replaceChildren(a),a=document.createDocumentFragment(),Oe("button",a,{classes:"treb-default-color",title:"Default color",data:{command:"set-color",color:JSON.stringify({})}});let c=["Black","White","Gray","Red","Orange","Yellow","Green","Blue","Violet"],h=c.map(m=>m.toLowerCase()),u=e.document_styles.colors.filter(m=>!h.includes(m.toLowerCase()));for(let m of[...c,...u]){let f=`background: ${m.toLowerCase()};`;Oe("button",a,{style:f,title:m,data:{command:"set-color",color:JSON.stringify({text:m.toLowerCase()})}})}this.swatch_lists.other?.replaceChildren(a)}let r=["General","Number","Integer","Percent","Fraction","Accounting","Currency","Scientific"],i=["Timestamp","Long Date","Short Date"];for(let a of e.document_styles.number_formats){if(M.SymbolicName(M.Translate(a)))continue;M.Get(a).date_format?i.push(a):r.push(a)}let s=a=>Oe("button",void 0,{text:a,data:{format:a,command:"number-format"}}),n=document.createDocumentFragment();n.append(...r.map(a=>s(a))),n.append(Oe("div",void 0,{},{separator:""})),n.append(...i.map(a=>s(a))),t.textContent="",t.append(n)}ReplaceTemplate(e,t,r=!0){let i=e.querySelector(t);if(i&&i.parentElement){for(let s of Array.from(i.content.children))i.parentElement.insertBefore(s,i);r&&i.parentElement.removeChild(i)}else console.warn("template not found",t)}AttachToolbar(e,t){let r=t.querySelector(".treb-layout-header"),i=t.querySelector(".treb-toolbar");i.innerHTML=es;let s=[];e.options.toolbar==="narrow"||e.options.toolbar==="show-narrow"?s.push(...Array.from(i.querySelectorAll("[wide]"))):s.push(...Array.from(i.querySelectorAll("[narrow]"))),e.options.file_menu||s.push(i.querySelector("[file-menu]")),e.options.font_scale||s.push(i.querySelector("[font-scale]")),e.options.chart_menu||s.push(i.querySelector("[chart-menu]")),e.options.freeze_button||s.push(i.querySelector("[freeze-button]")),e.options.table_button||s.push(i.querySelector("[table-button]")),!e.options.add_tab&&!e.options.delete_tab&&s.push(...Array.from(i.querySelectorAll("[add-remove-sheet]"))),e.options.toolbar_recalculate_button||s.push(i.querySelector("[recalculate-button]"));for(let y of s)y&&y.parentElement?.removeChild(y);let n=i.querySelector(".treb-color-chooser"),a=i.querySelector(".treb-comment-box textarea");for(let[y,x]of Object.entries({top:"[wide] [data-command=align-top]",middle:"[wide] [data-command=align-middle]",bottom:"[wide] [data-command=align-bottom]",left:"[wide] [data-command=justify-left]",right:"[wide] [data-command=justify-right]",center:"[wide] [data-command=justify-center]",wrap:"[data-command=wrap-text]",merge:"[data-id=merge]",comment:"[data-icon=comment]",locked:"[data-command=lock-cells]",freeze:"[data-command=freeze-panes]",table:"[data-icon=table]",format:"input.treb-number-format",scale:"input.treb-font-scale"})){let w=i.querySelector(x);w&&(this.toolbar_controls[y]=w)}let o=n.querySelectorAll(".treb-swatches");this.swatch_lists={theme:o[0],other:o[1]};let l=t.querySelector("[data-command=increase-precision");l&&(l.textContent=this.sheet?.FormatNumber(0,"0.00")||""),l=t.querySelector("[data-command=decrease-precision"),l&&(l.textContent=this.sheet?.FormatNumber(0,"0.0")||""),l=i.querySelector("[data-command=update-comment]"),a.addEventListener("keydown",y=>{y.key==="Enter"&&(y.shiftKey||y.ctrlKey)&&l.click()});for(let y of["border","annotation","align","justify"])this.replace_targets[y]=i.querySelector(`[data-target=${y}`);for(let y of["fill","text","border"])this.color_bar_elements[y]=i.querySelector(`[data-color-bar=${y}]`);i.addEventListener("click",y=>{let x=y.target,w={format:x.dataset.format,scale:x.dataset.scale},A=x?.dataset.command;if(A){let S=x.parentElement?.dataset.replace;if(S){let E=this.replace_targets[S];E&&(E.dataset.command=A,E.title=x.title||"")}switch(/^border-/.test(A)&&(w.color=this.border_color||{}),A){case"text-color":case"fill-color":w.color={};try{w.color=JSON.parse(x.dataset.color||"{}")}catch(E){console.error(E)}break;case"set-color":A=n.dataset.colorCommand||"",w.color={};try{w.color=JSON.parse(x.dataset.color||"{}")}catch(E){console.error(E)}if(A==="border-color"&&(this.border_color=w.color),n.dataset.target){let E=this.color_bar_elements[n.dataset.target];E&&(E.style.setProperty("--treb-color-bar-color",x.style.backgroundColor),E.dataset.color=x.dataset.color||"{}")}break;case"update-comment":w.comment=a.value;break}e.HandleToolbarMessage({command:A,...w})}});let c=(y,x)=>{let w=i.querySelector(y);if(w){let A="";w.addEventListener("focusin",()=>A=w.value),w.addEventListener("keydown",S=>{switch(S.key){case"Escape":w.value=A,e.Focus();break;case"Enter":x(w.value)||(w.value=A,e.Focus());break;default:return}S.stopPropagation(),S.preventDefault()})}};c("input.treb-number-format",y=>y?(e.HandleToolbarMessage({command:"number-format",format:y}),!0):!1),c("input.treb-font-scale",y=>{let x=Number(y);return!x||isNaN(x)?(console.warn("invalid scale value"),!1):(e.HandleToolbarMessage({command:"font-scale",scale:x}),!0)});let h=n.querySelector("input"),u=n.querySelector("input + button");h.addEventListener("input",y=>{if(y instanceof InputEvent&&y.isComposing)return;u.style.background=h.value||"";let x=u.style.backgroundColor||"#fff",w=pe.MeasureColor(x),A=Me.RGBToHSL(w[0],w[1],w[2]);u.style.color=A.l>.5?"#000":"#fff",u.dataset.color=JSON.stringify(u.style.backgroundColor?{text:u.style.backgroundColor}:{})}),h.addEventListener("keydown",y=>{y.key==="Enter"&&(y.stopPropagation(),y.preventDefault(),u.click())}),/firefox/i.test(navigator.userAgent)?r.addEventListener("scroll",()=>{document.activeElement instanceof HTMLElement&&document.activeElement.blur()}):r.addEventListener("scroll",()=>e.Focus());let m=!1,f=y=>{y.key==="Escape"&&(y.stopPropagation(),y.preventDefault(),Promise.resolve().then(()=>e.Focus()))},b=y=>{if(m){if(y.relatedTarget instanceof Node&&i.contains(y.relatedTarget))return;i.removeEventListener("keydown",f),i.removeEventListener("focusout",b),m=!1}},p=y=>{let x=y.target,w=x?.parentElement;if(x?.classList.contains("treb-menu")){w=x;for(let A of Array.from(w.children))if(A.tagName==="BUTTON"){x=A;break}}else if(!w?.classList.contains("treb-menu"))return;if(x&&w){m||(i.addEventListener("focusout",b),i.addEventListener("keydown",f),m=!0),w.dataset.colorCommand&&(n.querySelector(".treb-default-color")?.setAttribute("title",w.dataset.defaultColorText||"Default color"),w.appendChild(n),n.dataset.colorCommand=w.dataset.colorCommand,n.dataset.target=w.dataset.replaceColor||"");let A=w.querySelector("div"),S=r.getBoundingClientRect(),E=x.getBoundingClientRect(),{left:F}=E,$=w.parentElement;$?.hasAttribute("composite")&&(F=$.firstElementChild.getBoundingClientRect().left);let te=A.getBoundingClientRect();w.classList.contains("treb-submenu")?(A.style.top=E.top-te.height/2+"px",F+E.width+6+te.width>S.right?A.style.left=F-6-te.width+"px":A.style.left=F+E.width+6+"px"):(A.style.top=E.bottom+"px",F+te.width>S.right-6?A.style.left=E.right-te.width+"px":A.style.left=F+"px");let me=A.querySelector("textarea");me&&requestAnimationFrame(()=>me.focus())}},g=this.root?.querySelector(".treb-number-format-menu");g&&(this.UpdateDocumentStyles(e,g),this.UpdateSelectionStyle(e,i,a),e.Subscribe(y=>{switch(y.type){case"focus-view":break;case"data":case"document-change":case"load":case"reset":this.UpdateDocumentStyles(e,g),this.UpdateSelectionStyle(e,i,a);break;case"selection":this.UpdateSelectionStyle(e,i,a);break}}));let _=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);if(i.addEventListener("focusin",y=>{p(y)}),_){let y=Array.from(i.querySelectorAll(".treb-menu"));for(let x of y)x.tabIndex=0;i.addEventListener("mousedown",x=>{p(x)})}}};var ir=class{constructor(){this.version="25.9.1"}CreateSpreadsheet(e){let t=e.container,r=new tt(t);if(r.AttachElement(e),!r.sheet)throw new Error("construction failed");return r.sheet}},xn=new ir;if(typeof HTMLElement<"u"){class d extends HTMLElement{constructor(){super();this.instance=new tt(this)}get sheet(){return this.instance.sheet}connectedCallback(){this.instance.AttachElement()}}typeof customElements<"u"&&(customElements.get("treb-spreadsheet")?console.info("custom element treb-spreadsheet is already defined."):customElements.define("treb-spreadsheet",d))}export{xn as TREB,ir as TREBGlobal};
8
+ `)+"<ul>";let i=this.completion_list.offsetHeight,n=!1;this.options.autocomplete_prefer_top?n=r.top>=200:document.documentElement&&Math.max(document.documentElement.clientHeight,window.innerHeight||0)-r.bottom<200&&(n=!0),n?this.completion_list.style.top=r.top-i-5+"px":this.completion_list.style.top=r.bottom+5+"px",this.completion_list.style.left=r.left+"px";let s=this.completion_list.querySelectorAll("a");this.active_element=s[this.selected_index],s[this.selected_index].classList.add("selected"),this.last_completion=s[this.selected_index].textContent||void 0,this.completion_list.scrollTop=this.active_element.offsetTop,this.completion_list_visible=!0}else this.completion_list.style.top="-1000px"}};var ut=(C=>(C[C.Null=0]="Null",C[C.InsertRows=1]="InsertRows",C[C.InsertColumns=2]="InsertColumns",C[C.ResizeRows=3]="ResizeRows",C[C.ResizeColumns=4]="ResizeColumns",C[C.Select=5]="Select",C[C.SetRange=6]="SetRange",C[C.UpdateStyle=7]="UpdateStyle",C[C.UpdateBorders=8]="UpdateBorders",C[C.MergeCells=9]="MergeCells",C[C.UnmergeCells=10]="UnmergeCells",C[C.Clear=11]="Clear",C[C.UpdateTheme=12]="UpdateTheme",C[C.SetNote=13]="SetNote",C[C.SetLink=14]="SetLink",C[C.Freeze=15]="Freeze",C[C.SetName=16]="SetName",C[C.ShowHeaders=17]="ShowHeaders",C[C.AddSheet=18]="AddSheet",C[C.DuplicateSheet=19]="DuplicateSheet",C[C.DeleteSheet=20]="DeleteSheet",C[C.ActivateSheet=21]="ActivateSheet",C[C.RenameSheet=22]="RenameSheet",C[C.ReorderSheet=23]="ReorderSheet",C[C.ShowSheet=24]="ShowSheet",C[C.DataValidation=25]="DataValidation",C[C.Reset=26]="Reset",C[C.SortTable=27]="SortTable",C[C.InsertTable=28]="InsertTable",C[C.RemoveTable=29]="RemoveTable",C))(ut||{});var Si={scrollbars:!0,in_cell_editor:!0,formula_bar:!0,add_tab:!1,tab_bar:"auto",insert_function_button:!1,expand_formula_button:!1,expand:!0,repaint_on_cell_change:!0,grid_over_background:!1};var mt=class{constructor(e={},t,r){this.grid_events=new oe;this.command_log=new oe;this.batch=!1;this.batch_events=[];this.autocomplete_matcher=new Ft;this.flags={};this.model=r,this.view={active_sheet:this.model.sheets.list[0],view_index:this.model.view_count++},this.parser=t,this.options={...Si,...e}}get active_sheet(){return this.view.active_sheet}set active_sheet(e){this.view.active_sheet=e}get view_index(){return this.view.view_index}RemoveTable(e){this.ExecCommand({key:29,table:e})}InsertTable(e,t=!0,r=void 0,i){e.start.sheet_id||(e.start.sheet_id=this.active_sheet.id);let n=this.FindSheet(e);for(let s=e.start.row;s<=e.end.row;s++)for(let a=e.start.column;a<=e.end.column;a++){let o=n.cells.GetCell({row:s,column:a},!1);if(o&&(o.area||o.merge_area||o.table)){this.Error(4);return}}this.ExecCommand({key:28,area:JSON.parse(JSON.stringify(e)),totals:t,sortable:r,theme:i})}ActivateSheet(e){let t=typeof e=="number"?e:void 0,r=typeof e=="string"?e:void 0;this.ExecCommand({key:21,index:t,name:r})}ActivateSheetID(e){this.ExecCommand({key:21,id:e})}DuplicateSheet(e,t,r){let i={key:19,new_name:t,insert_before:r};typeof e>"u"?i.id=this.active_sheet.id:i.index=e,this.ExecCommand(i)}AddSheet(e){this.ExecCommand({key:18,name:e,show:!0})}DeleteSheet(e){if(typeof e>"u"&&!this.model.sheets.list.some((t,r)=>t===this.active_sheet?(e=r,!0):!1))throw new Error("invalid index");this.ExecCommand({key:20,index:e})}InsertSheet(e,t){if(typeof e>"u"&&!this.model.sheets.list.some((r,i)=>r===this.active_sheet?(e=i+1,!0):!1))throw new Error("invalid index");this.ExecCommand({key:18,insert_index:e,name:t,show:!0})}DeleteSheetID(e){this.ExecCommand({key:20,id:e})}Reset(){this.ExecCommand({key:26})}SetLink(e,t){this.ExecCommand({key:14,area:e,reference:t})}ShowAll(){let e=[];for(let t=0;t<this.model.sheets.length;t++)e.push({key:24,index:t,show:!0});this.ExecCommand(e)}ShowSheet(e=0,t=!0){let r={key:24,show:t};typeof e=="string"?r.name=e:r.index=e,this.ExecCommand(r)}SortTable(e,t={}){this.ExecCommand({key:27,table:JSON.parse(JSON.stringify(e)),...ti,...t})}GetFreeze(){return{...this.active_sheet.freeze}}InsertRows(e=0,t=1){this.ExecCommand({key:1,before_row:e,count:t})}GetTableReference(e){return this.model.sheets.Find(e.sheet_id||this.active_sheet.id)?.CellData(e).table||void 0}FromCSV(e){let t=this.parser.decimal_mark===",";t&&(this.parser.argument_separator=",",this.parser.decimal_mark=".");let i=oi(e).map(s=>s.map(a=>{if(a){let o=this.parser.Parse(a);if(o.expression?.type==="complex")return o.expression}return be.TryParse(a).value}));t&&(this.parser.argument_separator=";",this.parser.decimal_mark=",");let n={row:Math.max(0,i.length-1),column:i.reduce((s,a)=>Math.max(s,Math.max(0,a.length-1)),0)};this.ExecCommand([{key:26},{key:6,area:{start:{row:0,column:0},end:n},value:i}])}InsertColumns(e=0,t=1){this.ExecCommand({key:2,before_column:e,count:t})}ReorderSheet(e,t){this.ExecCommand({key:23,index:e,move_before:t})}RenameSheet(e,t){this.ExecCommand({key:22,new_name:t,id:e.id})}Freeze(e=0,t=0,r=!0){this.ExecCommand({key:15,rows:e,columns:t,highlight_transition:r})}SetRowHeight(e,t,r=!0){this.ExecCommand({key:3,row:e,height:t,shrink:r})}SetColumnWidth(e,t=0){this.ExecCommand({key:4,column:e,width:t})}FilterTable(e,t,r){let i=[];if(!e.area.start.sheet_id)throw new Error("invalid table area");let n=this.model.sheets.Find(e.area.start.sheet_id);if(!n)throw new Error("invalid table sheet");let s=[],a=[],o=e.totals_row?e.area.end.row-1:e.area.end.row;t+=e.area.start.column;for(let l=e.area.start.row+1;l<=o;l++){let c=n.CellData({row:l,column:t}),h=r(c),u=n.GetRowHeight(l);h&&!u?s.push(l):!h&&u&&a.push(l)}s&&i.push({key:3,sheet_id:n.id,row:s,height:n.default_row_height}),a&&i.push({key:3,sheet_id:n.id,row:a,height:0}),i.length&&this.ExecCommand(i)}UpdateSheets(e,t=!1,r){O.Reset();let i=e.map(n=>O.FromJSON(n,this.model.theme_style_properties));if(i.length===0&&i.push(O.Blank(this.model.theme_style_properties)),this.model.sheets.Assign(i),this.ResetMetadata(),this.active_sheet=i[0],r){let n=this.model.sheets.Find(r);n&&(this.active_sheet=n)}}SetAutocompleteFunctions(e){let t=[];for(let i of this.model.named_expressions.keys())t.push({name:i,type:0});let r=e.slice(0).concat(this.model.named_ranges.List().map(i=>({name:i.name,type:1})),t);this.autocomplete_matcher.SetFunctions(r)}ResetMetadata(){this.model.document_name=void 0,this.model.user_data=void 0}Serialize(e={}){let t=this.model.sheets.list.map(s=>s.toJSON(e)),r;this.model.tables.size>0&&(r=Array.from(this.model.tables.values()));let i;if(this.model.macro_functions.size){i=[];for(let s of this.model.macro_functions.values())i.push({...s,expression:void 0})}let n=[];if(this.model.named_expressions)for(let[s,a]of this.model.named_expressions){this.parser.Walk(a,l=>{if(l.type==="address"||l.type==="range"){let c=l.type==="range"?l.start:l;if(c.absolute_column=c.absolute_row=!0,!c.sheet){if(c.sheet_id){let h=this.model.sheets.Find(c.sheet_id);h&&(c.sheet=h.name)}c.sheet||(c.sheet=this.active_sheet.name)}return l.type==="range"&&(l.end.absolute_column=l.end.absolute_row=!0),!1}return!0});let o=this.parser.Render(a,{missing:""});n.push({name:s,expression:o})}return{sheet_data:t,active_sheet:this.active_sheet.id,named_ranges:this.model.named_ranges.Count()?this.model.named_ranges.Serialize():void 0,macro_functions:i,tables:r,named_expressions:n.length?n:void 0}}ResizeColumnsInternal(e){let t=e.sheet_id?this.FindSheet(e.sheet_id):this.active_sheet,r=e.column;if(typeof r>"u"){r=[];for(let i=0;i<t.columns;i++)r.push(i)}if(typeof r=="number"&&(r=[r]),e.width)for(let i of r)t.SetColumnWidth(i,e.width);else console.error("auto size not supported")}ResizeRowsInternal(e){let t=e.sheet_id?this.FindSheet(e.sheet_id):this.active_sheet,r=e.row;if(typeof r>"u"){r=[];for(let i=0;i<t.rows;i++)r.push(i)}if(typeof r=="number"&&(r=[r]),e.height)for(let i of r)t.SetRowHeight(i,e.height);else console.error("auto size not supported")}ResetInternal(){O.Reset(),this.UpdateSheets([],!0),this.model.named_ranges.Reset(),this.model.named_expressions.clear(),this.model.macro_functions.clear(),this.model.tables.clear()}ValidatePasteAreas(e){for(let t of e){let r=this.active_sheet;if(t.start.sheet_id&&t.start.sheet_id!==r.id&&(r=this.model.sheets.Find(t.start.sheet_id)),!r)return!1;let i=!0;if(r.cells.Apply2(t,n=>(n.style?.locked&&(console.info("invalid: locked cells"),i=!1),n.merge_area&&(!t.Contains(n.merge_area.start)||!t.Contains(n.merge_area.end))&&(console.info("invalid: merge area"),i=!1),n.area&&(!t.Contains(n.area.start)||!t.Contains(n.area.end))&&(console.info("invalid: array"),i=!1),i)),!i)return!1}return!0}SetValidationInternal(e){let t,r=this.FindSheet(e.area);if(r&&(t=r.cells.GetCell(e.area,!0)),!t)throw new Error("invalid cell in set validation");e.range?t.validation={type:"range",area:e.range,error:!!e.error}:e.list?t.validation={type:"list",list:JSON.parse(JSON.stringify(e.list)),error:!!e.error}:t.validation=void 0}GetValidationRange(e){let t,r=this.FindSheet(e);if(r){t=[],e=r.RealArea(new v(e.start,e.end),!0);for(let i=e.start.row;i<=e.end.row;i++)for(let n=e.start.column;n<=e.end.column;n++){let s=r.CellData({row:i,column:n});s&&s.formatted&&(typeof s.formatted=="string"?t.push(s.formatted):t.push(Y.FormatPartsAsText(s.formatted)))}}return t}DeleteSheetInternal(e){let t=!1,r=-1,i="",n=!1,s=e.name?e.name.toLowerCase():"",a=this.model.sheets.list.filter((o,l)=>l===e.index||o.id===e.id||o.name.toLowerCase()===s?(t=o===this.active_sheet,this.model.named_ranges.RemoveRangesForSheet(o.id),i=o.name,r=l,!1):!0);if(i&&this.RenameSheetReferences(a,i,"#REF")>0&&(n=!0),!a.length)a.push(O.Blank(this.model.theme_style_properties)),r=0;else if(a.every(o=>!o.visible))a.unshift(O.Blank(this.model.theme_style_properties)),r=0;else for(r>=a.length&&(r=0);!a[r].visible;)r++;return this.model.sheets.Assign(a),t&&this.ActivateSheetInternal({key:21,index:r}),n}RenameSheetInternal(e,t){if(!t||ai.test(t))throw new Error("invalid sheet name");let r=t.toLowerCase();for(let n of this.model.sheets.list)if(n!==e&&n.name.toLowerCase()===r)throw new Error("sheet name already exists");let i=e.name;e.name=t,this.model.sheets.Assign(this.model.sheets.list),this.RenameSheetReferences(this.model.sheets.list,i,t)}SortTableInternal(e){if(!e.table.area.start.sheet_id)throw new Error("table has invalid area");let t=this.model.sheets.Find(e.table.area.start.sheet_id);if(!t)throw new Error("invalid sheet in table area");let r=[],i=[],n=e.table.area.end.row;e.table.totals_row&&n--;let s=0,a=0;for(let u=e.table.area.start.row+1;u<=n;u++){if(t.GetRowHeight(u))i.push(u);else continue;let f={row:u,number:0,text:"",type:0,data:[]};for(let b=e.table.area.start.column;b<=e.table.area.end.column;b++){let p=t.CellData({row:u,column:b});if(b===e.column+e.table.area.start.column){let g=p.calculated_type||p.type;g===2?s++:g===3&&a++;let _=p.calculated_type?p.calculated:p.value;f.text=_?.toString()||"",f.number=Number(_)||0,f.type=p.calculated_type||p.type}f.data.push({address:{row:u,column:b},data:p.value,type:p.type,style:p.style})}r.push(f)}let o=e.type;o==="auto"&&(a>s?o="numeric":o="text");let l=e.asc?1:-1;switch(o){case"numeric":r.sort((u,m)=>u.type===0?m.type===0?0:1:m.type===0?-1:(u.number-m.number)*l);break;case"text":default:r.sort((u,m)=>u.type===0?m.type===0?0:1:m.type===0?-1:u.text.localeCompare(m.text)*l);break}let c={row:e.table.area.start.row+1,column:e.table.area.start.column};for(let u=0;u<i.length;u++){c.row=i[u];let m=r[u];c.column=e.table.area.start.column;for(let f of m.data){if(f.type===1){let b=f.data,p={columns:0,rows:c.row-m.row},g=this.parser.Parse(b);g.expression&&(b="="+this.parser.Render(g.expression,{offset:p,missing:""})),t.SetCellValue(c,b)}else t.SetCellValue(c,f.data);t.UpdateCellStyle(c,f.style||{},!1),c.column++}}let h=this.model.tables.get(e.table.name.toLowerCase());h&&(h.sort={type:e.type,asc:!!e.asc,column:e.column});{let u=e.table.area.start.row;for(let m=e.table.area.start.column;m<=e.table.area.end.column;m++)t.cells.data[u][m]?.FlushStyle();if(e.table.totals_row){u=e.table.area.end.row;for(let m=e.table.area.start.column;m<=e.table.area.end.column;m++)t.cells.data[u][m]?.FlushStyle()}}return new v(e.table.area.start,e.table.area.end)}UpdateTableColumns(e){if(!e.area.start.sheet_id)throw new Error("invalid area in table");let t=this.model.sheets.Find(e.area.start.sheet_id);if(!t)throw new Error("invalid sheet in table");let r=e.columns?.slice(0)||void 0,i=[],n=e.area.start.row,s=e.area.end.column-e.area.start.column+1,a=e.area.start.column;for(let o=0;o<s;o++,a++){let l=t.CellData({row:n,column:a}),c="";l.type!==2?(typeof l.formatted<"u"?c=l.formatted.toString():typeof l.calculated<"u"?c=l.calculated.toString():typeof l.value<"u"&&(c=l.value.toString()),l.Set(c,2)):c=l.value||"",c||(c=`Column${o+1}`);let h=c,u=!1,m=1;for(;!u;){u=!0;e:for(let f of i)if(f.toLowerCase()===h.toLowerCase()){u=!1,h=`${c}${++m}`;break e}}l.Set(h,2),i.push(h.toLowerCase())}if(r&&r.length===i.length){let o=new Map;for(let l=0;l<r.length;l++){let c=r[l].toLowerCase();c!==i[l]&&o.set(c,i[l])}if(o.size){let l=e.name.toLowerCase();for(let c of this.model.sheets.list)c.cells.IterateAll(h=>{if(h.ValueIsFormula()){let u=!1,m=this.parser.Parse(h.value);m.expression&&(this.parser.Walk(m.expression,f=>{if(f.type==="structured-reference"&&(f.table.toLowerCase()===l||!f.table&&h.table===e))for(let[b,p]of o.entries())f.column.toLowerCase()===b&&(f.column=p,u=!0);return!0}),u&&(console.info("updating value"),h.value="="+this.parser.Render(m.expression,{missing:""})))}})}}return e.columns=i,{start:{...e.area.start},end:{row:e.area.start.row,column:e.area.end.column}}}SetRangeInternal(e,t={}){let r=L(e.area)?new v(e.area):new v(e.area.start,e.area.end),i=this.FindSheet(r);if(r.start.sheet_id||(r.start.sheet_id=i.id),!r.entire_row&&!r.entire_column&&(r.end.row>=i.rows||r.end.column>=i.columns)&&(i.cells.EnsureCell(r.end),i===this.active_sheet&&(t.layout=!0)),L(e.area)){let n=i.CellData(e.area);if(n.area&&(n.area.rows>1||n.area.columns>1)){this.Error(2);return}let s=Array.isArray(e.value)?Array.isArray(e.value[0])?e.value[0][0]:e.value[0]:e.value;return e.r1c1&&(s=this.TranslateR1C1(e.area,s)),e.array?i.SetArrayValue(r,s):i.SetCellValue(e.area,s),r}else{if(e.array){let n=Array.isArray(e.value)?Array.isArray(e.value[0])?e.value[0][0]:e.value[0]:e.value;e.r1c1&&(n=this.TranslateR1C1(r.start,n)),i.SetArrayValue(r,n)}else{if(e.r1c1){if(Array.isArray(e.value))for(let n=0;n<e.value.length&&n<r.rows;n++){e.value[n]||(e.value[n]=[]);let s=e.value[n];for(let a=0;a<s.length&&a<r.columns;a++){let o={...r.start,row:r.start.row+n,column:r.start.column+a};s[a]=this.TranslateR1C1(o,s[a])}}else if(typeof e.value=="string"&&e.value[0]==="="){let n=[];for(let s=0;s<r.rows;s++){let a=[];for(let o=0;o<r.columns;o++){let l={...r.start,row:r.start.row+s,column:r.start.column+o};a.push(this.TranslateR1C1(l,e.value))}n.push(a)}e.value=n}}i.SetAreaValues2(r,e.value)}return r}}ActivateSheetInternal(e){let t=this.ResolveSheet(e)||this.model.sheets.list[0];if(this.active_sheet===t&&!e.force)return;if(!t.visible)throw new Error("cannot activate hidden sheet");let r=this.active_sheet;this.active_sheet=t,this.grid_events.Publish({type:"sheet-change",deactivate:r,activate:this.active_sheet})}ShowSheetInternal(e){let t=this.ResolveSheet(e);if(t&&t.visible!==e.show){if(!e.show){let r=0;for(let i of this.model.sheets.list)(!t.visible||i===t)&&r++;if(r>=this.model.sheets.length)throw new Error("can't hide all sheets")}if(t.visible=e.show,t===this.active_sheet){let r=this.model.sheets.list;for(let i=0;i<r.length;i++)if(r[i]===this.active_sheet){for(let n=i+1;n<r.length;n++)if(r[n].visible){this.ActivateSheetInternal({key:21,index:n});return}for(let n=0;n<r.length;n++)if(r[n].visible){this.ActivateSheetInternal({key:21,index:n});return}throw new Error("no visible sheet")}}}}NormalizeCommands(e){Array.isArray(e)||(e=[e]);let t=this.active_sheet.id;for(let r of e)switch(r.key){case 0:case 17:case 24:case 18:case 19:case 20:case 21:case 22:case 23:case 26:break;case 27:case 29:r.table.area.start.sheet_id||(r.table.area.start.sheet_id=t);break;case 3:case 4:case 2:case 1:case 15:r.sheet_id||(r.sheet_id=t);break;case 11:case 13:case 14:case 8:case 9:case 10:case 25:case 6:case 7:case 16:case 5:case 28:r.area&&(L(r.area)?r.area.sheet_id||(r.area.sheet_id=t):r.area.start.sheet_id||(r.area.start.sheet_id=t));break}return e}AddSheetInternal(e=O.default_sheet_name,t=-1){if(!this.options.add_tab){console.warn("add tab option not set or false");return}for(;this.model.sheets.list.some(i=>i.name===e);){let i=e.match(/^(.*?)(\d+)$/);i?e=i[1]+(Number(i[2])+1):e=e+"2"}let r=O.Blank(this.model.theme_style_properties,e);return t>=0?this.model.sheets.Splice(t,0,r):this.model.sheets.Add(r),r.id}ResolveSheet(e){if(typeof e.index<"u")return this.model.sheets.list[e.index];if(typeof e.name<"u")return this.model.sheets.Find(e.name);if(e.id)return this.model.sheets.Find(e.id)}FindSheet(e){if(e===void 0)return this.active_sheet;let t=typeof e=="number"?e:L(e)?e.sheet_id:e.start.sheet_id;if(!t||t===this.active_sheet.id)return this.active_sheet;let r=this.model.sheets.Find(t);return r||this.active_sheet}PatchFormulasInternal(e,t,r,i,n,s,a){let o=this.parser.Parse(e||""),l=!1;if(o.expression&&(this.parser.Walk(o.expression,c=>{if(c.type==="range"||c.type==="address"){let h=[];c.type==="range"?(c.start.sheet&&c.start.sheet.toLowerCase()===s||!c.start.sheet&&a)&&h.push(c.start,c.end):c.type==="address"&&(c.sheet&&c.sheet.toLowerCase()===s||!c.sheet&&a)&&h.push(c);for(let u of h)r&&u.row>=t&&(r<0&&u.row+r<t?u.column=u.row=-1:u.row+=r,l=!0),n&&u.column>=i&&(n<0&&u.column+n<i?u.column=u.row=-1:u.column+=n,l=!0);return!1}return!0}),l))return"="+this.parser.Render(o.expression,{missing:""})}RenameSheetReferences(e,t,r){let i=0;t=t.toLowerCase();for(let n of e){n.cells.IterateAll(s=>{if(s.ValueIsFormula()){let a=!1,o=this.parser.Parse(s.value||"");o.expression&&(this.parser.Walk(o.expression,l=>(l.type==="address"&&l.sheet&&l.sheet.toLowerCase()===t&&(l.sheet=r,a=!0),!0)),a&&(s.value="="+this.parser.Render(o.expression,{missing:""}),i++))}});for(let s of n.annotations)if(s.data.formula){let a=!1,o=this.parser.Parse(s.data.formula||"");o.expression&&(this.parser.Walk(o.expression,l=>(l.type==="address"&&l.sheet&&l.sheet.toLowerCase()===t&&(l.sheet=r,a=!0),!0)),a&&(s.data.formula="="+this.parser.Render(o.expression,{missing:""}),i++))}}return i}ApplyBordersInternal(e){let t=e.borders,r=e.borders==="none"?0:e.width,i=new v(e.area.start,e.area.end),n=this.FindSheet(i);i.start.sheet_id=n.id;let s={border_top:r},a={border_bottom:r},o={border_left:r},l={border_right:r},c={border_top:0,border_top_fill:{}},h={border_bottom:0,border_bottom_fill:{}},u={border_left:0,border_left_fill:{}},m={border_right:0,border_right_fill:{}};return e.color?(s.border_top_fill={...e.color},a.border_bottom_fill={...e.color},o.border_left_fill={...e.color},l.border_right_fill={...e.color}):(s.border_top_fill={},a.border_bottom_fill={},o.border_left_fill={},l.border_right_fill={}),(t==="none"||t==="all")&&n.UpdateAreaStyle(i,{...s,...a,...o,...l},!0),(t==="top"||t==="outside")&&(i.entire_column||n.UpdateAreaStyle(i.top,{...s},!0)),(t==="none"||t==="all"||t==="outside"||t==="top")&&(i.entire_column||i.start.row&&n.UpdateAreaStyle(new v({row:i.start.row-1,column:i.start.column},{row:i.start.row-1,column:i.end.column}),{...h},!0)),(t==="bottom"||t==="outside")&&(i.entire_column||n.UpdateAreaStyle(i.bottom,{...a},!0)),(t==="none"||t==="all"||t==="outside"||t==="bottom")&&(i.entire_column||n.UpdateAreaStyle(new v({row:i.end.row+1,column:i.start.column},{row:i.end.row+1,column:i.end.column}),{...c},!0)),(t==="left"||t==="outside")&&(i.entire_row||n.UpdateAreaStyle(i.left,{...o},!0)),(t==="none"||t==="all"||t==="outside"||t==="left")&&(i.entire_row||i.start.column&&n.UpdateAreaStyle(new v({row:i.start.row,column:i.start.column-1},{row:i.end.row,column:i.start.column-1}),{...m},!0)),(t==="right"||t==="outside")&&(i.entire_row||n.UpdateAreaStyle(i.right,{...l},!0)),(t==="none"||t==="all"||t==="outside"||t==="right")&&(i.entire_row||n.UpdateAreaStyle(new v({row:i.start.row,column:i.end.column+1},{row:i.end.row,column:i.end.column+1}),{...u},!0)),v.Bleed(i)}TranslateR1C1(e,t){let r=!1,i=this.parser.flags.r1c1;if(this.parser.flags.r1c1=!0,typeof t=="string"&&t[0]==="="){let n=this.parser.Parse(t);n.expression&&(this.parser.Walk(n.expression,s=>(s.type==="address"&&s.r1c1&&(r=!0,s.offset_column&&(s.column=s.column+e.column),s.offset_row&&(s.row=s.row+e.row)),!0)),r&&(this.flags.warned_r1c1||(this.flags.warned_r1c1=!0,console.warn("NOTE: R1C1 support is experimental. the semantics may change in the future.")),t="="+this.parser.Render(n.expression,{missing:""})))}return this.parser.flags.r1c1=i,t}ClearAreaInternal(e){let t;if(e.start.sheet_id?t=this.model.sheets.Find(e.start.sheet_id):t=this.active_sheet,!t){console.warn("can't resolve sheet in ClearAreaInternal");return}let r=!1;e=t.RealArea(e),t.cells.Apply(e,n=>{n.area&&!e.ContainsArea(n.area)&&(r=!0)});let i=this.model.tables.keys();for(let n of i){let s=this.model.tables.get(n);if(s&&s.area.start.sheet_id===t.id){let a=new v(s.area.start,s.area.end);if(e.ContainsArea(a)){for(let o=a.start.row;o<=a.end.row;o++)for(let l=a.start.column;l<=s.area.end.column;l++){let c=t.cells.GetCell({row:o,column:l},!1);c&&(c.table=void 0)}this.model.tables.delete(n)}}}r?this.Error(2):t.ClearArea(e)}Error(e){this.grid_events.Publish({type:"error",code:e})}DuplicateSheetInternal(e){if(!this.options.add_tab){console.warn("add tab option not set or false");return}let t=this.ResolveSheet(e),r=this.model.sheets.list.reduce((o,l)=>Math.max(o,l.id),0)+1,i=-1;for(let o=0;o<this.model.sheets.length;o++)this.model.sheets.list[o]===t&&(i=o+1);if(!t||i<0)throw new Error("source sheet not found");if(typeof e.insert_before=="number")i=e.insert_before;else if(typeof e.insert_before=="string"){let o=e.insert_before.toLowerCase();for(let l=0;l<this.model.sheets.length;l++)if(this.model.sheets.list[l].name.toLowerCase()===o){i=l;break}}let n={rendered_values:!0},s=O.FromJSON(t.toJSON(n),this.model.theme_style_properties),a=e.new_name||t.name;for(;this.model.sheets.list.some(o=>o.name===a);){let o=a.match(/^(.*?)(\d+)$/);o?a=o[1]+(Number(o[2])+1):a=a+"2"}return s.name=a,s.id=r,this.model.sheets.Splice(i,0,s),s.id}SelectInternal(e){}FreezeInternal(e){let t=this.FindSheet(e.sheet_id||this.active_sheet.id);t.freeze.rows=e.rows,t.freeze.columns=e.columns}InsertRowsInternal(e){let t=this.FindSheet(e.sheet_id);if(e.count===1/0?e.count=1:e.count===-1/0&&(e.count=-t.rows),!t.InsertRows(e.before_row,e.count))return this.Error(2),{error:!0};let r=Array.from(this.model.tables.values());for(let o of r)if(o.area.start.sheet_id===e.sheet_id)if(e.count>0){if(e.before_row<=o.area.start.row)o.area.start.row+=e.count,o.area.end.row+=e.count;else if(e.before_row<=o.area.end.row){o.area.end.row+=e.count;for(let l=o.area.start.row;l<=o.area.end.row;l++)for(let c=o.area.start.column;c<=o.area.end.column;c++){let h=t.CellData({row:l,column:c});h.table=o}}}else if(e.before_row<=o.area.start.row)if(e.before_row-e.count<=o.area.start.row)o.area.start.row+=e.count,o.area.end.row+=e.count;else if(e.before_row-e.count>=o.area.end.row)this.model.tables.delete(o.name.toLowerCase());else{this.model.tables.delete(o.name.toLowerCase());for(let l=e.before_row;l<=o.area.end.row;l++)for(let c=o.area.start.column;c<=o.area.end.column;c++){let h=t.CellData({row:l,column:c});h.table===o&&(h.table=void 0)}}else e.before_row<=o.area.end.row&&(e.before_row-e.count>o.area.end.row&&(o.totals_row=!1),o.area.end.row=Math.max(0,o.area.end.row+e.count,e.before_row-1));this.model.named_ranges.PatchNamedRanges(t.id,0,0,e.before_row,e.count);let i=t.name.toLowerCase();for(let o of this.model.sheets.list){let l=o===t;o.cells.IterateAll(c=>{if(c.ValueIsFormula()){let h=this.PatchFormulasInternal(c.value||"",e.before_row,e.count,0,0,i,l);h&&(c.value=h)}});for(let c of o.annotations)if(c.data.formula){let h=this.PatchFormulasInternal(c.data.formula||"",e.before_row,e.count,0,0,i,l);h&&(c.data.formula=h)}}let n=[],s=[],a=[];if(e.count>0){let o=e.before_row;for(let l of t.annotations)if(l.data.layout){let[c,h,u]=[l.data.layout.tl.address.row,l.data.layout.br.address.row,l.data.layout.br.offset.y];if(o<=c)l.data.layout.tl.address.row+=e.count,l.data.layout.br.address.row+=e.count;else if(o<h||o===h&&u>0)l.data.layout.br.address.row+=e.count,s.push(l);else continue;n.push(l)}}else if(e.count<0){let o=e.before_row,l=e.before_row-e.count-1;for(let c of t.annotations)if(c.data.layout){let[h,u,m]=[c.data.layout.tl.address.row,c.data.layout.br.address.row,c.data.layout.br.offset.y];if(o<=h)if(l<h)c.data.layout.tl.address.row+=e.count,c.data.layout.br.address.row+=e.count;else if(l<u-1||l===u-1&&m>0)c.data.layout.tl.address.row=o,c.data.layout.tl.offset.y=0,c.data.layout.br.address.row+=e.count,s.push(c);else{a.push(c);continue}else if(o<u||o===u&&m>0)l<u-1||l===u-1&&m>0?(c.data.layout.br.address.row+=e.count,s.push(c)):(c.data.layout.br.address.row=o,c.data.layout.br.offset.y=0,s.push(c));else continue;n.push(c)}}for(let o of a)t.annotations=t.annotations.filter(l=>l!==o);return{update_annotations_list:n,resize_annotations_list:s,delete_annotations_list:a}}InsertColumnsInternal(e){let t=this.FindSheet(e.sheet_id);if(e.count===1/0?e.count=1:e.count===-1/0&&(e.count=-t.columns),!t.InsertColumns(e.before_column,e.count))return this.Error(2),{error:!0};let r=Array.from(this.model.tables.values());for(let o of r)if(o.area.start.sheet_id===e.sheet_id)if(e.count>0){if(e.before_column<=o.area.start.column)o.area.start.column+=e.count,o.area.end.column+=e.count;else if(e.before_column<=o.area.end.column){o.area.end.column+=e.count;for(let l=o.area.start.row;l<=o.area.end.row;l++)for(let c=o.area.start.column;c<=o.area.end.column;c++){let h=t.CellData({row:l,column:c});h.table=o}this.UpdateTableColumns(o)}}else e.before_column<=o.area.start.column?e.before_column-e.count<=o.area.start.column?(o.area.start.column+=e.count,o.area.end.column+=e.count):e.before_column-e.count>=o.area.end.column?this.model.tables.delete(o.name.toLowerCase()):(o.area.start.column=e.before_column,o.area.end.column+=e.count,this.UpdateTableColumns(o)):e.before_column<=o.area.end.column&&(o.area.end.column=Math.max(0,o.area.end.column+e.count,e.before_column-1),this.UpdateTableColumns(o));this.model.named_ranges.PatchNamedRanges(t.id,e.before_column,e.count,0,0);let i=t.name.toLowerCase();for(let o of this.model.sheets.list){let l=o===t;o.cells.IterateAll(c=>{if(c.ValueIsFormula()){let h=this.PatchFormulasInternal(c.value||"",0,0,e.before_column,e.count,i,l);h&&(c.value=h)}});for(let c of o.annotations)if(c.data.formula){let h=this.PatchFormulasInternal(c.data.formula,0,0,e.before_column,e.count,i,l);h&&(c.data.formula=h)}}let n=[],s=[],a=[];if(e.count>0){let o=e.before_column;for(let l of t.annotations)if(l.data.layout){let[c,h,u]=[l.data.layout.tl.address.column,l.data.layout.br.address.column,l.data.layout.br.offset.x];if(o<=c)l.data.layout.tl.address.column+=e.count,l.data.layout.br.address.column+=e.count;else if(o<h||o===h&&u>0)l.data.layout.br.address.column+=e.count,s.push(l);else continue;n.push(l)}}else if(e.count<0){let o=e.before_column,l=e.before_column-e.count-1;for(let c of t.annotations)if(c.data.layout){let[h,u,m]=[c.data.layout.tl.address.column,c.data.layout.br.address.column,c.data.layout.br.offset.x];if(o<=h)if(l<h)c.data.layout.tl.address.column+=e.count,c.data.layout.br.address.column+=e.count;else if(l<u-1||l===u-1&&m>0)c.data.layout.tl.address.column=o,c.data.layout.tl.offset.x=0,c.data.layout.br.address.column+=e.count,s.push(c);else{a.push(c);continue}else if(o<u||o===u&&m>0)l<u-1||l===u-1&&m>0?(c.data.layout.br.address.column+=e.count,s.push(c)):(c.data.layout.br.address.column=o,c.data.layout.br.offset.x=0,s.push(c));else continue;n.push(c)}}for(let o of a)t.annotations=t.annotations.filter(l=>l!==o);return{update_annotations_list:n,resize_annotations_list:s,delete_annotations_list:a}}ExecCommand(e,t=!0){let r={pending:[]},i=[];e=this.NormalizeCommands(e),t&&this.command_log.Publish({command:e,timestamp:new Date().getTime()});for(let n of e)switch(n.key){case 26:this.ResetInternal();break;case 11:if(n.area){let s=new v(n.area.start,n.area.end);this.ClearAreaInternal(s),r.data_area=v.Join(s,r.data_area),r.formula=!0}break;case 5:this.SelectInternal(n);break;case 15:this.FreezeInternal(n),r.structure_event=!0;break;case 28:{let s=this.FindSheet(n.area),a=new v(n.area.start,n.area.end),o=!0;e:for(let l=a.start.row;l<=a.end.row;l++)for(let c=a.start.column;c<=a.end.column;c++){let h=s.cells.GetCell({row:l,column:c},!1);if(h&&(h.area||h.merge_area||h.table)){o=!1;break e}}if(o){let l=this.model.tables.size+1,c="";for(;c=`Table${l++}`,!!this.model.tables.has(c.toLowerCase()););let h={area:n.area,name:c,sortable:n.sortable,theme:n.theme};n.totals&&(h.totals_row=!0),this.model.tables.set(c.toLowerCase(),h);for(let u=a.start.row;u<=a.end.row;u++)for(let m=a.start.column;m<=a.end.column;m++){let f=s.cells.GetCell({row:u,column:m},!0);f.table=h}this.UpdateTableColumns(h),s.Invalidate(new v(h.area.start,h.area.end)),s===this.active_sheet?(r.style_area=v.Join(a,r.style_area),r.render_area=v.Join(a,r.render_area)):r.style_event=!0}}break;case 29:{let s=this.FindSheet(n.table.area),a=new v(n.table.area.start,n.table.area.end);for(let l=a.start.row;l<=a.end.row;l++)for(let c=a.start.column;c<=a.end.column;c++){let h=s.cells.GetCell({row:l,column:c},!1);h&&(h.table=void 0)}this.model.tables.delete(n.table.name.toLowerCase());let o=s.RealArea(a.Clone().Shift(-1,-1).Resize(a.rows+2,a.columns+2));s.Invalidate(o),s===this.active_sheet?(r.style_area=v.Join(a,r.style_area),r.render_area=v.Join(a,r.render_area)):r.style_event=!0}break;case 9:{let s=this.FindSheet(n.area);s.MergeCells(new v(n.area.start,n.area.end)),r.structure_event=!0,r.structure_rebuild_required=!0,s===this.active_sheet?(r.data_area=v.Join(n.area,r.data_area),r.render_area=v.Join(n.area,r.render_area)):(r.data_event=!0,r.pending||(r.pending=[]),r.pending.push(s.id))}break;case 10:{let s=this.FindSheet(n.area),a={},o=new v(n.area.start,n.area.end);s.cells.Apply(o,c=>{if(c.merge_area){let h=v.CellAddressToLabel(c.merge_area.start)+":"+v.CellAddressToLabel(c.merge_area.end);a[h]=c.merge_area}},!1);let l=Object.keys(a);for(let c=0;c<l.length;c++)s.UnmergeCells(a[l[c]]);s===this.active_sheet?(r.render_area=v.Join(n.area,r.render_area),r.data_area=v.Join(n.area,r.data_area)):(r.data_event=!0,r.pending||(r.pending=[]),r.pending.push(s.id)),r.structure_event=!0,r.structure_rebuild_required=!0}break;case 7:{let s,a=this.FindSheet(n.area);L(n.area)?(s=new v(n.area),a.UpdateCellStyle(n.area,n.style,!!n.delta)):(s=new v(n.area.start,n.area.end),a.UpdateAreaStyle(s,n.style,!!n.delta)),a===this.active_sheet?(r.style_area=v.Join(s,r.style_area),(!n.delta||n.style.fill||n.style.border_top||n.style.border_left||n.style.border_right||n.style.border_bottom)&&(s=v.Bleed(s),this.active_sheet.Invalidate(s)),r.render_area=v.Join(s,r.render_area)):r.style_event=!0}break;case 25:this.SetValidationInternal(n),(!n.area.sheet_id||n.area.sheet_id===this.active_sheet.id)&&(r.render_area=v.Join(new v(n.area),r.render_area));break;case 16:n.area?(this.model.named_expressions.delete(n.name),this.model.named_ranges.SetName(n.name,new v(n.area.start,n.area.end)),this.autocomplete_matcher.AddFunctions({type:1,name:n.name})):n.expression?(this.model.named_ranges.ClearName(n.name),this.model.named_expressions.set(n.name,n.expression),this.autocomplete_matcher.AddFunctions({type:1,name:n.name})):(this.model.named_ranges.ClearName(n.name),this.model.named_expressions.delete(n.name),this.autocomplete_matcher.RemoveFunctions({type:1,name:n.name})),r.structure_event=!0,r.structure_rebuild_required=!0;break;case 8:{let s=this.ApplyBordersInternal(n);s.start.sheet_id===this.active_sheet.id?(r.render_area=v.Join(s,r.render_area),r.style_area=v.Join(s,r.style_area)):r.style_event=!0}break;case 24:this.ShowSheetInternal(n),r.sheets=!0,r.structure_event=!0;break;case 23:{let s=[],a=this.model.sheets.list[n.index];for(let o=0;o<this.model.sheets.length;o++)o!==n.index&&(o===n.move_before&&s.push(a),s.push(this.model.sheets.list[o]));n.move_before>=this.model.sheets.length&&s.push(a),this.model.sheets.Assign(s),r.sheets=!0,r.structure_event=!0}break;case 22:{let s=this.ResolveSheet(n);s&&(this.RenameSheetInternal(s,n.new_name),r.sheets=!0,r.structure_event=!0)}break;case 3:{let s=this.ResizeRowsInternal(n);if(s)if(s.start.sheet_id===this.active_sheet.id){let a=this.active_sheet.RealArea(new v(s.start,s.end));r.render_area=v.Join(a,r.render_area),r.data_area=v.Join(a,r.data_area),r.data_event=!0}else r.data_event=!0,r.pending||(r.pending=[]),s.start.sheet_id&&r.pending.push(s.start.sheet_id);r.structure_event=!0}break;case 4:this.ResizeColumnsInternal(n),r.structure_event=!0;break;case 17:this.active_sheet.SetHeaderSize(n.show?void 0:1,n.show?void 0:1),this.flags.layout=!0,this.flags.repaint=!0;break;case 1:this.InsertRowsInternal(n),r.structure_event=!0,r.structure_rebuild_required=!0;break;case 2:this.InsertColumnsInternal(n),r.structure_event=!0,r.structure_rebuild_required=!0;break;case 14:case 13:{let s=this.FindSheet(n.area),a=s.cells.GetCell(n.area,!0);if(a){let o;a.merge_area?(o=new v(a.merge_area.start),a=s.cells.GetCell(a.merge_area.start,!0)):o=new v(n.area),n.key===13?a.SetNote(n.note):(a.hyperlink=n.reference||void 0,a.render_clean=[]),s===this.active_sheet?(r.style_area=v.Join(o,r.style_area),r.render_area=v.Join(o,r.render_area)):r.style_event=!0}}break;case 27:{let s=this.SortTableInternal(n);s&&s.start.sheet_id===this.active_sheet.id?(r.data_area=v.Join(s,r.data_area),this.options.repaint_on_cell_change&&(r.render_area=v.Join(s,r.render_area))):r.data_event=!0}break;case 6:{let s=this.SetRangeInternal(n,r);if(s){let o=this.model.sheets.Find(s.start.sheet_id||this.active_sheet.id)?.TablesFromArea(s,!0)||[];for(let l of o)this.UpdateTableColumns(l)}s&&s.start.sheet_id===this.active_sheet.id?(r.data_area=v.Join(s,r.data_area),this.options.repaint_on_cell_change&&(r.render_area=v.Join(s,r.render_area))):r.data_event=!0}break;case 20:this.DeleteSheetInternal(n),r.sheets=!0,r.structure_event=!0,r.structure_rebuild_required=!0;break;case 19:this.DuplicateSheetInternal(n),r.sheets=!0,r.structure_event=!0,r.structure_rebuild_required=!0;break;case 18:{let s=this.AddSheetInternal(n.name,n.insert_index);typeof s=="number"&&n.show&&this.ActivateSheetInternal({key:21,id:s}),r.structure_event=!0,r.sheets=!0,r.structure=!0}break;case 21:this.ActivateSheetInternal(n);break;default:console.warn(`unhandled command: ${ut[n.key]} (${n.key})`)}return r.data_area?(r.data_area.start.sheet_id||r.data_area.SetSheetID(this.active_sheet.id),i.push({type:"data",area:r.data_area})):r.data_event&&i.push({type:"data"}),r.style_area?(r.style_area.start.sheet_id||r.style_area.SetSheetID(this.active_sheet.id),i.push({type:"style",area:r.style_area})):r.style_event&&i.push({type:"style"}),r.structure_event&&i.push({type:"structure",rebuild_required:r.structure_rebuild_required}),this.batch?this.batch_events.push(...i):this.grid_events.Publish(i),r}};var ft=class extends mt{constructor(t={},r,i,n=xt,s=!0){super(t,r,i);this.hide_selection=!1;this.headless=!1;this.hover_data={};this.editing_state=0;this.editing_cell={row:-1,column:-1,sheet_id:0};this.tile_update_pending=!1;this.pending_layout_update=new Set;this.decimal_separator_code=46;this.RESIZE_PIXEL_BUFFER=5;this.select_argument=!1;this.cell_resize={row:-1,column:-1};this.render_tiles=new v({row:0,column:0});this.primary_selection={target:{row:0,column:0},area:new v({row:0,column:0}),empty:!0};this.active_selection={target:{row:0,column:0},area:new v({row:0,column:0}),empty:!0};this.nub_select_flag=!1;this.additional_selections=[];this.double_click_data={};this.layout_token=0;this.render_token=0;if(this.decimal_separator_code=T.decimal_separator.charCodeAt(0),this.theme=JSON.parse(JSON.stringify(n)),!s){this.headless=!0,this.layout=new Lt(this.model,this.view);return}this.layout=new Vt(this.model,this.view),t.initial_scale&&(typeof t.initial_scale=="string"&&(t.initial_scale=Number(t.initial_scale)),this.layout.scale=t.initial_scale),this.tile_renderer=new Bt(this.theme,this.layout,this.model,this.view,this.options),this.selection_renderer=new Nt(this.theme,this.layout,this.model,this.view,this.primary_selection,this.additional_selections)}get scale(){return this.layout.scale}set scale(t){this.layout.scale=t,this.UpdateLayout(),this.UpdateAnnotationLayout(),this.layout.UpdateAnnotation(this.active_sheet.annotations),this.layout.ApplyTheme(this.theme),this.overlay_editor?.UpdateTheme(t),this.tab_bar?.UpdateScale(t),this.grid_events.Publish({type:"scale",scale:t});for(let r of this.model.sheets.list)for(let i of r.annotations)i.dirty=!0}SetLanguageMap(t){if(!t)this.language_map=this.reverse_language_map=void 0;else{let r=Object.keys(t);this.language_map={};for(let i of r)this.language_map[i.toUpperCase()]=t[i];this.reverse_language_map={};for(let i of r){let n=t[i];this.reverse_language_map[n.toUpperCase()]=i}}this.primary_selection.empty||this.Select(this.primary_selection,this.primary_selection.area,this.primary_selection.target)}SetNote(t,r){if(!t){if(this.primary_selection.empty)return;t=this.primary_selection.target}this.ExecCommand({key:13,area:t,note:r})}FindAnnotation(t){for(let r of this.active_sheet.annotations)if((r.view[this.view_index]||{}).node===t)return r}CreateAnnotation(t={},r=!0,i=!1,n){let s=new Ne(t);if(i)if(!s.data.layout&&s.scaled_rect&&(s.data.layout=this.layout.RectToAnnotationLayout(s.scaled_rect)),!s.data.layout)console.warn("can't offset annotation without layout");else{let a=this.layout.AnnotationLayoutToRect(s.data.layout).Shift(20,20),o=!0;for(;o;){o=!1;for(let l of this.active_sheet.annotations)if(l!==s&&l.scaled_rect&&l.scaled_rect.top===a.top&&l.scaled_rect.left===a.left){a=a.Shift(20,20),o=!0;break}}s.data.layout=this.layout.RectToAnnotationLayout(a)}return n&&(U.IsRectangle(n)?(s.data.layout=void 0,s.rect=U.Create(n)):n.start&&(s.rect=void 0,s.data.layout=this.layout.AddressToAnnotationLayout(n.start,n.end||n.start))),r&&(this.active_sheet.annotations.some(a=>a===s)||this.active_sheet.annotations.push(s),this.AddAnnotation(s)),s}UpdateAnnotationLayout(){}AddAnnotation(t,r=!1,i=!0){let n=t.view[this.view_index];if(n||(n={},t.view[this.view_index]=n),!n.node){n.node=document.createElement("div"),n.node.dataset.scale=this.layout.scale.toString(),n.node.style.fontSize=`${10*this.layout.scale}pt`,n.content_node=D.CreateDiv("annotation-content",n.node);let s=D.CreateDiv("annotation-move-target",n.node),a=D.CreateDiv("annotation-resize-target",n.node);if(n.node){let o=n.node;o.setAttribute("tabindex","-1"),o.addEventListener("mousedown",l=>{l.button===0&&this.layout.AnnotationMouseDown(t,o,l,s,a).then(c=>{c&&this.grid_events.Publish(c),t.data.layout&&this.EnsureAddress(t.data.layout.br.address,1)})}),o.addEventListener("focusin",()=>{for(let l of this.layout.GetFrozenAnnotations(t))l.classList.add("clone-focus");this.selected_annotation=t,this.primary_selection.empty=!0,this.primary_selection.target={row:-1,column:-1,sheet_id:this.active_sheet.id},this.HideGridSelection()}),o.addEventListener("focusout",l=>{for(let c of this.layout.GetFrozenAnnotations(t))c.classList.remove("clone-focus");this.formula_bar&&this.formula_bar.IsElement(l.relatedTarget)?(this.primary_selection.empty=!0,this.RenderSelections(),this.editing_annotation=t,this.layout.ShowSelections(!0)):(this.selected_annotation===t&&(this.selected_annotation=void 0),this.ShowGridSelection())}),o.addEventListener("keydown",l=>{let c=t.scaled_rect;if(!c){console.info("missing scaled rect!");return}let h=[o,...this.layout.GetFrozenAnnotations(t)],u={x:c.left,y:c.top};switch(l.key){case"ArrowUp":case"Up":l.ctrlKey?(this.layout.AnnotationLayoutOrder(t,1)&&this.grid_events.Publish({type:"annotation",event:"move",annotation:t}),o.focus()):u.y--;break;case"ArrowLeft":case"Left":if(l.ctrlKey)return;u.x--;break;case"ArrowRight":case"Right":if(l.ctrlKey)return;u.x++;break;case"ArrowDown":case"Down":l.ctrlKey?(this.layout.AnnotationLayoutOrder(t,-1)&&this.grid_events.Publish({type:"annotation",event:"move",annotation:t}),o.focus()):u.y++;break;case"Escape":case"Esc":this.Focus();break;case"Delete":case"Del":this.Focus(),this.RemoveAnnotation(t);break;default:return}if(l.stopPropagation(),l.preventDefault(),u.x=Math.max(u.x,0),u.y=Math.max(u.y,0),c.left!==u.x||c.top!==u.y){c.left=Math.round(u.x),c.top=Math.round(u.y);for(let m of h)m.style.top=c.top+"px",m.style.left=c.left+"px";t.data.extent=void 0,this.grid_events.Publish({type:"annotation",event:"move",annotation:t}),t.data.layout=this.layout.RectToAnnotationLayout(c)}})}}n.node.classList.add("annotation"),i&&(this.layout.AddAnnotation(t),t.data.layout&&this.EnsureAddress(t.data.layout.br.address,1)),r||this.grid_events.Publish({type:"annotation",annotation:t,event:"create"})}AnnotationUpdated(t){this.layout.CloneFrozenAnnotation(t)}RemoveAnnotation(t){for(let r=0;r<this.active_sheet.annotations.length;r++)if(t===this.active_sheet.annotations[r]){this.active_sheet.annotations.splice(r,1),this.layout.RemoveAnnotation(t),this.grid_events.Publish({type:"annotation",annotation:t,event:"delete"});return}}RemoveAnnotationNodes(){this.headless||this.layout.RemoveAnnotationNodes()}Serialize(t={}){return this.active_sheet.selection=JSON.parse(JSON.stringify(this.primary_selection)),this.active_sheet.scroll_offset=this.layout.scroll_offset,super.Serialize(t)}ShowHeaders(t=!0){this.ExecCommand({key:17,show:t})}FromImportData(t,r=!1){this.RemoveAnnotationNodes();let i=t.sheets,n=i.map(()=>O.Blank(this.model.theme_style_properties).toJSON()),s;if(typeof t.active_tab=="number")s=n[t.active_tab]?.id;else for(let o=0;o<t.sheets.length;o++)if(!t.sheets[o].hidden){s=n[o].id;break}this.UpdateSheets(n,!0,s);let a={};this.model.macro_functions.clear(),this.ClearSelection(this.primary_selection),this.model.tables.clear();for(let o=0;o<i.length;o++){let l=this.model.sheets.list[o];l.ImportData(i[o]),a[l.name]=l.id;for(let c of i[o].cells)c.table&&(c.table.area.start.sheet_id=l.id,this.model.tables.set(c.table.name.toLowerCase(),c.table));for(let c of this.model.tables.values())this.UpdateTableColumns(c)}if(this.model.sheets.UpdateIndexes(),this.model.named_ranges.Reset(),this.model.named_expressions.clear(),t.names){for(let o of Object.keys(t.names)){let l=this.model.named_ranges.ValidateNamed(o);if(!l){console.warn(`invalid name: ${o}`);continue}let c=t.names[o];if(typeof c!="number"){let h=this.parser.Parse(c);if(h.expression)if(h.expression.type==="range"){let u=a[h.expression.start.sheet||""];u&&(h.expression.start.sheet_id=u,this.model.named_ranges.SetName(l,new v(h.expression.start,h.expression.end),!1))}else if(h.expression.type==="address"){let u=a[h.expression.sheet||""];u&&(h.expression.sheet_id=u,this.model.named_ranges.SetName(l,new v(h.expression),!1))}else{let u=h.expression;this.parser.Walk(u,m=>m.type==="address"||m.type==="range"?(m.type==="range"&&(m=m.start),m.sheet_id||(m.sheet_id=a[m.sheet||""]||0),!1):!0),this.model.named_expressions.set(l,u)}}}this.model.named_ranges.RebuildList()}for(let o of this.active_sheet.annotations)this.AddAnnotation(o,!0);this.ActivateSheetTasks(),this.QueueLayoutUpdate(),this.StyleDefaultFromTheme(),r&&this.Repaint(!1,!1),this.tab_bar&&this.tab_bar.Update()}NextSheet(t=1){if(this.model.sheets.length===1)return;let r=this.model.sheets.list.map((i,n)=>({sheet:i,index:n})).filter(i=>i.sheet.visible);if(r.length!==1){for(let i=0;i<r.length;i++)if(r[i].sheet===this.active_sheet){let n=(i+t)%r.length;for(;n<0;)n+=r.length;this.ActivateSheet(r[n].index);return}}}UpdateSheets(t,r=!1,i){if(super.UpdateSheets(t,r,i),this.RemoveAnnotationNodes(),this.ClearSelection(this.primary_selection),t[0]&&t[0].primary_selection){let n=t[0].primary_selection;n.empty||this.Select(this.primary_selection,new v(n.area.start,n.area.end),n.target)}else if(!this.active_sheet.selection.empty){let n=this.active_sheet.selection;this.Select(this.primary_selection,new v(n.area.start,n.area.end),n.target)}this.layout.ClearLayoutCaches();for(let n of this.model.sheets.list)for(let s of n.annotations)this.AddAnnotation(s,!0,n===this.active_sheet);this.ActivateSheetTasks(),this.QueueLayoutUpdate(JSON.parse(JSON.stringify(this.active_sheet.scroll_offset))),this.StyleDefaultFromTheme(),r&&this.Repaint(!1,!1),this.tab_bar&&this.tab_bar.Update()}UpdateLayout(){this.layout.UpdateTiles(),this.render_tiles=this.layout.VisibleTiles(),this.Repaint(!0)}UpdateTheme(t=!1,r){if(!t)for(let n of Object.keys(this.theme))delete this.theme[n];let i=JSON.parse(JSON.stringify(xt));this.view_node&&(i={...ei(this.view_node)}),i={...this.theme,...i,...r},Object.assign(this.theme,i),this.StyleDefaultFromTheme(),this.active_sheet.UpdateDefaultRowHeight(),this.active_sheet.FlushCellStyles(),this.layout.ApplyTheme(this.theme),t||(this.UpdateLayout(),this.overlay_editor?.UpdateTheme(this.layout.scale),this.Repaint(!0,!0,!0))}Initialize(t,r=!1){if(!this.tile_renderer||!this.selection_renderer)return;this.view_node=t,this.UpdateTheme(!0);let n=t.querySelector(".treb-spreadsheet-body").querySelector("div"),s;this.options.formula_bar&&(s||(s=new ht({theme:this.theme,container:n})),this.InitFormulaBar(t,s)),this.options.tab_bar&&(this.tab_bar=new Ut(this.layout,this.model,this.view,this.options,t),this.tab_bar.Subscribe(a=>{switch(a.type){case"cancel":break;case"scale":{let o=this.layout.scale;if(o=Math.round(a.value*1e3)/1e3,o=Math.min(2,Math.max(o,.5)),this.options.persist_scale_key&&localStorage.setItem(this.options.persist_scale_key,JSON.stringify({scale:o})),this.scale=o,a.keep_focus)return}break;case"reorder-sheet":this.ReorderSheet(a.index,a.move_before);break;case"delete-sheet":this.DeleteSheet();break;case"add-sheet":this.AddSheet();break;case"rename-sheet":this.RenameSheet(a.sheet,a.name);break;case"activate-sheet":this.ActivateSheetID(a.sheet.id);break}this.SelectingArgument()||this.Focus()})),this.container=n,this.container.classList.add("treb-grid"),q.is_mac&&q.is_safari&&this.container.classList.add("safari"),this.container.setAttribute("tabindex","-1"),this.layout.Initialize(n,{scroll:()=>this.OnScroll(),dropdown:a=>this.OnDropdownSelect(a),sort:(a,o,l)=>{let c=this.model.tables.get(a.toLowerCase());c&&this.SortTable(c,{column:o,asc:l})},focus:()=>this.Focus()},this.options.scrollbars),this.selection_renderer.Initialize(),this.layout.UpdateTiles(),s||(s=new ht({theme:this.theme,container:n})),this.InitOverlayEditor(s),this.AttachListeners(),this.render_tiles=this.layout.VisibleTiles(),r||(this.tab_bar?.Update(),this.Repaint(!0))}MergeCells(t){!t&&this.primary_selection.empty||(this.layout.HideDropdownCaret(),this.ExecCommand({key:9,area:t||this.primary_selection.area}))}UnmergeCells(t){!t&&this.primary_selection.empty||(this.layout.HideDropdownCaret(),this.ExecCommand({key:10,area:t||this.primary_selection.area}))}Focus(t=""){q.is_mobile?this.container?.focus():this.overlay_editor?.Focus(t)}SetValidation(t,r,i){if(!t){if(this.primary_selection.empty)throw new Error("invalid target in set validation");t=this.primary_selection.target}let n={key:25,area:t,error:i};r&&(Array.isArray(r)?n.list=r:typeof r=="object"&&r.start&&r.end&&L(r.start)&&L(r.end)&&(n.range=r)),this.ExecCommand(n),!this.primary_selection.empty&&(!t.sheet_id||t.sheet_id===this.active_sheet.id)&&this.primary_selection.target.row===t.row&&this.primary_selection.target.column===t.column&&requestAnimationFrame(()=>this.Select(this.primary_selection,this.primary_selection.area,this.primary_selection.target))}SetName(t,r,i){let n=this.model.named_ranges.ValidateNamed(t);if(!n)throw new Error("invalid name");let s=t.trim().toUpperCase();if(this.autocomplete_matcher){for(let o of Object.keys(this.autocomplete_matcher.function_map))if(s===o.toUpperCase()){if(r||i)throw new Error("name already defined");break}}t=n;let a={key:16,name:t};if(r)L(r)&&(r=new v(r)),r.start.sheet_id||(r=new v({...r.start,sheet_id:this.active_sheet.id},r.end)),a.area=new v(r.start,r.end);else if(i){let o=this.parser.Parse(i);if(o.valid&&o.expression)this.parser.Walk(o.expression,l=>{if(l.type==="address"||l.type==="range"){if(l.type==="range"&&(l=l.start),!l.sheet_id&&l.sheet){let c=this.model.sheets.Find(l.sheet);c&&(l.sheet_id=c.id)}return l.sheet_id||(l.sheet_id=this.active_sheet.id),!1}return!0}),a.expression=o.expression;else throw new Error("invalid expression")}this.ExecCommand(a)}SelectAll(){this.Select(this.primary_selection,new v({row:1/0,column:1/0}),void 0,!0),this.RenderSelections()}SelectRange(t){this.Select(this.primary_selection,t),this.RenderSelections()}GetNumberFormat(t){let r=this.active_sheet.CellStyleData(t);if(r&&r.number_format)return M.Get(r.number_format).toString()}GetRangeStyle(t,r=!1){let i=0;if(L(t)?i=t.sheet_id||this.active_sheet.id:i=t.start.sheet_id||this.active_sheet.id,i)return this.model.sheets.Find(i)?.GetCellStyle(t,r)||void 0}GetRange(t,r){if(L(t)){let n=this.model.sheets.Find(t.sheet_id||this.active_sheet.id);return n?r==="formula"?n.cells.RawValue(t):r==="formatted"?n.GetFormattedRange(t):n.cells.GetRange(t):void 0}let i=this.model.sheets.Find(t.start.sheet_id||this.active_sheet.id);if(i)return r==="formula"?i.cells.RawValue(t.start,t.end):r==="formatted"?i.GetFormattedRange(t.start,t.end):i.cells.GetRange(t.start,t.end)}SetRange(t,r,i={}){let{recycle:n,transpose:s,array:a,r1c1:o}=i;if(i.argument_separator){let l={argument_separator:this.parser.argument_separator,decimal_mark:this.parser.decimal_mark},c=!1;if(i.argument_separator===","&&this.parser.argument_separator!==","&&(this.parser.argument_separator=",",this.parser.decimal_mark=".",c=!0),i.argument_separator===";"&&this.parser.argument_separator!==";"&&(this.parser.argument_separator=";",this.parser.decimal_mark=",",c=!0),c){let h=u=>{if(typeof u=="string"&&u[0]==="="){let m=this.parser.Parse(u);m.expression&&(u="="+this.parser.Render(m.expression,{missing:"",convert_decimal:l.decimal_mark,convert_argument_separator:l.argument_separator}))}return u};Array.isArray(r)?r=r.map(u=>Array.isArray(u)?u.map(m=>h(m)):h(u)):r=h(r)}this.parser.argument_separator=l.argument_separator,this.parser.decimal_mark=l.decimal_mark}if(r=this.UntranslateData(r),!Array.isArray(r))n||a?this.ExecCommand({key:6,area:t,value:r,array:a,r1c1:o}):this.ExecCommand({key:6,area:t.start,value:r,array:a,r1c1:o});else{if(!lr(r))if(n){let l=t.entire_column?this.active_sheet.rows:t.rows,c=t.entire_row?this.active_sheet.columns:t.columns,h=l*c;if(h>r.length){let m=r.slice(0),f=Math.ceil(h/m.length);for(let b=1;b<f;b++)m=m.concat(r.slice(0));r=m}let u=[];for(let m=0,f=0;m<c;m++,f+=l)u[m]=r.slice(f,f+l);r=u}else r=[r];s&&(r=this.Transpose(r)),this.ExecCommand({key:6,area:t,value:r,array:a,r1c1:o})}!this.primary_selection.empty&&t.Contains(this.primary_selection.target)&&this.UpdateFormulaBarFormula()}ApplyStyle(t,r={},i=!0){if(!t){if(this.primary_selection.empty)return;t=this.primary_selection.area}O.UpdateStyle(r),this.ExecCommand({key:7,area:t,style:r,delta:i}),this.UpdateFormulaBarFormula()}GetSelection(){return this.primary_selection}Update(t=!1,r){this.DelayedRender(t,r)}ApplyBorders2(t,r="none",i,n=1){if(!t){if(this.primary_selection.empty)return;t=this.primary_selection.area}r==="none"&&(n=0),this.ExecCommand({key:8,color:i,area:t,borders:r,width:n})}Batch(t,r=!0){this.batch=!0,t(),this.batch=!1;let i=this.batch_events.slice(0);return this.batch_events=[],r&&this.DelayedRender(!1),i}ScrollTo(t,r=!0,i=!0,n=!1){this.layout.ScrollTo(t,r,i,n)}ScrollIntoView(t){this.options.scrollbars&&this.layout.ScrollIntoView(t)}GetScrollOffset(){return this.layout.GetScrollOffset()}ScrollOffset(t){if(t)this.layout.scroll_offset=t;else return this.layout.scroll_offset}TranslateInternal(t,r){let i=this.parser.Parse(t);if(i.expression){let n=!1;if(this.parser.Walk(i.expression,s=>{if(s.type==="call"){let a=r[s.name.toUpperCase()];a&&(n=!0,s.name=a)}return!0}),n)return"="+this.parser.Render(i.expression,{missing:""})}return t}RenameSheetInternal(t,r){super.RenameSheetInternal(t,r),this.tab_bar?.Update()}TranslateFunction(t){return this.language_map?this.TranslateInternal(t,this.language_map):t}UntranslateFunction(t){return this.reverse_language_map?this.TranslateInternal(t,this.reverse_language_map):t}UntranslateData(t){return Array.isArray(t)?lr(t)?t.map(r=>r.map(i=>i&&typeof i=="string"&&i[0]==="="?this.UntranslateFunction(i):i)):t.map(r=>r&&typeof r=="string"&&r[0]==="="?this.UntranslateFunction(r):r):(t&&typeof t=="string"&&t[0]==="="&&(t=this.UntranslateFunction(t)),t)}StyleDefaultFromTheme(){this.model.theme_style_properties.font_face=this.theme.grid_cell?.font_face||"",this.model.theme_style_properties.font_size=this.theme.grid_cell?.font_size||{unit:"pt",value:10}}AutoSizeColumn(t,r,i=!0){if(!this.tile_renderer)return;let n=12,s=4*2;i||(n=t.GetColumnWidth(r));for(let a=0;a<t.cells.rows;a++){let o=t.CellData({row:a,column:r}),l=o.formatted||"";if(typeof l!="string"&&(l=l.map(c=>c.text).join("")),l&&l.length){let c=this.tile_renderer.MeasureText(l,k.Font(o.style||{}));n=Math.max(n,Math.ceil(c.width)+s)}}t.SetColumnWidth(r,n)}EnsureActiveSheet(t=!1){for(let r of this.model.sheets.list)if(r===this.active_sheet){t&&this.ActivateSheetInternal({key:21,id:r.id,force:!0});return}this.ActivateSheetInternal({key:21,index:0})}ActivateSheetInternal(t){let r=this.SelectingArgument(),i=this.ResolveSheet(t)||this.model.sheets.list[0];if(this.active_sheet===i&&!t.force)return;if(!i.visible)throw new Error("cannot activate hidden sheet");this.HideHoverInfo(),this.active_sheet.selection=JSON.parse(JSON.stringify(this.primary_selection)),this.active_sheet.scroll_offset=this.layout.scroll_offset;let n=this.active_sheet;this.RemoveAnnotationNodes(),this.active_sheet=i,r?this.RenderSelections():(this.ClearSelection(this.primary_selection),i.selection&&!i.selection.empty&&this.Select(this.primary_selection,new v(i.selection.area.start,i.selection.area.end),i.selection.target));let s=this.active_sheet.annotations;for(let a of s)this.AddAnnotation(a,!0);this.ActivateSheetTasks(),this.QueueLayoutUpdate(),this.pending_layout_update.has(this.active_sheet.id)?(this.Repaint(!0,!0),this.pending_layout_update.delete(this.active_sheet.id)):this.Repaint(!1,!1),this.grid_events.Publish({type:"sheet-change",deactivate:n,activate:this.active_sheet}),this.tab_bar&&this.tab_bar.Update(),this.layout.scroll_offset=this.active_sheet.scroll_offset,this.formula_bar?.selecting&&requestAnimationFrame(()=>this.formula_bar?.FocusEditor())}ActivateSheetTasks(){if(this.active_sheet.Activate(),this.active_sheet.image&&!this.active_sheet.image.complete){let t=this.active_sheet.image,r=0,i=()=>{t.complete?this.UpdateLayout():r++<5&&setTimeout(()=>i(),10)};i()}}HighlightFreezeArea(){for(let t of[this.layout.corner_selection,this.layout.row_header_selection,this.layout.column_header_selection])t.classList.add("highlight-area"),setTimeout(()=>{t.classList.remove("highlight-area")},400)}QueueLayoutUpdate(t){this.tile_update_pending=!0,t&&(this.scroll_offset_pending=t)}HandleAddressLabelEvent(t){if(t){let r=(a="")=>{let o=a.toLowerCase();for(let l of this.model.sheets.list)if(l.name.toLowerCase()===o)return l.id;return this.active_sheet.id},i=a=>{for(let o of this.model.sheets.list)if(o.id===a)return o;return this.active_sheet},n,s=this.parser.Parse(t);if(s.expression)switch(s.expression.type){case"address":s.expression.sheet_id=r(s.expression.sheet),n=new v(s.expression);break;case"range":s.expression.start.sheet_id=r(s.expression.start.sheet),n=new v(s.expression.start,s.expression.end);break;case"identifier":n=this.model.named_ranges.Get(s.expression.name),n||this.primary_selection.empty||this.SetName(s.expression.name.toUpperCase(),this.primary_selection.area);break;default:break}if(n){let a=i(n.start.sheet_id);if(a.columns>=n.end.column&&a.rows>=n.end.row){this.ExecCommand({key:5,area:n});return}else console.warn("address out of range")}}this.UpdateAddressLabel(),this.Focus()}InitFormulaBar(t,r){this.formula_bar=new Ot(t,this.parser,this.theme,this.model,this.view,this.options,r),this.formula_bar.autocomplete_matcher=this.autocomplete_matcher,this.formula_bar.Subscribe(i=>{switch(i.type){case"address-label-event":this.HandleAddressLabelEvent(i.text);break;case"stop-editing":this.editing_state=0;break;case"start-editing":this.editing_state=2,this.editing_cell={...this.primary_selection.target};break;case"discard":if(this.editing_state=0,this.editing_annotation){this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection);let n=this.editing_annotation.view[this.view_index]?.node;n&&n.focus(),this.editing_annotation=void 0,this.UpdateFormulaBarFormula(),this.DelayedRender();return}this.container&&this.Focus(),this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection),this.UpdateFormulaBarFormula(),this.DelayedRender();break;case"commit":if(this.active_sheet.id!==this.editing_cell.sheet_id&&this.editing_cell.sheet_id&&this.ActivateSheetID(this.editing_cell.sheet_id),this.editing_state=0,this.editing_annotation){let n=this.editing_annotation;this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection),n.data.formula=i.value?this.FixFormula(i.value):"";let s=this.editing_annotation.view[this.view_index]?.node;s&&s.focus(),this.grid_events.Publish({type:"annotation",event:"update",annotation:n}),this.editing_annotation=void 0,this.DelayedRender();return}this.container&&this.Focus(),this.SetInferredType(this.primary_selection,i.value,i.array),this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection),this.options.repaint_on_cell_change&&this.DelayedRender(!1,this.primary_selection.area),i.event&&this.OverlayKeyDown(i.event);break;case"update":i.dependencies&&this.HighlightDependencies(i.dependencies);break}})}InitOverlayEditor(t){this.container&&(this.overlay_editor=new Gt(this.container,this.parser,this.theme,this.model,this.view,t),this.overlay_editor.UpdateTheme(this.layout.scale),this.overlay_editor.autocomplete_matcher=this.autocomplete_matcher,this.overlay_editor.Subscribe(r=>{switch(r.type){case"stop-editing":this.editing_state=0;break;case"start-editing":this.editing_state=1,this.editing_cell={...this.primary_selection.target};break;case"update":r.dependencies&&this.HighlightDependencies(r.dependencies);break;case"end-selection":this.ClearSelection(this.active_selection),this.DelayedRender();break}}))}DelayedRender(t=!1,r,i=!1){!this.tile_update_pending&&r?this.layout.DirtyArea(r):!this.tile_update_pending&&t&&this.layout.DirtyAll(),this.render_token||(this.render_token=1,re().then(()=>{this.render_token=0,this.Repaint(t,i)}))}Repaint(t=!1,r=!1,i=!1){if(this.headless||!this.tile_renderer)return;if(this.tile_update_pending&&(this.tile_update_pending=!1,this.layout.UpdateTiles(),this.scroll_offset_pending&&(this.layout.scroll_offset=this.scroll_offset_pending,this.scroll_offset_pending=void 0),this.render_tiles=this.layout.VisibleTiles(),this.layout.UpdateAnnotation(this.active_sheet.annotations)),this.layout_token=0,this.tile_renderer.OverflowDirty(r),t)for(let l of this.layout.grid_tiles)for(let c of l)c.dirty=!0;let n=this.render_tiles.start,s=this.render_tiles.end,a=[];for(let l=n.row;l<=s.row;l++)a.push(l);let o=[];for(let l=n.column;l<=s.column;l++)o.push(l);n.row>0&&this.active_sheet.freeze.rows&&a.push(0),n.column>0&&this.active_sheet.freeze.columns&&o.push(0);for(let l of o)for(let c of a){let h=this.layout.grid_tiles[l][c];(t||h.dirty||h.needs_full_repaint)&&(this.tile_renderer.Render(h),h.dirty=h.needs_full_repaint=!1)}this.tile_renderer.RenderHeaders(this.render_tiles,i),this.tile_renderer.RenderCorner(),this.RenderSelections()}MouseMove_RowHeader(t){let r=this.layout.CoordinateToRowHeader(t.offsetY),i=this.layout.OffsetCellAddressToRectangle({row:r.row,column:0});this.hover_data.address&&(this.hover_data.address.row!==-1||this.hover_data.address.column!==-1)&&this.HoverCell({row:-1,column:-1});let n=-1;t.offsetY-i.top<=this.RESIZE_PIXEL_BUFFER&&r.row>0?n=r.row-1:i.bottom-t.offsetY<=this.RESIZE_PIXEL_BUFFER&&(n=r.row),n>=0?this.layout.ResizeCursor("row"):this.cell_resize.row&&(this.cell_resize.row=-1,this.layout.ResizeCursor()),this.cell_resize.row=n}MouseMove_ColumnHeader(t){let r=this.layout.CoordinateToColumnHeader(t.offsetX),i=this.layout.OffsetCellAddressToRectangle({row:0,column:r.column});this.hover_data.address&&(this.hover_data.address.row!==-1||this.hover_data.address.column!==-1)&&this.HoverCell({row:-1,column:-1});let n=-1;t.offsetX-i.left<=this.RESIZE_PIXEL_BUFFER&&r.column>0?n=r.column-1:i.right-t.offsetX<=this.RESIZE_PIXEL_BUFFER&&(n=r.column),n>=0?this.layout.ResizeCursor("column"):this.cell_resize.column&&(this.cell_resize.column=-1,this.layout.ResizeCursor()),this.cell_resize.column=n}MouseDown_RowHeader(t){if(t.button!==0)return;t.stopPropagation(),t.preventDefault();let r=this.layout.CoordinateToRowHeader(t.offsetY),i=this.layout.row_header_cover.getBoundingClientRect(),n={x:i.left,y:i.top};if(this.cell_resize.row>=0){let s=this.cell_resize.row,a=n.y+t.offsetY;if(this.layout.HideDropdownCaret(),this.IsDoubleClick({row:s,column:-1})){let f=[s];if(!this.primary_selection.empty&&this.primary_selection.area.rows>1&&this.primary_selection.area.start.column===1/0&&this.primary_selection.area.ContainsRow(s)){let b=this.active_sheet.RealArea(this.primary_selection.area);f=[];for(let p=b.start.row;p<=b.end.row;p++)f.push(p)}this.ExecCommand({key:3,row:f});return}let o=this.layout.RowHeight(s),l=o,c=this.layout.OffsetCellAddressToRectangle({row:s,column:0}),h=n.y+c.bottom;this.layout.ShowTooltip({left:!0,text:`${l}px`,x:Math.round(i.right+10),y:h});let u=[],m=[];for(let f of this.active_sheet.annotations){let b=c.bottom-1;if(!f.scaled_rect||f.scaled_rect.bottom<b)continue;let p=[...this.layout.GetFrozenAnnotations(f)],g=f.view[this.view_index]?.node;g&&p.push(g),b<=f.scaled_rect.top&&f.data.move_with_cells?u.push({annotation:f,y:f.scaled_rect.top,nodes:p}):b>f.scaled_rect.top&&f.data.resize_with_cells&&m.push({annotation:f,height:f.scaled_rect.height,nodes:p})}ge(this.layout.mask,"row-resize",f=>{let b=Math.max(-o,Math.round(f.offsetY-a));if(b+o!==l){l=b+o,this.layout.SetRowHeight(s,l),this.layout.UpdateTooltip({text:`${l}px`,y:h+b});for(let{annotation:p,y:g}of u)p.scaled_rect&&(p.scaled_rect.top=g+b);for(let{annotation:p,height:g}of m)p.scaled_rect&&(p.scaled_rect.height=g+b);requestAnimationFrame(()=>{for(let{annotation:p,nodes:g}of m)if(p.scaled_rect)for(let _ of g)p.scaled_rect.ApplyStyle(_);for(let{annotation:p,nodes:g}of u)if(p.scaled_rect)for(let _ of g)p.scaled_rect.ApplyStyle(_);this.layout.UpdateTileHeights(!0,s),this.Repaint(!1,!0),this.layout.UpdateAnnotation(this.active_sheet.annotations)})}},()=>{this.layout.HideTooltip(),requestAnimationFrame(()=>{let f=[s];if(!this.primary_selection.empty&&this.primary_selection.area.rows>1&&this.primary_selection.area.start.column===1/0&&this.primary_selection.area.ContainsRow(s)){let b=this.active_sheet.RealArea(this.primary_selection.area);f=[];for(let p=b.start.row;p<=b.end.row;p++)f.push(p)}this.layout.SetRowHeight(s,o),this.ExecCommand({key:3,row:f,height:l/this.scale});for(let{annotation:b}of u)b.scaled_rect&&(b.data.layout=this.layout.RectToAnnotationLayout(b.scaled_rect));for(let{annotation:b}of m){b.scaled_rect&&(b.data.layout=this.layout.RectToAnnotationLayout(b.scaled_rect));let p=b.view[this.view_index];p&&p.resize_callback&&p.resize_callback.call(void 0)}})})}else{let s=this.SelectingArgument()?this.active_selection:this.primary_selection;if(this.SelectingArgument()||this.Focus(),t.shiftKey&&!s.empty){let a=s.target;this.Select(s,new v(s.target,r,!0),void 0,!0),r=a}else this.Select(s,new v(r),{column:0,row:r.row});this.RenderSelections(),ge(this.layout.mask,[],a=>{let o=this.layout.CoordinateToRowHeader(a.offsetY-n.y),l=new v(o,r,!0);(s.empty||!l.Equals(s.area))&&(this.Select(s,l,void 0,!0),this.RenderSelections())},()=>{})}}MouseDown_ColumnHeader(t){if(t.button!==0)return;t.stopPropagation(),t.preventDefault();let r=this.layout.CoordinateToColumnHeader(t.offsetX),i=this.layout.column_header_cover.getBoundingClientRect(),n={x:i.left,y:i.top};if(this.cell_resize.column>=0){let s=this.cell_resize.column,a=n.x+t.offsetX;if(this.layout.HideDropdownCaret(),this.IsDoubleClick({row:-1,column:s})){let f=[s];if(!this.primary_selection.empty&&this.primary_selection.area.columns>1&&this.primary_selection.area.start.row===1/0&&this.primary_selection.area.ContainsColumn(s)){let b=this.active_sheet.RealArea(this.primary_selection.area);f=[];for(let p=b.start.column;p<=b.end.column;p++)f.push(p)}this.ExecCommand({key:4,column:f});return}let o=this.layout.ColumnWidth(s),l=o,c=this.layout.OffsetCellAddressToRectangle({row:0,column:s}),h=n.x+c.right;this.layout.ShowTooltip({up:!0,text:`${l}px`,x:h,y:Math.round(i.bottom+10)});let u=[],m=[];for(let f of this.active_sheet.annotations){let b=c.right-1;if(!f.scaled_rect||f.scaled_rect.right<b)continue;let p=[...this.layout.GetFrozenAnnotations(f)],g=f.view[this.view_index]?.node;g&&p.push(g),b<=f.scaled_rect.left&&f.data.move_with_cells?u.push({annotation:f,x:f.scaled_rect.left,nodes:p}):b>f.scaled_rect.left&&f.data.resize_with_cells&&m.push({annotation:f,width:f.scaled_rect.width,nodes:p})}ge(this.layout.mask,"column-resize",f=>{let b=Math.max(-o,Math.round(f.offsetX-a));if(b+o!==l){l=b+o,this.layout.UpdateTooltip({text:`${l}px`,x:h+b}),this.layout.SetColumnWidth(s,l);for(let{annotation:p,x:g}of u)p.scaled_rect&&(p.scaled_rect.left=g+b);for(let{annotation:p,width:g}of m)p.scaled_rect&&(p.scaled_rect.width=g+b);requestAnimationFrame(()=>{for(let{annotation:p,nodes:g}of m)if(p.scaled_rect)for(let _ of g)p.scaled_rect.ApplyStyle(_);for(let{annotation:p,nodes:g}of u)if(p.scaled_rect)for(let _ of g)p.scaled_rect.ApplyStyle(_);this.layout.UpdateTileWidths(!0,s),this.Repaint(!1,!0)})}},()=>{this.layout.HideTooltip(),requestAnimationFrame(()=>{let f=[s];if(!this.primary_selection.empty&&this.primary_selection.area.columns>1&&this.primary_selection.area.start.row===1/0&&this.primary_selection.area.ContainsColumn(s)){let b=this.active_sheet.RealArea(this.primary_selection.area);for(let p=b.start.column;p<=b.end.column;p++)f.push(p)}this.ExecCommand({key:4,column:f,width:l/this.scale});for(let{annotation:b}of u)b.scaled_rect&&(b.data.layout=this.layout.RectToAnnotationLayout(b.scaled_rect));for(let{annotation:b}of m){b.scaled_rect&&(b.data.layout=this.layout.RectToAnnotationLayout(b.scaled_rect));let p=b.view[this.view_index];p&&p.resize_callback&&p.resize_callback.call(void 0)}})})}else{let s=this.SelectingArgument()?this.active_selection:this.primary_selection;if(this.SelectingArgument()||this.Focus(),t.shiftKey&&!s.empty){let a=s.target;this.Select(s,new v(s.target,r,!0),void 0,!0),r=a}else this.Select(s,new v(r),{row:0,column:r.column});this.RenderSelections(),ge(this.layout.mask,[],a=>{let o=this.layout.CoordinateToColumnHeader(a.offsetX-n.x),l=new v(o,r,!0);(s.empty||!l.Equals(s.area))&&(this.Select(s,l,void 0,!0),this.RenderSelections())})}}HoverCell(t,r){let i=this.active_sheet.cells.GetCell(t,!1);if(i?.table&&i.table.area.start.row===t.row&&i.table.sortable!==!1?(this.hover_data.table_header=!0,this.layout.ShowTableSortButton(i.table,t.column-i.table.area.start.column,t)):(this.hover_data.table_header&&this.layout.HideTableSortButton(),this.hover_data.table_header=!1),i?.merge_area){let n=i.merge_area;t=n.start,i=this.active_sheet.cells.GetCell(t,!1),t={row:n.start.row,column:n.end.column}}if(i?.note){let n=this.options.markdown?we.instance.HTML(we.instance.Parse(i.note)):void 0;this.layout.ShowNote(i.note,t,r,n),this.hover_data.note=!0}else this.hover_data.note&&(this.layout.HideNote(),this.hover_data.note=!1);i?.hyperlink?(this.layout.ShowTitle("Link: "+i.hyperlink,t),this.hover_data.link=!0,this.hover_data.cell=i):this.hover_data.link&&(this.layout.HideTitle(),this.hover_data.cell=void 0),this.hover_data.address={...t}}HideHoverInfo(){this.layout.HideTitle(),this.layout.HideTooltip(),this.hover_data.note=this.hover_data.link=!1,this.hover_data.cell=void 0,this.hover_data.pointer&&this.layout.grid_cover.classList.remove("link-pointer"),this.hover_data.pointer=!1}MouseMove_Grid(t){if(t.stopPropagation(),t.preventDefault(),!this.selection_renderer)return;(this.cell_resize.row>=0||this.cell_resize.column>=0)&&this.layout.ResizeCursor();let r={x:t.offsetX,y:t.offsetY},i;if(this.overlay_editor?.editing||(i=this.layout.PointToAddress_Grid(r),(!this.hover_data.address||this.hover_data.address.row!==i.row||this.hover_data.address.column!==i.column)&&this.HoverCell(i,t)),this.hover_data.link&&i&&(this.hover_data.point=r,this.hover_data.handler||(this.hover_data.handler=requestAnimationFrame(()=>{let s=this.hover_data.address&&this.hover_data.point&&this.hover_data.cell&&this.PointInTextPart(this.hover_data.address,this.hover_data.point,this.hover_data.cell);s!==!!this.hover_data.pointer&&(this.hover_data.pointer=s,s?this.layout.grid_cover.classList.add("link-pointer"):this.layout.grid_cover.classList.remove("link-pointer")),this.hover_data.handler=void 0}))),this.primary_selection.empty||!this.selection_renderer.nub_rectangle){this.nub_select_flag&&(this.layout.grid_cover.classList.remove("nub-select"),this.nub_select_flag=!1);return}let n=this.selection_renderer.nub_rectangle.Contains(t.offsetX,t.offsetY);n!==this.nub_select_flag&&(n?this.layout.grid_cover.classList.add("nub-select"):this.layout.grid_cover.classList.remove("nub-select"),this.nub_select_flag=n)}ClearDoubleClick(){this.double_click_data.address=void 0}IsDoubleClick(t,r=300){if(this.double_click_data.address&&this.double_click_data.address.row===t.row&&this.double_click_data.address.column===t.column)return clearTimeout(this.double_click_data.timeout),this.double_click_data.address=void 0,this.double_click_data.timeout=void 0,!0;this.double_click_data.timeout&&clearTimeout(this.double_click_data.timeout),this.double_click_data.address={...t},this.double_click_data.timeout=window.setTimeout(()=>{this.double_click_data.address=void 0,this.double_click_data.timeout=void 0},r)}PointInTextPart(t,r,i){let n=this.layout.CellAddressToRectangle(t);i.merge_area&&(n=n.Combine(this.layout.CellAddressToRectangle(i.merge_area.end)));let s=r.x-n.left,a=r.y-n.top,o=i.renderer_data?.text_data?.strings||[];for(let l of o)for(let c of l)if(typeof c.left=="number"&&typeof c.top=="number"&&typeof c.width=="number"&&typeof c.height=="number"&&s>=c.left&&a>=c.top&&s<=c.left+c.width&&a<=c.top+c.height)return!0;return!1}MouseDown_Grid(t){if(t.button!==0)return;t.stopPropagation(),t.preventDefault();let r=this.SelectingArgument();!r&&this.additional_selections.length&&this.ClearAdditionalSelections(),(!r||!this.formula_bar?.selecting)&&this.Focus(),this.overlay_editor?.editing&&!this.overlay_editor?.selecting&&this.DismissEditor();let i={x:t.offsetX,y:t.offsetY},n=this.layout.PointToAddress_Grid(i),s=r?this.active_selection:this.primary_selection;if(!r&&this.IsDoubleClick(n)){q.is_mobile&&this.overlay_editor?.edit_node?.focus(),this.OverlayEditCell({target:n,area:new v(n)},!1);return}let a=this.layout.grid_cover.getBoundingClientRect(),o={x:a.left,y:a.top},l=[],c;if(t.shiftKey&&!s.empty){let u=s.target;this.Select(s,new v(n,s.target,!0),void 0,!0),n=u}else if(this.nub_select_flag)n=s.area.TopLeft(),l.push("nub-select"),c=this.active_sheet.RealArea(s.area);else{let u=n,m=this.active_sheet.CellData(u);if(m.merge_area&&(u=m.merge_area.start,m=this.active_sheet.CellData(m.merge_area.start)),m.hyperlink&&this.PointInTextPart(u,i,m)){let f=m.hyperlink;re().then(()=>{this.grid_events.Publish({type:"cell-event",data:{type:"hyperlink",data:f}})}),this.ClearDoubleClick();return}if(m.click_function){let f=this.layout.CellAddressToRectangle(u);m.merge_area&&(f=f.Combine(this.layout.CellAddressToRectangle(m.merge_area.end)));let b=m.click_function.call(this,{cell:m,x:i.x-f.left,y:i.y-f.top,width:f.width,height:f.height,scale:this.layout.scale});if(b.value&&this.ExecCommand({key:6,value:b.value,area:u}),b.block_selection){this.ClearDoubleClick(),!this.primary_selection.empty&&this.primary_selection.target.row===u.row&&this.primary_selection.target.column===u.column&&this.UpdateFormulaBarFormula();return}}this.Select(s,new v(n),n)}this.RenderSelections(),r&&this.UpdateSelectedArgument(s);let h=this.layout.CellAddressToRectangle({row:0,column:0}).Combine(this.layout.CellAddressToRectangle({row:this.active_sheet.rows-1,column:this.active_sheet.columns-1})).Expand(-1,-1);ge(this.layout.mask,l,u=>{let m={x:u.offsetX-o.x,y:u.offsetY-o.y},f=h.Clamp(m.x,m.y),b=this.layout.PointToAddress_Grid(f,!0),p=this.layout.scroll_reference_node,g=!1;this.container&&this.options.scrollbars&&(m.x<p.scrollLeft?(p.scrollLeft-=25,g=!0):m.x>p.scrollLeft+this.container.clientWidth&&(p.scrollLeft+=25,g=!0),m.y<p.scrollTop?(p.scrollTop-=25,g=!0):m.y>p.scrollTop+this.container.clientHeight&&(p.scrollTop+=25,g=!0),g&&(a=this.layout.grid_cover.getBoundingClientRect(),o.x=a.left+document.body.scrollLeft,o.y=a.top+document.body.scrollTop));let _=new v(b,n,!0);if(c&&(_=c.Clone(),_.ConsumeAddress(b),_.rows!==c.rows&&_.columns!==c.columns)){let y={rows:b.row>c.end.row?b.row-c.end.row:c.start.row-b.row,columns:b.column>c.end.column?b.column-c.end.column:c.start.column-b.column};y.rows>=y.columns?_=new v({row:_.start.row,column:c.start.column},{row:_.end.row,column:c.end.column}):_=new v({row:c.start.row,column:_.start.column},{row:c.end.row,column:_.end.column})}(s.empty||!_.Equals(s.area))&&(this.Select(s,_,void 0,!0),this.RenderSelections(),r?this.UpdateSelectedArgument(s):!s.empty&&!s.area.entire_sheet&&(s.area.entire_column?this.UpdateAddressLabel(void 0,s.area.columns+"C"):s.area.entire_row?this.UpdateAddressLabel(void 0,s.area.rows+"R"):s.area.count>1?this.UpdateAddressLabel(void 0,s.area.rows+"R x "+s.area.columns+"C"):this.UpdateAddressLabel(s)))},()=>{this.UpdateAddressLabel(),r?this.overlay_editor?.editing||this.select_argument||this.formula_bar&&this.formula_bar.FocusEditor():c&&this.RecycleNubArea(s.area,c)})}Transpose(t){let r=[],i=t.length,n=t[0].length;for(let s=0;s<n;s++){r[s]=[];for(let a=0;a<i;a++)r[s][a]=t[a][s]}return r}RecycleNubArea(t,r){if(t.Equals(r))return;let i=[];for(let u=0;u<r.rows;u++){i[u]=[];for(let m=0;m<r.columns;m++){let f={row:r.start.row+u,column:r.start.column+m};i[u][m]=this.active_sheet.CellData(f)}}if(i[0][0].area&&i[0][0].area.Equals(r)){this.ExecCommand({key:6,value:i[0][0].value,array:!0,area:t});return}if(i[0][0].table&&r.Equals(new v(i[0][0].table.area.start,i[0][0].table.area.end))){let u=i[0][0].table,m=u.sortable,f=u.totals_row,b=u.theme;this.ExecCommand([{key:29,table:u},{key:28,area:t,sortable:m,totals:f,theme:b}]);return}let n=[],s=[],a=r.columns,o=t.rows,l=!1,c=!1;t.columns===r.columns?l=t.start.row<r.start.row:(a=r.rows,o=t.columns,l=t.start.column<r.start.column,i=this.Transpose(i),c=!0);for(let u=0;u<o;u++)n[u]=[],s[u]=[];for(let u=0;u<a;u++){let m=0;if(i.length>1){m=1;let f=[],b=[];for(let p=0;p<i.length;p++){let g=i[p][u];g.ValueIsNumber()&&(b.push(p),f.push(g.value))}if(f.length>1){let p=f.slice(1).map((g,_)=>g-f[_]);p.every(g=>g===p[0])&&(m=p[0])}f.length&&(m+=f[f.length-1]-f[0])}for(let f=0;f<i.length;f++){let b,p=i[f][u];if(p.ValueIsFormula()){let A=this.parser.Parse(p.value);A.expression&&A.full_reference_list?.length&&(b=A.expression)}let g=0,_=f,y=i.length,x=0,w=m;l&&(_=o-i.length+f,y=-i.length,w=-m);for(let A=_;A>=0&&A<o;A+=y,g+=y,x+=w){if(b)n[A][u]="="+this.parser.Render(b,{offset:{rows:g,columns:0}});else{let S=i[f][u];S.ValueIsNumber()?n[A][u]=S.value+x:n[A][u]=S.value}s[A][u]=i[f][u].style||{}}}}let h=[{key:6,value:c?this.Transpose(n):n,array:!1,area:t}];c&&(s=this.Transpose(s));for(let u=0;u<s.length;u++)for(let m=0;m<s[u].length;m++)h.push({key:7,area:{row:u+t.start.row,column:m+t.start.column},style:s[u][m],delta:!1});this.ExecCommand(h)}UpdateSelectedArgument(t){let r=this.active_sheet.CellData(t.area.start),i=new v(r.merge_area?r.merge_area.start:t.target),n=this.model.named_ranges.MatchSelection(t.area,i);if(!n&&(n=t.area.spreadsheet_label,r.merge_area&&r.merge_area.Equals(t.area)&&(n=v.CellAddressToLabel(r.merge_area.start)),this.active_sheet.id!==this.editing_cell.sheet_id)){let s=this.active_sheet.name;lt.test(s)?n=`'${s}'!${n}`:n=`${s}!${n}`}this.overlay_editor?.editing&&this.overlay_editor.selecting?this.overlay_editor.InsertReference(n,0):this.formula_bar&&this.formula_bar.selecting?this.formula_bar.InsertReference(n,0):this.select_argument&&this.grid_events.Publish({type:"alternate-selection",selection:this.active_selection})}SelectingArgument(){return this.overlay_editor?.editing&&this.overlay_editor?.selecting||this.formula_bar&&this.formula_bar.selecting||this.select_argument}OverlayKeyDown(t){let r=!1;if(this.overlay_editor&&this.overlay_editor.editing)switch(r=!0,this.overlay_editor.HandleKeyDown(t)){case 1:return;case 3:this.editing_state=0,this.DismissEditor(),this.DelayedRender();return;case 2:if(this.active_sheet.id!==this.editing_cell.sheet_id&&this.editing_cell.sheet_id&&this.ActivateSheetID(this.editing_cell.sheet_id),this.editing_state=0,this.overlay_editor?.selection){let c=this.overlay_editor?.edit_node.textContent||void 0,h=t.key==="Enter"&&t.ctrlKey&&t.shiftKey;this.SetInferredType(this.overlay_editor.selection,c,h)}this.DismissEditor(),this.options.repaint_on_cell_change&&this.DelayedRender(!1,this.overlay_editor?.selection.area||void 0);break}let i=this.SelectingArgument();if(this.formula_bar&&this.formula_bar.focused&&!i||this.selected_annotation&&!i)return;let n=i?this.active_selection:this.primary_selection,s={rows:0,columns:0},a=!1,o=!1;if(t.ctrlKey||q.is_mac&&t.metaKey){switch(t.key){case"ArrowDown":case"Down":s.rows++;break;case"ArrowUp":case"Up":s.rows--;break;case"ArrowLeft":case"Left":s.columns--;break;case"ArrowRight":case"Right":s.columns++;break;case"Delete":case"Del":{t.stopPropagation(),t.preventDefault();for(let l=0;l<this.model.sheets.length;l++)if(this.model.sheets.list[l]===this.active_sheet){this.DeleteSheet(l);break}return}break;case"/":t.stopPropagation(),t.preventDefault(),this.SelectArrayOrTable();break;default:if(t.shiftKey)return}if(s.columns||s.rows)if(t.stopPropagation(),t.preventDefault(),!n.empty&&(s.columns||s.rows)){if(this.BlockSelection(n,!!t.shiftKey,s.columns,s.rows))return}else return;else{let l={},c=this.primary_selection.empty?{}:this.active_sheet.CellData(this.primary_selection.target).style||{};switch(t.key.toLowerCase()){case"b":l.bold=!c.bold;break;case"i":l.italic=!c.italic;break;case"u":l.underline=!c.underline;break;case"a":this.SelectAll();break;case"0":if(!t.altKey)return;this.ClearSelection(this.primary_selection),this.RenderSelections();break;default:t.key;return}Object.keys(l).length&&this.ApplyStyle(void 0,l)}}else switch(t.key){case"Tab":t.shiftKey?s.columns--:s.columns++,a=!0;break;case"Enter":t.shiftKey?s.rows--:s.rows++,a=!0;break;case"ArrowDown":case"Down":s.rows++,o=t.shiftKey;break;case"ArrowUp":case"Up":s.rows--,o=t.shiftKey;break;case"ArrowLeft":case"Left":s.columns--,o=t.shiftKey;break;case"ArrowRight":case"Right":s.columns++,o=t.shiftKey;break;case"Delete":case"Del":n.empty||this.DeleteSelection(n);break;case"PageUp":case"PageDown":if(t.shiftKey){this.NextSheet(t.key==="PageUp"?-1:1);break}return;case"Control":case"Shift":case"Alt":return;default:n.empty||this.OverlayEditCell(n,!0,t);return}t.stopPropagation(),t.preventDefault(),(s.rows||s.columns)&&this.AdvanceSelection(s,n,a,o,!r)}SelectArrayOrTable(){if(this.primary_selection.empty)return;let t=this.active_sheet.CellData(this.primary_selection.target);if(!(!t||!t.area&&!t.table)){if(t.area&&this.Select(this.primary_selection,t.area,t.area.start),t.table){let r=new v(t.table.area.start,t.table.area.end);this.Select(this.primary_selection,r,r.start)}this.RenderSelections()}}RenderSelections(t=!0){let r=this.hide_selection?!1:!this.editing_state||this.editing_cell.sheet_id===this.active_sheet.id;this.selection_renderer?.RenderSelections(r,t)}BlockSelection(t,r,i,n,s=!0){if(t.empty)return!1;let a={...t.target};n>0?a.row=Math.max(a.row,t.area.end.row):n<0&&(a.row=Math.min(a.row,t.area.start.row)),i>0?a.column=Math.max(a.column,t.area.end.column):i<0&&(a.column=Math.min(a.column,t.area.start.column));let o=this.active_sheet.cells,l=o.GetCell(t.target,!1);if(!l||l.type===0&&!l.area)return!1;let c={...a};for(;;){let h={row:c.row+n,column:c.column+i};if(h.column<0||h.row<0||h.column>=this.active_sheet.columns||h.row>=this.active_sheet.rows)break;let u=!1;if(n)for(let m=t.area.start.column;!u&&m<=t.area.end.column;m++)l=o.GetCell({row:h.row,column:m},!1),u=u||!!l&&(l.type!==0||!!l.area),!u&&l&&l.merge_area&&(l=o.GetCell(l.merge_area.start,!1),u=u||!!l&&(l.type!==0||!!l.area));else for(let m=t.area.start.row;!u&&m<=t.area.end.row;m++)l=o.GetCell({row:m,column:h.column},!1),u=u||!!l&&(l.type!==0||!!l.area),!u&&l&&l.merge_area&&(l=o.GetCell(l.merge_area.start,!1),u=u||!!l&&(l.type!==0||!!l.area));if(!u)break;c=h}if(r){n?(a.row=t.target.row,a.column=t.area.start.column,c.column=t.area.end.column):(a.column=t.target.column,a.row=t.area.start.row,c.row=t.area.end.row);let h=new v(a,c,!0);this.Select(t,h,t.target,!0)}else this.Select(t,new v(c));return this.ScrollIntoView(c),this.SelectingArgument()&&this.UpdateSelectedArgument(t),s&&this.DelayedRender(),!0}DeleteSelection(t){if(t.empty)return;let r=this.active_sheet.RealArea(t.area);this.ExecCommand({key:11,area:r})}SetInferredType(t,r,i=!1,n=!0){let s=t.target||t.area.start,a=this.active_sheet.CellData(s);if(a.area){if(!i&&a.area.count>1||!t.area||!t.area.Equals(a.area)){this.Error(2);return}}else if(i){let u=!1;if(this.active_sheet.cells.Apply(t.area,m=>{m.area&&(u=!0)},!1),u){this.Error(2);return}}if(a.validation&&a.validation.error){let u;if(a.validation.type==="list"?u=a.validation.list:a.validation.type==="range"&&(u=this.GetValidationRange(a.validation.area)),u&&u.length){let m=!1;if(r){let f=r.toUpperCase();for(let b of u)if(b&&b.toString().toUpperCase()===f){r=b.toString(),m=!0;break}}if(!m){this.Error(3);return}}}a.merge_area&&(s=a.merge_area.start);let o=typeof r=="string"&&r.trim()[0]==="=",l=[];if(o&&(r=this.FixFormula(r||""),!this.active_sheet.HasCellStyle(s))){let u=this.parser.Parse(r);if(u){if(u.expression?.type==="call"&&(!a.style||!a.style.number_format||M.Equals(a.style.number_format,"General"))){let m=u.expression.name.toLowerCase(),f;switch(m){case"today":f="Short Date";break;case"now":f="Timestamp";break}f&&l.push({key:7,area:i?t.area:s,style:{number_format:f},delta:!0})}if(u.dependencies){let m=u.dependencies;for(let f of Object.keys(m.addresses)){let b=m.addresses[f];if(this.active_sheet.HasCellStyle({...b})){let p=this.active_sheet.CellData({...b});if(p.style&&p.style.number_format){let g={number_format:p.style.number_format};l.push({key:7,area:i?t.area:s,style:g,delta:!0})}break}}}}}let c=this.parser.Parse(r||"").expression;c?.type==="group"&&c.elements.length===1&&c.elements[0].type==="complex"&&(c=c.elements[0]);let h=c&&c.type==="complex"?{type:7,value:{real:c.real,imaginary:c.imaginary}}:be.TryParse(r);if(!o&&h.type===3){let u="",m=h.hints||0;(!a.style||!a.style.number_format||M.Equals(a.style.number_format,"General"))&&(m&64?u="Short Date":m&2?u="Exponential":m&4?u="Percent":m&8?u="Currency":(m&16||m&32)&&(u="Accounting")),u&&l.push({key:7,area:i?t.area:s,style:{number_format:u},delta:!0})}if(l.push({key:6,area:i?t.area:s,array:i,value:o?this.UntranslateFunction(r||""):h.value}),n)this.ExecCommand(l);else return l}FixFormula(t){if(t.trim()[0]!=="=")return t;t=t.replace(/^\s+/,"");let r=!1,i=!1,n=0,s=!1,a=t.length;for(let o=0;o<a;o++){let l=t[o];if(!s)switch(l){case'"':r?t[o+1]==='"'?o++:r=!1:i||(r=!0);break;case"'":i?i=!1:r||(i=!0);break;case"\\":s=!0;break;case"(":!r&&!i&&n++;break;case")":!r&&!i&&n--;break}}for(r?t+='"':i&&(t+="'");n>0;)t+=")",n--;return t=this.NormalizeFormula(t),t}NormalizeFormula(t){let r=this.parser.Parse(t);return r.error&&console.warn(r.error),r&&r.expression&&(this.parser.Walk(r.expression,i=>{switch(i.type){case"call":i.name=this.autocomplete_matcher.NormalizeIdentifier(i.name)||i.name;break;case"identifier":this.model.named_ranges.Get(i.name)&&(i.name=i.name.toUpperCase());break}return!0}),t="="+this.parser.Render(r.expression,{missing:""})),t}DismissEditor(){this.overlay_editor?.active_cell&&(this.overlay_editor.active_cell.editing=!1,this.overlay_editor.active_cell.render_clean=[],this.DelayedRender(void 0,this.overlay_editor.selection.area)),this.editing_state=0,this.Focus(),this.overlay_editor?.CloseEditor(),this.ClearAdditionalSelections(),this.ClearSelection(this.active_selection)}NormalizeCellValue(t){let r=t.value;if(t.ValueIsNumber()&&t.style&&t.style.number_format)if(M.Get(t.style.number_format).date_format){let n=Pe(t.value),s=n.getUTCHours()||n.getUTCMinutes()||n.getUTCSeconds()?"Timestamp":"Short Date";r=M.Get(s).Format(r)}else if(/(?:%|percent)/i.test(t.style.number_format)){let n=0,s=t.value.toString().match(/\.(.*?)$/);s&&s[1]&&(n=Math.max(0,s[1].length-2)),r=(t.value*100).toFixed(n)+"%",T.decimal_separator===","&&(r=r.replace(/\./,","))}else r&&T.decimal_separator===","&&(r=t.value.toString().replace(/\./,","));else{if(t.ValueIsBoolean())return t.value.toString().toUpperCase();t.ValueIsNumber()?r&&T.decimal_separator===","&&(r=t.value.toString().replace(/\./,",")):t.ValueIsComplex()?(t.value.imaginary?t.value.real?r=`${t.value.real.toString()}${t.value.imaginary<0?" - ":" + "}${t.value.imaginary===1||t.value.imaginary===-1?"":Math.abs(t.value.imaginary).toString()}i`:t.value.imaginary===1?r="i":t.value.imaginary===-1?r="-i":r=t.value.imaginary.toString()+"i":r=t.value.real.toString(),T.decimal_separator===","&&(r=r.replace(/\./,","))):t.ValueIsFormula()&&(r=this.TranslateFunction(t.value))}return r}IsNumeric(t){return t>=48&&t<=57||t===this.decimal_separator_code||t===45||t===43}OverlayEditCell(t,r=!0,i){if(!this.options.in_cell_editor)return;let n=t.target||t.area.start,s=this.active_sheet.CellData(n),a;if(this.HideHoverInfo(),s.merge_area?(a=this.layout.OffsetCellAddressToRectangle(s.merge_area.start).Combine(this.layout.OffsetCellAddressToRectangle(s.merge_area.end)),n=s.merge_area.start,s=this.active_sheet.CellData(n)):a=this.layout.OffsetCellAddressToRectangle(n),s.style?.locked){console.info("cell is locked for editing");return}a=a.Shift(this.layout.header_size.width,this.layout.header_size.height);let o=s.value;r?(s.type===3||s.rendered_type===3)&&s.style&&s.style.number_format&&/(?:%|percent)/i.test(s.style.number_format)&&(!i||this.IsNumeric(i.key.charCodeAt(0)))?o="%":o=void 0:o=this.NormalizeCellValue(s),this.overlay_editor?.Edit(t,a.Expand(-1,-1),s,o,i),s.editing=!0,s.render_clean=[],this.DelayedRender(!1,t.area)}BoundAddressArea(t,r){t.column>r.end.column?(t.row=this.StepVisibleRows(t.row,1),t.row>r.end.row&&(t.row=r.start.row),t.column=r.start.column):t.column<r.start.column?(t.row=this.StepVisibleRows(t.row,-1),t.row<r.start.row&&(t.row=r.end.row),t.column=r.end.column):t.row>r.end.row?(t.column=this.StepVisibleColumns(t.column,1),t.column>r.end.column&&(t.column=r.start.column),t.row=r.start.row):t.row<r.start.row&&(t.column=this.StepVisibleColumns(t.column,-1),t.column<r.start.column&&(t.column=r.end.column),t.row=r.end.row)}StepVisibleRows(t,r){if(r>0)for(let i=0;i<r;i++)this.layout.RowHeight(++t)||i--;else if(r<0)for(let i=0;i>r;i--)--t>=0&&!this.layout.RowHeight(t)&&i++;return t}StepVisibleColumns(t,r){if(r>0)for(let i=0;i<r;i++)this.layout.ColumnWidth(++t)||i--;else if(r<0)for(let i=0;i>r;i--)--t>=0&&!this.layout.ColumnWidth(t)&&i++;return t}EnsureAddress(t,r=8){let i=!1;if(this.options.expand){if(t.row!==1/0&&t.row>=this.active_sheet.rows){let n=this.active_sheet.rows;for(;t.row>=n;)n+=r;this.active_sheet.cells.EnsureRow(n),i=!0}if(t.column!==1/0&&t.column>=this.active_sheet.columns){let n=this.active_sheet.columns;for(;t.column>=n;)n+=r;this.active_sheet.cells.EnsureColumn(n),i=!0}i&&(this.layout.UpdateTiles(),this.layout.UpdateContentsSize(),this.Repaint(!0,!0))}return i}AdvanceSelection(t,r,i=!1,n=!1,s=!0){let a=this.SelectingArgument();if(r.empty)if(a){let o={row:Math.max(0,this.StepVisibleRows(this.primary_selection.target.row,t.rows)),column:Math.max(0,this.StepVisibleColumns(this.primary_selection.target.column,t.columns))};this.Select(r,new v(o))}else this.Select(r,new v({row:0,column:0}));else{let o=this.active_sheet.CellData(r.target);if(o.merge_area&&i&&(i=!o.merge_area.Equals(r.area)),i&&r.area.count>1){let l=this.active_sheet.RealArea(r.area),c=r.target;for(;;){c.row=this.StepVisibleRows(c.row,t.rows),c.column=this.StepVisibleColumns(c.column,t.columns),this.BoundAddressArea(c,l);let h=this.active_sheet.CellData(c);if(!h.merge_area||h.merge_area.start.row===c.row&&h.merge_area.start.column===c.column)break}this.Select(r,l,c)}else if(n&&r&&r.target){let l=r.area,c=r.target,h=l.start,u=l.end,m={row:1/0,column:1/0};if(t.columns&&(l.columns===1?t.columns>0?(u.column=this.StepVisibleColumns(u.column,1),m.column=u.column):(h.column=this.StepVisibleColumns(h.column,-1),m.column=h.column):l.end.column>c.column?(u.column=this.StepVisibleColumns(u.column,t.columns),m.column=u.column):l.start.column<c.column&&(h.column=this.StepVisibleColumns(h.column,t.columns),m.column=h.column),u.column=Math.max(0,u.column),h.column=Math.max(0,h.column)),t.rows&&(l.rows===1?t.rows>0?(u.row=this.StepVisibleRows(u.row,1),m.row=u.row):(h.row=this.StepVisibleRows(h.row,-1),m.row=h.row):l.end.row>c.row?(u.row=this.StepVisibleRows(u.row,t.rows),m.row=u.row):l.start.row<c.row&&(h.row=this.StepVisibleRows(h.row,t.rows),m.row=h.row),u.row=Math.max(0,u.row),h.row=Math.max(0,h.row)),this.options.expand){for(let f of[h,u,m])f.row!==1/0&&(f.row=Math.max(0,f.row)),f.column!==1/0&&(f.column=Math.max(0,f.column));this.EnsureAddress(u)&&(s=!0),this.ScrollIntoView(m),this.Select(r,new v(h,u),void 0,!0)}else{for(let f of[h,u,m])f.row!==1/0&&(f.row=Math.max(0,Math.min(f.row,this.active_sheet.rows-1))),f.column!==1/0&&(f.column=Math.max(0,Math.min(f.column,this.active_sheet.columns-1)));this.ScrollIntoView(m),this.Select(r,new v(h,u),void 0,!0)}}else{let l=r.target;o.merge_area?(t.columns<0?l.column=this.StepVisibleColumns(o.merge_area.start.column,-1):t.columns>0&&(l.column=this.StepVisibleColumns(o.merge_area.end.column,1)),t.rows<0?l.row=this.StepVisibleRows(o.merge_area.start.row,-1):t.rows>0&&(l.row=this.StepVisibleRows(o.merge_area.end.row,1))):(l.row=this.StepVisibleRows(l.row,t.rows),l.column=this.StepVisibleColumns(l.column,t.columns)),this.EnsureAddress(l)&&(s=!0),this.Select(r,new v({row:Math.min(Math.max(0,l.row),this.active_sheet.rows-1),column:Math.min(Math.max(0,l.column),this.active_sheet.columns-1)})),this.RenderSelections(),this.ScrollIntoView(r.target)}}this.SelectingArgument()&&this.UpdateSelectedArgument(r),s&&this.DelayedRender()}HighlightDependencies(t,r=!0){let i=0;e:for(let n of t)if((n.start.row===1/0||n.start.row<this.active_sheet.rows)&&(n.start.column===1/0||n.start.column<this.active_sheet.columns)){n=this.active_sheet.RealArea(n);let s=n.spreadsheet_label;if(this.additional_selections[i]&&this.additional_selections[i].area.spreadsheet_label===s)i++;else{for(let a=0;a<i;a++)if(this.additional_selections[a].area.spreadsheet_label===s&&this.additional_selections[a].area.start.sheet_id===n.start.sheet_id)continue e;this.additional_selections[i++]={target:n.start,area:n}}}this.additional_selections.splice(i),r&&this.RenderSelections(!1)}ClearAdditionalSelections(){this.additional_selections.splice(0,this.additional_selections.length)}ClearSelection(t){this.Select(t)}HideGridSelection(){this.UpdateAddressLabel(void 0,"");let t=this.selected_annotation&&this.selected_annotation.data.formula?this.selected_annotation.data.formula:"";this.UpdateFormulaBarFormula(t),this.layout.ShowSelections(!1)}ShowGridSelection(){this.UpdateAddressLabel(),this.UpdateFormulaBarFormula(),this.layout.ShowSelections(!0)}Select(t,r,i,n=!1){if(t.empty||n&&(i=t.target),r){let s=this.active_sheet.RealArea(r);i||(i=s.start);let a=!0;for(;a;)a=!1,this.active_sheet.cells.Apply(s,c=>{c.merge_area&&!s.ContainsArea(c.merge_area)&&(r.ConsumeArea(c.merge_area),s=this.active_sheet.RealArea(r),a=!0)});t.area=new v({...r.start,sheet_id:this.active_sheet.id},r.end),i&&(t.target={...i,sheet_id:this.active_sheet.id}),t.empty=!1;let o=this.active_sheet.CellData(t.target),l="";o.formatted&&(typeof o.formatted=="string"?l=o.formatted:l=o.formatted.map(c=>c.flag===1||c.flag===6?"":c.text).join("")),this.overlay_editor?.UpdateCaption(l)}else t.empty=!0;t===this.primary_selection&&(q.is_edge&&this.Focus(),this.grid_events.Publish({type:"selection",selection:this.primary_selection}),this.UpdateAddressLabel(),this.UpdateFormulaBarFormula(),this.formula_bar&&(this.formula_bar.target_address={...this.primary_selection.target}),this.options.stats&&this.UpdateStats())}UpdateFormulaBarFormula(t){if(this.formula_bar){if(t){this.formula_bar.formula=t;return}if(this.primary_selection.empty)this.formula_bar.formula="";else{let r=this.active_sheet.CellData(this.primary_selection.target),i=r.merge_area||r.area;i&&(i.start.column!==this.primary_selection.target.column||i.start.row!==this.primary_selection.target.row)&&(r=this.active_sheet.CellData(i.start)),this.formula_bar.editable=!r.style?.locked;let n=this.NormalizeCellValue(r);if(r.validation&&!r.style?.locked){let s;r.validation.type==="list"?s=r.validation.list:r.validation.type==="range"&&(s=this.GetValidationRange(r.validation.area)),s&&s.length&&this.layout.ShowDropdownCaret(r.merge_area||new v(this.primary_selection.target),s,r.value)}else this.layout.HideDropdownCaret();r.area?this.formula_bar.formula="{"+(n||"")+"}":this.formula_bar.formula=typeof n<"u"?n.toString():""}}}RenderStats(t){if(!Array.isArray(t))return[];let r=0,i=0,n={real:0,imaginary:0};for(let s of t)for(let a of s)typeof a=="number"?(n.real+=a,i++):ye(a)&&(n.real+=a.real,n.imaginary+=a.imaginary,i++),typeof a<"u"&&r++;if(r>1)if(i>0){let s=M.Get("General");if(n.imaginary){let a={real:n.real/i,imaginary:n.imaginary/i};return[{label:"Count",value:r.toString()},{label:"Sum",value:Y.FormatPartsAsText(s.FormatComplex(n))},{label:"Average",value:Y.FormatPartsAsText(s.FormatComplex(a))}]}else return[{label:"Count",value:r.toString()},{label:"Sum",value:s.Format(n.real)},{label:"Average",value:s.Format(n.real/i)}]}else return[{label:"Count",value:r.toString()}];return[]}UpdateStats(){if(this.tab_bar){let t=[];typeof this.options.stats=="function"?this.primary_selection.empty||(t=this.options.stats.call(void 0,this.GetRange(this.primary_selection.area))):!this.primary_selection.empty&&this.primary_selection.area.count>1&&(t=this.RenderStats(this.GetRange(this.primary_selection.area))),this.tab_bar.stats_data=t}}UpdateAddressLabel(t=this.primary_selection,r){if(this.formula_bar)if(typeof r<"u")this.formula_bar.label=r;else if(t.empty)this.formula_bar.label="";else{let i=this.active_sheet.CellData(this.primary_selection.target),n=new v(i.merge_area?i.merge_area.start:t.target);this.formula_bar.label=this.model.named_ranges.MatchSelection(t.area,n)||v.CellAddressToLabel(n.start)}}OnDropdownSelect(t){if(typeof t<"u"){let n=be.TryParse(t.toString());n.type===3&&(t=n.value)}let r=this.active_sheet.CellData(this.primary_selection.target),i=r.merge_area?r.merge_area.start:this.primary_selection.target;this.ExecCommand({key:6,area:i,value:t}),this.UpdateFormulaBarFormula()}OnScroll(){let t=this.layout.VisibleTiles();t.Equals(this.render_tiles)||(this.render_tiles=t,this.layout_token||(this.layout_token=requestAnimationFrame(()=>this.Repaint())))}AttachListeners(){if(!this.container)throw new Error("invalid container");this.container.addEventListener("copy",this.HandleCopy.bind(this)),this.container.addEventListener("cut",this.HandleCut.bind(this)),this.container.addEventListener("paste",this.HandlePaste.bind(this)),this.layout.grid_cover.addEventListener("mousedown",t=>this.MouseDown_Grid(t)),this.layout.column_header_cover.addEventListener("mousedown",t=>this.MouseDown_ColumnHeader(t)),this.layout.row_header_cover.addEventListener("mousedown",t=>this.MouseDown_RowHeader(t)),this.layout.column_header_cover.addEventListener("mousemove",t=>this.MouseMove_ColumnHeader(t)),this.layout.row_header_cover.addEventListener("mousemove",t=>this.MouseMove_RowHeader(t)),this.layout.grid_cover.addEventListener("mousemove",t=>this.MouseMove_Grid(t)),this.overlay_editor?.edit_node.addEventListener("keydown",t=>this.OverlayKeyDown(t)),this.layout.corner.addEventListener("dblclick",()=>{this.SelectAll()}),window.addEventListener("resize",()=>{this.layout.UpdateDPR()&&(this.QueueLayoutUpdate(),this.Repaint(!0,!0,!0))})}HandleCopy(t){if(t.stopPropagation(),t.preventDefault(),this.primary_selection.empty){if(t.clipboardData&&t.clipboardData.clearData(),this.selected_annotation&&t.clipboardData){let r=JSON.stringify({data:this.selected_annotation,source:this.active_sheet.id});t.clipboardData.setData("text/x-treb-annotation",r);let i=this.selected_annotation.view[this.view_index];if(i&&i.node){let n=i.node.firstChild;if(n){let s=ci(n).outerHTML,a="text/plain";t.clipboardData.setData(a,s)}}}}else{let r=this.active_sheet.RealArea(this.primary_selection.area),i=r.columns,n=r.rows,s=[],a=[];for(let l=0;l<n;l++){let c=[];for(let h=0;h<i;h++){let u={row:r.start.row+l,column:r.start.column+h},m=this.active_sheet.CellData(u),f="";m.calculated?m.calculated_type===7?f=Ze(m.calculated):f=m.calculated.toString():m.type===7?f=Ze(m.value):f=m.value?.toString()||"",c.push(f);let b={address:u,data:m.value,type:m.type,style:this.active_sheet.GetCopyStyle(u)};m.area&&m.area.start.row===u.row&&m.area.start.column===u.column&&(b.array={rows:m.area.rows,columns:m.area.columns}),a.push(JSON.parse(JSON.stringify(b)))}s.push(c)}let o=s.map(l=>l.join(" ")).join(`
9
+ `);t.clipboardData&&(t.clipboardData.clearData(),t.clipboardData.setData("text/plain",o),t.clipboardData.setData("text/x-treb",JSON.stringify({source:r,data:a})))}}HandleCut(t){if(t.stopPropagation(),t.preventDefault(),this.HandleCopy(t),this.primary_selection.empty)this.selected_annotation&&this.RemoveAnnotation(this.selected_annotation);else{let r=this.active_sheet.RealArea(this.primary_selection.area);this.ExecCommand({key:11,area:r})}}RecyclePasteAreas(t,r){let i=[];if(t.count===1)for(let n=r.start.row;n<=r.end.row;n++)for(let s=r.start.column;s<=r.end.column;s++)i.push(new v({row:n,column:s}));else if(t.columns===r.columns&&r.rows>=t.rows&&r.rows%t.rows===0)for(let n=r.start.row;n<=r.end.row;n+=t.rows)i.push(new v({row:n,column:r.start.column},{row:n+t.rows-1,column:r.end.column}));else if(t.rows===r.rows&&r.columns>=t.columns&&r.columns%t.columns===0)for(let n=r.start.column;n<=r.end.column;n+=t.columns)i.push(new v({column:n,row:r.start.row},{column:n+t.columns-1,row:r.end.row}));else i.push(r.Clone().Resize(t.rows,t.columns));return i}HandlePaste(t){if(this.overlay_editor?.editing||(t.stopPropagation(),t.preventDefault(),!t.clipboardData))return;let r=t.clipboardData.getData("text/x-treb-annotation");if(r){try{let a=JSON.parse(r);if(a.source&&a.source!==this.active_sheet.id&&a.data&&a.data.formula){let c="",h=this.model.sheets.Find(a.source);if(h&&(c=h.name),c){let u=this.parser.Parse(a.data.formula);u.expression&&(this.parser.Walk(u.expression,m=>m.type==="range"?(!m.start.sheet_id&&!m.start.sheet&&(m.start.sheet=c),!1):(m.type==="address"&&!m.sheet_id&&!m.sheet&&(m.sheet=c),!0)),a.data.formula="="+this.parser.Render(u.expression,{missing:""}))}}let l=this.CreateAnnotation(a.data,!0,!0).view[this.view_index];if(l&&l.node){let c=l.node;setTimeout(()=>{c.focus()},1)}}catch(a){console.error(a)}return}if(this.primary_selection.empty)return;let i=this.active_sheet.RealArea(this.primary_selection.area),n=[],s=t.clipboardData.getData("text/x-treb");if(s)try{let a=JSON.parse(s),o=new v(a.source.start,a.source.end),l=this.RecyclePasteAreas(o,i);if(l.length===1&&i.Resize(l[0].rows,l[0].columns),!this.ValidatePasteAreas(l)){this.Error(5);return}let c=[];for(let h of l){this.active_sheet.cells.EnsureCell(h.end),n.push({key:11,area:h});let u={rows:h.start.row-o.start.row,columns:h.start.column-o.start.column};a.data.forEach(m=>{let f=m.data,b={row:m.address.row-o.start.row+h.start.row,column:m.address.column-o.start.column+h.start.column};if(m.type===1){let p=this.parser.Parse(f);p.expression&&(f="="+this.parser.Render(p.expression,{offset:u,missing:""}))}if(m.array){let p={start:{...b},end:{row:b.row+m.array.rows-1,column:b.column+m.array.columns-1}},g={key:6,value:f,array:!0,area:p};c.push(new v(p.start,p.end)),n.push(g)}else{let p=!1;for(let g of c)if(g.Contains(b)){p=!0;break}p||n.push({key:6,value:f,area:b})}n.push({key:7,style:m.style||{},area:b})})}}catch(a){console.error("invalid treb data on clipboard"),console.info(a);return}else{let a=t.clipboardData.getData("text/plain");if(!a)return!0;let l=a.trim().split(`
10
+ `).map(h=>h.split(" ").map(u=>u.trim())),c=this.RecyclePasteAreas(new v({row:0,column:0},{row:l.length-1,column:l[0].length-1}),i);if(c.length===1&&(i.Resize(l.length,l[0].length),i.Resize(c[0].rows,c[0].columns)),!this.ValidatePasteAreas(c)){this.Error(5);return}for(let h of c)for(let u=0;u<l.length;u++)for(let m=0;m<l[0].length;m++){let f=new v({row:u+h.start.row,column:m+h.start.column});if(this.active_sheet.cells.EnsureCell(f.end),l[u][m]){let b=this.SetInferredType({area:f,target:f.start,empty:!1},l[u][m],!1,!1);if(b)for(let p of b)n.push(p)}else{let b=this.active_sheet.cells.GetCell(f.start,!1);b&&b.type!==0&&n.push({key:11,area:f.Clone()})}}}this.ExecCommand(n),this.Select(this.primary_selection,i)}AllSelections(t=!1){let r=[this.primary_selection,this.active_selection].concat(this.additional_selections);return t?r:r.filter(i=>!i.empty)}InsertRowsInternal(t){let r=super.InsertRowsInternal(t);if(r.error)return r;let i=this.FindSheet(t.sheet_id);if(i===this.active_sheet){if(t.count<0)for(let n of this.AllSelections())n.empty=!0;else for(let n of this.AllSelections())n.target.row>=t.before_row&&(n.target.row+=t.count),n.area.entire_column||(n.area.start.row>=t.before_row?n.area.Shift(t.count,0):n.area.end.row>=t.before_row&&n.area.ConsumeAddress({row:n.area.end.row+t.count,column:n.area.end.column}));for(let n of r.delete_annotations_list||[])this.layout.RemoveAnnotation(n);if(this.QueueLayoutUpdate(),this.Repaint(),r.update_annotations_list?.length){this.layout.UpdateAnnotation(r.update_annotations_list);for(let n of r.resize_annotations_list||[]){let s=n.view[this.view_index];s?.resize_callback&&s.resize_callback.call(void 0)}}}else this.pending_layout_update.add(i.id);return r}InsertColumnsInternal(t){let r=super.InsertColumnsInternal(t);if(r.error)return r;let i=this.FindSheet(t.sheet_id);if(i===this.active_sheet){if(t.count<0)for(let n of this.AllSelections())n.empty=!0;else for(let n of this.AllSelections())n.target.column>=t.before_column&&(n.target.column+=t.count),n.area.entire_row||(n.area.start.column>=t.before_column?n.area.Shift(0,t.count):n.area.end.column>=t.before_column&&n.area.ConsumeAddress({row:n.area.end.row,column:n.area.end.column+t.count}));for(let n of r.delete_annotations_list||[])this.layout.RemoveAnnotation(n);if(this.tile_renderer?.FlushOverflows(),this.QueueLayoutUpdate(),this.DelayedRender(!0,void 0,!0),r.update_annotations_list?.length){this.layout.UpdateAnnotation(r.update_annotations_list);for(let n of r.resize_annotations_list||[]){let s=n.view[this.view_index];s?.resize_callback&&s.resize_callback.call(void 0)}}}else this.pending_layout_update.add(i.id);return r}ResetInternal(){super.ResetInternal(),this.RemoveAnnotationNodes(),this.ClearSelection(this.primary_selection),this.ScrollIntoView({row:0,column:0}),this.QueueLayoutUpdate(),this.layout.HideNote()}ResizeColumnsInternal(t){let r=t.sheet_id?this.FindSheet(t.sheet_id):this.active_sheet,i=t.column;if(typeof i>"u"){i=[];for(let a=0;a<r.columns;a++)i.push(a)}typeof i=="number"&&(i=[i]);let n=typeof t.width!="number",s=Math.round(t.width||0/this.scale);if(n)for(let a of i)this.AutoSizeColumn(r,a,!1);else for(let a of i)r.SetColumnWidth(a,s);r===this.active_sheet?(this.layout.UpdateTotalSize(),this.layout.container&&this.layout.container.offsetWidth&&this.layout.container.offsetWidth>this.layout.total_width?this.UpdateLayout():(this.layout.UpdateTileWidths(!0),this.render_tiles=this.layout.VisibleTiles(),this.Repaint(!1,!0)),this.layout.UpdateAnnotation(this.active_sheet.annotations),this.RenderSelections()):this.pending_layout_update.add(r.id)}ResizeRowsInternal(t){let r,i=t.sheet_id?this.FindSheet(t.sheet_id):this.active_sheet,n=t.row;if(typeof n>"u"){n=[];for(let l=0;l<i.rows;l++)n.push(l)}typeof n=="number"&&(n=[n]);let s=typeof t.shrink=="boolean"?t.shrink:!0,a=typeof t.height!="number",o=Math.round(t.height||0/this.scale);if(a)for(let l of n)i.GetRowHeight(l)||(r?r.ConsumeAddress({row:l,column:1}):r=new v({row:l,column:1/0,sheet_id:i.id})),i.AutoSizeRow(l,this.theme.grid_cell,s);else for(let l of n){let c=i.GetRowHeight(l);(!c&&o||c&&!o)&&(r?r.ConsumeAddress({row:l,column:1}):r=new v({row:l,column:1/0,sheet_id:i.id})),i.SetRowHeight(l,o)}return i===this.active_sheet?(this.layout.UpdateTotalSize(),this.layout.container&&this.layout.container.offsetHeight&&this.layout.container.offsetHeight>this.layout.total_height?this.UpdateLayout():(this.layout.UpdateTileHeights(!0),this.render_tiles=this.layout.VisibleTiles(),this.Repaint(!1,!0)),this.layout.UpdateAnnotation(this.active_sheet.annotations),this.RenderSelections()):this.pending_layout_update.add(i.id),r?{start:r.start,end:r.end}:void 0}SelectInternal(t){t.area?(t.area.start.sheet_id&&t.area.start.sheet_id!==this.active_sheet.id&&this.ActivateSheetInternal({key:21,id:t.area.start.sheet_id}),this.Select(this.primary_selection,new v(t.area.start,t.area.end)),this.RenderSelections()):this.ClearSelection(this.primary_selection)}FreezeInternal(t){let r=this.FindSheet(t.sheet_id||this.active_sheet.id),i=(typeof t.highlight_transition=="boolean"?t.highlight_transition:!0)&&r===this.active_sheet;if(t.rows===r.freeze.rows&&t.columns===r.freeze.columns){i&&this.HighlightFreezeArea();return}r.freeze.rows=t.rows,r.freeze.columns=t.columns,r===this.active_sheet?(this.QueueLayoutUpdate(),this.Repaint(),i&&this.HighlightFreezeArea(),t.rows||t.columns?this.layout.CloneFrozenAnnotations():this.layout.ClearFrozenAnnotations()):this.pending_layout_update.add(r.id)}ExecCommand(t,r=!0){let i=super.ExecCommand(t,r);this.batch||i.render_area&&this.DelayedRender(!1,i.render_area),i.repaint&&this.Repaint();for(let n of i.pending||[])this.pending_layout_update.add(n);return i.layout&&this.QueueLayoutUpdate(),i.sheets&&this.tab_bar&&this.tab_bar.Update(),i.formula&&this.UpdateFormulaBarFormula(),i}};var pt=class{constructor(){this.forward={};this.backward=[]}Count(){return this.backward.length}Serialize(){return JSON.parse(JSON.stringify(this.Map()))}Deserialize(e){if(this.Reset(),e){for(let t of Object.keys(e))this.SetName(t,new v(e[t].start,e[t].end),!1);this.RebuildList()}}MatchSelection(e,t){if(!e.start.sheet_id)throw new Error("match selection without sheet id");let r;for(let i of this.List())if(i.range.start.sheet_id===e.start.sheet_id&&(i.range.Equals(e)&&(r=i.name),t?.Equals(i.range)))return i.name;return r}SetName(e,t,r=!0){let i=this.ValidateNamed(e);return i?t.entire_column||t.entire_row?(console.warn("invalid range"),!1):(this.forward[i]=t,r&&this.RebuildList(),!0):(console.warn("invalid name"),!1)}SetNames(e){for(let t of Object.keys(e)){let r=e[t];this.SetName(t,new v(r.start,r.end),!1)}this.RebuildList()}ClearName(e,t=!0){delete this.forward[e],t&&this.RebuildList()}RemoveRangesForSheet(e,t=!0){let r={},i=this.List();for(let n of i)n.range.start.sheet_id!==e&&(r[n.name]=n.range);this.forward=r,t&&this.RebuildList()}Reset(){this.forward={},this.backward=[]}Get(e){return this.forward[e.toUpperCase()]}Map(){return this.forward}List(){return this.backward}ValidateNamed(e){return e=e.trim(),!e.length||/^[A-Za-z]{1,3}\d+$/.test(e)||/[^A-Za-z\d_.]/.test(e)||/^[^A-Za-z_]/.test(e)?!1:e.toUpperCase()}PatchNamedRanges(e,t,r,i,n){let s=this.List().slice(0);for(let a of s){let o=a.name,l=a.range;if(l.start.sheet_id!==e){console.info("skipping name",o);continue}if(r&&t<=l.end.column){if(r>0)t<=l.start.column?l.Shift(0,r):t>l.start.column&&t<=l.end.column?l.ConsumeAddress({row:l.end.row,column:l.end.column+r}):console.warn("PNR X case 1",t,r,JSON.stringify(l));else if(r<0)if(t-r<=l.start.column)l.Shift(0,r);else if(t<=l.start.column&&t-r>l.end.column)this.ClearName(o,!1);else if(t<=l.start.column){let c=t-r-1;this.SetName(o,new v({row:l.start.row,column:c+1+r,sheet_id:e},{row:l.end.row,column:l.end.column+r}),!1)}else t<=l.end.column?t-r-1>=l.end.column?this.SetName(o,new v({row:l.start.row,column:l.start.column,sheet_id:e},{row:l.end.row,column:t-1}),!1):this.SetName(o,new v({row:l.start.row,column:l.start.column,sheet_id:e},{row:l.end.row,column:l.start.column+l.columns+r-1}),!1):console.warn("PNR X case 2",t,r,JSON.stringify(l))}if(n&&i<=l.end.row){if(n>0)i<=l.start.row?l.Shift(n,0):i>l.start.row&&i<=l.end.row?l.ConsumeAddress({row:l.end.row+n,column:l.end.column}):console.warn("PNR X case 3",i,n,JSON.stringify(l));else if(n<0)if(i-n<=l.start.row)l.Shift(n,0);else if(i<=l.start.row&&i-n>l.end.row)this.ClearName(o,!1);else if(i<=l.start.row){let c=i-n-1;this.SetName(o,new v({column:l.start.column,row:c+1+n,sheet_id:e},{column:l.end.column,row:l.end.row+n}),!1)}else i<=l.end.row?i-n-1>=l.end.row?this.SetName(o,new v({column:l.start.column,row:l.start.row,sheet_id:e},{column:l.end.column,row:i-1}),!1):this.SetName(o,new v({column:l.start.column,row:l.start.row,sheet_id:e},{column:l.end.column,row:l.start.row+l.rows+n-1}),!1):console.warn("PNR X case 4",i,n,JSON.stringify(l))}}this.RebuildList()}RebuildList(){this.backward=[];for(let e of Object.keys(this.forward))this.backward.push({name:e,range:this.forward[e]})}};var Mr=class{constructor(){this.names=new Map;this.ids=new Map;this.sheets_=[]}get list(){return this.sheets_.slice(0)}get length(){return this.sheets_.length}Assign(e){this.sheets_=[...e],this.UpdateIndexes()}Add(e){this.sheets_.push(e),this.UpdateIndexes()}Splice(e,t,...r){this.sheets_.splice(e,t,...r),this.UpdateIndexes()}Find(e){return typeof e=="string"?this.names.get(e.toLocaleUpperCase()):this.ids.get(e)}Name(e){return this.ids.get(e)?.name||void 0}ID(e){return this.names.get(e.toLocaleUpperCase())?.id||void 0}UpdateIndexes(){this.names.clear(),this.ids.clear();for(let e of this.sheets_){let t=e.name.toLocaleUpperCase();this.names.set(t,e),this.ids.set(e.id,e)}}},bt=class{constructor(){this.sheets=new Mr;this.named_ranges=new pt;this.macro_functions=new Map;this.named_expressions=new Map;this.view_count=0;this.theme_style_properties=JSON.parse(JSON.stringify(k.DefaultProperties));this.tables=new Map}ResolveStructuredReference(e,t){let r;if(e.table?r=this.tables.get(e.table.toLowerCase()):t.sheet_id&&(r=this.sheets.Find(t.sheet_id)?.CellData(t)?.table),!r)return;let i=e.column.toLowerCase(),n=-1;if(r.columns){for(let s=0;s<r.columns.length;s++)if(i===r.columns[s]){n=r.area.start.column+s;break}}if(!(n<0))if(e.scope==="row"){let s=t.row;return s<r.area.start.row||s>r.area.end.row?void 0:{label:e.label,type:"address",row:s,column:n,sheet_id:r.area.start.sheet_id,id:e.id,position:e.position}}else{let s=r.area.start.row,a=r.area.end.row;return e.scope==="column"&&(s++,r.totals_row&&a--),{label:e.label,type:"range",position:e.position,id:e.id,start:{type:"address",row:s,column:n,sheet_id:r.area.start.sheet_id,label:e.label,position:e.position,id:0},end:{type:"address",row:a,column:n,label:e.label,position:e.position,id:0}}}}};var Nr=class{constructor(){this.type=Nr.type;this.color=0;this.edges_in=new Set;this.edges_out=new Set}get has_inbound_edges(){return this.edges_in.size>0}get has_outbound_edges(){return this.edges_out.size>0}Reset(){for(let e of this.edges_out)e.RemoveDependency(this);for(let e of this.edges_in)e.RemoveDependent(this);this.edges_out.clear(),this.edges_in.clear()}ClearDependencies(){for(let e of this.edges_in)e.RemoveDependent(this);this.edges_in.clear()}AddDependent(e){e!==this&&(this.edges_out.has(e)||this.edges_out.add(e))}RemoveDependent(e){this.edges_out.delete(e)}AddDependency(e){e!==this&&(this.edges_in.has(e)||this.edges_in.add(e))}RemoveDependency(e){this.edges_in.delete(e)}LinkTo(e){this.AddDependent(e),e.AddDependency(this)}DependsOn(e){this.AddDependency(e),e.AddDependent(this)}LoopCheck(){let e=[this];for(;e.length;){let t=e[e.length-1],r=!0;if(t.color!==2){t.color=1;for(let i of t.edges_out){if(i.color===1)return this.color=0,!0;i.color===0&&i.edges_out.size&&(e.push(i),r=!1)}}r&&(t.color=2,e.pop())}return this.color=2,!1}},gt=Nr;gt.type="vertex";var Je=class extends gt{constructor(){super(...arguments);this.dirty=!1}};var Ei={error:"NOTIMPL"},Se=()=>({type:6,value:"N/A"}),ke=()=>({type:6,value:"EXPR"});var he=()=>({type:6,value:"DIV/0"}),W=()=>({type:6,value:"ARG"}),z=()=>({type:6,value:"VALUE"}),Z=()=>({type:6,value:"REF"}),Dr=()=>({type:6,value:"NAME"}),Zt=()=>({type:6,value:"UNK"});var Lr=class extends Je{constructor(){super(...arguments);this.error=0;this.result={type:0};this.expression={type:"missing",id:-1};this.expression_error=!1;this.short_circuit=!1;this.type=Lr.type}get array_head(){return this.address?!!this.reference&&!!this.reference.area&&this.reference.area.start.column===this.address.column&&this.reference.area.start.row===this.address.row:!1}TakeReferenceValue(){this.reference&&(this.result=j(this.reference.GetValue()))}Calculate(t){if(this.dirty){if(this.color===0&&this.LoopCheck()&&(this.dirty=!1,this.edges_in.size)){this.reference&&(this.array_head||this.reference.type===1)&&this.reference.SetCalculationError("LOOP");for(let r of this.edges_out)r.Calculate(t);return}for(let r of this.edges_in)if(r.dirty)return;if(this.reference){if(this.reference.type===1){this.short_circuit=!1;let r=t.CalculationCallback.call(t,this);if(this.result=r.value,this.short_circuit)return;r.volatile&&t.volatile_list.push(this)}else this.result=this.reference.GetValue4();if(this.array_head)t.SpreadCallback.call(t,this,this.result);else if(this.reference.type===1){let r=this.result.type===8?this.result.value[0][0]:this.result;this.reference.SetCalculatedValue(r.value,r.type)}}else console.info("skip dirty constant? [or dangling...]");this.dirty=!1;for(let r of this.edges_out)r.dirty&&t.calculation_list.push(r)}}},Ue=Lr;Ue.type="spreadsheet-vertex";var Ge=class extends Je{constructor(t){super();this.type=Ge.type;this.area=t.Clone(),Ge.list.push(this)}static GetVertex(t){for(let r of this.list)if(r.area.start.sheet_id===t.start.sheet_id&&r.area.Equals(t))return[r,!1];return[new Ge(t),!0]}static Clear(){this.list=[]}static GetContainingArrays(t){let r=[];for(let i of this.list)i.area.start.sheet_id===t.sheet_id&&i.area.Contains(t)&&r.push(i);return r}static CreateImplicitEdges(t,r){for(let i of this.list)i.area.start.sheet_id===r.sheet_id&&i.area.Contains(r)&&i.DependsOn(t)}RemoveDependent(t){super.RemoveDependent(t),this.edges_out.size||(this.Reset(),Ge.list=Ge.list.filter(r=>r!==this))}Calculate(t){if(this.dirty){if(this.color===0&&this.LoopCheck()&&(this.dirty=!1,this.edges_in.size)){for(let r of this.edges_out)r.Calculate(t);return}for(let r of this.edges_in)if(r.dirty)return;this.dirty=!1;for(let r of this.edges_out)r.Calculate(t)}}},Ee=Ge;Ee.type="array-vertex",Ee.list=[];var $t=class{constructor(){this.vertices=[[]];this.volatile_list=[];this.calculation_list=[];this.leaf_vertices=[];this.dirty_list=[];this.loop_check_required=!1;this.RIBcount=0}IsSpreadsheetVertex(e){return e.type===Ue.type}FlushTree(){this.dirty_list=[],this.volatile_list=[],this.vertices=[[]],this.leaf_vertices=[],Ee.Clear()}ResolveArrayHead(e){if(!e.sheet_id)throw new Error("resolve array head with no sheet id");let t=this.model.sheets.Find(e.sheet_id)?.cells;if(!t)throw new Error("no cells? sheet id "+e.sheet_id);let r=t.data[e.row];if(r){let i=r[e.column];if(i&&i.area){let n={row:i.area.start.row,column:i.area.start.column,sheet_id:e.sheet_id};return console.info("array head",e,n),n}}return e}GetVertex(e,t){if(!e.sheet_id)throw console.info({address:e,create:t}),new Error("getvertex with no sheet id");let r=this.model.sheets.Find(e.sheet_id)?.cells;if(!r)throw new Error("no cells? sheet id "+e.sheet_id);if(!this.vertices[e.sheet_id]){if(!t)return;this.vertices[e.sheet_id]=[]}if(this.vertices[e.sheet_id][e.column]){let n=this.vertices[e.sheet_id][e.column][e.row];if(n)return n;if(!t)return}else{if(!t)return;this.vertices[e.sheet_id][e.column]=[]}let i=new Ue;return i.address={row:e.row,column:e.column,absolute_row:e.absolute_row,absolute_column:e.absolute_column,sheet_id:e.sheet_id},i.reference=r.EnsureCell(e),this.vertices[e.sheet_id][e.column][e.row]=i,Ee.CreateImplicitEdges(i,e),i}RemoveVertex(e){if(!e.sheet_id)throw new Error("removevertex with no sheet id");let t=this.GetVertex(e,!1);t&&(t.Reset(),this.vertices[e.sheet_id][e.column][e.row]=void 0)}ResetVertex(e){let t=this.GetVertex(e,!1);t&&t.Reset()}ResetInbound(e,t=!1,r=!0,i=!1){this.RIBcount++;let n=this.GetVertex(e,r);if(!n){if(t){let a=Ee.GetContainingArrays(e);for(let o of a)this.SetVertexDirty(o)}return}let s=[];if(i&&(s=Array.from(n.edges_in)),n.ClearDependencies(),t&&this.SetVertexDirty(n),i){n.has_outbound_edges||this.RemoveVertex(e);for(let a of s)if(!a.has_inbound_edges&&!a.has_outbound_edges){let o=a;o.address&&this.RemoveVertex(o.address)}}}ResetLoopState(){for(let e of this.vertices)if(e){for(let t of e)if(t)for(let r of t)r&&(r.color=r.edges_out.size?0:2)}for(let e of this.leaf_vertices)e.color=2}LoopCheck(e=!1){if(!this.loop_check_required&&!e)return!1;let t=[];for(let i of this.vertices)if(i){for(let n of i)if(n)for(let s of n)s&&(s.color=s.edges_out.size?0:2,t.push(s))}let r=[];for(let i of t)if(i.color===0){for(i.color=1,r.push(i);r.length;){let n=r[r.length-1],s=!0;if(n.color!==2)for(let a of n.edges_out){if(a.color===1)return this.loop_hint=this.RenderAddress(i.address),console.info("loop detected @",this.loop_hint),!0;a.color===0&&(r.push(a),s=!1)}s&&(r.pop(),n.color=2)}i.color=2}return this.loop_check_required=!1,this.loop_hint=void 0,!1}RenderAddress(e){if(!e)return"undefined";let t="";if(e.sheet_id){let i=this.model.sheets.Find(e.sheet_id);i&&(t=i.name+"!")}let r=new v(e);return t+r.spreadsheet_label}AddArrayEdge(e,t){if(!e.start.sheet_id)throw new Error("AddArrayEdge called without sheet ID");let r=this.GetVertex(t,!0),[i,n]=Ee.GetVertex(e);if(r.DependsOn(i),this.loop_check_required=!0,!n)return;let s=this.vertices[e.start.sheet_id];if(s)if(e.entire_row){for(let a=0;a<s.length;a++)if(s[a])for(let o=e.start.row;o<=e.end.row;o++){let l=s[a][o];l&&i.DependsOn(l)}}else if(e.entire_column){for(let a=e.start.column;a<=e.end.column;a++)if(s[a])for(let o of s[a])o?.address&&i.DependsOn(o)}else for(let a=e.start.row;a<=e.end.row;a++)for(let o=e.start.column;o<=e.end.column;o++){let l=s[o][a];l&&i.DependsOn(l)}}AddEdge(e,t,r){let i=this.GetVertex(e,!0);this.GetVertex(t,!0).DependsOn(i),i.reference&&i.reference.area&&!i.array_head&&this.AddEdge({...e,row:i.reference.area.start.row,column:i.reference.area.start.column},t,"implicit"),this.loop_check_required=!0}RemoveEdge(e,t){let r=this.GetVertex(e,!1),i=this.GetVertex(t,!1);!r||!i||(r.RemoveDependent(i),i.RemoveDependency(r))}SetAreaDirty(e){if(e.start.column===1/0||e.end.column===1/0||e.start.row===1/0||e.end.row===1/0)throw new Error("don't iterate over infinite area");let t=e.start.sheet_id;if(!t)throw new Error("invalid area, missing sheet id");for(let r=e.start.column;r<=e.end.column;r++)for(let i=e.start.row;i<=e.end.row;i++){let n={row:i,column:r,sheet_id:t};this.GetVertex(n,!1)&&this.SetDirty(n)}}SetVertexDirty(e){if(!e.dirty){this.dirty_list.push(e),e.dirty=!0;for(let t of e.edges_out)this.SetVertexDirty(t)}}SetDirty(e){let t=this.GetVertex(e,!0);this.SetVertexDirty(t)}AddLeafVertex(e){for(let t of this.leaf_vertices)if(t===e)return;this.leaf_vertices.push(e)}RemoveLeafVertex(e){this.leaf_vertices=this.leaf_vertices.filter(t=>t!==e)}AddLeafVertexEdge(e,t){let r=this.GetVertex(e,!0);return t.DependsOn(r),0}RemoveLeafVertexEdge(e,t){let r=this.GetVertex(e,!1);r&&(r.RemoveDependent(t),t.RemoveDependency(r))}InitializeGraph(){for(let e of this.dirty_list)this.IsSpreadsheetVertex(e)&&(e.TakeReferenceValue(),this.CheckVolatile(e)&&this.volatile_list.push(e)),e.dirty=!1;this.dirty_list=[]}Recalculate(){for(let e of this.volatile_list)this.SetVertexDirty(e);this.calculation_list=this.dirty_list.slice(0),this.volatile_list=[],this.dirty_list=[],this.loop_check_required&&(this.ResetLoopState(),this.loop_check_required=!1);for(let e=0;e<this.calculation_list.length;e++)this.calculation_list[e].Calculate(this);this.calculation_list=[]}};var Yn=d=>{let e={m:d,n:d,array:[]};for(let t=0;t<d;t++){let r=[];for(let i=0;i<d;i++)r.push({real:0,imaginary:0});e.array.push(r)}return e};var Jn=d=>{let{r:e,theta:t}=d,r=e*Math.cos(t),i=e*Math.sin(t);return{real:r,imaginary:i}},Wt=d=>{let e=Math.sqrt(d.real*d.real+d.imaginary*d.imaginary),t=Math.atan2(d.imaginary,d.real);return{r:e,theta:t}},ce=(d,e)=>({real:d.real*e.real-d.imaginary*e.imaginary,imaginary:d.real*e.imaginary+d.imaginary*e.real}),Xn=(d,e)=>{let t=[];for(let r=0;r<d.m;r++){let i=[];for(let n=0;n<d.n;n++)i.push(d.array[r][n]+e.array[r][n]);t.push(i)}return{m:d.m,n:d.n,array:t}},Pr=(d,e)=>{let t=[];for(let r=0;r<d.m;r++){let i=[];for(let n=0;n<e.n;n++){let s=0;for(let a=0;a<d.n;a++)s+=d.array[r][a]*e.array[a][n];i.push(s)}t.push(i)}return{array:t,m:d.m,n:e.n}},Ri=(d,e)=>{let t=[];for(let r=0;r<d.m;r++){let i=[];for(let n=0;n<e.n;n++){let s={real:0,imaginary:0};for(let a=0;a<d.n;a++)s.real+=d.array[r][a].real*e.array[a][n].real-d.array[r][a].imaginary*e.array[a][n].imaginary,s.imaginary+=d.array[r][a].real*e.array[a][n].imaginary+d.array[r][a].imaginary*e.array[a][n].real;i.push(s)}t.push(i)}return t},jt=d=>{let e={real:0,imaginary:0},t=d.n;if(t==2){let i=ce(d.array[0][0],d.array[1][1]),n=ce(d.array[1][0],d.array[0][1]);return{real:i.real-n.real,imaginary:i.imaginary-n.imaginary}}let r=Yn(d.n);for(let i=0;i<t;i++){let n=0;for(let o=1;o<t;o++){let l=0;for(let c=0;c<t;c++)c!=i&&(r.array[n][l]={...d.array[o][c]},l++);n++}r.m=r.n=t-1;let s=Math.pow(-1,i),a=ce({real:d.array[0][i].real*s,imaginary:d.array[0][i].imaginary*s},jt(r));e.real+=a.real,e.imaginary+=a.imaginary}return e};var Qn=d=>{let e={real_values:!1,imaginary_values:!1,square:d.m===d.n,unit_diagonal:!0},t={m:d.m,n:d.n,array:[]},r={m:d.m,n:d.n,array:[]};for(let i=0;i<d.m;i++){let n=d.array[i],s=[],a=[];for(let o=0;o<d.n;o++)n[o].real&&(e.real_values=!0),n[o].imaginary&&(e.imaginary_values=!0),o===i&&e.unit_diagonal&&(n[o].real!==1||n[o].imaginary!==0)&&(e.unit_diagonal=!1),s.push(n[o].real),a.push(n[o].imaginary);t.array.push(s),r.array.push(a)}return{real:t,imaginary:r,flags:e}},qn=d=>{let e=d.array.map(t=>t.slice(0));return{m:d.m,n:d.n,array:e}},Ti=d=>{if(d.m!==d.n)return;let e=qn(d),t=e.array,r=0,i=0,n=0,s=0,a=d.m;for(i=1;i<a;i++)t[0][i]/=t[0][0];for(i=1;i<a;i++){for(n=i;n<a;n++){for(r=0,s=0;s<i;s++)r+=t[n][s]*t[s][i];t[n][i]-=r}if(i!=a-1)for(n=i+1;n<a;n++){for(r=0,s=0;s<i;s++)r+=t[i][s]*t[s][n];t[i][n]=(t[i][n]-r)/t[i][i]}}for(i=0;i<a;i++)for(n=i;n<a;n++){let o=1;if(i!=n)for(o=0,s=i;s<n;s++)o-=t[n][s]*t[s][i];t[n][i]=o/t[n][n]}for(i=0;i<a;i++)for(n=i;n<a;n++)if(i!=n){for(r=0,s=i;s<n;s++)r+=t[s][n]*(i==s?1:t[i][s]);t[i][n]=-r}for(i=0;i<a;i++)for(n=0;n<a;n++){for(r=0,s=i>n?i:n;s<a;s++)r+=(n==s?1:t[n][s])*t[s][i];t[n][i]=r}return e},Ii=d=>{let e=[];if(d.m!==d.n)return;let{real:t,imaginary:r,flags:i}=Qn(d),n=Ti(t);if(!n)return;if(!i.imaginary_values){for(let h=0;h<d.m;h++){let u=[];for(let m=0;m<d.n;m++)u.push({real:n.array[h][m],imaginary:0});e.push(u)}return e}let s=Pr(n,r),a=Pr(r,s),o=Xn(t,a),l=Ti(o);if(!l)return;let c=Pr(s,l);for(let h=0;h<d.m;h++){let u=[];for(let m=0;m<d.n;m++)u.push({real:l.array[h][m],imaginary:-c.array[h][m]});e.push(u)}return e},zi=(d,e)=>{let t={real:e.real,imaginary:-e.imaginary},r=ce(d,t),i=ce(e,t);return{real:r.real/i.real,imaginary:r.imaginary/i.real}},Vr=d=>{let e=d.real||0,t=d.imaginary||0;return ce({real:Math.exp(e),imaginary:0},{real:Math.cos(t),imaginary:Math.sin(t)})},Kn=d=>{let e=Wt(d);return{real:Math.log(e.r),imaginary:e.theta}},ue=(d,e)=>{if(e.imaginary)return Vr(ce(e,Kn(d)));{let t=Wt(d);return Jn({r:Math.pow(t.r,e.real),theta:t.theta*e.real})}};var Mi=(d,e=0)=>d&&d.type===7?d:{type:7,value:{real:e,imaginary:0}},He=d=>d.imaginary?{type:7,value:d}:{type:3,value:d.real},Be=(d,e)=>{if(d.type===6)return[0,0,d];if(e.type===6)return[0,0,e];let t=[0,0];switch(d.type){case 3:t[0]=d.value;break;case 4:t[0]=d.value?1:0;break;case 0:break;case 7:t[3]=d;break;default:return[0,0,z()]}switch(e.type){case 3:t[1]=e.value;break;case 4:t[1]=e.value?1:0;break;case 0:break;case 7:t[4]=e;break;default:return[0,0,z()]}return(t[3]||t[4])&&(t[3]=Mi(t[3],t[0]),t[4]=Mi(t[4],t[1])),t},es=(d,e)=>{let[t,r,i,n,s]=Be(d,e);return i||(n&&s?He({real:n.value.real+s.value.real,imaginary:n.value.imaginary+s.value.imaginary}):{value:t+r,type:3})},Br=(d,e)=>{let[t,r,i,n,s]=Be(d,e);return i||(n&&s?He({real:n.value.real-s.value.real,imaginary:n.value.imaginary-s.value.imaginary}):{value:t-r,type:3})},ts=(d,e)=>{let[t,r,i,n,s]=Be(d,e);if(i)return i;if(n&&s)return He(ue(n.value,s.value));let a=Math.pow(t,r);return isNaN(a)?z():{type:3,value:a}},rs=(d,e)=>{let[t,r,i,n,s]=Be(d,e);if(i)return i;if(n&&s)return He(ue(n.value,s.value));if(t<0&&r!==0&&Math.abs(r)<1)return He(ue({real:t,imaginary:0},{real:r,imaginary:0}));let a=Math.pow(t,r);return isNaN(a)?z():{type:3,value:a}},Gr=ts,is=(d,e)=>{let[t,r,i,n,s]=Be(d,e);return i||(n&&s?He(ce(n.value,s.value)):{value:t*r,type:3})},ns=(d,e)=>{let[t,r,i,n,s]=Be(d,e);return i||(n&&s?s.value.real===0&&s.value.imaginary===0?he():He(zi(n.value,s.value)):r===0?he():{value:t/r,type:3})},ss=(d,e)=>{let[t,r,i]=Be(d,e);return i||(r===0?he():{value:t%r,type:3})},as=(d,e)=>d.type===6?d:e.type===6?e:{type:2,value:`${d.type===0?"":d.value}${e.type===0?"":e.value}`},Hr=(d,e)=>{if(d.type===6)return d;if(e.type===6)return e;if(d.type===0&&(e.value===""||e.value===0||e.type===7&&e.value.real===0&&e.value.imaginary===0)||e.type===0&&(d.value===""||d.value===0||d.type===7&&d.value.real===0&&d.value.imaginary===0))return{type:4,value:!0};if(d.type===7||e.type===7){let t=!1;return d.type===e.type?t=d.value.real==e.value.real&&d.value.imaginary==e.value.imaginary:d.type===3?t=e.value.real==d.value&&!e.value.imaginary:e.type===3&&(t=d.value.real==e.value&&!d.value.imaginary),{type:4,value:t}}return{type:4,value:d.value==e.value}},Ni=(d,e)=>{let t=Hr(d,e);return t.type===6?t:{type:4,value:!t.value}},os=(d,e)=>d.type===6?d:e.type===6?e:d.type===7||e.type===7?z():{type:4,value:(d.value||0)>(e.value||0)},ls=(d,e)=>d.type===6?d:e.type===6?e:d.type===7||e.type===7?z():{type:4,value:d.value>=e.value},cs=(d,e)=>d.type===6?d:e.type===6?e:d.type===7||e.type===7?z():{type:4,value:d.value<e.value},ds=(d,e)=>d.type===6?d:e.type===6?e:d.type===7||e.type===7?z():{type:4,value:d.value<=e.value},Di=()=>{Gr=rs},Ui=d=>{switch(d){case"&":return as;case"+":return es;case"-":return Br;case"*":return is;case"/":return ns;case"^":return Gr;case"**":return Gr;case"%":return ss;case"=":return Hr;case"==":return Hr;case"!=":return Ni;case"<>":return Ni;case">":return os;case">=":return ls;case"<":return cs;case"<=":return ds}};var Pi=d=>!Array.isArray(d)&&d.type===5&&!!d.value.type,Jt=d=>d.type===5&&d.key==="metadata",Yt=class{constructor(e,t){this.library=e;this.parser=t;this.context={address:{row:-1,column:-1},volatile:!1,call_index:0};this.call_index=0;this.named_range_map={}}SetModel(e){this.data_model=e,this.named_range_map=e.named_ranges.Map(),this.context.model=e}Calculate(e,t,r=!1){return r||(this.context.address=t,this.context.volatile=!1,this.context.call_index=0,this.call_index=0),{value:this.CalculateExpression(e),volatile:this.context.volatile}}CellFunction2(e){if(!e.sheet_id)if(e.sheet)e.sheet_id=this.data_model.sheets.ID(e.sheet)||0;else return()=>Z();let t=this.data_model.sheets.Find(e.sheet_id)?.cells;if(!t)return console.warn("missing cells reference @ "+e.sheet_id),()=>Z();let r=t.GetCell(e);return r?()=>r.GetValue4():()=>({type:3,value:0})}CellFunction4(e,t){return e.sheet_id?this.data_model.sheets.Find(e.sheet_id)?.cells?.GetRange4(e,t,!0)||Z():Z()}GetMetadata(e,t){let r,i;switch(e.type){case"address":r=e;break;case"range":i=e;break;case"structured-reference":{let n=this.data_model.ResolveStructuredReference(e,this.context.address);n&&(n.type==="address"?r=n:n.type==="range"&&(i=n))}break;case"identifier":{let n=this.named_range_map[e.name.toUpperCase()];n&&(n.count===1?r=n.start:i=n)}break;case"call":{let n=this.CalculateExpression(e,!0);if(Pi(n))if(n.value.type==="address")r=n.value;else if(n.value.type==="range")i=n.value;else return n;else return n}break;default:return this.CalculateExpression(e)}if(r){let n;if(r.sheet_id&&(n=this.data_model.sheets.Find(r.sheet_id)),!n)return console.error("missing sheet [ac8]"),Z();let s=n.CellData(r),a=s.calculated_type?s.calculated:s.value,o={type:"metadata",address:{...r},value:a,format:s.style?s.style.number_format:void 0,...t(s,r)};return{type:5,value:o,key:"metadata"}}else if(i){if(i.start.row===1/0||i.start.column===1/0)return Z();let n;if(i.start.sheet_id&&(n=this.data_model.sheets.Find(i.start.sheet_id)),!n)throw new Error("missing sheet [ac9]");let s=[];for(let a=i.start.column;a<=i.end.column;a++){let o=[];for(let l=i.start.row;l<=i.end.row;l++){let c=n.CellData({row:l,column:a});r={...i.start,row:l,column:a};let h=c.calculated_type?c.calculated:c.value,u={type:"metadata",address:r,value:h,format:c.style?c.style.number_format:void 0,...t(c,r)};o.push({type:5,value:u,key:"metadata"})}s.push(o)}return{type:8,value:s}}return this.CalculateExpression(e)}RewriteMacro(e,t){let r;switch(e.type){case"identifier":if(r=t[e.name.toUpperCase()],r)return JSON.parse(JSON.stringify(r));break;case"binary":e.left=this.RewriteMacro(e.left,t),e.right=this.RewriteMacro(e.right,t);break;case"unary":e.operand=this.RewriteMacro(e.operand,t);break;case"group":e.elements=e.elements.map(i=>this.RewriteMacro(i,t));break;case"call":e.args=e.args.map(i=>this.RewriteMacro(i,t));break}return e}CallMacro(e,t){if(!t.expression)return()=>ke();let r=JSON.stringify(t.expression),i={},n=t.argument_names?.map(s=>s.toUpperCase())||[];return s=>{let a=JSON.parse(r);for(let o=0;o<n.length;o++)i[n[o]]=s.args[o]||{type:"missing",id:0};return this.CalculateExpression(this.RewriteMacro(a,i))}}CallExpression(e,t=!1){let r=this.library.Get(e.name);return r?i=>{let n=this.call_index++;this.context.volatile=this.context.volatile||!!r.volatile;let s=e.name.toLowerCase()==="if",a=-1,o,l=r.arguments||[],c=i.args.map((h,u)=>{if(o)return;let m=l[Math.min(u,l.length-1)]||{};if(u===a)return m.boxed?{type:0}:void 0;if(typeof h>"u")return s&&u===0&&(a=1),m.boxed?{type:0}:void 0;if(m.address)return m.boxed?{type:2,value:this.parser.Render(h).replace(/\$/g,"")}:this.parser.Render(h).replace(/\$/g,"");if(m.metadata)return this.GetMetadata(h,()=>({}));{let f=this.CalculateExpression(h);if(f.type===6){if(m.allow_error)return f;o=f;return}if(s&&u===0&&f.type!==8){let b=!1;if(f.type===2){let p=f.value.toLowerCase().trim();b=p!=="false"&&p!=="f"}else b=!!f.value;a=b?2:1}return m.boxed?f:f.type===8?f.value.map(b=>b.map(p=>p.value)):f.value}});if(o)return o;if(this.context.call_index=n,r.return_type===1){let h=r.fn.apply(null,c);if(t)return h;if(Pi(h)){if(h.value.type==="address")return this.CellFunction2(h.value)();if(h.value.type==="range")return this.CellFunction4(h.value.start,h.value.end)}return h}return r.fn.apply(null,c)}:()=>Dr()}ResolveStructuredReference(e){let t=this.data_model.ResolveStructuredReference(e,this.context.address);if(t){if(t.type==="address")return this.CellFunction2(t);if(t.type==="range")return()=>this.CellFunction4(t.start,t.end)}return()=>Z()}ResolveDimensionedQuantity(){return e=>{let t=this.CalculateExpression(e.expression);return{type:9,value:{value:t.value,unit:e.unit.name}}}}UnaryExpression(e){switch(e.operator){case"+":return t=>this.CalculateExpression(t.operand);case"-":{let t=Br,r={type:3,value:0};return i=>{let n=this.CalculateExpression(i.operand);return n.type===8?{type:8,value:n.value.map(s=>s.map(a=>t(r,a)))}:t(r,n)}}default:return()=>(console.warn("unexpected unary operator:",e.operator),ke())}}RecycleArray(e,t,r){if(e[0].length<r){let i=e[0].length;for(let n of e)for(let s=i;s<r;s++)n[s]=n[s%i]}if(e.length<t){let i=e.length;for(let n=i;n<t;n++)e[n]=e[n%i].slice(0)}return e}ElementwiseBinaryExpression(e,t,r){let i=Math.max(t.value.length,r.value.length),n=Math.max(t.value[0].length,r.value[0].length),s=this.RecycleArray(t.value,i,n),a=this.RecycleArray(r.value,i,n),o=[];for(let l=0;l<i;l++){let c=[];for(let h=0;h<n;h++)c[h]=e(s[l][h],a[l][h]);o.push(c)}return{type:8,value:o}}BinaryExpression(e){let t=Ui(e.operator);return t?r=>{let i=this.CalculateExpression(r.left),n=this.CalculateExpression(r.right);return i.type===8?n.type===8?this.ElementwiseBinaryExpression(t,i,n):this.ElementwiseBinaryExpression(t,i,{type:8,value:[[n]]}):n.type===8?this.ElementwiseBinaryExpression(t,{type:8,value:[[i]]},n):t(i,n)}:()=>(console.info(`(unexpected binary operator: ${e.operator})`),ke())}Identifier(e){let t=e.name;if(t[0]==="#")return()=>Z();let r=t.toUpperCase();switch(r){case"FALSE":case"F":return()=>({value:!1,type:4});case"TRUE":case"T":return()=>({value:!0,type:4});case"UNDEFINED":return()=>({value:void 0,type:0})}return()=>{let i=this.named_range_map[r];if(i)return i.count===1?this.CellFunction4(i.start,i.start):this.CellFunction4(i.start,i.end);let n=this.data_model.named_expressions.get(r);return n?this.CalculateExpression(n):Dr()}}GroupExpression(e){return!e.elements||e.elements.length!==1?(console.warn("Can't handle group !== 1"),()=>ke()):t=>this.CalculateExpression(t.elements[0])}CalculateExpression(e,t=!1){if(e.user_data)return e.user_data(e);switch(e.type){case"call":{let r=this.data_model.macro_functions.get(e.name.toUpperCase());return r?(e.user_data=this.CallMacro(e,r))(e):(e.user_data=this.CallExpression(e,t))(e)}case"address":return(e.user_data=this.CellFunction2(e))();case"range":return(e.user_data=r=>this.CellFunction4(r.start,r.end))(e);case"binary":return(e.user_data=this.BinaryExpression(e))(e);case"unary":return(e.user_data=this.UnaryExpression(e))(e);case"identifier":return(e.user_data=this.Identifier(e))();case"missing":return(e.user_data=()=>({value:void 0,type:0}))();case"dimensioned":return(e.user_data=this.ResolveDimensionedQuantity())(e);case"literal":{let r={value:e.value,type:ae(e.value)};return(e.user_data=()=>r)()}case"group":return(e.user_data=this.GroupExpression(e))(e);case"complex":{let r={value:{real:e.real,imaginary:e.imaginary},type:7};return(e.user_data=()=>r)()}case"structured-reference":return(e.user_data=this.ResolveStructuredReference(e))();case"array":return(e.user_data=()=>({type:8,value:e.values.map(r=>(Array.isArray(r)?r:[r]).map(i=>({type:ae(i),value:i})))}))();default:return console.warn("Unhandled parse expr:",e),Zt()}}};var Hc=1e3*60*60*24;var Xt=d=>{let e=[],t=d.length,r=d[0].length;for(let i=0;i<r;i++){e[i]=[];for(let n=0;n<t;n++)e[i][n]=d[n][i]}return e};var _e=d=>{let e=[];for(let t of d)if(t.type===8)for(let r of t.value)e=e.concat(_e(r));else e.push(t);return e},G=d=>Array.isArray(d)?d.reduce((e,t)=>typeof t>"u"?e:Array.isArray(t)?e.concat(G(t)):t instanceof Float32Array||t instanceof Float64Array?e.concat(Array.from(t)):e.concat([t]),[]):[d];var V=d=>(e,...t)=>Array.isArray(e)?{type:8,value:e.map(r=>r.map(i=>d(i,...t)))}:typeof e=="object"&&e&&e.type===8?{type:8,value:e.value.map(r=>r.map(i=>d(i,...t)))}:d(e,...t),Te=d=>(e,t,...r)=>{let i=!1,n=!1;return e&&typeof e=="object"&&e.type===8?(e=e.value,i=!0):i=Array.isArray(e),t&&typeof t=="object"&&t.type===8?(t=t.value,n=!0):n=Array.isArray(t),i?n?{type:8,value:e.map((s,a)=>s.map((o,l)=>d(o,t[a][l],...r)))}:{type:8,value:e.map(s=>s.map(a=>d(a,t,...r)))}:n?{type:8,value:t.map(s=>s.map(a=>d(e,a,...r)))}:d(e,t,...r)};var Qt=class{constructor(){this.functions={}}Register(...e){for(let t of e)for(let r of Object.keys(t)){if(/[^a-zA-Z0-9._]/.test(r))throw new Error("invalid function name (invalid character)");if(r.length>255)throw new Error("invalid function name (too long, > 255)");if(/^[^a-zA-Z]/.test(r))throw new Error("invalid function name (start with an ascii letter)");let i=r.toLowerCase();if(this.functions[i])throw new Error(`function name (${i}) is already in use`);let n=t[r];n.canonical_name=r,this.functions[i]=n}}Get(e){let t=e.toLowerCase();return this.functions[t]}List(){let e={};for(let t of Object.keys(this.functions))e[t]=this.functions[t];return e}Alias(e,t){let r=this.Get(t);if(!r)throw new Error(`referenced function ${t} does not exist`);this.Register({[e]:{...r}})}};var Qe=class{static UnpackValues(e){if(Array.isArray(e)){let t=e[0];return Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array?e.reduce((r,i)=>r.concat(this.UnpackValues(i)),[]):e.map(r=>isNaN(r)?void 0:r)}else{if(e instanceof Float32Array||e instanceof Float64Array)return Array.prototype.slice.call(e);if(e&&typeof e=="object"){let r=Object.keys(e).length;if(typeof e[0]<"u"&&typeof e[(r-1).toString()]<"u"){let i=[];for(let n=0;n<r;n++)i[n]=e[n.toString()];return i}}}return[]}static SparklineCommon(e,t){let r=[],i=t.text?.text||this.default_color,n=[i,i];return Array.isArray(e.calculated)&&(r=this.UnpackValues(e.calculated[0]),typeof e.calculated[1]=="string"&&(n[0]=e.calculated[1]),typeof e.calculated[2]=="string"&&(n[1]=e.calculated[2])),{values:r,colors:n}}static RenderLine(e,t,r,i,n){let{values:s,colors:a}=this.SparklineCommon(i,n),o=.05,l=.1,c=1;Array.isArray(i.calculated)&&typeof i.calculated[2]=="number"&&(c=i.calculated[2]);let h=0,u=0,m=-1;for(let f=0;f<s.length;f++){let b=s[f];typeof b=="number"&&(m>=0?(h=Math.min(h,b),u=Math.max(u,b)):(m=f,h=u=b))}if(h!==u){let f=e*(1-2*o)/(s.length-1),b=u-h,p=t*(1-2*l),g=t*l;r.strokeStyle=a[0],r.lineWidth=c,r.lineCap="round",r.lineJoin="round",r.beginPath();let _=0;for(let y=m;y<s.length;y++){let x=s[y];if(typeof x=="number"){let w=e*o+f*y,A=t-(x-h)*p/b-g;_===0?(r.moveTo(w,A),_=1):r.lineTo(w,A)}else _=0}r.stroke()}}static RenderColumn(e,t,r,i,n){let{values:s,colors:a}=this.SparklineCommon(i,n),o=3,l=2.5,c=0,h=0,u=!1;for(let m of s)typeof m=="number"&&(u?(c=Math.min(c,m),h=Math.max(h,m)):(u=!0,c=h=m));if(s.length){let m=(e-2*o-2)/(s.length-0),f=t-2*l,b=l;if(c!==h)if(c<0&&h>0){let p=h-c,g=b+h/p*f;for(let _=0;_<s.length;_++){let y=s[_];if(typeof y=="number"){let x=o+_*m,w=Math.abs(y)/p*f;if(y>=0){r.fillStyle=a[0];let A=g-w;r.fillRect(x+2,A,m-2,w)}else{r.fillStyle=a[1];let A=g;r.fillRect(x+2,A,m-2,w)}}}}else if(h>0){r.fillStyle=a[0];let p=h-c;for(let g=0;g<s.length;g++){let _=s[g];if(typeof _=="number"){let y=o+g*m,x=Math.max(1,(_-c)/p*f),w=t-b-x;r.fillRect(y+2,w,m-2,x)}}}else{r.fillStyle=a[1];let p=h-c;for(let g=0;g<s.length;g++){let _=s[g];if(typeof _=="number"){let y=o+g*m,x=Math.max(1,Math.abs(h-_)/p*f),w=b;r.fillRect(y+2,w,m-2,x)}}}}}};Qe.default_color="#888";var Vi=d=>{let{x:e,y:t,width:r,height:i,cell:n}=d,s={},a=3,o=Math.round(16*(d.scale||1));if(n&&r&&i&&e&&t){let l={x:a,y:i-a-o};if(n.style){switch(n.style.vertical_align){case k.VerticalAlign.Top:l.y=a;break;case k.VerticalAlign.Middle:l.y=Math.round((i-o)/2);break}switch(n.style.horizontal_align){case k.HorizontalAlign.Right:l.x=Math.round(r-a-o);break;case k.HorizontalAlign.Center:l.x=Math.round((r-o)/2);break}}e>=l.x&&e<=l.x+o&&t>=l.y&&t<=l.y+o&&(s.value=`=Checkbox(${n.calculated?"FALSE":"TRUE"})`,s.block_selection=!0)}return s},Fi=d=>{let{context:e,width:t,height:r,cell:i}=d,n=d.scale||1;e.lineJoin="round",e.lineCap="round";let s=3*n,a=16*n,o=s,l=r-s-a;if(i.style){switch(i.style.vertical_align){case k.VerticalAlign.Top:l=s;break;case k.VerticalAlign.Middle:l=(r-a)/2;break}switch(i.style.horizontal_align){case k.HorizontalAlign.Right:o=t-s-a;break;case k.HorizontalAlign.Center:o=(t-a)/2;break}}o=Math.floor(o)+.5,l=Math.floor(l)+.5;let c=Math.floor(o+a)+.5,h=Math.floor(l+a)+.5;if(i&&i.calculated){e.lineWidth=.5,e.fillStyle=e.strokeStyle,e.beginPath(),e.moveTo(o,l),e.lineTo(o+16*n,l),e.lineTo(o+16*n,l+16*n),e.lineTo(o,l+16*n),e.closePath(),e.moveTo(o+15*n,l+4*n);for(let u of[[13.59,2.58],[6,10.17],[2.41,6.59],[1,8],[6,13]])e.lineTo(o+u[0]*n,l+u[1]*n);e.closePath(),e.fill()}else e.lineWidth=1,e.lineJoin="round",e.beginPath(),e.moveTo(o,l),e.lineTo(c,l),e.lineTo(c,h),e.lineTo(o,h),e.closePath(),e.stroke();return{handled:!0}};var Gi=d=>{let e=.254829592,t=-.284496736,r=1.421413741,i=-1.453152027,n=1.061405429,s=.3275911;d=Math.abs(d);let a=1/(1+s*d);return 1-((((n*a+i)*a+r)*a+t)*a+e)*a*Math.exp(-1*d*d)},us=Math.sqrt(2*Math.PI),Hi=d=>{if(d===.5)return 0;let e=d<1&&d>.5?1-d:d,t=Math.sqrt(Math.log(1/Math.pow(e,2))),r=t-(2.515517+.802853*t+.010328*Math.pow(t,2))/(1+1.432788*t+.189269*Math.pow(t,2)+.001308*Math.pow(t,3));return d>.5?r:-r},Or={Sqrt:{description:"Returns the square root of the argument",arguments:[{boxed:!0}],fn:V(d=>{if(d.type===7){let e=ue(d.value,{real:.5,imaginary:0});return de(e)}else{if(d.type===0||!d.value)return{type:3,value:0};if(d.type===3&&d.value<0){let e=ue({real:d.value,imaginary:0},{real:.5,imaginary:0});return{type:7,value:e}}else{let e=Math.sqrt(d.value);return isNaN(e)?z():{type:3,value:e}}}})},Power:{description:"Returns base raised to the given power",arguments:[{name:"base",boxed:!0},{name:"exponent",boxed:!0}],fn:Te((d,e)=>{if(d.type===3&&e.type===3&&(d.value>=0||e.value===0||Math.abs(e.value)>=1)){let n=Math.pow(d.value,e.value);return isNaN(n)?z():{type:3,value:n}}let t=d.type===7?d.value:{real:d.value||0,imaginary:0},r=e.type===7?e.value:{real:e.value||0,imaginary:0},i=ue(t,r);return de(i)})}},qe={Int:{fn:d=>({type:3,value:Math.floor(d)})},Rand:{volatile:!0,fn:()=>({type:3,value:Math.random()})},RandBetween:{arguments:[{name:"min"},{name:"max"}],volatile:!0,fn:(d=0,e=1)=>{if(d>e){let t=d;d=e,e=t}return{type:3,value:Math.floor(Math.random()*(e+1-d)+d)}}},Sum:{description:"Adds arguments and ranges",arguments:[{boxed:!0,name:"values or ranges"}],fn:(...d)=>{let e={real:0,imaginary:0},t=_e(d);for(let r of t)switch(r.type){case 3:e.real+=r.value;break;case 4:e.real+=r.value?1:0;break;case 7:e.real+=r.value.real,e.imaginary+=r.value.imaginary;break;case 6:return r}return de(e)}},Now:{description:"Returns current time",volatile:!0,fn:()=>({type:3,value:je(new Date().getTime())})},Date:{description:"Constructs a Lotus date from parts",arguments:[{name:"year"},{name:"month"},{name:"day"}],fn:(d,e,t)=>{let r=new Date;return r.setMilliseconds(0),r.setSeconds(0),r.setMinutes(0),r.setHours(0),d<0||d>1e4?W():(d<1899&&(d+=1900),r.setFullYear(d),e<1||e>12?W():(r.setMonth(e-1),t<1||t>31?W():(r.setDate(t),{type:3,value:je(r.getTime())})))}},Today:{description:"Returns current day",volatile:!0,fn:()=>{let d=new Date;return d.setMilliseconds(0),d.setSeconds(0),d.setMinutes(0),d.setHours(12),{type:3,value:je(d.getTime())}}},IfError:{description:"Returns the original value, or the alternate value if the original value contains an error",arguments:[{name:"original value",allow_error:!0,boxed:!0},{name:"alternate value"}],fn:(d,e=0)=>d&&d.type===6?{value:e,type:ae(e)}:d},IsError:{description:"Checks if another cell contains an error",arguments:[{name:"reference",allow_error:!0,boxed:!0}],fn:(...d)=>{let e=_e(d);for(let t of e)if(t.type===6)return{type:4,value:!0};return{type:4,value:!1}}},Cell:{description:"Returns data about a cell",arguments:[{name:"type",description:"Type of data to return"},{name:"reference",description:"Cell reference",metadata:!0}],fn:Te((d,e)=>{if(!Jt(e))return Z();if(d)switch(d.toString().toLowerCase()){case"format":return e.value.format?{type:2,value:e.value.format}:Z();case"address":return{type:2,value:e.value.address.label.replace(/\$/g,"")}}return{type:6,value:Ei.error}})},Year:{description:"Returns year from date",arguments:[{name:"date"}],fn:d=>j(new Date(Pe(d)).getUTCFullYear())},Month:{description:"Returns month from date",arguments:[{name:"date"}],fn:d=>j(new Date(Pe(d)).getUTCMonth()+1)},Day:{description:"Returns day of month from date",arguments:[{name:"date"}],fn:d=>j(new Date(Pe(d)).getUTCDate())},Radians:{description:"Converts degrees to radians",arguments:[{name:"Degrees",description:"Angle in degrees"}],fn:V(d=>j(d*Math.PI/180))},Degrees:{description:"Converts radians to degrees",arguments:[{name:"Radians",description:"Angle in radians"}],fn:V(d=>j(d/Math.PI*180))},CountA:{description:"Counts cells that are not empty",fn:(...d)=>j(G(d).reduce((e,t)=>typeof t>"u"?e:e+1,0))},Count:{description:"Counts cells that contain numbers",fn:(...d)=>j(G(d).reduce((e,t)=>typeof t=="number"?e+1:e,0))},Or:{fn:(...d)=>{let e=!1;d=G(d);for(let t of d)e=e||!!t;return j(e)}},And:{fn:(...d)=>{let e=!0;d=G(d);for(let t of d)e=e&&!!t;return j(e)}},Not:{fn:(...d)=>d.length===0?W():d.length===1?j(!d[0]):j(!0)},If:{arguments:[{name:"test value",boxed:!0},{name:"value if true",boxed:!0,allow_error:!0},{name:"value if false",boxed:!0,allow_error:!0}],fn:(d,e={type:4,value:!0},t={type:4,value:!1})=>{let r=e.type===8,i=t.type===8;return d.type===8?{type:8,value:d.value.map((s,a)=>s.map((o,l)=>(o.type===2?o.value.toLowerCase()!=="false"&&o.value.toLowerCase()!=="f":!!o.value)?r?e.value[a][l]:e:i?t.value[a][l]:t))}:(d.type===2?d.value.toLowerCase()!=="false"&&d.value.toLowerCase()!=="f":!!d.value)?e:t}},Fact:{description:"Returns the factorial of a number",arguments:[{name:"number"}],fn:V(d=>{d=Math.floor(d);let e=1;for(;d>1;)e*=d,d--;return{type:3,value:e}})},Power:{description:"Returns base raised to the given power",arguments:[{name:"base",boxed:!0},{name:"exponent",boxed:!0}],fn:Te((d,e)=>{if(d.type===7||e.type===7){let t=d.type===7?d.value:{real:d.value||0,imaginary:0},r=e.type===7?e.value:{real:e.value||0,imaginary:0},i=ue(t,r);return de(i)}else{let t=Math.pow(d.value,e.value);return isNaN(t)?z():{type:3,value:t}}})},Mod:{fn:Te((d,e)=>e?j(d%e):he())},Sort:{arguments:[{name:"values"}],fn:(...d)=>(d=G(d),d.every(e=>typeof e=="number")?d.sort((e,t)=>e-t):d.sort(),{type:8,value:[d.map(e=>j(e))]})},Transpose:{description:"Returns transpose of input matrix",arguments:[{name:"matrix",boxed:!0}],fn:d=>d.type===8?{type:8,value:Xt(d.value)}:d},Max:{fn:(...d)=>({type:3,value:Math.max.apply(0,G(d).filter(e=>typeof e=="number"))})},Min:{fn:(...d)=>({type:3,value:Math.min.apply(0,G(d).filter(e=>typeof e=="number"))})},SumProduct:{description:"Returns the sum of pairwise products of two or more ranges",fn:(...d)=>{let e=d.map(i=>G(i)),t=Math.max.apply(0,e.map(i=>i.length)),r=0;for(let i=0;i<t;i++)r+=e.reduce((n,s)=>n*(s[i]||0),1);return{type:3,value:r}}},VLookup:{fn:(d,e,t,r=!0)=>{if(t=Math.max(0,t-1),r){let i=Math.abs(d-e[0][0]),n=e[t][0];for(let s=1;s<e[0].length;s++){let a=Math.abs(e[0][s]-d);a<i&&(i=a,n=e[t][s])}return j(n)}else{for(let i=1;i<e[0].length;i++)if(e[0][i]==d)return e[t][i];return Se()}}},Product:{arguments:[{boxed:!0}],fn:(...d)=>{let e={real:1,imaginary:0};d=_e(d);for(let t of d)t.type===7?e=ce(e,t.value):t.type===3&&(e.real*=t.value,e.imaginary*=t.value);return de(e)}},Log:{fn:Te((d,e=10)=>({type:3,value:Math.log(d)/Math.log(e)}))},Log10:{fn:V(d=>({type:3,value:Math.log(d)/Math.log(10)}))},Ln:{fn:V(d=>({type:3,value:Math.log(d)}))},Round:{fn:Te((d,e=0)=>{let t=Math.pow(10,e);return{type:3,value:Math.round(t*d)/t}})},RoundDown:{fn:Te((d,e=0)=>{let t=Math.pow(10,e),r=d>=0;return{type:3,value:r?Math.floor(t*d)/t:Math.ceil(t*d)/t}})},Reverse:{arguments:[{boxed:!0}],fn:d=>d.type===8?(d.value.length===1?d.value[0].reverse():d.value.reverse(),d):{type:2,value:d.value.toString().split("").reverse().join("")}},Exp:{arguments:[{boxed:!0}],fn:V(d=>{if(d.type===7){let e=Vr(d.value);return de(e)}return{type:3,value:Math.exp(d.value||0)}})},Abs:{arguments:[{boxed:!0}],fn:V(d=>d.type===7?{type:3,value:Math.sqrt(d.value.real*d.value.real+d.value.imaginary*d.value.imaginary)}:{type:3,value:Math.abs(d.value||0)})},Simplify:{arguments:[{name:"value"},{name:"significant digits"}],fn:Te((d,e=2)=>{if(e=e||2,d===0)return{type:3,value:d};let t=d<0?-1:1;d*=t;let r=Math.pow(10,Math.floor(Math.log10(d))+1-e);return{type:3,value:Math.round(d/r)*r*t}})},Erf:{fn:d=>({type:3,value:Gi(d)})},NormsInv:{description:"Inverse of the normal cumulative distribution",arguments:[{name:"probability"}],fn:d=>({type:3,value:Hi(d)})},"Norm.Inv":{description:"Inverse of the normal cumulative distribution",arguments:[{name:"probability"},{name:"mean",default:0},{name:"standard deviation",default:1}],xlfn:!0,fn:(d,e=0,t=1)=>({type:3,value:Hi(d)*t+e})},"Norm.Dist":{description:"Cumulative normal distribution",arguments:[{name:"value"},{name:"mean",default:0},{name:"standard deviation",default:1},{name:"cumulative",default:!0}],xlfn:!0,fn:(d,e=0,t=1,r=!0)=>{let i=0;return r?i=.5*(1+(d<e?-1:1)*Gi(Math.abs(d-e)/(t*Math.sqrt(2)))):i=Math.exp(-1/2*Math.pow((d-e)/t,2))/(t*us),{type:3,value:i}}},Sqrt:{description:"Returns the square root of the argument",arguments:[{boxed:!0}],fn:V(d=>{if(d.type===7){let e=ue(d.value,{real:.5,imaginary:0});return de(e)}else{if(d.type===0||!d.value)return{type:3,value:0};{let e=Math.sqrt(d.value);return isNaN(e)?z():{type:3,value:e}}}})},HexToDec:{arguments:[{description:"hexadecimal string"}],fn:d=>({type:3,value:parseInt(d,16)})},DecToHex:{arguments:[{description:"number"}],fn:d=>({type:2,value:d.toString(16)})},Checkbox:{arguments:[{name:"checked"}],click:Vi,render:Fi,fn:d=>({value:!!d,type:4})},"Sparkline.Column":{arguments:[{name:"data"},{name:"color"},{name:"negative color"}],render:d=>(Qe.RenderColumn(d.width,d.height,d.context,d.cell,d.style),{handled:!0}),fn:(...d)=>({type:5,value:d,key:"sparkline-data"})},"Sparkline.Line":{arguments:[{name:"data"},{name:"color"},{name:"line width"}],render:d=>(Qe.RenderLine(d.width,d.height,d.context,d.cell,d.style),{handled:!0}),fn:(...d)=>({type:5,value:d,key:"sparkline-data"})}},Bi={};for(let d of Object.keys(qe))Bi[d.toLowerCase()]=d;var ms=["pow"],Oi={};for(let d of ms)Oi[d.toLowerCase()]=d;for(let d of Object.getOwnPropertyNames(Math)){let e=d.toLowerCase();if(Bi[e]||Oi[e])continue;let t=Object.getOwnPropertyDescriptor(Math,d);if(!t)continue;let r=t.value,i=typeof r;switch(i){case"number":qe[d]={fn:()=>({type:3,value:r}),category:["Math Functions"]};break;case"function":qe[d]={fn:(...n)=>j(r(...n)),category:["Math Functions"]};break;default:console.info("unexpected type:",i,d);break}}Math.log10||(Math.log10=d=>Math.log(d)/Math.log(10));var _t=(d,e,t=0,r=0,i=0)=>i?-(t*(d/(1-Math.pow(1+d,-e))))/(1+d)-r*(1/((1+d)*((Math.pow(1+d,e)-1)/d))):-(t*d*Math.pow(1+d,e)+r*d)/(Math.pow(1+d,e)-1),$i=(d,e,t,r=0,i=0)=>i?(1+d)*-t/d*(Math.pow(1+d,e)-1)-r*Math.pow(1+d,e):-t/d*(Math.pow(1+d,e)-1)-r*Math.pow(1+d,e),Zr=(d,e,t,r=0,i=0,n=0)=>{if(e<1)return NaN;if(e===1&&n)return 0;let s=_t(d,t,r,i,n),a=$i(d,e-1,s,r,n)*d;return n?a/(1+d):a},Zi=(d,e,t,r=0,i=0,n=0)=>_t(d,t,r,i,n)-Zr(d,e,t,r,i,n),Wi={NPV:{description:"Returns the present value of a series of future cashflows",arguments:[{name:"Rate"},{name:"Cashflow"}],fn:(d=0,...e)=>{let t=0,r=G(e);for(let i=0;i<r.length;i++){let n=r[i];typeof n=="number"&&(t+=Math.pow(1+d,-(i+1))*n)}return{type:3,value:t}}},IRR:{description:"Calculates the internal rate of return of a series of cashflows",arguments:[{name:"Cashflows"},{name:"Guess",default:.1}],fn:(d,e=.1)=>{let t=G(d).map(n=>typeof n=="number"?n:0),r=.1,i=[{found:!1,value:0},{found:!1,value:0}];for(let n=0;n<50;n++){let s=0;for(let a=0;a<t.length;a++)s+=Math.pow(1+e,-(a+1))*t[a];if(Math.abs(s)<=.00125)return{type:3,value:e};if(s>0){if(i[0].value=i[0].found?Math.max(i[0].value,e):e,i[0].found=!0,!i[1].found){e+=r;continue}}else if(i[1].value=i[1].found?Math.min(i[1].value,e):e,i[1].found=!0,!i[0].found){e-=r;continue}e=i[0].value+(i[1].value-i[0].value)/2}return{type:6,value:"NUM"}}},CUMPRINC:{description:"Returns cumulative principal paid on a loan between two periods",arguments:[{name:"Rate"},{name:"Periods"},{name:"Present Value"},{name:"Start Period"},{name:"End Period"},{name:"Type",default:0}],fn:(d,e,t,r,i,n=0)=>{let s=0;for(let a=r;a<=i;a++)s+=Zi(d,a,e,t,0,n);return{type:3,value:s}}},CUMIPMT:{description:"Returns cumulative interest paid on a loan between two periods",arguments:[{name:"Rate"},{name:"Periods"},{name:"Present Value"},{name:"Start Period"},{name:"End Period"},{name:"Type",default:0}],fn:(d,e,t,r,i,n=0)=>{let s=0;for(let a=r;a<=i;a++)s+=Zr(d,a,e,t,0,n);return{type:3,value:s}}},IPMT:{description:"Returns the interest portion of a payment",arguments:[{name:"Rate"},{name:"Period"},{name:"Periods"},{name:"Present Value",default:0},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(d,e,t,r=0,i=0,n=0)=>({type:3,value:Zr(d,e,t,r,i,n)})},PPMT:{description:"Returns the principal portion of a payment",arguments:[{name:"Rate"},{name:"Period"},{name:"Periods"},{name:"Present Value",default:0},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(d,e,t,r=0,i=0,n=0)=>({type:3,value:Zi(d,e,t,r,i,n)})},Rate:{description:"Returns the interest rate of a loan",arguments:[{name:"Periods"},{name:"Payment"},{name:"Present Value",default:0},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(d,e,t=0,r=0,i=0)=>{let n=.25,s=[-1,1],a=32,o=1e-6;for(let l=0;l<a;l++){let c=_t(n,d,t,r,i);if(Math.abs(c-e)<=o)return{type:3,value:n};let h=_t(s[1],d,t,r,i);e>=c&&e<=h||e>=h&&e<=c?s[0]=n:s[1]=n,n=s[0]+(s[1]-s[0])/2}return{type:3,value:n}}},FV:{description:"Returns the future value of an investment",arguments:[{name:"Rate"},{name:"Periods"},{name:"Payment"},{name:"Present Value",default:0},{name:"Type",default:0}],fn:(d,e,t,r=0,i=0)=>({type:3,value:$i(d,e,t,r,i)})},PV:{description:"Returns the present value of an investment",arguments:[{name:"Rate"},{name:"Periods"},{name:"Payment"},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(d,e,t,r=0,i=0)=>i?(t+=r*(1/((1+d)*((Math.pow(1+d,e)-1)/d))),{type:3,value:-(t+t/d*(1-Math.pow(1+d,-(e-1))))}):{type:3,value:-(r+t/d*(Math.pow(1+d,e)-1))/Math.pow(1+d,e)}},NPER:{description:"Returns the number of periods of an investment",arguments:[{name:"Rate"},{name:"Payment"},{name:"Present Value"},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(d,e,t=0,r=0,i=0)=>i?{type:3,value:1+(-Math.log(1+d*(1-t/-e))+Math.log(1+r*d/(-e*(1+d))))/Math.log(1+d)}:{type:3,value:(Math.log(Math.pow(1-t*d/-e,-1))+Math.log(1+r*d/-e))/Math.log(1+d)}},PMT:{description:"Returns the periodic payment of a loan",arguments:[{name:"Rate"},{name:"Periods"},{name:"Present Value"},{name:"Future Value",default:0},{name:"Type",default:0}],fn:(d,e,t,r=0,i=0)=>({type:3,value:_t(d,e,t,r,i)})}};var fs=d=>{let e=[],t=d.length,r="[\\^$.|?*+()";for(let i=0;i<t;i++){let n=d[i];switch(n){case"*":e.push(".","*");break;case"?":e.push(".");break;case"~":n=d[++i]||"";default:for(let s=0;s<r.length;s++)if(n===r[s]){e.push("\\");break}e.push(n);break}}return e.join("")},ji={Char:{arguments:[{name:"number"}],fn:d=>({type:2,value:String.fromCodePoint(d||32)}),category:["text"]},Code:{arguments:[{name:"string"}],fn:d=>({type:3,value:d.codePointAt(0)||0}),category:["text"]},Value:{arguments:[{name:"text"}],fn:d=>{let e=be.TryParse(d);return e.type===3?{type:3,value:e.value}:W()},category:["text"]},Text:{arguments:[{name:"value"},{name:"number format"}],fn:(d,e="0.00####")=>({type:2,value:M.Get(e).Format(d||0)}),category:["text"]},Left:{arguments:[{name:"string"},{name:"count"}],fn:(d,e=1)=>({type:2,value:d.substr(0,e)}),category:["text"]},Right:{arguments:[{name:"string"},{name:"count"}],fn:(d,e=1)=>({type:2,value:d.slice(-e)}),category:["text"]},Mid:{arguments:[{name:"string"},{name:"left"},{name:"count"}],fn:(d,e=0,t=1)=>({type:2,value:d.substr(Math.max(0,e-1),t)}),category:["text"]},Search:{description:"Find a string (needle) in another string (haystack). Case-insensitive.",arguments:[{name:"Needle"},{name:"Haystack"},{name:"Start",default:1}],fn:(d,e,t=1)=>{if(t>=1){if(!d)return{type:3,value:t};let r=fs(d),i=new RegExp(r,"i").exec(e.substr(t-1));if(i)return{type:3,value:i.index+t}}return z()}},Find:{description:"Find a string (needle) in another string (haystack). Case-sensitive.",arguments:[{name:"Needle"},{name:"Haystack"},{name:"Start",default:1}],fn:(d,e,t=1)=>{if(t>=1){if(!d)return{type:3,value:t};let r=new RegExp(d).exec(e.substr(t-1));if(r)return{type:3,value:r.index+t}}return z()}},Concat:{description:"Pastes strings together",fn:(...d)=>{let t=G(d).map(r=>{let i=r?.toString()||"";return typeof r=="number"&&T.decimal_separator===","?i.replace(/\./,","):i}).join("");return{type:2,value:t}}}},$r={Concatenate:"Concat"};var Yi={IsBlank:{description:"Returns true if the reference is blank",arguments:[{name:"Reference",metadata:!0}],fn:V(d=>({type:4,value:!d?.value||typeof d.value.value>"u"}))},IsNumber:{description:"Returns true if the reference is a number",arguments:[{name:"Reference",metadata:!0}],fn:V(d=>({type:4,value:d?.value&&typeof d.value.value=="number"}))},IsLogical:{description:"Returns true if the reference is a logical TRUE or FALSE",arguments:[{name:"Reference",metadata:!0}],fn:V(d=>({type:4,value:d?.value&&typeof d.value.value=="boolean"}))},IsText:{description:"Returns true if the reference is text",arguments:[{name:"Reference",metadata:!0}],fn:V(d=>({type:4,value:d?.value&&typeof d.value.value=="string"}))}};var Re=(d,e=!1)=>{let t=d.length,r=0,i=0;for(let n=0;n<t;n++)r+=d[n];r/=t;for(let n=0;n<t;n++){let s=d[n]-r;i+=s*s}return e?i/(t-1):i/t},Ji={"StDev.P":{description:"Returns the standard deviation of a set of values, corresponding to a population",arguments:[{name:"data"}],fn:(...d)=>({type:3,value:Math.sqrt(Re(G(d),!1))})},"StDev.S":{description:"Returns the standard deviation of a set of values, corresponding to a sample of a population",arguments:[{name:"data"}],fn:(...d)=>({type:3,value:Math.sqrt(Re(G(d),!0))})},"Var.P":{description:"Returns the variance of a set of values, corresponding to a population",arguments:[{name:"data"}],fn:(...d)=>({type:3,value:Re(G(d),!1)})},"Var.S":{description:"Returns the variance of a set of values, corresponding to a sample of a population",arguments:[{name:"data"}],fn:(...d)=>({type:3,value:Re(G(d),!0)})},Covar:{description:"Returns the covariance between two ranges of values",arguments:[{name:"A"},{name:"B"}],fn:(d,e)=>{if(!Array.isArray(d)||!Array.isArray(e))return z();if(!Array.isArray(d[0])||!Array.isArray(e[0]))return z();if(d.length!==e.length)return W();let t=0,r=0,i={x:0,y:0},n={x:[],y:[]};for(let s=0;s<d.length;s++){if(!d[s]||!e[s])continue;if(d[s].length!==e[s].length)return W();let a=d[s].length;r+=a;for(let o=0;o<a;o++)i.x+=d[s][o]||0,i.y+=e[s][o]||0,n.x.push(d[s][o]||0),n.y.push(e[s][o]||0)}if(r===0)return Se();i.x/=r,i.y/=r;for(let s=0;s<r;s++)t+=(n.x[s]-i.x)*(n.y[s]-i.y);return{type:3,value:t/r}}},Correl:{description:"Returns the correlation between two ranges of values",arguments:[{name:"A"},{name:"B"}],fn:(d,e)=>{if(!Array.isArray(d)||!Array.isArray(e))return z();if(!Array.isArray(d[0])||!Array.isArray(e[0]))return z();let t=0,r=0,i=0,n=0,s=0,a=0,o=0;for(let l=0;l<d.length;l++){if(!d[l]||!e[l])continue;let c=d[l].length;for(let h=0;h<c;h++){let u=Number(d[l][h]),m=Number(e[l][h]);isNaN(u)||isNaN(m)||(r+=u*m,i+=u,n+=m,s+=u*u,a+=m*m,o++)}}return t=o*r-i*n,t&&(t/=Math.sqrt((o*s-i*i)*(o*a-n*n))),{type:3,value:t}}},GeoMean:{description:"Returns the geometric mean of all numeric arguments",arguments:[{boxed:!0}],fn:(...d)=>{d=_e(d);let e=0,t={real:1,imaginary:0},r=!1,i=!1;for(let n of d)n.type===7?(r=!0,t=ce(t,n.value),e++):n.type===3&&(n.value<0&&(i=!0),e++,t.real*=n.value,t.imaginary*=n.value);if(r){let n=ue(t,{real:1/e,imaginary:0});return n.imaginary?{type:7,value:n}:{type:3,value:n.real}}else return i?z():{type:3,value:Math.pow(t.real,1/e)}}},Average:{description:"Returns the arithmetic mean of all numeric arguments",arguments:[{boxed:!0}],fn:(...d)=>{d=_e(d);let e={real:0,imaginary:0},t=0;for(let r of d){if(r.type===6)return r;r.type===3&&(e.real+=r.value,t++),r.type===7&&(e.real+=r.value.real,e.imaginary+=r.value.imaginary,t++)}return e.real/=t,e.imaginary/=t,e.imaginary?{type:7,value:e}:{type:3,value:e.real}}},Percentile:{description:"Returns the kth percentile value from the range of data",arguments:[{name:"range"},{name:"percentile"}],fn:(d,e)=>{let t=G(d).filter(o=>typeof o=="number");t.sort((o,l)=>o-l);let r=t.length,i=Math.pow(10,8),n=Math.round((1+(r-1)*e)*i)/i,s=Math.floor(n),a=Math.ceil(n);return{type:3,value:(t[s-1]+t[a-1])/2}}},Median:{description:"Returns the median value of the range of data",arguments:[{name:"range"}],fn:(...d)=>{let e=G(d).filter(s=>typeof s=="number");e.sort((s,a)=>s-a);let r=1+(e.length-1)*.5,i=Math.floor(r),n=Math.ceil(r);return{type:3,value:(e[i-1]+e[n-1])/2}}}},Wr={Mean:"Average",StDev:"StDev.S",Var:"Var.S"};var Xi={IsComplex:{description:"Returns true if the reference is a complex number",arguments:[{name:"Reference",metadata:!0}],fn:V(d=>({type:4,value:d?.value&&ye(d.value.value)}))},Real:{description:"Returns the real part of a complex number",arguments:[{boxed:!0}],fn:V(d=>d.type===3?{...d}:d.type===7?{type:3,value:d.value.real||0}:d.type===0||d.type===2&&d.value===""?{type:3,value:0}:z())},Imaginary:{description:"Returns the imaginary part of a complex number (as real)",arguments:[{boxed:!0}],fn:V(d=>d.type===7?{type:3,value:d.value.imaginary||0}:d.type===3||d.type===0||d.type===2&&d.value===""?{type:3,value:0}:z())},Conjugate:{description:"Returns the conjugate of a complex number",arguments:[{boxed:!0}],fn:V(d=>d.type===7?{type:7,value:{real:d.value.real,imaginary:-d.value.imaginary}}:d.type===3||d.type===0||!d.value?{type:3,value:d.value||0}:z())},Arg:{description:"Returns the principal argument of a complex number (in radians)",arguments:[{boxed:!0}],fn:V(d=>d.type===7?{type:3,value:Math.atan2(d.value.imaginary,d.value.real)}:d.type===3||d.type===0||d.type===2&&d.value===""?{type:3,value:Math.atan2(0,d.value||0)}:z())},Rectangular:{description:"Converts a complex number in polar form to rectangular form",arguments:[{name:"r"},{name:"\u03B8 in radians"}],fn:(d=0,e=0)=>({type:7,value:{real:d*Math.cos(e),imaginary:d*Math.sin(e)}})},Complex:{description:"Ensures that the given value will be treated as a complex number",arguments:[{boxed:!0}],fn:V(d=>d.type===7?d:d.type===3||d.type===0||!d.value?{type:7,value:{imaginary:0,real:d.value||0}}:z())},ComplexLog:{description:"Returns the principal value Log(z) of a complex number z",arguments:[{boxed:!0}],fn:V(d=>{if(d.type===3){if(!d.value)return z();d={type:7,value:{real:d.value,imaginary:0}}}else if(d.type===0||d.type===2&&d.value==="")return z();if(d.type===7){let e=Wt(d.value),t={real:Math.log(e.r),imaginary:e.theta};return t.imaginary?{type:7,value:t}:{type:3,value:t.real}}return z()})}};var qt=d=>{let e=[];d.type===8?e=d.value:e=[[d.value]];let t=e.length,r=t?e[0].length:0,i=[];if(!t||!r)return{m:t,n:r,array:i};for(let n=0;n<t;n++){let s=[];for(let a=0;a<r;a++){let o=e[n][a];if(o.type===7)s.push({...o.value});else if(o.type===3)s.push({real:o.value,imaginary:0});else if(o.type===0||o.value==="")s.push({real:0,imaginary:0});else return{m:t,n:r,error:!0,array:[]}}i.push(s)}return{m:t,n:r,array:i}},Qi={MDeterm:{description:"Returns the determinant of a matrix",arguments:[{name:"matrix",boxed:!0}],fn:d=>{let e=qt(d);if(!e.array||!e.m||!e.n||e.m!==e.n||e.error)return z();let t=jt(e);return t?de(t):z()}},MInverse:{description:"Returns the inverse matrix",arguments:[{name:"matrix",boxed:!0}],fn:d=>{let e=qt(d);if(!e.array||!e.m||!e.n||e.m!==e.n||e.error)return z();let t=jt(e);if(t&&t.real===0&&t?.imaginary===0)return z();let r=Ii(e);return r?{type:8,value:r.map(i=>i.map(n=>de(n)))}:z()}},MMult:{description:"Returns the dot product of A and B",arguments:[{name:"A",boxed:!0},{name:"B",boxed:!0}],fn:(d,e)=>{let t=qt(d),r=qt(e);if(!t.array||t.error||!r.array||r.error)return z();if(t.m!==r.n)return z();let i=Ri(r,t);return{type:8,value:i.map(n=>n.map(s=>de(s)))}}}};var jr=class extends Ue{constructor(){super(...arguments);this.state_id=0;this.type=jr.type;this.color=2;this.state_representation=""}UpdateState(){let t=JSON.stringify(Array.from(this.edges_in).map(r=>r.result));t!==this.state_representation&&(this.state_representation=t,this.state_id++)}Calculate(t){if(this.dirty){for(let r of this.edges_in)if(r.dirty)return;this.UpdateState(),this.dirty=!1}}AddDependent(t){throw new Error("leaf vertex cannot have dependents")}},Ke=jr;Ke.type="leaf-vertex";var ps=d=>{if(typeof d=="string")switch(d=d.toUpperCase(),d){case"AVERAGE":case"MEAN":d=101;break;case"COUNT":d=102;break;case"COUNTA":d=103;break;case"MAX":d=104;break;case"MIN":d=105;break;case"PRODUCT":d=106;break;case"STDEV":d=107;break;case"STDEVP":d=108;break;case"SUM":d=109;break;case"VAR":d=110;break;case"VARP":d=111;break;default:d=0;break}return d},bs={complex_numbers:"off"},Kt=class extends $t{constructor(t,r={}){super();this.model=t;this.parser=new We;this.library=new Qt;this.registered_libraries={};this.expression_calculator=new Yt(this.library,this.parser);this.full_rebuild_required=!1;if({...bs,...r}.complex_numbers==="on"){for(let n of Object.keys(Or))qe[n]=Or[n];Di()}this.UpdateLocale(),this.library.Register(qe,ji,Ji,Wi,Yi,Xi,Qi);for(let n of Object.keys(Wr))this.library.Alias(n,Wr[n]);for(let n of Object.keys($r))this.library.Alias(n,$r[n]);this.library.Register({Subtotal:{arguments:[{name:"type"},{name:"range",metadata:!0}],fn:(n,...s)=>{if(n=ps(n),n>100&&(n-=100),n<1||n>11)return W();let a=_e(s),o=[],l=0,c=0,h;for(let m of a){let f=m.value?.address;if(!f)return Z();if(!h||h.id!==f.sheet_id){if(!f.sheet_id)return console.warn("invalid reference in metadata"),Z();if(h=this.model.sheets.Find(f.sheet_id),!h)return console.warn("invalid sheet in metadata"),Z()}if(!h.GetRowHeight(f.row))continue;let p=m.value?.value;typeof p>"u"||(l++,typeof p=="number"&&(c+=p,o.push(p)))}let u=0;switch(n){case 1:if(o.length===0)return he();u=c/o.length;break;case 2:u=o.length;break;case 3:u=l;break;case 4:if(o.length===0)return z();u=Math.max.apply(0,o);break;case 5:if(o.length===0)return z();u=Math.min.apply(0,o);break;case 6:if(o.length===0)return z();u=1;for(let m of o)u*=m;break;case 7:if(o.length<2)return he();u=Math.sqrt(Re(o,!0));break;case 8:if(o.length===0)return he();u=Math.sqrt(Re(o,!1));break;case 9:u=c;break;case 10:if(o.length<2)return he();u=Re(o,!0);break;case 11:if(o.length===0)return he();u=Re(o,!1);break}return{type:3,value:u}}},CountIf:{arguments:[{name:"range"},{name:"criteria"}],fn:(n,s)=>{let a=G(n);typeof s!="string"?s="="+(s||0).toString():(s=s.trim(),/^[=<>]/.test(s)||(s="="+s));let o=this.parser.Parse("{}"+s),l=o.expression;if(o.error||!l)return ke();if(l.type!=="binary")return ke();if(l.left.type!=="array")return ke();l.left.values=[a];let c=this.CalculateExpression(l);if(c.type===8){let h=0;for(let u of c.value)for(let m of u)m.value&&h++;return{type:3,value:h}}return c}},Offset:{arguments:[{name:"reference",description:"Base reference",metadata:!0},{name:"rows",description:"number of rows to offset"},{name:"columns",description:"number of columns to offset"},{name:"height"},{name:"width"}],return_type:1,volatile:!0,fn:((n,s=0,a=0,o,l)=>{if(!n)return W();if(n.type===8){let h=typeof o=="number"?s+o:void 0,u=typeof l=="number"?a+l:void 0;return{type:8,value:n.value.slice(s,h).map(f=>f.slice(a,u))}}if(!Jt(n))return console.info("e2",{reference:n}),Z();let c=this.DynamicDependencies(n.value.address,this.expression_calculator.context.address,!0,s,a,l,o);if(!c)return console.info("e1",{check_result:c}),Z();if(c.dirty){let h=this.GetVertex(this.expression_calculator.context.address,!0);return h.short_circuit=!0,{type:0,value:void 0}}if(c.area){let h={type:"address",...c.area.start,label:"",position:0,id:0},u={type:"address",...c.area.end,label:"",position:0,id:0},m=c.area.count===1?h:{type:"range",start:h,end:u,label:"",position:0,id:0};return{type:5,value:m}}return z()}).bind(this)},Indirect:{arguments:[{name:"reference",description:"Cell reference (string)"}],return_type:1,volatile:!0,fn:(n=>{if(!n||typeof n!="string")return W();let s=this.parser.Parse(n);if(s.error||!s.expression||s.expression.type!=="address"&&s.expression.type!=="range")return Z();let a=this.DynamicDependencies(s.expression,this.expression_calculator.context.address);if(!a)return Z();if(a.dirty){let o=this.GetVertex(this.expression_calculator.context.address,!0);return o.short_circuit=!0,{type:0,value:void 0}}return{type:5,value:s.expression}}).bind(this)},Match:{arguments:[{name:"value",boxed:!0},{name:"range",boxed:!0},{name:"type"}],fn:(n,s,a=0)=>{if(a)return console.warn("inexact match not supported",{value:n,range:s,type:a}),Se();if(s.type===8){if(s.value.length===1){let o=s.value[0];for(let l=0;l<o.length;l++)if(n.type==o[l].type&&n.value===o[l].value)return{type:3,value:l+1}}else for(let o=0;o<s.value.length;o++){let l=s.value[o];if(l.length!==1)return Se();if(n.type==l[0].type&&n.value===l[0].value)return{type:3,value:o+1}}return Se()}else return n.type===s.type&&n.value===s.value?{type:3,value:1}:Se();return W()}},Index:{arguments:[{name:"range",boxed:!0},{name:"row"},{name:"column"}],volatile:!1,fn:(n,s,a)=>{if(n&&n.type!==8&&(n={type:8,value:[[n]]}),s&&a){let o=n.value[a-1];if(o){let l=o[s-1];if(l)return l}}else if(s){let o=[];for(let l of n.value){if(!l[s-1])return W();o.push([l[s-1]])}return{type:8,value:o}}else if(a){let o=n.value[a-1];if(o)return{type:8,value:[o]}}return W()}},Rows:{arguments:[{name:"reference",description:"Array or reference"}],volatile:!1,fn:n=>{if(!n)return W();if(Array.isArray(n)){let s=n[0];return Array.isArray(s)?{type:3,value:s.length}:z()}return{type:3,value:1}}},Columns:{arguments:[{name:"reference",description:"Array or reference"}],volatile:!1,fn:n=>n?Array.isArray(n)?{type:3,value:n.length}:{type:3,value:1}:W()},IsFormula:{description:"Returns true if the reference is a formula",arguments:[{name:"Reference",metadata:!0}],fn:V(n=>{let s=this.model.sheets.Find(n?.value?.address?.sheet_id||0);if(s){let a=s.cells.GetCell(n.value.address,!1);return{type:4,value:a?.type===1}}return{type:4,value:!1}})}})}ExportCalculatedValues(){let t={};for(let r of this.model.sheets.list){let i=r.cells.toJSON({calculated_value:!0}).data;t[r.id]=i.filter(n=>n.calculated!==void 0)}return t}ApplyCalculatedValues(t){for(let r of this.model.sheets.list){let i=t[r.id];if(!i)console.info("mismatch",r.id);else for(let n of i)r.cells.data[n.row][n.column].SetCalculatedValue(n.calculated)}}SpreadCallback(t,r){if(!t.address||!t.address.sheet_id)throw new Error("spread callback called without sheet id");let i=this.model.sheets.Find(t.address.sheet_id)?.cells;if(!i)throw new Error("spread callback called without cells");if(!t||!t.reference)return;let n=t.reference.area;if(n){let s=n.rows,a=n.columns;if(r.type===8){let o=Xt(r.value);for(let l=0;l<s;l++)if(o[l]){let c=0;for(;c<a&&c<o[l].length;c++)i.data[l+n.start.row][c+n.start.column].SetCalculatedValue(o[l][c].value,o[l][c].type);for(;c<a;c++)i.data[l+n.start.row][c+n.start.column].SetCalculatedValue(void 0,0)}else for(let c=0;c<a;c++)i.data[l+n.start.row][c+n.start.column].SetCalculatedValue(void 0,0)}else for(let o=0;o<s;o++)for(let l=0;l<a;l++)i.data[o+n.start.row][l+n.start.column].SetCalculatedValue(r.value,r.type)}}CalculationCallback(t){if(!t.address)throw new Error("vertex missing address");return t.expression_error?{value:Zt()}:this.expression_calculator.Calculate(t.expression,t.address)}DynamicDependencies(t,r,i=!1,n=0,s=0,a=1,o=1){let l=this.ResolveExpressionAddress(t,r);if(!l)return;let c=!1,h;if(t.type==="address"||t.type==="range"){let m=t.type==="range"?t.start:t;m.sheet_id?h=this.model.sheets.Find(m.sheet_id):m.sheet&&(h=this.model.sheets.Find(m.sheet))}if(!h&&r?.sheet_id&&(h=this.model.sheets.Find(r.sheet_id)),!h)throw new Error("missing sheet in dynamic dependencies [b21]");l=h.RealArea(l);let u=l.start.sheet_id;i&&(l=new v({column:l.start.column+s,row:l.start.row+n,sheet_id:l.start.sheet_id},{column:l.start.column+s+a-1,row:l.start.row+n+o-1,sheet_id:l.end.sheet_id}));for(let m=l.start.row;m<=l.end.row;m++)for(let f=l.start.column;f<=l.end.column;f++){let b=this.GetVertex({row:m,column:f,sheet_id:u},!1);b&&b.dirty&&(this.AddEdge({row:m,column:f,sheet_id:u},this.expression_calculator.context.address),c=!0)}return{dirty:c,area:l}}UpdateLocale(){T.decimal_separator===","?(this.parser.decimal_mark=",",this.parser.argument_separator=";"):(this.parser.decimal_mark=".",this.parser.argument_separator=",")}SupportedFunctions(){let t=this.library.List(),r=Object.keys(t).map(i=>{let n=t[i].canonical_name;return n||(n=i.replace(/_/g,".")),{name:n,description:t[i].description,arguments:(t[i].arguments||[]).map(s=>({name:s.name||""}))}});for(let i of this.model.macro_functions.values())r.push({name:i.name,description:i.description,arguments:(i.argument_names||[]).map(n=>({name:n}))});return r}RegisterLibrary(t,r){return this.registered_libraries[t]?!1:(this.RegisterFunction(r),this.registered_libraries[t]=!0,!0)}RegisterFunction(t){for(let r of Object.keys(t)){let i=t[r],n=i.fn;i.fn=(...s)=>n.apply({address:{...this.expression_calculator.context.address}},s),this.library.Register({[r]:i})}}AttachModel(){this.expression_calculator.SetModel(this.model)}Calculate(t){if(this.AttachModel(),t&&!t.start.sheet_id)throw new Error("CalculateInternal called with subset w/out sheet ID");this.full_rebuild_required&&(t=void 0,this.UpdateAnnotations(),this.full_rebuild_required=!1),this.RebuildGraph(t);try{this.Recalculate()}catch(r){console.error(r),console.info("calculation error trapped")}}Reset(){this.FlushTree(),this.AttachModel(),this.full_rebuild_required=!0}DecoratedFunctionList(){let t={},r=this.library.List();for(let i of Object.keys(r)){let n=r[i];n.xlfn?t[i]="_xlfn":n.extension&&(t[i]="_xll")}return t}ResolveArea(t,r){let i=this.ResolveAddress(t,r);return L(i)?new v(i):new v(i.start,i.end)}ResolveAddress(t,r){if(typeof t=="string"){let i=this.parser.Parse(t);if(i.expression&&i.expression.type==="address")return this.ResolveSheetID(i.expression,void 0,r),{row:i.expression.row,column:i.expression.column,sheet_id:i.expression.sheet_id};if(i.expression&&i.expression.type==="range")return this.ResolveSheetID(i.expression,void 0,r),{start:{row:i.expression.start.row,column:i.expression.start.column,sheet_id:i.expression.start.sheet_id},end:{row:i.expression.end.row,column:i.expression.end.column}};if(i.expression&&i.expression.type==="identifier"){let n=this.model.named_ranges.Get(i.expression.name);if(n)return n}return{row:0,column:0}}return t}Evaluate(t,r,i={}){let n=this.parser.argument_separator,s=this.parser.flags.r1c1;i.argument_separator&&(i.argument_separator===","?(this.parser.argument_separator=",",this.parser.decimal_mark="."):(this.parser.argument_separator=";",this.parser.decimal_mark=",")),i.r1c1&&(this.parser.flags.r1c1=i.r1c1);let a=this.parser.Parse(t);if(this.parser.argument_separator=n,this.parser.decimal_mark=n===","?".":",",this.parser.flags.r1c1=s,a&&a.expression){this.parser.Walk(a.expression,l=>{if(l.type==="address"||l.type==="range"){if(l.type==="address"){if(l.offset_column||l.offset_row)throw new Error("Evaluate does not support offset references")}else if(l.start.offset_column||l.start.offset_row||l.end.offset_column||l.end.offset_row)throw new Error("Evaluate does not support offset references");this.ResolveSheetID(l,void 0,r)}return!0});let o=this.CalculateExpression(a.expression);return o.type===8?o.value.map(l=>l.map(c=>c.value)):o.value}throw a.error?new Error(a.error):new Error("invalid expression")}CalculateExpression(t,r={row:-1,column:-1},i=!1){return this.expression_calculator.Calculate(t,r,i).value}RebuildClean(t=!1){this.full_rebuild_required=!1,this.AttachModel(),this.RebuildGraph(),this.UpdateAnnotations(),this.InitializeGraph(),t&&this.volatile_list.length&&this.Recalculate()}FlattenCellList(t){let r={},i=[];for(let n of t){let s={column:n.column,row:n.row,sheet_id:n.sheet_id},a=v.CellAddressToLabel(s,!0);r[a]||(r[a]=a,i.push(s))}return i}RemoveAnnotation(t){let r=t.temp.vertex;r&&(r.Reset(),this.RemoveLeafVertex(r))}UpdateAnnotations(t,r){if(!t){for(let i of this.model.sheets.list)this.UpdateAnnotations(i.annotations,i);return}if(!r)throw new Error("invalid call to UpdateAnnotations with list but no sheet");typeof t<"u"&&!Array.isArray(t)&&(t=[t]);for(let i of t)if(i.data.formula){i.temp.vertex||(i.temp.vertex=new Ke);let n=i.temp.vertex;this.AddLeafVertex(n),this.UpdateLeafVertex(n,i.data.formula,r)}}ResolveSheetID(t,r,i){let n=t.type==="address"?t:t.start;if(n.sheet_id)return!0;if(n.sheet){let s=this.model.sheets.Find(n.sheet);if(s)return n.sheet_id=s.id,!0}else{if(r?.sheet_id)return n.sheet_id=r.sheet_id,!0;if(i?.id)return n.sheet_id=i.id,!0}return!1}ResolveExpressionAddress(t,r){switch(t.type){case"address":if(this.ResolveSheetID(t,r))return new v(t);break;case"range":if(this.ResolveSheetID(t,r))return new v(t.start,t.end);break;case"identifier":{let i=this.model.named_ranges.Get(t.name.toUpperCase());if(i)return new v(i.start,i.end)}break}}NamedRangeToAddressUnit(t){let r=t.name.toUpperCase(),i=this.model.named_ranges.Get(r);if(i)return i.count===1?this.ConstructAddressUnit(i.start,r,t.id,t.position):{type:"range",start:this.ConstructAddressUnit(i.start,r,t.id,t.position),end:this.ConstructAddressUnit(i.end,r,t.id,t.position),label:r,id:t.id,position:t.position}}ConstructAddressUnit(t,r,i,n){return{type:"address",row:t.row,column:t.column,sheet_id:t.sheet_id,label:r,id:i,position:n}}RebuildDependencies(t,r,i,n={addresses:{},ranges:{}},s){if(!i){let a=this.model.sheets.Find(r);a&&(i=a.name)}switch(t.type){case"literal":case"missing":case"operator":break;case"identifier":{let a=t.name.toUpperCase();if(this.model.named_expressions.has(a)){let o=this.model.named_expressions.get(a);o&&this.RebuildDependencies(o,r,i,n,s)}else{let o=this.NamedRangeToAddressUnit(t);o&&(o.type==="address"?n.addresses[o.label]=o:n.ranges[o.label]=o)}}break;case"structured-reference":{let a=this.model.ResolveStructuredReference(t,s);a&&(a.type==="address"?n.addresses[a.sheet_id+"!"+a.label]=a:n.ranges[a.label]=a);let o=this.model.tables.get(t.table.toLowerCase());if(o){let l=s.row;if(l<o.area.start.row||l>o.area.end.row)break;let c=t.column.toLowerCase(),h=-1;if(o.columns){for(let u=0;u<o.columns.length;u++)if(c===o.columns[u]){h=o.area.start.column+u;break}}if(h>=0){let u={label:t.label,type:"address",row:l,column:h,sheet_id:o.area.start.sheet_id,id:t.id,position:t.position};n.addresses[u.sheet_id+"!"+u.label]=u}}}break;case"address":if(!t.sheet_id)if(t.sheet){let a=this.model.sheets.Find(t.sheet);a&&(t.sheet_id=a.id)}else t.sheet_id=r,t.sheet=i;t.sheet_id?n.addresses[t.sheet_id+"!"+t.label]=t:console.warn("invalid address in range [9d]");break;case"range":if(!t.start.sheet_id)if(t.start.sheet){let a=this.model.sheets.Find(t.start.sheet);a&&(t.start.sheet_id=a.id)}else t.start.sheet_id=r,t.start.sheet=i;t.start.sheet_id?n.ranges[t.start.sheet_id+"!"+t.start.label+":"+t.end.label]=t:console.warn("invalid sheet in range",t);break;case"unary":this.RebuildDependencies(t.operand,r,i,n,s);break;case"binary":this.RebuildDependencies(t.left,r,i,n,s),this.RebuildDependencies(t.right,r,i,n,s);break;case"group":t.elements.forEach(a=>this.RebuildDependencies(a,r,i,n,s));break;case"call":{let a=t.args.slice(0),o=this.library.Get(t.name);o&&o.arguments&&o.arguments.forEach((l,c)=>{l&&l.address&&(this.RebuildDependencies(a[c],r,i,void 0,s),a[c]={type:"missing",id:-1})}),a.forEach(l=>this.RebuildDependencies(l,r,i,n,s))}break}return n}UpdateLeafVertex(t,r,i){t.Reset();let n=this.parser.Parse(r);if(n.expression){let s=this.RebuildDependencies(n.expression,i.id,i.name,void 0,{row:0,column:0});for(let a of Object.keys(s.ranges)){let o=s.ranges[a];new v(o.start,o.end).Iterate(c=>{this.AddLeafVertexEdge(c,t)})}for(let a of Object.keys(s.addresses)){let o=s.addresses[a];this.AddLeafVertexEdge(o,t)}}t.expression=n.expression||{type:"missing",id:-1},t.expression_error=!n.valid}RebuildGraphCell(t,r){if(t.area&&t.area.start.column===r.column&&t.area.start.row===r.row){let{start:i,end:n}=t.area,s=i.sheet_id||r.sheet_id;i.sheet_id||(i.sheet_id=s);for(let a=i.column;a<=n.column;a++)for(let o=i.row;o<=n.row;o++)this.ResetInbound({column:a,row:o,sheet_id:s},!0,!1);this.SetDirty(r);for(let a=i.column;a<=n.column;a++)for(let o=i.row;o<=n.row;o++)o===i.row&&a===i.column||this.AddEdge(i,{...i,row:o,column:a})}if(t.type===1){this.ResetInbound(r,!0);let i=this.parser.Parse(t.value);if(i.expression){if(i.expression.type==="call"){let a=this.library.Get(i.expression.name);a&&(a.render||a.click)&&(t.render_function=a.render,t.click_function=a.click)}let s=this.RebuildDependencies(i.expression,r.sheet_id,"",void 0,r);for(let a of Object.keys(s.ranges)){let o=s.ranges[a],l=new v(o.start,o.end);l.entire_row||l.entire_column?this.AddArrayEdge(l,r):l.Iterate(c=>this.AddEdge(c,r))}for(let a of Object.keys(s.addresses)){let o=s.addresses[a];this.AddEdge(o,r)}}let n=this.GetVertex(r,!0);n&&(n.expression=i.expression||{type:"missing",id:-1},n.expression_error=!i.valid)}else t.value!==t.calculated?this.ResetInbound(r,!0,!1):t.type===0&&this.ResetInbound(r,!0,!1,!0)}RebuildGraph(t){if(t){if(!t.start.sheet_id)throw new Error("subset missing sheet id");let r=this.model.sheets.Find(t.start.sheet_id)?.cells;if(r)for(let i=t.start.row;i<=t.end.row;i++){let n=r.data[i];if(n)for(let s=t.start.column;s<=t.end.column;s++){let a=n[s];a&&this.RebuildGraphCell(a,{row:i,column:s,sheet_id:t.start.sheet_id})}}}else for(let r of this.model.sheets.list||[]){let i=r.cells.data.length;for(let n=0;n<i;n++){let s=r.cells.data[n];if(s){let a=s.length;for(let o=0;o<a;o++){let l=s[o];l&&this.RebuildGraphCell(l,{row:n,column:o,sheet_id:r.id})}}}}}IsNativeOrTypedArray(t){return Array.isArray(t)||t instanceof Float64Array||t instanceof Float32Array}CheckVolatile(t){if(!t.expression||t.expression_error)return!1;let r=!1;return this.parser.Walk(t.expression,i=>{if(i.type==="call"){let n=this.library.Get(i.name);n&&n.volatile&&(r=!0)}return!r}),r}};var er=class{constructor(e){this.model={};this.visible_=!1;this.timeout=0;this.pending_dialog_resoltion=[];this.options_={type:"initial"};this.event_handler=e=>{(e.key==="Escape"||e.key==="Esc")&&(e.stopPropagation(),e.preventDefault(),this.visible=!1)};this.layout_element=e.parentElement;let t=this.layout_element?.querySelector(".treb-dialog-mask");if(t){let r=t.querySelectorAll("[data-bind]");for(let i of Array.from(r)){let n=i.dataset.bind;n&&(this.model[n]=i)}}if(this.model.about){let r=["<div>TREB version 26.0.3"];r.push("<small><a target=_blank href='https://treb.app'>http://treb.app</a></small>"),this.model.about.innerHTML=r.join(`
11
+ `)}this.model.close?.addEventListener("click",r=>{r.stopPropagation(),r.preventDefault(),this.HideDialog()})}set options(e){if(e.type==="about"&&(e.close_box=!0,e.icon=!0),this.options_.icon!==e.icon&&(this.model.left.style.display=e.icon?"block":"none"),this.options_.close_box!==e.close_box&&(this.model.close.style.display=e.close_box?"block":"none"),this.options_.message!==e.message&&(this.model.message.textContent=e.message||"",this.model.message.style.display=e.message?"block":"none"),this.options_.title!==e.title&&(this.model.title.textContent=e.title||"",this.model.title.style.display=e.title?"block":"none"),this.options_.type!==e.type){let t=this.model.dialog.className.replace(/dialog-type-\S+/g,"").trim();e.type&&(t+=` dialog-type-${e.type}`),this.model.dialog.className=t,e.type==="about"?this.model.about.style.display="block":this.model.about.style.display="none"}this.options_=e}get visible(){return this.visible_}set visible(e){if(e!==this.visible_)if(this.visible_=e,e)this.layout_element?.setAttribute("dialog",""),window.addEventListener("keydown",this.event_handler);else{this.layout_element?.removeAttribute("dialog"),window.removeEventListener("keydown",this.event_handler);let t=this.pending_dialog_resoltion.slice(0);this.pending_dialog_resoltion=[],Promise.resolve().then(()=>{for(let r of t)r()})}}Update(e,t=!0){t&&(e={...this.options_,...e}),this.options=e}HideDialog(){this.visible=!1}ShowDialog(e){return new Promise(t=>{this.pending_dialog_resoltion.push(t),this.options=e,this.visible=!0,this.timeout&&(window.clearTimeout(this.timeout),this.timeout=0),e.timeout&&(this.timeout=window.setTimeout(()=>this.HideDialog(),e.timeout))})}};var tr=class{constructor(e){this.container=e;this.visible=!1;this.node=document.createElement("div"),this.node.classList.add("treb-spinner"),this.node.innerHTML="<div><div></div><div></div><div></div><div></div></div>",e.appendChild(this.node)}Show(){this.node.classList.add("visible")}Hide(){this.node.classList.remove("visible")}};var qi={formula_bar:!0,in_cell_editor:!0,undo:!0,scrollbars:!0,headers:!0,export:!0,tab_bar:"auto",resizable:!0,hyperlinks:"_blank",max_file_size:94208,tint_theme_colors:!0,dnd:!1,add_tab:!1,expand_formula_button:!1,expand:!0,markdown:!1,spinner:!1,complex:"off"};var Ie=class{constructor(e=0,t=0,r=100,i=100){this.left=e;this.top=t;this.right=r;this.bottom=i}get width(){return this.right-this.left}get height(){return this.bottom-this.top}get center(){return{x:this.left+this.width/2,y:this.top+this.height/2}}};var yt="http://www.w3.org/2000/svg",I=(d,e={},t)=>{let r=document.createElementNS(yt,d);for(let i of Object.keys(e))if(e[i]!==void 0){let n=e[i];r.setAttribute(i,Array.isArray(n)?n.join(" "):n.toString())}return t&&(r.textContent=t),r},rr=class{constructor(){this.size={width:0,height:0};this.bounds=new Ie;this.container_group=I("g"),this.group=I("g"),this.axis_group=I("g",{class:"axis-group"}),this.label_group=I("g",{class:"label-group"}),this.container_group.appendChild(this.axis_group),this.container_group.appendChild(this.group),this.container_group.appendChild(this.label_group)}Initialize(e){this.parent=e,this.svg_node=I("svg",{class:"treb-chart"}),this.svg_node.style.overflow="hidden",this.svg_node.style.position="relative",this.svg_node.style.width="100%",this.svg_node.style.height="100%",this.svg_node.appendChild(this.container_group),this.parent.appendChild(this.svg_node),this.Resize()}Legend(e){let t=I("g");this.group.appendChild(t);let r=I("text");t.appendChild(r),t.setAttribute("class","legend");let i=[[]],n=10,s=e.area.width,a=0,o=0,l=e.area.width,c=e.style===1?14:26,h=e.labels.map((p,g)=>{r.textContent=p.label;let _=r.getBoundingClientRect(),y={width:_.width,height:_.height},x=y.width+c+n;return o=Math.max(o,y.height),e.layout===1?i[g]=[g]:x>s?i[a].length===0?(i[a].push(g),a++,i[a]=[],s=l):(a++,i[a]=[g],s=l-x):(i[a].push(g),s-=x),y});t.removeChild(r);let u=o,m=e.layout||0;m===0&&i.every(p=>p.length<=1)&&(m=0);for(let p=0;p<i.length;p++){let g=i[p].reduce((x,w)=>x+h[w].width+c,(i[p].length-1)*n),_=0,y=m===0?Math.round((l-g)/2):Math.round(n/2);for(let x=0;x<i[p].length;x++){let w=i[p][x],A=h[w],S=e.labels[w],E=u-1,F=!1;typeof navigator<"u"&&(F=/trident/i.test(navigator?.userAgent||""));let $=typeof S.index=="number"?S.index:w+1;t.appendChild(I("text",{"dominant-baseline":"middle",x:y+c,y:u,dy:F?".3em":void 0},S.label)),e.style===1?t.appendChild(I("rect",{class:`series-${$}`,x:y,y:E-4,width:8,height:8})):t.appendChild(I("rect",{class:`series-${$}`,x:y,y:E-1,width:c-3,height:2})),_=Math.max(_,A.height),y+=A.width+c+n}u=Math.round(u+_*1.1)}let f=t.getBoundingClientRect(),b={width:f.width,height:f.height+o};switch(e.position){case 1:t.setAttribute("transform",`translate(${e.area.left}, ${e.area.bottom-b.height})`);break;case 2:t.setAttribute("transform",`translate(${e.area.left}, ${e.area.top})`);break;case 3:t.setAttribute("transform",`translate(${e.area.right-b.width}, ${e.area.top})`);break;case 0:default:t.setAttribute("transform",`translate(${e.area.left}, ${e.area.top})`)}e.position===0?e.area.top+=b.height||0:e.position===3?e.area.right-=(b.width||0)+8:e.position===2?e.area.left+=(b.width||0)+8:e.area.bottom-=b.height||0}Clear(e){this.group.textContent="",this.axis_group.textContent="",this.label_group.textContent="",e="treb-chart"+(e?" "+e:""),this.svg_node.setAttribute("class",e)}Resize(){let e=this.parent.getBoundingClientRect();this.svg_node.setAttribute("width",e.width.toString()),this.svg_node.setAttribute("height",e.height.toString()),this.size={width:e.width,height:e.height}}Prerender(){let e=this.svg_node.getBoundingClientRect();this.bounds.top=e.top,this.bounds.left=e.left,this.bounds.right=e.right,this.bounds.bottom=e.bottom}RenderTitle(e,t,r,i){let n=I("text",{class:"chart-title",x:Math.round(t.width/2)},e);n.style.textAnchor="middle",this.group.appendChild(n);let s=n.getBoundingClientRect();switch(i){case"bottom":n.setAttribute("y",Math.round(t.bottom-s.height).toString()),t.bottom-=s.height+r;break;default:n.setAttribute("y",Math.round(t.top+r+s.height).toString()),t.top+=s.height+r;break}}MeasureText(e,t,r=!1){this.text_measurement_node||(this.text_measurement_node=I("text",{x:"-100px",y:"-100px"}),this.svg_node.appendChild(this.text_measurement_node)),typeof t<"u"?(typeof t=="string"&&(t=[t]),this.text_measurement_node.setAttribute("class",t.join(" "))):this.text_measurement_node.setAttribute("class",""),this.text_measurement_node.textContent=e;let i=this.text_measurement_node.getBoundingClientRect(),n={width:i.width,height:i.height,y_offset:i.height-(this.bounds.top-i.top-100)};return r&&(n.width=Math.ceil(n.width),n.height=Math.ceil(n.height),n.y_offset=Math.ceil(n.y_offset)),n}RenderTicks(e,t,r,i,n){let s=[],a=e.width/i;for(let o=0;o<i;o++){let l=Math.round(e.left+a/2+a*o)-.5;s.push(`M${l} ${t} L${l} ${r}`)}this.group.appendChild(I("path",{d:s,class:n}))}RenderXAxisBar(e,t,r,i,n){let s=r.length;if(!s)return;let a=4,o=t?e.width/s:e.width/(s-1),l=t?o/2:0,c=1,h=!0;for(;h;){h=!1;let u=0;for(let m=0;m<s;m+=c){let f=Math.round(e.left+l+o*m),b=f-i[m].width/2;if(u&&b<=u){c++,h=!0;break}u=f+i[m].width/2+a}}for(let u=0;u<s;u+=c){let m=Math.round(e.left+l+o*u);this.RenderText(this.axis_group,r[u],"center",{x:m,y:e.bottom},n)}}RenderXAxisTicks(e,t,r){let i=t?e.width/r:e.width/(r-1),n=t?i/2:0,s=[];for(let a=0;a<r;a++){let o=Math.round(e.left+n+i*a)+.5;s.push(`M${o},${e.bottom+.5} v6`)}this.axis_group.appendChild(I("path",{d:s.join(" "),class:"x-axis-tick axis-tick"}))}RenderXAxis(e,t,r,i,n){let s=r.length;if(!s)return;let a=4,o=t?e.width/s:e.width/(s-1),l=t?o/2:0,c=1,h=!0,u=(r.length-1)%2===0,m=(r.length-1)%3===0;for(;h;){h=!1;let f=0;for(let b=0;b<s;b+=c){let p=Math.round(e.left+l+o*b),g=p-i[b].width/2;if(f&&g<=f){c++,h=!0;break}f=p+i[b].width/2+a}}c===3&&!m&&u&&c++;for(let f=0;f<s;f+=c){let b=Math.round(e.left+l+o*f);this.RenderText(this.axis_group,r[f],"center",{x:b,y:e.bottom},n)}}RenderYAxisBar(e,t,r,i){r=r.slice(0),r.reverse();let n=r.length;if(!n)return;let s=e.height/n,a=1,o=!0;for(;o;){o=!1;let l=0;for(let c=0;c<n;c+=a){let h=r[c],u=Math.round(e.bottom-s*(c+.5)+h.metrics.height/4);if(l&&u>=l){a++,o=!0;break}l=u-h.metrics.height}}for(let l=0;l<n;l+=a){let c=r[l],h=Math.round(e.bottom-s*(l+.5)+c.metrics.height/4);this.RenderText(this.axis_group,c.label,"right",{x:t,y:h},i)}}RenderYAxis(e,t,r,i){let n=r.length;if(!n)return;let s=e.height/(n-1),a=1,o=!0;for(;o;){o=!1;let l=0;for(let c=0;c<n;c+=a){let h=r[c],u=Math.round(e.bottom-s*c+h.metrics.height/4);if(l&&u>=l){a++,o=!0;break}l=u-h.metrics.height}}for(let l=0;l<n;l+=a){let c=r[l],h=Math.round(e.bottom-s*l+c.metrics.height/4);this.RenderText(this.axis_group,c.label,"right",{x:t,y:h},i)}}LineProperties(e,t){let r=t.x-e.x,i=t.y-e.y;return{length:Math.sqrt(r*r+i*i),angle:Math.atan2(i,r)}}RenderSmoothLine(e,t,r=!1,i,n){let s=I("g"),a=[],o=[],l=t.length,c=l-1,h=e.width/l/2,u=[],m=t.map((p,g)=>{if(!(typeof p>"u"))return{x:Math.round(e.left+e.width/c*g),y:e.bottom-p}}),f=[],b=()=>{if(f.length<2)return;let p="",g=f[0],_=f[f.length-1];f.length===2?p=`${f[0].x},${f[0].y} L${f[1].x},${f[1].y}`:f.length>2&&(p=""+this.CatmullRomChain(f).map(x=>`${x.x},${x.y}`).join(" L")),p&&(a.push("M"+p),r&&(o.push(`M ${g.x},${e.bottom} L ${g.x},${g.y}`),o.push("L"+p),o.push(`L ${_.x},${e.bottom}`)))};for(let p of m)p?f.push(p):(b(),f=[]);if(f.length&&b(),r&&s.appendChild(I("path",{class:"fill",d:o})),s.appendChild(I("path",{class:"line",d:a})),typeof n<"u"&&(typeof n=="string"&&(n=[n]),s.setAttribute("class",n.join(" "))),this.group.appendChild(s),i&&u.length){let p=document.createElementNS(yt,"g");for(let g of u){let _=I("circle",{cx:g.x,cy:g.y,r:h});_.addEventListener("mouseenter",y=>{this.parent.setAttribute("title",i[g.i]||"")}),_.addEventListener("mouseleave",y=>{this.parent.setAttribute("title","")}),p.appendChild(_)}p.setAttribute("class","mouse-layer"),this.group.appendChild(p)}}RenderLine(e,t,r=!1,i,n){let s=document.createElementNS(yt,"g"),a=[],o=[],l=t.length,c=l-1,h=e.width/l/2,u=[],m=0,f=!0,b;for(;m<l;m++){let p=t[m];if(typeof p>"u"){f=!0,r&&typeof b<"u"&&o.push(`L${b} ${e.bottom}Z`),b=void 0;continue}let g=Math.round(+e.left+e.width/c*m);f?(r&&o.push(`M${g} ${e.bottom} L${g} ${e.bottom-p}`),a.push(`M${g} ${e.bottom-p}`)):(a.push(`L${g} ${e.bottom-p}`),o.push(`L${g} ${e.bottom-p}`)),u.push({x:g,y:e.bottom-p,i:m}),b=g,f=!1}if(r&&typeof b<"u"&&o.push(`L${b} ${e.bottom}Z`),r&&s.appendChild(I("path",{class:"fill",d:o})),s.appendChild(I("path",{class:"line",d:a})),typeof n<"u"&&(typeof n=="string"&&(n=[n]),s.setAttribute("class",n.join(" "))),this.group.appendChild(s),i&&u.length){let p=document.createElementNS(yt,"g");for(let g of u){let _=I("circle",{cx:g.x,cy:g.y,r:h});_.addEventListener("mouseenter",y=>{this.parent.setAttribute("title",i[g.i]||"")}),_.addEventListener("mouseleave",y=>{this.parent.setAttribute("title","")}),p.appendChild(_)}p.setAttribute("class","mouse-layer"),this.group.appendChild(p)}}RenderBarGrid(e,t,r){let i=[],n=e.width/t;for(let s=0;s<=t;s++){let a=Math.round(e.left+n*s)-.5;i.push(`M${a} ${e.top} L${a} ${e.bottom}`)}this.group.appendChild(I("path",{d:i,class:r}))}RenderGrid(e,t,r=0,i){let n=[],s=e.height/t;for(let a=0;a<=t;a++){let o=Math.round(e.top+s*a)-.5;n.push(`M${e.left} ${o} L${e.right} ${o}`)}s=e.width/(r-1);for(let a=0;a<r;a++){let o=Math.round(e.left+s*a)-.5;n.push(`M${o} ${e.top} L${o} ${e.bottom}`)}this.group.appendChild(I("path",{d:n,class:i}))}MultiplyPoint(e,t){return{x:e.x*t,y:e.y*t}}AddPoints(e,t){return{x:e.x+t.x,y:e.y+t.y}}CatmullRomSpline(e,t){let r=.5;r=r/2;let i=(h,u,m)=>{let{x:f,y:b}=u,{x:p,y:g}=m;return((p-f)**2+(g-b)**2)**r+h},n=0,s=i(n,e[0],e[1]),a=i(s,e[1],e[2]),o=i(a,e[2],e[3]),l=(a-s)/t,c=[];for(let h=0;h<t;h++){let u=s+l*h,m=this.AddPoints(this.MultiplyPoint(e[0],(s-u)/(s-n)),this.MultiplyPoint(e[1],(u-n)/(s-n))),f=this.AddPoints(this.MultiplyPoint(e[1],(a-u)/(a-s)),this.MultiplyPoint(e[2],(u-s)/(a-s))),b=this.AddPoints(this.MultiplyPoint(e[2],(o-u)/(o-a)),this.MultiplyPoint(e[3],(u-a)/(o-a))),p=this.AddPoints(this.MultiplyPoint(m,(a-u)/(a-n)),this.MultiplyPoint(f,(u-n)/(a-n))),g=this.AddPoints(this.MultiplyPoint(f,(o-u)/(o-s)),this.MultiplyPoint(b,(u-s)/(o-s))),_=this.AddPoints(this.MultiplyPoint(p,(a-u)/(a-s)),this.MultiplyPoint(g,(u-s)/(a-s)));c.push(_)}return c}CatmullRomChain(e,t=30){let r=e.slice(0),i=[],n=r.length;if(n){let s=r[n-1].x-r[n-2].x,a=r[n-1].y-r[n-2].y;r.push({x:r[n-1].x+s,y:r[n-1].y+a}),r.push({x:r[n-1].x+s,y:r[n-1].y+a}),s=r[1].x-r[0].x,a=r[1].y-r[0].y,r.unshift({x:r[0].x-s,y:r[0].y-a});for(let o=0;o<r.length-4;o++){let l=r.slice(o,o+4),c=this.CatmullRomSpline(l,t);i.push(...c)}}return i}RenderDataLabels(e,t,r,i,n,s,a){let o=Math.max(t.length,r.length),l=i.max-i.min||1,c=n.max-n.min||1;for(let h=0;h<o;h++){let u=t[h],m=r[h];if(u!==void 0&&m!==void 0){let f={x:e.left+(u-i.min)/l*e.width,y:e.bottom-(m-n.min)/c*e.height},b=s[h];if(b){this.label_group.appendChild(I("circle",{class:"label-target",cx:f.x,cy:f.y,r:10}));let p=I("g",{class:"data-label",transform:`translate(${f.x+10},${f.y})`});this.label_group.appendChild(p);let g=I("circle",{cx:-10,y:0,r:5,class:`marker-highlight series-${a}`});p.appendChild(g);let _=I("text",{x:4,y:0},b);p.appendChild(_);let y=_.getBoundingClientRect(),x=y.height,w=y.width+8;w+15+f.x>=e.right&&(p.setAttribute("transform",`translate(${f.x-w-15},${f.y})`),g.setAttribute("cx",(w+15).toString()));let A=I("path",{d:`M0,5 h${w} v-${x} h-${w} Z`});p.insertBefore(A,_)}}}}RenderScatterSeries(e,t,r,i,n,s=!0,a=!1,o=!1,l=!1,c=!1,h){let u=Math.max(t.length,r.length),m=i.max-i.min||1,f=n.max-n.min||1,b=[],p=[],g=[],_=I("g",{class:h});this.group.appendChild(_);for(let y=0;y<u;y++){let x=t[y],w=r[y];typeof x>"u"||typeof w>"u"?b.push(void 0):b.push({x:e.left+(x-i.min)/m*e.width,y:e.bottom-(w-n.min)/f*e.height})}if(s){let y=[],x=c?()=>y.length===2?`${y[0].x},${y[0].y} L${y[1].x},${y[1].y}`:y.length>2?this.CatmullRomChain(y).map(A=>`${A.x},${A.y}`).join(" L"):"":()=>y.map(w=>`${w.x},${w.y}`).join(" L");for(let w of b)if(w)y.push(w);else{if(y.length>=2){let A=x();p.push("M"+A),g.push(`M${y[0].x},${e.bottom}L`+A+`L${y[y.length-1].x},${e.bottom}Z`)}y=[]}if(y.length>=2){let w=x();p.push("M"+w),g.push(`M${y[0].x},${e.bottom}L`+w+`L${y[y.length-1].x},${e.bottom}Z`)}}if(o&&_.appendChild(I("path",{d:g,class:"fill"})),s&&_.appendChild(I("path",{d:p,class:"line"})),a)for(let y of b)y&&_.appendChild(I("circle",{cx:y.x,cy:y.y,r:1,class:"point"}));if(l)for(let y of b)y&&_.appendChild(I("circle",{cx:y.x,cy:y.y,r:3,class:"marker"}))}RenderPoints(e,t,r,i){let n=[];for(let s=0;s<t.length;s++){let a=t[s]*e.width+e.left,o=e.bottom-r[s]*e.height;n.push(`M${a-1},${o-1} L${a+1},${o+1}`),n.push(`M${a-1},${o+1} L${a+1},${o-1}`)}this.group.appendChild(I("path",{d:n,class:i}))}RenderPoint(e,t,r){this.group.appendChild(I("circle",{cx:e,cy:t,r:1,class:r}))}RenderCalloutLines(e){let t=I("g",{class:"callouts"});this.label_group.appendChild(t);for(let r of e)t.appendChild(I("path",{d:`M${r.x1},${r.y1} L${r.x2},${r.y2}`,class:"callout "+(r.classes||"").trim()}))}RenderRectangle(e,t,r,i,n,s){let a="";if(t)if(t[0]&&t[0]===t[1]&&t[0]>=e.height){let l=t[0],c=t[0]-e.height,h=Math.sqrt(l*l-c*c);a=`M${e.left+e.width/2-h},${e.bottom} a${l},${l} 0 0 1 ${h*2},0 z`}else if(t[1]&&t[1]===t[2]&&t[1]>=e.width){let l=t[1],c=t[1]-e.width,h=Math.sqrt(l*l-c*c);a=`M${e.left},${e.top+e.height/2-h} a${l},${l} 0 0 1 0,${h*2} z`}else a=`M${e.left},${e.top+t[0]} a${t[0]},${t[0]} 0 0 1 ${t[0]},${-t[0]} h${e.width-t[0]-t[1]} a${t[1]},${t[1]} 0 0 1 ${t[1]},${t[1]} v${e.height-t[1]-t[2]} a${t[2]},${t[2]} 0 0 1 ${-t[2]},${t[2]} h${-e.width+t[2]+t[3]} a${t[3]},${t[3]} 0 0 1 ${-t[3]},${-t[3]} v${-e.height+t[3]+t[0]} `;else a=`M${e.left},${e.top} h${e.width} v${e.height} h${-e.width} v${-e.height} `;let o=I("path",{d:a,class:r});if(i&&(o.addEventListener("mouseenter",l=>{this.parent.setAttribute("title",i)}),o.addEventListener("mouseleave",l=>{this.parent.setAttribute("title","")})),this.group.appendChild(o),n){this.label_group.appendChild(I("path",{class:"label-target",d:a}));let l=s||{x:Math.round(e.left+e.width/2),y:Math.round(e.top-10)},c=I("g",{class:"data-label",transform:`translate(${l.x},${l.y})`});this.label_group.appendChild(c);let h=I("text",{x:0,y:0},n);c.appendChild(h);let u=h.getBoundingClientRect(),m=u.height,f=u.width+8;l.y-u.height<4&&(l.y-=l.y-u.height-4,c.setAttribute("transform",`translate(${l.x},${l.y})`)),h.setAttribute("x",Math.floor(-u.width/2).toString());let b=Math.ceil(m*.125),p=I("rect",{rx:3,x:-f/2,y:Math.round(-m+b*2/3),width:f,height:m+b});c.insertBefore(p,h)}}RenderText(e,t,r,i,n){let s=I("text",{x:i.x,y:i.y,class:n},t);switch(r){case"right":s.style.textAnchor="end";break;case"center":s.style.textAnchor="middle";break;default:s.style.textAnchor="start";break}(e||this.group).appendChild(s)}RenderDonut(e,t,r,i,n,s,a){let o=-Math.PI/2,l=0;s&&(r*=.8,i*=.7);let c=(h,u,m)=>[Math.cos(m)*u+h.x,Math.sin(m)*u+h.y];for(let h of e){let u=h.title||"",m=h.percent,f=h.index,b=[],p=0,g=c.bind(0,t,r),_=c.bind(0,t,i);if(m>.5){p=o+m/2*Math.PI*2,l=o+m*Math.PI*2;let w=p-o,A=l-p;b.push(`M${g(o)}`,`A${r},${r},${w},0,1,${g(p)}`,`A${r},${r},${A},0,1,${g(l)}`,`L${_(l)}`,`A${i},${i},${A},0,0,${_(p)}`,`A${i},${i},${w},0,0,${_(o)}`,"Z")}else{l=o+m*Math.PI*2,p=(l-o)/2+o;let w=l-o;b.push(`M${g(o)}`,`A${r},${r},${w},0,1,${g(l)}`,`L${_(l)}`,`A${i},${i},${w},0,0,${_(o)}`,"Z")}let y=I("path",{d:b,class:typeof f>"u"?void 0:`series-${f}`});typeof f<"u"&&y.setAttribute("data-index",f.toString());let x=I("g",{class:a});if(x.appendChild(y),this.group.appendChild(x),m>=.05&&u){let w=r-i;b=[];let A=c(t,i+(r-i)/2+w,p);b.push(`M${c(t,i+(r-i)/2,p)}`),b.push(`L${A}`),x.appendChild(I("path",{d:b,class:"callout"}));let S=[],E=I("text",{class:"callout-label"});x.appendChild(E);let F=p+Math.PI/2,$=u;E.textContent=$;let te=E.getBoundingClientRect(),me={width:te.width,height:te.height},[ie,C]=A;ie+=me.height/2*Math.cos(p),C+=me.height/4+me.height/2*Math.sin(p);let K=!1;F>Math.PI?ie-me.width<=n.left&&(K=!0):ie+me.width>n.right&&(K=!0);let ne=/[\s-]/;if(K&&ne.test($)){let J=-1,X=1,Q=[];for(let N=0;N<$.length;N++)if(ne.test($[N])){let B=Math.abs(.5-N/$.length);B<X&&(X=B,J=N)}J>0&&(S.push($.substr(0,J+1).trim()),S.push($.substr(J+1).trim()))}if(S.length){let J=0,X=0,Q=S.map(N=>{E.textContent=N,te=E.getBoundingClientRect();let B={width:te.width,height:te.height};return X=Math.max(X,B.width),{text:N,metrics:B}});E.textContent="";for(let N of Q){let B=document.createElementNS(yt,"tspan");B.textContent=N.text;let rn=F>Math.PI?ie-(X-N.metrics.width)/2:ie+(X-N.metrics.width)/2;B.setAttribute("x",rn.toString()),B.setAttribute("dy",J.toString()),E.appendChild(B),J=N.metrics.height}}let se=F>Math.PI?"end":"start";E.setAttribute("text-anchor",se),E.setAttribute("x",ie.toString()),E.setAttribute("y",C.toString()),typeof f<"u"&&E.setAttribute("data-index",f.toString())}o=l}}};var P=class{static Scale(e,t,r=6.5){return di(e,t,r)}static Range(e){let t,r;for(let n of e)typeof n>"u"||((typeof t>"u"||t>n)&&(t=n),(typeof r>"u"||r<n)&&(r=n));let i=typeof t>"u"||typeof r>"u"?0:r-t;return{min:t,max:r,range:i}}static ApplyScale(e,t,r){return t*(e-r.min)/(r.max-r.min)}static Flatten(e){let t=[];if(Array.isArray(e))for(let r of e)Array.isArray(r)?t=t.concat(this.Flatten(r)):t.push(r);else typeof e<"u"&&t.push(e);return t}};var Yr="#,##0.00",et=class{constructor(e=new rr){this.renderer=e;this.chart_data={type:"null"};this.margin={top:.025,left:.05,bottom:.025,right:.075}}Initialize(e){this.renderer.Initialize(e)}Exec(e,t){let r=t?.value||[];switch(e.toLowerCase()){case"column.chart":this.CreateColumnChart(r,"column");break;case"bar.chart":this.CreateColumnChart(r,"bar");break;case"line.chart":this.CreateLineChart(r,"line");break;case"area.chart":this.CreateLineChart(r,"area");break;case"donut.chart":case"pie.chart":this.CreateDonut(r,e.toLowerCase()==="pie.chart");break;case"scatter.plot":this.CreateScatterChart(r,"plot");break;case"scatter.line":this.CreateScatterChart(r,"line");break;default:this.Clear();break}}Clear(){this.chart_data={type:"null"}}CreateColumnChart(e,t){let r=this.TransformSeriesData(e[0]),i=this.CommonData(r),n;if(e[1]){n=(e[1].type===8?P.Flatten(e[1].value):P.Flatten(e[1])).map(c=>c?c.type===5&&c.value.type==="metadata"?typeof c.value.value=="number"?M.Get(c.value.format||Yr).Format(c.value.value):c.value.value:typeof c.value=="number"?M.Get(c.format||Yr).Format(c.value):c.value:"");let l=r.reduce((c,h)=>Math.max(c,h.y.data.length),0);for(l<n.length&&(n=n.slice(0,l));l>n.length;)n.push("")}let s=e[2]?.toString()||void 0,a=e[3]?.toString()||void 0;if(this.chart_data={type:t,legend:i.legend,legend_style:1,series2:r,scale:i.y.scale,title:s,y_labels:t==="bar"?n:i.y.labels,x_labels:t==="bar"?i.y.labels:n},a){this.chart_data.round=/round/i.test(a),this.chart_data.data_labels=/labels/i.test(a);let o=a.match(/labels="(.*?)"/);o&&r?this.ApplyLabels(r,o[1],n):(o=a.match(/labels=([^\s\r\n,]+)(?:\W|$)/),o&&r&&this.ApplyLabels(r,o[1],n)),o=a.match(/class=([\w_-]+)(?:\W|$)/),o&&(this.chart_data.class_name=o[1])}}ReadSeries(e){let t={x:{data:[]},y:{data:[]}};if(e[3]&&typeof e[3]=="number"&&(t.index=e[3]),e[4]&&(t.subtype=e[4].toString()),e[0]){let r=P.Flatten(e[0]);typeof r[0]=="object"?t.label=r[0]?.value?.toString()||"":t.label=r[0].toString()}if(e[2]&&typeof e[2]=="object"&&e[2].type===8){let r=P.Flatten(e[2].value);if(t.y.data=r.map(i=>typeof i.value.value=="number"?i.value.value:void 0),r[0].value?.format){t.y.format=r[0].value?.format;let i=M.Get(t.y.format);t.y.labels=t.y.data.map(n=>n===void 0?void 0:i.Format(n))}}if(e[1]&&typeof e[1]=="object"&&e[1].type===8){let r=P.Flatten(e[1].value);t.x.data=r.map(i=>typeof i.value.value=="number"?i.value.value:void 0),r[0].value.format&&(t.x.format=r[0].value.format)}for(let r of[t.x,t.y])if(r.data.length){let i=r.data.filter(n=>n||n===0);r.range={min:Math.min.apply(0,i),max:Math.max.apply(0,i)}}return t}ArrayToSeries(e){let t={x:{data:[]},y:{data:[]}},r=P.Flatten(e.value);if(t.y.data=r.map((n,s)=>typeof n.value=="number"?n.value:typeof n.value.value?.real=="number"?(t.x.data[s]=n.value.value.real,n.value.value.imaginary):typeof n.value.value=="number"?n.value.value:void 0),r[0].value.format){t.y.format=r[0].value.format||"";let n=M.Get(t.y.format||"");t.y.labels=t.y.data.map(s=>s===void 0?void 0:n.Format(s))}let i=t.y.data.filter(n=>n||n===0);if(t.y.range={min:Math.min.apply(0,i),max:Math.max.apply(0,i)},t.x.data.length){let n=t.x.data.filter(s=>typeof s=="number");if(t.x.range={min:Math.min.apply(0,n),max:Math.max.apply(0,n)},r[0].value.format){t.x.format=r[0].value.format||"";let s=M.Get(t.x.format||"");t.x.labels=t.x.data.map(a=>a===void 0?void 0:s.Format(a))}}return t}TransformSeriesData(e,t){if(!e)return[];let r=[];if(e.type===5){if(e.key==="group"){if(Array.isArray(e.value)){for(let s of e.value)if(s&&typeof s=="object")if(s.key==="series"){let a=this.ReadSeries(s.value);r.push(a)}else s.type===8&&r.push(this.ArrayToSeries(s))}}else if(e.key==="series"){let s=this.ReadSeries(e.value);r.push(s)}}else e.type===8&&r.push(this.ArrayToSeries(e));let i,n=0;if(t?.type===8){let s=P.Flatten(t.value),a="0.00###";s[0]&&s[0].type===5&&(a=s[0].value.format);let o=s.map(c=>{if(c.type===3)return c.value;if(c.type===5)return c.value.value}),l=o.filter(c=>typeof c=="number");i={data:o,format:a,range:{min:Math.min.apply(0,l),max:Math.max.apply(0,l)}}}for(let s of r)n=Math.max(n,s.y.data.length),s.x.data.length&&(i||(i=s.x));if(!i){i={data:[],range:{min:0,max:Math.max(0,n-1)}};for(let s=0;s<n;s++)i.data.push(s)}for(let s of r)s.x.data.length||(s.x=i);return r}CommonData(e,t,r){let i="",n="";for(let g of e)g.y.format&&!n&&(n=g.y.format),g.x.format&&!i&&(i=g.x.format);let s;e.some(g=>g.label&&g.label.length>0)&&(s=e.map((g,_)=>({label:g.label||`Series ${_+1}`,index:typeof g.index=="number"?g.index:_+1})));let a=e.filter(g=>g.x.range),o=Math.min.apply(0,a.map(g=>g.x.range?.min||0)),l=Math.max.apply(0,a.map(g=>g.x.range?.max||0)),c=e.filter(g=>g.y.range),h=Math.min.apply(0,a.map(g=>g.y.range?.min||0)),u=Math.max.apply(0,a.map(g=>g.y.range?.max||0));typeof t<"u"&&(h=Math.min(h,t)),typeof r<"u"&&(u=Math.max(u,r));let m=P.Scale(o,l,7),f=P.Scale(h,u,7),b,p;if(i){b=[];let g=M.Get(i);for(let _=0;_<=m.count;_++)b.push(g.Format(m.min+_*m.step))}if(n){p=[];let g=M.Get(n);for(let _=0;_<=f.count;_++)p.push(g.Format(f.min+_*f.step))}return{x:{format:i,scale:m,labels:b},y:{format:n,scale:f,labels:p},legend:s}}CreateScatterChart(e,t="plot"){let r=this.TransformSeriesData(e[0]),i=this.CommonData(r),n=e[1]?.toString()||void 0,s=e[2]?.toString()||void 0;if(this.chart_data={legend:i.legend,style:t,type:"scatter2",series:r,title:n,x_scale:i.x.scale,x_labels:i.x.labels,y_scale:i.y.scale,y_labels:i.y.labels,lines:t==="line",points:t==="plot"},s){this.chart_data.markers=/marker/i.test(s),this.chart_data.smooth=/smooth/i.test(s),this.chart_data.data_labels=/labels/i.test(s);let a=s.match(/labels="(.*?)"/);a&&this.chart_data.series?this.ApplyLabels(this.chart_data.series,a[1]):(a=s.match(/labels=([^\s\r\n,]+)(?:\W|$)/),a&&this.chart_data.series&&this.ApplyLabels(this.chart_data.series,a[1])),a=s.match(/class=([\w_-]+)(?:\W|$)/),a&&(this.chart_data.class_name=a[1])}}ApplyLabels(e,t,r){for(let i of e){let n={x:M.Get(i.x.format||""),y:M.Get(i.y.format||"")};i.y.labels=[];for(let s=0;s<i.y.data.length;s++){let a=r?r[s]:typeof i.x.data[s]=="number"?n.x.Format(i.x.data[s]):"",o=typeof i.y.data[s]=="number"?n.y.Format(i.y.data[s]):"";i.y.labels[s]=t.replace(/\bx\b/g,a).replace(/\by\b/g,o)}}}CreateLineChart(e,t){let r=this.TransformSeriesData(e[0],e[1]),i=this.CommonData(r,0,0),n=e[2]?.toString()||void 0,s=e[3]?.toString()||void 0;if(this.chart_data={legend:i.legend,type:"scatter2",series:r,title:n,x_scale:i.x.scale,x_labels:i.x.labels,y_scale:i.y.scale,y_labels:i.y.labels,lines:!0,filled:t==="area"},s){this.chart_data.smooth=/smooth/i.test(s);let a=s.match(/class=([\w_-]+)(?:\W|$)/);a&&(this.chart_data.class_name=a[1])}}CreateDonut(e,t=!1){let r=e[0]?.type===8?e[0].value:e[0],i=P.Flatten(r),n=i.map(g=>typeof g.value.value=="number"?g.value.value:void 0),s=e[1]?.type===8?e[1].value:e[1],a=P.Flatten(s).map(g=>{if(g&&typeof g=="object"){let _=g.value?.value;return typeof _=="number"&&g.value?.format?M.Get(g.value?.format).Format(_):_?_.toString():""}else return g?g.toString():""});n=n.map(g=>g<0?(console.warn("pie/donut chart does not support negative values (omitted)"),0):g);let o=e[2]||"",l=0,c=n.map((g,_)=>(typeof g<"u"&&(l+=g),{value:g,label:a[_]||"",index:_+1,percent:0}));if(l)for(let g of c)g.percent=(g.value||0)/l;let h=i.length&&i[0].value?.format?i[0].value.format:"",u=M.Get(h||Yr),m=M.Get("percent");typeof e[4]>"u"&&e[1]&&(e[4]="label");let f=e[4]||"";if(f)for(let g of c){let _=u.Format(g.value||0),y=m.Format(g.percent);g.title=f.replace(/value%/ig,m.Format(g.value||0)).replace(/value/ig,_).replace(/percent/ig,y).replace(/label/ig,g.label||"").trim()}let b=(e[3]||"").toString().trim(),p=b.toUpperCase();if(p==="ASC"||p==="ASCENDING"||p==="INC")c.sort((g,_)=>(g.value||0)-(_.value||0));else if(p==="DESC"||p==="DESCENDING"||p==="DEC")c.sort((g,_)=>(_.value||0)-(g.value||0));else{let g=b.match(/sort=([\w]+)(?:\W|$)/i);g&&(p=g[1],/^(asc|inc)/i.test(p)?c.sort((_,y)=>(_.value||0)-(y.value||0)):/^(desc|dec)/i.test(p)&&c.sort((_,y)=>(y.value||0)-(_.value||0)))}if(this.chart_data={type:t?"pie":"donut",slices:c,title:o},b){let g=b.match(/class=([_-\w]+)(?:\W|$)/);g&&(this.chart_data.class_name=g[1])}}Resize(){this.renderer.Resize()}Update(){this.renderer.Resize(),this.renderer.Prerender(),this.renderer.Clear(this.chart_data.class_name);let e=new Ie(0,0,this.renderer.size.width,this.renderer.size.height),t={top:Math.round(e.height)*this.margin.top,bottom:Math.round(e.height)*this.margin.bottom,left:Math.round(e.width)*this.margin.left,right:Math.round(e.width)*this.margin.right},r=this.chart_data.title;if(r&&this.renderer.RenderTitle(r,e,t.top,this.chart_data.title_layout||"top"),e.top+=t.top,e.left+=t.left,e.bottom-=t.bottom,e.right-=t.right,this.chart_data.legend&&this.chart_data.legend.length){let i=0;this.chart_data.title&&(!this.chart_data.title_layout||this.chart_data.title_layout==="top")&&(i=1);let n=this.chart_data.legend_position||i;this.renderer.Legend({labels:this.chart_data.legend,position:n,style:this.chart_data.legend_style,layout:n===0||n===1?0:1,area:e})}if(this.chart_data.type==="histogram"||this.chart_data.type==="line"||this.chart_data.type==="area"||this.chart_data.type==="column"||this.chart_data.type==="histogram2"||this.chart_data.type==="bar"||this.chart_data.type==="scatter2"){let i=[],n=0;if(this.chart_data.x_labels&&this.chart_data.x_labels.length&&(i=this.chart_data.x_labels.map(s=>{let a=this.renderer.MeasureText(s,["axis-label","x-axis-label"],!0);return n=Math.max(n,a.height),a})),this.chart_data.y_labels&&this.chart_data.y_labels.length){let s=[],a=0,o=0,l=this.chart_data.type==="scatter2"?this.chart_data.y_scale:this.chart_data.scale,c=this.chart_data.type==="bar"?this.chart_data.y_labels.length:l.count+1;for(let h=0;h<c;h++){let u=this.renderer.MeasureText(this.chart_data.y_labels[h],["axis-label","y-axis-label"]);s.push({label:this.chart_data.y_labels[h],metrics:u}),a=Math.max(a,u.width),o=Math.max(o,u.height)}e.bottom=Math.round(e.bottom-o/2),e.top=Math.round(e.top+o/2),i.length&&(e.bottom-=n+t.bottom),this.chart_data.type==="bar"?this.renderer.RenderYAxisBar(e,e.left+a,s,["axis-label","y-axis-label"]):this.renderer.RenderYAxis(e,e.left+a,s,["axis-label","y-axis-label"]),e.left+=a+t.left}if(i.length&&this.chart_data.x_labels&&this.chart_data.x_labels.length){let s=this.chart_data.type==="histogram2",a=this.chart_data.type!=="line"&&this.chart_data.type!=="area"&&this.chart_data.type!=="bar"&&this.chart_data.type!=="scatter2"&&this.chart_data.type!=="histogram2";s&&this.renderer.RenderXAxisTicks(e,a,this.chart_data.x_labels.length),this.chart_data.y_labels&&(e.bottom+=n+t.bottom),this.renderer.RenderXAxis(e,a,this.chart_data.x_labels,i,["axis-label","x-axis-label"]),e.bottom-=n+t.bottom}}switch(this.chart_data.type){case"scatter":this.renderer.RenderPoints(e,this.chart_data.x,this.chart_data.y,"mc mc-correlation series-1");break;case"scatter2":if(this.renderer.RenderGrid(e,this.chart_data.y_scale.count,this.chart_data.x_scale.count+1,"chart-grid"),this.chart_data.series){for(let i=0;i<this.chart_data.series.length;i++){let n=this.chart_data.series[i],s=!!this.chart_data.lines,a=!!this.chart_data.points;n.subtype==="plot"?(a=!0,s=!1):n.subtype==="line"&&(a=!1,s=!0);let o=typeof n.index=="number"?n.index:i+1;this.renderer.RenderScatterSeries(e,n.x.data,n.y.data,this.chart_data.x_scale,this.chart_data.y_scale,s,a,!!this.chart_data.filled,!!this.chart_data.markers,!!this.chart_data.smooth,`scatter-plot series-${o}`)}if(this.chart_data.data_labels)for(let i=0;i<this.chart_data.series.length;i++){let n=this.chart_data.series[i];n.y.labels&&this.renderer.RenderDataLabels(e,n.x.data,n.y.data,this.chart_data.x_scale,this.chart_data.y_scale,n.y.labels,i+1)}}break;case"pie":case"donut":{let i=Math.min(e.height,e.width)/2*.9,n=this.chart_data.type==="pie"?0:i*.8;this.renderer.RenderDonut(this.chart_data.slices,e.center,i,n,e,!0,"donut")}break;case"line":case"area":{let i=this.chart_data.scale;if(this.chart_data.series){let n=this.chart_data.x_scale?this.chart_data.x_scale.max:Math.max.apply(0,this.chart_data.series.map(o=>o.length)),s=this.chart_data.smooth?this.renderer.RenderSmoothLine:this.renderer.RenderLine;this.renderer.RenderGrid(e,this.chart_data.scale.count,this.chart_data.x_scale?this.chart_data.x_scale.count+1:n,"chart-grid");let a=0;for(let o of this.chart_data.series){let l=o.map(h=>{if(!(typeof h>"u"))return P.ApplyScale(h,e.height,i)});if(l.length<n)for(let h=l.length;h<n;h++)l.push(void 0);let c=[this.chart_data.type==="area"?"chart-area":"chart-line",`series-${a+1}`];s.call(this.renderer,e,l,this.chart_data.type==="area",this.chart_data.titles,c),a++}}}break;case"bar":{let i;if(this.renderer.RenderBarGrid(e,this.chart_data.scale.count,"chart-grid"),this.chart_data.series2){let n=0,s=this.chart_data.series2.length;for(let u of this.chart_data.series2)n=Math.max(n,u.y.data.length);let a=e.height/n,o=.7;typeof this.chart_data.space=="number"&&(o=Math.max(0,Math.min(1,1-this.chart_data.space)));let l=a*(1-o)/2,c=(a-l*2)/s,h=0;if(this.chart_data.scale.min<0&&(h=P.ApplyScale(0,e.width,this.chart_data.scale)),this.chart_data.round){let u=Math.floor(c/2);i=[0,u,u,0]}for(let u=0;u<s;u++){let m=this.chart_data.series2[u],f=typeof m.index=="number"?m.index:u+1;for(let b=0;b<m.y.data.length;b++){let p=m.y.data[b];if(typeof p=="number"){let g=Math.round(e.top+b*a+l)+u*c,_=0,y=0,x=!1;h?p>0?(y=P.ApplyScale(p+this.chart_data.scale.min,e.width,this.chart_data.scale),_=e.left+h):(y=P.ApplyScale(this.chart_data.scale.min-p,e.width,this.chart_data.scale),_=e.left+h-y,x=!0):(y=P.ApplyScale(p,e.width,this.chart_data.scale),_=e.left);let w=void 0;y&&this.renderer.RenderRectangle(new Ie(_,g,_+y,g+c),i,["chart-column",`series-${f}`],w||void 0)}}}}}break;case"column":case"histogram2":if(this.renderer.RenderGrid(e,this.chart_data.scale.count,0,"chart-grid"),this.chart_data.series2){let i=0,n=this.chart_data.series2.length;for(let u of this.chart_data.series2)i=Math.max(i,u.y.data.length);let s=e.width/i,a=.7;typeof this.chart_data.space=="number"&&(a=Math.max(0,Math.min(1,1-this.chart_data.space)));let o=s*(1-a)/2,l=(s-o*2)/n,c=0;if(this.chart_data.scale.min<0&&(c=P.ApplyScale(0,e.height,this.chart_data.scale)),this.chart_data.callouts&&this.chart_data.x_scale){let u=this.chart_data.x_scale,m=this.chart_data.callouts.map((f,b)=>{let p=Math.round(e.left+P.ApplyScale(f.value,e.width,u))+.5;return{x1:p,y1:e.bottom-e.height,x2:p,y2:e.bottom,classes:`callout-${b+1}`}});this.renderer.RenderCalloutLines(m)}let h;if(this.chart_data.round){let u=Math.floor(l/2);h=[u,u,0,0]}for(let u=0;u<n;u++){let m=this.chart_data.series2[u],f=typeof m.index=="number"?m.index:u+1;for(let b=0;b<m.y.data.length;b++){let p=m.y.data[b];if(typeof p=="number"){let g=e.left+b*s+o+u*l,_=0,y=0,x=!1;c?p>0?(_=P.ApplyScale(p+this.chart_data.scale.min,e.height,this.chart_data.scale),y=e.bottom-_-c):(_=P.ApplyScale(this.chart_data.scale.min-p,e.height,this.chart_data.scale),y=e.bottom-c,x=!0):(_=P.ApplyScale(p,e.height,this.chart_data.scale),y=e.bottom-_);let w=void 0;if(_){let A=this.chart_data.data_labels&&m.y.labels?m.y.labels[b]:"",S={x:Math.round(g+l/2),y:Math.round(y-10)};this.renderer.RenderRectangle(new Ie(g,y,g+l,y+_),h,["chart-column",`series-${f}`],w||void 0,A,S)}}}}}break;case"histogram":{this.renderer.RenderGrid(e,this.chart_data.scale.count,0,"chart-grid");let i=e.width/this.chart_data.count,n=this.chart_data.column_width,s=i*(1-n)/2;for(let a=0;a<this.chart_data.count;a++){let o=Math.round(e.left+a*i+s),l=i-s*2,c=P.ApplyScale(this.chart_data.bins[a],e.height,this.chart_data.scale),h=e.bottom-c,u=this.chart_data.titles?this.chart_data.titles[a]:void 0;this.renderer.RenderRectangle(new Ie(o,h,o+l,h+c),void 0,"chart-column series-1",u||void 0)}}break}}IsCellData(e){return typeof e=="object"&&typeof e.address=="object"&&typeof e.address.row=="number"&&typeof e.address.column=="number"}};et.functions_registered=!1;var Le=(...d)=>({type:5,value:d,key:"arguments"}),Jr={Group:{arguments:[{name:"Array...",metadata:!0}],fn:(...d)=>({type:5,value:d,key:"group"})},Series:{arguments:[{name:"Label"},{name:"X",metadata:!0},{name:"Y",metadata:!0},{name:"index"},{name:"subtype"}],fn:(...d)=>({type:5,value:d,key:"series"})},"Bar.Chart":{arguments:[{name:"Data",metadata:!0},{name:"Categories",metadata:!0},{name:"ChartTitle"}],fn:Le},"Line.Chart":{arguments:[{name:"y",metadata:!0},{name:"x",metadata:!0},{name:"ChartTitle"}],fn:Le},"Area.Chart":{arguments:[{name:"y",metadata:!0},{name:"x",metadata:!0},{name:"ChartTitle"}],fn:Le},"Pie.Chart":{arguments:[{name:"Values",metadata:!0},{name:"Labels"},{name:"Title"},{name:"Sort"},{name:"Label"}],fn:Le},"Donut.Chart":{arguments:[{name:"Values",metadata:!0},{name:"Labels",metadata:!0},{name:"Title"},{name:"Sort"},{name:"Label"}],fn:Le},"Scatter.Line":{arguments:[{name:"Data",metadata:!0},{name:"ChartTitle"}],fn:Le},"Scatter.Plot":{arguments:[{name:"Data",metadata:!0},{name:"ChartTitle"}],fn:Le},"Column.Chart":{arguments:[{name:"Data",metadata:!0},{name:"Categories",metadata:!0},{name:"Chart Title"}],fn:Le}};var Xr={};sn(Xr,{default:()=>Qr});var Qr='var Ai=Object.create;var mr=Object.defineProperty;var Ci=Object.getOwnPropertyDescriptor;var Ii=Object.getOwnPropertyNames;var Ni=Object.getPrototypeOf,ki=Object.prototype.hasOwnProperty;var $e=(s=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(s,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):s)(function(s){if(typeof require<"u")return require.apply(this,arguments);throw new Error(\'Dynamic require of "\'+s+\'" is not supported\')});var be=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var Si=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ii(e))!ki.call(s,n)&&n!==t&&mr(s,n,{get:()=>e[n],enumerable:!(i=Ci(e,n))||i.enumerable});return s};var nt=(s,e,t)=>(t=s!=null?Ai(Ni(s)):{},Si(e||!s||!s.__esModule?mr(t,"default",{value:s,enumerable:!0}):t,s));var Nt=be((gr,It)=>{(function(s){typeof gr=="object"&&typeof It<"u"?It.exports=s():typeof define=="function"&&define.amd?define([],s):(typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:this).JSZip=s()})(function(){return function s(e,t,i){function n(o,l){if(!t[o]){if(!e[o]){var u=typeof $e=="function"&&$e;if(!l&&u)return u(o,!0);if(r)return r(o,!0);var h=new Error("Cannot find module \'"+o+"\'");throw h.code="MODULE_NOT_FOUND",h}var c=t[o]={exports:{}};e[o][0].call(c.exports,function(b){var f=e[o][1][b];return n(f||b)},c,c.exports,s,e,t,i)}return t[o].exports}for(var r=typeof $e=="function"&&$e,a=0;a<i.length;a++)n(i[a]);return n}({1:[function(s,e,t){"use strict";var i=s("./utils"),n=s("./support"),r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";t.encode=function(a){for(var o,l,u,h,c,b,f,p=[],g=0,_=a.length,w=_,A=i.getTypeOf(a)!=="string";g<a.length;)w=_-g,u=A?(o=a[g++],l=g<_?a[g++]:0,g<_?a[g++]:0):(o=a.charCodeAt(g++),l=g<_?a.charCodeAt(g++):0,g<_?a.charCodeAt(g++):0),h=o>>2,c=(3&o)<<4|l>>4,b=1<w?(15&l)<<2|u>>6:64,f=2<w?63&u:64,p.push(r.charAt(h)+r.charAt(c)+r.charAt(b)+r.charAt(f));return p.join("")},t.decode=function(a){var o,l,u,h,c,b,f=0,p=0,g="data:";if(a.substr(0,g.length)===g)throw new Error("Invalid base64 input, it looks like a data url.");var _,w=3*(a=a.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(a.charAt(a.length-1)===r.charAt(64)&&w--,a.charAt(a.length-2)===r.charAt(64)&&w--,w%1!=0)throw new Error("Invalid base64 input, bad content length.");for(_=n.uint8array?new Uint8Array(0|w):new Array(0|w);f<a.length;)o=r.indexOf(a.charAt(f++))<<2|(h=r.indexOf(a.charAt(f++)))>>4,l=(15&h)<<4|(c=r.indexOf(a.charAt(f++)))>>2,u=(3&c)<<6|(b=r.indexOf(a.charAt(f++))),_[p++]=o,c!==64&&(_[p++]=l),b!==64&&(_[p++]=u);return _}},{"./support":30,"./utils":32}],2:[function(s,e,t){"use strict";var i=s("./external"),n=s("./stream/DataWorker"),r=s("./stream/Crc32Probe"),a=s("./stream/DataLengthProbe");function o(l,u,h,c,b){this.compressedSize=l,this.uncompressedSize=u,this.crc32=h,this.compression=c,this.compressedContent=b}o.prototype={getContentWorker:function(){var l=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),u=this;return l.on("end",function(){if(this.streamInfo.data_length!==u.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),l},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(l,u,h){return l.pipe(new r).pipe(new a("uncompressedSize")).pipe(u.compressWorker(h)).pipe(new a("compressedSize")).withStreamInfo("compression",u)},e.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(s,e,t){"use strict";var i=s("./stream/GenericWorker");t.STORE={magic:"\\0\\0",compressWorker:function(){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},t.DEFLATE=s("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(s,e,t){"use strict";var i=s("./utils"),n=function(){for(var r,a=[],o=0;o<256;o++){r=o;for(var l=0;l<8;l++)r=1&r?3988292384^r>>>1:r>>>1;a[o]=r}return a}();e.exports=function(r,a){return r!==void 0&&r.length?i.getTypeOf(r)!=="string"?function(o,l,u,h){var c=n,b=h+u;o^=-1;for(var f=h;f<b;f++)o=o>>>8^c[255&(o^l[f])];return-1^o}(0|a,r,r.length,0):function(o,l,u,h){var c=n,b=h+u;o^=-1;for(var f=h;f<b;f++)o=o>>>8^c[255&(o^l.charCodeAt(f))];return-1^o}(0|a,r,r.length,0):0}},{"./utils":32}],5:[function(s,e,t){"use strict";t.base64=!1,t.binary=!1,t.dir=!1,t.createFolders=!0,t.date=null,t.compression=null,t.compressionOptions=null,t.comment=null,t.unixPermissions=null,t.dosPermissions=null},{}],6:[function(s,e,t){"use strict";var i=null;i=typeof Promise<"u"?Promise:s("lie"),e.exports={Promise:i}},{lie:37}],7:[function(s,e,t){"use strict";var i=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",n=s("pako"),r=s("./utils"),a=s("./stream/GenericWorker"),o=i?"uint8array":"array";function l(u,h){a.call(this,"FlateWorker/"+u),this._pako=null,this._pakoAction=u,this._pakoOptions=h,this.meta={}}t.magic="\\b\\0",r.inherits(l,a),l.prototype.processChunk=function(u){this.meta=u.meta,this._pako===null&&this._createPako(),this._pako.push(r.transformTo(o,u.data),!1)},l.prototype.flush=function(){a.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},l.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},l.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var u=this;this._pako.onData=function(h){u.push({data:h,meta:u.meta})}},t.compressWorker=function(u){return new l("Deflate",u)},t.uncompressWorker=function(){return new l("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(s,e,t){"use strict";function i(c,b){var f,p="";for(f=0;f<b;f++)p+=String.fromCharCode(255&c),c>>>=8;return p}function n(c,b,f,p,g,_){var w,A,v=c.file,z=c.compression,W=_!==o.utf8encode,j=r.transformTo("string",_(v.name)),P=r.transformTo("string",o.utf8encode(v.name)),Y=v.comment,K=r.transformTo("string",_(Y)),C=r.transformTo("string",o.utf8encode(Y)),B=P.length!==v.name.length,m=C.length!==Y.length,G="",O="",R="",J=v.dir,Z=v.date,$={crc32:0,compressedSize:0,uncompressedSize:0};b&&!f||($.crc32=c.crc32,$.compressedSize=c.compressedSize,$.uncompressedSize=c.uncompressedSize);var N=0;b&&(N|=8),W||!B&&!m||(N|=2048);var k=0,T=0;J&&(k|=16),g==="UNIX"?(T=798,k|=function(U,q){var X=U;return U||(X=q?16893:33204),(65535&X)<<16}(v.unixPermissions,J)):(T=20,k|=function(U){return 63&(U||0)}(v.dosPermissions)),w=Z.getUTCHours(),w<<=6,w|=Z.getUTCMinutes(),w<<=5,w|=Z.getUTCSeconds()/2,A=Z.getUTCFullYear()-1980,A<<=4,A|=Z.getUTCMonth()+1,A<<=5,A|=Z.getUTCDate(),B&&(O=i(1,1)+i(l(j),4)+P,G+="up"+i(O.length,2)+O),m&&(R=i(1,1)+i(l(K),4)+C,G+="uc"+i(R.length,2)+R);var M="";return M+=`\n\\0`,M+=i(N,2),M+=z.magic,M+=i(w,2),M+=i(A,2),M+=i($.crc32,4),M+=i($.compressedSize,4),M+=i($.uncompressedSize,4),M+=i(j.length,2),M+=i(G.length,2),{fileRecord:u.LOCAL_FILE_HEADER+M+j+G,dirRecord:u.CENTRAL_FILE_HEADER+i(T,2)+M+i(K.length,2)+"\\0\\0\\0\\0"+i(k,4)+i(p,4)+j+G+K}}var r=s("../utils"),a=s("../stream/GenericWorker"),o=s("../utf8"),l=s("../crc32"),u=s("../signature");function h(c,b,f,p){a.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=b,this.zipPlatform=f,this.encodeFileName=p,this.streamFiles=c,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}r.inherits(h,a),h.prototype.push=function(c){var b=c.meta.percent||0,f=this.entriesCount,p=this._sources.length;this.accumulate?this.contentBuffer.push(c):(this.bytesWritten+=c.data.length,a.prototype.push.call(this,{data:c.data,meta:{currentFile:this.currentFile,percent:f?(b+100*(f-p-1))/f:100}}))},h.prototype.openedSource=function(c){this.currentSourceOffset=this.bytesWritten,this.currentFile=c.file.name;var b=this.streamFiles&&!c.file.dir;if(b){var f=n(c,b,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:f.fileRecord,meta:{percent:0}})}else this.accumulate=!0},h.prototype.closedSource=function(c){this.accumulate=!1;var b=this.streamFiles&&!c.file.dir,f=n(c,b,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(f.dirRecord),b)this.push({data:function(p){return u.DATA_DESCRIPTOR+i(p.crc32,4)+i(p.compressedSize,4)+i(p.uncompressedSize,4)}(c),meta:{percent:100}});else for(this.push({data:f.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},h.prototype.flush=function(){for(var c=this.bytesWritten,b=0;b<this.dirRecords.length;b++)this.push({data:this.dirRecords[b],meta:{percent:100}});var f=this.bytesWritten-c,p=function(g,_,w,A,v){var z=r.transformTo("string",v(A));return u.CENTRAL_DIRECTORY_END+"\\0\\0\\0\\0"+i(g,2)+i(g,2)+i(_,4)+i(w,4)+i(z.length,2)+z}(this.dirRecords.length,f,c,this.zipComment,this.encodeFileName);this.push({data:p,meta:{percent:100}})},h.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},h.prototype.registerPrevious=function(c){this._sources.push(c);var b=this;return c.on("data",function(f){b.processChunk(f)}),c.on("end",function(){b.closedSource(b.previous.streamInfo),b._sources.length?b.prepareNextSource():b.end()}),c.on("error",function(f){b.error(f)}),this},h.prototype.resume=function(){return!!a.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},h.prototype.error=function(c){var b=this._sources;if(!a.prototype.error.call(this,c))return!1;for(var f=0;f<b.length;f++)try{b[f].error(c)}catch{}return!0},h.prototype.lock=function(){a.prototype.lock.call(this);for(var c=this._sources,b=0;b<c.length;b++)c[b].lock()},e.exports=h},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(s,e,t){"use strict";var i=s("../compressions"),n=s("./ZipFileWorker");t.generateWorker=function(r,a,o){var l=new n(a.streamFiles,o,a.platform,a.encodeFileName),u=0;try{r.forEach(function(h,c){u++;var b=function(_,w){var A=_||w,v=i[A];if(!v)throw new Error(A+" is not a valid compression method !");return v}(c.options.compression,a.compression),f=c.options.compressionOptions||a.compressionOptions||{},p=c.dir,g=c.date;c._compressWorker(b,f).withStreamInfo("file",{name:h,dir:p,date:g,comment:c.comment||"",unixPermissions:c.unixPermissions,dosPermissions:c.dosPermissions}).pipe(l)}),l.entriesCount=u}catch(h){l.error(h)}return l}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(s,e,t){"use strict";function i(){if(!(this instanceof i))return new i;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var n=new i;for(var r in this)typeof this[r]!="function"&&(n[r]=this[r]);return n}}(i.prototype=s("./object")).loadAsync=s("./load"),i.support=s("./support"),i.defaults=s("./defaults"),i.version="3.10.1",i.loadAsync=function(n,r){return new i().loadAsync(n,r)},i.external=s("./external"),e.exports=i},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(s,e,t){"use strict";var i=s("./utils"),n=s("./external"),r=s("./utf8"),a=s("./zipEntries"),o=s("./stream/Crc32Probe"),l=s("./nodejsUtils");function u(h){return new n.Promise(function(c,b){var f=h.decompressed.getContentWorker().pipe(new o);f.on("error",function(p){b(p)}).on("end",function(){f.streamInfo.crc32!==h.decompressed.crc32?b(new Error("Corrupted zip : CRC32 mismatch")):c()}).resume()})}e.exports=function(h,c){var b=this;return c=i.extend(c||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:r.utf8decode}),l.isNode&&l.isStream(h)?n.Promise.reject(new Error("JSZip can\'t accept a stream when loading a zip file.")):i.prepareContent("the loaded zip file",h,!0,c.optimizedBinaryString,c.base64).then(function(f){var p=new a(c);return p.load(f),p}).then(function(f){var p=[n.Promise.resolve(f)],g=f.files;if(c.checkCRC32)for(var _=0;_<g.length;_++)p.push(u(g[_]));return n.Promise.all(p)}).then(function(f){for(var p=f.shift(),g=p.files,_=0;_<g.length;_++){var w=g[_],A=w.fileNameStr,v=i.resolve(w.fileNameStr);b.file(v,w.decompressed,{binary:!0,optimizedBinaryString:!0,date:w.date,dir:w.dir,comment:w.fileCommentStr.length?w.fileCommentStr:null,unixPermissions:w.unixPermissions,dosPermissions:w.dosPermissions,createFolders:c.createFolders}),w.dir||(b.file(v).unsafeOriginalName=A)}return p.zipComment.length&&(b.comment=p.zipComment),b})}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(s,e,t){"use strict";var i=s("../utils"),n=s("../stream/GenericWorker");function r(a,o){n.call(this,"Nodejs stream input adapter for "+a),this._upstreamEnded=!1,this._bindStream(o)}i.inherits(r,n),r.prototype._bindStream=function(a){var o=this;(this._stream=a).pause(),a.on("data",function(l){o.push({data:l,meta:{percent:0}})}).on("error",function(l){o.isPaused?this.generatedError=l:o.error(l)}).on("end",function(){o.isPaused?o._upstreamEnded=!0:o.end()})},r.prototype.pause=function(){return!!n.prototype.pause.call(this)&&(this._stream.pause(),!0)},r.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},e.exports=r},{"../stream/GenericWorker":28,"../utils":32}],13:[function(s,e,t){"use strict";var i=s("readable-stream").Readable;function n(r,a,o){i.call(this,a),this._helper=r;var l=this;r.on("data",function(u,h){l.push(u)||l._helper.pause(),o&&o(h)}).on("error",function(u){l.emit("error",u)}).on("end",function(){l.push(null)})}s("../utils").inherits(n,i),n.prototype._read=function(){this._helper.resume()},e.exports=n},{"../utils":32,"readable-stream":16}],14:[function(s,e,t){"use strict";e.exports={isNode:typeof Buffer<"u",newBufferFrom:function(i,n){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(i,n);if(typeof i=="number")throw new Error(\'The "data" argument must not be a number\');return new Buffer(i,n)},allocBuffer:function(i){if(Buffer.alloc)return Buffer.alloc(i);var n=new Buffer(i);return n.fill(0),n},isBuffer:function(i){return Buffer.isBuffer(i)},isStream:function(i){return i&&typeof i.on=="function"&&typeof i.pause=="function"&&typeof i.resume=="function"}}},{}],15:[function(s,e,t){"use strict";function i(v,z,W){var j,P=r.getTypeOf(z),Y=r.extend(W||{},l);Y.date=Y.date||new Date,Y.compression!==null&&(Y.compression=Y.compression.toUpperCase()),typeof Y.unixPermissions=="string"&&(Y.unixPermissions=parseInt(Y.unixPermissions,8)),Y.unixPermissions&&16384&Y.unixPermissions&&(Y.dir=!0),Y.dosPermissions&&16&Y.dosPermissions&&(Y.dir=!0),Y.dir&&(v=g(v)),Y.createFolders&&(j=p(v))&&_.call(this,j,!0);var K=P==="string"&&Y.binary===!1&&Y.base64===!1;W&&W.binary!==void 0||(Y.binary=!K),(z instanceof u&&z.uncompressedSize===0||Y.dir||!z||z.length===0)&&(Y.base64=!1,Y.binary=!0,z="",Y.compression="STORE",P="string");var C=null;C=z instanceof u||z instanceof a?z:b.isNode&&b.isStream(z)?new f(v,z):r.prepareContent(v,z,Y.binary,Y.optimizedBinaryString,Y.base64);var B=new h(v,C,Y);this.files[v]=B}var n=s("./utf8"),r=s("./utils"),a=s("./stream/GenericWorker"),o=s("./stream/StreamHelper"),l=s("./defaults"),u=s("./compressedObject"),h=s("./zipObject"),c=s("./generate"),b=s("./nodejsUtils"),f=s("./nodejs/NodejsStreamInputAdapter"),p=function(v){v.slice(-1)==="/"&&(v=v.substring(0,v.length-1));var z=v.lastIndexOf("/");return 0<z?v.substring(0,z):""},g=function(v){return v.slice(-1)!=="/"&&(v+="/"),v},_=function(v,z){return z=z!==void 0?z:l.createFolders,v=g(v),this.files[v]||i.call(this,v,null,{dir:!0,createFolders:z}),this.files[v]};function w(v){return Object.prototype.toString.call(v)==="[object RegExp]"}var A={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(v){var z,W,j;for(z in this.files)j=this.files[z],(W=z.slice(this.root.length,z.length))&&z.slice(0,this.root.length)===this.root&&v(W,j)},filter:function(v){var z=[];return this.forEach(function(W,j){v(W,j)&&z.push(j)}),z},file:function(v,z,W){if(arguments.length!==1)return v=this.root+v,i.call(this,v,z,W),this;if(w(v)){var j=v;return this.filter(function(Y,K){return!K.dir&&j.test(Y)})}var P=this.files[this.root+v];return P&&!P.dir?P:null},folder:function(v){if(!v)return this;if(w(v))return this.filter(function(P,Y){return Y.dir&&v.test(P)});var z=this.root+v,W=_.call(this,z),j=this.clone();return j.root=W.name,j},remove:function(v){v=this.root+v;var z=this.files[v];if(z||(v.slice(-1)!=="/"&&(v+="/"),z=this.files[v]),z&&!z.dir)delete this.files[v];else for(var W=this.filter(function(P,Y){return Y.name.slice(0,v.length)===v}),j=0;j<W.length;j++)delete this.files[W[j].name];return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(v){var z,W={};try{if((W=r.extend(v||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:n.utf8encode})).type=W.type.toLowerCase(),W.compression=W.compression.toUpperCase(),W.type==="binarystring"&&(W.type="string"),!W.type)throw new Error("No output type specified.");r.checkSupport(W.type),W.platform!=="darwin"&&W.platform!=="freebsd"&&W.platform!=="linux"&&W.platform!=="sunos"||(W.platform="UNIX"),W.platform==="win32"&&(W.platform="DOS");var j=W.comment||this.comment||"";z=c.generateWorker(this,W,j)}catch(P){(z=new a("error")).error(P)}return new o(z,W.type||"string",W.mimeType)},generateAsync:function(v,z){return this.generateInternalStream(v).accumulate(z)},generateNodeStream:function(v,z){return(v=v||{}).type||(v.type="nodebuffer"),this.generateInternalStream(v).toNodejsStream(z)}};e.exports=A},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(s,e,t){"use strict";e.exports=s("stream")},{stream:void 0}],17:[function(s,e,t){"use strict";var i=s("./DataReader");function n(r){i.call(this,r);for(var a=0;a<this.data.length;a++)r[a]=255&r[a]}s("../utils").inherits(n,i),n.prototype.byteAt=function(r){return this.data[this.zero+r]},n.prototype.lastIndexOfSignature=function(r){for(var a=r.charCodeAt(0),o=r.charCodeAt(1),l=r.charCodeAt(2),u=r.charCodeAt(3),h=this.length-4;0<=h;--h)if(this.data[h]===a&&this.data[h+1]===o&&this.data[h+2]===l&&this.data[h+3]===u)return h-this.zero;return-1},n.prototype.readAndCheckSignature=function(r){var a=r.charCodeAt(0),o=r.charCodeAt(1),l=r.charCodeAt(2),u=r.charCodeAt(3),h=this.readData(4);return a===h[0]&&o===h[1]&&l===h[2]&&u===h[3]},n.prototype.readData=function(r){if(this.checkOffset(r),r===0)return[];var a=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./DataReader":18}],18:[function(s,e,t){"use strict";var i=s("../utils");function n(r){this.data=r,this.length=r.length,this.index=0,this.zero=0}n.prototype={checkOffset:function(r){this.checkIndex(this.index+r)},checkIndex:function(r){if(this.length<this.zero+r||r<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+r+"). Corrupted zip ?")},setIndex:function(r){this.checkIndex(r),this.index=r},skip:function(r){this.setIndex(this.index+r)},byteAt:function(){},readInt:function(r){var a,o=0;for(this.checkOffset(r),a=this.index+r-1;a>=this.index;a--)o=(o<<8)+this.byteAt(a);return this.index+=r,o},readString:function(r){return i.transformTo("string",this.readData(r))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var r=this.readInt(4);return new Date(Date.UTC(1980+(r>>25&127),(r>>21&15)-1,r>>16&31,r>>11&31,r>>5&63,(31&r)<<1))}},e.exports=n},{"../utils":32}],19:[function(s,e,t){"use strict";var i=s("./Uint8ArrayReader");function n(r){i.call(this,r)}s("../utils").inherits(n,i),n.prototype.readData=function(r){this.checkOffset(r);var a=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(s,e,t){"use strict";var i=s("./DataReader");function n(r){i.call(this,r)}s("../utils").inherits(n,i),n.prototype.byteAt=function(r){return this.data.charCodeAt(this.zero+r)},n.prototype.lastIndexOfSignature=function(r){return this.data.lastIndexOf(r)-this.zero},n.prototype.readAndCheckSignature=function(r){return r===this.readData(4)},n.prototype.readData=function(r){this.checkOffset(r);var a=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./DataReader":18}],21:[function(s,e,t){"use strict";var i=s("./ArrayReader");function n(r){i.call(this,r)}s("../utils").inherits(n,i),n.prototype.readData=function(r){if(this.checkOffset(r),r===0)return new Uint8Array(0);var a=this.data.subarray(this.zero+this.index,this.zero+this.index+r);return this.index+=r,a},e.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(s,e,t){"use strict";var i=s("../utils"),n=s("../support"),r=s("./ArrayReader"),a=s("./StringReader"),o=s("./NodeBufferReader"),l=s("./Uint8ArrayReader");e.exports=function(u){var h=i.getTypeOf(u);return i.checkSupport(h),h!=="string"||n.uint8array?h==="nodebuffer"?new o(u):n.uint8array?new l(i.transformTo("uint8array",u)):new r(i.transformTo("array",u)):new a(u)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(s,e,t){"use strict";t.LOCAL_FILE_HEADER="PK",t.CENTRAL_FILE_HEADER="PK",t.CENTRAL_DIRECTORY_END="PK",t.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\\x07",t.ZIP64_CENTRAL_DIRECTORY_END="PK",t.DATA_DESCRIPTOR="PK\\x07\\b"},{}],24:[function(s,e,t){"use strict";var i=s("./GenericWorker"),n=s("../utils");function r(a){i.call(this,"ConvertWorker to "+a),this.destType=a}n.inherits(r,i),r.prototype.processChunk=function(a){this.push({data:n.transformTo(this.destType,a.data),meta:a.meta})},e.exports=r},{"../utils":32,"./GenericWorker":28}],25:[function(s,e,t){"use strict";var i=s("./GenericWorker"),n=s("../crc32");function r(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}s("../utils").inherits(r,i),r.prototype.processChunk=function(a){this.streamInfo.crc32=n(a.data,this.streamInfo.crc32||0),this.push(a)},e.exports=r},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(s,e,t){"use strict";var i=s("../utils"),n=s("./GenericWorker");function r(a){n.call(this,"DataLengthProbe for "+a),this.propName=a,this.withStreamInfo(a,0)}i.inherits(r,n),r.prototype.processChunk=function(a){if(a){var o=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=o+a.data.length}n.prototype.processChunk.call(this,a)},e.exports=r},{"../utils":32,"./GenericWorker":28}],27:[function(s,e,t){"use strict";var i=s("../utils"),n=s("./GenericWorker");function r(a){n.call(this,"DataWorker");var o=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,a.then(function(l){o.dataIsReady=!0,o.data=l,o.max=l&&l.length||0,o.type=i.getTypeOf(l),o.isPaused||o._tickAndRepeat()},function(l){o.error(l)})}i.inherits(r,n),r.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},r.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},r.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},r.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var a=null,o=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":a=this.data.substring(this.index,o);break;case"uint8array":a=this.data.subarray(this.index,o);break;case"array":case"nodebuffer":a=this.data.slice(this.index,o)}return this.index=o,this.push({data:a,meta:{percent:this.max?this.index/this.max*100:0}})},e.exports=r},{"../utils":32,"./GenericWorker":28}],28:[function(s,e,t){"use strict";function i(n){this.name=n||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(n){this.emit("data",n)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(n){this.emit("error",n)}return!0},error:function(n){return!this.isFinished&&(this.isPaused?this.generatedError=n:(this.isFinished=!0,this.emit("error",n),this.previous&&this.previous.error(n),this.cleanUp()),!0)},on:function(n,r){return this._listeners[n].push(r),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(n,r){if(this._listeners[n])for(var a=0;a<this._listeners[n].length;a++)this._listeners[n][a].call(this,r)},pipe:function(n){return n.registerPrevious(this)},registerPrevious:function(n){if(this.isLocked)throw new Error("The stream \'"+this+"\' has already been used.");this.streamInfo=n.streamInfo,this.mergeStreamInfo(),this.previous=n;var r=this;return n.on("data",function(a){r.processChunk(a)}),n.on("end",function(){r.end()}),n.on("error",function(a){r.error(a)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var n=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),n=!0),this.previous&&this.previous.resume(),!n},flush:function(){},processChunk:function(n){this.push(n)},withStreamInfo:function(n,r){return this.extraStreamInfo[n]=r,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var n in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,n)&&(this.streamInfo[n]=this.extraStreamInfo[n])},lock:function(){if(this.isLocked)throw new Error("The stream \'"+this+"\' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var n="Worker "+this.name;return this.previous?this.previous+" -> "+n:n}},e.exports=i},{}],29:[function(s,e,t){"use strict";var i=s("../utils"),n=s("./ConvertWorker"),r=s("./GenericWorker"),a=s("../base64"),o=s("../support"),l=s("../external"),u=null;if(o.nodestream)try{u=s("../nodejs/NodejsStreamOutputAdapter")}catch{}function h(b,f){return new l.Promise(function(p,g){var _=[],w=b._internalType,A=b._outputType,v=b._mimeType;b.on("data",function(z,W){_.push(z),f&&f(W)}).on("error",function(z){_=[],g(z)}).on("end",function(){try{var z=function(W,j,P){switch(W){case"blob":return i.newBlob(i.transformTo("arraybuffer",j),P);case"base64":return a.encode(j);default:return i.transformTo(W,j)}}(A,function(W,j){var P,Y=0,K=null,C=0;for(P=0;P<j.length;P++)C+=j[P].length;switch(W){case"string":return j.join("");case"array":return Array.prototype.concat.apply([],j);case"uint8array":for(K=new Uint8Array(C),P=0;P<j.length;P++)K.set(j[P],Y),Y+=j[P].length;return K;case"nodebuffer":return Buffer.concat(j);default:throw new Error("concat : unsupported type \'"+W+"\'")}}(w,_),v);p(z)}catch(W){g(W)}_=[]}).resume()})}function c(b,f,p){var g=f;switch(f){case"blob":case"arraybuffer":g="uint8array";break;case"base64":g="string"}try{this._internalType=g,this._outputType=f,this._mimeType=p,i.checkSupport(g),this._worker=b.pipe(new n(g)),b.lock()}catch(_){this._worker=new r("error"),this._worker.error(_)}}c.prototype={accumulate:function(b){return h(this,b)},on:function(b,f){var p=this;return b==="data"?this._worker.on(b,function(g){f.call(p,g.data,g.meta)}):this._worker.on(b,function(){i.delay(f,arguments,p)}),this},resume:function(){return i.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(b){if(i.checkSupport("nodestream"),this._outputType!=="nodebuffer")throw new Error(this._outputType+" is not supported by this method");return new u(this,{objectMode:this._outputType!=="nodebuffer"},b)}},e.exports=c},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(s,e,t){"use strict";if(t.base64=!0,t.array=!0,t.string=!0,t.arraybuffer=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u",t.nodebuffer=typeof Buffer<"u",t.uint8array=typeof Uint8Array<"u",typeof ArrayBuffer>"u")t.blob=!1;else{var i=new ArrayBuffer(0);try{t.blob=new Blob([i],{type:"application/zip"}).size===0}catch{try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);n.append(i),t.blob=n.getBlob("application/zip").size===0}catch{t.blob=!1}}}try{t.nodestream=!!s("readable-stream").Readable}catch{t.nodestream=!1}},{"readable-stream":16}],31:[function(s,e,t){"use strict";for(var i=s("./utils"),n=s("./support"),r=s("./nodejsUtils"),a=s("./stream/GenericWorker"),o=new Array(256),l=0;l<256;l++)o[l]=252<=l?6:248<=l?5:240<=l?4:224<=l?3:192<=l?2:1;o[254]=o[254]=1;function u(){a.call(this,"utf-8 decode"),this.leftOver=null}function h(){a.call(this,"utf-8 encode")}t.utf8encode=function(c){return n.nodebuffer?r.newBufferFrom(c,"utf-8"):function(b){var f,p,g,_,w,A=b.length,v=0;for(_=0;_<A;_++)(64512&(p=b.charCodeAt(_)))==55296&&_+1<A&&(64512&(g=b.charCodeAt(_+1)))==56320&&(p=65536+(p-55296<<10)+(g-56320),_++),v+=p<128?1:p<2048?2:p<65536?3:4;for(f=n.uint8array?new Uint8Array(v):new Array(v),_=w=0;w<v;_++)(64512&(p=b.charCodeAt(_)))==55296&&_+1<A&&(64512&(g=b.charCodeAt(_+1)))==56320&&(p=65536+(p-55296<<10)+(g-56320),_++),p<128?f[w++]=p:(p<2048?f[w++]=192|p>>>6:(p<65536?f[w++]=224|p>>>12:(f[w++]=240|p>>>18,f[w++]=128|p>>>12&63),f[w++]=128|p>>>6&63),f[w++]=128|63&p);return f}(c)},t.utf8decode=function(c){return n.nodebuffer?i.transformTo("nodebuffer",c).toString("utf-8"):function(b){var f,p,g,_,w=b.length,A=new Array(2*w);for(f=p=0;f<w;)if((g=b[f++])<128)A[p++]=g;else if(4<(_=o[g]))A[p++]=65533,f+=_-1;else{for(g&=_===2?31:_===3?15:7;1<_&&f<w;)g=g<<6|63&b[f++],_--;1<_?A[p++]=65533:g<65536?A[p++]=g:(g-=65536,A[p++]=55296|g>>10&1023,A[p++]=56320|1023&g)}return A.length!==p&&(A.subarray?A=A.subarray(0,p):A.length=p),i.applyFromCharCode(A)}(c=i.transformTo(n.uint8array?"uint8array":"array",c))},i.inherits(u,a),u.prototype.processChunk=function(c){var b=i.transformTo(n.uint8array?"uint8array":"array",c.data);if(this.leftOver&&this.leftOver.length){if(n.uint8array){var f=b;(b=new Uint8Array(f.length+this.leftOver.length)).set(this.leftOver,0),b.set(f,this.leftOver.length)}else b=this.leftOver.concat(b);this.leftOver=null}var p=function(_,w){var A;for((w=w||_.length)>_.length&&(w=_.length),A=w-1;0<=A&&(192&_[A])==128;)A--;return A<0||A===0?w:A+o[_[A]]>w?A:w}(b),g=b;p!==b.length&&(n.uint8array?(g=b.subarray(0,p),this.leftOver=b.subarray(p,b.length)):(g=b.slice(0,p),this.leftOver=b.slice(p,b.length))),this.push({data:t.utf8decode(g),meta:c.meta})},u.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:t.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},t.Utf8DecodeWorker=u,i.inherits(h,a),h.prototype.processChunk=function(c){this.push({data:t.utf8encode(c.data),meta:c.meta})},t.Utf8EncodeWorker=h},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(s,e,t){"use strict";var i=s("./support"),n=s("./base64"),r=s("./nodejsUtils"),a=s("./external");function o(f){return f}function l(f,p){for(var g=0;g<f.length;++g)p[g]=255&f.charCodeAt(g);return p}s("setimmediate"),t.newBlob=function(f,p){t.checkSupport("blob");try{return new Blob([f],{type:p})}catch{try{var g=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return g.append(f),g.getBlob(p)}catch{throw new Error("Bug : can\'t construct the Blob.")}}};var u={stringifyByChunk:function(f,p,g){var _=[],w=0,A=f.length;if(A<=g)return String.fromCharCode.apply(null,f);for(;w<A;)p==="array"||p==="nodebuffer"?_.push(String.fromCharCode.apply(null,f.slice(w,Math.min(w+g,A)))):_.push(String.fromCharCode.apply(null,f.subarray(w,Math.min(w+g,A)))),w+=g;return _.join("")},stringifyByChar:function(f){for(var p="",g=0;g<f.length;g++)p+=String.fromCharCode(f[g]);return p},applyCanBeUsed:{uint8array:function(){try{return i.uint8array&&String.fromCharCode.apply(null,new Uint8Array(1)).length===1}catch{return!1}}(),nodebuffer:function(){try{return i.nodebuffer&&String.fromCharCode.apply(null,r.allocBuffer(1)).length===1}catch{return!1}}()}};function h(f){var p=65536,g=t.getTypeOf(f),_=!0;if(g==="uint8array"?_=u.applyCanBeUsed.uint8array:g==="nodebuffer"&&(_=u.applyCanBeUsed.nodebuffer),_)for(;1<p;)try{return u.stringifyByChunk(f,g,p)}catch{p=Math.floor(p/2)}return u.stringifyByChar(f)}function c(f,p){for(var g=0;g<f.length;g++)p[g]=f[g];return p}t.applyFromCharCode=h;var b={};b.string={string:o,array:function(f){return l(f,new Array(f.length))},arraybuffer:function(f){return b.string.uint8array(f).buffer},uint8array:function(f){return l(f,new Uint8Array(f.length))},nodebuffer:function(f){return l(f,r.allocBuffer(f.length))}},b.array={string:h,array:o,arraybuffer:function(f){return new Uint8Array(f).buffer},uint8array:function(f){return new Uint8Array(f)},nodebuffer:function(f){return r.newBufferFrom(f)}},b.arraybuffer={string:function(f){return h(new Uint8Array(f))},array:function(f){return c(new Uint8Array(f),new Array(f.byteLength))},arraybuffer:o,uint8array:function(f){return new Uint8Array(f)},nodebuffer:function(f){return r.newBufferFrom(new Uint8Array(f))}},b.uint8array={string:h,array:function(f){return c(f,new Array(f.length))},arraybuffer:function(f){return f.buffer},uint8array:o,nodebuffer:function(f){return r.newBufferFrom(f)}},b.nodebuffer={string:h,array:function(f){return c(f,new Array(f.length))},arraybuffer:function(f){return b.nodebuffer.uint8array(f).buffer},uint8array:function(f){return c(f,new Uint8Array(f.length))},nodebuffer:o},t.transformTo=function(f,p){if(p=p||"",!f)return p;t.checkSupport(f);var g=t.getTypeOf(p);return b[g][f](p)},t.resolve=function(f){for(var p=f.split("/"),g=[],_=0;_<p.length;_++){var w=p[_];w==="."||w===""&&_!==0&&_!==p.length-1||(w===".."?g.pop():g.push(w))}return g.join("/")},t.getTypeOf=function(f){return typeof f=="string"?"string":Object.prototype.toString.call(f)==="[object Array]"?"array":i.nodebuffer&&r.isBuffer(f)?"nodebuffer":i.uint8array&&f instanceof Uint8Array?"uint8array":i.arraybuffer&&f instanceof ArrayBuffer?"arraybuffer":void 0},t.checkSupport=function(f){if(!i[f.toLowerCase()])throw new Error(f+" is not supported by this platform")},t.MAX_VALUE_16BITS=65535,t.MAX_VALUE_32BITS=-1,t.pretty=function(f){var p,g,_="";for(g=0;g<(f||"").length;g++)_+="\\\\x"+((p=f.charCodeAt(g))<16?"0":"")+p.toString(16).toUpperCase();return _},t.delay=function(f,p,g){setImmediate(function(){f.apply(g||null,p||[])})},t.inherits=function(f,p){function g(){}g.prototype=p.prototype,f.prototype=new g},t.extend=function(){var f,p,g={};for(f=0;f<arguments.length;f++)for(p in arguments[f])Object.prototype.hasOwnProperty.call(arguments[f],p)&&g[p]===void 0&&(g[p]=arguments[f][p]);return g},t.prepareContent=function(f,p,g,_,w){return a.Promise.resolve(p).then(function(A){return i.blob&&(A instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(A))!==-1)&&typeof FileReader<"u"?new a.Promise(function(v,z){var W=new FileReader;W.onload=function(j){v(j.target.result)},W.onerror=function(j){z(j.target.error)},W.readAsArrayBuffer(A)}):A}).then(function(A){var v=t.getTypeOf(A);return v?(v==="arraybuffer"?A=t.transformTo("uint8array",A):v==="string"&&(w?A=n.decode(A):g&&_!==!0&&(A=function(z){return l(z,i.uint8array?new Uint8Array(z.length):new Array(z.length))}(A))),A):a.Promise.reject(new Error("Can\'t read the data of \'"+f+"\'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,setimmediate:54}],33:[function(s,e,t){"use strict";var i=s("./reader/readerFor"),n=s("./utils"),r=s("./signature"),a=s("./zipEntry"),o=s("./support");function l(u){this.files=[],this.loadOptions=u}l.prototype={checkSignature:function(u){if(!this.reader.readAndCheckSignature(u)){this.reader.index-=4;var h=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+n.pretty(h)+", expected "+n.pretty(u)+")")}},isSignature:function(u,h){var c=this.reader.index;this.reader.setIndex(u);var b=this.reader.readString(4)===h;return this.reader.setIndex(c),b},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var u=this.reader.readData(this.zipCommentLength),h=o.uint8array?"uint8array":"array",c=n.transformTo(h,u);this.zipComment=this.loadOptions.decodeFileName(c)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var u,h,c,b=this.zip64EndOfCentralSize-44;0<b;)u=this.reader.readInt(2),h=this.reader.readInt(4),c=this.reader.readData(h),this.zip64ExtensibleData[u]={id:u,length:h,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var u,h;for(u=0;u<this.files.length;u++)h=this.files[u],this.reader.setIndex(h.localHeaderOffset),this.checkSignature(r.LOCAL_FILE_HEADER),h.readLocalPart(this.reader),h.handleUTF8(),h.processAttributes()},readCentralDir:function(){var u;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(r.CENTRAL_FILE_HEADER);)(u=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(u);if(this.centralDirRecords!==this.files.length&&this.centralDirRecords!==0&&this.files.length===0)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var u=this.reader.lastIndexOfSignature(r.CENTRAL_DIRECTORY_END);if(u<0)throw this.isSignature(0,r.LOCAL_FILE_HEADER)?new Error("Corrupted zip: can\'t find end of central directory"):new Error("Can\'t find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");this.reader.setIndex(u);var h=u;if(this.checkSignature(r.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===n.MAX_VALUE_16BITS||this.diskWithCentralDirStart===n.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===n.MAX_VALUE_16BITS||this.centralDirRecords===n.MAX_VALUE_16BITS||this.centralDirSize===n.MAX_VALUE_32BITS||this.centralDirOffset===n.MAX_VALUE_32BITS){if(this.zip64=!0,(u=this.reader.lastIndexOfSignature(r.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can\'t find the ZIP64 end of central directory locator");if(this.reader.setIndex(u),this.checkSignature(r.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,r.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(r.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can\'t find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(r.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var c=this.centralDirOffset+this.centralDirSize;this.zip64&&(c+=20,c+=12+this.zip64EndOfCentralSize);var b=h-c;if(0<b)this.isSignature(h,r.CENTRAL_FILE_HEADER)||(this.reader.zero=b);else if(b<0)throw new Error("Corrupted zip: missing "+Math.abs(b)+" bytes.")},prepareReader:function(u){this.reader=i(u)},load:function(u){this.prepareReader(u),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},e.exports=l},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(s,e,t){"use strict";var i=s("./reader/readerFor"),n=s("./utils"),r=s("./compressedObject"),a=s("./crc32"),o=s("./utf8"),l=s("./compressions"),u=s("./support");function h(c,b){this.options=c,this.loadOptions=b}h.prototype={isEncrypted:function(){return(1&this.bitFlag)==1},useUTF8:function(){return(2048&this.bitFlag)==2048},readLocalPart:function(c){var b,f;if(c.skip(22),this.fileNameLength=c.readInt(2),f=c.readInt(2),this.fileName=c.readData(this.fileNameLength),c.skip(f),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn\'t get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if((b=function(p){for(var g in l)if(Object.prototype.hasOwnProperty.call(l,g)&&l[g].magic===p)return l[g];return null}(this.compressionMethod))===null)throw new Error("Corrupted zip : compression "+n.pretty(this.compressionMethod)+" unknown (inner file : "+n.transformTo("string",this.fileName)+")");this.decompressed=new r(this.compressedSize,this.uncompressedSize,this.crc32,b,c.readData(this.compressedSize))},readCentralPart:function(c){this.versionMadeBy=c.readInt(2),c.skip(2),this.bitFlag=c.readInt(2),this.compressionMethod=c.readString(2),this.date=c.readDate(),this.crc32=c.readInt(4),this.compressedSize=c.readInt(4),this.uncompressedSize=c.readInt(4);var b=c.readInt(2);if(this.extraFieldsLength=c.readInt(2),this.fileCommentLength=c.readInt(2),this.diskNumberStart=c.readInt(2),this.internalFileAttributes=c.readInt(2),this.externalFileAttributes=c.readInt(4),this.localHeaderOffset=c.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");c.skip(b),this.readExtraFields(c),this.parseZIP64ExtraField(c),this.fileComment=c.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var c=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),c==0&&(this.dosPermissions=63&this.externalFileAttributes),c==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var c=i(this.extraFields[1].value);this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=c.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=c.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=c.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS&&(this.diskNumberStart=c.readInt(4))}},readExtraFields:function(c){var b,f,p,g=c.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});c.index+4<g;)b=c.readInt(2),f=c.readInt(2),p=c.readData(f),this.extraFields[b]={id:b,length:f,value:p};c.setIndex(g)},handleUTF8:function(){var c=u.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var b=this.findExtraFieldUnicodePath();if(b!==null)this.fileNameStr=b;else{var f=n.transformTo(c,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(f)}var p=this.findExtraFieldUnicodeComment();if(p!==null)this.fileCommentStr=p;else{var g=n.transformTo(c,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(g)}}},findExtraFieldUnicodePath:function(){var c=this.extraFields[28789];if(c){var b=i(c.value);return b.readInt(1)!==1||a(this.fileName)!==b.readInt(4)?null:o.utf8decode(b.readData(c.length-5))}return null},findExtraFieldUnicodeComment:function(){var c=this.extraFields[25461];if(c){var b=i(c.value);return b.readInt(1)!==1||a(this.fileComment)!==b.readInt(4)?null:o.utf8decode(b.readData(c.length-5))}return null}},e.exports=h},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(s,e,t){"use strict";function i(b,f,p){this.name=b,this.dir=p.dir,this.date=p.date,this.comment=p.comment,this.unixPermissions=p.unixPermissions,this.dosPermissions=p.dosPermissions,this._data=f,this._dataBinary=p.binary,this.options={compression:p.compression,compressionOptions:p.compressionOptions}}var n=s("./stream/StreamHelper"),r=s("./stream/DataWorker"),a=s("./utf8"),o=s("./compressedObject"),l=s("./stream/GenericWorker");i.prototype={internalStream:function(b){var f=null,p="string";try{if(!b)throw new Error("No output type specified.");var g=(p=b.toLowerCase())==="string"||p==="text";p!=="binarystring"&&p!=="text"||(p="string"),f=this._decompressWorker();var _=!this._dataBinary;_&&!g&&(f=f.pipe(new a.Utf8EncodeWorker)),!_&&g&&(f=f.pipe(new a.Utf8DecodeWorker))}catch(w){(f=new l("error")).error(w)}return new n(f,p,"")},async:function(b,f){return this.internalStream(b).accumulate(f)},nodeStream:function(b,f){return this.internalStream(b||"nodebuffer").toNodejsStream(f)},_compressWorker:function(b,f){if(this._data instanceof o&&this._data.compression.magic===b.magic)return this._data.getCompressedWorker();var p=this._decompressWorker();return this._dataBinary||(p=p.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(p,b,f)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof l?this._data:new r(this._data)}};for(var u=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],h=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},c=0;c<u.length;c++)i.prototype[u[c]]=h;e.exports=i},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(s,e,t){(function(i){"use strict";var n,r,a=i.MutationObserver||i.WebKitMutationObserver;if(a){var o=0,l=new a(b),u=i.document.createTextNode("");l.observe(u,{characterData:!0}),n=function(){u.data=o=++o%2}}else if(i.setImmediate||i.MessageChannel===void 0)n="document"in i&&"onreadystatechange"in i.document.createElement("script")?function(){var f=i.document.createElement("script");f.onreadystatechange=function(){b(),f.onreadystatechange=null,f.parentNode.removeChild(f),f=null},i.document.documentElement.appendChild(f)}:function(){setTimeout(b,0)};else{var h=new i.MessageChannel;h.port1.onmessage=b,n=function(){h.port2.postMessage(0)}}var c=[];function b(){var f,p;r=!0;for(var g=c.length;g;){for(p=c,c=[],f=-1;++f<g;)p[f]();g=c.length}r=!1}e.exports=function(f){c.push(f)!==1||r||n()}}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}],37:[function(s,e,t){"use strict";var i=s("immediate");function n(){}var r={},a=["REJECTED"],o=["FULFILLED"],l=["PENDING"];function u(g){if(typeof g!="function")throw new TypeError("resolver must be a function");this.state=l,this.queue=[],this.outcome=void 0,g!==n&&f(this,g)}function h(g,_,w){this.promise=g,typeof _=="function"&&(this.onFulfilled=_,this.callFulfilled=this.otherCallFulfilled),typeof w=="function"&&(this.onRejected=w,this.callRejected=this.otherCallRejected)}function c(g,_,w){i(function(){var A;try{A=_(w)}catch(v){return r.reject(g,v)}A===g?r.reject(g,new TypeError("Cannot resolve promise with itself")):r.resolve(g,A)})}function b(g){var _=g&&g.then;if(g&&(typeof g=="object"||typeof g=="function")&&typeof _=="function")return function(){_.apply(g,arguments)}}function f(g,_){var w=!1;function A(W){w||(w=!0,r.reject(g,W))}function v(W){w||(w=!0,r.resolve(g,W))}var z=p(function(){_(v,A)});z.status==="error"&&A(z.value)}function p(g,_){var w={};try{w.value=g(_),w.status="success"}catch(A){w.status="error",w.value=A}return w}(e.exports=u).prototype.finally=function(g){if(typeof g!="function")return this;var _=this.constructor;return this.then(function(w){return _.resolve(g()).then(function(){return w})},function(w){return _.resolve(g()).then(function(){throw w})})},u.prototype.catch=function(g){return this.then(null,g)},u.prototype.then=function(g,_){if(typeof g!="function"&&this.state===o||typeof _!="function"&&this.state===a)return this;var w=new this.constructor(n);return this.state!==l?c(w,this.state===o?g:_,this.outcome):this.queue.push(new h(w,g,_)),w},h.prototype.callFulfilled=function(g){r.resolve(this.promise,g)},h.prototype.otherCallFulfilled=function(g){c(this.promise,this.onFulfilled,g)},h.prototype.callRejected=function(g){r.reject(this.promise,g)},h.prototype.otherCallRejected=function(g){c(this.promise,this.onRejected,g)},r.resolve=function(g,_){var w=p(b,_);if(w.status==="error")return r.reject(g,w.value);var A=w.value;if(A)f(g,A);else{g.state=o,g.outcome=_;for(var v=-1,z=g.queue.length;++v<z;)g.queue[v].callFulfilled(_)}return g},r.reject=function(g,_){g.state=a,g.outcome=_;for(var w=-1,A=g.queue.length;++w<A;)g.queue[w].callRejected(_);return g},u.resolve=function(g){return g instanceof this?g:r.resolve(new this(n),g)},u.reject=function(g){var _=new this(n);return r.reject(_,g)},u.all=function(g){var _=this;if(Object.prototype.toString.call(g)!=="[object Array]")return this.reject(new TypeError("must be an array"));var w=g.length,A=!1;if(!w)return this.resolve([]);for(var v=new Array(w),z=0,W=-1,j=new this(n);++W<w;)P(g[W],W);return j;function P(Y,K){_.resolve(Y).then(function(C){v[K]=C,++z!==w||A||(A=!0,r.resolve(j,v))},function(C){A||(A=!0,r.reject(j,C))})}},u.race=function(g){var _=this;if(Object.prototype.toString.call(g)!=="[object Array]")return this.reject(new TypeError("must be an array"));var w=g.length,A=!1;if(!w)return this.resolve([]);for(var v=-1,z=new this(n);++v<w;)W=g[v],_.resolve(W).then(function(j){A||(A=!0,r.resolve(z,j))},function(j){A||(A=!0,r.reject(z,j))});var W;return z}},{immediate:36}],38:[function(s,e,t){"use strict";var i={};(0,s("./lib/utils/common").assign)(i,s("./lib/deflate"),s("./lib/inflate"),s("./lib/zlib/constants")),e.exports=i},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(s,e,t){"use strict";var i=s("./zlib/deflate"),n=s("./utils/common"),r=s("./utils/strings"),a=s("./zlib/messages"),o=s("./zlib/zstream"),l=Object.prototype.toString,u=0,h=-1,c=0,b=8;function f(g){if(!(this instanceof f))return new f(g);this.options=n.assign({level:h,method:b,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:""},g||{});var _=this.options;_.raw&&0<_.windowBits?_.windowBits=-_.windowBits:_.gzip&&0<_.windowBits&&_.windowBits<16&&(_.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new o,this.strm.avail_out=0;var w=i.deflateInit2(this.strm,_.level,_.method,_.windowBits,_.memLevel,_.strategy);if(w!==u)throw new Error(a[w]);if(_.header&&i.deflateSetHeader(this.strm,_.header),_.dictionary){var A;if(A=typeof _.dictionary=="string"?r.string2buf(_.dictionary):l.call(_.dictionary)==="[object ArrayBuffer]"?new Uint8Array(_.dictionary):_.dictionary,(w=i.deflateSetDictionary(this.strm,A))!==u)throw new Error(a[w]);this._dict_set=!0}}function p(g,_){var w=new f(_);if(w.push(g,!0),w.err)throw w.msg||a[w.err];return w.result}f.prototype.push=function(g,_){var w,A,v=this.strm,z=this.options.chunkSize;if(this.ended)return!1;A=_===~~_?_:_===!0?4:0,typeof g=="string"?v.input=r.string2buf(g):l.call(g)==="[object ArrayBuffer]"?v.input=new Uint8Array(g):v.input=g,v.next_in=0,v.avail_in=v.input.length;do{if(v.avail_out===0&&(v.output=new n.Buf8(z),v.next_out=0,v.avail_out=z),(w=i.deflate(v,A))!==1&&w!==u)return this.onEnd(w),!(this.ended=!0);v.avail_out!==0&&(v.avail_in!==0||A!==4&&A!==2)||(this.options.to==="string"?this.onData(r.buf2binstring(n.shrinkBuf(v.output,v.next_out))):this.onData(n.shrinkBuf(v.output,v.next_out)))}while((0<v.avail_in||v.avail_out===0)&&w!==1);return A===4?(w=i.deflateEnd(this.strm),this.onEnd(w),this.ended=!0,w===u):A!==2||(this.onEnd(u),!(v.avail_out=0))},f.prototype.onData=function(g){this.chunks.push(g)},f.prototype.onEnd=function(g){g===u&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=g,this.msg=this.strm.msg},t.Deflate=f,t.deflate=p,t.deflateRaw=function(g,_){return(_=_||{}).raw=!0,p(g,_)},t.gzip=function(g,_){return(_=_||{}).gzip=!0,p(g,_)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(s,e,t){"use strict";var i=s("./zlib/inflate"),n=s("./utils/common"),r=s("./utils/strings"),a=s("./zlib/constants"),o=s("./zlib/messages"),l=s("./zlib/zstream"),u=s("./zlib/gzheader"),h=Object.prototype.toString;function c(f){if(!(this instanceof c))return new c(f);this.options=n.assign({chunkSize:16384,windowBits:0,to:""},f||{});var p=this.options;p.raw&&0<=p.windowBits&&p.windowBits<16&&(p.windowBits=-p.windowBits,p.windowBits===0&&(p.windowBits=-15)),!(0<=p.windowBits&&p.windowBits<16)||f&&f.windowBits||(p.windowBits+=32),15<p.windowBits&&p.windowBits<48&&!(15&p.windowBits)&&(p.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var g=i.inflateInit2(this.strm,p.windowBits);if(g!==a.Z_OK)throw new Error(o[g]);this.header=new u,i.inflateGetHeader(this.strm,this.header)}function b(f,p){var g=new c(p);if(g.push(f,!0),g.err)throw g.msg||o[g.err];return g.result}c.prototype.push=function(f,p){var g,_,w,A,v,z,W=this.strm,j=this.options.chunkSize,P=this.options.dictionary,Y=!1;if(this.ended)return!1;_=p===~~p?p:p===!0?a.Z_FINISH:a.Z_NO_FLUSH,typeof f=="string"?W.input=r.binstring2buf(f):h.call(f)==="[object ArrayBuffer]"?W.input=new Uint8Array(f):W.input=f,W.next_in=0,W.avail_in=W.input.length;do{if(W.avail_out===0&&(W.output=new n.Buf8(j),W.next_out=0,W.avail_out=j),(g=i.inflate(W,a.Z_NO_FLUSH))===a.Z_NEED_DICT&&P&&(z=typeof P=="string"?r.string2buf(P):h.call(P)==="[object ArrayBuffer]"?new Uint8Array(P):P,g=i.inflateSetDictionary(this.strm,z)),g===a.Z_BUF_ERROR&&Y===!0&&(g=a.Z_OK,Y=!1),g!==a.Z_STREAM_END&&g!==a.Z_OK)return this.onEnd(g),!(this.ended=!0);W.next_out&&(W.avail_out!==0&&g!==a.Z_STREAM_END&&(W.avail_in!==0||_!==a.Z_FINISH&&_!==a.Z_SYNC_FLUSH)||(this.options.to==="string"?(w=r.utf8border(W.output,W.next_out),A=W.next_out-w,v=r.buf2string(W.output,w),W.next_out=A,W.avail_out=j-A,A&&n.arraySet(W.output,W.output,w,A,0),this.onData(v)):this.onData(n.shrinkBuf(W.output,W.next_out)))),W.avail_in===0&&W.avail_out===0&&(Y=!0)}while((0<W.avail_in||W.avail_out===0)&&g!==a.Z_STREAM_END);return g===a.Z_STREAM_END&&(_=a.Z_FINISH),_===a.Z_FINISH?(g=i.inflateEnd(this.strm),this.onEnd(g),this.ended=!0,g===a.Z_OK):_!==a.Z_SYNC_FLUSH||(this.onEnd(a.Z_OK),!(W.avail_out=0))},c.prototype.onData=function(f){this.chunks.push(f)},c.prototype.onEnd=function(f){f===a.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=f,this.msg=this.strm.msg},t.Inflate=c,t.inflate=b,t.inflateRaw=function(f,p){return(p=p||{}).raw=!0,b(f,p)},t.ungzip=b},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(s,e,t){"use strict";var i=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";t.assign=function(a){for(var o=Array.prototype.slice.call(arguments,1);o.length;){var l=o.shift();if(l){if(typeof l!="object")throw new TypeError(l+"must be non-object");for(var u in l)l.hasOwnProperty(u)&&(a[u]=l[u])}}return a},t.shrinkBuf=function(a,o){return a.length===o?a:a.subarray?a.subarray(0,o):(a.length=o,a)};var n={arraySet:function(a,o,l,u,h){if(o.subarray&&a.subarray)a.set(o.subarray(l,l+u),h);else for(var c=0;c<u;c++)a[h+c]=o[l+c]},flattenChunks:function(a){var o,l,u,h,c,b;for(o=u=0,l=a.length;o<l;o++)u+=a[o].length;for(b=new Uint8Array(u),o=h=0,l=a.length;o<l;o++)c=a[o],b.set(c,h),h+=c.length;return b}},r={arraySet:function(a,o,l,u,h){for(var c=0;c<u;c++)a[h+c]=o[l+c]},flattenChunks:function(a){return[].concat.apply([],a)}};t.setTyped=function(a){a?(t.Buf8=Uint8Array,t.Buf16=Uint16Array,t.Buf32=Int32Array,t.assign(t,n)):(t.Buf8=Array,t.Buf16=Array,t.Buf32=Array,t.assign(t,r))},t.setTyped(i)},{}],42:[function(s,e,t){"use strict";var i=s("./common"),n=!0,r=!0;try{String.fromCharCode.apply(null,[0])}catch{n=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{r=!1}for(var a=new i.Buf8(256),o=0;o<256;o++)a[o]=252<=o?6:248<=o?5:240<=o?4:224<=o?3:192<=o?2:1;function l(u,h){if(h<65537&&(u.subarray&&r||!u.subarray&&n))return String.fromCharCode.apply(null,i.shrinkBuf(u,h));for(var c="",b=0;b<h;b++)c+=String.fromCharCode(u[b]);return c}a[254]=a[254]=1,t.string2buf=function(u){var h,c,b,f,p,g=u.length,_=0;for(f=0;f<g;f++)(64512&(c=u.charCodeAt(f)))==55296&&f+1<g&&(64512&(b=u.charCodeAt(f+1)))==56320&&(c=65536+(c-55296<<10)+(b-56320),f++),_+=c<128?1:c<2048?2:c<65536?3:4;for(h=new i.Buf8(_),f=p=0;p<_;f++)(64512&(c=u.charCodeAt(f)))==55296&&f+1<g&&(64512&(b=u.charCodeAt(f+1)))==56320&&(c=65536+(c-55296<<10)+(b-56320),f++),c<128?h[p++]=c:(c<2048?h[p++]=192|c>>>6:(c<65536?h[p++]=224|c>>>12:(h[p++]=240|c>>>18,h[p++]=128|c>>>12&63),h[p++]=128|c>>>6&63),h[p++]=128|63&c);return h},t.buf2binstring=function(u){return l(u,u.length)},t.binstring2buf=function(u){for(var h=new i.Buf8(u.length),c=0,b=h.length;c<b;c++)h[c]=u.charCodeAt(c);return h},t.buf2string=function(u,h){var c,b,f,p,g=h||u.length,_=new Array(2*g);for(c=b=0;c<g;)if((f=u[c++])<128)_[b++]=f;else if(4<(p=a[f]))_[b++]=65533,c+=p-1;else{for(f&=p===2?31:p===3?15:7;1<p&&c<g;)f=f<<6|63&u[c++],p--;1<p?_[b++]=65533:f<65536?_[b++]=f:(f-=65536,_[b++]=55296|f>>10&1023,_[b++]=56320|1023&f)}return l(_,b)},t.utf8border=function(u,h){var c;for((h=h||u.length)>u.length&&(h=u.length),c=h-1;0<=c&&(192&u[c])==128;)c--;return c<0||c===0?h:c+a[u[c]]>h?c:h}},{"./common":41}],43:[function(s,e,t){"use strict";e.exports=function(i,n,r,a){for(var o=65535&i|0,l=i>>>16&65535|0,u=0;r!==0;){for(r-=u=2e3<r?2e3:r;l=l+(o=o+n[a++]|0)|0,--u;);o%=65521,l%=65521}return o|l<<16|0}},{}],44:[function(s,e,t){"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(s,e,t){"use strict";var i=function(){for(var n,r=[],a=0;a<256;a++){n=a;for(var o=0;o<8;o++)n=1&n?3988292384^n>>>1:n>>>1;r[a]=n}return r}();e.exports=function(n,r,a,o){var l=i,u=o+a;n^=-1;for(var h=o;h<u;h++)n=n>>>8^l[255&(n^r[h])];return-1^n}},{}],46:[function(s,e,t){"use strict";var i,n=s("../utils/common"),r=s("./trees"),a=s("./adler32"),o=s("./crc32"),l=s("./messages"),u=0,h=4,c=0,b=-2,f=-1,p=4,g=2,_=8,w=9,A=286,v=30,z=19,W=2*A+1,j=15,P=3,Y=258,K=Y+P+1,C=42,B=113,m=1,G=2,O=3,R=4;function J(d,L){return d.msg=l[L],L}function Z(d){return(d<<1)-(4<d?9:0)}function $(d){for(var L=d.length;0<=--L;)d[L]=0}function N(d){var L=d.state,E=L.pending;E>d.avail_out&&(E=d.avail_out),E!==0&&(n.arraySet(d.output,L.pending_buf,L.pending_out,E,d.next_out),d.next_out+=E,L.pending_out+=E,d.total_out+=E,d.avail_out-=E,L.pending-=E,L.pending===0&&(L.pending_out=0))}function k(d,L){r._tr_flush_block(d,0<=d.block_start?d.block_start:-1,d.strstart-d.block_start,L),d.block_start=d.strstart,N(d.strm)}function T(d,L){d.pending_buf[d.pending++]=L}function M(d,L){d.pending_buf[d.pending++]=L>>>8&255,d.pending_buf[d.pending++]=255&L}function U(d,L){var E,x,y=d.max_chain_length,I=d.strstart,F=d.prev_length,V=d.nice_match,S=d.strstart>d.w_size-K?d.strstart-(d.w_size-K):0,D=d.window,Q=d.w_mask,H=d.prev,te=d.strstart+Y,ce=D[I+F-1],ie=D[I+F];d.prev_length>=d.good_match&&(y>>=2),V>d.lookahead&&(V=d.lookahead);do if(D[(E=L)+F]===ie&&D[E+F-1]===ce&&D[E]===D[I]&&D[++E]===D[I+1]){I+=2,E++;do;while(D[++I]===D[++E]&&D[++I]===D[++E]&&D[++I]===D[++E]&&D[++I]===D[++E]&&D[++I]===D[++E]&&D[++I]===D[++E]&&D[++I]===D[++E]&&D[++I]===D[++E]&&I<te);if(x=Y-(te-I),I=te-Y,F<x){if(d.match_start=L,V<=(F=x))break;ce=D[I+F-1],ie=D[I+F]}}while((L=H[L&Q])>S&&--y!=0);return F<=d.lookahead?F:d.lookahead}function q(d){var L,E,x,y,I,F,V,S,D,Q,H=d.w_size;do{if(y=d.window_size-d.lookahead-d.strstart,d.strstart>=H+(H-K)){for(n.arraySet(d.window,d.window,H,H,0),d.match_start-=H,d.strstart-=H,d.block_start-=H,L=E=d.hash_size;x=d.head[--L],d.head[L]=H<=x?x-H:0,--E;);for(L=E=H;x=d.prev[--L],d.prev[L]=H<=x?x-H:0,--E;);y+=H}if(d.strm.avail_in===0)break;if(F=d.strm,V=d.window,S=d.strstart+d.lookahead,D=y,Q=void 0,Q=F.avail_in,D<Q&&(Q=D),E=Q===0?0:(F.avail_in-=Q,n.arraySet(V,F.input,F.next_in,Q,S),F.state.wrap===1?F.adler=a(F.adler,V,Q,S):F.state.wrap===2&&(F.adler=o(F.adler,V,Q,S)),F.next_in+=Q,F.total_in+=Q,Q),d.lookahead+=E,d.lookahead+d.insert>=P)for(I=d.strstart-d.insert,d.ins_h=d.window[I],d.ins_h=(d.ins_h<<d.hash_shift^d.window[I+1])&d.hash_mask;d.insert&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[I+P-1])&d.hash_mask,d.prev[I&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=I,I++,d.insert--,!(d.lookahead+d.insert<P)););}while(d.lookahead<K&&d.strm.avail_in!==0)}function X(d,L){for(var E,x;;){if(d.lookahead<K){if(q(d),d.lookahead<K&&L===u)return m;if(d.lookahead===0)break}if(E=0,d.lookahead>=P&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+P-1])&d.hash_mask,E=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),E!==0&&d.strstart-E<=d.w_size-K&&(d.match_length=U(d,E)),d.match_length>=P)if(x=r._tr_tally(d,d.strstart-d.match_start,d.match_length-P),d.lookahead-=d.match_length,d.match_length<=d.max_lazy_match&&d.lookahead>=P){for(d.match_length--;d.strstart++,d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+P-1])&d.hash_mask,E=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart,--d.match_length!=0;);d.strstart++}else d.strstart+=d.match_length,d.match_length=0,d.ins_h=d.window[d.strstart],d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+1])&d.hash_mask;else x=r._tr_tally(d,0,d.window[d.strstart]),d.lookahead--,d.strstart++;if(x&&(k(d,!1),d.strm.avail_out===0))return m}return d.insert=d.strstart<P-1?d.strstart:P-1,L===h?(k(d,!0),d.strm.avail_out===0?O:R):d.last_lit&&(k(d,!1),d.strm.avail_out===0)?m:G}function ee(d,L){for(var E,x,y;;){if(d.lookahead<K){if(q(d),d.lookahead<K&&L===u)return m;if(d.lookahead===0)break}if(E=0,d.lookahead>=P&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+P-1])&d.hash_mask,E=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),d.prev_length=d.match_length,d.prev_match=d.match_start,d.match_length=P-1,E!==0&&d.prev_length<d.max_lazy_match&&d.strstart-E<=d.w_size-K&&(d.match_length=U(d,E),d.match_length<=5&&(d.strategy===1||d.match_length===P&&4096<d.strstart-d.match_start)&&(d.match_length=P-1)),d.prev_length>=P&&d.match_length<=d.prev_length){for(y=d.strstart+d.lookahead-P,x=r._tr_tally(d,d.strstart-1-d.prev_match,d.prev_length-P),d.lookahead-=d.prev_length-1,d.prev_length-=2;++d.strstart<=y&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+P-1])&d.hash_mask,E=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),--d.prev_length!=0;);if(d.match_available=0,d.match_length=P-1,d.strstart++,x&&(k(d,!1),d.strm.avail_out===0))return m}else if(d.match_available){if((x=r._tr_tally(d,0,d.window[d.strstart-1]))&&k(d,!1),d.strstart++,d.lookahead--,d.strm.avail_out===0)return m}else d.match_available=1,d.strstart++,d.lookahead--}return d.match_available&&(x=r._tr_tally(d,0,d.window[d.strstart-1]),d.match_available=0),d.insert=d.strstart<P-1?d.strstart:P-1,L===h?(k(d,!0),d.strm.avail_out===0?O:R):d.last_lit&&(k(d,!1),d.strm.avail_out===0)?m:G}function re(d,L,E,x,y){this.good_length=d,this.max_lazy=L,this.nice_length=E,this.max_chain=x,this.func=y}function ae(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=_,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new n.Buf16(2*W),this.dyn_dtree=new n.Buf16(2*(2*v+1)),this.bl_tree=new n.Buf16(2*(2*z+1)),$(this.dyn_ltree),$(this.dyn_dtree),$(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new n.Buf16(j+1),this.heap=new n.Buf16(2*A+1),$(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new n.Buf16(2*A+1),$(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function se(d){var L;return d&&d.state?(d.total_in=d.total_out=0,d.data_type=g,(L=d.state).pending=0,L.pending_out=0,L.wrap<0&&(L.wrap=-L.wrap),L.status=L.wrap?C:B,d.adler=L.wrap===2?0:1,L.last_flush=u,r._tr_init(L),c):J(d,b)}function fe(d){var L=se(d);return L===c&&function(E){E.window_size=2*E.w_size,$(E.head),E.max_lazy_match=i[E.level].max_lazy,E.good_match=i[E.level].good_length,E.nice_match=i[E.level].nice_length,E.max_chain_length=i[E.level].max_chain,E.strstart=0,E.block_start=0,E.lookahead=0,E.insert=0,E.match_length=E.prev_length=P-1,E.match_available=0,E.ins_h=0}(d.state),L}function he(d,L,E,x,y,I){if(!d)return b;var F=1;if(L===f&&(L=6),x<0?(F=0,x=-x):15<x&&(F=2,x-=16),y<1||w<y||E!==_||x<8||15<x||L<0||9<L||I<0||p<I)return J(d,b);x===8&&(x=9);var V=new ae;return(d.state=V).strm=d,V.wrap=F,V.gzhead=null,V.w_bits=x,V.w_size=1<<V.w_bits,V.w_mask=V.w_size-1,V.hash_bits=y+7,V.hash_size=1<<V.hash_bits,V.hash_mask=V.hash_size-1,V.hash_shift=~~((V.hash_bits+P-1)/P),V.window=new n.Buf8(2*V.w_size),V.head=new n.Buf16(V.hash_size),V.prev=new n.Buf16(V.w_size),V.lit_bufsize=1<<y+6,V.pending_buf_size=4*V.lit_bufsize,V.pending_buf=new n.Buf8(V.pending_buf_size),V.d_buf=1*V.lit_bufsize,V.l_buf=3*V.lit_bufsize,V.level=L,V.strategy=I,V.method=E,fe(d)}i=[new re(0,0,0,0,function(d,L){var E=65535;for(E>d.pending_buf_size-5&&(E=d.pending_buf_size-5);;){if(d.lookahead<=1){if(q(d),d.lookahead===0&&L===u)return m;if(d.lookahead===0)break}d.strstart+=d.lookahead,d.lookahead=0;var x=d.block_start+E;if((d.strstart===0||d.strstart>=x)&&(d.lookahead=d.strstart-x,d.strstart=x,k(d,!1),d.strm.avail_out===0)||d.strstart-d.block_start>=d.w_size-K&&(k(d,!1),d.strm.avail_out===0))return m}return d.insert=0,L===h?(k(d,!0),d.strm.avail_out===0?O:R):(d.strstart>d.block_start&&(k(d,!1),d.strm.avail_out),m)}),new re(4,4,8,4,X),new re(4,5,16,8,X),new re(4,6,32,32,X),new re(4,4,16,16,ee),new re(8,16,32,32,ee),new re(8,16,128,128,ee),new re(8,32,128,256,ee),new re(32,128,258,1024,ee),new re(32,258,258,4096,ee)],t.deflateInit=function(d,L){return he(d,L,_,15,8,0)},t.deflateInit2=he,t.deflateReset=fe,t.deflateResetKeep=se,t.deflateSetHeader=function(d,L){return d&&d.state?d.state.wrap!==2?b:(d.state.gzhead=L,c):b},t.deflate=function(d,L){var E,x,y,I;if(!d||!d.state||5<L||L<0)return d?J(d,b):b;if(x=d.state,!d.output||!d.input&&d.avail_in!==0||x.status===666&&L!==h)return J(d,d.avail_out===0?-5:b);if(x.strm=d,E=x.last_flush,x.last_flush=L,x.status===C)if(x.wrap===2)d.adler=0,T(x,31),T(x,139),T(x,8),x.gzhead?(T(x,(x.gzhead.text?1:0)+(x.gzhead.hcrc?2:0)+(x.gzhead.extra?4:0)+(x.gzhead.name?8:0)+(x.gzhead.comment?16:0)),T(x,255&x.gzhead.time),T(x,x.gzhead.time>>8&255),T(x,x.gzhead.time>>16&255),T(x,x.gzhead.time>>24&255),T(x,x.level===9?2:2<=x.strategy||x.level<2?4:0),T(x,255&x.gzhead.os),x.gzhead.extra&&x.gzhead.extra.length&&(T(x,255&x.gzhead.extra.length),T(x,x.gzhead.extra.length>>8&255)),x.gzhead.hcrc&&(d.adler=o(d.adler,x.pending_buf,x.pending,0)),x.gzindex=0,x.status=69):(T(x,0),T(x,0),T(x,0),T(x,0),T(x,0),T(x,x.level===9?2:2<=x.strategy||x.level<2?4:0),T(x,3),x.status=B);else{var F=_+(x.w_bits-8<<4)<<8;F|=(2<=x.strategy||x.level<2?0:x.level<6?1:x.level===6?2:3)<<6,x.strstart!==0&&(F|=32),F+=31-F%31,x.status=B,M(x,F),x.strstart!==0&&(M(x,d.adler>>>16),M(x,65535&d.adler)),d.adler=1}if(x.status===69)if(x.gzhead.extra){for(y=x.pending;x.gzindex<(65535&x.gzhead.extra.length)&&(x.pending!==x.pending_buf_size||(x.gzhead.hcrc&&x.pending>y&&(d.adler=o(d.adler,x.pending_buf,x.pending-y,y)),N(d),y=x.pending,x.pending!==x.pending_buf_size));)T(x,255&x.gzhead.extra[x.gzindex]),x.gzindex++;x.gzhead.hcrc&&x.pending>y&&(d.adler=o(d.adler,x.pending_buf,x.pending-y,y)),x.gzindex===x.gzhead.extra.length&&(x.gzindex=0,x.status=73)}else x.status=73;if(x.status===73)if(x.gzhead.name){y=x.pending;do{if(x.pending===x.pending_buf_size&&(x.gzhead.hcrc&&x.pending>y&&(d.adler=o(d.adler,x.pending_buf,x.pending-y,y)),N(d),y=x.pending,x.pending===x.pending_buf_size)){I=1;break}I=x.gzindex<x.gzhead.name.length?255&x.gzhead.name.charCodeAt(x.gzindex++):0,T(x,I)}while(I!==0);x.gzhead.hcrc&&x.pending>y&&(d.adler=o(d.adler,x.pending_buf,x.pending-y,y)),I===0&&(x.gzindex=0,x.status=91)}else x.status=91;if(x.status===91)if(x.gzhead.comment){y=x.pending;do{if(x.pending===x.pending_buf_size&&(x.gzhead.hcrc&&x.pending>y&&(d.adler=o(d.adler,x.pending_buf,x.pending-y,y)),N(d),y=x.pending,x.pending===x.pending_buf_size)){I=1;break}I=x.gzindex<x.gzhead.comment.length?255&x.gzhead.comment.charCodeAt(x.gzindex++):0,T(x,I)}while(I!==0);x.gzhead.hcrc&&x.pending>y&&(d.adler=o(d.adler,x.pending_buf,x.pending-y,y)),I===0&&(x.status=103)}else x.status=103;if(x.status===103&&(x.gzhead.hcrc?(x.pending+2>x.pending_buf_size&&N(d),x.pending+2<=x.pending_buf_size&&(T(x,255&d.adler),T(x,d.adler>>8&255),d.adler=0,x.status=B)):x.status=B),x.pending!==0){if(N(d),d.avail_out===0)return x.last_flush=-1,c}else if(d.avail_in===0&&Z(L)<=Z(E)&&L!==h)return J(d,-5);if(x.status===666&&d.avail_in!==0)return J(d,-5);if(d.avail_in!==0||x.lookahead!==0||L!==u&&x.status!==666){var V=x.strategy===2?function(S,D){for(var Q;;){if(S.lookahead===0&&(q(S),S.lookahead===0)){if(D===u)return m;break}if(S.match_length=0,Q=r._tr_tally(S,0,S.window[S.strstart]),S.lookahead--,S.strstart++,Q&&(k(S,!1),S.strm.avail_out===0))return m}return S.insert=0,D===h?(k(S,!0),S.strm.avail_out===0?O:R):S.last_lit&&(k(S,!1),S.strm.avail_out===0)?m:G}(x,L):x.strategy===3?function(S,D){for(var Q,H,te,ce,ie=S.window;;){if(S.lookahead<=Y){if(q(S),S.lookahead<=Y&&D===u)return m;if(S.lookahead===0)break}if(S.match_length=0,S.lookahead>=P&&0<S.strstart&&(H=ie[te=S.strstart-1])===ie[++te]&&H===ie[++te]&&H===ie[++te]){ce=S.strstart+Y;do;while(H===ie[++te]&&H===ie[++te]&&H===ie[++te]&&H===ie[++te]&&H===ie[++te]&&H===ie[++te]&&H===ie[++te]&&H===ie[++te]&&te<ce);S.match_length=Y-(ce-te),S.match_length>S.lookahead&&(S.match_length=S.lookahead)}if(S.match_length>=P?(Q=r._tr_tally(S,1,S.match_length-P),S.lookahead-=S.match_length,S.strstart+=S.match_length,S.match_length=0):(Q=r._tr_tally(S,0,S.window[S.strstart]),S.lookahead--,S.strstart++),Q&&(k(S,!1),S.strm.avail_out===0))return m}return S.insert=0,D===h?(k(S,!0),S.strm.avail_out===0?O:R):S.last_lit&&(k(S,!1),S.strm.avail_out===0)?m:G}(x,L):i[x.level].func(x,L);if(V!==O&&V!==R||(x.status=666),V===m||V===O)return d.avail_out===0&&(x.last_flush=-1),c;if(V===G&&(L===1?r._tr_align(x):L!==5&&(r._tr_stored_block(x,0,0,!1),L===3&&($(x.head),x.lookahead===0&&(x.strstart=0,x.block_start=0,x.insert=0))),N(d),d.avail_out===0))return x.last_flush=-1,c}return L!==h?c:x.wrap<=0?1:(x.wrap===2?(T(x,255&d.adler),T(x,d.adler>>8&255),T(x,d.adler>>16&255),T(x,d.adler>>24&255),T(x,255&d.total_in),T(x,d.total_in>>8&255),T(x,d.total_in>>16&255),T(x,d.total_in>>24&255)):(M(x,d.adler>>>16),M(x,65535&d.adler)),N(d),0<x.wrap&&(x.wrap=-x.wrap),x.pending!==0?c:1)},t.deflateEnd=function(d){var L;return d&&d.state?(L=d.state.status)!==C&&L!==69&&L!==73&&L!==91&&L!==103&&L!==B&&L!==666?J(d,b):(d.state=null,L===B?J(d,-3):c):b},t.deflateSetDictionary=function(d,L){var E,x,y,I,F,V,S,D,Q=L.length;if(!d||!d.state||(I=(E=d.state).wrap)===2||I===1&&E.status!==C||E.lookahead)return b;for(I===1&&(d.adler=a(d.adler,L,Q,0)),E.wrap=0,Q>=E.w_size&&(I===0&&($(E.head),E.strstart=0,E.block_start=0,E.insert=0),D=new n.Buf8(E.w_size),n.arraySet(D,L,Q-E.w_size,E.w_size,0),L=D,Q=E.w_size),F=d.avail_in,V=d.next_in,S=d.input,d.avail_in=Q,d.next_in=0,d.input=L,q(E);E.lookahead>=P;){for(x=E.strstart,y=E.lookahead-(P-1);E.ins_h=(E.ins_h<<E.hash_shift^E.window[x+P-1])&E.hash_mask,E.prev[x&E.w_mask]=E.head[E.ins_h],E.head[E.ins_h]=x,x++,--y;);E.strstart=x,E.lookahead=P-1,q(E)}return E.strstart+=E.lookahead,E.block_start=E.strstart,E.insert=E.lookahead,E.lookahead=0,E.match_length=E.prev_length=P-1,E.match_available=0,d.next_in=V,d.input=S,d.avail_in=F,E.wrap=I,c},t.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(s,e,t){"use strict";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],48:[function(s,e,t){"use strict";e.exports=function(i,n){var r,a,o,l,u,h,c,b,f,p,g,_,w,A,v,z,W,j,P,Y,K,C,B,m,G;r=i.state,a=i.next_in,m=i.input,o=a+(i.avail_in-5),l=i.next_out,G=i.output,u=l-(n-i.avail_out),h=l+(i.avail_out-257),c=r.dmax,b=r.wsize,f=r.whave,p=r.wnext,g=r.window,_=r.hold,w=r.bits,A=r.lencode,v=r.distcode,z=(1<<r.lenbits)-1,W=(1<<r.distbits)-1;e:do{w<15&&(_+=m[a++]<<w,w+=8,_+=m[a++]<<w,w+=8),j=A[_&z];t:for(;;){if(_>>>=P=j>>>24,w-=P,(P=j>>>16&255)===0)G[l++]=65535&j;else{if(!(16&P)){if(!(64&P)){j=A[(65535&j)+(_&(1<<P)-1)];continue t}if(32&P){r.mode=12;break e}i.msg="invalid literal/length code",r.mode=30;break e}Y=65535&j,(P&=15)&&(w<P&&(_+=m[a++]<<w,w+=8),Y+=_&(1<<P)-1,_>>>=P,w-=P),w<15&&(_+=m[a++]<<w,w+=8,_+=m[a++]<<w,w+=8),j=v[_&W];r:for(;;){if(_>>>=P=j>>>24,w-=P,!(16&(P=j>>>16&255))){if(!(64&P)){j=v[(65535&j)+(_&(1<<P)-1)];continue r}i.msg="invalid distance code",r.mode=30;break e}if(K=65535&j,w<(P&=15)&&(_+=m[a++]<<w,(w+=8)<P&&(_+=m[a++]<<w,w+=8)),c<(K+=_&(1<<P)-1)){i.msg="invalid distance too far back",r.mode=30;break e}if(_>>>=P,w-=P,(P=l-u)<K){if(f<(P=K-P)&&r.sane){i.msg="invalid distance too far back",r.mode=30;break e}if(B=g,(C=0)===p){if(C+=b-P,P<Y){for(Y-=P;G[l++]=g[C++],--P;);C=l-K,B=G}}else if(p<P){if(C+=b+p-P,(P-=p)<Y){for(Y-=P;G[l++]=g[C++],--P;);if(C=0,p<Y){for(Y-=P=p;G[l++]=g[C++],--P;);C=l-K,B=G}}}else if(C+=p-P,P<Y){for(Y-=P;G[l++]=g[C++],--P;);C=l-K,B=G}for(;2<Y;)G[l++]=B[C++],G[l++]=B[C++],G[l++]=B[C++],Y-=3;Y&&(G[l++]=B[C++],1<Y&&(G[l++]=B[C++]))}else{for(C=l-K;G[l++]=G[C++],G[l++]=G[C++],G[l++]=G[C++],2<(Y-=3););Y&&(G[l++]=G[C++],1<Y&&(G[l++]=G[C++]))}break}}break}}while(a<o&&l<h);a-=Y=w>>3,_&=(1<<(w-=Y<<3))-1,i.next_in=a,i.next_out=l,i.avail_in=a<o?o-a+5:5-(a-o),i.avail_out=l<h?h-l+257:257-(l-h),r.hold=_,r.bits=w}},{}],49:[function(s,e,t){"use strict";var i=s("../utils/common"),n=s("./adler32"),r=s("./crc32"),a=s("./inffast"),o=s("./inftrees"),l=1,u=2,h=0,c=-2,b=1,f=852,p=592;function g(C){return(C>>>24&255)+(C>>>8&65280)+((65280&C)<<8)+((255&C)<<24)}function _(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function w(C){var B;return C&&C.state?(B=C.state,C.total_in=C.total_out=B.total=0,C.msg="",B.wrap&&(C.adler=1&B.wrap),B.mode=b,B.last=0,B.havedict=0,B.dmax=32768,B.head=null,B.hold=0,B.bits=0,B.lencode=B.lendyn=new i.Buf32(f),B.distcode=B.distdyn=new i.Buf32(p),B.sane=1,B.back=-1,h):c}function A(C){var B;return C&&C.state?((B=C.state).wsize=0,B.whave=0,B.wnext=0,w(C)):c}function v(C,B){var m,G;return C&&C.state?(G=C.state,B<0?(m=0,B=-B):(m=1+(B>>4),B<48&&(B&=15)),B&&(B<8||15<B)?c:(G.window!==null&&G.wbits!==B&&(G.window=null),G.wrap=m,G.wbits=B,A(C))):c}function z(C,B){var m,G;return C?(G=new _,(C.state=G).window=null,(m=v(C,B))!==h&&(C.state=null),m):c}var W,j,P=!0;function Y(C){if(P){var B;for(W=new i.Buf32(512),j=new i.Buf32(32),B=0;B<144;)C.lens[B++]=8;for(;B<256;)C.lens[B++]=9;for(;B<280;)C.lens[B++]=7;for(;B<288;)C.lens[B++]=8;for(o(l,C.lens,0,288,W,0,C.work,{bits:9}),B=0;B<32;)C.lens[B++]=5;o(u,C.lens,0,32,j,0,C.work,{bits:5}),P=!1}C.lencode=W,C.lenbits=9,C.distcode=j,C.distbits=5}function K(C,B,m,G){var O,R=C.state;return R.window===null&&(R.wsize=1<<R.wbits,R.wnext=0,R.whave=0,R.window=new i.Buf8(R.wsize)),G>=R.wsize?(i.arraySet(R.window,B,m-R.wsize,R.wsize,0),R.wnext=0,R.whave=R.wsize):(G<(O=R.wsize-R.wnext)&&(O=G),i.arraySet(R.window,B,m-G,O,R.wnext),(G-=O)?(i.arraySet(R.window,B,m-G,G,0),R.wnext=G,R.whave=R.wsize):(R.wnext+=O,R.wnext===R.wsize&&(R.wnext=0),R.whave<R.wsize&&(R.whave+=O))),0}t.inflateReset=A,t.inflateReset2=v,t.inflateResetKeep=w,t.inflateInit=function(C){return z(C,15)},t.inflateInit2=z,t.inflate=function(C,B){var m,G,O,R,J,Z,$,N,k,T,M,U,q,X,ee,re,ae,se,fe,he,d,L,E,x,y=0,I=new i.Buf8(4),F=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!C||!C.state||!C.output||!C.input&&C.avail_in!==0)return c;(m=C.state).mode===12&&(m.mode=13),J=C.next_out,O=C.output,$=C.avail_out,R=C.next_in,G=C.input,Z=C.avail_in,N=m.hold,k=m.bits,T=Z,M=$,L=h;e:for(;;)switch(m.mode){case b:if(m.wrap===0){m.mode=13;break}for(;k<16;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(2&m.wrap&&N===35615){I[m.check=0]=255&N,I[1]=N>>>8&255,m.check=r(m.check,I,2,0),k=N=0,m.mode=2;break}if(m.flags=0,m.head&&(m.head.done=!1),!(1&m.wrap)||(((255&N)<<8)+(N>>8))%31){C.msg="incorrect header check",m.mode=30;break}if((15&N)!=8){C.msg="unknown compression method",m.mode=30;break}if(k-=4,d=8+(15&(N>>>=4)),m.wbits===0)m.wbits=d;else if(d>m.wbits){C.msg="invalid window size",m.mode=30;break}m.dmax=1<<d,C.adler=m.check=1,m.mode=512&N?10:12,k=N=0;break;case 2:for(;k<16;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(m.flags=N,(255&m.flags)!=8){C.msg="unknown compression method",m.mode=30;break}if(57344&m.flags){C.msg="unknown header flags set",m.mode=30;break}m.head&&(m.head.text=N>>8&1),512&m.flags&&(I[0]=255&N,I[1]=N>>>8&255,m.check=r(m.check,I,2,0)),k=N=0,m.mode=3;case 3:for(;k<32;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}m.head&&(m.head.time=N),512&m.flags&&(I[0]=255&N,I[1]=N>>>8&255,I[2]=N>>>16&255,I[3]=N>>>24&255,m.check=r(m.check,I,4,0)),k=N=0,m.mode=4;case 4:for(;k<16;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}m.head&&(m.head.xflags=255&N,m.head.os=N>>8),512&m.flags&&(I[0]=255&N,I[1]=N>>>8&255,m.check=r(m.check,I,2,0)),k=N=0,m.mode=5;case 5:if(1024&m.flags){for(;k<16;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}m.length=N,m.head&&(m.head.extra_len=N),512&m.flags&&(I[0]=255&N,I[1]=N>>>8&255,m.check=r(m.check,I,2,0)),k=N=0}else m.head&&(m.head.extra=null);m.mode=6;case 6:if(1024&m.flags&&(Z<(U=m.length)&&(U=Z),U&&(m.head&&(d=m.head.extra_len-m.length,m.head.extra||(m.head.extra=new Array(m.head.extra_len)),i.arraySet(m.head.extra,G,R,U,d)),512&m.flags&&(m.check=r(m.check,G,U,R)),Z-=U,R+=U,m.length-=U),m.length))break e;m.length=0,m.mode=7;case 7:if(2048&m.flags){if(Z===0)break e;for(U=0;d=G[R+U++],m.head&&d&&m.length<65536&&(m.head.name+=String.fromCharCode(d)),d&&U<Z;);if(512&m.flags&&(m.check=r(m.check,G,U,R)),Z-=U,R+=U,d)break e}else m.head&&(m.head.name=null);m.length=0,m.mode=8;case 8:if(4096&m.flags){if(Z===0)break e;for(U=0;d=G[R+U++],m.head&&d&&m.length<65536&&(m.head.comment+=String.fromCharCode(d)),d&&U<Z;);if(512&m.flags&&(m.check=r(m.check,G,U,R)),Z-=U,R+=U,d)break e}else m.head&&(m.head.comment=null);m.mode=9;case 9:if(512&m.flags){for(;k<16;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(N!==(65535&m.check)){C.msg="header crc mismatch",m.mode=30;break}k=N=0}m.head&&(m.head.hcrc=m.flags>>9&1,m.head.done=!0),C.adler=m.check=0,m.mode=12;break;case 10:for(;k<32;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}C.adler=m.check=g(N),k=N=0,m.mode=11;case 11:if(m.havedict===0)return C.next_out=J,C.avail_out=$,C.next_in=R,C.avail_in=Z,m.hold=N,m.bits=k,2;C.adler=m.check=1,m.mode=12;case 12:if(B===5||B===6)break e;case 13:if(m.last){N>>>=7&k,k-=7&k,m.mode=27;break}for(;k<3;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}switch(m.last=1&N,k-=1,3&(N>>>=1)){case 0:m.mode=14;break;case 1:if(Y(m),m.mode=20,B!==6)break;N>>>=2,k-=2;break e;case 2:m.mode=17;break;case 3:C.msg="invalid block type",m.mode=30}N>>>=2,k-=2;break;case 14:for(N>>>=7&k,k-=7&k;k<32;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if((65535&N)!=(N>>>16^65535)){C.msg="invalid stored block lengths",m.mode=30;break}if(m.length=65535&N,k=N=0,m.mode=15,B===6)break e;case 15:m.mode=16;case 16:if(U=m.length){if(Z<U&&(U=Z),$<U&&(U=$),U===0)break e;i.arraySet(O,G,R,U,J),Z-=U,R+=U,$-=U,J+=U,m.length-=U;break}m.mode=12;break;case 17:for(;k<14;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(m.nlen=257+(31&N),N>>>=5,k-=5,m.ndist=1+(31&N),N>>>=5,k-=5,m.ncode=4+(15&N),N>>>=4,k-=4,286<m.nlen||30<m.ndist){C.msg="too many length or distance symbols",m.mode=30;break}m.have=0,m.mode=18;case 18:for(;m.have<m.ncode;){for(;k<3;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}m.lens[F[m.have++]]=7&N,N>>>=3,k-=3}for(;m.have<19;)m.lens[F[m.have++]]=0;if(m.lencode=m.lendyn,m.lenbits=7,E={bits:m.lenbits},L=o(0,m.lens,0,19,m.lencode,0,m.work,E),m.lenbits=E.bits,L){C.msg="invalid code lengths set",m.mode=30;break}m.have=0,m.mode=19;case 19:for(;m.have<m.nlen+m.ndist;){for(;re=(y=m.lencode[N&(1<<m.lenbits)-1])>>>16&255,ae=65535&y,!((ee=y>>>24)<=k);){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(ae<16)N>>>=ee,k-=ee,m.lens[m.have++]=ae;else{if(ae===16){for(x=ee+2;k<x;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(N>>>=ee,k-=ee,m.have===0){C.msg="invalid bit length repeat",m.mode=30;break}d=m.lens[m.have-1],U=3+(3&N),N>>>=2,k-=2}else if(ae===17){for(x=ee+3;k<x;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}k-=ee,d=0,U=3+(7&(N>>>=ee)),N>>>=3,k-=3}else{for(x=ee+7;k<x;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}k-=ee,d=0,U=11+(127&(N>>>=ee)),N>>>=7,k-=7}if(m.have+U>m.nlen+m.ndist){C.msg="invalid bit length repeat",m.mode=30;break}for(;U--;)m.lens[m.have++]=d}}if(m.mode===30)break;if(m.lens[256]===0){C.msg="invalid code -- missing end-of-block",m.mode=30;break}if(m.lenbits=9,E={bits:m.lenbits},L=o(l,m.lens,0,m.nlen,m.lencode,0,m.work,E),m.lenbits=E.bits,L){C.msg="invalid literal/lengths set",m.mode=30;break}if(m.distbits=6,m.distcode=m.distdyn,E={bits:m.distbits},L=o(u,m.lens,m.nlen,m.ndist,m.distcode,0,m.work,E),m.distbits=E.bits,L){C.msg="invalid distances set",m.mode=30;break}if(m.mode=20,B===6)break e;case 20:m.mode=21;case 21:if(6<=Z&&258<=$){C.next_out=J,C.avail_out=$,C.next_in=R,C.avail_in=Z,m.hold=N,m.bits=k,a(C,M),J=C.next_out,O=C.output,$=C.avail_out,R=C.next_in,G=C.input,Z=C.avail_in,N=m.hold,k=m.bits,m.mode===12&&(m.back=-1);break}for(m.back=0;re=(y=m.lencode[N&(1<<m.lenbits)-1])>>>16&255,ae=65535&y,!((ee=y>>>24)<=k);){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(re&&!(240&re)){for(se=ee,fe=re,he=ae;re=(y=m.lencode[he+((N&(1<<se+fe)-1)>>se)])>>>16&255,ae=65535&y,!(se+(ee=y>>>24)<=k);){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}N>>>=se,k-=se,m.back+=se}if(N>>>=ee,k-=ee,m.back+=ee,m.length=ae,re===0){m.mode=26;break}if(32&re){m.back=-1,m.mode=12;break}if(64&re){C.msg="invalid literal/length code",m.mode=30;break}m.extra=15&re,m.mode=22;case 22:if(m.extra){for(x=m.extra;k<x;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}m.length+=N&(1<<m.extra)-1,N>>>=m.extra,k-=m.extra,m.back+=m.extra}m.was=m.length,m.mode=23;case 23:for(;re=(y=m.distcode[N&(1<<m.distbits)-1])>>>16&255,ae=65535&y,!((ee=y>>>24)<=k);){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(!(240&re)){for(se=ee,fe=re,he=ae;re=(y=m.distcode[he+((N&(1<<se+fe)-1)>>se)])>>>16&255,ae=65535&y,!(se+(ee=y>>>24)<=k);){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}N>>>=se,k-=se,m.back+=se}if(N>>>=ee,k-=ee,m.back+=ee,64&re){C.msg="invalid distance code",m.mode=30;break}m.offset=ae,m.extra=15&re,m.mode=24;case 24:if(m.extra){for(x=m.extra;k<x;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}m.offset+=N&(1<<m.extra)-1,N>>>=m.extra,k-=m.extra,m.back+=m.extra}if(m.offset>m.dmax){C.msg="invalid distance too far back",m.mode=30;break}m.mode=25;case 25:if($===0)break e;if(U=M-$,m.offset>U){if((U=m.offset-U)>m.whave&&m.sane){C.msg="invalid distance too far back",m.mode=30;break}q=U>m.wnext?(U-=m.wnext,m.wsize-U):m.wnext-U,U>m.length&&(U=m.length),X=m.window}else X=O,q=J-m.offset,U=m.length;for($<U&&(U=$),$-=U,m.length-=U;O[J++]=X[q++],--U;);m.length===0&&(m.mode=21);break;case 26:if($===0)break e;O[J++]=m.length,$--,m.mode=21;break;case 27:if(m.wrap){for(;k<32;){if(Z===0)break e;Z--,N|=G[R++]<<k,k+=8}if(M-=$,C.total_out+=M,m.total+=M,M&&(C.adler=m.check=m.flags?r(m.check,O,M,J-M):n(m.check,O,M,J-M)),M=$,(m.flags?N:g(N))!==m.check){C.msg="incorrect data check",m.mode=30;break}k=N=0}m.mode=28;case 28:if(m.wrap&&m.flags){for(;k<32;){if(Z===0)break e;Z--,N+=G[R++]<<k,k+=8}if(N!==(4294967295&m.total)){C.msg="incorrect length check",m.mode=30;break}k=N=0}m.mode=29;case 29:L=1;break e;case 30:L=-3;break e;case 31:return-4;case 32:default:return c}return C.next_out=J,C.avail_out=$,C.next_in=R,C.avail_in=Z,m.hold=N,m.bits=k,(m.wsize||M!==C.avail_out&&m.mode<30&&(m.mode<27||B!==4))&&K(C,C.output,C.next_out,M-C.avail_out)?(m.mode=31,-4):(T-=C.avail_in,M-=C.avail_out,C.total_in+=T,C.total_out+=M,m.total+=M,m.wrap&&M&&(C.adler=m.check=m.flags?r(m.check,O,M,C.next_out-M):n(m.check,O,M,C.next_out-M)),C.data_type=m.bits+(m.last?64:0)+(m.mode===12?128:0)+(m.mode===20||m.mode===15?256:0),(T==0&&M===0||B===4)&&L===h&&(L=-5),L)},t.inflateEnd=function(C){if(!C||!C.state)return c;var B=C.state;return B.window&&(B.window=null),C.state=null,h},t.inflateGetHeader=function(C,B){var m;return C&&C.state&&2&(m=C.state).wrap?((m.head=B).done=!1,h):c},t.inflateSetDictionary=function(C,B){var m,G=B.length;return C&&C.state?(m=C.state).wrap!==0&&m.mode!==11?c:m.mode===11&&n(1,B,G,0)!==m.check?-3:K(C,B,G,G)?(m.mode=31,-4):(m.havedict=1,h):c},t.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(s,e,t){"use strict";var i=s("../utils/common"),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],r=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],a=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],o=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(l,u,h,c,b,f,p,g){var _,w,A,v,z,W,j,P,Y,K=g.bits,C=0,B=0,m=0,G=0,O=0,R=0,J=0,Z=0,$=0,N=0,k=null,T=0,M=new i.Buf16(16),U=new i.Buf16(16),q=null,X=0;for(C=0;C<=15;C++)M[C]=0;for(B=0;B<c;B++)M[u[h+B]]++;for(O=K,G=15;1<=G&&M[G]===0;G--);if(G<O&&(O=G),G===0)return b[f++]=20971520,b[f++]=20971520,g.bits=1,0;for(m=1;m<G&&M[m]===0;m++);for(O<m&&(O=m),C=Z=1;C<=15;C++)if(Z<<=1,(Z-=M[C])<0)return-1;if(0<Z&&(l===0||G!==1))return-1;for(U[1]=0,C=1;C<15;C++)U[C+1]=U[C]+M[C];for(B=0;B<c;B++)u[h+B]!==0&&(p[U[u[h+B]]++]=B);if(W=l===0?(k=q=p,19):l===1?(k=n,T-=257,q=r,X-=257,256):(k=a,q=o,-1),C=m,z=f,J=B=N=0,A=-1,v=($=1<<(R=O))-1,l===1&&852<$||l===2&&592<$)return 1;for(;;){for(j=C-J,Y=p[B]<W?(P=0,p[B]):p[B]>W?(P=q[X+p[B]],k[T+p[B]]):(P=96,0),_=1<<C-J,m=w=1<<R;b[z+(N>>J)+(w-=_)]=j<<24|P<<16|Y|0,w!==0;);for(_=1<<C-1;N&_;)_>>=1;if(_!==0?(N&=_-1,N+=_):N=0,B++,--M[C]==0){if(C===G)break;C=u[h+p[B]]}if(O<C&&(N&v)!==A){for(J===0&&(J=O),z+=m,Z=1<<(R=C-J);R+J<G&&!((Z-=M[R+J])<=0);)R++,Z<<=1;if($+=1<<R,l===1&&852<$||l===2&&592<$)return 1;b[A=N&v]=O<<24|R<<16|z-f|0}}return N!==0&&(b[z+N]=C-J<<24|64<<16|0),g.bits=O,0}},{"../utils/common":41}],51:[function(s,e,t){"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],52:[function(s,e,t){"use strict";var i=s("../utils/common"),n=0,r=1;function a(y){for(var I=y.length;0<=--I;)y[I]=0}var o=0,l=29,u=256,h=u+1+l,c=30,b=19,f=2*h+1,p=15,g=16,_=7,w=256,A=16,v=17,z=18,W=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],j=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],P=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],Y=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],K=new Array(2*(h+2));a(K);var C=new Array(2*c);a(C);var B=new Array(512);a(B);var m=new Array(256);a(m);var G=new Array(l);a(G);var O,R,J,Z=new Array(c);function $(y,I,F,V,S){this.static_tree=y,this.extra_bits=I,this.extra_base=F,this.elems=V,this.max_length=S,this.has_stree=y&&y.length}function N(y,I){this.dyn_tree=y,this.max_code=0,this.stat_desc=I}function k(y){return y<256?B[y]:B[256+(y>>>7)]}function T(y,I){y.pending_buf[y.pending++]=255&I,y.pending_buf[y.pending++]=I>>>8&255}function M(y,I,F){y.bi_valid>g-F?(y.bi_buf|=I<<y.bi_valid&65535,T(y,y.bi_buf),y.bi_buf=I>>g-y.bi_valid,y.bi_valid+=F-g):(y.bi_buf|=I<<y.bi_valid&65535,y.bi_valid+=F)}function U(y,I,F){M(y,F[2*I],F[2*I+1])}function q(y,I){for(var F=0;F|=1&y,y>>>=1,F<<=1,0<--I;);return F>>>1}function X(y,I,F){var V,S,D=new Array(p+1),Q=0;for(V=1;V<=p;V++)D[V]=Q=Q+F[V-1]<<1;for(S=0;S<=I;S++){var H=y[2*S+1];H!==0&&(y[2*S]=q(D[H]++,H))}}function ee(y){var I;for(I=0;I<h;I++)y.dyn_ltree[2*I]=0;for(I=0;I<c;I++)y.dyn_dtree[2*I]=0;for(I=0;I<b;I++)y.bl_tree[2*I]=0;y.dyn_ltree[2*w]=1,y.opt_len=y.static_len=0,y.last_lit=y.matches=0}function re(y){8<y.bi_valid?T(y,y.bi_buf):0<y.bi_valid&&(y.pending_buf[y.pending++]=y.bi_buf),y.bi_buf=0,y.bi_valid=0}function ae(y,I,F,V){var S=2*I,D=2*F;return y[S]<y[D]||y[S]===y[D]&&V[I]<=V[F]}function se(y,I,F){for(var V=y.heap[F],S=F<<1;S<=y.heap_len&&(S<y.heap_len&&ae(I,y.heap[S+1],y.heap[S],y.depth)&&S++,!ae(I,V,y.heap[S],y.depth));)y.heap[F]=y.heap[S],F=S,S<<=1;y.heap[F]=V}function fe(y,I,F){var V,S,D,Q,H=0;if(y.last_lit!==0)for(;V=y.pending_buf[y.d_buf+2*H]<<8|y.pending_buf[y.d_buf+2*H+1],S=y.pending_buf[y.l_buf+H],H++,V===0?U(y,S,I):(U(y,(D=m[S])+u+1,I),(Q=W[D])!==0&&M(y,S-=G[D],Q),U(y,D=k(--V),F),(Q=j[D])!==0&&M(y,V-=Z[D],Q)),H<y.last_lit;);U(y,w,I)}function he(y,I){var F,V,S,D=I.dyn_tree,Q=I.stat_desc.static_tree,H=I.stat_desc.has_stree,te=I.stat_desc.elems,ce=-1;for(y.heap_len=0,y.heap_max=f,F=0;F<te;F++)D[2*F]!==0?(y.heap[++y.heap_len]=ce=F,y.depth[F]=0):D[2*F+1]=0;for(;y.heap_len<2;)D[2*(S=y.heap[++y.heap_len]=ce<2?++ce:0)]=1,y.depth[S]=0,y.opt_len--,H&&(y.static_len-=Q[2*S+1]);for(I.max_code=ce,F=y.heap_len>>1;1<=F;F--)se(y,D,F);for(S=te;F=y.heap[1],y.heap[1]=y.heap[y.heap_len--],se(y,D,1),V=y.heap[1],y.heap[--y.heap_max]=F,y.heap[--y.heap_max]=V,D[2*S]=D[2*F]+D[2*V],y.depth[S]=(y.depth[F]>=y.depth[V]?y.depth[F]:y.depth[V])+1,D[2*F+1]=D[2*V+1]=S,y.heap[1]=S++,se(y,D,1),2<=y.heap_len;);y.heap[--y.heap_max]=y.heap[1],function(ie,ye){var Oe,we,Ve,de,rt,Ct,Ae=ye.dyn_tree,fr=ye.max_code,xi=ye.stat_desc.static_tree,wi=ye.stat_desc.has_stree,vi=ye.stat_desc.extra_bits,pr=ye.stat_desc.extra_base,je=ye.stat_desc.max_length,it=0;for(de=0;de<=p;de++)ie.bl_count[de]=0;for(Ae[2*ie.heap[ie.heap_max]+1]=0,Oe=ie.heap_max+1;Oe<f;Oe++)je<(de=Ae[2*Ae[2*(we=ie.heap[Oe])+1]+1]+1)&&(de=je,it++),Ae[2*we+1]=de,fr<we||(ie.bl_count[de]++,rt=0,pr<=we&&(rt=vi[we-pr]),Ct=Ae[2*we],ie.opt_len+=Ct*(de+rt),wi&&(ie.static_len+=Ct*(xi[2*we+1]+rt)));if(it!==0){do{for(de=je-1;ie.bl_count[de]===0;)de--;ie.bl_count[de]--,ie.bl_count[de+1]+=2,ie.bl_count[je]--,it-=2}while(0<it);for(de=je;de!==0;de--)for(we=ie.bl_count[de];we!==0;)fr<(Ve=ie.heap[--Oe])||(Ae[2*Ve+1]!==de&&(ie.opt_len+=(de-Ae[2*Ve+1])*Ae[2*Ve],Ae[2*Ve+1]=de),we--)}}(y,I),X(D,ce,y.bl_count)}function d(y,I,F){var V,S,D=-1,Q=I[1],H=0,te=7,ce=4;for(Q===0&&(te=138,ce=3),I[2*(F+1)+1]=65535,V=0;V<=F;V++)S=Q,Q=I[2*(V+1)+1],++H<te&&S===Q||(H<ce?y.bl_tree[2*S]+=H:S!==0?(S!==D&&y.bl_tree[2*S]++,y.bl_tree[2*A]++):H<=10?y.bl_tree[2*v]++:y.bl_tree[2*z]++,D=S,ce=(H=0)===Q?(te=138,3):S===Q?(te=6,3):(te=7,4))}function L(y,I,F){var V,S,D=-1,Q=I[1],H=0,te=7,ce=4;for(Q===0&&(te=138,ce=3),V=0;V<=F;V++)if(S=Q,Q=I[2*(V+1)+1],!(++H<te&&S===Q)){if(H<ce)for(;U(y,S,y.bl_tree),--H!=0;);else S!==0?(S!==D&&(U(y,S,y.bl_tree),H--),U(y,A,y.bl_tree),M(y,H-3,2)):H<=10?(U(y,v,y.bl_tree),M(y,H-3,3)):(U(y,z,y.bl_tree),M(y,H-11,7));D=S,ce=(H=0)===Q?(te=138,3):S===Q?(te=6,3):(te=7,4)}}a(Z);var E=!1;function x(y,I,F,V){M(y,(o<<1)+(V?1:0),3),function(S,D,Q,H){re(S),H&&(T(S,Q),T(S,~Q)),i.arraySet(S.pending_buf,S.window,D,Q,S.pending),S.pending+=Q}(y,I,F,!0)}t._tr_init=function(y){E||(function(){var I,F,V,S,D,Q=new Array(p+1);for(S=V=0;S<l-1;S++)for(G[S]=V,I=0;I<1<<W[S];I++)m[V++]=S;for(m[V-1]=S,S=D=0;S<16;S++)for(Z[S]=D,I=0;I<1<<j[S];I++)B[D++]=S;for(D>>=7;S<c;S++)for(Z[S]=D<<7,I=0;I<1<<j[S]-7;I++)B[256+D++]=S;for(F=0;F<=p;F++)Q[F]=0;for(I=0;I<=143;)K[2*I+1]=8,I++,Q[8]++;for(;I<=255;)K[2*I+1]=9,I++,Q[9]++;for(;I<=279;)K[2*I+1]=7,I++,Q[7]++;for(;I<=287;)K[2*I+1]=8,I++,Q[8]++;for(X(K,h+1,Q),I=0;I<c;I++)C[2*I+1]=5,C[2*I]=q(I,5);O=new $(K,W,u+1,h,p),R=new $(C,j,0,c,p),J=new $(new Array(0),P,0,b,_)}(),E=!0),y.l_desc=new N(y.dyn_ltree,O),y.d_desc=new N(y.dyn_dtree,R),y.bl_desc=new N(y.bl_tree,J),y.bi_buf=0,y.bi_valid=0,ee(y)},t._tr_stored_block=x,t._tr_flush_block=function(y,I,F,V){var S,D,Q=0;0<y.level?(y.strm.data_type===2&&(y.strm.data_type=function(H){var te,ce=4093624447;for(te=0;te<=31;te++,ce>>>=1)if(1&ce&&H.dyn_ltree[2*te]!==0)return n;if(H.dyn_ltree[18]!==0||H.dyn_ltree[20]!==0||H.dyn_ltree[26]!==0)return r;for(te=32;te<u;te++)if(H.dyn_ltree[2*te]!==0)return r;return n}(y)),he(y,y.l_desc),he(y,y.d_desc),Q=function(H){var te;for(d(H,H.dyn_ltree,H.l_desc.max_code),d(H,H.dyn_dtree,H.d_desc.max_code),he(H,H.bl_desc),te=b-1;3<=te&&H.bl_tree[2*Y[te]+1]===0;te--);return H.opt_len+=3*(te+1)+5+5+4,te}(y),S=y.opt_len+3+7>>>3,(D=y.static_len+3+7>>>3)<=S&&(S=D)):S=D=F+5,F+4<=S&&I!==-1?x(y,I,F,V):y.strategy===4||D===S?(M(y,2+(V?1:0),3),fe(y,K,C)):(M(y,4+(V?1:0),3),function(H,te,ce,ie){var ye;for(M(H,te-257,5),M(H,ce-1,5),M(H,ie-4,4),ye=0;ye<ie;ye++)M(H,H.bl_tree[2*Y[ye]+1],3);L(H,H.dyn_ltree,te-1),L(H,H.dyn_dtree,ce-1)}(y,y.l_desc.max_code+1,y.d_desc.max_code+1,Q+1),fe(y,y.dyn_ltree,y.dyn_dtree)),ee(y),V&&re(y)},t._tr_tally=function(y,I,F){return y.pending_buf[y.d_buf+2*y.last_lit]=I>>>8&255,y.pending_buf[y.d_buf+2*y.last_lit+1]=255&I,y.pending_buf[y.l_buf+y.last_lit]=255&F,y.last_lit++,I===0?y.dyn_ltree[2*F]++:(y.matches++,I--,y.dyn_ltree[2*(m[F]+u+1)]++,y.dyn_dtree[2*k(I)]++),y.last_lit===y.lit_bufsize-1},t._tr_align=function(y){M(y,2,3),U(y,w,K),function(I){I.bi_valid===16?(T(I,I.bi_buf),I.bi_buf=0,I.bi_valid=0):8<=I.bi_valid&&(I.pending_buf[I.pending++]=255&I.bi_buf,I.bi_buf>>=8,I.bi_valid-=8)}(y)}},{"../utils/common":41}],53:[function(s,e,t){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(s,e,t){(function(i){(function(n,r){"use strict";if(!n.setImmediate){var a,o,l,u,h=1,c={},b=!1,f=n.document,p=Object.getPrototypeOf&&Object.getPrototypeOf(n);p=p&&p.setTimeout?p:n,a={}.toString.call(n.process)==="[object process]"?function(A){process.nextTick(function(){_(A)})}:function(){if(n.postMessage&&!n.importScripts){var A=!0,v=n.onmessage;return n.onmessage=function(){A=!1},n.postMessage("","*"),n.onmessage=v,A}}()?(u="setImmediate$"+Math.random()+"$",n.addEventListener?n.addEventListener("message",w,!1):n.attachEvent("onmessage",w),function(A){n.postMessage(u+A,"*")}):n.MessageChannel?((l=new MessageChannel).port1.onmessage=function(A){_(A.data)},function(A){l.port2.postMessage(A)}):f&&"onreadystatechange"in f.createElement("script")?(o=f.documentElement,function(A){var v=f.createElement("script");v.onreadystatechange=function(){_(A),v.onreadystatechange=null,o.removeChild(v),v=null},o.appendChild(v)}):function(A){setTimeout(_,0,A)},p.setImmediate=function(A){typeof A!="function"&&(A=new Function(""+A));for(var v=new Array(arguments.length-1),z=0;z<v.length;z++)v[z]=arguments[z+1];var W={callback:A,args:v};return c[h]=W,a(h),h++},p.clearImmediate=g}function g(A){delete c[A]}function _(A){if(b)setTimeout(_,0,A);else{var v=c[A];if(v){b=!0;try{(function(z){var W=z.callback,j=z.args;switch(j.length){case 0:W();break;case 1:W(j[0]);break;case 2:W(j[0],j[1]);break;case 3:W(j[0],j[1],j[2]);break;default:W.apply(r,j)}})(v)}finally{g(A),b=!1}}}}function w(A){A.source===n&&typeof A.data=="string"&&A.data.indexOf(u)===0&&_(+A.data.slice(u.length))}})(typeof self>"u"?i===void 0?this:i:self)}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})});var Et=be(Ce=>{"use strict";var _r=":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD",Wi=_r+"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040",yr="["+_r+"]["+Wi+"]*",Bi=new RegExp("^"+yr+"$"),Fi=function(s,e){let t=[],i=e.exec(s);for(;i;){let n=[];n.startIndex=e.lastIndex-i[0].length;let r=i.length;for(let a=0;a<r;a++)n.push(i[a]);t.push(n),i=e.exec(s)}return t},Gi=function(s){let e=Bi.exec(s);return!(e===null||typeof e>"u")};Ce.isExist=function(s){return typeof s<"u"};Ce.isEmptyObject=function(s){return Object.keys(s).length===0};Ce.merge=function(s,e,t){if(e){let i=Object.keys(e),n=i.length;for(let r=0;r<n;r++)t==="strict"?s[i[r]]=[e[i[r]]]:s[i[r]]=e[i[r]]}};Ce.getValue=function(s){return Ce.isExist(s)?s:""};Ce.isName=Gi;Ce.getAllMatches=Fi;Ce.nameRegexp=yr});var zt=be(Cr=>{"use strict";var Rt=Et(),Mi={allowBooleanAttributes:!1,unpairedTags:[]};Cr.validate=function(s,e){e=Object.assign({},Mi,e);let t=[],i=!1,n=!1;s[0]==="\\uFEFF"&&(s=s.substr(1));for(let r=0;r<s.length;r++)if(s[r]==="<"&&s[r+1]==="?"){if(r+=2,r=wr(s,r),r.err)return r}else if(s[r]==="<"){let a=r;if(r++,s[r]==="!"){r=vr(s,r);continue}else{let o=!1;s[r]==="/"&&(o=!0,r++);let l="";for(;r<s.length&&s[r]!==">"&&s[r]!==" "&&s[r]!==" "&&s[r]!==`\n`&&s[r]!=="\\r";r++)l+=s[r];if(l=l.trim(),l[l.length-1]==="/"&&(l=l.substring(0,l.length-1),r--),!Yi(l)){let c;return l.trim().length===0?c="Invalid space after \'<\'.":c="Tag \'"+l+"\' is an invalid name.",ue("InvalidTag",c,ge(s,r))}let u=Oi(s,r);if(u===!1)return ue("InvalidAttr","Attributes for \'"+l+"\' have open quote.",ge(s,r));let h=u.value;if(r=u.index,h[h.length-1]==="/"){let c=r-h.length;h=h.substring(0,h.length-1);let b=Ar(h,e);if(b===!0)i=!0;else return ue(b.err.code,b.err.msg,ge(s,c+b.err.line))}else if(o)if(u.tagClosed){if(h.trim().length>0)return ue("InvalidTag","Closing tag \'"+l+"\' can\'t have attributes or invalid starting.",ge(s,a));{let c=t.pop();if(l!==c.tagName){let b=ge(s,c.tagStartPos);return ue("InvalidTag","Expected closing tag \'"+c.tagName+"\' (opened in line "+b.line+", col "+b.col+") instead of closing tag \'"+l+"\'.",ge(s,a))}t.length==0&&(n=!0)}}else return ue("InvalidTag","Closing tag \'"+l+"\' doesn\'t have proper closing.",ge(s,r));else{let c=Ar(h,e);if(c!==!0)return ue(c.err.code,c.err.msg,ge(s,r-h.length+c.err.line));if(n===!0)return ue("InvalidXml","Multiple possible root nodes found.",ge(s,r));e.unpairedTags.indexOf(l)!==-1||t.push({tagName:l,tagStartPos:a}),i=!0}for(r++;r<s.length;r++)if(s[r]==="<")if(s[r+1]==="!"){r++,r=vr(s,r);continue}else if(s[r+1]==="?"){if(r=wr(s,++r),r.err)return r}else break;else if(s[r]==="&"){let c=$i(s,r);if(c==-1)return ue("InvalidChar","char \'&\' is not expected.",ge(s,r));r=c}else if(n===!0&&!xr(s[r]))return ue("InvalidXml","Extra text at the end",ge(s,r));s[r]==="<"&&r--}}else{if(xr(s[r]))continue;return ue("InvalidChar","char \'"+s[r]+"\' is not expected.",ge(s,r))}if(i){if(t.length==1)return ue("InvalidTag","Unclosed tag \'"+t[0].tagName+"\'.",ge(s,t[0].tagStartPos));if(t.length>0)return ue("InvalidXml","Invalid \'"+JSON.stringify(t.map(r=>r.tagName),null,4).replace(/\\r?\\n/g,"")+"\' found.",{line:1,col:1})}else return ue("InvalidXml","Start tag expected.",1);return!0};function xr(s){return s===" "||s===" "||s===`\n`||s==="\\r"}function wr(s,e){let t=e;for(;e<s.length;e++)if(s[e]=="?"||s[e]==" "){let i=s.substr(t,e-t);if(e>5&&i==="xml")return ue("InvalidXml","XML declaration allowed only at the start of the document.",ge(s,e));if(s[e]=="?"&&s[e+1]==">"){e++;break}else continue}return e}function vr(s,e){if(s.length>e+5&&s[e+1]==="-"&&s[e+2]==="-"){for(e+=3;e<s.length;e++)if(s[e]==="-"&&s[e+1]==="-"&&s[e+2]===">"){e+=2;break}}else if(s.length>e+8&&s[e+1]==="D"&&s[e+2]==="O"&&s[e+3]==="C"&&s[e+4]==="T"&&s[e+5]==="Y"&&s[e+6]==="P"&&s[e+7]==="E"){let t=1;for(e+=8;e<s.length;e++)if(s[e]==="<")t++;else if(s[e]===">"&&(t--,t===0))break}else if(s.length>e+9&&s[e+1]==="["&&s[e+2]==="C"&&s[e+3]==="D"&&s[e+4]==="A"&&s[e+5]==="T"&&s[e+6]==="A"&&s[e+7]==="["){for(e+=8;e<s.length;e++)if(s[e]==="]"&&s[e+1]==="]"&&s[e+2]===">"){e+=2;break}}return e}var Ui=\'"\',Li="\'";function Oi(s,e){let t="",i="",n=!1;for(;e<s.length;e++){if(s[e]===Ui||s[e]===Li)i===""?i=s[e]:i!==s[e]||(i="");else if(s[e]===">"&&i===""){n=!0;break}t+=s[e]}return i!==""?!1:{value:t,index:e,tagClosed:n}}var Vi=new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\'"])(([\\\\s\\\\S])*?)\\\\5)?`,"g");function Ar(s,e){let t=Rt.getAllMatches(s,Vi),i={};for(let n=0;n<t.length;n++){if(t[n][1].length===0)return ue("InvalidAttr","Attribute \'"+t[n][2]+"\' has no space in starting.",De(t[n]));if(t[n][3]!==void 0&&t[n][4]===void 0)return ue("InvalidAttr","Attribute \'"+t[n][2]+"\' is without value.",De(t[n]));if(t[n][3]===void 0&&!e.allowBooleanAttributes)return ue("InvalidAttr","boolean attribute \'"+t[n][2]+"\' is not allowed.",De(t[n]));let r=t[n][2];if(!Di(r))return ue("InvalidAttr","Attribute \'"+r+"\' is an invalid name.",De(t[n]));if(!i.hasOwnProperty(r))i[r]=1;else return ue("InvalidAttr","Attribute \'"+r+"\' is repeated.",De(t[n]))}return!0}function ji(s,e){let t=/\\d/;for(s[e]==="x"&&(e++,t=/[\\da-fA-F]/);e<s.length;e++){if(s[e]===";")return e;if(!s[e].match(t))break}return-1}function $i(s,e){if(e++,s[e]===";")return-1;if(s[e]==="#")return e++,ji(s,e);let t=0;for(;e<s.length;e++,t++)if(!(s[e].match(/\\w/)&&t<20)){if(s[e]===";")break;return-1}return e}function ue(s,e,t){return{err:{code:s,msg:e,line:t.line||t,col:t.col}}}function Di(s){return Rt.isName(s)}function Yi(s){return Rt.isName(s)}function ge(s,e){let t=s.substring(0,e).split(/\\r?\\n/);return{line:t.length,col:t[t.length-1].length+1}}function De(s){return s.startIndex+s[1].length}});var Nr=be(Wt=>{var Ir={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(s,e){return e},attributeValueProcessor:function(s,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1},Hi=function(s){return Object.assign({},Ir,s)};Wt.buildOptions=Hi;Wt.defaultOptions=Ir});var Sr=be((ma,kr)=>{"use strict";var Bt=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){e==="__proto__"&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){e.tagname==="__proto__"&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,[":@"]:e[":@"]}):this.child.push({[e.tagname]:e.child})}};kr.exports=Bt});var Pr=be((ga,Tr)=>{function Ji(s,e){let t={};if(s[e+3]==="O"&&s[e+4]==="C"&&s[e+5]==="T"&&s[e+6]==="Y"&&s[e+7]==="P"&&s[e+8]==="E"){e=e+9;let i=1,n=!1,r=!1,a="";for(;e<s.length;e++)if(s[e]==="<"&&!r){if(n&&qi(s,e))e+=7,[entityName,val,e]=Xi(s,e+1),val.indexOf("&")===-1&&(t[entityName]={regx:RegExp(`&${entityName};`,"g"),val});else if(n&&Ki(s,e))e+=8;else if(n&&en(s,e))e+=8;else if(n&&tn(s,e))e+=9;else if(Qi)r=!0;else throw new Error("Invalid DOCTYPE");i++,a=""}else if(s[e]===">"){if(r?s[e-1]==="-"&&s[e-2]==="-"&&(r=!1,i--):i--,i===0)break}else s[e]==="["?n=!0:a+=s[e];if(i!==0)throw new Error("Unclosed DOCTYPE")}else throw new Error("Invalid Tag instead of DOCTYPE");return{entities:t,i:e}}function Xi(s,e){let t="";for(;e<s.length&&s[e]!=="\'"&&s[e]!==\'"\';e++)t+=s[e];if(t=t.trim(),t.indexOf(" ")!==-1)throw new Error("External entites are not supported");let i=s[e++],n="";for(;e<s.length&&s[e]!==i;e++)n+=s[e];return[t,n,e]}function Qi(s,e){return s[e+1]==="!"&&s[e+2]==="-"&&s[e+3]==="-"}function qi(s,e){return s[e+1]==="!"&&s[e+2]==="E"&&s[e+3]==="N"&&s[e+4]==="T"&&s[e+5]==="I"&&s[e+6]==="T"&&s[e+7]==="Y"}function Ki(s,e){return s[e+1]==="!"&&s[e+2]==="E"&&s[e+3]==="L"&&s[e+4]==="E"&&s[e+5]==="M"&&s[e+6]==="E"&&s[e+7]==="N"&&s[e+8]==="T"}function en(s,e){return s[e+1]==="!"&&s[e+2]==="A"&&s[e+3]==="T"&&s[e+4]==="T"&&s[e+5]==="L"&&s[e+6]==="I"&&s[e+7]==="S"&&s[e+8]==="T"}function tn(s,e){return s[e+1]==="!"&&s[e+2]==="N"&&s[e+3]==="O"&&s[e+4]==="T"&&s[e+5]==="A"&&s[e+6]==="T"&&s[e+7]==="I"&&s[e+8]==="O"&&s[e+9]==="N"}Tr.exports=Ji});var Er=be((ba,Zr)=>{var rn=/^[-+]?0x[a-fA-F0-9]+$/,nn=/^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt);!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);var sn={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function an(s,e={}){if(e=Object.assign({},sn,e),!s||typeof s!="string")return s;let t=s.trim();if(e.skipLike!==void 0&&e.skipLike.test(t))return s;if(e.hex&&rn.test(t))return Number.parseInt(t,16);{let i=nn.exec(t);if(i){let n=i[1],r=i[2],a=on(i[3]),o=i[4]||i[6];if(!e.leadingZeros&&r.length>0&&n&&t[2]!==".")return s;if(!e.leadingZeros&&r.length>0&&!n&&t[1]!==".")return s;{let l=Number(t),u=""+l;return u.search(/[eE]/)!==-1||o?e.eNotation?l:s:t.indexOf(".")!==-1?u==="0"&&a===""||u===a||n&&u==="-"+a?l:s:r?a===u||n+a===u?l:s:t===u||t===n+u?l:s}}else return s}}function on(s){return s&&s.indexOf(".")!==-1&&(s=s.replace(/0+$/,""),s==="."?s="0":s[0]==="."?s="0"+s:s[s.length-1]==="."&&(s=s.substr(0,s.length-1))),s}Zr.exports=an});var zr=be((ya,Rr)=>{"use strict";var Ut=Et(),Ye=Sr(),ln=Pr(),cn=Er(),_a="<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)".replace(/NAME/g,Ut.nameRegexp),Ft=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"\'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:\'"\'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"\\xA2"},pound:{regex:/&(pound|#163);/g,val:"\\xA3"},yen:{regex:/&(yen|#165);/g,val:"\\xA5"},euro:{regex:/&(euro|#8364);/g,val:"\\u20AC"},copyright:{regex:/&(copy|#169);/g,val:"\\xA9"},reg:{regex:/&(reg|#174);/g,val:"\\xAE"},inr:{regex:/&(inr|#8377);/g,val:"\\u20B9"}},this.addExternalEntities=hn,this.parseXml=mn,this.parseTextData=dn,this.resolveNameSpace=un,this.buildAttributesMap=pn,this.isItStopNode=_n,this.replaceEntitiesValue=gn,this.readStopNodeData=xn,this.saveTextToParentTag=bn}};function hn(s){let e=Object.keys(s);for(let t=0;t<e.length;t++){let i=e[t];this.lastEntities[i]={regex:new RegExp("&"+i+";","g"),val:s[i]}}}function dn(s,e,t,i,n,r,a){if(s!==void 0&&(this.options.trimValues&&!i&&(s=s.trim()),s.length>0)){a||(s=this.replaceEntitiesValue(s));let o=this.options.tagValueProcessor(e,s,t,n,r);return o==null?s:typeof o!=typeof s||o!==s?o:this.options.trimValues?Mt(s,this.options.parseTagValue,this.options.numberParseOptions):s.trim()===s?Mt(s,this.options.parseTagValue,this.options.numberParseOptions):s}}function un(s){if(this.options.removeNSPrefix){let e=s.split(":"),t=s.charAt(0)==="/"?"/":"";if(e[0]==="xmlns")return"";e.length===2&&(s=t+e[1])}return s}var fn=new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*([\'"])([\\\\s\\\\S]*?)\\\\3)?`,"gm");function pn(s,e){if(!this.options.ignoreAttributes&&typeof s=="string"){let t=Ut.getAllMatches(s,fn),i=t.length,n={};for(let r=0;r<i;r++){let a=this.resolveNameSpace(t[r][1]),o=t[r][4],l=this.options.attributeNamePrefix+a;if(a.length)if(this.options.transformAttributeName&&(l=this.options.transformAttributeName(l)),l==="__proto__"&&(l="#__proto__"),o!==void 0){this.options.trimValues&&(o=o.trim()),o=this.replaceEntitiesValue(o);let u=this.options.attributeValueProcessor(a,o,e);u==null?n[l]=o:typeof u!=typeof o||u!==o?n[l]=u:n[l]=Mt(o,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(n[l]=!0)}if(!Object.keys(n).length)return;if(this.options.attributesGroupName){let r={};return r[this.options.attributesGroupName]=n,r}return n}}var mn=function(s){s=s.replace(/\\r\\n?/g,`\n`);let e=new Ye("!xml"),t=e,i="",n="";for(let r=0;r<s.length;r++)if(s[r]==="<")if(s[r+1]==="/"){let o=We(s,">",r,"Closing Tag is not closed."),l=s.substring(r+2,o).trim();if(this.options.removeNSPrefix){let u=l.indexOf(":");u!==-1&&(l=l.substr(u+1))}this.options.transformTagName&&(l=this.options.transformTagName(l)),t&&(i=this.saveTextToParentTag(i,t,n)),n=n.substr(0,n.lastIndexOf(".")),t=this.tagsNodeStack.pop(),i="",r=o}else if(s[r+1]==="?"){let o=Gt(s,r,!1,"?>");if(!o)throw new Error("Pi Tag is not closed.");if(i=this.saveTextToParentTag(i,t,n),!(this.options.ignoreDeclaration&&o.tagName==="?xml"||this.options.ignorePiTags)){let l=new Ye(o.tagName);l.add(this.options.textNodeName,""),o.tagName!==o.tagExp&&o.attrExpPresent&&(l[":@"]=this.buildAttributesMap(o.tagExp,n)),t.addChild(l)}r=o.closeIndex+1}else if(s.substr(r+1,3)==="!--"){let o=We(s,"-->",r+4,"Comment is not closed.");if(this.options.commentPropName){let l=s.substring(r+4,o-2);i=this.saveTextToParentTag(i,t,n),t.add(this.options.commentPropName,[{[this.options.textNodeName]:l}])}r=o}else if(s.substr(r+1,2)==="!D"){let o=ln(s,r);this.docTypeEntities=o.entities,r=o.i}else if(s.substr(r+1,2)==="!["){let o=We(s,"]]>",r,"CDATA is not closed.")-2,l=s.substring(r+9,o);if(i=this.saveTextToParentTag(i,t,n),this.options.cdataPropName)t.add(this.options.cdataPropName,[{[this.options.textNodeName]:l}]);else{let u=this.parseTextData(l,t.tagname,n,!0,!1,!0);u==null&&(u=""),t.add(this.options.textNodeName,u)}r=o+2}else{let o=Gt(s,r,this.options.removeNSPrefix),l=o.tagName,u=o.tagExp,h=o.attrExpPresent,c=o.closeIndex;this.options.transformTagName&&(l=this.options.transformTagName(l)),t&&i&&t.tagname!=="!xml"&&(i=this.saveTextToParentTag(i,t,n,!1)),l!==e.tagname&&(n+=n?"."+l:l);let b=t;if(b&&this.options.unpairedTags.indexOf(b.tagname)!==-1&&(t=this.tagsNodeStack.pop()),this.isItStopNode(this.options.stopNodes,n,l)){let f="";if(u.length>0&&u.lastIndexOf("/")===u.length-1)r=o.closeIndex;else if(this.options.unpairedTags.indexOf(l)!==-1)r=o.closeIndex;else{let g=this.readStopNodeData(s,l,c+1);if(!g)throw new Error(`Unexpected end of ${l}`);r=g.i,f=g.tagContent}let p=new Ye(l);l!==u&&h&&(p[":@"]=this.buildAttributesMap(u,n)),f&&(f=this.parseTextData(f,l,n,!0,h,!0,!0)),n=n.substr(0,n.lastIndexOf(".")),p.add(this.options.textNodeName,f),t.addChild(p)}else{if(u.length>0&&u.lastIndexOf("/")===u.length-1){l[l.length-1]==="/"?(l=l.substr(0,l.length-1),u=l):u=u.substr(0,u.length-1),this.options.transformTagName&&(l=this.options.transformTagName(l));let f=new Ye(l);l!==u&&h&&(f[":@"]=this.buildAttributesMap(u,n)),n=n.substr(0,n.lastIndexOf(".")),t.addChild(f)}else{let f=new Ye(l);this.tagsNodeStack.push(t),l!==u&&h&&(f[":@"]=this.buildAttributesMap(u,n)),t.addChild(f),t=f}i="",r=c}}else i+=s[r];return e.child},gn=function(s){if(this.options.processEntities){for(let e in this.docTypeEntities){let t=this.docTypeEntities[e];s=s.replace(t.regx,t.val)}for(let e in this.lastEntities){let t=this.lastEntities[e];s=s.replace(t.regex,t.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){let t=this.htmlEntities[e];s=s.replace(t.regex,t.val)}s=s.replace(this.ampEntity.regex,this.ampEntity.val)}return s};function bn(s,e,t,i){return s&&(i===void 0&&(i=Object.keys(e.child).length===0),s=this.parseTextData(s,e.tagname,t,!1,e[":@"]?Object.keys(e[":@"]).length!==0:!1,i),s!==void 0&&s!==""&&e.add(this.options.textNodeName,s),s=""),s}function _n(s,e,t){let i="*."+t;for(let n in s){let r=s[n];if(i===r||e===r)return!0}return!1}function yn(s,e,t=">"){let i,n="";for(let r=e;r<s.length;r++){let a=s[r];if(i)a===i&&(i="");else if(a===\'"\'||a==="\'")i=a;else if(a===t[0])if(t[1]){if(s[r+1]===t[1])return{data:n,index:r}}else return{data:n,index:r};else a===" "&&(a=" ");n+=a}}function We(s,e,t,i){let n=s.indexOf(e,t);if(n===-1)throw new Error(i);return n+e.length-1}function Gt(s,e,t,i=">"){let n=yn(s,e+1,i);if(!n)return;let r=n.data,a=n.index,o=r.search(/\\s/),l=r,u=!0;if(o!==-1&&(l=r.substr(0,o).replace(/\\s\\s*$/,""),r=r.substr(o+1)),t){let h=l.indexOf(":");h!==-1&&(l=l.substr(h+1),u=l!==n.data.substr(h+1))}return{tagName:l,tagExp:r,closeIndex:a,attrExpPresent:u}}function xn(s,e,t){let i=t,n=1;for(;t<s.length;t++)if(s[t]==="<")if(s[t+1]==="/"){let r=We(s,">",t,`${e} is not closed`);if(s.substring(t+2,r).trim()===e&&(n--,n===0))return{tagContent:s.substring(i,t),i:r};t=r}else if(s[t+1]==="?")t=We(s,"?>",t+1,"StopNode is not closed.");else if(s.substr(t+1,3)==="!--")t=We(s,"-->",t+3,"StopNode is not closed.");else if(s.substr(t+1,2)==="![")t=We(s,"]]>",t,"StopNode is not closed.")-2;else{let r=Gt(s,t,">");r&&((r&&r.tagName)===e&&r.tagExp[r.tagExp.length-1]!=="/"&&n++,t=r.closeIndex)}}function Mt(s,e,t){if(e&&typeof s=="string"){let i=s.trim();return i==="true"?!0:i==="false"?!1:cn(s,t)}else return Ut.isExist(s)?s:""}Rr.exports=Ft});var Fr=be(Br=>{"use strict";function wn(s,e){return Wr(s,e)}function Wr(s,e,t){let i,n={};for(let r=0;r<s.length;r++){let a=s[r],o=vn(a),l="";if(t===void 0?l=o:l=t+"."+o,o===e.textNodeName)i===void 0?i=a[o]:i+=""+a[o];else{if(o===void 0)continue;if(a[o]){let u=Wr(a[o],e,l),h=Cn(u,e);a[":@"]?An(u,a[":@"],l,e):Object.keys(u).length===1&&u[e.textNodeName]!==void 0&&!e.alwaysCreateTextNode?u=u[e.textNodeName]:Object.keys(u).length===0&&(e.alwaysCreateTextNode?u[e.textNodeName]="":u=""),n[o]!==void 0&&n.hasOwnProperty(o)?(Array.isArray(n[o])||(n[o]=[n[o]]),n[o].push(u)):e.isArray(o,l,h)?n[o]=[u]:n[o]=u}}}return typeof i=="string"?i.length>0&&(n[e.textNodeName]=i):i!==void 0&&(n[e.textNodeName]=i),n}function vn(s){let e=Object.keys(s);for(let t=0;t<e.length;t++){let i=e[t];if(i!==":@")return i}}function An(s,e,t,i){if(e){let n=Object.keys(e),r=n.length;for(let a=0;a<r;a++){let o=n[a];i.isArray(o,t+"."+o,!0,!0)?s[o]=[e[o]]:s[o]=e[o]}}}function Cn(s,e){let t=Object.keys(s).length;return!!(t===0||t===1&&s[e.textNodeName])}Br.prettify=wn});var Mr=be((wa,Gr)=>{var{buildOptions:In}=Nr(),Nn=zr(),{prettify:kn}=Fr(),Sn=zt(),Lt=class{constructor(e){this.externalEntities={},this.options=In(e)}parse(e,t){if(typeof e!="string")if(e.toString)e=e.toString();else throw new Error("XML data is accepted in String or Bytes[] form.");if(t){t===!0&&(t={});let r=Sn.validate(e,t);if(r!==!0)throw Error(`${r.err.msg}:${r.err.line}:${r.err.col}`)}let i=new Nn(this.options);i.addExternalEntities(this.externalEntities);let n=i.parseXml(e);return this.options.preserveOrder||n===void 0?n:kn(n,this.options)}addEntity(e,t){if(t.indexOf("&")!==-1)throw new Error("Entity value can\'t have \'&\'");if(e.indexOf("&")!==-1||e.indexOf(";")!==-1)throw new Error("An entity must be set without \'&\' and \';\'. Eg. use \'#xD\' for \'&#xD;\'");if(t==="&")throw new Error("An entity with value \'&\' is not permitted");this.externalEntities[e]=t}};Gr.exports=Lt});var jr=be((va,Vr)=>{var Tn=`\n`;function Pn(s,e){let t="";return e.format&&e.indentBy.length>0&&(t=Tn),Lr(s,e,"",t)}function Lr(s,e,t,i){let n="",r=!1;for(let a=0;a<s.length;a++){let o=s[a],l=Zn(o),u="";if(t.length===0?u=l:u=`${t}.${l}`,l===e.textNodeName){let p=o[l];En(u,e)||(p=e.tagValueProcessor(l,p),p=Or(p,e)),r&&(n+=i),n+=p,r=!1;continue}else if(l===e.cdataPropName){r&&(n+=i),n+=`<![CDATA[${o[l][0][e.textNodeName]}]]>`,r=!1;continue}else if(l===e.commentPropName){n+=i+`<!--${o[l][0][e.textNodeName]}-->`,r=!0;continue}else if(l[0]==="?"){let p=Ur(o[":@"],e),g=l==="?xml"?"":i,_=o[l][0][e.textNodeName];_=_.length!==0?" "+_:"",n+=g+`<${l}${_}${p}?>`,r=!0;continue}let h=i;h!==""&&(h+=e.indentBy);let c=Ur(o[":@"],e),b=i+`<${l}${c}`,f=Lr(o[l],e,u,h);e.unpairedTags.indexOf(l)!==-1?e.suppressUnpairedNode?n+=b+">":n+=b+"/>":(!f||f.length===0)&&e.suppressEmptyNode?n+=b+"/>":f&&f.endsWith(">")?n+=b+`>${f}${i}</${l}>`:(n+=b+">",f&&i!==""&&(f.includes("/>")||f.includes("</"))?n+=i+e.indentBy+f+i:n+=f,n+=`</${l}>`),r=!0}return n}function Zn(s){let e=Object.keys(s);for(let t=0;t<e.length;t++){let i=e[t];if(i!==":@")return i}}function Ur(s,e){let t="";if(s&&!e.ignoreAttributes)for(let i in s){let n=e.attributeValueProcessor(i,s[i]);n=Or(n,e),n===!0&&e.suppressBooleanAttributes?t+=` ${i.substr(e.attributeNamePrefix.length)}`:t+=` ${i.substr(e.attributeNamePrefix.length)}="${n}"`}return t}function En(s,e){s=s.substr(0,s.length-e.textNodeName.length-1);let t=s.substr(s.lastIndexOf(".")+1);for(let i in e.stopNodes)if(e.stopNodes[i]===s||e.stopNodes[i]==="*."+t)return!0;return!1}function Or(s,e){if(s&&s.length>0&&e.processEntities)for(let t=0;t<e.entities.length;t++){let i=e.entities[t];s=s.replace(i.regex,i.val)}return s}Vr.exports=Pn});var Dr=be((Aa,$r)=>{"use strict";var Rn=jr(),zn={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(s,e){return e},attributeValueProcessor:function(s,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("\'","g"),val:"&apos;"},{regex:new RegExp(\'"\',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[]};function Ze(s){this.options=Object.assign({},zn,s),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=Fn),this.processTextOrObjNode=Wn,this.options.format?(this.indentate=Bn,this.tagEndChar=`>\n`,this.newLine=`\n`):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}Ze.prototype.build=function(s){return this.options.preserveOrder?Rn(s,this.options):(Array.isArray(s)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(s={[this.options.arrayNodeName]:s}),this.j2x(s,0).val)};Ze.prototype.j2x=function(s,e){let t="",i="";for(let n in s)if(!(typeof s[n]>"u"))if(s[n]===null)n[0]==="?"?i+=this.indentate(e)+"<"+n+"?"+this.tagEndChar:i+=this.indentate(e)+"<"+n+"/"+this.tagEndChar;else if(s[n]instanceof Date)i+=this.buildTextValNode(s[n],n,"",e);else if(typeof s[n]!="object"){let r=this.isAttribute(n);if(r)t+=this.buildAttrPairStr(r,""+s[n]);else if(n===this.options.textNodeName){let a=this.options.tagValueProcessor(n,""+s[n]);i+=this.replaceEntitiesValue(a)}else i+=this.buildTextValNode(s[n],n,"",e)}else if(Array.isArray(s[n])){let r=s[n].length;for(let a=0;a<r;a++){let o=s[n][a];typeof o>"u"||(o===null?n[0]==="?"?i+=this.indentate(e)+"<"+n+"?"+this.tagEndChar:i+=this.indentate(e)+"<"+n+"/"+this.tagEndChar:typeof o=="object"?i+=this.processTextOrObjNode(o,n,e):i+=this.buildTextValNode(o,n,"",e))}}else if(this.options.attributesGroupName&&n===this.options.attributesGroupName){let r=Object.keys(s[n]),a=r.length;for(let o=0;o<a;o++)t+=this.buildAttrPairStr(r[o],""+s[n][r[o]])}else i+=this.processTextOrObjNode(s[n],n,e);return{attrStr:t,val:i}};Ze.prototype.buildAttrPairStr=function(s,e){return e=this.options.attributeValueProcessor(s,""+e),e=this.replaceEntitiesValue(e),this.options.suppressBooleanAttributes&&e==="true"?" "+s:" "+s+\'="\'+e+\'"\'};function Wn(s,e,t){let i=this.j2x(s,t+1);return s[this.options.textNodeName]!==void 0&&Object.keys(s).length===1?this.buildTextValNode(s[this.options.textNodeName],e,i.attrStr,t):this.buildObjectNode(i.val,e,i.attrStr,t)}Ze.prototype.buildObjectNode=function(s,e,t,i){if(s==="")return e[0]==="?"?this.indentate(i)+"<"+e+t+"?"+this.tagEndChar:this.indentate(i)+"<"+e+t+this.closeTag(e)+this.tagEndChar;{let n="</"+e+this.tagEndChar,r="";return e[0]==="?"&&(r="?",n=""),t&&s.indexOf("<")===-1?this.indentate(i)+"<"+e+t+r+">"+s+n:this.options.commentPropName!==!1&&e===this.options.commentPropName&&r.length===0?this.indentate(i)+`<!--${s}-->`+this.newLine:this.indentate(i)+"<"+e+t+r+this.tagEndChar+s+this.indentate(i)+n}};Ze.prototype.closeTag=function(s){let e="";return this.options.unpairedTags.indexOf(s)!==-1?this.options.suppressUnpairedNode||(e="/"):this.options.suppressEmptyNode?e="/":e=`></${s}`,e};Ze.prototype.buildTextValNode=function(s,e,t,i){if(this.options.cdataPropName!==!1&&e===this.options.cdataPropName)return this.indentate(i)+`<![CDATA[${s}]]>`+this.newLine;if(this.options.commentPropName!==!1&&e===this.options.commentPropName)return this.indentate(i)+`<!--${s}-->`+this.newLine;if(e[0]==="?")return this.indentate(i)+"<"+e+t+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(e,s);return n=this.replaceEntitiesValue(n),n===""?this.indentate(i)+"<"+e+t+this.closeTag(e)+this.tagEndChar:this.indentate(i)+"<"+e+t+">"+n+"</"+e+this.tagEndChar}};Ze.prototype.replaceEntitiesValue=function(s){if(s&&s.length>0&&this.options.processEntities)for(let e=0;e<this.options.entities.length;e++){let t=this.options.entities[e];s=s.replace(t.regex,t.val)}return s};function Bn(s){return this.options.indentBy.repeat(s)}function Fn(s){return s.startsWith(this.options.attributeNamePrefix)?s.substr(this.attrPrefixLen):!1}$r.exports=Ze});var Ot=be((Ca,Yr)=>{"use strict";var Gn=zt(),Mn=Mr(),Un=Dr();Yr.exports={XMLParser:Mn,XMLValidator:Gn,XMLBuilder:Un}});var _i=nt(Nt());var st=s=>{let e=Math.floor((s-5)/7*100+.5)/100;return Math.floor((e*7+5)/7*256)/256},kt=s=>Math.floor((256*s+Math.floor(18.285714285714285))/256*7);var br="UEsDBAoAAAAAAAAAIQBi7p1okAQAAJAEAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxUeXBlcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzIj48RGVmYXVsdCBFeHRlbnNpb249InJlbHMiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbCIvPjxEZWZhdWx0IEV4dGVuc2lvbj0ieG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24veG1sIi8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvd29ya2Jvb2sueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3Jrc2hlZXRzL3NoZWV0MS54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sIi8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvdGhlbWUvdGhlbWUxLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZSt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC9zdHlsZXMueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbCIvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3NoYXJlZFN0cmluZ3MueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkU3RyaW5ncyt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii9kb2NQcm9wcy9jb3JlLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmNvcmUtcHJvcGVydGllcyt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii9kb2NQcm9wcy9hcHAueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmV4dGVuZGVkLXByb3BlcnRpZXMreG1sIi8+PC9UeXBlcz5QSwMECgAAAAAAAAAhALVVMCNMAgAATAIAAAsAAABfcmVscy8ucmVsczw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDMiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZXh0ZW5kZWQtcHJvcGVydGllcyIgVGFyZ2V0PSJkb2NQcm9wcy9hcHAueG1sIi8+PFJlbGF0aW9uc2hpcCBJZD0icklkMiIgVHlwZT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzL21ldGFkYXRhL2NvcmUtcHJvcGVydGllcyIgVGFyZ2V0PSJkb2NQcm9wcy9jb3JlLnhtbCIvPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDEiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiIFRhcmdldD0ieGwvd29ya2Jvb2sueG1sIi8+PC9SZWxhdGlvbnNoaXBzPlBLAwQKAAAAAAAAACEAunCeZsoGAADKBgAADwAAAHhsL3dvcmtib29rLnhtbDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjx3b3JrYm9vayB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiB4bWxuczptYz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiIG1jOklnbm9yYWJsZT0ieDE1IHhyIHhyNiB4cjEwIHhyMiIgeG1sbnM6eDE1PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvbWFpbiIgeG1sbnM6eHI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNC9yZXZpc2lvbiIgeG1sbnM6eHI2PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTYvcmV2aXNpb242IiB4bWxuczp4cjEwPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTYvcmV2aXNpb24xMCIgeG1sbnM6eHIyPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTUvcmV2aXNpb24yIj48ZmlsZVZlcnNpb24gYXBwTmFtZT0ieGwiIGxhc3RFZGl0ZWQ9IjciIGxvd2VzdEVkaXRlZD0iNyIgcnVwQnVpbGQ9IjIxMTI2Ii8+PHdvcmtib29rUHIgZGVmYXVsdFRoZW1lVmVyc2lvbj0iMTY2OTI1Ii8+PG1jOkFsdGVybmF0ZUNvbnRlbnQgeG1sbnM6bWM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2Ij48bWM6Q2hvaWNlIFJlcXVpcmVzPSJ4MTUiPjx4MTVhYzphYnNQYXRoIHVybD0iSDpcVFJFQlx0cmViLWV4cG9ydFx0ZW1wbGF0ZVwiIHhtbG5zOngxNWFjPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvYWMiLz48L21jOkNob2ljZT48L21jOkFsdGVybmF0ZUNvbnRlbnQ+PHhyOnJldmlzaW9uUHRyIHJldklETGFzdFNhdmU9IjAiIGRvY3VtZW50SWQ9Ijhfe0Q4NThGOUY3LTBEOTItNEFFNC04QTQyLTQ4MENCMzU5QjYyRH0iIHhyNjpjb2F1dGhWZXJzaW9uTGFzdD0iNDAiIHhyNjpjb2F1dGhWZXJzaW9uTWF4PSI0MCIgeHIxMDp1aWRMYXN0U2F2ZT0iezAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMH0iLz48Ym9va1ZpZXdzPjx3b3JrYm9va1ZpZXcgeFdpbmRvdz0iMCIgeVdpbmRvdz0iMCIgd2luZG93V2lkdGg9IjI0NTcwIiB3aW5kb3dIZWlnaHQ9IjExMTMwIiB4cjI6dWlkPSJ7REU0RTdEMzUtNDkyRC00MEQ3LTk5MjUtNDY0N0Y1ODdFMURFfSIvPjwvYm9va1ZpZXdzPjxzaGVldHM+PHNoZWV0IG5hbWU9IlNoZWV0MSIgc2hlZXRJZD0iMSIgcjppZD0icklkMSIvPjwvc2hlZXRzPjxjYWxjUHIgY2FsY0lkPSIxOTEwMjkiLz48ZXh0THN0PjxleHQgdXJpPSJ7MTQwQTcwOTQtMEUzNS00ODkyLTg0MzItQzREMkU1N0VERUI1fSIgeG1sbnM6eDE1PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvbWFpbiI+PHgxNTp3b3JrYm9va1ByIGNoYXJ0VHJhY2tpbmdSZWZCYXNlPSIxIi8+PC9leHQ+PC9leHRMc3Q+PC93b3JrYm9vaz5QSwMECgAAAAAAAAAhAIE+lJe6AgAAugIAABoAAAB4bC9fcmVscy93b3JrYm9vay54bWwucmVsczw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDMiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc3R5bGVzIiBUYXJnZXQ9InN0eWxlcy54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQyIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RoZW1lIiBUYXJnZXQ9InRoZW1lL3RoZW1lMS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQxIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0MS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQ0IiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoYXJlZFN0cmluZ3MiIFRhcmdldD0ic2hhcmVkU3RyaW5ncy54bWwiLz48L1JlbGF0aW9uc2hpcHM+UEsDBAoAAAAAAAAAIQACrURzpAMAAKQDAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDEueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPHdvcmtzaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiB4bWxuczptYz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiIG1jOklnbm9yYWJsZT0ieDE0YWMgeHIgeHIyIHhyMyIgeG1sbnM6eDE0YWM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAwOS85L2FjIiB4bWxuczp4cj0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDE0L3JldmlzaW9uIiB4bWxuczp4cjI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNS9yZXZpc2lvbjIiIHhtbG5zOnhyMz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDE2L3JldmlzaW9uMyIgeHI6dWlkPSJ7MEQ4RTVDQTItNUM5RS00RDRCLTk0QzUtRjM1QzA0MUYzOUJEfSI+PGRpbWVuc2lvbiByZWY9IkExIi8+PHNoZWV0Vmlld3M+PHNoZWV0VmlldyB0YWJTZWxlY3RlZD0iMSIgd29ya2Jvb2tWaWV3SWQ9IjAiLz48L3NoZWV0Vmlld3M+PHNoZWV0Rm9ybWF0UHIgZGVmYXVsdFJvd0hlaWdodD0iMTUiIHgxNGFjOmR5RGVzY2VudD0iMC4yNSIvPjxzaGVldERhdGEvPjxwYWdlTWFyZ2lucyBsZWZ0PSIwLjciIHJpZ2h0PSIwLjciIHRvcD0iMC43NSIgYm90dG9tPSIwLjc1IiBoZWFkZXI9IjAuMyIgZm9vdGVyPSIwLjMiLz48L3dvcmtzaGVldD5QSwMECgAAAAAAAAAhAMEXEL7GIAAAxiAAABMAAAB4bC90aGVtZS90aGVtZTEueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPGE6dGhlbWUgeG1sbnM6YT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L21haW4iIG5hbWU9Ik9mZmljZSBUaGVtZSI+PGE6dGhlbWVFbGVtZW50cz48YTpjbHJTY2hlbWUgbmFtZT0iT2ZmaWNlIj48YTpkazE+PGE6c3lzQ2xyIHZhbD0id2luZG93VGV4dCIgbGFzdENscj0iMDAwMDAwIi8+PC9hOmRrMT48YTpsdDE+PGE6c3lzQ2xyIHZhbD0id2luZG93IiBsYXN0Q2xyPSJGRkZGRkYiLz48L2E6bHQxPjxhOmRrMj48YTpzcmdiQ2xyIHZhbD0iNDQ1NDZBIi8+PC9hOmRrMj48YTpsdDI+PGE6c3JnYkNsciB2YWw9IkU3RTZFNiIvPjwvYTpsdDI+PGE6YWNjZW50MT48YTpzcmdiQ2xyIHZhbD0iNDQ3MkM0Ii8+PC9hOmFjY2VudDE+PGE6YWNjZW50Mj48YTpzcmdiQ2xyIHZhbD0iRUQ3RDMxIi8+PC9hOmFjY2VudDI+PGE6YWNjZW50Mz48YTpzcmdiQ2xyIHZhbD0iQTVBNUE1Ii8+PC9hOmFjY2VudDM+PGE6YWNjZW50ND48YTpzcmdiQ2xyIHZhbD0iRkZDMDAwIi8+PC9hOmFjY2VudDQ+PGE6YWNjZW50NT48YTpzcmdiQ2xyIHZhbD0iNUI5QkQ1Ii8+PC9hOmFjY2VudDU+PGE6YWNjZW50Nj48YTpzcmdiQ2xyIHZhbD0iNzBBRDQ3Ii8+PC9hOmFjY2VudDY+PGE6aGxpbms+PGE6c3JnYkNsciB2YWw9IjA1NjNDMSIvPjwvYTpobGluaz48YTpmb2xIbGluaz48YTpzcmdiQ2xyIHZhbD0iOTU0RjcyIi8+PC9hOmZvbEhsaW5rPjwvYTpjbHJTY2hlbWU+PGE6Zm9udFNjaGVtZSBuYW1lPSJPZmZpY2UiPjxhOm1ham9yRm9udD48YTpsYXRpbiB0eXBlZmFjZT0iQ2FsaWJyaSBMaWdodCIgcGFub3NlPSIwMjBGMDMwMjAyMDIwNDAzMDIwNCIvPjxhOmVhIHR5cGVmYWNlPSIiLz48YTpjcyB0eXBlZmFjZT0iIi8+PGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSLmuLjjgrTjgrfjg4Pjgq8gTGlnaHQiLz48YTpmb250IHNjcmlwdD0iSGFuZyIgdHlwZWZhY2U9IuunkeydgCDqs6DrlJUiLz48YTpmb250IHNjcmlwdD0iSGFucyIgdHlwZWZhY2U9Iuetiee6vyBMaWdodCIvPjxhOmZvbnQgc2NyaXB0PSJIYW50IiB0eXBlZmFjZT0i5paw57Sw5piO6auUIi8+PGE6Zm9udCBzY3JpcHQ9IkFyYWIiIHR5cGVmYWNlPSJUaW1lcyBOZXcgUm9tYW4iLz48YTpmb250IHNjcmlwdD0iSGViciIgdHlwZWZhY2U9IlRpbWVzIE5ldyBSb21hbiIvPjxhOmZvbnQgc2NyaXB0PSJUaGFpIiB0eXBlZmFjZT0iVGFob21hIi8+PGE6Zm9udCBzY3JpcHQ9IkV0aGkiIHR5cGVmYWNlPSJOeWFsYSIvPjxhOmZvbnQgc2NyaXB0PSJCZW5nIiB0eXBlZmFjZT0iVnJpbmRhIi8+PGE6Zm9udCBzY3JpcHQ9Ikd1anIiIHR5cGVmYWNlPSJTaHJ1dGkiLz48YTpmb250IHNjcmlwdD0iS2htciIgdHlwZWZhY2U9Ik1vb2xCb3JhbiIvPjxhOmZvbnQgc2NyaXB0PSJLbmRhIiB0eXBlZmFjZT0iVHVuZ2EiLz48YTpmb250IHNjcmlwdD0iR3VydSIgdHlwZWZhY2U9IlJhYXZpIi8+PGE6Zm9udCBzY3JpcHQ9IkNhbnMiIHR5cGVmYWNlPSJFdXBoZW1pYSIvPjxhOmZvbnQgc2NyaXB0PSJDaGVyIiB0eXBlZmFjZT0iUGxhbnRhZ2VuZXQgQ2hlcm9rZWUiLz48YTpmb250IHNjcmlwdD0iWWlpaSIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBZaSBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJUaWJ0IiB0eXBlZmFjZT0iTWljcm9zb2Z0IEhpbWFsYXlhIi8+PGE6Zm9udCBzY3JpcHQ9IlRoYWEiIHR5cGVmYWNlPSJNViBCb2xpIi8+PGE6Zm9udCBzY3JpcHQ9IkRldmEiIHR5cGVmYWNlPSJNYW5nYWwiLz48YTpmb250IHNjcmlwdD0iVGVsdSIgdHlwZWZhY2U9IkdhdXRhbWkiLz48YTpmb250IHNjcmlwdD0iVGFtbCIgdHlwZWZhY2U9IkxhdGhhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cmMiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJPcnlhIiB0eXBlZmFjZT0iS2FsaW5nYSIvPjxhOmZvbnQgc2NyaXB0PSJNbHltIiB0eXBlZmFjZT0iS2FydGlrYSIvPjxhOmZvbnQgc2NyaXB0PSJMYW9vIiB0eXBlZmFjZT0iRG9rQ2hhbXBhIi8+PGE6Zm9udCBzY3JpcHQ9IlNpbmgiIHR5cGVmYWNlPSJJc2tvb2xhIFBvdGEiLz48YTpmb250IHNjcmlwdD0iTW9uZyIgdHlwZWZhY2U9Ik1vbmdvbGlhbiBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJWaWV0IiB0eXBlZmFjZT0iVGltZXMgTmV3IFJvbWFuIi8+PGE6Zm9udCBzY3JpcHQ9IlVpZ2giIHR5cGVmYWNlPSJNaWNyb3NvZnQgVWlnaHVyIi8+PGE6Zm9udCBzY3JpcHQ9Ikdlb3IiIHR5cGVmYWNlPSJTeWxmYWVuIi8+PGE6Zm9udCBzY3JpcHQ9IkFybW4iIHR5cGVmYWNlPSJBcmlhbCIvPjxhOmZvbnQgc2NyaXB0PSJCdWdpIiB0eXBlZmFjZT0iTGVlbGF3YWRlZSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJCb3BvIiB0eXBlZmFjZT0iTWljcm9zb2Z0IEpoZW5nSGVpIi8+PGE6Zm9udCBzY3JpcHQ9IkphdmEiIHR5cGVmYWNlPSJKYXZhbmVzZSBUZXh0Ii8+PGE6Zm9udCBzY3JpcHQ9Ikxpc3UiIHR5cGVmYWNlPSJTZWdvZSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJNeW1yIiB0eXBlZmFjZT0iTXlhbm1hciBUZXh0Ii8+PGE6Zm9udCBzY3JpcHQ9Ik5rb28iIHR5cGVmYWNlPSJFYnJpbWEiLz48YTpmb250IHNjcmlwdD0iT2xjayIgdHlwZWZhY2U9Ik5pcm1hbGEgVUkiLz48YTpmb250IHNjcmlwdD0iT3NtYSIgdHlwZWZhY2U9IkVicmltYSIvPjxhOmZvbnQgc2NyaXB0PSJQaGFnIiB0eXBlZmFjZT0iUGhhZ3NwYSIvPjxhOmZvbnQgc2NyaXB0PSJTeXJuIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz48YTpmb250IHNjcmlwdD0iU3lyaiIgdHlwZWZhY2U9IkVzdHJhbmdlbG8gRWRlc3NhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cmUiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJTb3JhIiB0eXBlZmFjZT0iTmlybWFsYSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJUYWxlIiB0eXBlZmFjZT0iTWljcm9zb2Z0IFRhaSBMZSIvPjxhOmZvbnQgc2NyaXB0PSJUYWx1IiB0eXBlZmFjZT0iTWljcm9zb2Z0IE5ldyBUYWkgTHVlIi8+PGE6Zm9udCBzY3JpcHQ9IlRmbmciIHR5cGVmYWNlPSJFYnJpbWEiLz48L2E6bWFqb3JGb250PjxhOm1pbm9yRm9udD48YTpsYXRpbiB0eXBlZmFjZT0iQ2FsaWJyaSIgcGFub3NlPSIwMjBGMDUwMjAyMDIwNDAzMDIwNCIvPjxhOmVhIHR5cGVmYWNlPSIiLz48YTpjcyB0eXBlZmFjZT0iIi8+PGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSLmuLjjgrTjgrfjg4Pjgq8iLz48YTpmb250IHNjcmlwdD0iSGFuZyIgdHlwZWZhY2U9IuunkeydgCDqs6DrlJUiLz48YTpmb250IHNjcmlwdD0iSGFucyIgdHlwZWZhY2U9Iuetiee6vyIvPjxhOmZvbnQgc2NyaXB0PSJIYW50IiB0eXBlZmFjZT0i5paw57Sw5piO6auUIi8+PGE6Zm9udCBzY3JpcHQ9IkFyYWIiIHR5cGVmYWNlPSJBcmlhbCIvPjxhOmZvbnQgc2NyaXB0PSJIZWJyIiB0eXBlZmFjZT0iQXJpYWwiLz48YTpmb250IHNjcmlwdD0iVGhhaSIgdHlwZWZhY2U9IlRhaG9tYSIvPjxhOmZvbnQgc2NyaXB0PSJFdGhpIiB0eXBlZmFjZT0iTnlhbGEiLz48YTpmb250IHNjcmlwdD0iQmVuZyIgdHlwZWZhY2U9IlZyaW5kYSIvPjxhOmZvbnQgc2NyaXB0PSJHdWpyIiB0eXBlZmFjZT0iU2hydXRpIi8+PGE6Zm9udCBzY3JpcHQ9IktobXIiIHR5cGVmYWNlPSJEYXVuUGVuaCIvPjxhOmZvbnQgc2NyaXB0PSJLbmRhIiB0eXBlZmFjZT0iVHVuZ2EiLz48YTpmb250IHNjcmlwdD0iR3VydSIgdHlwZWZhY2U9IlJhYXZpIi8+PGE6Zm9udCBzY3JpcHQ9IkNhbnMiIHR5cGVmYWNlPSJFdXBoZW1pYSIvPjxhOmZvbnQgc2NyaXB0PSJDaGVyIiB0eXBlZmFjZT0iUGxhbnRhZ2VuZXQgQ2hlcm9rZWUiLz48YTpmb250IHNjcmlwdD0iWWlpaSIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBZaSBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJUaWJ0IiB0eXBlZmFjZT0iTWljcm9zb2Z0IEhpbWFsYXlhIi8+PGE6Zm9udCBzY3JpcHQ9IlRoYWEiIHR5cGVmYWNlPSJNViBCb2xpIi8+PGE6Zm9udCBzY3JpcHQ9IkRldmEiIHR5cGVmYWNlPSJNYW5nYWwiLz48YTpmb250IHNjcmlwdD0iVGVsdSIgdHlwZWZhY2U9IkdhdXRhbWkiLz48YTpmb250IHNjcmlwdD0iVGFtbCIgdHlwZWZhY2U9IkxhdGhhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cmMiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJPcnlhIiB0eXBlZmFjZT0iS2FsaW5nYSIvPjxhOmZvbnQgc2NyaXB0PSJNbHltIiB0eXBlZmFjZT0iS2FydGlrYSIvPjxhOmZvbnQgc2NyaXB0PSJMYW9vIiB0eXBlZmFjZT0iRG9rQ2hhbXBhIi8+PGE6Zm9udCBzY3JpcHQ9IlNpbmgiIHR5cGVmYWNlPSJJc2tvb2xhIFBvdGEiLz48YTpmb250IHNjcmlwdD0iTW9uZyIgdHlwZWZhY2U9Ik1vbmdvbGlhbiBCYWl0aSIvPjxhOmZvbnQgc2NyaXB0PSJWaWV0IiB0eXBlZmFjZT0iQXJpYWwiLz48YTpmb250IHNjcmlwdD0iVWlnaCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBVaWdodXIiLz48YTpmb250IHNjcmlwdD0iR2VvciIgdHlwZWZhY2U9IlN5bGZhZW4iLz48YTpmb250IHNjcmlwdD0iQXJtbiIgdHlwZWZhY2U9IkFyaWFsIi8+PGE6Zm9udCBzY3JpcHQ9IkJ1Z2kiIHR5cGVmYWNlPSJMZWVsYXdhZGVlIFVJIi8+PGE6Zm9udCBzY3JpcHQ9IkJvcG8iIHR5cGVmYWNlPSJNaWNyb3NvZnQgSmhlbmdIZWkiLz48YTpmb250IHNjcmlwdD0iSmF2YSIgdHlwZWZhY2U9IkphdmFuZXNlIFRleHQiLz48YTpmb250IHNjcmlwdD0iTGlzdSIgdHlwZWZhY2U9IlNlZ29lIFVJIi8+PGE6Zm9udCBzY3JpcHQ9Ik15bXIiIHR5cGVmYWNlPSJNeWFubWFyIFRleHQiLz48YTpmb250IHNjcmlwdD0iTmtvbyIgdHlwZWZhY2U9IkVicmltYSIvPjxhOmZvbnQgc2NyaXB0PSJPbGNrIiB0eXBlZmFjZT0iTmlybWFsYSBVSSIvPjxhOmZvbnQgc2NyaXB0PSJPc21hIiB0eXBlZmFjZT0iRWJyaW1hIi8+PGE6Zm9udCBzY3JpcHQ9IlBoYWciIHR5cGVmYWNlPSJQaGFnc3BhIi8+PGE6Zm9udCBzY3JpcHQ9IlN5cm4iIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPjxhOmZvbnQgc2NyaXB0PSJTeXJqIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz48YTpmb250IHNjcmlwdD0iU3lyZSIgdHlwZWZhY2U9IkVzdHJhbmdlbG8gRWRlc3NhIi8+PGE6Zm9udCBzY3JpcHQ9IlNvcmEiIHR5cGVmYWNlPSJOaXJtYWxhIFVJIi8+PGE6Zm9udCBzY3JpcHQ9IlRhbGUiIHR5cGVmYWNlPSJNaWNyb3NvZnQgVGFpIExlIi8+PGE6Zm9udCBzY3JpcHQ9IlRhbHUiIHR5cGVmYWNlPSJNaWNyb3NvZnQgTmV3IFRhaSBMdWUiLz48YTpmb250IHNjcmlwdD0iVGZuZyIgdHlwZWZhY2U9IkVicmltYSIvPjwvYTptaW5vckZvbnQ+PC9hOmZvbnRTY2hlbWU+PGE6Zm10U2NoZW1lIG5hbWU9Ik9mZmljZSI+PGE6ZmlsbFN0eWxlTHN0PjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+PGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj48YTpnc0xzdD48YTpncyBwb3M9IjAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpsdW1Nb2QgdmFsPSIxMTAwMDAiLz48YTpzYXRNb2QgdmFsPSIxMDUwMDAiLz48YTp0aW50IHZhbD0iNjcwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48YTpncyBwb3M9IjUwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6bHVtTW9kIHZhbD0iMTA1MDAwIi8+PGE6c2F0TW9kIHZhbD0iMTAzMDAwIi8+PGE6dGludCB2YWw9IjczMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpsdW1Nb2QgdmFsPSIxMDUwMDAiLz48YTpzYXRNb2QgdmFsPSIxMDkwMDAiLz48YTp0aW50IHZhbD0iODEwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48L2E6Z3NMc3Q+PGE6bGluIGFuZz0iNTQwMDAwMCIgc2NhbGVkPSIwIi8+PC9hOmdyYWRGaWxsPjxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+PGE6Z3NMc3Q+PGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2F0TW9kIHZhbD0iMTAzMDAwIi8+PGE6bHVtTW9kIHZhbD0iMTAyMDAwIi8+PGE6dGludCB2YWw9Ijk0MDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPSI1MDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnNhdE1vZCB2YWw9IjExMDAwMCIvPjxhOmx1bU1vZCB2YWw9IjEwMDAwMCIvPjxhOnNoYWRlIHZhbD0iMTAwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpsdW1Nb2QgdmFsPSI5OTAwMCIvPjxhOnNhdE1vZCB2YWw9IjEyMDAwMCIvPjxhOnNoYWRlIHZhbD0iNzgwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48L2E6Z3NMc3Q+PGE6bGluIGFuZz0iNTQwMDAwMCIgc2NhbGVkPSIwIi8+PC9hOmdyYWRGaWxsPjwvYTpmaWxsU3R5bGVMc3Q+PGE6bG5TdHlsZUxzdD48YTpsbiB3PSI2MzUwIiBjYXA9ImZsYXQiIGNtcGQ9InNuZyIgYWxnbj0iY3RyIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRGaWxsPjxhOnByc3REYXNoIHZhbD0ic29saWQiLz48YTptaXRlciBsaW09IjgwMDAwMCIvPjwvYTpsbj48YTpsbiB3PSIxMjcwMCIgY2FwPSJmbGF0IiBjbXBkPSJzbmciIGFsZ249ImN0ciI+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9InNvbGlkIi8+PGE6bWl0ZXIgbGltPSI4MDAwMDAiLz48L2E6bG4+PGE6bG4gdz0iMTkwNTAiIGNhcD0iZmxhdCIgY21wZD0ic25nIiBhbGduPSJjdHIiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPSJzb2xpZCIvPjxhOm1pdGVyIGxpbT0iODAwMDAwIi8+PC9hOmxuPjwvYTpsblN0eWxlTHN0PjxhOmVmZmVjdFN0eWxlTHN0PjxhOmVmZmVjdFN0eWxlPjxhOmVmZmVjdExzdC8+PC9hOmVmZmVjdFN0eWxlPjxhOmVmZmVjdFN0eWxlPjxhOmVmZmVjdExzdC8+PC9hOmVmZmVjdFN0eWxlPjxhOmVmZmVjdFN0eWxlPjxhOmVmZmVjdExzdD48YTpvdXRlclNoZHcgYmx1clJhZD0iNTcxNTAiIGRpc3Q9IjE5MDUwIiBkaXI9IjU0MDAwMDAiIGFsZ249ImN0ciIgcm90V2l0aFNoYXBlPSIwIj48YTpzcmdiQ2xyIHZhbD0iMDAwMDAwIj48YTphbHBoYSB2YWw9IjYzMDAwIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz48L2E6ZWZmZWN0THN0PjwvYTplZmZlY3RTdHlsZT48L2E6ZWZmZWN0U3R5bGVMc3Q+PGE6YmdGaWxsU3R5bGVMc3Q+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI5NTAwMCIvPjxhOnNhdE1vZCB2YWw9IjE3MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOnNvbGlkRmlsbD48YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPjxhOmdzTHN0PjxhOmdzIHBvcz0iMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI5MzAwMCIvPjxhOnNhdE1vZCB2YWw9IjE1MDAwMCIvPjxhOnNoYWRlIHZhbD0iOTgwMDAiLz48YTpsdW1Nb2QgdmFsPSIxMDIwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48YTpncyBwb3M9IjUwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9Ijk4MDAwIi8+PGE6c2F0TW9kIHZhbD0iMTMwMDAwIi8+PGE6c2hhZGUgdmFsPSI5MDAwMCIvPjxhOmx1bU1vZCB2YWw9IjEwMzAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPjxhOmdzIHBvcz0iMTAwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2hhZGUgdmFsPSI2MzAwMCIvPjxhOnNhdE1vZCB2YWw9IjEyMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPjwvYTpnc0xzdD48YTpsaW4gYW5nPSI1NDAwMDAwIiBzY2FsZWQ9IjAiLz48L2E6Z3JhZEZpbGw+PC9hOmJnRmlsbFN0eWxlTHN0PjwvYTpmbXRTY2hlbWU+PC9hOnRoZW1lRWxlbWVudHM+PGE6b2JqZWN0RGVmYXVsdHMvPjxhOmV4dHJhQ2xyU2NoZW1lTHN0Lz48YTpleHRMc3Q+PGE6ZXh0IHVyaT0iezA1QTRDMjVDLTA4NUUtNDM0MC04NUEzLUE1NTMxRTUxMERCMn0iPjx0aG0xNTp0aGVtZUZhbWlseSB4bWxuczp0aG0xNT0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvdGhlbWVtbC8yMDEyL21haW4iIG5hbWU9Ik9mZmljZSBUaGVtZSIgaWQ9Ins2MkY5MzlCNi05M0FGLTREQjgtOUM2Qi1ENkM3REZEQzU4OUZ9IiB2aWQ9Ins0QTNDNDZFOC02MUNDLTQ2MDMtQTU4OS03NDIyQTQ3QThFNEF9Ii8+PC9hOmV4dD48L2E6ZXh0THN0PjwvYTp0aGVtZT5QSwMECgAAAAAAAAAhAHmhgGxSBgAAUgYAAA0AAAB4bC9zdHlsZXMueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPHN0eWxlU2hlZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIgeG1sbnM6bWM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2IiBtYzpJZ25vcmFibGU9IngxNGFjIHgxNnIyIHhyIiB4bWxuczp4MTRhYz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvYWMiIHhtbG5zOngxNnIyPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTUvMDIvbWFpbiIgeG1sbnM6eHI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNC9yZXZpc2lvbiI+PGZvbnRzIGNvdW50PSIxIiB4MTRhYzprbm93bkZvbnRzPSIxIj48Zm9udD48c3ogdmFsPSIxMSIvPjxjb2xvciB0aGVtZT0iMSIvPjxuYW1lIHZhbD0iQ2FsaWJyaSIvPjxmYW1pbHkgdmFsPSIyIi8+PHNjaGVtZSB2YWw9Im1pbm9yIi8+PC9mb250PjwvZm9udHM+PGZpbGxzIGNvdW50PSIyIj48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9Im5vbmUiLz48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPSJncmF5MTI1Ii8+PC9maWxsPjwvZmlsbHM+PGJvcmRlcnMgY291bnQ9IjEiPjxib3JkZXI+PGxlZnQvPjxyaWdodC8+PHRvcC8+PGJvdHRvbS8+PGRpYWdvbmFsLz48L2JvcmRlcj48L2JvcmRlcnM+PGNlbGxTdHlsZVhmcyBjb3VudD0iMSI+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiLz48L2NlbGxTdHlsZVhmcz48Y2VsbFhmcyBjb3VudD0iMSI+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIHhmSWQ9IjAiLz48L2NlbGxYZnM+PGNlbGxTdHlsZXMgY291bnQ9IjEiPjxjZWxsU3R5bGUgbmFtZT0iTm9ybWFsIiB4ZklkPSIwIiBidWlsdGluSWQ9IjAiLz48L2NlbGxTdHlsZXM+PGR4ZnMgY291bnQ9IjAiLz48dGFibGVTdHlsZXMgY291bnQ9IjAiIGRlZmF1bHRUYWJsZVN0eWxlPSJUYWJsZVN0eWxlTWVkaXVtMiIgZGVmYXVsdFBpdm90U3R5bGU9IlBpdm90U3R5bGVMaWdodDE2Ii8+PGV4dExzdD48ZXh0IHVyaT0ie0VCNzlERUYyLTgwQjgtNDNlNS05NUJELTU0Q0JEREY5MDIwQ30iIHhtbG5zOngxND0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvbWFpbiI+PHgxNDpzbGljZXJTdHlsZXMgZGVmYXVsdFNsaWNlclN0eWxlPSJTbGljZXJTdHlsZUxpZ2h0MSIvPjwvZXh0PjxleHQgdXJpPSJ7OTI2MEE1MTAtRjMwMS00NmE4LTg2MzUtRjUxMkQ2NEJFNUY1fSIgeG1sbnM6eDE1PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvbWFpbiI+PHgxNTp0aW1lbGluZVN0eWxlcyBkZWZhdWx0VGltZWxpbmVTdHlsZT0iVGltZVNsaWNlclN0eWxlTGlnaHQxIi8+PC9leHQ+PC9leHRMc3Q+PC9zdHlsZVNoZWV0PlBLAwQKAAAAAAAAACEA0IywC4EAAACBAAAAFAAAAHhsL3NoYXJlZFN0cmluZ3MueG1sPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pg0KPHNzdCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIi8+UEsDBAoAAAAAAAAAIQDcCx83XQIAAF0CAAARAAAAZG9jUHJvcHMvY29yZS54bWw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+DQo8Y3A6Y29yZVByb3BlcnRpZXMgeG1sbnM6Y3A9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvbWV0YWRhdGEvY29yZS1wcm9wZXJ0aWVzIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmRjdGVybXM9Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8iIHhtbG5zOmRjbWl0eXBlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48ZGM6Y3JlYXRvcj5kdW5jYW48L2RjOmNyZWF0b3I+PGNwOmxhc3RNb2RpZmllZEJ5PmR1bmNhbjwvY3A6bGFzdE1vZGlmaWVkQnk+PGRjdGVybXM6Y3JlYXRlZCB4c2k6dHlwZT0iZGN0ZXJtczpXM0NEVEYiPjIwMTktMDEtMzFUMTY6NDg6MDNaPC9kY3Rlcm1zOmNyZWF0ZWQ+PGRjdGVybXM6bW9kaWZpZWQgeHNpOnR5cGU9ImRjdGVybXM6VzNDRFRGIj4yMDE5LTAxLTMxVDE2OjQ4OjI4WjwvZGN0ZXJtczptb2RpZmllZD48L2NwOmNvcmVQcm9wZXJ0aWVzPlBLAwQKAAAAAAAAACEAYUkJEBEDAAARAwAAEAAAAGRvY1Byb3BzL2FwcC54bWw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+DQo8UHJvcGVydGllcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvZXh0ZW5kZWQtcHJvcGVydGllcyIgeG1sbnM6dnQ9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2RvY1Byb3BzVlR5cGVzIj48QXBwbGljYXRpb24+TWljcm9zb2Z0IEV4Y2VsPC9BcHBsaWNhdGlvbj48RG9jU2VjdXJpdHk+MDwvRG9jU2VjdXJpdHk+PFNjYWxlQ3JvcD5mYWxzZTwvU2NhbGVDcm9wPjxIZWFkaW5nUGFpcnM+PHZ0OnZlY3RvciBzaXplPSIyIiBiYXNlVHlwZT0idmFyaWFudCI+PHZ0OnZhcmlhbnQ+PHZ0Omxwc3RyPldvcmtzaGVldHM8L3Z0Omxwc3RyPjwvdnQ6dmFyaWFudD48dnQ6dmFyaWFudD48dnQ6aTQ+MTwvdnQ6aTQ+PC92dDp2YXJpYW50PjwvdnQ6dmVjdG9yPjwvSGVhZGluZ1BhaXJzPjxUaXRsZXNPZlBhcnRzPjx2dDp2ZWN0b3Igc2l6ZT0iMSIgYmFzZVR5cGU9Imxwc3RyIj48dnQ6bHBzdHI+U2hlZXQxPC92dDpscHN0cj48L3Z0OnZlY3Rvcj48L1RpdGxlc09mUGFydHM+PENvbXBhbnk+PC9Db21wYW55PjxMaW5rc1VwVG9EYXRlPmZhbHNlPC9MaW5rc1VwVG9EYXRlPjxTaGFyZWREb2M+ZmFsc2U8L1NoYXJlZERvYz48SHlwZXJsaW5rc0NoYW5nZWQ+ZmFsc2U8L0h5cGVybGlua3NDaGFuZ2VkPjxBcHBWZXJzaW9uPjE2LjAzMDA8L0FwcFZlcnNpb24+PC9Qcm9wZXJ0aWVzPlBLAQIUAAoAAAAAAAAAIQBi7p1okAQAAJAEAAATAAAAAAAAAAAAAAAAAAAAAABbQ29udGVudF9UeXBlc10ueG1sUEsBAhQACgAAAAAAAAAhALVVMCNMAgAATAIAAAsAAAAAAAAAAAAAAAAAwQQAAF9yZWxzLy5yZWxzUEsBAhQACgAAAAAAAAAhALpwnmbKBgAAygYAAA8AAAAAAAAAAAAAAAAANgcAAHhsL3dvcmtib29rLnhtbFBLAQIUAAoAAAAAAAAAIQCBPpSXugIAALoCAAAaAAAAAAAAAAAAAAAAAC0OAAB4bC9fcmVscy93b3JrYm9vay54bWwucmVsc1BLAQIUAAoAAAAAAAAAIQACrURzpAMAAKQDAAAYAAAAAAAAAAAAAAAAAB8RAAB4bC93b3Jrc2hlZXRzL3NoZWV0MS54bWxQSwECFAAKAAAAAAAAACEAwRcQvsYgAADGIAAAEwAAAAAAAAAAAAAAAAD5FAAAeGwvdGhlbWUvdGhlbWUxLnhtbFBLAQIUAAoAAAAAAAAAIQB5oYBsUgYAAFIGAAANAAAAAAAAAAAAAAAAAPA1AAB4bC9zdHlsZXMueG1sUEsBAhQACgAAAAAAAAAhANCMsAuBAAAAgQAAABQAAAAAAAAAAAAAAAAAbTwAAHhsL3NoYXJlZFN0cmluZ3MueG1sUEsBAhQACgAAAAAAAAAhANwLHzddAgAAXQIAABEAAAAAAAAAAAAAAAAAID0AAGRvY1Byb3BzL2NvcmUueG1sUEsBAhQACgAAAAAAAAAhAGFJCRARAwAAEQMAABAAAAAAAAAAAAAAAAAArD8AAGRvY1Byb3BzL2FwcC54bWxQSwUGAAAAAAoACgCAAgAA60IAAAAA";var St=s=>s!==null&&typeof s=="object"&&"row"in s&&"column"in s;var oe=class{constructor(e,t=e,i=!1){this.end_=this.PatchNull(t),this.start_=this.PatchNull(e),i&&this.Normalize()}static FromColumn(e){return new oe({row:1/0,column:e})}static FromRow(e){return new oe({row:e,column:1/0})}static ColumnToLabel(e){let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}static CellAddressToLabel(e,t=!1){return(t?`${e.sheet_id||0}!`:"")+(e.absolute_column?"$":"")+this.ColumnToLabel(e.column)+(e.absolute_row?"$":"")+(e.row+1)}static Join(e,...t){let i=new oe(e.start,e.end);for(let n of t)n&&(i.ConsumeAddress(n.start),i.ConsumeAddress(n.end));return i}static Bleed(e,t=1){return new oe({row:Math.max(0,e.start.row-t),column:Math.max(0,e.start.column-t),sheet_id:e.start.sheet_id},{row:e.end.row+t,column:e.end.column+t})}get start(){return{...this.start_}}set start(e){this.start_=e}get end(){return{...this.end_}}set end(e){this.end_=e}get rows(){return this.start_.row===1/0||this.end_.row===1/0?1/0:this.end_.row-this.start_.row+1}get columns(){return this.start_.column===1/0||this.end_.column===1/0?1/0:this.end_.column-this.start_.column+1}get count(){return this.rows*this.columns}get entire_sheet(){return this.entire_row&&this.entire_column}get entire_column(){return this.start_.row===1/0}get entire_row(){return this.start_.column===1/0}PatchNull(e){let t={...e};return t.row===null&&(t.row=1/0),t.column===null&&(t.column=1/0),t}SetSheetID(e){this.start_.sheet_id=e}Normalize(){let e={...this.start_},t={...this.end_};e.row===1/0||t.row===1/0?e.row=t.row=1/0:e.row>t.row&&(e.row=this.end_.row,e.absolute_row=this.end_.absolute_row,t.row=this.start_.row,t.absolute_row=this.start_.absolute_row),e.column===1/0||t.column===1/0?e.column=t.column=1/0:e.column>t.column&&(e.column=this.end_.column,e.absolute_column=this.end_.absolute_column,t.column=this.start_.column,t.absolute_column=this.start_.absolute_column),this.start_=e,this.end_=t}TopLeft(){let e={row:0,column:0};return this.entire_row||(e.column=this.start.column),this.entire_column||(e.row=this.start.row),e}BottomRight(){let e={row:0,column:0};return this.entire_row||(e.column=this.end.column),this.entire_column||(e.row=this.end.row),e}ContainsRow(e){return this.entire_column||e>=this.start_.row&&e<=this.end_.row}ContainsColumn(e){return this.entire_row||e>=this.start_.column&&e<=this.end_.column}Contains(e){return(this.entire_column||e.row>=this.start_.row&&e.row<=this.end_.row)&&(this.entire_row||e.column>=this.start_.column&&e.column<=this.end_.column)}ContainsArea(e){return this.start.column<=e.start.column&&this.end.column>=e.end.column&&this.start.row<=e.start.row&&this.end.row>=e.end.row}Intersects(e){return!(e.start.column>this.end.column||this.start.column>e.end.column||e.start.row>this.end.row||this.start.row>e.end.row)}Equals(e){return e.start_.row===this.start_.row&&e.start_.column===this.start_.column&&e.end_.row===this.end_.row&&e.end_.column===this.end_.column}Clone(){return new oe(this.start,this.end)}Array(){if(this.entire_column||this.entire_row)throw new Error("can\'t convert infinite area to array");let e=new Array(this.rows*this.columns),t=this.start_.sheet_id,i=0;for(let n=this.start_.row;n<=this.end_.row;n++)for(let r=this.start_.column;r<=this.end_.column;r++)e[i++]={row:n,column:r,sheet_id:t};return e}get left(){let e=new oe(this.start_,this.end_);return e.end_.column=e.start_.column,e}get right(){let e=new oe(this.start_,this.end_);return e.start_.column=e.end_.column,e}get top(){let e=new oe(this.start_,this.end_);return e.end_.row=e.start_.row,e}get bottom(){let e=new oe(this.start_,this.end_);return e.start_.row=e.end_.row,e}Shift(e,t){return this.start_.row+=e,this.start_.column+=t,this.end_.row+=e,this.end_.column+=t,this}ConsumeAddress(e){this.entire_row||(e.column<this.start_.column&&(this.start_.column=e.column),e.column>this.end_.column&&(this.end_.column=e.column)),this.entire_column||(e.row<this.start_.row&&(this.start_.row=e.row),e.row>this.end_.row&&(this.end_.row=e.row))}ConsumeArea(e){this.ConsumeAddress(e.start),this.ConsumeAddress(e.end)}Resize(e,t){return this.end_.row=this.start_.row+e-1,this.end_.column=this.start_.column+t-1,this}Iterate(e){if(this.entire_column||this.entire_row){console.warn("don\'t iterate infinite area");return}for(let t=this.start_.column;t<=this.end_.column;t++)for(let i=this.start_.row;i<=this.end_.row;i++)e({column:t,row:i,sheet_id:this.start_.sheet_id})}get spreadsheet_label(){let e;return this.entire_sheet?"":this.entire_column?(e=oe.ColumnToLabel(this.start_.column),e+=":"+oe.ColumnToLabel(this.end_.column),e):this.entire_row?(e=String(this.start_.row+1),e+=":"+(this.end_.row+1),e):(e=oe.CellAddressToLabel(this.start_),this.columns>1||this.rows>1?e+":"+oe.CellAddressToLabel(this.end_):e)}toJSON(){return{start:{...this.start_},end:{...this.end_}}}};var Ti=s=>typeof s=="object"&&!!s&&typeof s.real=="number"&&typeof s.imaginary=="number";var Tt=s=>typeof s=="object"&&!!s&&typeof s.value=="number"&&typeof s.unit=="string",Pt=["undefined","formula","string","number","boolean","object","error","complex","array","dimensioned_quantity"];var ze=s=>{switch(typeof s){case"undefined":return 0;case"number":return 3;case"boolean":return 4;case"object":return s===null?0:Ti(s)?7:Tt(s)?9:5;case"string":return s[0]==="="?1:2;default:return 6}};var me=class{constructor(e,t){this.type=0;this.render_clean=[];typeof e<"u"&&this.Set(e,t)}static StringToColumn(e){let t=0;e=e.toUpperCase();for(let i=0;i<e.length;i++)t*=26,t+=e.charCodeAt(i)-64;return t-1}ValueIsNumber(){return this.type===3}ValueIsFormula(){return this.type===1}ValueIsBoolean(){return this.type===4}ValueIsComplex(){return this.type===7}FlushStyle(){this.formatted=this.rendered_type=this.style=void 0,this.render_clean=[]}FlushArray(){this.area=void 0}FlushCache(){this.calculated=this.calculated_type=this.formatted=this.rendered_type=this.render_function=this.click_function=void 0,this.render_clean=[]}Reset(){this.type=0,this.value=this.note=this.hyperlink=this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.area=this.renderer_data=this.render_function=this.click_function=void 0,this.render_clean=[]}Set(e,t=ze(e)){this.value=e,this.type=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=this.render_function=this.click_function=this.area=void 0,this.render_clean=[]}SetCalculatedValue(e,t=ze(e)){e===void 0&&(e=0,t=3),this.calculated!==e&&(this.calculated=e,this.calculated_type=t,this.formatted=this.rendered_type=void 0,this.render_clean=[])}GetValue(){return this.calculated_type?this.calculated:typeof this.value=="string"&&this.value[0]==="\'"?this.value.slice(1):this.value}GetValue4(){return this.calculated_type?{type:this.calculated_type,value:this.calculated}:this.type===1?{type:3,value:0}:{type:this.type,value:typeof this.value=="string"&&this.value[0]==="\'"?this.value.slice(1):this.value}}SetNote(e){this.note=e,this.render_clean=[]}SetCalculationError(e="ERR"){this.SetCalculatedValue(e,6)}SetArray(e){this.type=0,this.value=this.formatted=this.rendered_type=this.style=this.hyperlink=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}SetArrayHead(e,t){this.type=ze(t),this.value=t,this.formatted=this.rendered_type=this.style=this.calculated=this.calculated_type=void 0,this.area=e,this.render_clean=[]}};var Pi=s=>!s.cells,Zi=s=>!!s[0]&&Pi(s[0]),Ei=s=>!!s[0]&&s[0].row!==void 0,Ri=Pt.map((s,e)=>({[s]:e})).reduce((s,e)=>({...s,...e}),{}),ot=class{constructor(){this.data=[];this.rows_=0;this.columns_=0}get rows(){return this.rows_}get columns(){return this.columns_}EnsureRow(e){this.rows_=Math.max(e+1,this.rows_)}EnsureColumn(e){this.columns_=Math.max(e+1,this.columns_)}InsertColumns(e=0,t=1){let i=JSON.parse(JSON.stringify(this.data[13]));this.data=this.data.map(n=>{if(n.length>=e){let r=n.slice(0,e),a=e+t,o=n.slice(e);for(let l=0;l<o.length;l++)r[a++]=o[l];return r}return n}),this.columns_+=t}DeleteColumns(e,t=1){this.data.forEach(i=>i.splice(e,t)),this.columns_-=t}DeleteRows(e,t=1){this.data.splice(e,t),this.rows_-=t}InsertRows(e=0,t=1){let i=[e,0,[]];for(let n=1;n<t;n++)i.push([]);Array.prototype.splice.apply(this.data,i),this.rows_+=t}GetCell(e,t){let{row:i,column:n}=e;if(!this.data[i])if(t)this.data[i]=[],this.rows_=Math.max(this.rows_,i+1);else return;return this.data[i][n]||t&&(this.data[i][n]=new me,this.columns_=Math.max(this.columns_,n+1)),this.data[i][n]}EnsureCell(e){let{row:t,column:i}=e,n=this.data[t];n||(this.data[t]=n=[],this.rows_=Math.max(this.rows_,t+1));let r=n[i];return r||(r=n[i]=new me,this.columns_=Math.max(this.columns_,i+1)),r}FromArray(e=[],t=!1){this.data=[];let i=0,n=0;if(t){n=e.length;for(let r=0;r<n;r++){let a=e[r];i=Math.max(i,a.length);for(let o=0;o<a.length;o++)this.data[o]||(this.data[o]=[]),this.data[o][r]=new me(a[o])}}else{i=e.length;for(let r=0;r<i;r++){let a=[],o=e[r];n=Math.max(n,o.length);for(let l=0;l<o.length;l++)a[l]=new me(o[l]);this.data[r]=a}}this.rows_=i,this.columns_=n}SerializedTypeToValueType(e){if(e)return typeof e=="number"?e:Ri[e]||void 0}ValueTypeToSerializedType(e){return e?Pt[e]:void 0}ImportDataValidation(e){if(typeof e.type=="number"){let t=["list","date","range","number","boolean"];if(e.type=t[e.type],!e.type)return}return e}FromJSON(e=[],t){if(this.data=[],!Zi(e)){let n=[];if(Ei(e))for(let r of e)for(let a of r.cells)n.push({...a,row:r.row});else for(let r of e)for(let a of r.cells)n.push({...a,column:r.column});e=n}let i=[];for(let n of e){this.data[n.row]||(this.data[n.row]=[]);let r=new me(n.value);if(typeof n.calculated<"u"&&r.SetCalculatedValue(n.calculated,this.SerializedTypeToValueType(n.calculated_type)),t&&typeof n.style_ref<"u"&&(r.style=t[n.style_ref]),typeof n.note<"u"&&(r.note=n.note),typeof n.hyperlink<"u"&&(r.hyperlink=n.hyperlink),this.data[n.row][n.column]&&this.data[n.row][n.column].area&&(r.area=this.data[n.row][n.column].area),this.data[n.row][n.column]=r,n.area){let a=new oe(n.area.start,n.area.end);for(let o=a.start.row;o<=a.end.row;o++)for(let l=a.start.column;l<=a.end.column;l++)this.data[o]||(this.data[o]=[]),this.data[o][l]||(this.data[o][l]=new me),this.data[o][l].area=a}if(n.table&&i.push({...n.table}),n.merge_area){let a=new oe(n.merge_area.start,n.merge_area.end);for(let o=a.start.row;o<=a.end.row;o++)for(let l=a.start.column;l<=a.end.column;l++)this.data[o]||(this.data[o]=[]),this.data[o][l]||(this.data[o][l]=new me),this.data[o][l].merge_area=a}n.validation&&(r.validation=this.ImportDataValidation(n.validation))}for(let n of i)for(let r=n.area.start.row;r<=n.area.end.row;r++)for(let a=n.area.start.column;a<=n.area.end.column;a++)this.data[r]||(this.data[r]=[]),this.data[r][a]||(this.data[r][a]=new me),this.data[r][a].table=n;this.rows_=this.data.length,this.columns_=this.data.reduce((n,r)=>Math.max(n,r.length),0)}toJSON(e={}){let t=0,i=0,n=this.data.length-1,r;e.subset&&(t=e.subset.start.column,i=e.subset.start.row,n=e.subset.end.row);let a=[],o=-1,l=-1,u={},h={};for(let c=i;c<=n;c++)if(this.data[c]){let b=this.data[c];r=b.length-1,e.subset&&(r=e.subset.end.column);for(let f=t;f<=r;f++){let p=b[f],g=p&&p.merge_area&&p.merge_area.start.row===c&&p.merge_area.start.column===f,_=p&&p.area&&p.area.start.row===c&&p.area.start.column===f,w=p&&p.table&&p.table.area.start.row===c&&p.table.area.start.column===f,A=p?p.type===2&&!p.value:!0;if(p&&(!A||e.preserve_empty_strings)&&(g||p.type||p.calculated_type&&e.expand_arrays||p.calculated_type&&e.calculated_value||p.note||p.validation||e.decorated_cells&&p.style&&(p.style.fill||p.style.border_bottom||p.style.border_top||p.style.border_left||p.style.border_right))){let v={row:c,column:f,value:p.value};p.note&&(v.note=p.note),p.hyperlink&&(v.hyperlink=p.hyperlink),e.preserve_type&&(v.type=this.ValueTypeToSerializedType(p.type)),e.sheet_id&&(v.sheet_id=e.sheet_id),e.calculated_value&&typeof p.calculated<"u"&&(v.calculated=p.calculated,(e.preserve_type||p.calculated_type===6)&&(v.calculated_type=this.ValueTypeToSerializedType(p.calculated_type))),p.table&&w&&e.tables&&(v.table=JSON.parse(JSON.stringify(p.table))),p.area&&_&&(v.area=p.area.toJSON()),p.merge_area&&(v.merge_area=p.merge_area.toJSON()),p.validation&&(v.validation=p.validation),e.cell_style_refs&&e.cell_style_refs[f]&&e.cell_style_refs[f][c]&&(v.style_ref=e.cell_style_refs[f][c],e.cell_style_refs[f][c]=0),u[c]=c,h[f]=f,o=Math.max(c,o),l=Math.max(f,l),a.push(v)}}}if(e.nested){let c=Object.keys(u),b=Object.keys(h);if(c.length<=b.length&&c.length){let f={},p=[];for(let g of a){let{row:_,...w}=g;f[g.row]||(f[g.row]=[]),f[g.row].push(w)}for(let g of c){let _=Number(g);p.push({row:_,cells:f[_]})}return{data:p,rows:o,columns:l+1}}else if(b.length){let f={},p=[];for(let g of a){let{column:_,...w}=g;f[g.column]||(f[g.column]=[]),f[g.column].push(w)}for(let g of b){let _=Number(g);p.push({column:_,cells:f[_]})}return{data:p,rows:o,columns:l+1}}}return{data:a,rows:o+1,columns:l+1}}GetAll(e=!1){return this.GetRange({row:0,column:0},{row:this.rows_-1,column:this.columns_-1},e)}Normalize2(e,t){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),t.column===1/0&&(t={...t,column:this.columns_-1}),t.row===1/0&&(t={...t,row:this.rows_-1}),{from:e,to:t}}Normalize1(e){return e.column===1/0&&(e={...e,column:0}),e.row===1/0&&(e={...e,row:0}),e}RawValue(e,t=e){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].value:void 0;let i=[],n=this.data.slice(e.row,t.row+1),r=e.column,a=t.column+1;for(let o of n){let l=[];for(let u=r,h=0;u<a;u++,h++){let c=o[u];l.push(c?c.value:void 0)}i.push(l)}return i}GetRange(e,t,i=!1){if(t?{from:e,to:t}=this.Normalize2(e,t):e=this.Normalize1(e),!t||e===t||e.column===t.column&&e.row===t.row)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue():void 0;let n=[];if(i)for(let r=e.column;r<=t.column;r++){let a=[];for(let o=e.row;o<=t.row;o++)this.data[o]&&this.data[o][r]?a.push(this.data[o][r].GetValue()):a.push(void 0);n.push(a)}else for(let r=e.row;r<=t.row;r++){let a=[];for(let o=e.column;o<=t.column;o++)this.data[r]&&this.data[r][o]?a.push(this.data[r][o].GetValue()):a.push(void 0);n.push(a)}return n}GetRange4(e,t=e,i=!1){if({from:e,to:t}=this.Normalize2(e,t),e.row===t.row&&e.column===t.column)return this.data[e.row]&&this.data[e.row][e.column]?this.data[e.row][e.column].GetValue4():{value:void 0,type:0};let n=[];if(i)for(let r=e.column;r<=t.column;r++){let a=[];for(let o=e.row;o<=t.row;o++)this.data[o]&&this.data[o][r]?a.push(this.data[o][r].GetValue4()):a.push({type:0});n.push(a)}else for(let r=e.row;r<=t.row;r++){let a=[];for(let o=e.column;o<=t.column;o++)this.data[r]&&this.data[r][o]?a.push(this.data[r][o].GetValue4()):a.push({type:0});n.push(a)}return{type:8,value:n}}Apply(e,t,i=!1){if(St(e)&&(e=new oe(e)),e.entire_column||e.entire_row)throw new Error("don\'t iterate infinite cells");let n=e.start,r=e.end;if(i)for(let a=n.row;a<=r.row;a++){this.data[a]||(this.data[a]=[]);let o=this.data[a];for(let l=n.column;l<=r.column;l++)o[l]||(o[l]=new me),t(o[l],l,a)}else for(let a=n.row;a<=r.row;a++)if(this.data[a]){let o=this.data[a];for(let l=n.column;l<=r.column;l++)o[l]&&t(o[l],l,a)}}Apply2(e,t,i=!1){if(St(e)&&(e=new oe(e)),e.entire_column||e.entire_row)throw new Error("don\'t iterate infinite cells");let n=e.start,r=e.end;if(i)for(let a=n.row;a<=r.row;a++){this.data[a]||(this.data[a]=[]);let o=this.data[a];for(let l=n.column;l<=r.column;l++)if(o[l]||(o[l]=new me),!t(o[l],l,a))return}else for(let a=n.row;a<=r.row;a++)if(this.data[a]){let o=this.data[a];for(let l=n.column;l<=r.column;l++)if(o[l]&&!t(o[l],l,a))return}}SetArea(e,t){if(ArrayBuffer.isView(t))throw new Error("ABIV");if(Array.isArray(t))for(let i=e.start.row,n=0;i<=e.end.row;i++,n++){this.data[i]||(this.data[i]=[]);let r=this.data[i];if(t[n])for(let a=e.start.column,o=0;a<=e.end.column;a++,o++)r[a]||(r[a]=new me),r[a].Set(t[n][o])}else{let i=ze(t);for(let n=e.start.row;n<=e.end.row;n++){this.data[n]||(this.data[n]=[]);let r=this.data[n];for(let a=e.start.column;a<=e.end.column;a++)r[a]||(r[a]=new me),r[a].Set(t,i)}}this.rows_=Math.max(this.rows_,e.end.row+1),this.columns_=Math.max(this.columns_,e.end.column+1)}IterateAll(e){for(let t of this.data)if(t)for(let i of t)i&&e(i)}FlushCellStyles(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushStyle()}FlushCachedValues(){for(let e of this.data)if(e)for(let t of e)t&&t.FlushCache()}};var le=class{static UpdateLocale(e){if(e)this.locale=e;else if(typeof self<"u"){let n=self?.document?.location;if(n&&n.search&&/locale=([^?&]+?)(?:\\?|$|&)/.test(n.search)){let r=n.search.match(/locale=(.*?)(?:\\?|$|&)/);r&&(this.locale=r[1]),console.info("override locale",this.locale)}else typeof navigator<"u"&&(navigator.languages&&navigator.languages[0]?this.locale=navigator.languages[0]:this.locale=navigator.language)}let t=new Intl.NumberFormat(this.locale,{minimumFractionDigits:1}).format(3.3).replace(/\\d/g,"");this.decimal_separator=t===","?",":".",this.decimal_separator===","?(this.argument_separator=";",this.grouping_separator=" "):(this.argument_separator=",",this.grouping_separator=",");let i=new Date(2e3,0,2,12,0,0,0);this.UpdateDateComponent(0,0,i),i=new Date(2e3,1,7,12,0,0,0),this.UpdateDateComponent(1,1,i),i=new Date(2e3,2,7,12,0,0,0),this.UpdateDateComponent(2,2,i),i=new Date(2e3,3,5,12,0,0,0),this.UpdateDateComponent(3,3,i),i=new Date(2e3,4,4,12,0,0,0),this.UpdateDateComponent(4,4,i),i=new Date(2e3,5,2,12,0,0,0),this.UpdateDateComponent(5,5,i),i=new Date(2e3,6,1,12,0,0,0),this.UpdateDateComponent(6,6,i),i=new Date(2e3,7,1,12,0,0,0),this.UpdateDateComponent(7,-1,i),i=new Date(2e3,8,1,12,0,0,0),this.UpdateDateComponent(8,-1,i),i=new Date(2e3,9,1,12,0,0,0),this.UpdateDateComponent(9,-1,i),i=new Date(2e3,10,1,12,0,0,0),this.UpdateDateComponent(10,-1,i),i=new Date(2e3,11,1,12,0,0,0),this.UpdateDateComponent(11,-1,i)}static UpdateDateComponent(e,t,i){t>=0&&(this.date_components.short_days[t]=i.toLocaleString(this.locale,{weekday:"short"}),this.date_components.long_days[t]=i.toLocaleString(this.locale,{weekday:"long"})),e>=0&&(this.date_components.short_months[e]=i.toLocaleString(this.locale,{month:"short"}),this.date_components.long_months[e]=i.toLocaleString(this.locale,{month:"long"}))}};le.locale="en-us",le.decimal_separator=".",le.argument_separator=",",le.grouping_separator=",",le.date_components={short_days:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],long_days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],short_months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months:["January","February","March","April","May","June","July","August","September","October","November","December"]};le.UpdateLocale();var pe;(f=>{let s=JSON.stringify({}),e;(A=>(A.None="",A.Left="left",A.Center="center",A.Right="right"))(e=f.HorizontalAlign||={});let t;(A=>(A.None="",A.Top="top",A.Bottom="bottom",A.Middle="middle"))(t=f.VerticalAlign||={}),f.DefaultProperties={horizontal_align:"",vertical_align:"",number_format:"General",nan:"NaN",font_size:{unit:"pt",value:10.5},font_face:"sans-serif",bold:!1,italic:!1,underline:!1,strike:!1,text:{theme:1},border_top:0,border_left:0,border_right:0,border_bottom:0},f.CompositeBorders=p=>({top:{width:p.border_top||0,color:p.border_top_fill||{}},left:{width:p.border_left||0,color:p.border_left_fill||{}},right:{width:p.border_right||0,color:p.border_right_fill||{}},bottom:{width:p.border_bottom||0,color:p.border_bottom_fill||{}}}),f.Merge=(p,g,_=!0)=>{let w=_?{...p,...g}:{...g};return JSON.parse(JSON.stringify(w))},f.Composite=p=>JSON.parse(JSON.stringify(p.reduce((g,_)=>({...g,..._}),{}))),f.Empty=p=>JSON.stringify(p)===s,f.ValidColor=p=>!!(p&&!p.none&&(p.text||p.theme||p.theme===0)),f.ParseFontSize=(p="",g="em")=>{let _=p.match(/(-*[\\d.]+)\\s*(\\S*)/);if(_){let w=Number(_[1]);if(!w||isNaN(w)||w<0)return{};let A=_[2].toLowerCase()||g;if(A==="pt"||A==="em"||A==="%"||A==="px")return{font_size:{unit:A,value:w}}}return{}},f.RelativeFontSize=(p,g)=>{let _=12,w=12;switch(p.font_size?.unit){case"pt":if(!p.font_size.value)return 1;w=p.font_size.value;break;case"px":if(!p.font_size.value)return 1;w=Math.round(p.font_size.value*300/4)/100;break;case"em":return p.font_size.value||1;case"%":return(p.font_size.value||100)/100;default:return 1}switch(g.font_size?.unit){case"pt":if(!g.font_size.value)return 1;_=g.font_size.value;break;case"px":if(!g.font_size.value)return 1;_=Math.round(g.font_size.value*300/4)/100;break;default:return 1}return w/_},f.FontSize=(p,g=!0)=>{let _=p.font_size?.value;switch(p.font_size?.unit){case"pt":return(_||12)+"pt";case"px":return g?Math.round((_||16)*300/4)/100+"pt":(_||16)+"px";case"em":return(_||1)+"em";case"%":return(_||100)+"%"}return""},f.Font=(p,g=1)=>{let _=[];return p.bold&&_.push("bold"),p.italic&&_.push("italic"),_.push(((p.font_size?.value||0)*g).toFixed(2)+(p.font_size?.unit||"pt")),_.push(p.font_face||""),_.join(" ")}})(pe||={});var Zt=class{Darken(e,t,i,n,r=!1){let{h:a,s:o,l}=this.RGBToHSL(e,t,i);return r?l-=l*n/100:l-=n/100,l=Math.max(0,Math.min(1,l)),this.HSLToRGB(a,o,l)}Lighten(e,t,i,n,r=!1){let{h:a,s:o,l}=this.RGBToHSL(e,t,i);return r?l+=l*n/100:l+=n/100,l=Math.max(0,Math.min(1,l)),this.HSLToRGB(a,o,l)}RGBToHSL(e,t,i){e/=255,t/=255,i/=255;let n=Math.max(e,t,i),r=Math.min(e,t,i),a=0,o=0,l=(n+r)/2;if(n===r)a=o=0;else{let u=n-r;switch(o=l>.5?u/(2-n-r):u/(n+r),n){case e:a=(t-i)/u+(t<i?6:0);break;case t:a=(i-e)/u+2;break;case i:a=(e-t)/u+4;break}a/=6}return{h:a*360,s:o,l}}HSLToRGB(e,t,i){let n,r,a;if(t===0)n=r=a=i;else{e=e/360;let o=i<.5?i*(1+t):i+t-i*t,l=2*i-o;n=this.HueToRGB(l,o,e+1/3),r=this.HueToRGB(l,o,e),a=this.HueToRGB(l,o,e-1/3)}return{r:Math.round(n*255),g:Math.round(r*255),b:Math.round(a*255)}}HueToRGB(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+(t-e)*6*i:i<1/2?t:i<2/3?e+(t-e)*(2/3-i)*6:e}},zi=new Zt;var _t=nt(Ot());var Ln={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":\'"\',"&apos;":"\'"},On=/&\\w+;/g,Vn=s=>s.replace(On,e=>Ln[e]||e);var lt=Vn;var Hr=(s,e)=>lt(e),Jr={ignoreAttributes:!1,attributeNamePrefix:"__",trimValues:!1,textNodeName:"text__",tagValueProcessor:Hr,ignoreDeclaration:!0},ct={ignoreAttributes:!1,attributesGroupName:"a$",attributeNamePrefix:"",textNodeName:"t$",trimValues:!1,ignoreDeclaration:!0,isArray:(s,e,t,i)=>/Relationship$/.test(s),tagValueProcessor:Hr},ne=class{static FindChild(e={},t){let i=t.split("/");for(let n of i)if(e=e[n],!e)return;return e}static FindAll(e={},t){let i=t.split("/");if(i[0]==="."&&i.shift(),i[0]==="..")throw new Error("invalid path (no access to parent)");if(i[0]==="")throw new Error("invalid path (no access to root)");if(i[0]==="**")throw new Error("ENOTIMPL");return this.FindAllTail(e,i)}static FindAllTail(e,t){if(Array.isArray(e))return e.reduce((i,n)=>i.concat(this.FindAllTail(n,t)),[]);for(let i=0;i<t.length;i++){let n=t[i];if(n==="*"?e=Object.keys(e).filter(r=>r!=="a$"&&r!=="t$").map(r=>e[r]):e=e[n],!e)return[];if(Array.isArray(e)){if(i===t.length-1||e.length===0)return e;let r=t.slice(1);return e.reduce((a,o)=>a.concat(this.FindAllTail(o,r)),[])}}return[e]}};var Ge=class{constructor(){this.strings=[];this.reverse={}}FromXML(e){this.strings=[],this.reverse={};let t=0;for(let i of ne.FindAll(e,"sst/si")){if(i.t){let n="";typeof i.t=="string"?n=i.t:i.t.t$&&(n=i.t.t$),this.strings[t]=n,this.reverse[n]=t}else if(i.r){let r=ne.FindAll(i.r,"t").map(a=>typeof a=="string"?a:a.t$||"").join("");this.strings[t]=r,this.reverse[r]=t}else console.warn(` ** unexpected shared string @ ${t}`),console.info(i);t++}}Get(e){return this.strings[e]}Ensure(e){e[0]==="\'"&&(e=e.substring(1));let t=this.reverse[e];return typeof t=="number"||(t=this.strings.length,this.strings.push(e),this.reverse[e]=t),t}};var Vt=class{constructor(){this.colors={}}FromXML(e){let t=Object.keys(e)[0],i="",n=t.toString().match(/^(.*?):/);if(n&&(i=n[1]+":"),e[t]&&e[t][`${i}themeElements`]){let r=e[t][`${i}themeElements`][`${i}clrScheme`];for(let a of Vt.color_map){let o=r[`${i}${a}`],l,u="rgb";o[`${i}srgbClr`]?(u="rgb",l=o[`${i}srgbClr`].a$.val||""):o[`${i}sysClr`]&&(u="system",l=o[`${i}sysClr`].a$.lastClr||""),this.colors[a]={name:a,value:l,type:u}}}}},Ie=Vt;Ie.color_map=["lt1","dk1","lt2","dk2","accent1","accent2","accent3","accent4","accent5","accent6","hlink","folHlink"];var Ne=class{constructor(){this.date_format=!1;this.string_format=!1;this.fraction_format=!1;this.twelve_hour=!1;this.fraction_denominator=0;this.fraction_integer=!0;this.fraction_align=0;this.fraction_denominator_digits=0;this.integer_min_digits=0;this.decimal_min_digits=0;this.decimal_max_digits=0;this.grouping=!1;this.has_number_format=!1;this.prefix=[{text:""}];this.suffix=[{text:""}];this.scaling=0;this.percent=!1;this.exponential=!1;this.has_asterisk=!1}};var Xr=42,Qr=95,jt=63,ht=48,qr=46,$t=44,Kr=37,Dt=34,He=35,ei=59,dt=92,ti=64,$n=91,Dn=93,ri=69,ii=101,Yn=72,Hn=104,Jn=77,Xn=109,Qn=83,qn=115,Kn=68,es=100,ts=89,rs=121,is=65,ns=97;var _e=class{static Parse(e){if(this.pattern=e,this.characters=e.split("").map(t=>t.charCodeAt(0)),this.char_index=0,this.current_section=new Ne,this.sections=[this.current_section],this.ParseDatePattern())return this.sections;for(this.char_index=0,this.current_section=new Ne,this.sections=[this.current_section];this.char_index<this.characters.length;)this.ConsumeChar();return this.sections}static ConsumeString(){let e="";for(this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case dt:this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index+1<this.characters.length&&(e+=this.pattern[++this.char_index]);break;case Dt:return this.preserve_formatting_characters&&(e+=this.pattern[this.char_index]),this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated string")}static ConsumeFormatting(){let e="";for(++this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case dt:throw new Error("invalid escape character in formatting block");case Dn:return this.char_index++,e;default:e+=this.pattern[this.char_index];break}throw new Error("unterminated format")}static ScanFractionFormat(){let e=/^([#?]+ +){0,1}([#?]+)\\/([#?0-9]+)(?:$|[^#?0-9])/,i=this.pattern.substr(this.char_index).match(e);if(!i)return!1;let n=(i[1]||"").length+i[2].length+i[3].length+1;this.current_section.fraction_format=!0,this.current_section.fraction_integer=!!i[1];let r=Number(i[3]);return isNaN(r)||(this.current_section.fraction_denominator=r),this.current_section.decimal_max_digits=this.current_section.fraction_denominator_digits=i[3].length,this.char_index+=n,this.current_section.has_number_format=!0,!0}static ConsumeNumberFormat(){let e=0;for(this.char_index;this.char_index<this.characters.length;this.char_index++)switch(this.characters[this.char_index]){case this.group_separator:{let i=!1;for(let n=this.char_index+1;!i&&n<this.characters.length;n++){let r=this.characters[n];if(r===this.decimal_mark||r===He||r===ht)i=!0;else if(r!==$t)break}if(i){if(e===1)throw new Error("invalid grouping in decimal part");this.current_section.grouping=!0}else this.current_section.scaling=(this.current_section.scaling||1)*1e3}break;case this.decimal_mark:if(e===1)throw new Error("too many decimal marks");e=1;break;case He:e===1?this.current_section.decimal_max_digits++:this.current_section.integer_min_digits&&this.current_section.integer_min_digits++;break;case ht:e===1?(this.current_section.decimal_max_digits++,this.current_section.decimal_min_digits=this.current_section.decimal_max_digits):this.current_section.integer_min_digits++;break;default:return}}static AppendCharAsText(e=!0){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=this.pattern[this.char_index]:this.current_section.prefix[this.current_section.prefix.length-1].text+=this.pattern[this.char_index],e&&this.char_index++}static AppendString(e){this.current_section.has_number_format?this.current_section.suffix[this.current_section.suffix.length-1].text+=e:this.current_section.prefix[this.current_section.prefix.length-1].text+=e}static AppendTextPart(e){this.current_section.has_number_format?(this.current_section.suffix.push(e),this.current_section.suffix.push({text:""})):(this.current_section.prefix.push(e),this.current_section.prefix.push({text:""}))}static ConsumeChar(){let e=this.characters[this.char_index];if(!((e===jt||e===He)&&!this.current_section.has_number_format&&!this.current_section.string_format&&this.ScanFractionFormat()))switch(e){case ei:this.char_index++,this.current_section=new Ne,this.sections.length===3&&(this.current_section.string_format=!0),this.sections.push(this.current_section);break;case ti:this.char_index++,this.AppendTextPart({text:"@",flag:5}),this.current_section.string_format=!0;break;case ht:case He:case qr:case $t:!this.current_section.has_number_format&&!this.current_section.string_format?(this.ConsumeNumberFormat(),this.current_section.has_number_format=!0):this.AppendCharAsText();break;case $n:this.AppendTextPart({text:this.ConsumeFormatting(),flag:6});break;case Dt:this.AppendString(this.ConsumeString());break;case jt:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case Qr:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case Xr:if(this.current_section.has_asterisk)throw new Error("we don\'t support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case ii:case ri:this.current_section.percent||this.current_section.exponential||this.current_section.string_format?this.AppendCharAsText():(this.current_section.exponential=!0,this.char_index++);break;case Kr:!this.current_section.exponential&&!this.current_section.string_format&&(this.current_section.percent=!0),this.AppendCharAsText();break;case dt:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}static ParseDatePattern(){for(this.date_pattern=!0;this.date_pattern&&this.char_index<this.pattern.length;)this.DatePatternConsumeChar();if(this.date_pattern){this.date_pattern=!1;for(let e of this.sections)for(let t of e.prefix)t.flag&&t.flag&7&&(this.date_pattern=!0)}return this.date_pattern&&(this.sections[0].date_format=!0,this.sections[0].prefix.forEach((e,t)=>{if(e.flag===3&&(e.text==="mm"||e.text==="m")){if(t)for(let i=t-1;i;i--){let n=this.sections[0].prefix[i];if(n.flag===3){/h/i.test(n.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}if(t<this.sections[0].prefix.length-1)for(let i=t+1;i<this.sections[0].prefix.length;i++){let n=this.sections[0].prefix[i];if(n.flag===3){/s/i.test(n.text)&&(e.flag=4,e.text=e.text.toLowerCase());break}}}})),this.date_pattern}static ConsumeDatePart(){let e=this.pattern[this.char_index++],t=e.toLowerCase(),i={text:e,flag:3};for(;this.pattern[this.char_index]&&this.pattern[this.char_index].toLowerCase()===t;)i.text+=this.pattern[this.char_index++];if(t==="s"&&this.pattern[this.char_index]===".")for(i.text+=this.pattern[this.char_index++];this.pattern[this.char_index]==="0";)i.text+=this.pattern[this.char_index++];return i}static ConsumeAMPM(){let e=this.pattern.substr(this.char_index,5);if(e==="am/pm"||e==="AM/PM")return this.char_index+=5,this.sections[0].twelve_hour=!0,{text:e,flag:3};if(e=this.pattern.substr(this.char_index,3),e==="a/p"||e==="A/P")return this.char_index+=3,this.sections[0].twelve_hour=!0,{text:e,flag:3}}static DatePatternConsumeChar(){switch(this.characters[this.char_index]){case ei:this.char_index=this.characters.length;break;case ht:case He:case ii:case ri:case Kr:case ti:this.date_pattern=!1;break;case Yn:case Hn:case Jn:case Xn:case Qn:case qn:case Kn:case es:case ts:case rs:this.AppendTextPart(this.ConsumeDatePart());break;case is:case ns:{let t=this.ConsumeAMPM();t?this.AppendTextPart(t):this.AppendCharAsText()}break;case Dt:this.AppendString(this.ConsumeString());break;case jt:this.preserve_formatting_characters?this.AppendCharAsText():(this.AppendTextPart({text:"0",flag:1}),this.char_index++);break;case Qr:if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:1})}break;case Xr:if(this.current_section.has_asterisk)throw new Error("we don\'t support multiple asterisks");if(this.preserve_formatting_characters)this.AppendCharAsText();else{if(++this.char_index>=this.characters.length)throw new Error("invalid pad character at end");this.AppendTextPart({text:this.pattern[this.char_index++],flag:2}),this.current_section.has_asterisk=!0}break;case dt:if(this.preserve_formatting_characters&&this.AppendCharAsText(!1),++this.char_index>=this.characters.length)throw new Error("invalid escape character at end");this.AppendCharAsText();break;default:this.AppendCharAsText()}}};_e.date_pattern=!1,_e.pattern="",_e.char_index=0,_e.characters=[],_e.sections=[],_e.current_section=new Ne,_e.preserve_formatting_characters=!1,_e.decimal_mark=qr,_e.group_separator=$t;var ss=s=>(s>=60&&s--,new Date(-22090752e5+864e5*s)),ni=(s,e=!0)=>{if(e){let t=new Date(s),i=new Date;i.setUTCMilliseconds(t.getUTCMilliseconds()),i.setUTCSeconds(t.getUTCSeconds()),i.setUTCMinutes(t.getUTCMinutes()),i.setUTCHours(t.getHours()),i.setUTCDate(t.getDate()),i.setUTCMonth(t.getMonth()),i.setUTCFullYear(t.getFullYear()),s=i.getTime()}return s=(s+22090752e5)/864e5,s>=60&&s++,s},ke=class{constructor(e){this.magic_decimal=!1;this._pattern="";this.decimal_zero_regexp=[];this.cloned=[];if(this._pattern=e,this.sections=_e.Parse(e),this.sections.length||(this.sections=[]),this.sections[0]||(this.sections[0]=new Ne),this.sections[1]||(this.sections[1]={...this.sections[0]},this.sections[1].prefix=JSON.parse(JSON.stringify(this.sections[1].prefix)),this.sections[1].suffix=JSON.parse(JSON.stringify(this.sections[1].suffix)),this.sections[1].prefix.push({text:"-"}),this.cloned[1]=!0),this.sections[2]||(this.sections[2]={...this.sections[0]},this.cloned[2]=!0),!this.sections[3]){for(let t of this.sections[0].prefix)if(t.flag===5){this.sections[3]={...this.sections[0]},this.sections[3].string_format=!0,this.cloned[3]=!0;break}}this.decimal_zero_regexp=this.sections.map(t=>{if(t.decimal_max_digits>t.decimal_min_digits)return new RegExp(`0{1,${t.decimal_max_digits-t.decimal_min_digits}}(?:$|e)`)})}get pattern(){return this._pattern}get date_format(){return this.sections[0]&&this.sections[0].date_format}static FormatPartsAsText(e,t=0){let i=-1,n=e.map((r,a)=>{switch(r.flag){case 2:return i=a,r.text;case 1:return r.text.replace(/./g," ");case 6:return"";default:return r.text}});if(i>=0&&t){let r=n.reduce((o,l,u)=>u===i?o:o+l.length,0),a="";for(let o=0;o<t-r;o++)a+=n[i];n[i]=a}return n.join("")}SetDecimal(e){for(let t of this.sections)t.fraction_format||(t.decimal_min_digits=e,t.decimal_max_digits=e)}IncreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.min(e.fraction_denominator_digits+1,4)):(e.decimal_min_digits++,e.decimal_max_digits=e.decimal_min_digits)})}DecreaseDecimal(){this.sections.forEach(e=>{e.fraction_format?e.fraction_denominator||(e.fraction_denominator_digits=Math.max(e.fraction_denominator_digits-1,1)):(e.decimal_min_digits=Math.max(0,e.decimal_min_digits-1),e.decimal_max_digits=e.decimal_min_digits)})}AddGrouping(){this.sections.forEach(e=>{e.grouping=!0})}RemoveGrouping(){this.sections.forEach(e=>{e.grouping=!1})}ToggleGrouping(){let e=!this.sections[0].grouping;this.sections.forEach(t=>{t.grouping=e})}toString(){return this.sections[0].date_format?this._pattern:this.sections.filter((e,t)=>!this.cloned[t]).map(e=>{let t="",i=0;if(e.fraction_format){e.fraction_integer&&(t+="? ");let n="";for(let r=0;r<e.fraction_denominator_digits;r++)n+="#";t+=n,t+="/",e.fraction_denominator?t+=e.fraction_denominator:t+=n}else if(e.has_number_format){for(i=0;i<e.integer_min_digits;i++)t+="0";if(e.grouping&&(t.length<4&&(t=("####"+t).slice(-4)),t=t.replace(/[\\d#]{1,3}(?=([\\d#]{3})+(?![\\d#]))/g,"$&,")),e.decimal_max_digits||e.decimal_min_digits){for(t+=".",i=0;i<e.decimal_min_digits;i++)t+="0";for(;i<e.decimal_max_digits;i++)t+="#"}if(e.scaling){let n=Math.log10(e.scaling)/3;for(i=0;i<n;i++)t+=","}e.exponential&&(t+="e")}return e.prefix.map(n=>n.flag===1?n.text==="0"?"?":"_"+n.text:n.flag===2?"*"+n.text:n.flag===6?"["+n.text+"]":n.text).join("")+t+e.suffix.map(n=>n.flag===1?n.text==="0"?"?":"_"+n.text:n.flag===2?"*"+n.text:n.text).join("")}).join(";")}FormatDimensionedQuantity(e){if(this.transform_value){let i=this.transform_value(e);if(Tt(i))e=i;else return typeof i=="string"?i:this.FormatParts(i)}let t=this.FormatParts(e.value||0);return e.unit&&t.push({text:" "},{text:e.unit}),t}FormatComplex(e){let t=[],i=[],n=!1,r=!!e.imaginary;r&&(t=this.FormatParts(e.imaginary),r=t.some(l=>/[1-9]/.test(l.text)),t.length===1&&this.sections[0].integer_min_digits<=1&&t[0].text==="1"?(t[0].text="",n=!0):t.length===1&&this.sections[1].integer_min_digits<=1&&t[0].text==="-1"&&(t[0].text="-",n=!0));let a=!!e.real;a&&(i=this.FormatParts(e.real),a=i.some(l=>/[1-9]/.test(l.text)));let o=[];if(a||!a&&!r){if(o.push(...i),r){let l=Math.abs(e.imaginary);o.push({text:e.imaginary<0?` ${ke.minus_character} `:" + "});let u=n?[]:this.FormatParts(Math.abs(e.imaginary));o.push(...u,{text:ke.imaginary_character})}}else r&&o.push(...t,{text:ke.imaginary_character});return o}FormatParts(e){if(typeof e!="number"&&!this.sections[3])return[{text:e.toString()}];let{parts:t,section:i}=this.BaseFormat(e),n=[];if(i.date_format||i.string_format)for(let r of t)typeof r=="string"?n.push({text:r}):n.push(r);else this.magic_decimal&&t[1]===""&&t.splice(1,1),n=[...i.prefix.map(r=>({...r})),{text:i.has_number_format?t.join(le.decimal_separator):""},...i.suffix.map(r=>({...r}))];for(let r=1;r<n.length;r++)n[r].flag===n[r-1].flag&&(n[r].text=n[r-1].text+n[r].text,n[r-1].text="");return n.filter(r=>r.text)}Format(e,t=0){return ke.FormatPartsAsText(this.FormatParts(e),t)}ZeroPad(e,t){for(;e.length<t;)e="0"+e;return e}DateFormat(e){let t=ss(e),i=this.sections[0],n=t.getUTCHours();return i.twelve_hour&&(n>12&&(n-=12),n===0&&(n=12)),{parts:i.prefix.map(a=>{if(a.flag===4)return a.text==="mm"?{text:this.ZeroPad(t.getUTCMinutes().toString(),2)}:{text:this.ZeroPad(t.getUTCMinutes().toString(),1)};if(a.flag===3){switch(a.text.toLowerCase()){case"am/pm":case"a/p":{let l=a.text.split("/");return{text:t.getUTCHours()>12?l[1]:l[0]}}case"mmmmm":return{text:le.date_components.long_months[t.getUTCMonth()][0]};case"mmmm":return a.text==="MMMM"?{text:le.date_components.long_months[t.getUTCMonth()].toUpperCase()}:{text:le.date_components.long_months[t.getUTCMonth()]};case"mmm":return a.text==="MMM"?{text:le.date_components.short_months[t.getUTCMonth()].toUpperCase()}:{text:le.date_components.short_months[t.getUTCMonth()]};case"mm":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),2)};case"m":return{text:this.ZeroPad((t.getUTCMonth()+1).toString(),1)};case"ddddd":case"dddd":return a.text==="DDDDD"||a.text==="DDDD"?{text:le.date_components.long_days[t.getUTCDay()].toUpperCase()}:{text:le.date_components.long_days[t.getUTCDay()]};case"ddd":return a.text==="DDD"?{text:le.date_components.short_days[t.getUTCDay()].toUpperCase()}:{text:le.date_components.short_days[t.getUTCDay()]};case"dd":return{text:this.ZeroPad(t.getUTCDate().toString(),2)};case"d":return{text:this.ZeroPad(t.getUTCDate().toString(),1)};case"yyyy":case"yyy":return{text:t.getUTCFullYear().toString()};case"yy":case"y":return{text:this.ZeroPad((t.getUTCFullYear()%100).toString(),2)};case"hh":return{text:this.ZeroPad(n.toString(),2)};case"h":return{text:this.ZeroPad(n.toString(),1)};case"ss":return{text:this.ZeroPad(t.getUTCSeconds().toString(),2)};case"s":return{text:this.ZeroPad(t.getUTCSeconds().toString(),1)}}let o=a.text.match(/^(s+)\\.(0+)$/);if(o)return{text:this.ZeroPad(t.getUTCSeconds().toString(),o[1].length)+le.decimal_separator+(t.getUTCMilliseconds()/1e3).toFixed(o[2].length).substr(2)}}return{...a}}),section:i}}StringFormat(e,t){let i=[];for(let n of t.prefix)n.flag===5?i.push({text:e}):i.push({...n});return{parts:i,section:t}}Round2(e,t){let i=Math.pow(10,t);return Math.round(i*e)/i}FormatFraction(e,t){t.percent&&(e*=100);let i={denominator:1,numerator:Math.round(e),error:Math.abs(Math.round(e)-e)};if(t.fraction_denominator)i.denominator=t.fraction_denominator,i.numerator=Math.round(e*i.denominator);else if(i.error){let r=ke.fraction_limits[t.fraction_denominator_digits-1]||ke.fraction_limits[0];for(let a=2;a<=r;a++){let o=Math.round(e*a),l=Math.abs(o/a-e);if(l<i.error&&(i={numerator:o,denominator:a,error:l},!l))break}}let n=[];if(t.fraction_integer){let r=Math.floor(i.numerator/i.denominator);i.numerator%=i.denominator,(r||!i.numerator)&&(n.push(r.toString()),i.numerator&&n.push(" "))}else i.numerator||n.push("0");return i.numerator&&(n.push(i.numerator.toString()),n.push("/"),n.push(i.denominator.toString())),n.join("")}BaseFormat(e){if(this.sections[0].date_format)return this.DateFormat(Number(e));if(typeof e!="number")return this.StringFormat(e.toString(),this.sections[3]);let t=this.sections[0],i=this.decimal_zero_regexp[0];e<0&&(t=this.sections[1]);let n=t.percent?t.decimal_max_digits+2:t.decimal_max_digits,r=Math.pow(10,-n)/2,a=Math.abs(e);if(a<r&&(t=this.sections[2],i=this.decimal_zero_regexp[2]),t.scaling&&(a/=t.scaling,a<r&&(t=this.sections[2],i=this.decimal_zero_regexp[2])),t.string_format)return this.StringFormat(e.toString(),t);let o="";if(t.fraction_format)return{parts:[this.FormatFraction(a,t)],section:t};t.exponential?o=a.toExponential(t.decimal_max_digits):(t.percent&&(a*=100),o=this.Round2(a,t.decimal_max_digits).toFixed(t.decimal_max_digits)),i&&(o=o.replace(i,""));let l=o.split(".");for(;l[0].length<t.integer_min_digits;)l[0]=("0000000000000000"+l[0]).slice(-t.integer_min_digits);return t.integer_min_digits===0&&l[0]==="0"&&(l[0]=""),t.grouping&&(l[0]=l[0].replace(ke.grouping_regexp,"$&"+le.grouping_separator)),{parts:l,section:t}}},ve=ke;ve.grouping_regexp=/\\d{1,3}(?=(\\d{3})+(?!\\d))/g,ve.fraction_limits=[9,99,999,9999],ve.imaginary_character="\\u{1D456}",ve.minus_character="-";var Se=class{static Get(e,t=!1){if(t&&e==="General")return this.complex_general;let i=this.symbolc_name_map[e.toLowerCase()],n=this.cache[i||e];return n||(n=new ve(e),this.cache[e]=n),n}static Equals(e,t){if(e===t)return!0;let i=this.Get(e),n=this.Get(t);return i.pattern===n.pattern}static Translate(e){let t=this.symbolc_name_map[e.toLowerCase()];return t?this.cache[t].toString():e}static SymbolicName(e){for(let t of Object.keys(this.base_formats))if(e===this.base_formats[t])return t;return null}static InitCache(){for(let e of Object.keys(this.base_formats))this.cache[e]=new ve(this.base_formats[e]),this.symbolc_name_map[e.toLowerCase()]=e;this.cache.General.magic_decimal=!0,this.complex_general=new ve("0.###"),this.complex_general.magic_decimal=!0;for(let e of Object.keys(this.aliases))this.cache[e]=this.cache[this.aliases[e]],this.symbolc_name_map[e.toLowerCase()]=e}};Se.cache={},Se.symbolc_name_map={},Se.base_formats={Accounting:"_(#,##0.00_);(#,##0.00);-???",Number:"0.00",Integer:"0",Percent:"0.00%",General:"0.######",Fraction:"# ?/?",Dollar:"$* _(#,##0.00_);$* (#,##0.00);$* -???",Exponential:"0.000e","Short Date":"mm/dd/yy","Long Date":"dddd, mmm d yyyy",Timestamp:"mm-dd-yy hh:mm:ss"},Se.aliases={Scientific:"Exponential",Percentage:"Percent",Currency:"Dollar"};Se.InitCache();var si=new Date().getUTCFullYear(),Yt=class{TestDate(e){let t=Date.parse(e);if(isNaN(t))return!1;let i=new Date(t),r=e.replace(/[\\d\\-\\\\/,.\\s]+/g," ").toLocaleLowerCase().split(/\\s+/).map(l=>l.trim()).filter(l=>!!l);if(!r.length)return t;if(!this.compare_month){this.compare_month={};for(let l=0;l<12;l++)this.compare_month[le.date_components.long_months[l].toLocaleLowerCase().replace(/\\./,"")]=l,this.compare_month[le.date_components.short_months[l].toLocaleLowerCase().replace(/\\./,"")]=l}if(!this.compare_day){this.compare_day={};for(let l=0;l<7;l++)this.compare_day[le.date_components.long_days[l].toLocaleLowerCase().replace(/\\./,"")]=l,this.compare_day[le.date_components.short_days[l].toLocaleLowerCase().replace(/\\./,"")]=l}let a=!1,o=!1;for(let l of r){let u=!1;for(let[h,c]of Object.entries(this.compare_month))if(l===h){if(a||i.getUTCMonth()!==c)return!1;u=!0,a=!0}if(!u){for(let[h,c]of Object.entries(this.compare_day))if(l===h){if(o||i.getUTCDay()!==c)return!1;u=!0,o=!0}}if(!u)return!1}return o&&!a?!1:t}TryParse(e=""){let t=0;if(e[0]==="\'")return{value:e,type:2};if(e==="")return{value:e,type:2};if(e==="NaN")return{value:NaN,type:3,hints:1};let i=e.trim(),n=i.match(/^[$](.*?)$/);n&&(i=n[1],t|=8);let r=i.match(/^\\((.*?)\\)$/);r&&(i=r[1],t|=32);let a=i.match(/^(.*?)%\\s*$/);a&&(i=a[1],t|=4),le.decimal_separator==="."?/,/.test(i)&&(i=i.replace(/,/g,""),t|=16):(i=i.replace(/(\\d)\\s+/g,"$1"),i=i.replace(/\\./g,""),i=i.replace(/,/,"."));let o=Number(i);if(o===null||isNaN(o)){let l=e.toLowerCase();if(l==="false")return{value:!1,type:4};if(l==="true")return{value:!0,type:4};let u=this.TestDate(e);if(u!==!1&&!isNaN(u)){let h=new Date(u),c=h.getUTCFullYear();if(c>=si-200&&c<=si+200)return t=64,(h.getHours()||h.getMinutes()||h.getSeconds())&&(t|=128),{value:ni(u),type:3,hints:t}}return{value:e,type:2}}if(r&&(o=-o),a){let l=o<0?-1:1,u=(l*o).toString().split(".");u[0]=("00"+u[0]).replace(/(\\d\\d)$/,".$1"),o=Number(u.join(""))*l}return/e/.test(e)&&(t|=2),{value:o,type:3,hints:t}}},Va=new Yt;var Ht={top:{},left:{},bottom:{},right:{},diagonal:{}},ut=class{constructor(){this.theme=new Ie;this.cell_xfs=[];this.fonts=[];this.borders=[];this.fills=[];this.number_formats=[];this.base_number_format_id=200;this.modified=!1}Clamp(e,t,i){return Math.max(t,Math.min(e,i))}TintColor(e,t){let i=parseInt(e.substr(0,2),16),n=parseInt(e.substr(2,2),16),r=parseInt(e.substr(4,2),16);return t<0?(i=Math.round(i*t+i),n=Math.round(n*t+n),r=Math.round(r*t+r)):(i=Math.round((255-i)*t+i),n=Math.round((255-n)*t+n),r=Math.round((255-r)*t+r)),[i,n,r].map(a=>{let o=this.Clamp(a,0,255).toString(16);return o.length<2?"0"+o:o}).join("")}StyleOptionsFromProperties(e){let t=JSON.parse(JSON.stringify(e));for(let u of Object.keys(t))t[u]==="none"&&delete t[u];let i={},n={pattern_type:"none"},r=JSON.parse(JSON.stringify(Ht)),a={font:i,border:r};t.number_format&&(a.number_format={format:Se.Translate(t.number_format),symbolic_name:t.number_format}),t.font_size?.unit&&t.font_size.value&&(t.font_size.unit!=="pt"?console.warn("can\'t handle non-point font (FIXME)"):i.size=t.font_size.value),t.bold&&(i.bold=!0),t.italic&&(i.italic=!0),t.underline&&(i.underline=!0),t.text&&(t.text.text?i.color_argb=t.text.text:typeof t.text.theme=="number"&&(i.color_theme=t.text.theme,t.text.tint&&(i.color_tint=t.text.tint)));let o=(u,h)=>{u.width&&(h.style="thin",u.color.text?h.rgba=u.color.text:typeof u.color.theme=="number"?(h.theme=u.color.theme,u.color.tint&&(h.tint=u.color.tint)):h.color=64)},l=pe.CompositeBorders(t);switch(o(l.top,r.top),o(l.left,r.left),o(l.right,r.right),o(l.bottom,r.bottom),t.vertical_align){case pe.VerticalAlign.Top:a.vertical_alignment="top";break;case pe.VerticalAlign.Middle:a.vertical_alignment="center";break}switch(t.horizontal_align){case pe.HorizontalAlign.Center:a.horizontal_alignment="center";break;case pe.HorizontalAlign.Left:a.horizontal_alignment="left";break;case pe.HorizontalAlign.Right:a.horizontal_alignment="right";break}return t.fill&&(n.pattern_type="solid",t.fill.text?n.fg_color={argb:t.fill.text}:typeof t.fill.theme=="number"?(n.fg_color={theme:t.fill.theme},t.fill.tint&&(n.fg_color.tint=t.fill.tint)):n.fg_color={theme:1},a.fill=n),t.wrap&&(a.wrap=!0),a}CellXfToStyle(e){let t={},i=ut.default_styles[e.number_format];if(!i){for(let l of this.number_formats)if(l.id===e.number_format&&l.format){i=l.format;break}}if(i){let l=/\\[\\$(.)-[0-9A-Za-z]{1,4}\\]/g;i=i.replace(l,"$1");let u=/\\[\\$-[0-9A-Za-z]{1,4}\\]/g;i=i.replace(u,""),t.number_format=i}let n=this.fonts[0],r=this.fonts[e.font||0];r&&(r.bold&&(t.bold=!0),r.italic&&(t.italic=!0),r.underline&&(t.underline=!0),r.strike&&(t.strike=!0),n&&n.size&&r.size&&n.size!==r.size&&(t.font_size={value:100*r.size/n.size,unit:"%"}),r.color_argb?t.text={text:"#"+(r.color_argb.length>6?r.color_argb.substr(r.color_argb.length-6):r.color_argb)}:typeof r.color_theme=="number"&&(t.text={theme:r.color_theme}));let a=this.fills[e.fill||0];if(a&&a.pattern_type!=="none"){if(a.pattern_type==="gray"){let l=Math.round((a.pattern_gray||0)/1e3*255);t.fill={text:`rgb(${l}, ${l}, ${l})`}}a.pattern_type==="solid"&&a.fg_color&&(a.fg_color.argb?t.fill={text:"#"+(a.fg_color.argb.length>6?a.fg_color.argb.substr(a.fg_color.argb.length-6):a.fg_color.argb)}:typeof a.fg_color.theme=="number"&&(t.fill={theme:a.fg_color.theme},a.fg_color.tint&&(t.fill.tint=Math.round(a.fg_color.tint*1e3)/1e3)))}switch(e.horizontal_alignment){case"center":t.horizontal_align=pe.HorizontalAlign.Center;break;case"right":t.horizontal_align=pe.HorizontalAlign.Right;break;case"left":t.horizontal_align=pe.HorizontalAlign.Left;break}switch(e.vertical_alignment){case"center":t.vertical_align=pe.VerticalAlign.Middle;break;case"top":t.vertical_align=pe.VerticalAlign.Top;break;case"bottom":t.vertical_align=pe.VerticalAlign.Bottom;break}e.wrap_text&&(t.wrap=!0);let o=this.borders[e.border||0];return o&&(o.bottom.style&&(o.bottom.style==="double"?t.border_bottom=2:t.border_bottom=1),o.left.style&&(t.border_left=1),o.top.style&&(t.border_top=1),o.right.style&&(t.border_right=1)),t}CellXfToStyles(){return this.cell_xfs.map(e=>this.CellXfToStyle(e))}EnsureNumberFormat(e){if(typeof e.format>"u"||e.symbolic_name&&/^general$/i.test(e.symbolic_name))return 0;for(let i=0;i<100;i++){let n=ut.default_styles[i];if(n&&n===e.format)return i}for(let i of this.number_formats)if(i.format===e.format)return i.id||0;this.modified=!0;let t={id:this.base_number_format_id++,format:e.format};return this.number_formats.push(t),t.id}CompareBorderEdge(e,t){return e.color===t.color&&e.rgba===t.rgba&&e.style===t.style&&e.theme===t.theme&&e.tint===t.tint}CompareBorder(e,t){return this.CompareBorderEdge(e.top,t.top)&&this.CompareBorderEdge(e.left,t.left)&&this.CompareBorderEdge(e.bottom,t.bottom)&&this.CompareBorderEdge(e.right,t.right)&&this.CompareBorderEdge(e.diagonal,t.diagonal)}EnsureBorder(e){for(let i=0;i<this.borders.length;i++){let n=this.borders[i];if(this.CompareBorder(n,e))return i}this.modified=!0;let t=JSON.parse(JSON.stringify(e));return this.borders.push(t),this.borders.length-1}MatchColor(e,t){return!e&&!t?!0:!e||!t?!1:e.argb===t.argb&&e.indexed===t.indexed&&e.theme===t.theme&&e.tint===t.tint}EnsureFill(e){for(let i=0;i<this.fills.length;i++){let n=this.fills[i];if(this.MatchColor(e.bg_color,n.bg_color)&&this.MatchColor(e.fg_color,n.fg_color)&&e.pattern_gray===n.pattern_gray&&e.pattern_type===n.pattern_type)return i}this.modified=!0;let t={...e};return this.fills.push(t),this.fills.length-1}EnsureFont(e){let t={...this.fonts[0],...e};for(let i=0;i<this.fonts.length;i++){let n=this.fonts[i];if(n.bold===t.bold&&n.italic===t.italic&&n.underline===t.underline&&n.size===t.size&&n.strike===t.strike&&n.color_argb===t.color_argb&&n.color_theme===t.color_theme&&n.color_tint===t.color_tint&&n.family===t.family)return i}return this.modified=!0,this.fonts.push(t),this.fonts.length-1}EnsureStyle(e){let t=this.EnsureFont(e.font||{}),i=this.EnsureBorder(e.border||Ht),n=this.EnsureNumberFormat(e.number_format||{}),r=this.EnsureFill(e.fill||{pattern_type:"none"});for(let o=0;o<this.cell_xfs.length;o++){let l=this.cell_xfs[o];if(l.font===t&&l.fill===r&&l.border===i&&l.number_format===n&&!!l.wrap_text==!!e.wrap&&(!e.horizontal_alignment&&!l.horizontal_alignment||e.horizontal_alignment===l.horizontal_alignment)&&(!e.vertical_alignment&&!l.vertical_alignment||e.vertical_alignment===l.vertical_alignment))return o}this.modified=!0;let a={font:t,fill:r,border:i,number_format:n};return e.horizontal_alignment&&(a.horizontal_alignment=e.horizontal_alignment),e.vertical_alignment&&(a.vertical_alignment=e.vertical_alignment),e.wrap&&(a.wrap_text=!0),this.cell_xfs.push(a),this.cell_xfs.length-1}FromXML(e,t){let i=ne.FindAll.bind(ne,e);this.theme=t;let n=i("styleSheet/numFmts/numFmt");this.number_formats=n.map(r=>({id:Number(r.a$?.numFmtId||0),format:lt(r.a$?.formatCode||"")})),n=i("styleSheet/borders/border"),this.borders=n.map(r=>{let a=JSON.parse(JSON.stringify(Ht));return r.left&&(a.left.style=r.left.a$.style,a.left.color=Number(r.left.color?.a$?.indexed)),r.right&&(a.right.style=r.right.a$.style,a.right.color=Number(r.right.color?.a$?.indexed)),r.top&&(a.top.style=r.top.a$.style,a.top.color=Number(r.top.color?.a$?.indexed)),r.bottom&&(a.bottom.style=r.bottom.a$.style,a.bottom.color=Number(r.bottom.color?.a$?.indexed)),a}),n=i("styleSheet/cellXfs/xf"),this.cell_xfs=n.map(r=>{let a={number_format:Number(r.a$.numFmtId),font:Number(r.a$.fontId),fill:Number(r.a$.fillId),border:Number(r.a$.borderId),xfid:Number(r.a$.xfId)};return r.alignment&&(a.horizontal_alignment=r.alignment.a$.horizontal,a.vertical_alignment=r.alignment.a$.vertical,a.wrap_text=!!r.alignment.a$.wrapText),a}),n=i("styleSheet/fills/fill"),this.fills=n.map(r=>{let a={pattern_type:"none"};if(r.patternFill){let o=r.patternFill.a$?.patternType;switch(o){case"none":case void 0:break;case"solid":a.pattern_type="solid",r.patternFill.fgColor&&(a.fg_color={theme:r.patternFill.fgColor.a$?.theme?Number(r.patternFill.fgColor.a$.theme):void 0,indexed:r.patternFill.fgColor.a$?.indexed?Number(r.patternFill.fgColor.a$.indexed):void 0,tint:r.patternFill.fgColor.a$?.tint?Number(r.patternFill.fgColor.a$.tint):void 0,argb:r.patternFill.fgColor.a$?.rgb});break;default:{let l=o?.match(/^gray(\\d+)$/);if(l){a.pattern_type="gray",a.pattern_gray=Number(l[1]);break}}}}return a}),n=i("styleSheet/fonts/font"),this.fonts=n.map(r=>{let a={};return a.italic=typeof r.i<"u",a.bold=typeof r.b<"u",a.underline=typeof r.u<"u",a.strike=typeof r.strike<"u",r.sz&&(a.size=Number(r.sz.a$.val)),r.scheme&&(a.scheme=r.scheme.a$.val),r.name&&(a.name=r.name.a$.val),r.family&&(a.family=Number(r.family.a$.val)),r.color&&(r.color.a$?.theme&&(a.color_theme=Number(r.color.a$.theme)),r.color.a$?.tint&&(a.color_tint=Number(r.color.a$.tint)),r.color.a$?.rgb&&(a.color_argb=r.color.a$.rgb)),a})}},Be=ut;Be.default_styles={0:"General",1:"0",2:"0.00",3:"#,##0",4:"#,##0.00",9:"0%",10:"0.00%",11:"0.00E+00",12:"# ?/?",13:"# ??/??",14:"mm-dd-yy",15:"d-mmm-yy",16:"d-mmm",17:"mmm-yy",18:"h:mm AM/PM",19:"h:mm:ss AM/PM",20:"h:mm",21:"h:mm:ss",22:"m/d/yy h:mm",37:"#,##0 ;(#,##0)",38:"#,##0 ;[Red](#,##0)",39:"#,##0.00;(#,##0.00)",40:"#,##0.00;[Red](#,##0.00)",45:"mm:ss",46:"[h]:mm:ss",47:"mmss.0",48:"##0.0E+0",49:"@"};var xe=(s,e,t,i)=>{let r=`rId${Object.keys(s).length+1}`;return s[r]={id:r,type:e,target:t,mode:i},r};var nr=/[\\s-+=<>!()]/;var Jt=34,Xt=39,as=160,ai=32,os=9,ls=10,cs=13,Te=48,Je=57,Qt=46,qt=43,Xe=45,oi=40,Kt=41,Qe=44,hs=37,er=95,ft=36,ds=123,us=125,qe=91,li=93,fs=33,ci=59,ps=35,ms=64,Me=65,Ke=97,gs=69,bs=101,pt=90,mt=122,_s=105;var tr=192,rr=312,ir={"==":6,"!=":6,"<>":6,"=":6,"<":7,">":7,"<=":7,">=":7,"+":9,"-":9,"&":9,"*":10,"/":10,"^":11,":":13},ys=Object.keys(ir).sort((s,e)=>e.length-s.length),xs={"-":100,"+":100},Ue=class{constructor(){this.argument_separator=",";this.decimal_mark=".";this.flags={spreadsheet_semantics:!0,dimensioned_quantities:!1,fractions:!0};this.r1c1_regex=/[rR]((?:\\[[-+]{0,1}\\d+\\]|\\d+))[cC]((?:\\[[-+]{0,1}\\d+\\]|\\d+))$/;this.argument_separator_char=Qe;this.decimal_mark_char=Qt;this.imaginary_char=_s;this.imaginary_number="i";this.id_counter=0;this.expression="";this.data=[];this.index=0;this.length=0;this.valid=!0;this.dependencies={addresses:{},ranges:{}};this.address_refcount={};this.full_reference_list=[]}Walk(e,t){switch(e.type){case"address":case"missing":case"literal":case"complex":case"identifier":case"operator":case"structured-reference":t(e);return;case"dimensioned":t(e)&&(this.Walk(e.expression,t),this.Walk(e.unit,t));return;case"range":t(e)&&(this.Walk(e.start,t),this.Walk(e.end,t));return;case"binary":t(e)&&(this.Walk(e.left,t),this.Walk(e.right,t));return;case"unary":t(e)&&this.Walk(e.operand,t);return;case"group":t(e)&&e.elements.forEach(i=>this.Walk(i,t));return;case"call":t(e)&&e.args.forEach(i=>this.Walk(i,t))}}Transpose(e){let t=e.length,i=[],n=0;for(let r=0;r<t;r++)Array.isArray(e[r])&&(n=Math.max(n,e[r].length));for(let r=0;r<n;r++){i[r]=[];for(let a=0;a<t;a++)i[r][a]=e[a][r]}return i}Render(e,t={}){let i=t.offset||{rows:0,columns:0},n=t.missing??"(missing)",{convert_decimal:r,convert_argument_separator:a,convert_imaginary_number:o,long_structured_references:l,table_name:u}=t,h=this.argument_separator+" ";a===","?h=", ":a===";"&&(h="; ");let c=this.imaginary_number;o&&(c=o);let b=r===","?",":".",f=this.decimal_mark===","?/,/:/\\./,p=this.decimal_mark===","?/,/g:/\\./g;switch(e.type){case"address":return this.AddressLabel(e,i);case"range":return this.AddressLabel(e.start,i)+":"+this.AddressLabel(e.end,i);case"missing":return n;case"array":return"{"+this.Transpose(e.values).map(g=>g.map(_=>typeof _=="string"?\'"\'+_+\'"\':_).join(", ")).join("; ")+"}";case"binary":return this.Render(e.left,t)+" "+e.operator+" "+this.Render(e.right,t);case"unary":return e.operator+this.Render(e.operand,t);case"complex":if(e.text)return r?e.text.replace(p,b):e.text;{let g=Math.abs(e.imaginary).toString();if((r===","||this.decimal_mark===",")&&(g=g.replace(/\\./,",")),e.real){let _=e.real.toString();(r===","||this.decimal_mark===",")&&(_=_.replace(/\\./,","));let w=Math.abs(e.imaginary);return`${_}${e.imaginary<0?" - ":" + "}${w===1?"":g}i`}else return e.imaginary===-1?"-i":e.imaginary===1?"i":`${e.imaginary<0?"-":""}${g}i`}break;case"literal":if(typeof e.value=="string")return\'"\'+e.value.replace(/"/g,\'""\')+\'"\';if(r&&typeof e.value=="number")if(e.text){let g=e.text;return r===","&&this.decimal_mark==="."&&(g=g.replace(/,/g,"")),g.replace(f,b)}else return e.value.toString().replace(/\\./,b);else if(e.text)return e.text;return e.value.toString();case"identifier":return e.name;case"operator":return"["+e.operator+"]";case"group":return e.explicit?"("+e.elements.map(g=>this.Render(g,t)).join(h)+")":e.elements.map(g=>this.Render(g,t)).join(h);case"call":return e.name+"("+e.args.map(g=>this.Render(g,t)).join(h)+")";case"dimensioned":return this.Render(e.expression)+" "+this.Render(e.unit);case"structured-reference":{let g=e.column;/[^A-Za-z]/.test(g)&&(g="["+g+"]");let _=e.table;switch(!_&&l&&u&&(_=u),e.scope){case"all":return`${_}[[#all],${g}]`;case"row":return l?`${_}[[#this row],${g}]`:`${_}[@${g}]`;case"column":return`${_}[${g}]`}throw new Error("unhandled scope in structured reference")}}return"??"}Parse(e){switch(e=e.trim(),e[0]==="="&&(e=e.substr(1).trim()),this.expression=e,this.data=[],this.length=e.length,this.index=0,this.valid=!0,this.error_position=void 0,this.error=void 0,this.dependencies.addresses={},this.dependencies.ranges={},this.address_refcount={},this.full_reference_list=[],this.id_counter=0,this.argument_separator){case";":this.argument_separator_char=ci;break;default:this.argument_separator_char=Qe;break}switch(this.decimal_mark){case",":this.decimal_mark_char=Qe;break;default:this.decimal_mark_char=Qt;break}for(let n=0;n<this.length;n++)this.data[n]=e.charCodeAt(n);let t=this.ParseGeneric(),i={};for(let n of Object.keys(this.dependencies.addresses))this.address_refcount[n]&&(i[n]=this.dependencies.addresses[n]);return this.dependencies.addresses=i,{expression:t||void 0,valid:this.valid,error:this.error,error_position:this.error_position,dependencies:this.dependencies,separator:this.argument_separator,decimal_mark:this.decimal_mark,full_reference_list:this.full_reference_list.slice(0)}}ColumnLabel(e){if(e===1/0)return"";let t=String.fromCharCode(65+e%26);for(;e>25;)e=Math.floor(e/26)-1,t=String.fromCharCode(65+e%26)+t;return t}AddressLabel(e,t){let i=e.column;!e.absolute_column&&e.column!==1/0&&(i+=t.columns);let n=e.row;if(!e.absolute_row&&e.row!==1/0&&(n+=t.rows),n<0||i<0||n===1/0&&i===1/0)return"#REF";let r="";return e.sheet&&(r=(nr.test(e.sheet)?"\'"+e.sheet+"\'":e.sheet)+"!"),n===1/0?r+(e.absolute_column?"$":"")+this.ColumnLabel(i):i===1/0?r+(e.absolute_row?"$":"")+(n+1):r+(e.absolute_column?"$":"")+this.ColumnLabel(i)+(e.absolute_row?"$":"")+(n+1)}ParseGeneric(e=[0]){let t=[];for(;this.index<this.length;){let i=this.ParseNext(t.length===0);if(typeof i=="number"){if(e.some(n=>i===n))break;if(i===oi){this.index++;let n=this.ParseGeneric([Kt]);this.index++,n&&t.push({type:"group",id:this.id_counter++,elements:[n],explicit:!0})}else{let n=this.ConsumeOperator();n?t.push(n):(this.error=`unexpected character [1]: ${String.fromCharCode(i)}, 0x${i.toString(16)}`,this.valid=!1,this.index++)}}else t.push(i)}if(t.length){if(t=this.BinaryToRange2(t),this.flags.fractions){let i=[],n=a=>a.type==="literal"&&typeof a.value=="number"&&a.value%1===0,r=0;for(;r<t.length-3;r++)if(n(t[r])&&n(t[r+1])&&t[r+2].type==="operator"&&t[r+2].operator==="/"&&n(t[r+3])){let a=t[r],o=t[r+1],l=t[r+3],u=(a.value<0?-1:1)*(o.value/l.value);r+=3,i.push({id:t[r].id,type:"literal",text:this.expression.substring(a.position,l.position+1),value:a.value+u,position:a.position})}else i.push(t[r]);for(;r<t.length;r++)i.push(t[r]);t=i}if(t=t.map(i=>i.type==="identifier"&&i.name===this.imaginary_number?{type:"complex",real:0,imaginary:1,position:i.position,text:i.name,id:this.id_counter++}:i),this.flags.dimensioned_quantities){let i=[],n;for(let r=0;r<t.length;r++){let a=t[r];if(!n)n=a;else if(a.type==="identifier"&&(n.type==="literal"||n.type==="group"||n.type==="call")){let o=a;for(;t[r+1]?.type==="identifier";)o.name+=" "+t[++r].name;i.push({type:"dimensioned",expression:n,unit:a,id:this.id_counter++}),n=void 0}else i.push(n),n=a}n&&i.push(n),t=i}}return t.length===0?null:t.length===1?t[0]:this.BinaryToComplex(this.ArrangeUnits(t))}UnitToAddress(e){if(e.type==="literal"){if(typeof e.value=="number"&&e.value>0&&!/\\./.test(e.text||""))return{type:"address",position:e.position,label:e.value.toString(),row:e.value-1,id:this.id_counter++,column:1/0}}else{let t,i=e.name,n=i.split("!");if(n.length>1&&(t=n.slice(0,n.length-1).join("!"),i=i.substr(t.length+1),t[0]==="\'"))if(t.length>1&&t[t.length-1]==="\'")t=t.substr(1,t.length-2);else return;let r=i[0]==="$";i=(r?i.substr(1):i).toUpperCase();let a=Number(i);if(isNaN(a)){if(/[A-Z]{1,3}/.test(i)){let o=-1;for(let l=0;l<i.length;l++){let u=i[l].charCodeAt(0);o=26*(1+o)+(u-Me)}return{type:"address",position:e.position,absolute_column:r,label:e.name,column:o,id:this.id_counter++,row:1/0,sheet:t}}}else if(a>0&&a!==1/0&&!/\\./.test(i))return{type:"address",position:e.position,absolute_row:r,label:e.name,row:a-1,id:this.id_counter++,column:1/0,sheet:t}}}BinaryToRange2(e){let t=[];for(let i=0;i<e.length;i++){let n=e[i],r=e[i+1],a=e[i+2],o,l="",u;if(n&&r&&a&&r.type==="operator"&&r.operator===":"){if(n.type==="address"&&a.type==="address"){let h=n.position+n.label.length,c=a.position;o={type:"range",id:this.id_counter++,position:n.position,start:n,end:a,label:n.label+this.expression.substring(h,c)+a.label},l=o.start.label+":"+o.end.label,this.address_refcount[o.start.label]--,this.address_refcount[o.end.label]--;let b=[n.position,a.position];this.full_reference_list=this.full_reference_list.filter(f=>f.position!==b[0]&&f.position!==b[1])}else if((n.type==="literal"||n.type==="identifier")&&(a.type==="literal"||a.type==="identifier")){let h=this.UnitToAddress(n);if(!h&&n.type==="literal"&&typeof n.value=="number"&&n.value<0){let b={...n,text:(n.text||"").replace(/^-/,""),position:n.position+1,value:-n.value};h=this.UnitToAddress(b),h&&(u={type:"operator",operator:"-",position:n.position,id:this.id_counter++})}let c=this.UnitToAddress(a);h&&c&&(h.column===1/0&&c.column===1/0||h.row===1/0&&c.row===1/0)&&(l=h.label+":"+c.label,o={type:"range",id:this.id_counter++,position:h.position,start:h,end:c,label:l})}}o?(u&&t.push(u),t.push(o),this.dependencies.ranges[l]=o,this.full_reference_list.push(o),i+=2):t.push(n)}return t}BinaryToComplex(e){if(e.type==="binary")if((e.operator==="+"||e.operator==="-")&&e.left.type==="literal"&&typeof e.left.value=="number"&&e.right.type==="complex"&&!e.right.composited){let t="";t=this.expression.substring(e.left.position,e.right.position+(e.right.text?.length||0));let i=e.right.imaginary;return e.operator==="-"&&(i=-i),{type:"complex",position:e.left.position,text:t,id:this.id_counter++,imaginary:i,real:e.left.value,composited:!0}}else e.left=this.BinaryToComplex(e.left),e.right=this.BinaryToComplex(e.right);else if(e.type==="unary"&&(e.operator==="-"||e.operator==="+")&&e.operand.type==="complex"&&e.operand.text===this.imaginary_number)return{...e.operand,position:e.position,text:this.expression.substring(e.position,e.operand.position+(e.operand.text||"").length),imaginary:e.operand.imaginary*(e.operator==="-"?-1:1)};return e}BinaryToRangeX(e){if(e.type==="binary"){if(e.operator===":"){let t,i="";if(e.left.type==="address"&&e.right.type==="address"){let n=e.left.position+e.left.label.length,r=e.right.position;t={type:"range",id:this.id_counter++,position:e.left.position,start:e.left,end:e.right,label:e.left.label+this.expression.substring(n,r)+e.right.label},i=t.start.label+":"+t.end.label,this.address_refcount[t.start.label]--,this.address_refcount[t.end.label]--;let a=[e.left.position,e.right.position];this.full_reference_list=this.full_reference_list.filter(o=>o.position!==a[0]&&o.position!==a[1])}else if((e.left.type==="literal"||e.left.type==="identifier")&&(e.right.type==="literal"||e.right.type==="identifier")){let n=this.UnitToAddress(e.left),r=this.UnitToAddress(e.right);n&&r&&(n.column===1/0&&r.column===1/0||n.row===1/0&&r.row===1/0)&&(i=n.label+":"+r.label,t={type:"range",id:this.id_counter++,position:e.left.position,start:n,end:r,label:i})}if(t)return this.dependencies.ranges[i]=t,this.full_reference_list.push(t),t;this.error="unexpected character: :",this.valid=!1}e.left=this.BinaryToRangeX(e.left),e.right=this.BinaryToRangeX(e.right)}return e}ArrangeUnits(e){if(e.length===0)return{type:"missing",id:this.id_counter++};if(e.length===1)return e[0];let t=[];for(let i=0;i<e.length;i++){let n=e[i];if(n.type==="operator")if(t.length===0||t[t.length-1].type==="operator")if(xs[n.operator]){let r=this.BinaryToComplex(this.ArrangeUnits(e.slice(i+1)));if(!this.valid)return{type:"group",id:this.id_counter++,elements:e,explicit:!1};r.type==="binary"?(r.left={type:"unary",id:this.id_counter++,operator:n.operator,operand:r.left,position:n.position},n=r):n={type:"unary",id:this.id_counter++,operator:n.operator,operand:r,position:n.position},i=e.length}else return this.error=`unexpected character [2]: ${n.operator}`,this.error_position=n.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1};else{t.push(n);continue}if(t.length<2)t.push(n);else if(t[t.length-1].type==="operator"){let r=t[t.length-2],a=t[t.length-1],o=a.operator,l={type:"binary",id:this.id_counter++,left:r,operator:o,position:a.position,right:n};r.type==="binary"&&ir[o]>ir[r.operator]&&(l.left=r.left,l.operator=r.operator,l.position=r.position,l.right={type:"binary",id:this.id_counter++,left:r.right,right:n,operator:o,position:a.position}),t.splice(-2,2,l)}else return this.error="multiple expressions",this.error_position=n.position,this.valid=!1,{type:"group",id:this.id_counter++,elements:e,explicit:!1}}return t[0]}ParseNext(e=!0){this.ConsumeWhiteSpace();let t=this.data[this.index];if(t===Jt)return{type:"literal",id:this.id_counter++,position:this.index,value:this.ConsumeString()};if(t>=Te&&t<=Je||t===this.decimal_mark_char)return this.ConsumeNumber();if(t===ds)return this.ConsumeArray();if(e&&(t===Xe||t===qt)){let i=this.data[this.index+1];if(i>=Te&&i<=Je||i===this.decimal_mark_char)return this.ConsumeNumber()}else if(t>=Me&&t<=pt||t>=Ke&&t<=mt||t===er||t===ps||t===Xt||t===ft||t===qe||t>=tr&&t<=rr)return this.ConsumeToken(t);return t}ConsumeArray(){let e={type:"array",id:this.id_counter++,values:[],position:this.index};this.index++;let t=0,i=0;for(;this.index<this.length;){let n=this.ParseNext(),r=this.index;if(typeof n=="number")switch(this.index++,n){case ci:i++,t=0;break;case Qe:t++;break;case us:return e;default:this.valid&&(this.error="invalid character in array literal",this.error_position=r,this.valid=!1);break}else switch(n.type){case"literal":e.values[t]||(e.values[t]=[]),e.values[t][i]=n.value;break;default:this.valid&&(this.error="invalid value in array literal",this.error_position=r,this.valid=!1);break}}return e}ConsumeOperator(){for(let e of ys)if(this.expression.substr(this.index,e.length)===e){let t=this.index;return this.index+=e.length,{type:"operator",id:this.id_counter++,operator:e,position:t}}return null}ConsumeArguments(){this.index++;let e=0,t=[];for(;this.index<this.length;){let i=this.ParseGeneric([this.argument_separator_char,Kt]);i!==null&&t.push(i);let n=this.data[this.index];if(n===this.argument_separator_char){this.index++,e++;for(let r=t.length;r<e;r++)t.push({type:"missing",id:this.id_counter++})}else if(n===Kt)return this.index++,t}return t}ConsumeToken(e){let t=[e],i=this.index,n=e===Xt,r=0,a=!1;for(e===qe&&(r=1,a=!0),++this.index;this.index<this.length;this.index++){let h=this.data[this.index];if(h>=Me&&h<=pt||h>=Ke&&h<=mt||h>=tr&&h<=rr||h===er||h===ft||h===Qt||h===fs||n||h>=Te&&h<=Je||h===qe||r>0&&h===li||h===Xe&&this.flags.r1c1&&r===1||r>0&&h===ms&&this.data[this.index-1]===qe||r===1&&(h===Qe||h===ai)||r>1)t.push(h),h===qe&&(r++,a=!0),h===li&&r--,h===Xt&&(n=!1);else break}let o=t.map(h=>String.fromCharCode(h)).join("");if(n)return this.error="unbalanced single quote",this.error_position=i,this.valid=!1,{type:"identifier",id:this.id_counter++,name:o,position:i};if(r)return this.error="unbalanced square bracket",this.error_position=i,this.valid=!1,{type:"identifier",id:this.id_counter++,name:o,position:i};if(o.toLowerCase()==="true")return{type:"literal",id:this.id_counter++,value:!0,position:i};if(o.toLowerCase()==="false")return{type:"literal",id:this.id_counter++,value:!1,position:i};if(this.ConsumeWhiteSpace(),this.data[this.index]===oi){let h=this.ConsumeArguments();return{type:"call",id:this.id_counter++,name:o,args:h,position:i}}if(this.flags.spreadsheet_semantics){let h=this.ConsumeAddress(o,i);if(h)return h;if(a){let c=this.ConsumeStructuredReference(o,i);if(c)return c}}let u={type:"identifier",id:this.id_counter++,name:o,position:i};return this.full_reference_list.push(u),u}ConsumeStructuredReference(e,t){let i=t,n=e.length,r=e,a="",o=0;for(;o<n;o++){if(e[o]==="["){e=e.substring(o);break}a+=e[o]}if(e[0]!=="["||e[e.length-1]!=="]")return;e=e.substring(1,e.length-1);let l=e.split(",").map(b=>b.trim()),u="column",h="";if(l.length>2)return;l.length===2?(/\\[#this row\\]/i.test(l[0])?u="row":/\\[#all\\]/i.test(l[0])&&(u="all"),h=l[1]):(h=l[0],h[0]==="@"&&(u="row",h=h.substring(1,h.length))),h[0]==="["&&h[h.length-1]==="]"&&(h=h.substring(1,h.length-1));let c={type:"structured-reference",id:this.id_counter++,label:r,position:t,scope:u,column:h,table:a};return this.full_reference_list.push(c),c}ConsumeAddress(e,t){let i=t,n=e.length,r,a=e.split("!");if(a.length>1&&(r=a.slice(0,a.length-1).join("!"),t+=r.length+1),this.flags.r1c1){let c=a[a.length-1].match(this.r1c1_regex);if(c){let b={type:"address",id:this.id_counter++,label:e,row:0,column:0,position:i,sheet:r,r1c1:!0};return c[1][0]==="["?(b.offset_row=!0,b.row=Number(c[1].substring(1,c[1].length-1))):b.row=Number(c[1])-1,c[2][0]==="["?(b.offset_column=!0,b.column=Number(c[2].substring(1,c[2].length-1))):b.column=Number(c[2])-1,b}}let o=this.ConsumeAddressColumn(t);if(!o)return null;t=o.position;let l=this.ConsumeAddressRow(t);if(!l)return null;t=l.position;let u=r?r+e.substr(r.length,t-i).toUpperCase():e.substr(0,t-i).toUpperCase();r&&r[0]==="\'"&&(r=r.substr(1,r.length-2));let h={type:"address",id:this.id_counter++,label:u,row:l.row,column:o.column,absolute_row:l.absolute,absolute_column:o.absolute,position:i,sheet:r};return n!==t-i?null:(this.dependencies.addresses[h.label]=h,this.address_refcount[h.label]=(this.address_refcount[h.label]||0)+1,this.full_reference_list.push(h),h)}ConsumeAddressRow(e){let t=this.data[e]===ft;t&&e++;let i=e,n=0;for(;;e++){let r=this.data[e];if(r>=Te&&r<=Je)n*=10,n+=r-Te;else break}return i===e?!1:{absolute:t,row:n-1,position:e}}ConsumeAddressColumn(e){let t=-1,i=0,n=this.data[e]===ft;for(n&&e++;;e++,i++){if(i>=4)return!1;let r=this.data[e];if(r>=Me&&r<=pt)t=26*(1+t)+(r-Me);else if(r>=Ke&&r<=mt)t=26*(1+t)+(r-Ke);else break}return t<0?!1:{absolute:n,column:t,position:e}}ConsumeNumber(){let e=this.index,t=0,i=!1,n=!1,r=0,a=0,o=0,l="integer",u=0,h=!1,c=this.index;for(;this.index<this.length;this.index++,u++){let f=this.data[this.index];if(f===this.decimal_mark_char)if(l==="integer")l="fraction";else break;else if(f===hs){r/=100,o/=100,this.index++;break}else if(f===qt||f===Xe)if(u===0)f===Xe&&(n=!0);else break;else if(f===gs||f===bs)if(l==="integer"||l==="fraction")l="exponent",this.index<this.length-1&&(this.data[this.index+1]===qt?this.index++:this.data[this.index+1]===Xe&&(this.index++,i=!0));else break;else if(f===this.imaginary_char){let p=this.data[this.index+1];if(p>=Me&&p<=pt||p>=Ke&&p<=mt||p>=tr&&p<=rr||p===er)break;if(l==="integer"||l==="fraction"){this.index++,h=!0;break}}else if(f>=Te&&f<=Je)switch(l){case"integer":r=r*10+(f-Te);break;case"fraction":o=o*10+(f-Te),a++;break;case"exponent":t=t*10+(f-Te);break}else break}let b=r+o/Math.pow(10,a);return l==="exponent"&&(b=b*Math.pow(10,(i?-1:1)*t)),h?{type:"complex",id:this.id_counter++,position:e,imaginary:n?-b:b,real:0,text:this.expression.substring(c,this.index)||""}:{type:"literal",id:this.id_counter++,position:e,value:n?-b:b,text:this.expression.substring(c,this.index)||""}}ConsumeString(){this.index++;let e=[];for(;this.index<this.length;this.index++){let t=this.data[this.index];if(t===Jt&&(this.index++,this.index>=this.length||this.data[this.index]!==Jt))break;e.push(t)}return e.map(t=>String.fromCharCode(t)).join("")}ConsumeWhiteSpace(){for(;this.index<this.length;){let e=this.data[this.index];if(e===ai||e===os||e===ls||e===cs||e===as)this.index++;else return}}};var ar=class{constructor(){}static get instance(){return this._instance}HTML(e){let t=[];for(let i of e){let n=[];for(let r of i)r.pre&&n.push("<pre>"),r.emphasis&&n.push("<em>"),r.strong&&n.push("<strong>"),r.strike&&n.push("<strike>"),n.push(r.text),r.strike&&n.push("</strike>"),r.strong&&n.push("</strong>"),r.emphasis&&n.push("</em>"),r.pre&&n.push("</pre>");t.push(n.join(""))}return t.join(`<br/>\n`)}Dummy(e=""){return e.split(/\\n/).map(t=>[{text:t}])}Parse(e=""){let t=this.Tokenize(e);for(let i=0;i<t.length;i++){let n=t[i];if(n.type==="delimeter"){let r=t[i-1],a=t[i+1],o=!r||r.type==="whitespace"||r.type==="newline",l=r&&r.type==="text"&&/[^\\w\\d]$/.test(r.text),u=!a||a.type==="whitespace"||a.type==="newline",h=a&&a.type==="text"&&/^[^\\w\\d]/.test(a.text);n.left_flanking=!u&&(!h||o),n.right_flanking=!o&&(!l||u||h)}}return this.ApplyFormatting(t),this.Consolidate(t)}IsWhitespace(e){return e===" "||e===" "}IsNewline(e){return e==="\\r"||e===`\n`}IsDelimeter(e){return e==="*"||e==="_"||e==="~"}Consolidate(e){let t=[],i={},n=[],r={type:"text",text:""};for(let a of e)if(a.type==="newline")r.text.length&&n.push(r),r={...i,text:"",type:"text"},t.push(n),n=[];else switch((!!i.strong!=!!a.strong||!!i.emphasis!=!!a.emphasis||!!i.strike!=!!a.strike)&&(i.strong=!!a.strong,i.emphasis=!!a.emphasis,i.strike=!!a.strike,r.text.length&&n.push(r),r={...i,text:"",type:"text"}),a.type){case"text":case"whitespace":r.text+=a.text;break;case"delimeter":for(let o=0;o<a.length;o++)r.text+=a.char;break}return r.text.length&&n.push(r),n.length&&t.push(n),t}ApplyFormatting(e,t){let i=0,n=e.length;for(i=0;i<n;i++){let r=e[i];if(r.type==="delimeter"){if(t&&r.right_flanking&&t.char===r.char&&r.length>0)return{index:i,token:r};if(r.left_flanking){let a=this.ApplyFormatting(e.slice(i+1),r);if(a.token){let o=Math.min(a.token.length,r.length),l=r.char==="~",u=!l&&!!(o%2),h=!l&&o>=2;for(let c=i+1;c<=i+a.index;c++)e[c].strong=!!e[c].strong||h,e[c].emphasis=!!e[c].emphasis||u,e[c].strike=!!e[c].strike||l;a.token.length-=o,r.length-=o,r.length>0?i--:i+=a.index}}}}return{index:i}}Tokenize(e=""){let t=[],i=e.length,n=0,r=!1,a="";for(n=0;n<i;n++){let o=e[n];if(this.IsWhitespace(o)){a&&t.push({type:"text",text:a});let l=o;for(;;){let u=e[n+1];if(this.IsWhitespace(u))l+=u,n++;else break}t.push({type:"whitespace",text:l}),r=!1,a=""}else if(this.IsNewline(o)){a&&t.push({type:"text",text:a});let l=o;for(;;){let u=e[n+1];if(this.IsNewline(u))l+=u,n++;else break}t.push({type:"newline",text:l}),r=!1,a=""}else if(r)a+=o,r=!1;else if(this.IsDelimeter(o)){a&&t.push({type:"text",text:a});let l=o;for(;;){let u=e[n+1];if(u===o)l+=u,n++;else break}t.push({type:"delimeter",text:l,char:o,length:l.length}),r=!1,a=""}else o==="\\\\"?r=!0:a+=o}return a&&t.push({type:"text",text:a}),t}},sr=ar;sr._instance=new ar;var hi={"c:tx":{"c:strRef":{"c:f":"","c:strCache":{"c:ptCount":{a$:{val:"1"}},"c:pt":{a$:{idx:"0"},"c:v":""}}}},"c:overlay":{a$:{val:"0"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"1400",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",spc:"0",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}}},di={"c:tx":{"c:rich":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"1400",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",spc:"0",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:r":{"a:rPr":{a$:{lang:""}},"a:t":""}}}},"c:overlay":{a$:{val:"0"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"1400",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",spc:"0",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}}},gt={"c:chartSpace":{a$:{"xmlns:c":"http://schemas.openxmlformats.org/drawingml/2006/chart","xmlns:a":"http://schemas.openxmlformats.org/drawingml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:c16r2":"http://schemas.microsoft.com/office/drawing/2015/06/chart"},"c:date1904":{a$:{val:"0"}},"c:lang":{a$:{val:"en-US"}},"c:roundedCorners":{a$:{val:"0"}},"mc:AlternateContent":{a$:{"xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006"},"mc:Choice":{a$:{Requires:"c14","xmlns:c14":"http://schemas.microsoft.com/office/drawing/2007/8/2/chart"},"c14:style":{a$:{val:"102"}}},"mc:Fallback":{"c:style":{a$:{val:"2"}}}},"c:chart":{},"c:spPr":{"a:solidFill":{"a:schemeClr":{a$:{val:"bg1"}}},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:printSettings":{"c:headerFooter":{},"c:pageMargins":{a$:{b:"0.75",l:"0.7",r:"0.7",t:"0.75",header:"0.3",footer:"0.3"}},"c:pageSetup":{}}}};var ui={"c:idx":{a$:{val:"0"}},"c:order":{a$:{val:"0"}},"c:spPr":{"a:solidFill":{"a:schemeClr":{a$:{val:"accent1"}}},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:invertIfNegative":{a$:{val:"0"}},"c:val":{"c:numRef":{"c:f":""}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000000-F52E-47BC-822F-A046A80610BE}"}}}}},fi={"c:title":{},"c:autoTitleDeleted":{a$:{val:"0"}},"c:plotArea":{"c:layout":{},"c:barChart":{"c:barDir":{a$:{val:"col"}},"c:grouping":{a$:{val:"clustered"}},"c:varyColors":{a$:{val:"0"}},"c:ser":[],"c:dLbls":{"c:showLegendKey":{a$:{val:"0"}},"c:showVal":{a$:{val:"0"}},"c:showCatName":{a$:{val:"0"}},"c:showSerName":{a$:{val:"0"}},"c:showPercent":{a$:{val:"0"}},"c:showBubbleSize":{a$:{val:"0"}}},"c:gapWidth":{a$:{val:"219"}},"c:overlap":{a$:{val:"-27"}},"c:axId":[{a$:{val:"47003664"}},{a$:{val:"1789284464"}}]},"c:catAx":{"c:axId":{a$:{val:"47003664"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"b"}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"1789284464"}},"c:crosses":{a$:{val:"autoZero"}},"c:auto":{a$:{val:"1"}},"c:lblAlgn":{a$:{val:"ctr"}},"c:lblOffset":{a$:{val:"100"}},"c:noMultiLvlLbl":{a$:{val:"0"}}},"c:valAx":{"c:axId":{a$:{val:"1789284464"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"l"}},"c:majorGridlines":{"c:spPr":{"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}}},"c:numFmt":{a$:{formatCode:"General",sourceLinked:"1"}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"47003664"}},"c:crosses":{a$:{val:"autoZero"}},"c:crossBetween":{a$:{val:"between"}}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}}},"c:plotVisOnly":{a$:{val:"1"}},"c:dispBlanksAs":{a$:{val:"gap"}},"c:extLst":{"c:ext":{a$:{uri:"{56B9EC1D-385E-4148-901F-78D8002777C0}","xmlns:c16r3":"http://schemas.microsoft.com/office/drawing/2017/03/chart"},"c16r3:dataDisplayOptions16":{"c16r3:dispNaAsBlank":{a$:{val:"1"}}}}},"c:showDLblsOverMax":{a$:{val:"0"}}};var pi={"c:title":{},"c:autoTitleDeleted":{a$:{val:"0"}},"c:plotArea":{"c:layout":{},"c:doughnutChart":{"c:varyColors":{a$:{val:"1"}},"c:ser":{"c:idx":{a$:{val:"0"}},"c:order":{a$:{val:"0"}},"c:dPt":{"c:idx":{a$:{val:"3"}},"c:bubble3D":{a$:{val:"0"}},"c:spPr":{"a:solidFill":{"a:schemeClr":{a$:{val:"accent4"}}},"a:ln":{a$:{w:"19050"},"a:solidFill":{"a:schemeClr":{a$:{val:"lt1"}}}},"a:effectLst":{}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000007-E886-49A6-AE6D-C67D8A27530F}"}}}}},"c:cat":{"c:strRef":{"c:f":""}},"c:val":{"c:numRef":{"c:f":""}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000000-3689-4BB4-A84F-05B9F3BBE577}"}}}}},"c:dLbls":{"c:showLegendKey":{a$:{val:"0"}},"c:showVal":{a$:{val:"0"}},"c:showCatName":{a$:{val:"0"}},"c:showSerName":{a$:{val:"0"}},"c:showPercent":{a$:{val:"0"}},"c:showBubbleSize":{a$:{val:"0"}},"c:showLeaderLines":{a$:{val:"1"}}},"c:firstSliceAng":{a$:{val:"0"}},"c:holeSize":{a$:{val:"75"}}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}}},"c:legend":{"c:legendPos":{a$:{val:"b"}},"c:overlay":{a$:{val:"0"}},"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"0",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{a$:{rtl:"0"},"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}}},"c:plotVisOnly":{a$:{val:"1"}},"c:dispBlanksAs":{a$:{val:"gap"}},"c:extLst":{"c:ext":{a$:{uri:"{56B9EC1D-385E-4148-901F-78D8002777C0}","xmlns:c16r3":"http://schemas.microsoft.com/office/drawing/2017/03/chart"},"c16r3:dataDisplayOptions16":{"c16r3:dispNaAsBlank":{a$:{val:"1"}}}}},"c:showDLblsOverMax":{a$:{val:"0"}}};var mi={"c:title":{},"c:autoTitleDeleted":{a$:{val:"0"}},"c:plotArea":{"c:layout":{},"c:scatterChart":{"c:scatterStyle":{a$:{val:"lineMarker"}},"c:varyColors":{a$:{val:"0"}},"c:ser":[],"c:dLbls":{"c:showLegendKey":{a$:{val:"0"}},"c:showVal":{a$:{val:"0"}},"c:showCatName":{a$:{val:"0"}},"c:showSerName":{a$:{val:"0"}},"c:showPercent":{a$:{val:"0"}},"c:showBubbleSize":{a$:{val:"0"}}},"c:axId":[{a$:{val:"2028657983"}},{a$:{val:"2023395087"}}]},"c:valAx":[{"c:axId":{a$:{val:"2028657983"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"b"}},"c:majorGridlines":{"c:spPr":{"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"25000"}},"a:lumOff":{a$:{val:"75000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"2023395087"}},"c:crosses":{a$:{val:"autoZero"}},"c:crossBetween":{a$:{val:"midCat"}}},{"c:axId":{a$:{val:"2023395087"}},"c:scaling":{"c:orientation":{a$:{val:"minMax"}}},"c:delete":{a$:{val:"0"}},"c:axPos":{a$:{val:"l"}},"c:majorGridlines":{"c:spPr":{"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"15000"}},"a:lumOff":{a$:{val:"85000"}}}},"a:round":{}},"a:effectLst":{}}},"c:numFmt":{a$:{formatCode:"0.00",sourceLinked:"1"}},"c:majorTickMark":{a$:{val:"none"}},"c:minorTickMark":{a$:{val:"none"}},"c:tickLblPos":{a$:{val:"nextTo"}},"c:spPr":{"a:noFill":{},"a:ln":{a$:{w:"9525",cap:"flat",cmpd:"sng",algn:"ctr"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"25000"}},"a:lumOff":{a$:{val:"75000"}}}},"a:round":{}},"a:effectLst":{}},"c:txPr":{"a:bodyPr":{a$:{rot:"-60000000",spcFirstLastPara:"1",vertOverflow:"ellipsis",vert:"horz",wrap:"square",anchor:"ctr",anchorCtr:"1"}},"a:lstStyle":{},"a:p":{"a:pPr":{"a:defRPr":{a$:{sz:"900",b:"0",i:"0",u:"none",strike:"noStrike",kern:"1200",baseline:"0"},"a:solidFill":{"a:schemeClr":{a$:{val:"tx1"},"a:lumMod":{a$:{val:"65000"}},"a:lumOff":{a$:{val:"35000"}}}},"a:latin":{a$:{typeface:"+mn-lt"}},"a:ea":{a$:{typeface:"+mn-ea"}},"a:cs":{a$:{typeface:"+mn-cs"}}}},"a:endParaRPr":{a$:{lang:"en-US"}}}},"c:crossAx":{a$:{val:"2028657983"}},"c:crosses":{a$:{val:"autoZero"}},"c:crossBetween":{a$:{val:"midCat"}}}],"c:spPr":{"a:noFill":{},"a:ln":{"a:noFill":{}},"a:effectLst":{}}},"c:plotVisOnly":{a$:{val:"1"}},"c:dispBlanksAs":{a$:{val:"gap"}},"c:extLst":{"c:ext":{a$:{uri:"{56B9EC1D-385E-4148-901F-78D8002777C0}","xmlns:c16r3":"http://schemas.microsoft.com/office/drawing/2017/03/chart"},"c16r3:dataDisplayOptions16":{"c16r3:dispNaAsBlank":{a$:{val:"1"}}}}},"c:showDLblsOverMax":{a$:{val:"0"}}},gi={"c:spPr":{"a:ln":{a$:{w:"19050",cap:"rnd"},"a:solidFill":{"a:schemeClr":{a$:{val:"accent1"}}},"a:round":{}},"a:effectLst":{}},"c:marker":{"c:symbol":{a$:{val:"none"}}},"c:xVal":{"c:numRef":{"c:f":""}},"c:yVal":{"c:numRef":{"c:f":""}},"c:smooth":{a$:{val:"0"}},"c:extLst":{"c:ext":{a$:{uri:"{C3380CC4-5D6E-409C-BE32-E72D297353CC}","xmlns:c16":"http://schemas.microsoft.com/office/drawing/2014/chart"},"c16:uniqueId":{a$:{val:"{00000000-1F6C-44A9-AA4F-6706F20CC72E}"}}}}};var or=class{constructor(e,t=or.next_chart_index++){this.options=e;this.index=t;this.relationships={}}UpdateChartTitle(e){let t=this.options.title||{type:"literal",value:""};if(t&&t.type==="literal"){let i=JSON.parse(JSON.stringify(di)),n=i["c:tx"]["c:rich"]["a:p"];n["a:r"]={"a:rPr":{a$:{lang:le.locale}},"a:t":t.value},e["c:title"]=i}else if(t){let i=JSON.parse(JSON.stringify(hi));i["c:tx"]["c:strRef"]["c:f"]=t.label,e["c:title"]=i}}toJSON(){switch(this.options.type){case"column":case"bar":return this.CreateBarChart();case"scatter":case"scatter2":return this.CreateScatterChart();case"donut":return this.CreateDonutChart();default:console.info("unhandled chart type",this.options.type)}return this.CreateBarChart()}CreateScatterChart(){let e=JSON.parse(JSON.stringify(gt)),t=e["c:chartSpace"],i=JSON.parse(JSON.stringify(mi));this.options.smooth&&(i["c:plotArea"]["c:scatterChart"]["c:scatterStyle"].a$.val="smoothMarker"),t["c:chart"]=i,this.UpdateChartTitle(t["c:chart"]);let n=t["c:chart"]["c:plotArea"]["c:scatterChart"]["c:ser"],r=!1;for(let a=0;a<this.options.data.length;a++){let o=JSON.parse(JSON.stringify(gi));if(o["c:idx"]={a$:{val:a.toString()}},o["c:order"]={a$:{val:a.toString()}},this.options.names&&this.options.names[a]){let l=this.options.names[a];switch(l.type){case"literal":o["c:tx"]={"c:v":l.value.toString()},r=!0;break;case"range":case"address":o["c:tx"]={"c:strRef":{"c:f":l.label}},r=!0;break}}o["c:spPr"]["a:ln"]["a:solidFill"]["a:schemeClr"].a$.val=`accent${a+1}`,o["c:yVal"]["c:numRef"]["c:f"]=this.options.data[a]?.label,this.options.labels2&&this.options.labels2[a]&&(o["c:xVal"]["c:numRef"]["c:f"]=this.options.labels2[a]?.label),this.options.smooth&&(o["c:smooth"]={a$:{val:1}}),n.push(o)}return r&&(t["c:chart"]["c:legend"]={"c:legendPos":{a$:{val:"b"}},"c:overlay":{a$:{val:"0"}}}),e}CreateDonutChart(){let e=JSON.parse(JSON.stringify(gt)),t=e["c:chartSpace"],i=JSON.parse(JSON.stringify(pi));t["c:chart"]=i,this.UpdateChartTitle(t["c:chart"]);let n=i["c:plotArea"]["c:doughnutChart"];return n&&(n["c:ser"]["c:cat"]["c:strRef"]["c:f"]=this.options.labels?.label||"",n["c:ser"]["c:val"]["c:numRef"]["c:f"]=this.options.data[0]?.label||""),e}CreateBarChart(){let e=JSON.parse(JSON.stringify(gt)),t=e["c:chartSpace"],i=JSON.parse(JSON.stringify(fi));t["c:chart"]=i,this.UpdateChartTitle(t["c:chart"]);let n=i["c:plotArea"]["c:barChart"];if(n){let r=n["c:barDir"];r&&(r.a$.val=this.options.type==="bar"?"bar":"col");let a=n["c:ser"];for(let o=0;o<this.options.data.length;o++){let l=JSON.parse(JSON.stringify(ui));l["c:idx"]={a$:{val:o.toString()}},l["c:order"]={a$:{val:o.toString()}},l["c:spPr"]["a:solidFill"]["a:schemeClr"].a$.val=`accent${o+1}`,!o&&this.options.labels&&(l["c:cat"]={"c:strRef":{"c:f":this.options.labels.label}}),l["c:val"]["c:numRef"]["c:f"]=this.options.data[o]?.label,a.push(l)}}return e}},Fe=or;Fe.next_chart_index=1;var lr=class{constructor(e,t=lr.next_image_index++){this.options=e;this.index=t;this.extension="";switch(e.mimetype){case"svg+xml":this.extension="svg";break;case"image/png":this.extension="png";break;case"jpg":this.extension="jpeg";break;case"svg":case"png":case"jpeg":case"gif":this.extension=e.mimetype;break;default:console.warn("unhandled mime type",e.mimetype);break}}},et=lr;et.next_image_index=1;var bi=9525,cr=class{constructor(e=cr.next_drawing_index++){this.index=e;this.sheet_drawing_relationship=0;this.charts=[];this.images=[];this.relationships={}}AddImage(e,t){let i=new et(e);if(i.extension){let n=xe(this.relationships,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",`../media/image${i.index}.${i.extension}`);this.images.push({image:i,relationship:n,anchor:t})}}AddChart(e,t){let i=new Fe(e),n=xe(this.relationships,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",`../charts/chart${i.index}.xml`);this.charts.push({chart:i,anchor:t,relationship:n})}CornerToJSON(e){return{"xdr:col":e.column,"xdr:colOff":(e.column_offset||0)*bi,"xdr:row":e.row,"xdr:rowOff":(e.row_offset||0)*bi}}AnchorToJSON(e){return{"xdr:from":{...this.CornerToJSON(e.from)},"xdr:to":{...this.CornerToJSON(e.to)}}}toJSON(){let e=this.images.map(n=>({a$:{editAs:"oneCell"},...this.AnchorToJSON(n.anchor),"xdr:pic":{"xdr:nvPicPr":{"xdr:cNvPr":{a$:{id:n.image.index+1,name:"Image "+n.image.index}},"xdr:cNvPicPr":{"a:picLocks":{a$:{noChangeAspect:1}}}},"xdr:blipFill":{"a:blip":{a$:n.image.extension==="svg"?{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships"}:{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:embed":n.relationship},"a:extLst":{"a:ext":[{a$:{uri:"{28A0092B-C50C-407E-A947-70E740481C1C}"},"a14:useLocalDpi":{a$:{"xmlns:a14":"http://schemas.microsoft.com/office/drawing/2010/main",val:0}}},n.image.extension==="svg"?{a$:{uri:"{96DAC541-7B7A-43D3-8B79-37D633B846F1}"},"asvg:svgBlip":{a$:{"xmlns:asvg":"http://schemas.microsoft.com/office/drawing/2016/SVG/main","r:embed":n.relationship}}}:void 0]}},"a:stretch":{"a:fillRect":{}}},"xdr:spPr":{"a:xfrm":{"a:off":{a$:{x:0,y:0}},"a:ext":{a$:{cx:4057650,cy:6172200}}},"a:prstGeom":{a$:{prst:"rect"},"a:avLst":{}}}},"xdr:clientData":{}})),t=this.charts.map(n=>({...this.AnchorToJSON(n.anchor),"xdr:graphicFrame":{a$:{macro:""},"xdr:nvGraphicFramePr":{"xdr:cNvPr":{a$:{id:n.chart.index+1,name:`Chart ${n.chart.index}`}},"xdr:cNvGraphicFramePr":{}},"xdr:xfrm":{"a:off":{a$:{x:0,y:0}},"a:ext":{a$:{cx:0,cy:0}}},"a:graphic":{"a:graphicData":{a$:{uri:"http://schemas.openxmlformats.org/drawingml/2006/chart"},"c:chart":{a$:{"xmlns:c":"http://schemas.openxmlformats.org/drawingml/2006/chart","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:id":n.relationship}}}}},"xdr:clientData":{}}));return{"xdr:wsDr":{a$:{"xmlns:xdr":"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing","xmlns:a":"http://schemas.openxmlformats.org/drawingml/2006/main"},"xdr:twoCellAnchor":[...t,...e]}}}},Le=cr;Le.next_drawing_index=1;var Pe=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n`,bt=class{constructor(){this.xmloptions={format:!0,attributesGroupName:"a$",textNodeName:"t$",ignoreAttributes:!1,suppressEmptyNode:!0};this.xmlbuilder1=new _t.XMLBuilder(this.xmloptions);this.xmlparser2=new _t.XMLParser(ct);this.parser=new Ue;this.decorated_functions={}}async Init(e={}){for(let t of Object.keys(e))this.decorated_functions[t.toLowerCase()]=e[t];this.zip=await new _i.default().loadAsync(br,{base64:!0})}async WriteRels(e,t,i=!1){if(!this.zip)throw new Error("missing zip");let n=Object.keys(e),r={Relationships:{a$:{xmlns:"http://schemas.openxmlformats.org/package/2006/relationships"},Relationship:n.map(o=>{let l=e[o],u={Id:l.id,Target:l.target,Type:l.type};return l.mode&&(u.TargetMode=l.mode),{a$:u}})}},a=Pe+this.xmlbuilder1.build(r);i&&console.info(a),await this.zip?.file(t,a)}async WriteStyleCache(e){if(!this.zip)throw new Error("missing zip");let t=h=>{let c={};return h.indexed!==void 0&&(c.indexed=h.indexed),h.theme!==void 0&&(c.theme=h.theme),h.tint!==void 0&&(c.tint=h.tint),h.argb!==void 0&&(c.rgb=h.argb),c},i=e.cell_xfs.map(h=>{let c={a$:{numFmtId:h.number_format,fontId:h.font,fillId:h.fill,borderId:h.border}};return(h.horizontal_alignment||h.vertical_alignment||h.wrap_text)&&(c.alignment={a$:{}},h.horizontal_alignment&&(c.alignment.a$.horizontal=h.horizontal_alignment),h.vertical_alignment&&(c.alignment.a$.vertical=h.vertical_alignment),h.wrap_text&&(c.alignment.a$.wrapText=1)),c}),n=h=>{if(h.color)return{indexed:h.color};if(h.rgba)return{rgb:h.rgba};if(h.theme){let c={theme:h.theme};return h.tint&&(c.tint=h.tint),c}},r=e.borders.map(h=>{let c={left:{},right:{},top:{},bottom:{},diagonal:{}};if(h.top.style){c.top.a$={style:h.top.style};let b=n(h.top);b&&(c.top.color={a$:b})}if(h.left.style){c.left.a$={style:h.left.style};let b=n(h.left);b&&(c.left.color={a$:b})}if(h.bottom.style){c.bottom.a$={style:h.bottom.style};let b=n(h.bottom);b&&(c.bottom.color={a$:b})}if(h.right.style){c.right.a$={style:h.right.style};let b=n(h.right);b&&(c.right.color={a$:b})}if(h.diagonal.style){c.diagonal.a$={style:h.diagonal.style};let b=n(h.diagonal);b&&(c.diagonal.color={a$:b})}return c}),a=e.fills.map(h=>{let c={a$:{patternType:h.pattern_type}};return h.pattern_gray!==void 0&&(c.a$.patternType=`gray${h.pattern_gray}`),h.bg_color&&(c.bgColor={a$:t(h.bg_color)}),h.fg_color&&(c.fgColor={a$:t(h.fg_color)}),{patternFill:c}}),o=e.fonts.map(h=>{let c={};return h.bold&&(c.b=""),h.italic&&(c.i=""),h.underline&&(c.u=""),h.strike&&(c.strike=""),h.size!==void 0&&(c.sz={a$:{val:h.size}}),h.family!==void 0&&(c.family={a$:{val:h.family}}),h.name!==void 0&&(c.name={a$:{val:h.name}}),h.scheme!==void 0&&(c.scheme={a$:{val:h.scheme}}),h.color_argb!==void 0?c.color={a$:{rgb:h.color_argb}}:h.color_theme!==void 0&&(c.color={a$:{theme:h.color_theme}},h.color_tint&&(c.color.a$.tint=h.color_tint)),c}),l={styleSheet:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac x16r2 xr","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac","xmlns:x16r2":"http://schemas.microsoft.com/office/spreadsheetml/2015/02/main","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision"}}};e.number_formats.length&&(l.styleSheet.numFmts={a$:{count:e.number_formats.length},numFmt:e.number_formats.map(h=>({a$:{numFmtId:h.id,formatCode:h.format}}))}),o.length&&(l.styleSheet.fonts={a$:{count:o.length},font:o}),a.length&&(l.styleSheet.fills={a$:{count:a.length},fill:a}),r.length&&(l.styleSheet.borders={a$:{count:r.length},border:r}),i.length&&(l.styleSheet.cellXfs={a$:{count:i.length},xf:i});let u=Pe+this.xmlbuilder1.build(l);await this.zip?.file("xl/styles.xml",u)}async WriteSharedStrings(e){if(!this.zip)throw new Error("missing zip");let t={sst:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main",count:e.strings.length,uniqueCount:e.strings.length},si:[...e.strings.map(n=>({t:n}))]}},i=Pe+this.xmlbuilder1.build(t);await this.zip?.file("xl/sharedStrings.xml",i)}StyleFromCell(e,t,i,n,r={}){let a=e.styles||e.cell_style_refs||[],o=[e.sheet_style];if(e.row_pattern&&e.row_pattern.length&&o.push(e.row_pattern[i%e.row_pattern.length]),e.row_style){let u=e.row_style[i];typeof u=="number"&&(u=a[u]),u&&o.push(u)}if(e.column_style){let u=e.column_style[n];typeof u=="number"&&(u=a[u]),u&&o.push(u)}o.push(r);let l=t.StyleOptionsFromProperties(pe.Composite(o));return t.EnsureStyle(l)}NormalizeAddress(e,t){let i=e.type==="address"?[e]:[e.start,e.end];for(let n of i)n.absolute_row=!0,n.absolute_column=!0,n.sheet||(n.sheet=t.name);return e.type==="range"&&(e.end.sheet=void 0),e.label=this.parser.Render(e),e}AnnotationLayoutToAnchor(e,t){let i=n=>{let r=t.column_width&&t.column_width[n.address.column]?t.column_width[n.address.column]:t.default_column_width||100,a=t.row_height&&t.row_height[n.address.row]?t.row_height[n.address.row]:t.default_row_height||20;return{...n.address,row_offset:Math.round(n.offset.y*a),column_offset:Math.round(n.offset.x*r)}};return{from:i(e.tl),to:i(e.br)}}AnnotationRectToAnchor(e,t){let i={from:{row:-1,column:-1},to:{row:-1,column:-1}},n={top:0,left:0,width:301,height:301,...e},r={...n,right:n.left+n.width,bottom:n.top+n.height};for(let a=0,o=0;o<1e3;o++){let l=t.column_width&&t.column_width[o]?t.column_width[o]:t.default_column_width||100;if(i.from.column<0&&r.left<=a+l&&(i.from.column=o,i.from.column_offset=r.left-a),i.to.column<0&&r.right<=a+l){i.to.column=o,i.to.column_offset=r.right-a;break}a+=l}for(let a=0,o=0;o<1e3;o++){let l=t.row_height&&t.row_height[o]?t.row_height[o]:t.default_row_height||20;if(i.from.row<0&&r.top<=a+l&&(i.from.row=o,i.from.row_offset=r.top-a),i.to.row<0&&r.bottom<=a+l){i.to.row=o,i.to.row_offset=r.bottom-a;break}a+=l}return i}ParseImages(e){let t=[];for(let i of e.annotations||[])if(i.type==="image"&&i.data?.src){let n=i.data.src,r=n.match(/^data:image\\/([^;]*?);base64,/);if(r){let a=n.substr(r[0].length),o=r[1],l={data:a,mimetype:o,encoding:"base64"};switch(o){case"svg+xml":case"webp":case"jpeg":case"jpg":case"image/png":case"png":case"gif":i.rect?t.push({anchor:this.AnnotationRectToAnchor(i.rect,e),options:l}):i.layout?t.push({anchor:this.AnnotationLayoutToAnchor(i.layout,e),options:l}):console.warn("annotation missing layout");break;default:console.info("unhandled image type",o);break}}}return t}ParseCharts(e){let t=[],i=(n,r,a)=>{if(n.type==="range")r.data.push(this.NormalizeAddress(n,e));else if(n.type==="call"){if(/group/i.test(n.name))for(let o of n.args||[])i(o,r,a?a+" (recurse)":void 0);else if(/series/i.test(n.name)){let[o,l,u]=n.args;u&&u.type==="range"?(r.data.push(this.NormalizeAddress(u,e)),o&&(r.names||(r.names=[]),o.type==="address"&&this.NormalizeAddress(o,e),o.type==="range"?(this.NormalizeAddress(o.start,e),r.names[r.data.length-1]=o.start):r.names[r.data.length-1]=o),r.labels2||(r.labels2=[]),l&&l.type==="range"&&(r.labels2[r.data.length-1]=this.NormalizeAddress(l,e))):console.info("invalid series missing Y",{y:u,arg:n,ref:a})}}};for(let n of e.annotations||[]){let r=this.parser.Parse(n.formula||"");if(r.expression&&r.expression.type==="call"){let a="";switch(r.expression.name.toLowerCase()){case"line.chart":a="scatter";break;case"scatter.line":a="scatter2";break;case"donut.chart":a="donut";break;case"bar.chart":a="bar";break;case"column.chart":a="column";break}if(a==="column"||a==="donut"||a==="bar"||a==="scatter"||a==="scatter2"){let o={type:a,data:[]},l=a==="scatter2"?1:2,u=r.expression.args[l];if(u&&u.type==="literal"?o.title=u:u&&u.type==="address"&&(o.title=this.NormalizeAddress(u,e)),r.expression.args[0]){let c=r.expression.args[0];if(a==="scatter2"||a==="bar"||a==="column"||a==="scatter")i(c,o,e.name);else if(c.type==="range")o.data.push(this.NormalizeAddress(c,e));else if(c.type==="call"&&/group/i.test(c.name))for(let b of c.args)b.type==="range"?o.data.push(this.NormalizeAddress(b,e)):b.type==="call"&&/series/i.test(b.name)&&b.args[2]&&b.args[2].type==="range"&&o.data.push(this.NormalizeAddress(b.args[2],e));else c.type==="call"&&/series/i.test(c.name)&&c.args[2]&&c.args[2].type==="range"&&o.data.push(this.NormalizeAddress(c.args[2],e))}a!=="scatter2"&&r.expression.args[1]&&r.expression.args[1].type==="range"&&(o.labels=this.NormalizeAddress(r.expression.args[1],e)),(a==="scatter"&&r.expression.args[4]&&r.expression.args[4].type==="literal"&&r.expression.args[4].value.toString().toLowerCase()==="smooth"||a==="scatter2"&&r.expression.args[2]&&r.expression.args[2].type==="literal"&&/smooth/i.test(r.expression.args[2].value.toString()))&&(o.smooth=!0);let h=n.rect;h?t.push({anchor:this.AnnotationRectToAnchor(h,e),options:o}):n.layout?t.push({anchor:this.AnnotationLayoutToAnchor(n.layout,e),options:o}):console.warn("annotation missing layout")}}}return t}FormulaText(e,t){if(e[0]!=="=")return e;let i=this.parser.Parse(e);if(i.expression){this.parser.Walk(i.expression,r=>{if(r.type==="call"){let a=r.name.toLowerCase();this.decorated_functions[a]&&(r.name=this.decorated_functions[a]+"."+r.name)}return!0});let n=t.table?.name||"";return this.parser.Render(i.expression,{missing:"",long_structured_references:!0,table_name:n})}else return console.warn("parsing function failed"),console.warn(e),e.substring(1)}async Export(e){let t=0,i=[];for(let A=0;A<e.sheet_data.length;A++){let v=e.sheet_data[A],z=v.id||0;z&&(i[z]=v.name||""),z===e.active_sheet&&(t=A)}let n=new Ge,r=new Be,a=new Ie,o=await this.zip?.file("xl/theme/theme1.xml")?.async("text");a.FromXML(this.xmlparser2.parse(o||"")),o=await this.zip?.file("xl/styles.xml")?.async("text"),r.FromXML(this.xmlparser2.parse(o||""),a),Le.next_drawing_index=1,Fe.next_chart_index=1;let l=[],u=[];for(let A=0;A<e.sheet_data.length;A++){let v=e.sheet_data[A],z={},W={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac xr xr2 xr3","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr2":"http://schemas.microsoft.com/office/spreadsheetml/2015/revision2","xmlns:xr3":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision3","xr:uid":"{D37933E2-499F-4789-8D13-194E11B743FC}"},j=v.default_row_height?v.default_row_height/20*15:15,P={worksheet:{a$:{...W},dimension:{a$:{ref:"A1"}},sheetViews:{sheetView:{a$:{workbookViewId:0}}},sheetFormatPr:{a$:j===15?{"x14ac:dyDescent":.25}:{defaultRowHeight:j,customHeight:1,"x14ac:dyDescent":.25}},cols:{},sheetData:{},mergeCells:{a$:{count:0}},dataValidations:{},hyperlinks:{},pageMargins:{a$:{left:.7,right:.7,top:.75,bottom:.75,header:.3,footer:.3}},drawing:{},tableParts:{a$:{count:0}},extLst:{ext:{a$:{uri:"{05C60535-1F16-4fd2-B633-F4F36F0B64E0}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}}}}},Y=v.styles||v.cell_style_refs||[],K=new ot;K.FromJSON(v.data,Y);for(let T of v.cell_styles){let M=K.EnsureCell(T);M.style||(M.style=Y[T.ref])}let C={start:{row:K.rows+1,column:K.columns+1},end:{row:K.rows+1,column:K.columns+1}},B={row:[]},m=[],G=[],O=[],R=[],J=[];for(let T=0;T<K.data.length;T++)if(K.data[T]&&K.data[T].length){T<C.start.row&&(C.start.row=T);let M={start:-1,end:-1},U=[];for(let q=0;q<K.data[T].length;q++){let X=K.data[T][q];if(X){if(X.table&&X.table.area.start.row===T&&X.table.area.start.column===q){let he=new oe(X.table.area.start,X.table.area.end),d=u.length+1,L=`../tables/table${d}.xml`,E=[];for(let I=0;I<he.columns;I++){let F=K.data[T][q+I],V="";F.type!==2?(typeof F.calculated<"u"?V=F.calculated.toString():typeof F.value<"u"&&(V=F.value.toString()),F.type=2,F.value=V):V=F.value||"",V||(V=`Column${I+1}`);let S=V,D=!1,Q=1;for(;!D;){D=!0;e:for(let H of E)if(H.toLowerCase()===S.toLowerCase()){D=!1,S=`${V}${++Q}`;break e}}F.value=S,E.push(S)}let x;if(X.table.totals_row){x=[];for(let I=0;I<he.columns;I++){let F=K.data[he.end.row][he.start.column+I];F.type&&(F.type===1?x[I]={type:"formula",value:(F.value||"").toString().substring(1)}:(F.type!==2&&(F.type=2,F.value=F.value?.toString()||""),x[I]={type:"label",value:F.value}))}}let y={rel:xe(z,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table",L),index:d,ref:he.spreadsheet_label,name:`Table${d}`,display_name:`Table${d}`,totals_row_shown:0,totals_row_count:X.table?.totals_row?1:0,columns:E,footers:x};if(X.table.totals_row){let I=new oe(he.start,{row:he.end.row-1,column:he.end.column});y.filterRef=I.spreadsheet_label}R.push(y),u.push(y)}if(X.merge_area&&X.merge_area.start.row===T&&X.merge_area.start.column===q&&O.push(new oe(X.merge_area.start,X.merge_area.end)),X.hyperlink){let he=xe(z,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",X.hyperlink,"External");m.push({rel:he,target:X.hyperlink,address:{row:T,column:q}})}if(X.validation&&(X.validation.type==="list"||X.validation.type==="range")&&J.push({address:{row:T,column:q},validation:X.validation}),X.type===1&&/^=?sparkline\\./i.test(X.value)){G.push({address:{row:T,column:q},formula:X.value,style:X.style});continue}q<C.start.column&&(C.start.column=q),M.start<0&&(M.start=q),M.end=q;let ee=this.StyleFromCell(v,r,T,q,X.style),re,ae,se;switch(X.type){case 1:switch(se=this.FormulaText(X.value,X),X.calculated_type){case 2:re=X.calculated,ae="str";break;case 3:re=X.calculated;break;case 4:re=X.calculated?1:0,ae="b";break}break;case 2:re=n.Ensure(X.value),ae="s";break;case 3:re=X.value;break;case 4:re=X.value?1:0,ae="b";break}X.area&&X.area.start.row===T&&X.area.start.column===q&&typeof se=="string"&&(se={t$:se,a$:{t:"array",ref:X.area.spreadsheet_label}});let fe={a$:{r:oe.CellAddressToLabel({row:T,column:q})}};ae!==void 0&&(fe.a$.t=ae),ee!==void 0&&(fe.a$.s=ee),se!==void 0&&(fe.f=se),re!==void 0&&(fe.v=re),U.push(fe)}}if(U.length){let q={a$:{r:T+1,spans:`${M.start+1}:${M.end+1}`},c:U};v.row_height&&typeof v.row_height[T]=="number"&&v.row_height[T]!==v.default_row_height&&(q.a$.customHeight=1,q.a$.ht=v.row_height[T]*3/4),B.row.push(q)}}let Z=[];v.default_column_width&&(P.worksheet.sheetFormatPr.a$.defaultColWidth=st(v.default_column_width));for(let T=0;T<v.columns;T++){let M={index:T};v.column_width&&v.default_column_width&&typeof v.column_width[T]=="number"&&v.column_width[T]!==v.default_column_width&&(M.width=st(v.column_width[T]));let U=v.column_style[T];typeof U=="number"&&(U=Y[U]),U&&(M.style=r.EnsureStyle(r.StyleOptionsFromProperties(U))),(M.style!==void 0||M.width!==void 0)&&(Z[T]=M)}if(Z.length)for(let T of Z)P.worksheet.cols.col=Z.map(M=>{let U={min:M.index+1,max:M.index+1};return M.style!==void 0&&(U.style=M.style),M.width!==void 0?(U.width=M.width,U.customWidth=1):U.width=st(v.default_column_width||90),{a$:U}});else delete P.worksheet.cols;J.length?P.worksheet.dataValidations={a$:{count:J.length},dataValidation:J.map(T=>{let M={a$:{type:"list",allowBlank:1,showInputMessage:1,showErrorMessage:1,sqref:new oe(T.address).spreadsheet_label}};if(T.validation.type==="range"){let U={id:0,type:"range",label:"",position:0,start:{...T.validation.area.start,absolute_column:!0,absolute_row:!0,id:0,label:"",position:0,type:"address"},end:{...T.validation.area.end,absolute_column:!0,absolute_row:!0,id:0,label:"",position:0,type:"address"}};typeof T.validation.area.start.sheet_id<"u"&&(U.start.sheet=i[T.validation.area.start.sheet_id]),M.formula1=this.parser.Render(U)}else T.validation.type==="list"&&(M.formula1=`"${T.validation.list.join(",")}"`);return M})}:delete P.worksheet.dataValidations,R.length?(P.worksheet.tableParts.a$.count=R.length,P.worksheet.tableParts.tablePart=R.map(T=>({a$:{"r:id":T.rel||""}}))):delete P.worksheet.tableParts;for(let T of R){let M={};T.totals_row_count&&(M.totalsRowCount=1);let U={a$:{count:(T.columns||[]).length},tableColumn:[]};if(T.columns)for(let ee=0;ee<T.columns.length;ee++){let re=T.columns[ee],ae=(T.footers||[])[ee],se={a$:{id:ee+1,name:re||`Column${ee+1}`}};ae&&(ae.type==="label"?se.a$.totalsRowLabel=ae.value:ae.type==="formula"&&(se.a$.totalsRowFunction="custom",se.totalsRowFormula=ae.value)),U.tableColumn.push(se)}let q={table:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"xr xr3","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr3":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision3",id:T.index||0,name:T.name,displayName:T.display_name,...M,ref:T.ref},autoFilter:{a$:{ref:T.filterRef||T.ref}},tableColumns:U,tableStyleInfo:{a$:{name:"TableStyleMedium2",showFirstColumn:0,showLastColumn:0,showRowStripes:1,showColumnStripes:0}}}},X=Pe+this.xmlbuilder1.build(q);await this.zip?.file(`xl/tables/table${T.index}.xml`,X)}O.length?(P.worksheet.mergeCells.a$.count=O.length,P.worksheet.mergeCells.mergeCell=O.map(T=>({a$:{ref:T.spreadsheet_label}}))):delete P.worksheet.mergeCells,m.length?P.worksheet.hyperlinks.hyperlink=m.map(T=>({a$:{"r:id":T.rel,ref:new oe(T.address).spreadsheet_label,"xr:uid":"{0C6B7792-7EA0-4932-BF15-D49C453C565D}"}})):delete P.worksheet.hyperlinks,G.length?P.worksheet.extLst.ext["x14:sparklineGroups"]={a$:{"xmlns:xm":"http://schemas.microsoft.com/office/excel/2006/main"},"x14:sparklineGroup":G.map(T=>{let M=this.parser.Parse(T.formula),U="";if(M.expression&&M.expression.type==="call"&&M.expression.args.length>0){let X=M.expression.args[0];if(X.type==="range"||X.type==="address"){let ee=X.type==="range"?X.start:X;ee.sheet||(typeof ee.sheet_id<"u"?ee.sheet=i[ee.sheet_id]:ee.sheet=v.name),U=this.parser.Render(X)}}let q={displayEmptyCellsAs:"gap"};return/column/i.test(T.formula)&&(q.type="column"),{a$:q,"x14:colorSeries":{a$:{rgb:"FF376092"}},"x14:sparklines":{"x14:sparkline":{"xm:f":U,"xm:sqref":new oe(T.address).spreadsheet_label}}}})}:delete P.worksheet.extLst,P.worksheet.sheetData=B;let $=this.ParseCharts(v),N=this.ParseImages(v);if($.length||N.length){let T=new Le;for(let q of $)T.AddChart(q.options,q.anchor);for(let q of N)T.AddImage(q.options,q.anchor);for(let{image:q}of T.images)await this.zip?.file(`xl/media/image${q.index}.${q.extension}`,q.options.data||"",{base64:q.options.encoding==="base64"});for(let{chart:q}of T.charts){let X=q.toJSON(),ee=Pe+this.xmlbuilder1.build(X);await this.zip?.file(`xl/charts/chart${q.index}.xml`,ee),await this.WriteRels(q.relationships,`xl/charts/_rels/chart${q.index}.xml.rels`)}await this.WriteRels(T.relationships,`xl/drawings/_rels/drawing${T.index}.xml.rels`);let M=Pe+this.xmlbuilder1.build(T.toJSON());await this.zip?.file(`xl/drawings/drawing${T.index}.xml`,M),l.push(T);let U=xe(z,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",`../drawings/drawing${T.index}.xml`);P.worksheet.drawing={a$:{"r:id":U}}}else delete P.worksheet.drawing;P.worksheet.dimension.a$.ref=new oe(C.start,C.end).spreadsheet_label;let k=Pe+this.xmlbuilder1.build(P);await this.zip?.file(`xl/worksheets/sheet${A+1}.xml`,k),Object.keys(z).length&&this.WriteRels(z,`xl/worksheets/_rels/sheet${A+1}.xml.rels`)}await this.WriteSharedStrings(n),await this.WriteStyleCache(r);let h={};xe(h,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles","styles.xml"),xe(h,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme","theme/theme1.xml"),xe(h,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings","sharedStrings.xml");let c=e.sheet_data.map((A,v)=>xe(h,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet",`worksheets/sheet${v+1}.xml`));await this.WriteRels(h,"xl/_rels/workbook.xml.rels");let b={definedName:[]};if(e.named_ranges){let A=Object.keys(e.named_ranges);for(let v of A){let z="",W=new oe(e.named_ranges[v].start,e.named_ranges[v].end);if(W.start.absolute_column=W.start.absolute_row=!0,W.end.absolute_column=W.end.absolute_row=!0,W.start.sheet_id){for(let j of e.sheet_data)if(j.id===W.start.sheet_id){z=j.name||"";break}}z&&(nr.test(z)&&(z=`\'${z}\'`),z+="!"),b.definedName.push({a$:{name:v},t$:z+W.spreadsheet_label})}}if(e.named_expressions)for(let A of e.named_expressions)b.definedName.push({a$:{name:A.name},t$:A.expression});b.definedName.length||(b=void 0);let f={workbook:{a$:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x15 xr xr6 xr10 xr2","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr6":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision6","xmlns:xr10":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision10","xmlns:xr2":"http://schemas.microsoft.com/office/spreadsheetml/2015/revision2"},workbookPr:{a$:{defaultThemeVersion:"166925"}},bookViews:{workbookView:{a$:{activeTab:t||0}}},sheets:{sheet:e.sheet_data.map((A,v)=>{let z={name:A.name||`Sheet${v+1}`,sheetId:v+1,"r:id":c[v]};return A.visible===!1&&(z.state="hidden"),{a$:z}})},definedNames:b}},p=Pe+this.xmlbuilder1.build(f);await this.zip?.file("xl/workbook.xml",p);let g={};for(let A of l)for(let v of A.images)switch(v.image.extension){case"gif":case"png":case"jpeg":g[v.image.extension]="image/"+v.image.extension;break;case"svg":g.svg="image/svg+xml";break}let _={Types:{a$:{xmlns:"http://schemas.openxmlformats.org/package/2006/content-types"},Default:[{a$:{Extension:"rels",ContentType:"application/vnd.openxmlformats-package.relationships+xml"}},{a$:{Extension:"xml",ContentType:"application/xml"}},...Object.keys(g).map(A=>({a$:{Extension:A,ContentType:g[A]}}))],Override:[{a$:{PartName:"/xl/workbook.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"}},...e.sheet_data.map((A,v)=>({a$:{ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",PartName:`/xl/worksheets/sheet${v+1}.xml`}})),...l.reduce((A,v)=>A.concat([...v.charts.map(z=>({a$:{ContentType:"application/vnd.openxmlformats-officedocument.drawingml.chart+xml",PartName:`/xl/charts/chart${z.chart.index}.xml`}})),{a$:{ContentType:"application/vnd.openxmlformats-officedocument.drawing+xml",PartName:`/xl/drawings/drawing${v.index}.xml`}}]),[]),{a$:{PartName:"/xl/theme/theme1.xml",ContentType:"application/vnd.openxmlformats-officedocument.theme+xml"}},{a$:{PartName:"/xl/styles.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"}},{a$:{PartName:"/xl/sharedStrings.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"}},...u.map(A=>({a$:{ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml",PartName:`/xl/tables/table${A.index||0}.xml`}})),{a$:{PartName:"/docProps/core.xml",ContentType:"application/vnd.openxmlformats-package.core-properties+xml"}},{a$:{PartName:"/docProps/app.xml",ContentType:"application/vnd.openxmlformats-officedocument.extended-properties+xml"}}]}},w=Pe+this.xmlbuilder1.build(_);await this.zip?.file("[Content_Types].xml",w)}async AsBinaryString(e){if(!this.zip)throw new Error("missing zip");let t={type:"binarystring"};return typeof e<"u"&&(t.compression="DEFLATE",t.compressionOptions={level:e}),await this.zip.generateAsync(t)}async AsBlob(e){if(!this.zip)throw new Error("missing zip");let t={type:"blob"};return typeof e<"u"&&(t.compression="DEFLATE",t.compressionOptions={level:e}),await this.zip.generateAsync(t)}};var yi=nt(Nt());var dr=nt(Ot());var tt=s=>"row"in s&&"col"in s,Ee=s=>"from"in s&&"to"in s&&tt(s.from)&&tt(s.to),yt=(s,e)=>e.sheet===s.sheet&&e.row>=s.from.row&&e.row<=s.to.row&&e.col>=s.from.col&&e.col<=s.to.col,hr=(s,e=0,t=0)=>({from:{row:s.from.row+e,col:s.from.col+t,sheet:s.from.sheet},to:{row:s.to.row+e,col:s.to.col+t,sheet:s.to.sheet}});var xt=class{constructor(e={}){this.options=e;this.rels={};this.sheet_data={};this.tab_selected=!1;this.default_width=0;this.drawings=[]}TranslateAddress(e){e=e.toUpperCase();let t=e.match(/([A-Z]+\\d+):([A-Z]+\\d+)/);if(t)return{from:this.TranslateAddress(t[1]),to:this.TranslateAddress(t[2])};let i=0,n=0;if(t=e.match(/^([A-Z]+)(\\d+)$/),t){i=Number(t[2]),n=0;let r=t[1].length;for(let a=0;a<r;a++){let o=t[1].charCodeAt(a)-64;n=n*26+o}}return{row:i,col:n}}Address(e,t=!1){if(Ee(e))return this.Address(e.from,t)+":"+this.Address(e.to,t);let i="",n=e.col;for(;n>0;){let a=(n-1)%26+1;i=String.fromCharCode(64+a)+i,n=(n-a)/26}let r=e.sheet?`\'${e.sheet}\'!`:"";return t?`${r}$${i}$${e.row}`:r+i+e.row}NormalizeAddress(e){let t,i;return typeof e=="string"?(t=e.toUpperCase(),i=this.TranslateAddress(t)):(i=e,t=this.Address(i)),{a:t,rc:i}}Parse(){let e=this.sheet_data.worksheet?.dimension?.a$?.ref,t=this.TranslateAddress(e||"");Ee(t)?this.extent=JSON.parse(JSON.stringify(t)):this.extent={from:JSON.parse(JSON.stringify(t)),to:JSON.parse(JSON.stringify(t))}}};var As=new dr.XMLParser(Jr),Re=new dr.XMLParser(ct);var wt=class{constructor(e){this.zip=e;this.xml={};this.shared_strings=new Ge;this.style_cache=new Be;this.theme=new Ie;this.defined_names={};this.rels={};this.sheets=[];this.active_tab=0}get sheet_count(){return this.sheets.length}async ReadRels(e){let t={},i=await this.zip.file(e)?.async("text"),n=Re.parse(i||"");for(let r of n.Relationships?.Relationship||[]){let a=r.a$.Id;t[a]={id:a,type:r.a$.Type,target:r.a$.Target}}return t}async Init(){this.rels=await this.ReadRels("xl/_rels/workbook.xml.rels");let e=await this.zip.file("xl/sharedStrings.xml")?.async("text"),t=Re.parse(e||"");this.shared_strings.FromXML(t),e=await this.zip.file("xl/theme/theme1.xml")?.async("text"),t=Re.parse(e),this.theme.FromXML(t),e=await this.zip.file("xl/styles.xml")?.async("text"),t=Re.parse(e),this.style_cache.FromXML(t,this.theme),console.info({c:this.style_cache}),e=await this.zip.file("xl/workbook.xml")?.async("text"),t=Re.parse(e),this.defined_names={};let i=ne.FindAll(t,"workbook/definedNames/definedName");for(let a of i){let o=a.a$?.name,l=a.t$||"";o&&l&&(this.defined_names[o]=l)}let n=ne.FindAll(t,"workbook/bookViews/workbookView");n[0]?.a$?.activeTab&&(this.active_tab=Number(n[0].a$.activeTab)||0);let r=ne.FindAll(t,"workbook/sheets/sheet");for(let a of r){let o=a.a$?.name;if(o){let l=a.a$.state,u=a.a$["r:id"],h=new xt({name:o,rid:u,id:Number(a.a$.sheetId)});l==="hidden"?h.visible_state=1:l==="veryHidden"&&(h.visible_state=2),h.shared_strings=this.shared_strings,h.path=`xl/${this.rels[u].target}`,h.rels_path=h.path.replace("worksheets","worksheets/_rels")+".rels",e=await this.zip.file(h.path)?.async("text"),h.sheet_data=Re.parse(e||""),h.rels=await this.ReadRels(h.rels_path),h.Parse(),this.sheets.push(h)}}}async ReadTable(e){let t=await this.zip.file(e.replace(/^../,"xl"))?.async("text");if(!t)return;let i=Re.parse(t),n=i.table?.a$?.name||"";return{name:n,display_name:i.table?.a$?.displayName||n,ref:i.table?.a$.ref||"",totals_row_shown:Number(i.table?.a$.totalsRowShown||"0")||0,totals_row_count:Number(i.table?.a$.totalsRowCount||"0")||0}}async ReadDrawing(e){let t=await this.zip.file(e.replace(/^../,"xl"))?.async("text");if(!t)return;let i=Re.parse(t),n=await this.ReadRels(e.replace(/^..\\/drawings/,"xl/drawings/_rels")+".rels"),r=[],a=ne.FindAll(i,"xdr:wsDr/xdr:twoCellAnchor"),o=(l={})=>({column:l["xdr:col"]||0,column_offset:l["xdr:colOff"]||0,row:l["xdr:row"]||0,row_offset:l["xdr:rowOff"]||0});for(let l of a){let h={anchor:{from:o(l["xdr:from"]),to:o(l["xdr:to"])}},c=ne.FindAll(l,"xdr:graphicFrame/a:graphic/a:graphicData/c:chart")[0];if(c&&c.a$&&c.a$["r:id"]){let b=n[c.a$["r:id"]];b&&b.target&&(h.chart=await this.ReadChart(b.target))}r.push(h)}return r}async ReadChart(e){let t=await this.zip.file(e.replace(/^../,"xl"))?.async("text");if(!t)return;let i=As.parse(t),n={type:0},r=ne.FindChild(i,"c:chartSpace/c:chart/c:title");if(r){let l=ne.FindChild(r,"c:tx/c:strRef/c:f");if(l)typeof l=="string"?n.title=l:l.text__&&(n.title=l.text__);else{let u=ne.FindAll(r,"c:tx/c:rich/a:p/a:r/a:t");n.title=\'"\'+u.join("")+\'"\'}}let a=(l,u=!1)=>{let h=[],c=l["c:ser"]||[];Array.isArray(c)||(c=[c]);for(let b of c){let f=h.length,p=b["c:order"];p&&(f=Number(p.__val||0)||0);let g={},_=ne.FindChild(b,"c:tx/c:v");if(_){let w=_;w&&(g.title=`"${w}"`)}else _=ne.FindChild(b,"c:tx/c:strRef/c:f"),_&&(g.title=_);if(u){let w=ne.FindChild(b,"c:xVal/c:numRef/c:f");w&&(g.categories=w);let A=ne.FindChild(b,"c:yVal/c:numRef/c:f");A&&(g.values=A)}else{let w=ne.FindChild(b,"c:val/c:numRef/c:f");w&&(g.values=w);let A=ne.FindChild(b,"c:cat/c:strRef/c:f");A||(A=ne.FindChild(b,"c:cat/c:numRef/c:f")),A&&(g.categories=A)}h[f]=g}return h},o=ne.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:barChart");return o&&(n.type=2,o["c:barDir"]&&o["c:barDir"].__val==="col"&&(n.type=1),n.series=a(o)),o||(o=ne.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:lineChart"),o&&(n.type=3,n.series=a(o))),o||(o=ne.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:doughnutChart"),o&&(n.type=5,n.series=a(o))),o||(o=ne.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:pieChart"),o&&(n.type=6,n.series=a(o))),o||(o=ne.FindChild(i,"c:chartSpace/c:chart/c:plotArea/c:scatterChart"),o&&(n.type=4,n.series=a(o,!0))),n}GetNamedRanges(){return this.defined_names}};var vt=class{constructor(){this.parser=new Ue}async Init(e){typeof e=="string"?this.archive=await(0,yi.default)().loadAsync(e):this.archive=e,this.archive&&(this.workbook=new wt(this.archive),await this.workbook.Init())}SheetCount(){return this.workbook?.sheet_count||0}ParseCell(e,t,i,n,r,a,o){let l=t.a$?.r;if(!l){console.warn("cell missing address");return}let u=e.TranslateAddress(l);if(Ee(u)){console.warn("cell has range address");return}let h,c="undefined",b,f="undefined";if(t.a$?.t&&t.a$.t==="s"){if(c="string",typeof t.v!==void 0){let _=Number(t.v);!isNaN(_)&&e.shared_strings&&(h=e.shared_strings.Get(_)||"",h[0]==="="&&(h="\'"+h))}}else if(typeof t.f<"u"){c="formula";let _=(typeof t.f=="string"?t.f:t.f.t$)||"";if(_){h="="+_.replace(/^_xll\\./g,"");let w=this.parser.Parse(_);w.expression&&(this.parser.Walk(w.expression,A=>(A.type==="call"&&/^_xll\\./.test(A.name)&&(A.name=A.name.substr(5)),!0)),h="="+this.parser.Render(w.expression,{missing:""})),typeof t.f!="string"&&t.f.a$?.t==="shared"&&t.f.a$.si&&(i[t.f.a$.si]={row:u.row-1,column:u.col-1,formula:h,parse_result:this.parser.Parse(h)})}else if(typeof t.f!="string"&&t.f.a$?.t==="shared"&&t.f.a$.si){let w=i[t.f.a$.si];w&&(w.parse_result.expression?h="="+this.parser.Render(w.parse_result.expression,{offset:{rows:u.row-1-w.row,columns:u.col-1-w.column},missing:""}):h=w.formula)}if(typeof t.f!="string"&&t.f.a$?.t==="array"){let w=e.TranslateAddress(t.f.a$.ref||"");Ee(w)&&n.push(hr(w,-1,-1))}if(typeof t.v<"u"){let w=Number(t.v.toString());isNaN(w)?(f="string",b=t.v.toString()):(f="number",b=w)}}else if(typeof t.v<"u"){let _=Number(t.v.toString());isNaN(_)?(c="string",h=t.v.toString()):(c="number",h=_)}let p={row:u.row-1,col:u.col-1};for(let _ of n)yt(_,p)&&(p.row!==_.from.row||p.col!==_.from.col)&&(f=c,b=h,h=void 0,c="undefined");let g={row:p.row,column:p.col,value:h,type:c};typeof b<"u"&&(g.calculated_type=f,g.calculated=b),t.a$?.s&&(g.style_ref=Number(t.a$.s));for(let _ of a)_.address.row===u.row&&_.address.col===u.col&&(g.hyperlink=_.reference);for(let _ of o)if(_.address.row===p.row&&_.address.column===p.col){g.validation=_.validation;break}for(let _ of r)yt(_,p)&&(g.merge_area={start:{row:_.from.row,column:_.from.col},end:{row:_.to.row,column:_.to.col}});for(let _ of n)yt(_,p)&&(g.area={start:{row:_.from.row,column:_.from.col},end:{row:_.to.row,column:_.to.col}});return g}async GetSheet(e=0){if(!this.workbook)throw new Error("missing workbook");let t=this.workbook.sheets[e],i=[],n={},r=[],a=[],o=[],l=[],u=[],h=ne.FindAll.bind(ne,t.sheet_data),c=h("worksheet/mergeCells/mergeCell");for(let O of c)if(O.a$.ref){let R=t.TranslateAddress(O.a$.ref);Ee(R)&&a.push(hr(R,-1,-1))}let b=h("worksheet/dataValidations/dataValidation");for(let O of b){let R=O.a$?.type,J=O.a$?.sqref,Z=O.formula1;if(J&&Z&&R==="list"){let $,N,k=this.parser.Parse(J);k.expression&&(k.expression.type==="address"?$=k.expression:k.expression.type==="range"&&($=k.expression.start)),k=this.parser.Parse(Z),k.expression&&(k.expression.type==="range"?N={type:"range",area:k.expression}:k.expression.type==="literal"&&(N={type:"list",list:k.expression.value.toString().split(/,/).map(T=>{let M=this.parser.Parse(T);if(M.expression?.type==="group"&&/\\s/.test(T))return T;if(M.expression?.type==="literal")return M.expression.value;if(M.expression?.type==="identifier")return M.expression.name})})),$&&N&&l.push({address:$,validation:N})}}let f=h("worksheet/hyperlinks/hyperlink");for(let O of f){let R=t.TranslateAddress(O.a$?.ref||"");Ee(R)&&(R=R.from);let J="",Z="";if(O.a$&&O.a$["r:id"]){J="remote link";let $=t.rels[O.a$["r:id"]];$&&(Z=$.target||"")}else Z=O.__location||"",J=O.__display||"";o.push({address:R,reference:Z,text:J})}let p=21,g=100,_=t.sheet_data.worksheet?.sheetFormatPr;if(_){if(_.a$?.defaultColWidth){let O=Number(_.a$.defaultColWidth);isNaN(O)||(g=kt(O))}if(_.a$?.defaultRowHeight){let O=Number(_.a$.defaultRowHeight);isNaN(O)||(p=Math.round(O*4/3))}}let w=[],A=[],v=h("worksheet/sheetData/row");for(let O of v){let R=O.a$?.r?Number(O.a$.r):1,J=p;if(O.a$?.ht){let $=Number(O.a$.ht);isNaN($)||(J=Math.round($*4/3))}if(O.a$?.outlineLevel){let $=Number(O.a$.outlineLevel);isNaN($)||(A[R-1]=$)}J!==p&&(w[R-1]=J);let Z=O.c||[];Array.isArray(Z)||(Z=[Z]);for(let $ of Z){let N=this.ParseCell(t,$,n,r,a,o,l);N&&i.push(N)}}let z=[],W=-1,j=[],P=h("worksheet/cols/col");for(let O of P){let R=Number(O.a$?.min),J=Number(O.a$?.max);if(O.a$?.style){let Z=Number(O.a$.style);if(!isNaN(R)&&!isNaN(J)&&!isNaN(Z))if(t.extent&&J>=t.extent.to.col||J-R>100)W=Z;else for(let $=R;$<=J;$++)z[$]=Z}if(O.a$?.customWidth){let Z=Number(O.a$.width);if(!isNaN(R)&&!isNaN(J)&&!isNaN(Z)&&J!==16384){Z=kt(Z);for(let $=R;$<=J;$++)j[$-1]=Z}}}let Y=h("worksheet/tableParts/tablePart");for(let O of Y){let R=O.a$?O.a$["r:id"]:void 0;if(R){let J="",Z=t.rels[R];if(Z){J=Z.target||"";let $=await this.workbook.ReadTable(J);if($){let N=t.TranslateAddress($.ref),k=tt(N)?{start:{row:N.row-1,column:N.col-1},end:{row:N.row-1,column:N.col-1}}:{start:{row:N.from.row-1,column:N.from.col-1},end:{row:N.to.row-1,column:N.to.col-1}};for(let T of i)if(T.row===k.start.row&&T.column===k.start.column){T.table={area:k,name:$.name,totals_row:!!$.totals_row_count};break}}}}}let K=h("worksheet/drawing"),C=[];for(let O of K){let R=O.a$?O.a$["r:id"]:void 0;if(R){let J="",Z=t.rels[R];if(Z&&(J=Z.target||""),J){let $=await this.workbook.ReadDrawing(J);$&&$.length&&C.push(...$)}}}let B=O=>{let R={address:{row:O.row,column:O.column},offset:{x:0,y:0}};if(O.row_offset){let J=w[O.row];J===void 0&&(J=p),R.offset.y=O.row_offset/9525/J}if(O.column_offset){let J=j[O.column];J===void 0&&(J=g),R.offset.x=O.column_offset/9525/J}return R};for(let O of C)if(O&&O.chart){let R={tl:B(O.anchor.from),br:B(O.anchor.to)},J,Z=[],$="",N=O.chart?.series;switch(O.chart.type){case 4:J="treb-chart",$="Scatter.Line",N&&N.length&&(Z[0]=`Group(${N.map(T=>`Series(${T.title||""},${T.categories||""},${T.values||""})`||"").join(", ")})`),Z[1]=O.chart.title;break;case 5:case 6:$=O.chart.type===5?"Donut.Chart":"Pie.Chart",J="treb-chart",N&&N[0]&&(Z[0]=N[0].values,Z[1]=N[0]?.categories||""),Z[2]=O.chart.title;break;case 2:case 1:case 3:switch(Z[2]=O.chart.title,J="treb-chart",O.chart.type){case 2:$="Bar.Chart";break;case 1:$="Column.Chart";break;default:$="Line.Chart"}N&&(N.length>1?Z[0]=`Group(${N.map(T=>`Series(${T.title||""},,${T.values||""})`||"").join(", ")})`:N.length===1&&(N[0].title?Z[0]=`Series(${N[0].title||""},,${N[0].values||""})`:Z[0]=N[0].values),Z[1]=N[0]?.categories||"");break}let k=`=${$}(${Z.join(", ")})`;J&&k&&u.push({layout:R,type:J,formula:k})}let m=h("worksheet/extLst/ext");for(let O of m){let R="";for(let Z of Object.keys(O?.a$||{})){let $=Z.match(/^xmlns:(.*)$/);if($){R=$[1];break}}let J=ne.FindAll(O,`${R}:sparklineGroups/${R}:sparklineGroup`);for(let Z of J){let $="Sparkline.line",N="",k="";Z.a$?.type==="column"&&($="Sparkline.column");let T=ne.FindAll(Z,`${R}:sparklines/${R}:sparkline`);for(let M of T)for(let U of Object.keys(M))/:f$/.test(U)?k=M[U]:/:sqref$/.test(U)&&(N=M[U]);if(k&&N){let M=`=${$}(${k})`,U=t.TranslateAddress(N);if(tt(U)){let q={row:U.row-1,column:U.col-1,value:M,type:"formula"},X=!1;for(let ee of i)if(ee.row===q.row&&ee.column===q.column){X=!0,ee.type="formula",ee.value=M;break}X||i.push(q)}}}}let G={name:t.options.name,cells:i,default_column_width:g,column_widths:j,row_heights:w,annotations:u,styles:this.workbook?.style_cache?.CellXfToStyles()||[]};return A.length&&(G.outline=A),(t.visible_state===1||t.visible_state===2)&&(G.hidden=!0),W>=0&&(G.sheet_style=W),z.length&&(G.column_styles=z),G}};var At=self,ur=new bt,Cs=async s=>{if(s.sheet){await ur.Init(s.decorated||[]),await ur.Export(s.sheet);let e=await ur.AsBlob(1),t=e.slice(0,e.size,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");At.postMessage({status:"complete",blob:t})}},Is=async s=>{let e=new vt;try{await e.Init(s.data);let t=e.SheetCount(),i={sheets:[],names:e.workbook?.GetNamedRanges(),active_tab:e.workbook?.active_tab};for(let n=0;n<t;n++){let r=await e.GetSheet(n);r&&i.sheets.push(r)}At.postMessage({status:"complete",results:i})}catch(t){console.warn("error importing xlsx file"),console.info(t),At.postMessage({status:"error",data:t})}};At.addEventListener("message",s=>{s.data&&s.data.command==="export"?Cs(s.data):s.data&&s.data.command==="import"&&Is(s.data)});\n/*! Bundled license information:\n\njszip/dist/jszip.min.js:\n (*!\n \n JSZip v3.10.1 - A JavaScript class for generating and reading zip files\n <http://stuartk.com/jszip>\n \n (c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\n Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n \n JSZip uses the library pako released under the MIT license :\n https://github.com/nodeca/pako/blob/main/LICENSE\n *)\n*/\n';var vt=class{constructor(e){this.loaded=!1;this.document_styles={number_formats:[],colors:[],theme_colors:[]};this.selection_state={};this.events=new oe;this.calculation=0;this.file_version=0;this.last_save_version=0;this.file_chooser_operation=0;this.views=[];this.focus_target=this;this.undo_pointer=0;this.undo_stack=[];e.storage_key&&!e.local_storage&&(e.local_storage=e.storage_key),this.options={...qi,...e,local_storage:this.ResolveStorageKey(e.local_storage,"document")},typeof this.options.imaginary_value=="string"&&(Y.imaginary_character=this.options.imaginary_value),this.options.network_document&&(console.warn("the option `network_document` is deprecated. please use `document` instead."),this.options.document||(this.options.document=this.options.network_document)),this.options.document&&this.options.inline_document&&console.warn("both document and inline-document are provided");let t=this.options.document,r,i;this.options.local_storage&&!this.options.toll_initial_load&&!e.model&&(r=localStorage.getItem(this.options.local_storage)||void 0,r&&(i="local-storage")),!r&&!this.options.toll_initial_load&&!e.model&&e.inline_document&&(r=e.inline_document,i="inline-document"),this.options.local_storage&&!e.model&&window.addEventListener("beforeunload",()=>{this.options.local_storage&&this.SaveLocalStorage(this.options.local_storage)});let n;typeof this.options.container=="string"?n=document.querySelector(this.options.container):this.options.container&&(n=this.options.container);let s={insert_function_button:!1,in_cell_editor:!0,repaint_on_cell_change:!1,scrollbars:this.options.scrollbars,markdown:!!this.options.markdown,formula_bar:this.options.formula_bar,expand_formula_button:this.options.expand_formula_button,tab_bar:this.options.tab_bar,add_tab:this.options.add_tab,expand:this.options.expand};if(this.options.scale&&(s.initial_scale=this.options.scale),this.options.stats&&(s.stats=this.options.stats,s.tab_bar=!0),this.options.scale_control&&(s.scale_control=!0,s.tab_bar=!0,this.options.persist_scale&&(s.persist_scale_key=this.ResolveStorageKey(this.options.persist_scale,"scale"),s.persist_scale_key))){let a=localStorage.getItem(s.persist_scale_key);if(a)try{let o=JSON.parse(a);s.initial_scale=o.scale||1}catch{console.warn("parsing persisted scale failed")}}if(e.model?(this.model=e.model.model,this.calculator=e.model.calculator):(this.model=new bt,this.model.sheets.Add(O.Blank(this.model.theme_style_properties)),this.calculator=this.CreateCalculator(this.model,e)),this.grid=new ft(s,this.parser,this.model,void 0,!!n),this.options.headless&&(this.grid.headless=!0),n){this.parent_view||(q.is_windows?n.parentElement?.classList.add("treb-ua-windows"):q.is_mac&&n.parentElement?.classList.add("treb-ua-osx"));let a=n.querySelector(".treb-view-template");this.view=a.content.firstElementChild?.cloneNode(!0),n.prepend(this.view),this.view.addEventListener("focusin",()=>{this.focus_target!==this&&(this.Publish({type:"focus-view"}),this.focus_target=this)}),this.key_listener=l=>this.HandleKeyDown(l),n.addEventListener("keydown",this.key_listener);let o=!!(r||this.options.document);this.grid.Initialize(this.view,o),this.options.dnd&&(this.view.addEventListener("dragenter",l=>this.HandleDrag(l)),this.view.addEventListener("dragover",l=>this.HandleDrag(l)),this.view.addEventListener("drop",l=>this.HandleDrop(l))),this.grid.grid_events.Subscribe(l=>{switch(l.type){case"error":this.dialog?.ShowDialog({type:"error",...this.TranslateGridError(l.code),timeout:3e3,close_box:!0});break;case"selection":this.UpdateSelection(l.selection),this.UpdateSelectionStyle(l.selection);break;case"sheet-change":this.OnSheetChange(l),this.UpdateSelectionStyle();break;case"data":{let c=this.last_selection;(this.calculation===0?this.Recalculate(l):Promise.resolve()).then(()=>{this.DocumentChange(c)})}break;case"style":this.DocumentChange(),this.UpdateDocumentStyles(!1),this.UpdateSelectionStyle();break;case"scale":this.RebuildAllAnnotations();break;case"annotation":if(l.annotation){let c=l.annotation.view[this.grid.view_index]||{};switch(this.DocumentChange(),l.event){case"create":this.InflateAnnotation(l.annotation),this.calculator.UpdateAnnotations(l.annotation,this.grid.active_sheet),this.grid.AnnotationUpdated(l.annotation);break;case"delete":this.calculator.RemoveAnnotation(l.annotation);break;case"update":c.update_callback?(c.update_callback(),this.grid.AnnotationUpdated(l.annotation)):console.info("annotation update event without update callback"),this.calculator.UpdateAnnotations(l.annotation,this.grid.active_sheet);break;case"resize":c.resize_callback&&(c.resize_callback(),this.grid.AnnotationUpdated(l.annotation));break}}else console.info("annotation event without annotation");break;case"structure":{let c=this.last_selection;l.rebuild_required?(this.calculator.Reset(),(this.calculation===0?this.Recalculate(l):Promise.resolve()).then(()=>{this.DocumentChange(c)})):this.DocumentChange(c)}this.UpdateSelectionStyle();break;case"cell-event":this.HandleCellEvent(l);break}}),this.options.prompt_save&&window.addEventListener("beforeunload",l=>{this.last_save_version!==this.file_version&&(l.preventDefault(),l.returnValue="")})}else vt.one_time_warnings.headless||(vt.one_time_warnings.headless=!0,console.info("not initializing layout; don't call UI functions"));if(r?(typeof r=="string"&&(r=JSON.parse(r)),r&&this.LoadDocument(r,{recalculate:!!this.options.recalculate,source:i})):t||this.calculator.RebuildClean(!0),this.FlushUndo(),this.grid.ShowHeaders(this.options.headers),this.options.scroll&&!this.options.document){let a=this.options.scroll;requestAnimationFrame(()=>{this.ScrollTo(a)})}this.UpdateAC(),this.options.global_name&&(self[this.options.global_name]=this),n&&this.options.spinner&&(this.spinner=new tr(n)),t&&!e.model&&!r&&this.LoadNetworkDocument(t,this.options),n&&(this.dialog=new er(n))}get Localization(){return T}get parser(){return this.calculator.parser}get modified(){return this.undo_stack.length!==1}get document_name(){return this.grid.model.document_name}set document_name(e){this.grid.model.document_name=e,this.DocumentChange()}get user_data(){return this.grid.model.user_data}set user_data(e){this.grid.model.user_data=e,this.DocumentChange()}get scale(){return this.grid.scale}set scale(e){this.grid.scale=e}get headless(){return this.grid.headless}set headless(e){this.grid.headless!==e&&(this.grid.headless=e,e||(this.grid.Update(!0),this.RebuildAllAnnotations()))}get state(){return this.file_version}get dirty(){return this.file_version!==this.last_save_version}static BuildPath(){let e=typeof document>"u"?[]:document.querySelectorAll("script"),t=process.env.BUILD_ENTRY_MAIN||"",r=new RegExp(t);for(let i=0;i<e.length;i++){let s=e[i].src;if(s&&r.test(s)){s&&/\?.*?engine/i.test(s)&&(this.enable_engine=!0),s&&/\?.*?format/i.test(s)&&(this.enable_formatter=!0),this.treb_embedded_script_path=s,this.treb_base_path=s.replace(new RegExp(t+".*$"),"");return}}r=new RegExp(`import.*?from.*?['"](.*?${t}.*?)['"]`);for(let i=0;i<e.length;i++){let n=e[i];if(!n.src){let a=(n.textContent||"").match(r);if(a){let o=a[1];this.treb_embedded_script_path=o,this.treb_base_path=o.replace(new RegExp(t+".*$"),"");return}}}}UpdateAC(){let e=this.calculator.SupportedFunctions();if(this.language_model){let t={};for(let r of this.language_model.functions||[])t[r.base.toUpperCase()]=r;e=e.map(r=>t[r.name.toUpperCase()]||r)}this.grid.SetAutocompleteFunctions(e)}CreateCalculator(e,t){return new Kt(e,{complex_numbers:t.complex})}TranslateGridError(e){switch(e){case 0:return{message:"No error"};case 2:return{message:"You can't change part of an array"};case 5:return{message:"Invalid area for paste"};case 4:return{message:"Invalid area for table"};case 3:return{message:"Invalid value (data validation)"};default:return{message:`Unknown error (${e})`}}}CreateView(){let e=new vt({...this.options,global_name:void 0,model:this});return e.parent_view=this,e}Unsplit(){let e=this.views.pop();if(e){let t=e.view;t.grid.grid_events.CancelAll(),t.events.CancelAll(),t.view?.parentElement&&(t.key_listener&&t.view.parentElement.removeEventListener("keydown",t.key_listener),t.view.parentElement.removeChild(t.view)),this.view?.focus(),this.Resize()}}Split(){let e=this.CreateView();e.grid.EnsureActiveSheet(!0),e.view?.addEventListener("focusin",()=>{this.focus_target!==e&&(this.Publish({type:"focus-view"}),this.focus_target=e)}),e.grid.grid_events.Subscribe(r=>{r.type==="structure"&&(this.grid.EnsureActiveSheet(),this.grid.UpdateLayout(),this.grid.tab_bar?.Update())}),e.Subscribe(r=>{switch(r.type){case"selection":break;default:e.UpdateAnnotations(),this.grid.Update(!0)}}),this.grid.grid_events.Subscribe(r=>{r.type==="structure"&&(e.grid.EnsureActiveSheet(),e.grid.UpdateLayout(),e.grid.tab_bar?.Update())});let t=this.Subscribe(r=>{switch(r.type){case"selection":break;case"load":case"reset":e.grid.EnsureActiveSheet(!0),e.UpdateAnnotations(),e.grid.Update(!0);break;default:e.UpdateAnnotations(),e.grid.Update(!0)}});this.views.push({view:e,subscription:t})}HandleToolbarMessage(e){if(this.focus_target!==this){this.focus_target.HandleToolbarMessage(e);return}let t={},r=i=>{let n=this.grid.GetSelection();if(n&&!n.empty){let s=n.area.spreadsheet_label;this.InsertAnnotation(`=${i}(${s},,"${s}")`,void 0,void 0,",")}};if(/^border-/.test(e.command))if(e.command==="border-color")try{t.border_top_fill=t.border_bottom_fill=t.border_left_fill=t.border_right_fill=e.color||{}}catch(i){console.error(i)}else{let i=1,n=e.command.substring(7);e.command==="border-double-bottom"&&(n="bottom",i=2),this.grid.ApplyBorders2(void 0,n,e.color||{},i)}else switch(e.command){case"about":this.About();break;case"number-format":t.number_format=e.format||"General";break;case"font-scale":{let i=this.grid.GetSelection(),n=this.grid.active_sheet.RealArea(i.area),s=Number(e.scale||1);if(s&&!isNaN(s)){this.grid.ApplyStyle(void 0,{font_size:{unit:"em",value:s}},!0);let a=[];for(let o=n.start.row;o<=n.end.row;o++)a.push(o);this.selection_state?.merge||this.grid.SetRowHeight(a,void 0,!1)}}break;case"update-comment":this.SetNote(void 0,e.comment||"");break;case"clear-comment":this.SetNote(void 0,"");break;case"text-color":case"fill-color":try{let i=e.color||{};e.command==="text-color"?t.text=i:e.command==="fill-color"&&(t.fill=i)}catch(i){console.error(i)}break;case"insert-table":this.InsertTable();break;case"remove-table":this.RemoveTable();break;case"insert-row":this.InsertRows();break;case"insert-column":this.InsertColumns();break;case"delete-row":this.DeleteRows();break;case"delete-column":this.DeleteColumns();break;case"insert-sheet":this.grid.InsertSheet();break;case"delete-sheet":this.grid.DeleteSheet();break;case"freeze-panes":{let i=this.grid.GetFreeze();i.rows||i.columns?this.Freeze(0,0):this.FreezeSelection()}break;case"insert-image":this.InsertImage();break;case"insert-donut-chart":r("Donut.Chart");break;case"insert-column-chart":r("Column.Chart");break;case"insert-bar-chart":r("Bar.Chart");break;case"insert-line-chart":r("Line.Chart");break;case"increase-precision":case"decrease-precision":if(this.selection_state?.style){let i=M.Get(this.selection_state.style.number_format||"General");if(i.date_format)break;let n=new Y(i.pattern);if(i.magic_decimal){let s=0,a=this.GetRange();Array.isArray(a)||(a=[[a]]);e:for(let o=0;o<a.length;o++)for(let l=0;l<a[o].length;l++){let c=a[o][l];if(typeof c<"u"&&ye(c)){let h=M.Get(this.selection_state.style.number_format||"General",!0),u=h.BaseFormat(c.real),m=h.BaseFormat(c.imaginary);u.parts&&typeof u.parts[1]=="string"&&(s=u.parts[1].length),m.parts&&typeof m.parts[1]=="string"&&(s=Math.max(s,m.parts[1].length));break e}else if(typeof c=="number"){let h=i.BaseFormat(c);h.parts&&typeof h.parts[1]=="string"&&(s=h.parts[1].length);break e}}e.command==="increase-precision"?n.SetDecimal(s+1):n.SetDecimal(Math.max(0,s-1))}else e.command==="increase-precision"?n.IncreaseDecimal():n.DecreaseDecimal();t.number_format=n.toString()}break;case"merge-cells":this.grid.MergeCells();break;case"unmerge-cells":this.grid.UnmergeCells();break;case"lock-cells":t={locked:this.selection_state?.style?!this.selection_state.style.locked:!0};break;case"wrap-text":t={wrap:this.selection_state?.style?!this.selection_state?.style.wrap:!0};break;case"justify-left":t={horizontal_align:k.HorizontalAlign.Left};break;case"justify-center":t={horizontal_align:k.HorizontalAlign.Center};break;case"justify-right":t={horizontal_align:k.HorizontalAlign.Right};break;case"align-top":t={vertical_align:k.VerticalAlign.Top};break;case"align-middle":t={vertical_align:k.VerticalAlign.Middle};break;case"align-bottom":t={vertical_align:k.VerticalAlign.Bottom};break;case"reset":this.Reset();break;case"import-file":this.LoadLocalFile();break;case"save-json":this.SaveToDesktop();break;case"save-csv":this.SaveToDesktop("csv");break;case"export-xlsx":this.Export();break;case"revert":this.Revert();break;case"recalculate":this.Recalculate();break;case"toggle-toolbar":case"show-toolbar":case"hide-toolbar":this.ShowToolbar(e.command==="toggle-toolbar"?void 0:e.command==="show-toolbar");break;case"toggle-sidebar":case"show-sidebar":case"hide-sidebar":this.ShowSidebar(e.command==="toggle-sidebar"?void 0:e.command==="show-sidebar");break;default:console.info("unhandled",e.command);break}Object.keys(t).length&&this.grid.ApplyStyle(void 0,t,!0),this.Focus()}ShowToolbar(e){if(this.options.toolbar&&this.options.container instanceof HTMLElement){let t=this.options.container.parentElement;t&&(e===void 0&&(e=!t.hasAttribute("toolbar")),e?t.setAttribute("toolbar",""):t.removeAttribute("toolbar"))}}ShowSidebar(e){if(this.options.toolbar&&this.options.container instanceof HTMLElement){let t=this.options.container.parentElement;t&&(e===void 0&&(e=t.hasAttribute("collapsed")),e?t.removeAttribute("collapsed"):t.setAttribute("collapsed",""))}}CreateChart(){return this.calculator.RegisterLibrary("treb-charts",Jr)&&this.UpdateAC(),new et}SetLanguage(e){if(this.language_model=e,!e)this.grid.SetLanguageMap();else{let t={};for(let r of e.functions||[])t[r.base]=r.name;this.grid.SetLanguageMap(t)}this.UpdateAC()}async Batch(e,t=!1){let r=this.last_selection,i=this.grid.Batch(e,t),n=!1,s=!1;for(let a of i)a.type==="data"?n=!0:a.type==="structure"&&a.rebuild_required&&(s=!0);s&&this.calculator.Reset(),(n||s)&&(await this.Recalculate(),this.DocumentChange(r))}Freeze(e=0,t=0){this.grid.Freeze(e,t,!0)}FreezeSelection(){let e=this.grid.GetSelection();if(e.empty)this.grid.Freeze(0,0);else{let t=e.area;t.entire_sheet||(t.entire_row?this.grid.Freeze(t.end.row+1,0):t.entire_column?this.grid.Freeze(0,t.end.column+1):this.grid.Freeze(t.end.row+1,t.end.column+1))}}GetFreeze(){return this.grid.GetFreeze()}UpdateTheme(){this.grid.UpdateTheme(void 0),this.UpdateDocumentStyles()}GetSheetID(e){if(typeof e=="number"){let t=this.grid.model.sheets.list[e];if(t)return t.id}else{let t=this.model.sheets.Find(e);if(t)return t.id}}InsertTable(e,t={}){let r=e?this.calculator.ResolveArea(e,this.grid.active_sheet):this.GetSelectionReference().area,i=t.theme;typeof i=="number"&&(i=Ct(i)),this.grid.InsertTable(r,t.totals_row,t.sortable,i)}RemoveTable(e){let t=this.ResolveTable(e||this.GetSelectionReference().target);t&&this.grid.RemoveTable(t)}UpdateTableStyle(e,t=4){let r=this.ResolveTable(e||this.GetSelectionReference().target);r&&(typeof t=="number"&&(t=Ct(t)),r.theme=t,this.grid.active_sheet.FlushCellStyles(),this.grid.Update(!0),this.PushUndo())}AddSheet(e){this.grid.AddSheet(e);let t=this.model.sheets.list[this.model.sheets.list.length-1];return this.calculator.Reset(),t.id}InsertAnnotation(e,t="treb-chart",r,i){let n;if(r&&(n=U.IsRectangle(r)?r:this.calculator.ResolveArea(r,this.grid.active_sheet)),i&&i!==this.parser.argument_separator){let c={argument_separator:this.parser.argument_separator,decimal_mark:this.parser.decimal_mark};i===","?(this.parser.argument_separator=",",this.parser.decimal_mark="."):(this.parser.argument_separator=";",this.parser.decimal_mark=",");let h=this.parser.Parse(e);this.parser.argument_separator=c.argument_separator,this.parser.decimal_mark=c.decimal_mark,h.expression&&(e="="+this.parser.Render(h.expression,{missing:""}))}let{x:s,y:a}=this.grid.GetScrollOffset(),o=this.grid.scale||1,l={width:301,height:301};this.grid.CreateAnnotation({type:t,formula:e},void 0,void 0,n||{top:a/o+30,left:s/o+30,...l})}InsertImage(){this.SelectFile2(".png, .jpg, .jpeg, .gif, .svg",2)}RenameSheet(e,t){let r;typeof e=="number"?r=this.grid.model.sheets.list[e]:typeof e=="string"?r=this.model.sheets.Find(e):r=this.grid.active_sheet,r&&this.grid.RenameSheet(r,t)}DeleteSheet(e){if(typeof e=="string"){let t=this.model.sheets.Find(e);t&&this.grid.DeleteSheetID(t.id)}else this.grid.DeleteSheet(e);this.calculator.Reset()}HideSheet(e=0,t=!0){this.grid.ShowSheet(e,!t)}ShowSheet(e=0,t=!0){this.grid.ShowSheet(e,t)}ActivateSheet(e){this.grid.ActivateSheet(e)}SetColumnWidth(e,t){this.grid.SetColumnWidth(e,t)}SetRowHeight(e,t){this.grid.SetRowHeight(e,t)}InsertRows(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_column?0:i.start.row}this.grid.InsertRows(e,t)}InsertColumns(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_row?0:i.start.column}this.grid.InsertColumns(e,t)}DeleteRows(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_column?0:i.start.row,t=i.rows}this.grid.InsertRows(e,-t)}DeleteColumns(e,t=1){if(typeof e>"u"){let r=this.grid.GetSelection();if(r.empty)return;let i=r.area;e=i.entire_row?0:i.start.column,t=i.columns}this.grid.InsertColumns(e,-t)}FilterTable(e,t=0,r){let i=this.ResolveTable(e);if(!i)throw new Error("invalid table reference");r?this.grid.FilterTable(i,t,n=>r.call(0,n.value,n.calculated||void 0,JSON.parse(JSON.stringify(n.style||{})))):this.grid.FilterTable(i,0,()=>!0)}SortTable(e,t={}){let r=this.ResolveTable(e);if(!r)throw new Error("invalid table reference");this.grid.SortTable(r,t)}MergeCells(e){this.grid.MergeCells(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0)}UnmergeCells(e){this.grid.UnmergeCells(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0)}async ExportBlob(){return this.export_worker||(this.export_worker=await this.LoadWorker("export")),new Promise((e,t)=>{if(this.export_worker){this.export_worker.onmessage=i=>{e(i.data?i.data.blob:void 0)},this.export_worker.onerror=i=>{console.error("export worker error"),console.info(i),t(i)};let r=this.grid.Serialize({rendered_values:!0,expand_arrays:!0,export_colors:!0,decorated_cells:!0,tables:!0,share_resources:!1});r.decimal_mark=T.decimal_separator,this.export_worker.postMessage({command:"export",sheet:r,decorated:this.calculator.DecoratedFunctionList()})}else t("worker failed")})}Revert(){if(this.options.inline_document){this.LoadDocument(this.options.inline_document),this.options.local_storage&&(this.SaveLocalStorage("reverted_backup"),localStorage.removeItem(this.options.local_storage));return}let e=this.options.document;if(e){this.LoadNetworkDocument(e),this.options.local_storage&&(this.SaveLocalStorage("reverted_backup"),localStorage.removeItem(this.options.local_storage));return}console.warn("to revert, there must be a document set in options"),this.dialog?.ShowDialog({title:"Can't revert -- no document is set in options",close_box:!0,timeout:3e3,type:"error"})}Export(){this.ExportBlob().then(e=>{let t="export";this.grid.model.document_name&&(t=this.grid.model.document_name.toLowerCase().replace(/\s+/g,"-")),e&&(this.SaveAs(e,t+".xlsx"),this.last_save_version=this.file_version)}).catch(e=>{throw/invalid uri/i.test(e.message)&&this.dialog?.ShowDialog({title:"Error exporting file",close_box:!0,message:"The worker cannot run from the filesystem, please use a web server.",timeout:3e3,type:"error"}),e})}GetSelectionReference(){return this.grid.GetSelection()}Focus(){this.grid.Focus()}Resize(){this.grid.UpdateLayout();for(let e of this.views)e.view.grid.UpdateLayout();this.Publish({type:"resize"})}Reset(){if(this.parent_view)return this.parent_view.Reset();this.grid.Reset(),this.ResetInternal(),this.calculator.AttachModel(),this.UpdateAC(),this.Publish({type:"reset"})}LoadFromLocalStorage(e){this.options.local_storage=e;let t=localStorage.getItem(e);if(t)try{let r=JSON.parse(t);return this.LoadDocument(r,{source:"local-storage"}),!0}catch(r){console.error(r)}return!1}async LoadNetworkDocument(e,t){let r=t?t.scroll:void 0,i=t?!!t.recalculate:!1,n=t?t.sheet:void 0,s=/csv(?:$|\?|&)/i.test(e),a=/tsv(?:$|\?|&)/i.test(e);try{this.spinner?.Show();let o=await fetch(e);if(this.spinner?.Hide(),!o.ok)throw new Error("network error");let l=await o.text();if(typeof l=="string")if(s)this.LoadCSV(l,"network-file");else{if(a)throw new Error("tsv not supported (TODO)");{l.substr(0,11)==="&&&START&&&"?l=l.substr(11):l.substr(0,8)==="for(;;);"&&(l=l.substr(8));let c=JSON.parse(l);this.LoadDocument(c,{scroll:r,recalculate:i,override_sheet:n,source:"network-file"})}}}catch(o){console.info("error loading network document",e),console.error(o),this.dialog?.ShowDialog({title:"Error loading file",close_box:!0,message:"The network document returned an error",type:"error",timeout:3e3}),this.Reset()}}async LoadLocalFile(){this.SelectFile2(".treb, .csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/json",1)}ExportDelimited(e={}){if(e={delimiter:",",...e},!e.delimiter||e.delimiter!==","&&e.delimiter!==" ")throw new Error("invalid delimiter");let t=this.grid.active_sheet;switch(typeof e.sheet){case"undefined":break;case"string":t=this.model.sheets.Find(e.sheet);break;case"number":t=this.grid.model.sheets.list[e.sheet];break;default:t=void 0;break}if(!t)throw new Error("invalid sheet identifier");let r=t.cells.toJSON({nested:!1,expand_arrays:!0,calculated_value:!0}),i=[];for(let a=0;a<r.columns;a++)i.push("");let n=[];for(let a=0;a<r.rows;a++)n.push(i.slice(0));let s=new RegExp(`[
12
+ \r"${e.delimiter}]`);if(rt(r.data))for(let a of r.data){let o="";!e.formulas&&typeof a.calculated<"u"?o=ye(a.calculated)?Ze(a.calculated):a.calculated.toString():typeof a.value=="string"&&a.value[0]==="'"?o=a.value.substr(1):typeof a.value<"u"&&(o=ye(a.value)?Ze(a.value):a.value.toString()),s.test(o)&&(o=o.replace(/"/g,'""'),o='"'+o+'"'),n[a.row][a.column]=o}return n.map(a=>a.join(e.delimiter)).join(`\r
13
+ `)}SaveLocalFile(e="treb.json",t={}){this.SaveToDesktop(e,t)}SaveToDesktop(e="treb.json",t={}){let r=this.grid.model.document_name||"document",i,n,s=e.split(/\./).filter(o=>o.trim().length),a=s.length?s[s.length-1].toLowerCase():"treb";if(s.length<=1||e==="treb.json")if(e==="treb.json"&&(a=e),(a==="csv"||a==="tsv")&&this.grid.model.sheets.length>1){let o=this.grid.active_sheet.name;e=(r+"-"+o).toLowerCase().replace(/\W+/g,"-")+"."+a}else e=r.toLowerCase().replace(/\W+/g,"-")+"."+a;switch(a){case"csv":n=this.ExportDelimited({delimiter:","});break;case"tsv":n=this.ExportDelimited({delimiter:" "});break;case"treb":case"json":case"treb.json":i=this.SerializeDocument({...t}),n=JSON.stringify(i,void 0,t.pretty?2:void 0),this.last_save_version=this.file_version;break;default:throw new Error("invalid file type")}if(n&&e){let o=new Blob([n],{type:"text/plain;charset=utf-8"});this.SaveAs(o,e)}}LoadCSV(e,t){if(this.parent_view)return this.parent_view.LoadCSV(e,t);this.grid.FromCSV(e),this.ResetInternal(),this.grid.Update(!0),this.Publish({type:"load",source:t}),this.UpdateDocumentStyles()}ScrollOffset(e){return this.grid.ScrollOffset(e)}LoadDocument(e,t={}){if(this.parent_view)return this.parent_view.LoadDocument(e,t);if(t={flush:!0,recalculate:!1,...t},t.override_selection&&e.sheet_data){let r=Array.isArray(e.sheet_data)?e.sheet_data:[e.sheet_data];for(let i of r)if(i.id===t.override_selection.target.sheet_id){i.selection=t.override_selection;break}}if(this.ImportDocumentData(e,t.override_sheet),this.calculator.Reset(),e.rendered_values&&!t.recalculate?(this.grid.Update(),this.calculator.RebuildClean(!0)):this.Recalculate(),this.InflateAnnotations(),t.flush&&this.FlushUndo(),this.Publish({type:"load",source:t.source}),this.UpdateDocumentStyles(),this.loaded=!0,t.scroll){let r=t.scroll;re().then(()=>this.ScrollTo(r))}}SetNote(e,t){if(typeof e=="string"){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=L(r)?r:r.start}this.grid.SetNote(e,t)}SetValidation(e,t,r){if(typeof e=="string"){let i=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=L(i)?i:i.start}if(typeof t>"u"||Array.isArray(t))this.grid.SetValidation(e,t,r);else{let i=this.calculator.ResolveArea(t,this.grid.active_sheet);this.grid.SetValidation(e,i,r)}}RemoveFunction(e){let t=e.toUpperCase();this.model.macro_functions.delete(t),this.UpdateAC()}DefineFunction(e,t="",r="0"){if(!e.length||/^[^A-Za-z]/.test(e)||/[^\w_.]/.test(e))throw new Error("invalid function name");typeof t=="string"&&(t=t?t.split(this.parser.argument_separator).map(i=>i.trim()):[]);for(let i of t)if(!i.length||/^[^A-Za-z]/.test(i)||/[^\w_.]/.test(i))throw new Error("invalid argument name");this.RemoveFunction(e),this.grid.model.macro_functions.set(e.toUpperCase(),{name:e,function_def:r,argument_names:t,expression:this.parser.Parse(r).expression}),this.UpdateAC()}SerializeDocument(e={}){e={share_resources:!0,shrink:!0,...e};let t=this.grid.Serialize(e),r={app:"@trebco/treb",version:"26.0.3",revision:this.file_version,name:this.grid.model.document_name,user_data:this.grid.model.user_data,decimal_mark:T.decimal_separator,...t};if(e.share_resources){let i=1,n=new Map,s=Array.isArray(r.sheet_data)?r.sheet_data:[r.sheet_data],a=l=>{let c=n.get(l);return c||(c=(i++).toString(),n.set(l,c)),`resource:${c}`};for(let l of s)if(l){l.background_image&&(l.background_image=a(l.background_image));for(let c of l.annotations||[])c.type==="image"&&c.data?.src&&(c.data.src=a(c.data.src))}let o={};for(let[l,c]of n.entries())o[c]=l;r.shared_resources=o}return e.rendered_values&&(r.rendered_values=!0),r}async Recalculate(e){let t;e&&e.type==="data"&&e.area&&(t=e.area),this.calculator.Calculate(t),this.grid.Update(!0),this.UpdateAnnotations(),this.Publish({type:"data"}),this.grid.UpdateStats()}SaveLocalStorage(e=this.options.local_storage){if(!e){console.warn("not saving, no key");return}let t=JSON.stringify(this.SerializeDocument({rendered_values:!0,expand_arrays:!0}));localStorage.setItem(e,t)}Undo(){if(this.parent_view)return this.parent_view.Undo();if(this.undo_pointer<=1){console.warn("nothing to undo");return}let e=this.undo_stack[--this.undo_pointer-1],t=e.selection?JSON.parse(e.selection):void 0;this.LoadDocument(JSON.parse(e.data),{flush:!1,override_selection:t,source:"undo"})}About(){this.dialog?.ShowDialog({type:"about"})}ScrollTo(e,t={}){if(typeof e=="string"){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=L(r)?r:r.start}t={x:!0,y:!0,smooth:!1,...t},this.grid.ScrollTo(e,t.x,t.y,t.smooth)}Resolve(e){let t=this.calculator.ResolveAddress(e,this.grid.active_sheet);return L(t)?t.sheet_id?t:void 0:t.start.sheet_id?t:void 0}Evaluate(e,t={}){return this.calculator.Evaluate(e,this.grid.active_sheet,t)}GetSelection(e=!0){let t=this.grid.GetSelection();if(t.empty)return"";let r="";if(t.area.count>1?r=v.CellAddressToLabel(t.area.start)+":"+v.CellAddressToLabel(t.area.end):r=v.CellAddressToLabel(t.area.start),!e)return r;let i=t.area.start.sheet_id||this.grid.active_sheet.id,n=this.ResolveSheetName(i,!0);return n?n+"!"+r:r}ParseNumber(e){return be.TryParse(e).value}FormatNumber(e,t="General"){return M.Get(t).Format(e)}ApplyBorders(e,t,r=1){this.grid.ApplyBorders2(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0,t,{},r)}ApplyStyle(e,t={},r=!0){this.grid.ApplyStyle(e?this.calculator.ResolveArea(e,this.grid.active_sheet):void 0,t,r)}ClearName(e){this.grid.SetName(e)}DefineName(e,t){if(typeof t>"u"||t===null)throw new Error("invalid value (null or undefined)");if(typeof t=="object"&&(L(t)||qr(t))){this.grid.SetName(e,this.calculator.ResolveArea(t,this.grid.active_sheet));return}if(typeof t=="string"){let r=this.parser.Parse(t);if(!r.expression)throw new Error("invalid expression");switch(r.expression.type){case"address":case"range":this.grid.SetName(e,this.calculator.ResolveArea(r.expression,this.grid.active_sheet));return}this.grid.SetName(e,void 0,t)}else this.grid.SetName(e,void 0,t.toString())}SetLink(e,t=""){if(typeof e=="string"){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);e=L(r)?r:r.start}if(!e){let r=this.GetSelectionReference();if(r.empty)return;e=r.target}this.grid.SetLink(e,t)}Select(e){let t=this.calculator.ResolveArea(e,this.grid.active_sheet);t.start.sheet_id&&t.start.sheet_id!==this.grid.active_sheet.id&&this.grid.ActivateSheetID(t.start.sheet_id),this.grid.SelectRange(t)}GetRange(e,t={}){if(!e){let r=this.GetSelectionReference();r.empty||(e=r.area)}if(e)return t.type||(t.formatted&&(t.type="formatted"),t.formula&&(t.type="formula")),this.grid.GetRange(this.calculator.ResolveAddress(e,this.grid.active_sheet),t.type)}GetStyle(e,t=!1){if(!e){let r=this.GetSelectionReference();r.empty||(e=r.area)}if(e)return this.grid.GetRangeStyle(this.calculator.ResolveAddress(e,this.grid.active_sheet),t)}SetRange(e,t=void 0,r={}){if(!e){let i=this.GetSelectionReference();i.empty||(e=i.area)}if(e){let i=this.calculator.ResolveArea(e,this.grid.active_sheet);if(r.spill&&Array.isArray(t)){let n=t.length,s=Math.max(0,...t.map(o=>o.length)),a={row:i.start.row+n+1,column:i.start.column+s+1};i.ConsumeAddress(a)}return this.grid.SetRange(i,t,r)}}Subscribe(e){return this.events.Subscribe(e)}Cancel(e){this.events.Cancel(e)}ResolveTable(e){let t;if(typeof e=="string"){let r=e.toLowerCase();this.model.tables.has(r)&&(t=this.model.tables.get(r))}if(!t){let r=this.calculator.ResolveAddress(e,this.grid.active_sheet);L(r)||(r=r.start),t=this.grid.GetTableReference(r)}return t}Unresolve(e,t=!0,r=!0){let i="",n=L(e)?new v(e):new v(e.start,e.end);if(r){let o=this.model.named_ranges.MatchSelection(n);if(o)return o}if(n.count>1?i=v.CellAddressToLabel(n.start)+":"+v.CellAddressToLabel(n.end):i=v.CellAddressToLabel(n.start),!t)return i;let s=n.start.sheet_id||this.grid.active_sheet.id,a=this.ResolveSheetName(s,!0);return a?a+"!"+i:i}SaveAs(e,t){let r=document.createElement("a");r.href=URL.createObjectURL(e),r.download=t,r.click(),URL.revokeObjectURL(r.href)}Publish(e){this.events.Publish(e)}async ImportXLSX(e,t){return this.parent_view?this.parent_view.ImportXLSX(e,t):(this.export_worker||(this.export_worker=await this.LoadWorker("export")),new Promise((r,i)=>{this.export_worker?(this.dialog?.ShowDialog({message:"Importing XLSX..."}),this.export_worker.onmessage=n=>{if(n.data){if(n.data.status==="error")return i(n.data.error||"unknown error");this.grid.FromImportData(n.data.results),this.ResetInternal(),this.grid.Update(),this.UpdateAC(),this.calculator.AttachModel(),this.Publish({type:"load",source:t}),this.UpdateDocumentStyles(),this.InflateAnnotations()}else return i("unknown error (missing data)");this.dialog?.HideDialog(),r()},this.export_worker.onerror=n=>{console.error("import worker error"),console.info(n),i(n)},this.export_worker.postMessage({command:"import",data:e})):i("worker failed")}))}ResetInternal(){this.calculator.Reset(),this.FlushUndo(),this.file_version=this.last_save_version=0}HandleCellEvent(e){if(e.data?.type==="hyperlink"){let r="hyperlink invalid target",i=e.data.data||"";if(typeof i=="string"){if(/^https{0,1}:\/\//i.test(i)){if(!this.options.hyperlinks){console.warn("hyperlinks are disabled");return}let n=document.createElement("a");n.setAttribute("target",this.options.hyperlinks),n.setAttribute("href",i),n.setAttribute("noreferrer","true"),n.setAttribute("nofollow","true"),n.click();return}else{let n=this.parser.Parse(i);if(n.expression){if(n.expression.type==="address"){(n.expression.sheet||n.expression.sheet_id)&&this.ActivateSheet(n.expression.sheet||n.expression.sheet_id),this.Select(i);return}else if(n.expression.type==="range"){(n.expression.start.sheet||n.expression.start.sheet_id)&&this.ActivateSheet(n.expression.start.sheet||n.expression.start.sheet_id),this.Select(i);return}}}console.warn(r,2);return}}}OnSheetChange(e){for(let t of e.activate.annotations)this.InflateAnnotation(t),this.calculator.UpdateAnnotations(t,e.activate);this.UpdateAnnotations()}HandleDrag(e){if(e.dataTransfer&&e.dataTransfer.types){if(e.dataTransfer.types.some&&e.dataTransfer.types.some(t=>t==="Files"))e.preventDefault();else for(let t=0;t<e.dataTransfer.types.length;t++)if(e.dataTransfer.types[t]==="files"){e.preventDefault();return}}}HandleDrop(e){if(e.dataTransfer&&e.dataTransfer.files&&e.dataTransfer.files.length){e.preventDefault();let t=e.dataTransfer.files[0];/^image/.test(t.type)?this.InsertImageInternal(t):this.LoadFileInternal(t,"drag-and-drop").catch(()=>{})}}SelectFile2(e,t){if(!this.file_chooser){this.file_chooser=document.createElement("input"),this.file_chooser.type="file";let r=this.file_chooser;r.addEventListener("change",()=>{if(r.files&&r.files[0]){let i=r.files[0];switch(r.value="",this.file_chooser_operation){case 2:this.InsertImageInternal(i);break;case 1:this.LoadFileInternal(i,"local-file",!0);break;default:console.warn("file chooser: no operation");break}}})}if(!this.file_chooser)throw new Error("could not create file chooser");this.file_chooser_operation=t,this.file_chooser.accept=e||"",this.file_chooser.click()}async InsertImageInternal(e){if(this.options.max_file_size&&e.size>this.options.max_file_size){this.dialog?.ShowDialog({type:"error",message:"This file exceeds the allowed image size. Please try a smaller image.",title:"Error adding image",timeout:3e3,close_box:!0});return}let t=e;await new Promise((r,i)=>{let n=new FileReader;n.onload=async()=>{try{if(n.result){let s;if(typeof n.result=="string")s=n.result;else{s="";let l=new Uint8Array(n.result);for(let c=0;c<l.byteLength;c++)s+=String.fromCharCode(l[c])}let a=document.createElement("img");a.src=s,await Promise.resolve();let o=this.grid.CreateAnnotation({type:"image",formula:"",data:{scale:"",src:s,original_size:{width:a.width||300,height:a.height||300}}},void 0,void 0,{top:30,left:30,width:a.width||300,height:a.height||300})}r()}catch(s){i(s)}},n.onabort=()=>{i("Aborted")},n.onerror=()=>{i("File error")},setTimeout(()=>{n.readAsDataURL(t)},100)})}LoadFileInternal(e,t,r=!0){if(!e)return Promise.resolve();let i=new FileReader;return new Promise((n,s)=>{let a=o=>{i.onload=null,i.onabort=null,i.onerror=null,o?(r&&(this.dialog?.ShowDialog({title:"Error reading file",close_box:!0,message:"Please make sure your file is a valid XLSX, CSV or TREB file.",type:"error",timeout:3e3}),console.error(o)),s(o)):n()};i.onload=()=>{try{if(i.result)if(/\.csv$/i.test(e.name))this.LoadCSV(i.result,t);else if(/\.xls[xm]$/i.test(e.name)){let o;if(typeof i.result=="string")o=i.result;else{o="";let l=new Uint8Array(i.result);for(let c=0;c<l.byteLength;c++)o+=String.fromCharCode(l[c])}this.ImportXLSX(o,t).then(()=>a()).catch(l=>a(l));return}else{let o=JSON.parse(i.result);this.LoadDocument(o,{source:t})}a()}catch(o){a(o?.toString())}},i.onabort=()=>{a("Aborted")},i.onerror=()=>{a("File error")},setTimeout(()=>{/\.xlsx$/i.test(e.name)?i.readAsBinaryString?i.readAsBinaryString(e):i.readAsArrayBuffer(e):i.readAsText(e)},100)})}UpdateAnnotations(){for(let e of this.grid.active_sheet.annotations){if(e.temp.vertex){let r=e.temp.vertex;if(r.state_id!==e.temp.state){e.temp.state=r.state_id;for(let i of e.view)i.dirty=!0}}let t=e.view[this.grid.view_index]||{};t.dirty&&(t.update_callback&&t.update_callback(),this.grid.AnnotationUpdated(e))}}RebuildAllAnnotations(){for(let e of this.grid.active_sheet.annotations){this.InflateAnnotation(e);let t=e.view[this.grid.view_index]||{};t.resize_callback&&t.resize_callback(),t.update_callback&&t.update_callback()}}InflateAnnotations(){for(let e of this.grid.active_sheet.annotations)this.InflateAnnotation(e)}InflateAnnotation(e){if(this.grid.headless)return;let t=e.view[this.grid.view_index]||{};if(t.inflated){e.dirty&&(t.resize_callback&&t.resize_callback(),e.dirty=!1);return}if(t.inflated=!0,e.dirty&&(e.dirty=!1),t.content_node){if(e.data.type==="treb-chart"){let r=this.CreateChart();r.Initialize(t.content_node);let i=()=>{if(e.data.formula){let n=this.parser.Parse(e.data.formula);if(n&&n.expression&&n.expression.type==="call"){this.parser.Walk(n.expression,o=>((o.type==="address"||o.type==="range")&&this.calculator.ResolveSheetID(o,void 0,this.grid.active_sheet),!0));let s=n.expression.name.toLowerCase(),a=this.calculator.CalculateExpression(n.expression);r.Exec(s,a)}}r.Update()};t.resize_callback=()=>{this.grid.headless||(r.Resize(),r.Update())},t.update_callback=()=>{this.grid.headless||i()},t.node?.parentElement&&(this.grid.headless||i())}else if(e.data.type==="image"&&typeof e.data.data?.src=="string"){let r=Rt(e.data.data.src);if(r){let i=document.createElement("img");i.src=r,e.data.data.scale==="fixed"?(i.style.position="relative",i.style.left="50%",i.style.top="50%",i.style.transform="translate(-50%, -50%)"):(i.style.width="100%",i.style.height="100%"),t.content_node.appendChild(i)}}}}DocumentChange(e){re().then(()=>{this.file_version++,this.file_version>=65536&&(this.file_version=1);let t=JSON.stringify(this.SerializeDocument({optimize:"size",rendered_values:!0,expand_arrays:!0}));this.options.local_storage&&localStorage.setItem(this.options.local_storage,t),this.options.undo&&this.PushUndo(t,e,!1),this.Publish({type:"document-change"})})}ResolveStorageKey(e,t=""){if(e){if(e===!0){let r=0,i=document.location.href;for(let s=0,a=i.length;s<a;s++)r=(r<<5)-r+i.charCodeAt(s),r|=0;let n=Math.abs(r).toString(16);return t?t+"-"+n:n}return e}}PushUndo(e,t,r=!0){let i=t||this.last_selection;this.undo_stack[this.undo_pointer-1]&&(this.undo_stack[this.undo_pointer-1].selection=i),r&&(this.file_version++,this.file_version>=65536&&(this.file_version=1)),e||(e=JSON.stringify(this.SerializeDocument({optimize:"size",rendered_values:!0,expand_arrays:!0}))),this.undo_stack[this.undo_pointer++]={data:e,selection:void 0};let n=this.undo_stack.length;if(n>16){let s=n-16;this.undo_stack=this.undo_stack.slice(s),this.undo_pointer-=s}}FlushUndo(e=!0){this.undo_stack=[],this.undo_pointer=0,this.last_save_version=this.file_version,e&&this.PushUndo(void 0,void 0,!1)}UpdateSelection(e){this.last_selection=JSON.stringify(e),this.Publish({type:"selection"})}UpdateSelectionStyle(e){let t=this.grid.GetFreeze(),r={frozen:!!t.rows||!!t.columns};if(e||(e=this.grid.GetSelection()),e&&!e.empty){r.selection=e;let i=this.grid.active_sheet.CellData(e.target);r.table=!!i.table,r.merge=!!i.merge_area,r.merge&&i.merge_area&&(i.merge_area.start.row!==e.target.row||i.merge_area.start.column!==e.target.column)&&(i=this.grid.active_sheet.CellData(i.merge_area.start)),r.comment=i.note,r.style=i.style?{...i.style}:void 0,r.relative_font_size=k.RelativeFontSize(r.style||{},this.grid.theme.grid_cell||{})}this.selection_state=r}UpdateDocumentStyles(e=!0){let t={},r={};for(let n of this.grid.model.sheets.list)n.NumberFormatsAndColors(r,t);this.document_styles.colors=Object.keys(r),this.document_styles.number_formats=Object.keys(t),this.document_styles.theme_colors=[];let i=[.5,.25,0,-.25,-.5];for(let n=0;n<10;n++)this.document_styles.theme_colors.push(i.map(s=>{let a={theme:n,tint:s},o=R(this.grid.theme,a);return{color:a,resolved:o}}))}ConvertLocale(e){let t=new We;t.flags={...this.parser.flags};let r,i;e.decimal_mark==="."?(t.decimal_mark=".",t.argument_separator=",",r=",",i=";"):(t.decimal_mark=",",t.argument_separator=";",r=".",i=",");let n=s=>{let a=t.Parse(s);if(a.expression)return"="+t.Render(a.expression,{missing:"",convert_decimal:r,convert_argument_separator:i})};if(e.macro_functions)for(let s of e.macro_functions){let a=n(s.function_def);a&&(s.function_def=a)}if(e.sheet_data){let s=Array.isArray(e.sheet_data)?e.sheet_data:[e.sheet_data];for(let a of s){if(a.annotations){for(let o of a.annotations)if(o.formula){let l=n(o.formula);l&&(o.formula=l)}}if(a.data?.length)for(let o of a.data){let l=ar(o)?[o]:o.cells;for(let c of l)if(c.value&&typeof c.value=="string"&&c.value[0]==="="){let h=n(c.value.slice(1));h&&(c.value=h)}}}}}CompareVersions(e="",t=""){let r=e.split(".").map(a=>Number(a)||0).concat([0,0,0]),i=t.split(".").map(a=>Number(a)||0).concat([0,0,0]),n=[0,1,2],s={match:0};for(let a=0;a<3;a++)if(r[a]!==i[a]){s.match=r[a]>i[a]?1:-1,s.level=n[a];break}return s}ImportDocumentData(e,t){this.file_version=e.revision||0;let r=[],i=this.CompareVersions(e.version,"26.0.3");if(i.match>0&&(i.level===0||i.level===1)&&console.warn(`The file you are opening was created with a newer version of TREB (${e.version} vs 26.0.3).
14
+ You may encounter compatibility errors.`),e.sheet_data&&(Array.isArray(e.sheet_data)?r=e.sheet_data:r.push(e.sheet_data)),e.shared_resources){let a=e.shared_resources,o=l=>/^resource:/.test(l)?a[l.substring(9)]||"":l;for(let l of r){l.background_image&&(l.background_image=o(l.background_image));for(let c of l.annotations||[])c.type==="image"&&c.data?.src&&(c.data.src=o(c.data.src))}}e.decimal_mark&&e.decimal_mark!==T.decimal_separator&&this.ConvertLocale(e);let n=this.grid.model;if(n.tables.clear(),e.tables)for(let a of e.tables)n.tables.set(a.name.toLowerCase(),a);this.grid.UpdateSheets(r,void 0,t||e.active_sheet);for(let[a,o]of this.model.tables.entries())if(o.area.start.sheet_id){let l=n.sheets.Find(o.area.start.sheet_id);if(l)for(let c=o.area.start.row;c<=o.area.end.row;c++)for(let h=o.area.start.column;h<=o.area.end.column;h++){let u=l.cells.GetCell({row:c,column:h},!0);u.table=o}}n.document_name=e.name,n.user_data=e.user_data,n.named_ranges.Reset();let s=e.named_ranges;if(!s&&r[0]&&r[0].named_ranges&&(s=r[0].named_ranges),s&&n.named_ranges.Deserialize(s),n.named_expressions.clear(),e.named_expressions)for(let a of e.named_expressions){let o=this.parser.Parse(a.expression);o.valid&&o.expression&&(this.parser.Walk(o.expression,l=>{if(l.type==="address"||l.type==="range"){if(l.type==="range"&&(l=l.start),!l.sheet_id&&l.sheet){let c=this.model.sheets.Find(l.sheet);c&&(l.sheet_id=c.id)}return l.sheet_id||(l.sheet_id=this.grid.active_sheet.id),!1}return!0}),n.named_expressions.set(a.name.toUpperCase(),o.expression))}if(n.macro_functions.clear(),e.macro_functions)for(let a of e.macro_functions)n.macro_functions.set(a.name.toUpperCase(),{...a,expression:this.parser.Parse(a.function_def||"").expression});this.UpdateAC()}async LoadWorker(e){if(Xr)try{return new Worker(URL.createObjectURL(new Blob([Qr],{type:"application/javascript"})))}catch(t){console.info("embedded worker failed"),console.error(t)}throw new Error("creating worker failed")}HandleKeyDown(e){e.ctrlKey&&(e.code==="KeyZ"||e.key==="z")&&(e.stopPropagation(),e.preventDefault(),this.Undo())}ResolveSheetName(e,t=!1){let r=this.model.sheets.Find(e);if(r)return t&&lt.test(r.name)?`'${r.name}'`:r.name}},ze=vt;ze.treb_base_path="",ze.treb_embedded_script_path="",ze.enable_engine=!1,ze.enable_formatter=!1,ze.one_time_warnings={};var Ki=`@charset "UTF-8";.treb-main .treb-mouse-mask{background:transparent;bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:9999}.treb-main .treb-mouse-mask.column-resize{cursor:col-resize}.treb-main .treb-mouse-mask.row-resize{cursor:row-resize}.treb-main .treb-mouse-mask.nub-select{cursor:crosshair}.treb-main .treb-mouse-mask.move{cursor:move}.treb-main .treb-mouse-mask.nw-resize{cursor:nw-resize}.treb-main .treb-note{max-width:15em;min-width:15em}.treb-main .treb-hover-title,.treb-main .treb-note{background:var(--treb-note-background,#fff);border:1px solid var(--treb-note-border-color,var(--treb-ui-border-color,#ddd));border-radius:2px;box-shadow:0 1px 4px 2px hsla(0,0%,43%,.2);color:var(--treb-note-color,#333);font-family:BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,"sans-serif";font-size:10.5pt;left:100px;line-height:normal;opacity:0;padding:7px 10px;position:fixed;top:100px;transition:opacity .2s;white-space:pre-line;z-index:39}.treb-main .treb-hover-title{min-width:10em;pointer-events:none}.treb-main .treb-sort-button{background:#fff;border:1px solid #ccc;border-radius:2px;height:1em;left:100px;opacity:0;pointer-events:none;position:absolute;top:100px;transition:opacity .1s ease;width:1em;z-index:39}.treb-main .treb-sort-button:after{box-sizing:border-box}.treb-main .treb-sort-button.asc:after{border:.4em solid transparent;border-top-color:currentcolor;transform:translate(-50%,-25%)}.treb-main .treb-sort-button.asc:after,.treb-main .treb-sort-button.desc:after{content:"";height:.8em;left:50%;opacity:.5;position:absolute;top:50%;width:.8em}.treb-main .treb-sort-button.desc:after{border:.4em solid transparent;border-bottom-color:currentcolor;transform:translate(-50%,-80%)}.treb-main .treb-tooltip{border-radius:2px;box-shadow:0 1px 4px 2px hsla(0,0%,43%,.2);display:none;line-height:normal;padding:2px 10px;pointer-events:none;position:fixed;z-index:39}.treb-main .treb-tooltip.arrow-up:after{border:4px solid transparent;border-bottom-color:inherit;left:calc(50% - 4px);top:-8px}.treb-main .treb-tooltip.arrow-left:after,.treb-main .treb-tooltip.arrow-up:after{box-sizing:border-box;content:" ";height:8px;overflow:hidden;position:absolute;width:8px}.treb-main .treb-tooltip.arrow-left:after{border:4px solid transparent;border-right-color:inherit;left:-8px;top:calc(50% - 4px)}.treb-main .treb-dropdown-caret{background:var(--treb-dropdown-caret-background,#fff);border:1px solid var(--treb-dropdown-caret-border-color,#ccc);border-radius:2px;box-shadow:0 1px 4px 2px hsla(0,0%,43%,.2);display:none;height:20px;position:absolute;width:20px;z-index:39}.treb-main .treb-dropdown-caret path{fill:none;stroke:var(--treb-dropdown-caret-color,#444);stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.treb-main .treb-dropdown-list{background:var(--treb-dropdown-background,#fff);border:1px solid var(--treb-dropdown-border-color,unset);box-shadow:0 1px 4px 2px hsla(0,0%,43%,.2);color:var(--treb-dropdown-color,inherit);display:none;font-size:10pt;max-height:10em;outline:none;overflow-y:auto;position:absolute;text-align:left;z-index:39}.treb-main .treb-dropdown-list div{cursor:default;padding:2px}.treb-main .treb-dropdown-list div.selected{background:var(--treb-dropdown-selected-background,#555);color:var(--treb-dropdown-selected-color,#fff)}.treb-main .treb-dropdown-caret.active{background:var(--treb-dropdown-caret-active-background,#eee)}.treb-main .treb-dropdown-caret.active+.treb-dropdown-list{display:block}.treb-main .treb-error-highlight{background:rgba(255,0,0,.25);opacity:0;pointer-events:none;position:absolute;transition:opacity .15s ease-in-out;z-index:40}.treb-main .treb-autocomplete{box-sizing:border-box;font-size:inherit;font-weight:400;line-height:normal;max-height:10em;overflow-y:auto;position:fixed;text-align:left;top:-1000px;z-index:39}.treb-main .treb-autocomplete *{box-sizing:border-box}.treb-main .treb-autocomplete ul{list-style-type:none}.treb-main .treb-autocomplete ul,.treb-main .treb-autocomplete ul li{font-size:inherit;font-weight:inherit;margin:0;padding:0}.treb-main .treb-autocomplete ul li a{color:inherit;cursor:default;display:inline-block;font-size:inherit;font-weight:inherit;padding:3px 6px;text-decoration:none;width:100%}.treb-main .treb-autocomplete-tooltip{position:fixed;top:-1000px;white-space:pre;z-index:39}.treb-main .treb-formula-bar{display:flex;flex-direction:row;grid-area:1/1/2/2;max-width:100%;overflow-x:hidden;padding:0 2px 12px;text-align:left}.treb-main .treb-formula-bar[hidden]{display:none}.treb-main .treb-formula-bar .treb-address-label{border:1px solid var(--treb-formula-bar-border-color,var(--treb-ui-border-color,#ccc));border-radius:2px;display:flex;flex-direction:column;height:1.75em;justify-content:center;margin-right:6px;min-height:1.5em;min-width:95px;padding-left:3px;width:95px}.treb-main .treb-formula-bar .treb-address-label>div{outline:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.treb-main .treb-formula-bar .expand-button{background:transparent;border:0;border-radius:2px;height:1.75em;margin-left:2px;outline:none;padding:1px}.treb-main .treb-formula-bar .expand-button:after{border:5px solid transparent;border-top-color:#999;content:" ";display:inline-block;margin:0;padding:0;position:relative;top:-6px;transition:transform .15s ease}.treb-main .treb-formula-bar[expanded] .expand-button:after{transform:rotate(180deg) translateY(6px)}.treb-main .treb-formula-bar .treb-editor-container{border:1px solid var(--treb-formula-bar-border-color,var(--treb-ui-border-color,#ccc));border-radius:2px;display:flex;flex-direction:column;flex-grow:1;height:1.75em;justify-content:center;min-width:0}.treb-main .treb-formula-bar[expanded] .treb-editor-container{height:4.5em;transition:height .1s ease-in-out}.treb-main .treb-formula-bar[expanded] .treb-editor-container>div{overflow-y:auto}.treb-main .treb-formula-bar .treb-editor-container>div{flex-grow:1;line-height:1.35;margin:2px;min-height:1em;outline:none;overflow-x:hidden;overflow-y:hidden;width:100%}.treb-main .treb-formula-bar .formula-button{border:1px solid #ccc;border-radius:2px;height:1.75em;margin-left:6px;overflow:hidden;white-space:nowrap}.treb-main .treb-formula-bar .formula-button .text-1{font-style:italic;padding-right:.1em}.treb-main .treb-formula-bar .formula-button .text-1:after{content:"f"}.treb-main .treb-formula-bar .formula-button .text-2{font-size:.7em}.treb-main .treb-formula-bar .formula-button .text-2:after{content:"(x)"}.treb-main .treb-mouse-mask .ghost-tab{position:fixed}.treb-main .treb-spreadsheet-footer{align-items:center;grid-area:3/1/4/2}.treb-main .treb-spreadsheet-footer,.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs{color:var(--treb-ui-color,inherit);display:flex;flex-direction:row;height:2.2em;list-style-type:none;max-width:100%;padding-inline-start:0;z-index:2}.treb-main .treb-spreadsheet-footer[hidden]{display:none}.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li{display:inline-block;position:relative}.treb-main .treb-spreadsheet-footer .treb-add-tab,.treb-main .treb-spreadsheet-footer .treb-delete-tab,.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li{align-items:center;border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top-width:1px;border:1px solid var(--treb-tab-bar-tab-border-color,var(--treb-ui-border-color,#ccc));border-top:0 solid var(--treb-tab-bar-tab-border-color,var(--treb-ui-border-color,#ccc));color:var(--treb-tab-bar-tab-color,var(--treb-ui-color,#fff));cursor:default;display:inline-flex;font-size:inherit;height:100%;justify-content:center;margin-right:-2px;overflow:hidden;padding:0 .75em;z-index:1}.treb-main .treb-spreadsheet-footer .treb-add-tab:active,.treb-main .treb-spreadsheet-footer .treb-add-tab:focus,.treb-main .treb-spreadsheet-footer .treb-delete-tab:active,.treb-main .treb-spreadsheet-footer .treb-delete-tab:focus,.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li:active,.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li:focus{z-index:3}.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li{overflow-x:hidden;white-space:nowrap}.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li[selected]{z-index:2}.treb-main .treb-spreadsheet-footer .treb-scale-control{align-items:center;display:flex;flex-direction:row;font-size:inherit;height:2.2em;justify-content:center;position:relative;width:5em}.treb-main .treb-spreadsheet-footer .treb-scale-control .treb-scale-input{background:transparent;border:1px solid transparent;border-radius:2px;color:inherit;font-family:inherit;font-size:inherit;padding:initial;text-align:center;transition:border-color .25s ease,background-color .25s ease;width:4em}.treb-main .treb-spreadsheet-footer .treb-scale-control .treb-slider-container{accent-color:var(--treb-scale-slider-accent-color,undefined);align-items:center;background:var(--treb-scale-slider-background,#fff);border:1px solid var(--treb-scale-slider-border-color,var(--treb-ui-border-color,#ccc));display:flex;flex-direction:row;height:4em;justify-content:center;left:.5em;opacity:0;pointer-events:none;position:absolute;top:0;transform:rotate(-90deg);transform-origin:left top;transition:opacity .25s ease;width:10em;z-index:40}.treb-main .treb-spreadsheet-footer .treb-scale-control .treb-scale-input:focus,.treb-main .treb-spreadsheet-footer .treb-scale-control:hover .treb-scale-input{border-color:var(--treb-ui-border-color,#ccc)}.treb-main .treb-spreadsheet-footer .treb-scale-control .treb-slider-container>input[type=range]{width:8.5em}.treb-main .treb-spreadsheet-footer .treb-scale-control .treb-scale-input:focus+.treb-slider-container,.treb-main .treb-spreadsheet-footer .treb-scale-control .treb-slider-container:focus-within,.treb-main .treb-spreadsheet-footer .treb-scale-control:hover .treb-slider-container{opacity:.85;pointer-events:auto}.treb-main .treb-spreadsheet-footer .treb-delete-tab{align-items:center;background:transparent;border:none;border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top:0;color:currentColor;cursor:default;display:inline-flex;flex-direction:row;font-size:inherit;margin-right:-2px;padding:.25em .75em;z-index:1}.treb-main .treb-spreadsheet-footer .treb-delete-tab svg{height:1em;opacity:.75;pointer-events:none;transition:opacity .125s ease-in-out;width:1em}.treb-main .treb-spreadsheet-footer .treb-delete-tab:hover svg{opacity:.75}.treb-main .treb-spreadsheet-footer .treb-delete-tab path{stroke:currentColor;stroke-width:1.5px;stroke-linecap:round}.treb-main .treb-spreadsheet-footer .treb-delete-tab:active,.treb-main .treb-spreadsheet-footer .treb-delete-tab:focus{z-index:3}.treb-main .treb-spreadsheet-footer .treb-stats-panel{margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.treb-main .treb-spreadsheet-footer .treb-stats-panel>*{margin-left:.5em}.treb-main .treb-spreadsheet-footer .treb-stats-panel .treb-stats-value{background:var(--treb-stats-value-background,#f8f8ff);border:1px solid var(--treb-stats-value-border-color,var(--treb-ui-border-color,#ddd));border-radius:3px;padding:0 .3em}.treb-main .treb-grid .treb-overlay-container{margin:0;opacity:0;outline:none;padding:0;position:absolute;z-index:24}.treb-main .treb-grid .treb-overlay-container.align-right .treb-overlay-inset{padding-right:3px;right:0;text-align:right}.treb-main .treb-grid .treb-overlay-container.align-center .treb-overlay-inset{left:50%;text-align:center;transform:translateX(-50%)}.treb-main .treb-grid .treb-overlay-inset{display:flex;flex-direction:column;height:100%;justify-content:flex-end;margin:0;min-width:100%;padding:0 4px;position:absolute}.treb-main .treb-grid .treb-overlay-editor{outline:none;position:relative;white-space:nowrap}.treb-main .treb-grid .treb-overlay-editor.firefox:before{content:"\u200B"}.treb-main .treb-buffer-canvas{display:none;position:absolute}.treb-main .treb-spreadsheet-body{-webkit-overflow-scrolling:touch;display:flex;grid-area:2/1/3/2;overflow:hidden;z-index:1}.treb-main .treb-grid,.treb-main .treb-spreadsheet-body{-webkit-tap-highlight-color:transparent;position:relative}.treb-main .treb-grid{-webkit-overflow-scrolling:touch;display:grid;flex-grow:1;grid-template-columns:100px auto;grid-template-rows:20px auto;order:2;outline:none;overflow:scroll}.treb-main .treb-grid .tile-cover.grid-cover{grid-area:2/2/3/3}.treb-main .treb-grid .tile-cover.column-header-cover{grid-area:1/2/2/3;position:-webkit-sticky;position:sticky;top:0}.treb-main .treb-grid .tile-cover.row-header-cover{grid-area:2/1/3/2;left:0;position:-webkit-sticky;position:sticky}.treb-main .treb-grid .treb-grid-selection{grid-area:1/1/2/2}.treb-main .treb-grid .treb-corner{grid-area:1/1/2/2;position:-webkit-sticky;position:sticky}.treb-main .treb-grid .treb-left-header{display:grid;grid-area:2/1/3/2;grid-template-columns:auto;grid-template-rows:auto;position:-webkit-sticky;position:sticky}.treb-main .treb-grid .treb-top-header{display:grid;grid-area:1/2/2/3;grid-template-columns:auto;grid-template-rows:auto;position:-webkit-sticky;position:sticky}.treb-main .treb-grid .treb-contents{display:grid;grid-area:2/2/3/3;grid-template-columns:auto;grid-template-rows:auto}.treb-main .treb-grid.safari::-webkit-scrollbar{-webkit-appearance:none;height:7px;width:7px}.treb-main .treb-grid.safari::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.25);border-radius:4px;-webkit-box-shadow:0 0 1px hsla(0,0%,100%,.5)}.treb-main .treb-grid canvas{background:transparent;border:0;margin:0;padding:0}.treb-main .treb-grid .nub-select{cursor:crosshair}.treb-main .treb-grid .link-pointer{cursor:pointer}.treb-main .treb-grid .mock-selection-node{background:red;left:-100px;position:fixed;top:-100px}.treb-main .treb-grid .tile-cover{background:transparent;position:relative;z-index:14}.treb-main .treb-grid .tile-cover.column-header-cover{z-index:22}.treb-main .treb-grid .tile-cover.column-header-cover.resize{cursor:col-resize}.treb-main .treb-grid .tile-cover.row-header-cover{z-index:22}.treb-main .treb-grid .tile-cover.row-header-cover.resize{cursor:row-resize}.treb-main .treb-grid .frozen-annotation-container,.treb-main .treb-grid .treb-annotation-container{left:0;pointer-events:none;position:absolute;top:0;z-index:16}.treb-main .treb-grid .frozen-annotation-container .annotation,.treb-main .treb-grid .treb-annotation-container .annotation{background:hsla(0,0%,100%,.5);border:1px solid #999;overflow:hidden;pointer-events:auto;position:absolute;z-index:1}.treb-main .treb-grid .frozen-annotation-container .annotation .annotation-content,.treb-main .treb-grid .treb-annotation-container .annotation .annotation-content{font-family:inherit;font-size:inherit;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.treb-main .treb-grid .frozen-annotation-container .annotation .annotation-move-target,.treb-main .treb-grid .treb-annotation-container .annotation .annotation-move-target{cursor:move;height:10%;left:0;min-height:14px;position:absolute;top:0;width:100%;z-index:2}.treb-main .treb-grid .frozen-annotation-container .annotation .annotation-resize-target,.treb-main .treb-grid .treb-annotation-container .annotation .annotation-resize-target{bottom:0;cursor:nwse-resize;height:10%;min-height:14px;min-width:14px;position:absolute;right:0;width:10%;z-index:3}.treb-main .treb-grid .frozen-annotation-container .annotation.clone-focus,.treb-main .treb-grid .frozen-annotation-container .annotation.retain-focus,.treb-main .treb-grid .frozen-annotation-container .annotation:focus,.treb-main .treb-grid .treb-annotation-container .annotation.clone-focus,.treb-main .treb-grid .treb-annotation-container .annotation.retain-focus,.treb-main .treb-grid .treb-annotation-container .annotation:focus{box-shadow:0 0 0 3px rgba(14,165,233,.33)}.treb-main .treb-grid .frozen-annotation-container .move-buffer,.treb-main .treb-grid .treb-annotation-container .move-buffer{border:1px solid red;cursor:move;height:10%;left:0;position:absolute;top:0;width:100%}.treb-main .treb-grid .treb-grid-selection{background:transparent;position:absolute;-moz-transform:scale(1);z-index:10}.treb-main .treb-grid .frozen-selection{overflow:hidden;pointer-events:none;position:absolute;-moz-transform:scale(1);transition:background .33s;z-index:12}.treb-main .treb-grid .frozen-selection.frozen-selection-rows{border-bottom:1px solid transparent}.treb-main .treb-grid .frozen-selection.frozen-selection-columns{border-right:1px solid transparent}.treb-main .treb-grid .frozen-annotation-container{height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.treb-main .treb-grid .treb-corner{left:0;top:0;z-index:20}.treb-main .treb-grid .treb-corner canvas{left:0;pointer-events:none;position:absolute;top:0}.treb-main .treb-grid .treb-left-header{left:0;pointer-events:none;z-index:18}.treb-main .treb-grid .treb-top-header{pointer-events:none;top:0;z-index:18}.treb-main .treb-grid .treb-contents{height:2000px;width:2000px}.treb-main:focus-within .treb-grid-selection .primary-selection,.treb-main:focus-within .treb-header-overlay{color:var(--treb-selection-color,#4caaf1)}.treb-main .theme-color-1{color:var(--treb-theme-color-1,#e7e6e6)}.treb-main .theme-color-2{color:var(--treb-theme-color-2,#44546a)}.treb-main .theme-color-3{color:var(--treb-theme-color-3,#4472c4)}.treb-main .theme-color-4{color:var(--treb-theme-color-4,#ed7d31)}.treb-main .theme-color-5{color:var(--treb-theme-color-5,#a5a5a5)}.treb-main .theme-color-6{color:var(--treb-theme-color-6,#ffc000)}.treb-main .theme-color-7{color:var(--treb-theme-color-7,#5b9bd5)}.treb-main .theme-color-8{color:var(--treb-theme-color-8,#70ad47)}.treb-main .theme-color-9{color:var(--treb-theme-color-9,#0563c1)}.treb-main .theme-color-10{color:var(--treb-theme-color-10,#954f72)}.treb-main .treb-offset-dark{color:#000}.treb-main .treb-offset-light{color:#fff}.treb-main .note-marker{background:var(--treb-note-marker-color,#6fab20)}.treb-main .grid-headers{stroke:var(--treb-grid-header-grid-color,var(--treb-grid-grid-color,#ccccd4));background:var(--treb-grid-header-background,#eeeef2);color:var(--treb-grid-header-color,var(--treb-grid-default-color,#666));font-family:var(--treb-grid-header-font-family,inherit);font-size:var(--treb-grid-header-font-size,10pt);font-style:var(--treb-grid-header-font-style,normal);font-weight:var(--treb-grid-header-font-weight,normal)}.treb-main .grid-cells{stroke:var(--treb-grid-grid-color,#ccccd4);background:var(--treb-grid-background,#fff);color:var(--treb-grid-default-color,inherit);font-family:var(--treb-grid-font-family,inherit);font-size:var(--treb-grid-font-size,14px)}.treb-main .frozen-selection.highlight-area{background:rgba(87,184,255,.25);border-bottom-color:#2176ae;border-left-color:#2176ae}.treb-main .treb-autocomplete-tooltip{background:var(--treb-autocomplete-tooltip-background,#fffbb5);border:1px solid var(--treb-autocomplete-tooltip-border-color,unset);border-radius:2px;color:var(--treb-autocomplete-tooltip-color,inherit);font-size:14px;line-height:normal;margin:4px 0;padding:3px 8px}.treb-main .treb-autocomplete-tooltip .active-argument{font-weight:700}.treb-main .treb-autocomplete-tooltip .function-description{font-style:italic}.treb-main .treb-autocomplete{background:var(--treb-autocomplete-background,#fff);border:1px solid var(--treb-autocomplete-border-color,var(--treb-ui-border-color,#ccc));border-radius:2px;box-shadow:0 1px 4px 2px hsla(0,0%,43%,.2);font-size:14px}.treb-main .treb-autocomplete li{color:var(--treb-autocomplete-entry-color,#333)}.treb-main .treb-autocomplete li a.selected{background:var(--treb-autocomplete-selected-entry-background,#2e8dd6);color:var(--treb-autocomplete-selected-entry-color,#fff)}.treb-main .treb-header-overlay{stroke:none;color:var(--treb-selection-color-unfocused,var(--treb-selection-color,#4caaf1))}.treb-main .treb-header-overlay .treb-overlay{fill:#000;stroke:none;opacity:.05}.treb-main .treb-header-overlay .treb-highlight{fill:currentColor}.treb-main .treb-editor-container>div span.highlight-1,.treb-main .treb-overlay-editor span.highlight-1{color:#fa9b05}.treb-main .treb-editor-container>div span.highlight-2,.treb-main .treb-overlay-editor span.highlight-2{color:#3aad3a}.treb-main .treb-editor-container>div span.highlight-3,.treb-main .treb-overlay-editor span.highlight-3{color:#b66d0d}.treb-main .treb-editor-container>div span.highlight-4,.treb-main .treb-overlay-editor span.highlight-4{color:#2176ae}.treb-main .treb-editor-container>div span.highlight-5,.treb-main .treb-overlay-editor span.highlight-5{color:#fe2f01}.treb-main .frozen-selection .selection,.treb-main .treb-grid-selection .selection{stroke-width:var(--treb-selection-stroke-width,2px)}.treb-main .frozen-selection .selection .outline,.treb-main .treb-grid-selection .selection .outline{stroke:currentColor;fill:none}.treb-main .frozen-selection .selection .fill,.treb-main .treb-grid-selection .selection .fill{stroke:none;fill:currentColor;opacity:var(--treb-selection-fill-opacity,.1)}.treb-main .frozen-selection .alternate-selection,.treb-main .treb-grid-selection .alternate-selection{stroke-dasharray:var(--treb-alternate-selection-dasharray,3 2)}.treb-main .frozen-selection .alternate-selection:nth-of-type(1n),.treb-main .treb-grid-selection .alternate-selection:nth-of-type(1n){color:#fbb13c}.treb-main .frozen-selection .alternate-selection:nth-of-type(2n),.treb-main .treb-grid-selection .alternate-selection:nth-of-type(2n){color:#40c040}.treb-main .frozen-selection .alternate-selection:nth-of-type(3n),.treb-main .treb-grid-selection .alternate-selection:nth-of-type(3n){color:#b66d0d}.treb-main .frozen-selection .alternate-selection:nth-of-type(4n),.treb-main .treb-grid-selection .alternate-selection:nth-of-type(4n){color:#2176ae}.treb-main .frozen-selection .alternate-selection:nth-of-type(5n),.treb-main .treb-grid-selection .alternate-selection:nth-of-type(5n){color:#fe6847}.treb-main .frozen-selection .primary-selection,.treb-main .treb-grid-selection .primary-selection{color:var(--treb-selection-color-unfocused,var(--treb-selection-color,#4caaf1))}.treb-main .frozen-selection .primary-selection .nub,.treb-main .treb-grid-selection .primary-selection .nub{stroke:#fff;fill:currentColor;stroke-width:1px}.treb-main .treb-tooltip{background:var(--treb-resize-tooltip-background,rgba(0,0,0,.8));border-color:var(--treb-resize-tooltip-background,rgba(0,0,0,.8));color:var(--treb-resize-tooltip-color,#fff);font-size:11pt}.treb-main .treb-spreadsheet-footer .treb-add-tab,.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li{background:var(--treb-tab-bar-tab-background,#eeeef2);color:var(--treb-tab-bar-tab-color,var(--treb-ui-color,inherit))}.treb-main .treb-spreadsheet-footer .treb-add-tab[selected],.treb-main .treb-spreadsheet-footer .treb-spreadsheet-tabs>li[selected]{background:var(--treb-tab-bar-active-tab-background,#fff);color:var(--treb-tab-bar-active-tab-color,var(--treb-ui-color,inherit))}.treb-main .treb-formula-bar .treb-address-label,.treb-main .treb-formula-bar .treb-editor-container{background:var(--treb-formula-bar-background,transparent);color:var(--treb-formula-bar-color,var(--treb-ui-color,inherit))}.treb-main .treb-formula-bar .treb-address-label[locked],.treb-main .treb-formula-bar .treb-editor-container[locked]{background:var(--treb-formula-bar-locked-background,#eef4fc);position:relative}.treb-main .treb-formula-bar .treb-address-label[locked]:after,.treb-main .treb-formula-bar .treb-editor-container[locked]:after{--icon:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath fill='currentColor' d='M416 224h-16v-80C400 65 335 0 256 0S112 65 112 144v80H96c-35 0-64 29-64 64v160c0 35 29 64 64 64h320c35 0 64-29 64-64V288c0-35-29-64-64-64Zm-240-80c0-44 36-80 80-80s80 36 80 80v80H176v-80Z'/%3E%3C/svg%3E");background:var(--treb-formula-bar-lock-icon-color,currentColor);content:"";height:12px;mask-image:var(--icon);-webkit-mask-image:var(--icon);mask-position:center;-webkit-mask-position:center;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:12px 12px;-webkit-mask-size:12px 12px;opacity:.4;position:absolute;right:2px;top:2px;width:12px}.treb-main.treb-ua-windows .grid-cells{font-family:var(--treb-grid-font-family-windows,var(--treb-grid-font-family,"Calibri","BlinkMacSystemFont","Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue","sans-serif"));font-size:var(--treb-grid-font-size-windows,var(--treb-grid-font-size,12pt))}.treb-main.treb-ua-osx .grid-cells{font-family:var(--treb-grid-font-family-osx,var(--treb-grid-font-family,inherit));font-size:var(--treb-grid-font-size-osx,var(--treb-grid-font-size,10pt))}.treb-dark-theme{--treb-autocomplete-background:#333;--treb-autocomplete-border-color:#fff;--treb-autocomplete-entry-color:#fff;--treb-autocomplete-selected-entry-background:darkred;--treb-autocomplete-tooltip-background:darkred;--treb-autocomplete-tooltip-border-color:#fff;--treb-autocomplete-tooltip-color:#fff;--treb-chart-background:#000;--treb-chart-grid-color:#976;--treb-chart-text-color:#fff;--treb-dialog-background:#000;--treb-dialog-color:#fff;--treb-dropdown-background:#000;--treb-dropdown-border-color:#fff;--treb-dropdown-caret-active-background:darkred;--treb-dropdown-caret-background:#444;--treb-dropdown-caret-border-color:#fff;--treb-dropdown-caret-color:#fff;--treb-dropdown-color:#fff;--treb-dropdown-selected-background:darkred;--treb-grid-background:#000;--treb-grid-default-color:#fff;--treb-grid-grid-color:#444;--treb-grid-header-background:#444;--treb-grid-header-grid-color:#000;--treb-note-background:#333;--treb-note-border-color:#aaa;--treb-note-color:#fff;--treb-note-marker-color:pink;--treb-resize-tooltip-background:#fff;--treb-resize-tooltip-color:#000;--treb-scale-slider-accent-color:#fff;--treb-scale-slider-background:#333;--treb-scale-slider-border-color:#aaa;--treb-selection-color:#ff0;--treb-selection-fill-opacity:.2;--treb-sidebar-button-background:#000;--treb-sidebar-button-border-color:#888;--treb-stats-value-background:#223;--treb-tab-bar-active-tab-background:#444;--treb-tab-bar-tab-background:#000;--treb-tab-bar-tab-color:#fff;--treb-theme-color-1:#222;--treb-theme-color-2:#ddd;--treb-toolbar-active-button-background:#555;--treb-toolbar-button-background:#000;--treb-toolbar-hover-button-background:#444;--treb-ui-color:#fff;--treb-table-header-background:#334;--treb-table-odd-background:#122;--treb-table-header-font-weight:700;--treb-table-header-border-top:#889;--treb-table-header-border-bottom:#889;--treb-table-footer-border-bottom:#889;--treb-table-odd-border-top:#889;--treb-table-odd-border-bottom:#889;--treb-table-even-border-top:#889;--treb-table-even-border-bottom:#889;--treb-table-total-border-top:#889;--treb-table-total-border-bottom:#889;--treb-table-total-background:#334;--treb-table-total-font-weight:700;--treb-color-scheme:dark;--treb-resize-handle-color:#add8e6;--treb-resize-frame-color:#add8e6;--treb-formula-bar-locked-background:#234;--treb-grid-background:#1e1e1e;--treb-grid-header-background:#565656;--treb-grid-header-color:#ddd;--treb-tab-bar-active-tab-background:field;--treb-tab-bar-tab-background:transparent;--treb-tab-bar-tab-border-color:#444;--treb-ui-border-color:#aaa;--treb-toolbar-button-background:#565656;--treb-toolbar-button-background:#212121;--treb-toolbar-border-color:#434343;--treb-toolbar-color:#ddd}@media (prefers-color-scheme:dark){.treb-light-dark-theme{--treb-autocomplete-background:#333;--treb-autocomplete-border-color:#fff;--treb-autocomplete-entry-color:#fff;--treb-autocomplete-selected-entry-background:darkred;--treb-autocomplete-tooltip-background:darkred;--treb-autocomplete-tooltip-border-color:#fff;--treb-autocomplete-tooltip-color:#fff;--treb-chart-background:#000;--treb-chart-grid-color:#976;--treb-chart-text-color:#fff;--treb-dialog-background:#000;--treb-dialog-color:#fff;--treb-dropdown-background:#000;--treb-dropdown-border-color:#fff;--treb-dropdown-caret-active-background:darkred;--treb-dropdown-caret-background:#444;--treb-dropdown-caret-border-color:#fff;--treb-dropdown-caret-color:#fff;--treb-dropdown-color:#fff;--treb-dropdown-selected-background:darkred;--treb-grid-background:#000;--treb-grid-default-color:#fff;--treb-grid-grid-color:#444;--treb-grid-header-background:#444;--treb-grid-header-grid-color:#000;--treb-note-background:#333;--treb-note-border-color:#aaa;--treb-note-color:#fff;--treb-note-marker-color:pink;--treb-resize-tooltip-background:#fff;--treb-resize-tooltip-color:#000;--treb-scale-slider-accent-color:#fff;--treb-scale-slider-background:#333;--treb-scale-slider-border-color:#aaa;--treb-selection-color:#ff0;--treb-selection-fill-opacity:.2;--treb-sidebar-button-background:#000;--treb-sidebar-button-border-color:#888;--treb-stats-value-background:#223;--treb-tab-bar-active-tab-background:#444;--treb-tab-bar-tab-background:#000;--treb-tab-bar-tab-color:#fff;--treb-theme-color-1:#222;--treb-theme-color-2:#ddd;--treb-toolbar-active-button-background:#555;--treb-toolbar-button-background:#000;--treb-toolbar-hover-button-background:#444;--treb-ui-color:#fff;--treb-table-header-background:#334;--treb-table-odd-background:#122;--treb-table-header-font-weight:700;--treb-table-header-border-top:#889;--treb-table-header-border-bottom:#889;--treb-table-footer-border-bottom:#889;--treb-table-odd-border-top:#889;--treb-table-odd-border-bottom:#889;--treb-table-even-border-top:#889;--treb-table-even-border-bottom:#889;--treb-table-total-border-top:#889;--treb-table-total-border-bottom:#889;--treb-table-total-background:#334;--treb-table-total-font-weight:700;--treb-color-scheme:dark;--treb-resize-handle-color:#add8e6;--treb-resize-frame-color:#add8e6;--treb-formula-bar-locked-background:#234;--treb-grid-background:#1e1e1e;--treb-grid-header-background:#565656;--treb-grid-header-color:#ddd;--treb-tab-bar-active-tab-background:field;--treb-tab-bar-tab-background:transparent;--treb-tab-bar-tab-border-color:#444;--treb-ui-border-color:#aaa;--treb-toolbar-button-background:#565656;--treb-toolbar-button-background:#212121;--treb-toolbar-border-color:#434343;--treb-toolbar-color:#ddd}}.treb-chart{background:var(--treb-chart-background,#fff)}.treb-chart .series-1{color:var(--treb-chart-color-series-1,#80b1d3)}.treb-chart .series-2{color:var(--treb-chart-color-series-2,#8dd3c7)}.treb-chart .series-3{color:var(--treb-chart-color-series-3,#bebada)}.treb-chart .series-4{color:var(--treb-chart-color-series-4,#fb8072)}.treb-chart .series-5{color:var(--treb-chart-color-series-5,#fdb462)}.treb-chart .series-6{color:var(--treb-chart-color-series-6,#b3de69)}.treb-chart .series-7{color:var(--treb-chart-color-series-7,#fccde5)}.treb-chart .series-8{color:var(--treb-chart-color-series-8,#d9d9d9)}.treb-chart .series-9{color:var(--treb-chart-color-series-9,#bc80bd)}.treb-chart .series-10{color:var(--treb-chart-color-series-10,#ccebc5)}.treb-chart .series-11{color:var(--treb-chart-color-series-11,#ffed6f)}.treb-chart .series-12{color:var(--treb-chart-color-series-12,#ffffb3)}.treb-chart .chart-title{font-size:1.4em}.treb-chart .axis-group{font-size:.9em}.treb-chart text{fill:var(--treb-chart-text-color,#000);stroke:none}.treb-chart .legend{font-size:1.05em}.treb-chart .legend rect{fill:currentColor}.treb-chart .chart-grid,.treb-chart .chart-ticks{stroke:var(--treb-chart-grid-color,#ddd)}.treb-chart .label-target{stroke:none;fill:transparent}.treb-chart path.label-target{transition:fill .2s}.treb-chart path.label-target:hover{fill:rgba(0,0,0,.15)}.treb-chart .data-label{opacity:0;pointer-events:none;transition:opacity .2s ease-in-out}.treb-chart .data-label text{fill:#fff}.treb-chart .data-label path{fill:#000}.treb-chart .data-label .marker-highlight{fill:currentColor;stroke:none}.treb-chart .label-target:hover+.data-label{opacity:1}.treb-chart .chart-line{stroke:currentColor;fill:none;stroke-width:2}.treb-chart .chart-area .line{stroke:currentColor;stroke-width:2px;fill:none}.treb-chart .chart-area .fill{fill:currentColor;opacity:.5}.treb-chart .scatter-plot{stroke-width:3;fill:none;stroke:currentColor}.treb-chart .scatter-plot .fill{fill:currentColor;stroke:none;opacity:.5}.treb-chart .scatter-plot .marker{stroke-width:2.5px;fill:#fff;transition:stroke-width .15s ease-in}.treb-chart .scatter-plot .marker:hover{stroke-width:5px}.treb-chart .donut path{fill:currentColor}.treb-chart .donut path.callout{fill:none;stroke:#999;stroke-dasharray:2 2}.treb-chart .donut text.callout-label{font-size:1em}.treb-chart .chart-column{fill:currentColor;stroke:none}.treb-chart .mc-correlation{stroke:currentColor;stroke-width:1}.treb-main{--treb-icon-svg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='153.073' height='133.742' viewBox='0.673 4.629 153.073 133.742'%3E%3ClinearGradient id='a' x1='.673' x2='153.746' y1='71.5' y2='71.5' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' style='stop-color:%235cb5ff'/%3E%3Cstop offset='1' style='stop-color:%230059b9'/%3E%3C/linearGradient%3E%3Cpath fill='url(%23a)' d='M91.656 28.313c-4.989 0-17.266 6.249-21.305 8.504-2.344-2.473-2.603-6.162-3.036-10.933-2.344 2.429-.824 9.806 0 12.496-10.238 7.635-18.83 15.531-27.597 24.471-2.992-4.729-5.031-8.593-5.726-17.183-3.038 6.509.867 15.057 3.121 19.784-9.674 12.193-19.263 25.297-27.03 37.834-35.488-74.973 72.853-119.534 143.663-88.855-43.867 29.199-55.192 121.353-132.248 96.843-5.423 7.809-9.069 18.006-13.538 27.072-3.73.263-6.334-1.646-7.288-3.12 7.506-18.181 17.183-34.192 27.075-49.984 10.718.306 21.346.478 30.198-1.04-7.681-2.038-16.877-.78-26.032-3.123C37.51 70.361 45.667 62.203 53.78 54.004c8.808.782 17.746 3.21 27.074 1.041-8.111-1.431-15.966-1.952-22.909-4.165 7.594-8.378 22.777-17.491 33.711-22.567z'/%3E%3C/svg%3E")}.treb-main .treb-icon-64{background:no-repeat 50%/100% var(--treb-icon-svg);height:64px;width:64px}.treb-main .treb-dialog-mask{align-items:center;display:flex;height:100%;justify-content:center;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transition:opacity .2s;width:100%;z-index:1000}.treb-main .treb-embed-dialog{align-items:center;background:var(--treb-dialog-background,#fff);border:1px solid var(--treb-dialog-border-color,var(--treb-ui-border-color,#999));border-radius:3px;border-top:3px solid #999;box-shadow:0 4px 6px -4px rgba(0,0,0,.3);color:var(--treb-dialog-color,#000);display:flex;flex-direction:row;font-size:var(--treb-dialog-font-size,16px);line-height:1.6em;padding:1rem;position:relative;text-align:left}.treb-main .treb-embed-dialog>*{display:none}.treb-main .treb-embed-dialog>div{position:relative}.treb-main .treb-embed-dialog>:nth-child(2){display:block;flex-grow:1;padding:2px 20px 2px 12px}.treb-main .treb-embed-dialog>.treb-close-box{background:transparent;border:0;padding:4px;position:absolute;right:0;top:0}.treb-main .treb-embed-dialog>.treb-close-box>svg{fill:#73828c;cursor:default;height:20px;width:20px}.treb-main .treb-embed-dialog>.treb-close-box>svg:active,.treb-main .treb-embed-dialog>.treb-close-box>svg:hover{fill:#049cfb}.treb-main .treb-embed-dialog small{display:block;font-size:.9em}.treb-main .treb-embed-dialog a{color:inherit;text-decoration:none}.treb-main .treb-embed-dialog a:active,.treb-main .treb-embed-dialog a:hover{color:#049cfb}.treb-main .treb-embed-dialog.dialog-type-success{border-top-color:#44d926;border-top-width:3px}.treb-main .treb-embed-dialog.dialog-type-about{border-top-color:#009dff;border-top-width:3px}.treb-main .treb-embed-dialog.dialog-type-error{border-top-color:#f92f06;border-top-width:3px}.treb-main .treb-embed-dialog.dialog-type-info{border-top-color:#009dff;border-top-width:3px}.treb-main .treb-embed-dialog .treb-embed-dialog-message,.treb-main .treb-embed-dialog .treb-embed-dialog-title{white-space:pre}.treb-main .treb-embed-dialog .treb-embed-progress-container{border:1px solid #ddd;height:6px;margin:1rem auto .5rem;position:relative;width:100%}.treb-main .treb-embed-dialog .treb-embed-progress-bar{background:#52880b;height:100%;left:0;position:relative;top:0}.treb-main .treb-spinner{align-items:center;background:transparent;display:flex;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:visibility .25s,opacity .25s ease;visibility:collapse;width:100%;z-index:1000}.treb-main .treb-spinner.visible{opacity:1;transition:visibility 0s,opacity 1s ease;visibility:visible}.treb-main .treb-spinner>div{display:inline-block;height:80px;position:relative;width:80px}.treb-main .treb-spinner>div div{animation:treb-spinner 1.2s cubic-bezier(.5,0,.5,1) infinite;border:8px solid #fff;border-color:var(--treb-spinner-color,currentColor) transparent transparent transparent;border-radius:50%;box-sizing:border-box;display:block;height:64px;margin:8px;position:absolute;width:64px}.treb-main .treb-spinner>div div:first-child{animation-delay:-.45s}.treb-main .treb-spinner>div div:nth-child(2){animation-delay:-.3s}.treb-main .treb-spinner>div div:nth-child(3){animation-delay:-.15s}@keyframes treb-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.treb-main{--icon-x:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"/></svg>');--icon-popout:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28"><path fill="currentColor" d="M22 14.5v5c0 2.484-2.016 4.5-4.5 4.5h-13A4.502 4.502 0 0 1 0 19.5v-13C0 4.016 2.016 2 4.5 2h11c.281 0 .5.219.5.5v1c0 .281-.219.5-.5.5h-11A2.507 2.507 0 0 0 2 6.5v13C2 20.875 3.125 22 4.5 22h13c1.375 0 2.5-1.125 2.5-2.5v-5c0-.281.219-.5.5-.5h1c.281 0 .5.219.5.5zM28 1v8c0 .547-.453 1-1 1a.99.99 0 0 1-.703-.297l-2.75-2.75L13.36 17.14c-.094.094-.234.156-.359.156s-.266-.063-.359-.156l-1.781-1.781c-.094-.094-.156-.234-.156-.359s.063-.266.156-.359L21.048 4.454l-2.75-2.75a.996.996 0 0 1-.297-.703c0-.547.453-1 1-1h8c.547 0 1 .453 1 1z"/></svg>');--icon-toolbar:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 28"><path fill="currentColor" d="M5.5 22v2H0v-2h5.5zm5.5-2c.547 0 1 .453 1 1v4c0 .547-.453 1-1 1H7c-.547 0-1-.453-1-1v-4c0-.547.453-1 1-1h4zm2.5-6v2H0v-2h13.5zm-10-8v2H0V6h3.5zM24 22v2H12.5v-2H24zM9 4c.547 0 1 .453 1 1v4c0 .547-.453 1-1 1H5c-.547 0-1-.453-1-1V5c0-.547.453-1 1-1h4zm10 8c.547 0 1 .453 1 1v4c0 .547-.453 1-1 1h-4c-.547 0-1-.453-1-1v-4c0-.547.453-1 1-1h4zm5 2v2h-3.5v-2H24zm0-8v2H10.5V6H24z"/></svg>');--icon-export:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 26 28"><path fill="currentColor" d="M20 21c0-.547-.453-1-1-1s-1 .453-1 1 .453 1 1 1 1-.453 1-1zm4 0c0-.547-.453-1-1-1s-1 .453-1 1 .453 1 1 1 1-.453 1-1zm2-3.5v5a1.5 1.5 0 0 1-1.5 1.5h-23A1.5 1.5 0 0 1 0 22.5v-5A1.5 1.5 0 0 1 1.5 16h7.266l2.109 2.125c.578.562 1.328.875 2.125.875s1.547-.313 2.125-.875L17.25 16h7.25a1.5 1.5 0 0 1 1.5 1.5zm-5.078-8.891a.984.984 0 0 1-.219 1.094l-7 7c-.187.203-.453.297-.703.297s-.516-.094-.703-.297l-7-7a.984.984 0 0 1-.219-1.094C5.234 8.25 5.594 8 6 8h4V1c0-.547.453-1 1-1h4c.547 0 1 .453 1 1v7h4c.406 0 .766.25.922.609z"/></svg>');--icon-reset:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 28"><path fill="currentColor" d="M23.609 16.5c0 .031 0 .078-.016.109C22.265 22.14 17.702 26 11.937 26c-3.047 0-6-1.203-8.219-3.313l-2.016 2.016A.996.996 0 0 1 .999 25c-.547 0-1-.453-1-1v-7c0-.547.453-1 1-1h7c.547 0 1 .453 1 1a.99.99 0 0 1-.297.703l-2.141 2.141A7.985 7.985 0 0 0 11.998 22a7.976 7.976 0 0 0 6.813-3.813c.375-.609.562-1.203.828-1.828.078-.219.234-.359.469-.359h3c.281 0 .5.234.5.5zM24 4v7c0 .547-.453 1-1 1h-7c-.547 0-1-.453-1-1a.99.99 0 0 1 .297-.703l2.156-2.156A8.036 8.036 0 0 0 12 6a7.976 7.976 0 0 0-6.813 3.813c-.375.609-.562 1.203-.828 1.828-.078.219-.234.359-.469.359H.781a.503.503 0 0 1-.5-.5v-.109C1.625 5.844 6.234 2 12 2c3.063 0 6.047 1.219 8.266 3.313l2.031-2.016A.996.996 0 0 1 23 3c.547 0 1 .453 1 1z"/></svg>');--icon-about:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 28"><path fill="currentColor" d="M14 21.5v-3c0-.281-.219-.5-.5-.5h-3c-.281 0-.5.219-.5.5v3c0 .281.219.5.5.5h3c.281 0 .5-.219.5-.5zM18 11c0-2.859-3-5-5.688-5-2.547 0-4.453 1.094-5.797 3.328a.49.49 0 0 0 .125.656l2.063 1.563a.477.477 0 0 0 .297.094.498.498 0 0 0 .391-.187c.734-.938 1.047-1.219 1.344-1.437.266-.187.781-.375 1.344-.375 1 0 1.922.641 1.922 1.328 0 .812-.422 1.219-1.375 1.656-1.109.5-2.625 1.797-2.625 3.313v.562c0 .281.219.5.5.5h3c.281 0 .5-.219.5-.5 0-.359.453-1.125 1.188-1.547 1.188-.672 2.812-1.578 2.812-3.953zm6 3c0 6.625-5.375 12-12 12S0 20.625 0 14 5.375 2 12 2s12 5.375 12 12z"/></svg>');--icon-chevron-left:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21 28"><path fill="currentColor" d="M18.297 4.703 10 13l8.297 8.297a.99.99 0 0 1 0 1.406l-2.594 2.594a.99.99 0 0 1-1.406 0L2.703 13.703a.99.99 0 0 1 0-1.406L14.297.703a.99.99 0 0 1 1.406 0l2.594 2.594a.99.99 0 0 1 0 1.406z"/></svg>');--icon-chevron-right:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 28"><path fill="currentColor" d="M17.297 13.703 5.703 25.297a.99.99 0 0 1-1.406 0l-2.594-2.594a.99.99 0 0 1 0-1.406L10 13 1.703 4.703a.99.99 0 0 1 0-1.406L4.297.703a.99.99 0 0 1 1.406 0l11.594 11.594a.99.99 0 0 1 0 1.406z"/></svg>');--icon-revert:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 28"><path fill="currentColor" d="M24 14c0 6.609-5.391 12-12 12a11.972 11.972 0 0 1-9.234-4.328.52.52 0 0 1 .031-.672l2.141-2.156a.599.599 0 0 1 .391-.141.51.51 0 0 1 .359.187A7.91 7.91 0 0 0 12 21.999c4.406 0 8-3.594 8-8s-3.594-8-8-8A7.952 7.952 0 0 0 6.563 8.14l2.141 2.156a.964.964 0 0 1 .219 1.078 1.002 1.002 0 0 1-.922.625h-7c-.547 0-1-.453-1-1v-7c0-.406.25-.766.625-.922a.964.964 0 0 1 1.078.219l2.031 2.016c2.203-2.078 5.187-3.313 8.266-3.313 6.609 0 12 5.391 12 12zM14 9.5v7c0 .281-.219.5-.5.5h-5a.494.494 0 0 1-.5-.5v-1c0-.281.219-.5.5-.5H12V9.5c0-.281.219-.5.5-.5h1c.281 0 .5.219.5.5z"/></svg>');--icon-text-align-left:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path fill-rule="evenodd" d="M2 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z"/></svg>');--icon-text-align-center:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path fill-rule="evenodd" d="M4 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z"/></svg>');--icon-text-align-right:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path fill-rule="evenodd" d="M6 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5zm4-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z"/></svg>');--icon-text-align-top:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='16' height='16'%3E%3Cpath d='M8 15a.5.5 0 0 0 .5-.5V5.707l3.146 3.146a.5.5 0 0 0 .707-.707l-4-4a.5.5 0 0 0-.706-.001l-.001.001-4 4a.5.5 0 0 0 .708.707L7.5 5.707V14.5a.5.5 0 0 0 .5.5z'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10' d='M3 1.5h10'/%3E%3C/svg%3E");--icon-text-align-middle:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8zm7-8a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 4.293V.5A.5.5 0 0 1 8 0zm-.5 11.707-1.146 1.147a.5.5 0 0 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 11.707V15.5a.5.5 0 0 1-1 0v-3.793z"/></svg>');--icon-text-align-bottom:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='16' height='16'%3E%3Cpath d='M8 1a.5.5 0 0 0-.5.5v8.793L4.354 7.146a.5.5 0 0 0-.707.707l4 4a.5.5 0 0 0 .707.001l.001-.001 4-4a.5.5 0 0 0-.708-.707L8.5 10.293V1.5A.5.5 0 0 0 8 1z'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10' d='M13 14.5H3'/%3E%3C/svg%3E");--icon-file-menu:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M.54 3.87.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3h3.982a2 2 0 0 1 1.992 2.181l-.637 7A2 2 0 0 1 13.174 14H2.826a2 2 0 0 1-1.991-1.819l-.637-7a1.99 1.99 0 0 1 .342-1.31zM2.19 4a1 1 0 0 0-.996 1.09l.637 7a1 1 0 0 0 .995.91h10.348a1 1 0 0 0 .995-.91l.637-7A1 1 0 0 0 13.81 4H2.19zm4.69-1.707A1 1 0 0 0 6.172 2H2.5a1 1 0 0 0-1 .981l.006.139C1.72 3.042 1.95 3 2.19 3h5.396l-.707-.707z"/></svg>');--icon-wrap-text:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M4 5h8a.5.5 0 0 0 0-1H4a.5.5 0 0 0 0 1zM10 8H4a.5.5 0 0 0 0 1h6a1.5 1.5 0 0 1 0 3v-1.203l-2.953 1.707L10 14.203V13a2.5 2.5 0 1 0 0-5zM3.75 12.5a.5.5 0 0 0 .5.5H6v-1H4.25a.5.5 0 0 0-.5.5z"/></svg>');--icon-unmerge-cells:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M1.5 1a.5.5 0 0 0-.5.5v4a.5.5 0 0 1-1 0v-4A1.5 1.5 0 0 1 1.5 0h4a.5.5 0 0 1 0 1h-4zM10 .5a.5.5 0 0 1 .5-.5h4A1.5 1.5 0 0 1 16 1.5v4a.5.5 0 0 1-1 0v-4a.5.5 0 0 0-.5-.5h-4a.5.5 0 0 1-.5-.5zM.5 10a.5.5 0 0 1 .5.5v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 0 14.5v-4a.5.5 0 0 1 .5-.5zm15 0a.5.5 0 0 1 .5.5v4a1.5 1.5 0 0 1-1.5 1.5h-4a.5.5 0 0 1 0-1h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 1 .5-.5z"/></svg>');--icon-merge-cells:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M5.5 0a.5.5 0 0 1 .5.5v4A1.5 1.5 0 0 1 4.5 6h-4a.5.5 0 0 1 0-1h4a.5.5 0 0 0 .5-.5v-4a.5.5 0 0 1 .5-.5zm5 0a.5.5 0 0 1 .5.5v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 1 0 1h-4A1.5 1.5 0 0 1 10 4.5v-4a.5.5 0 0 1 .5-.5zM0 10.5a.5.5 0 0 1 .5-.5h4A1.5 1.5 0 0 1 6 11.5v4a.5.5 0 0 1-1 0v-4a.5.5 0 0 0-.5-.5h-4a.5.5 0 0 1-.5-.5zm10 1a1.5 1.5 0 0 1 1.5-1.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 0-.5.5v4a.5.5 0 0 1-1 0v-4z"/></svg>');--icon-lock:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2zm3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2zM5 8h6a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1z"/></svg>');--icon-comment:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-2.5a2 2 0 0 0-1.6.8L8 14.333 6.1 11.8a2 2 0 0 0-1.6-.8H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2.5a1 1 0 0 1 .8.4l1.9 2.533a1 1 0 0 0 1.6 0l1.9-2.533a1 1 0 0 1 .8-.4H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"/></svg>');--icon-fill-color:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M6.192 2.78c-.458-.677-.927-1.248-1.35-1.643a2.972 2.972 0 0 0-.71-.515c-.217-.104-.56-.205-.882-.02-.367.213-.427.63-.43.896-.003.304.064.664.173 1.044.196.687.556 1.528 1.035 2.402L.752 8.22c-.277.277-.269.656-.218.918.055.283.187.593.36.903.348.627.92 1.361 1.626 2.068.707.707 1.441 1.278 2.068 1.626.31.173.62.305.903.36.262.05.64.059.918-.218l5.615-5.615c.118.257.092.512.05.939-.03.292-.068.665-.073 1.176v.123h.003a1 1 0 0 0 1.993 0H14v-.057a1.01 1.01 0 0 0-.004-.117c-.055-1.25-.7-2.738-1.86-3.494a4.322 4.322 0 0 0-.211-.434c-.349-.626-.92-1.36-1.627-2.067-.707-.707-1.441-1.279-2.068-1.627-.31-.172-.62-.304-.903-.36-.262-.05-.64-.058-.918.219l-.217.216zM4.16 1.867c.381.356.844.922 1.311 1.632l-.704.705c-.382-.727-.66-1.402-.813-1.938a3.283 3.283 0 0 1-.131-.673c.091.061.204.15.337.274zm.394 3.965c.54.852 1.107 1.567 1.607 2.033a.5.5 0 1 0 .682-.732c-.453-.422-1.017-1.136-1.564-2.027l1.088-1.088c.054.12.115.243.183.365.349.627.92 1.361 1.627 2.068.706.707 1.44 1.278 2.068 1.626.122.068.244.13.365.183l-4.861 4.862a.571.571 0 0 1-.068-.01c-.137-.027-.342-.104-.608-.252-.524-.292-1.186-.8-1.846-1.46-.66-.66-1.168-1.32-1.46-1.846-.147-.265-.225-.47-.251-.607a.573.573 0 0 1-.01-.068l3.048-3.047zm2.87-1.935a2.44 2.44 0 0 1-.241-.561c.135.033.324.11.562.241.524.292 1.186.8 1.846 1.46.45.45.83.901 1.118 1.31a3.497 3.497 0 0 0-1.066.091 11.27 11.27 0 0 1-.76-.694c-.66-.66-1.167-1.322-1.458-1.847z"/></svg>');--icon-text-color:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="16" height="16"><path d="m12.259 14.001-1.389-3.727H5.465l-1.354 3.727h-1.3L7.609 1.397h1.178l4.772 12.604h-1.3zM8.418 3.604a5.908 5.908 0 0 1-.127-.387 3.618 3.618 0 0 1-.11-.501h-.035a5.492 5.492 0 0 1-.247.888L5.86 9.211h4.614L8.418 3.604z"/></svg>');--icon-border-bottom:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969V0zm.937 1h.938V0h-.938v1zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938v1zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469h.031zM9.406 1h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031V1zM1 2.844v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM1 6.594v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5V8.5zm1.406 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031V8.5zM0 9.406v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zM0 15h16v1H0v-1z"/></svg>');--icon-border-top:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M0 0v1h16V0H0zm1 2.844v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM1 6.594v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5V8.5zm1.406 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031V8.5zM0 9.406v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0V16zm1.906 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469h.031zm1.875.5h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469h.031z"/></svg>');--icon-border-left:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M0 0v16h1V0H0zm1.906 1h.938V0h-.938v1zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938v1zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469h.031zM9.406 1h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031V1zM7.5 1.906v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM7.5 3.781v.938h1V3.78h-1zm7.5 0v.938h1V3.78h-1zM7.5 5.656v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM1.906 8.5h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031V8.5zM7.5 9.406v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-8.5.937v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-8.5.937v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zM1.906 16h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469h.031zm1.875.5h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5H16v-.969h-.5V15h-.469v.031H15v.469h.031z"/></svg>');--icon-border-right:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969V0zm.937 1h.938V0h-.938v1zm1.875 0h.938V0H3.78v1zm1.875 0h.938V0h-.938v1zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469h.031zM9.406 1h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zM16 0h-1v16h1V0zM1 2.844v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zM1 4.719V3.78H0v.938h1zm6.5-.938v.938h1V3.78h-1zM1 6.594v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5V8.5zm1.406 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zM0 9.406v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zM0 11.281v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zM0 13.156v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zM0 16h.969v-.5H1v-.469H.969V15H.5v.031H0V16zm1.906 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm1.875-.5v.5h.938v-.5H8.5v-.469h-.031V15H7.53v.031H7.5v.469h.031zm1.875.5h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1z"/></svg>');--icon-border-double-bottom:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M.969 0H0v.969h.5V1h.469V.969H1V.5H.969V0zm.937 1h.938V0h-.938v1zm1.875 0h.938V0H3.78v1h.001zm1.875 0h.938V0h-.938v1zM7.531.969V1h.938V.969H8.5V.5h-.031V0H7.53v.5H7.5v.469h.031zM9.406 1h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.938V0h-.938v1zm1.875 0h.469V.969h.5V0h-.969v.5H15v.469h.031V1zM1 2.844v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM1 4.719V3.78H0v.938l1 .001zm6.5-.938v.938h1V3.78h-1v.001zm7.5 0v.938h1V3.78h-1v.001zM1 6.594v-.938H0v.938h1zm6.5-.938v.938h1v-.938h-1zm7.5 0v.938h1v-.938h-1zM.5 8.5h.469v-.031H1V7.53H.969V7.5H.5v.031H0v.938h.5V8.5zm1.406 0h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1h.001zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.469v-.031h.5V7.53h-.5V7.5h-.469v.031H15v.938h.031V8.5zM0 9.406v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zm-16 .937v.938h1v-.938H0zm7.5 0v.938h1v-.938h-1zm8.5.938v-.938h-1v.938h1zM0 15h16v1H0v-1zm0-2h16v1H0v-1z"/></svg>');--icon-border-all:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M0 0h16v16H0V0zm1 1v6.5h6.5V1H1zm7.5 0v6.5H15V1H8.5zM15 8.5H8.5V15H15V8.5zM7.5 15V8.5H1V15h6.5z"/></svg>');--icon-border-outer:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M7.5 1.906v.938h1v-.938h-1zm0 1.875v.938h1V3.78h-1zm0 1.875v.938h1v-.938h-1zM1.906 8.5h.938v-1h-.938v1zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938v1zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5h.938zm.937 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zm1.875 0h.938v-1h-.938v1zM7.5 9.406v.938h1v-.938h-1zm0 1.875v.938h1v-.938h-1zm0 1.875v.938h1v-.938h-1z"/><path d="M0 0v16h16V0H0zm1 1h14v14H1V1z"/></svg>');--icon-border-none:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M0 0h.969v.5H1v.469H.969V1H.5V.969H0V0zm2.844 1h-.938V0h.938v1zm1.875 0H3.78V0h.938v1zm1.875 0h-.938V0h.938v1zm.937 0V.969H7.5V.5h.031V0h.938v.5H8.5v.469h-.031V1H7.53zm2.813 0h-.938V0h.938v1zm1.875 0h-.938V0h.938v1zm1.875 0h-.938V0h.938v1zM15.5 1h-.469V.969H15V.5h.031V0H16v.969h-.5V1zM1 1.906v.938H0v-.938h1zm6.5.938v-.938h1v.938h-1zm7.5 0v-.938h1v.938h-1zM1 3.78v.938H0V3.78h1zm6.5.938V3.78h1v.938h-1zm7.5 0V3.78h1v.938h-1zM1 5.656v.938H0v-.938h1zm6.5.938v-.938h1v.938h-1zm7.5 0v-.938h1v.938h-1zM.969 8.5H.5v-.031H0V7.53h.5V7.5h.469v.031H1v.938H.969V8.5zm1.875 0h-.938v-1h.938v1zm1.875 0H3.78v-1h.938v1zm1.875 0h-.938v-1h.938v1zm1.875-.031V8.5H7.53v-.031H7.5V7.53h.031V7.5h.938v.031H8.5v.938h-.031zm1.875.031h-.938v-1h.938v1zm1.875 0h-.938v-1h.938v1zm1.875 0h-.938v-1h.938v1zm1.406 0h-.469v-.031H15V7.53h.031V7.5h.469v.031h.5v.938h-.5V8.5zM0 10.344v-.938h1v.938H0zm7.5 0v-.938h1v.938h-1zm8.5-.938v.938h-1v-.938h1zM0 12.22v-.938h1v.938H0zm7.5 0v-.938h1v.938h-1zm8.5-.938v.938h-1v-.938h1zM0 14.094v-.938h1v.938H0zm7.5 0v-.938h1v.938h-1zm8.5-.938v.938h-1v-.938h1zM.969 16H0v-.969h.5V15h.469v.031H1v.469H.969v.5zm1.875 0h-.938v-1h.938v1zm1.875 0H3.78v-1h.938v1zm1.875 0h-.938v-1h.938v1zm.937 0v-.5H7.5v-.469h.031V15h.938v.031H8.5v.469h-.031v.5H7.53zm2.813 0h-.938v-1h.938v1zm1.875 0h-.938v-1h.938v1zm1.875 0h-.938v-1h.938v1zm.937 0v-.5H15v-.469h.031V15h.469v.031h.5V16h-.969z"/></svg>');--icon-palette:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M0 .5A.5.5 0 0 1 .5 0h5a.5.5 0 0 1 .5.5v5.277l4.147-4.131a.5.5 0 0 1 .707 0l3.535 3.536a.5.5 0 0 1 0 .708L10.261 10H15.5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5H3a2.99 2.99 0 0 1-2.121-.879A2.99 2.99 0 0 1 0 13.044m6-.21 7.328-7.3-2.829-2.828L6 7.188v5.647zM4.5 13a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0zM15 15v-4H9.258l-4.015 4H15zM0 .5v12.495V.5z"/><path d="M0 12.995V13a3.07 3.07 0 0 0 0-.005z"/></svg>');--icon-layout:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="20" height="20"><path d="m3 0 17 17.156v-.114z"/><path d="M3 0H0v16h1V1h1.585L19 17.455V19H4v1h16v-2.844z"/><path d="M6.886 3.922 5.343 5.465a.5.5 0 0 0 .708.707l1.539-1.54-.704-.71zM9.702 6.763l-1.53 1.53A.5.5 0 0 0 8.879 9l1.526-1.526-.703-.711zM12.517 9.604 11 11.121a.5.5 0 0 0 .707.707l1.514-1.514-.704-.71zM15.332 12.445l-1.504 1.504a.5.5 0 0 0 .707.707l1.501-1.5-.704-.711zM1 16H0a4 4 0 0 0 4 4v-1c-1.654 0-3-1.346-3-3zM5 9v6h6L5 9zm1 2.414L8.586 14H6v-2.586z"/></svg>');--icon-freeze:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M8 16a.5.5 0 0 1-.5-.5v-1.293l-.646.647a.5.5 0 0 1-.707-.708L7.5 12.793V8.866l-3.4 1.963-.496 1.85a.5.5 0 1 1-.966-.26l.237-.882-1.12.646a.5.5 0 0 1-.5-.866l1.12-.646-.884-.237a.5.5 0 1 1 .26-.966l1.848.495L7 8 3.6 6.037l-1.85.495a.5.5 0 0 1-.258-.966l.883-.237-1.12-.646a.5.5 0 1 1 .5-.866l1.12.646-.237-.883a.5.5 0 1 1 .966-.258l.495 1.849L7.5 7.134V3.207L6.147 1.854a.5.5 0 1 1 .707-.708l.646.647V.5a.5.5 0 1 1 1 0v1.293l.647-.647a.5.5 0 1 1 .707.708L8.5 3.207v3.927l3.4-1.963.496-1.85a.5.5 0 1 1 .966.26l-.236.882 1.12-.646a.5.5 0 0 1 .5.866l-1.12.646.883.237a.5.5 0 1 1-.26.966l-1.848-.495L9 8l3.4 1.963 1.849-.495a.5.5 0 0 1 .259.966l-.883.237 1.12.646a.5.5 0 0 1-.5.866l-1.12-.646.236.883a.5.5 0 1 1-.966.258l-.495-1.849-3.4-1.963v3.927l1.353 1.353a.5.5 0 0 1-.707.708l-.647-.647V15.5a.5.5 0 0 1-.5.5z"/></svg>');--icon-column-chart:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="20" height="20"><path d="M4.5 17.5a.5.5 0 0 1-1 0v-5a.5.5 0 0 1 1 0v5zM12.5 17.5a.5.5 0 0 1-1 0v-9a.5.5 0 0 1 1 0v9zM16.5 17.5a.5.5 0 0 1-1 0v-13a.5.5 0 0 1 1 0v13zM8.5 17.5a.5.5 0 0 1-1 0v-14a.5.5 0 0 1 1 0v14z"/></svg>');--icon-donut-chart:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="20" height="20"><path d="M12 1.23v1.548c2.526.701 4.5 2.699 5.203 5.222h1.565A9.006 9.006 0 0 0 12 1.23zM2.5 10c0-3.51 2.426-6.456 5.688-7.27V1.183A9.001 9.001 0 0 0 1 10c0 1.761.513 3.397 1.387 4.784l1.093-1.093A7.432 7.432 0 0 1 2.5 10zM17.221 12c-.878 3.166-3.778 5.5-7.221 5.5a7.448 7.448 0 0 1-3.692-.979l-1.093 1.093A8.956 8.956 0 0 0 10 19c4.282 0 7.859-2.993 8.77-7h-1.549z"/></svg>');--icon-bar-chart:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="20" height="20"><path d="M2.5 4.5a.5.5 0 0 1 0-1h5a.5.5 0 0 1 0 1h-5zM2.5 12.5a.5.5 0 0 1 0-1h9a.5.5 0 0 1 0 1h-9zM2.5 16.5a.5.5 0 0 1 0-1h13a.5.5 0 0 1 0 1h-13zM2.5 8.5a.5.5 0 0 1 0-1h14a.5.5 0 0 1 0 1h-14z"/></svg>');--icon-line-chart:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="20" height="20"><path d="m1 8 3-3 7 5 8-8v2l-8 8-7-5-3 3z"/></svg>');--icon-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M6.002 5.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z"/><path d="M2.002 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2h-12zm12 1a1 1 0 0 1 1 1v6.5l-3.777-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12V3a1 1 0 0 1 1-1h12z"/></svg>');--icon-recalculate:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="20" height="20"><path d="M9.478 4.022c2.402-.209 4.583 1.047 5.711 3.014l1.083-.095c-1.233-2.528-3.912-4.175-6.881-3.916-2.97.26-5.321 2.347-6.098 5.051l1.083-.095c.768-2.132 2.698-3.748 5.102-3.959zM10.523 15.977c-2.403.211-4.585-1.047-5.712-3.013l-1.08.095c1.234 2.527 3.91 4.175 6.879 3.914 2.971-.259 5.32-2.347 6.095-5.05l-1.08.095c-.769 2.132-2.699 3.749-5.102 3.959z"/><path d="m2.272 15.616 5.197-3-4.098-1.097zM17.728 4.384l-5.197 3 4.098 1.098z"/></svg>');--icon-check:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z"/></svg>');--icon-table:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm15 2h-4v3h4V4zm0 4h-4v3h4V8zm0 4h-4v3h3a1 1 0 0 0 1-1v-2zm-5 3v-3H6v3h4zm-5 0v-3H1v2a1 1 0 0 0 1 1h3zm-4-4h4V8H1v3zm0-4h4V4H1v3zm5-3v3h4V4H6zm4 4H6v3h4V8z"/></svg>')}.treb-main .treb-layout-header{-ms-overflow-style:none;overflow:hidden;overflow-x:scroll;position:relative;scrollbar-width:none}.treb-main .treb-layout-header::-webkit-scrollbar{display:none}.treb-main .treb-toolbar{color:var(--treb-toolbar-color,var(--treb-ui-color,#333));font-size:var(--treb-toolbar-font-size,inherit);gap:.5rem}.treb-main .treb-toolbar,.treb-main .treb-toolbar>div{display:flex;flex-direction:row}.treb-main .treb-toolbar>div>input,.treb-main .treb-toolbar>input{background-color:var(--treb-toolbar-button-background,transparent);border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));height:32px;overflow:hidden;padding-left:.5em;padding-right:.5em;text-overflow:ellipsis}.treb-main .treb-toolbar>.treb-menu>button{border-radius:3px}.treb-main .treb-toolbar>.group>.treb-menu+button,.treb-main .treb-toolbar>.group>button+.treb-menu>button,.treb-main .treb-toolbar>.group>button+button,.treb-main .treb-toolbar>.group>input+.treb-menu>button,.treb-main .treb-toolbar>.group>input+button,.treb-main .treb-toolbar>[composite]>.treb-menu+button,.treb-main .treb-toolbar>[composite]>button+.treb-menu>button,.treb-main .treb-toolbar>[composite]>button+button,.treb-main .treb-toolbar>[composite]>input+.treb-menu>button,.treb-main .treb-toolbar>[composite]>input+button{border-left-width:0}.treb-main .treb-toolbar>.group>button:first-child,.treb-main .treb-toolbar>.group>input:first-child,.treb-main .treb-toolbar>[composite]>button:first-child,.treb-main .treb-toolbar>[composite]>input:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}.treb-main .treb-toolbar>.group>.treb-menu:last-child>button,.treb-main .treb-toolbar>.group>button:last-child,.treb-main .treb-toolbar>[composite]>.treb-menu:last-child>button,.treb-main .treb-toolbar>[composite]>button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}.treb-main .treb-toolbar .treb-icon-buttons>button,.treb-main .treb-toolbar .treb-menu>button,.treb-main .treb-toolbar button[data-icon],.treb-main .treb-toolbar>button,.treb-main .treb-toolbar>div>button{align-items:center;background-color:var(--treb-toolbar-button-background,transparent);border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));display:flex;flex-direction:column;height:32px;justify-content:center;position:relative;width:32px}.treb-main .treb-toolbar .treb-icon-buttons>button[dropdown],.treb-main .treb-toolbar .treb-menu>button[dropdown],.treb-main .treb-toolbar button[data-icon][dropdown],.treb-main .treb-toolbar>button[dropdown],.treb-main .treb-toolbar>div>button[dropdown]{width:16px}.treb-main .treb-toolbar .treb-icon-buttons>button[dropdown]:after,.treb-main .treb-toolbar .treb-menu>button[dropdown]:after,.treb-main .treb-toolbar button[data-icon][dropdown]:after,.treb-main .treb-toolbar>button[dropdown]:after,.treb-main .treb-toolbar>div>button[dropdown]:after{border:5px solid transparent;border-top-color:currentcolor;box-sizing:content-box;content:"";height:0;left:50%;position:absolute;top:18px;transform:translate(-50%,-50%);width:0}.treb-main .treb-toolbar .treb-icon-buttons>button:hover,.treb-main .treb-toolbar .treb-icon-buttons>button[active],.treb-main .treb-toolbar .treb-menu>button:hover,.treb-main .treb-toolbar .treb-menu>button[active],.treb-main .treb-toolbar button[data-icon]:hover,.treb-main .treb-toolbar button[data-icon][active],.treb-main .treb-toolbar>button:hover,.treb-main .treb-toolbar>button[active],.treb-main .treb-toolbar>div>button:hover,.treb-main .treb-toolbar>div>button[active]{background-color:var(--treb-toolbar-hover-button-background,#f3f4f6)}.treb-main .treb-toolbar .treb-icon-buttons>button[data-color-bar]:after,.treb-main .treb-toolbar .treb-menu>button[data-color-bar]:after,.treb-main .treb-toolbar button[data-icon][data-color-bar]:after,.treb-main .treb-toolbar>button[data-color-bar]:after,.treb-main .treb-toolbar>div>button[data-color-bar]:after{background:var(--treb-color-bar-color,var(--treb-default-color,unset));border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));box-sizing:border-box;content:"";display:block;height:6px;position:relative;width:20px}.treb-main .treb-toolbar .treb-icon-buttons>button[data-command]:before,.treb-main .treb-toolbar .treb-icon-buttons>button[data-icon]:before,.treb-main .treb-toolbar .treb-menu>button[data-command]:before,.treb-main .treb-toolbar .treb-menu>button[data-icon]:before,.treb-main .treb-toolbar button[data-icon][data-command]:before,.treb-main .treb-toolbar button[data-icon][data-icon]:before,.treb-main .treb-toolbar>button[data-command]:before,.treb-main .treb-toolbar>button[data-icon]:before,.treb-main .treb-toolbar>div>button[data-command]:before,.treb-main .treb-toolbar>div>button[data-icon]:before{background:currentColor;content:"";display:block;height:20px;mask-image:var(--icon);-webkit-mask-image:var(--icon);mask-position:center;-webkit-mask-position:center;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:var(--icon-size,16px 16px);-webkit-mask-size:var(--icon-size,16px 16px);position:relative;width:20px}.treb-main .treb-toolbar .treb-split{display:flex;flex-direction:column;gap:0}.treb-main .treb-toolbar .treb-split button[data-command]{font-size:10px}.treb-main .treb-toolbar .treb-split button[data-command]:before{display:none}.treb-main .treb-toolbar .treb-split>button{align-items:center;display:flex;height:16px;justify-content:center}.treb-main .treb-toolbar .treb-split>button:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.treb-main .treb-toolbar .treb-split>button:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:0}.treb-main .treb-toolbar .treb-menu{outline:none}.treb-main .treb-toolbar .treb-menu>div{background:var(--treb-toolbar-button-background,#fff);border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));border-radius:3px;box-shadow:0 4px 6px -4px rgba(0,0,0,.4);display:none;flex-direction:column;margin-top:.5rem;position:fixed;top:48px;z-index:20}.treb-main .treb-toolbar .treb-menu>div button{background:transparent;border:0;margin:3px 0;padding:.4rem 1rem;text-align:left;transition:background-color .125s ease;white-space:nowrap}.treb-main .treb-toolbar .treb-menu>div button:hover{background:var(--treb-toolbar-hover-button-background,#f3f4f6)}.treb-main .treb-toolbar .treb-menu>div.treb-icon-buttons>.treb-menu>button,.treb-main .treb-toolbar .treb-menu>div.treb-icon-buttons>button{padding:0}.treb-main .treb-toolbar .treb-menu>div>[separator]{background:var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));height:1px;margin:2px 0}.treb-main .treb-toolbar .treb-menu.visible>div,.treb-main .treb-toolbar .treb-menu:focus-within>div{display:flex}.treb-main .treb-toolbar [data-icon=file-menu]{--icon:var(--icon-file-menu)}.treb-main .treb-toolbar [data-command=justify-left]{--icon:var(--icon-text-align-left)}.treb-main .treb-toolbar [data-command=justify-right]{--icon:var(--icon-text-align-right)}.treb-main .treb-toolbar [data-command=justify-center]{--icon:var(--icon-text-align-center)}.treb-main .treb-toolbar [data-command=align-top]{--icon:var(--icon-text-align-top)}.treb-main .treb-toolbar [data-command=align-middle]{--icon:var(--icon-text-align-middle)}.treb-main .treb-toolbar [data-command=align-bottom]{--icon:var(--icon-text-align-bottom)}.treb-main .treb-toolbar [data-command=merge-cells]{--icon:var(--icon-merge-cells)}.treb-main .treb-toolbar [data-command=unmerge-cells]{--icon:var(--icon-unmerge-cells)}.treb-main .treb-toolbar [data-command=fill-color]{--icon:var(--icon-fill-color)}.treb-main .treb-toolbar [data-command=text-color]{--icon:var(--icon-text-color)}.treb-main .treb-toolbar [data-command=lock-cells]{--icon:var(--icon-lock)}.treb-main .treb-toolbar [data-command=wrap-text]{--icon:var(--icon-wrap-text)}.treb-main .treb-toolbar [data-icon=comment]{--icon:var(--icon-comment)}.treb-main .treb-toolbar [data-icon=table]{--icon:var(--icon-table)}.treb-main .treb-toolbar [data-icon=layout]{--icon:var(--icon-layout)}.treb-main .treb-toolbar [data-command=freeze-panes]{--icon:var(--icon-freeze)}.treb-main .treb-toolbar [data-command=insert-column-chart]{--icon:var(--icon-column-chart)}.treb-main .treb-toolbar [data-command=insert-donut-chart]{--icon:var(--icon-donut-chart)}.treb-main .treb-toolbar [data-command=insert-bar-chart]{--icon:var(--icon-bar-chart)}.treb-main .treb-toolbar [data-command=insert-line-chart]{--icon:var(--icon-line-chart)}.treb-main .treb-toolbar [data-command=insert-image]{--icon:var(--icon-image)}.treb-main .treb-toolbar [data-command=border-bottom]{--icon:var(--icon-border-bottom)}.treb-main .treb-toolbar [data-command=border-left]{--icon:var(--icon-border-left)}.treb-main .treb-toolbar [data-command=border-right]{--icon:var(--icon-border-right)}.treb-main .treb-toolbar [data-command=border-top]{--icon:var(--icon-border-top)}.treb-main .treb-toolbar [data-command=border-outside]{--icon:var(--icon-border-outer)}.treb-main .treb-toolbar [data-command=border-all]{--icon:var(--icon-border-all)}.treb-main .treb-toolbar [data-command=border-none]{--icon:var(--icon-border-none)}.treb-main .treb-toolbar [data-command=border-double-bottom]{--icon:var(--icon-border-double-bottom)}.treb-main .treb-toolbar [data-icon=palette]{--icon:var(--icon-palette)}.treb-main .treb-toolbar [data-command=recalculate]{--icon:var(--icon-recalculate);--icon-size:20px 20px}.treb-main .treb-toolbar .treb-font-scale{width:4em}.treb-main .treb-toolbar .treb-number-format{width:8em}.treb-main .treb-toolbar .treb-color-chooser button[data-command=set-color]{align-items:center;display:flex;justify-content:center;padding:0;width:32px}.treb-main .treb-toolbar .treb-color-chooser>div{padding:.75rem}.treb-main .treb-toolbar .treb-color-chooser>div+div{padding-top:0}.treb-main .treb-toolbar .treb-color-chooser>div:last-child{align-items:center;display:flex;flex-direction:row;gap:.5rem}.treb-main .treb-toolbar .treb-color-chooser>div:last-child input{flex-grow:1;padding:0 .5rem}.treb-main .treb-toolbar .treb-color-chooser>div:last-child button,.treb-main .treb-toolbar .treb-color-chooser>div:last-child input{border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));border-radius:3px;height:32px}.treb-main .treb-toolbar .treb-color-chooser .treb-swatches{display:grid;gap:.5rem;grid-template-columns:repeat(10,1fr)}.treb-main .treb-toolbar .treb-color-chooser .treb-swatches button{border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));border-radius:2px;height:18px;margin:0;padding:0;width:18px}.treb-main .treb-toolbar .treb-color-chooser .treb-swatches .treb-default-color:before{background:currentColor;content:"";display:block;height:100%;mask-image:var(--icon-x);-webkit-mask-image:var(--icon-x);mask-position:center;-webkit-mask-position:center;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:24px 24px;-webkit-mask-size:24px 24px;opacity:.7;position:relative;width:100%}.treb-main .treb-toolbar .treb-comment-box textarea{border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));font:inherit;height:10rem;line-height:1.5;margin:.5rem;padding:.25rem;resize:both}.treb-main .treb-toolbar .treb-comment-box textarea+div{align-items:center;display:flex;flex-direction:row;gap:.5rem;justify-content:center;padding:0 0 .5rem}.treb-main .treb-toolbar .treb-comment-box textarea+div button{border:1px solid var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));border-radius:3px}.treb-main{all:revert;box-sizing:border-box;color:inherit;color-scheme:var(--treb-color-scheme,unset);display:grid;font-family:var(--treb-default-font,system-ui,"BlinkMacSystemFont","Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue","sans-serif");font-family:BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,"sans-serif";font-size:14px;font-style:normal;font-weight:400;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto minmax(0,1fr);height:100%;position:relative;text-align:start;width:100%}.treb-main a,.treb-main button,.treb-main div,.treb-main input,.treb-main li,.treb-main ol,.treb-main textarea,.treb-main ul{all:revert;box-sizing:border-box;font-family:var(--treb-default-font,system-ui,"BlinkMacSystemFont","Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue","sans-serif")}.treb-main button,.treb-main input{color:inherit;font:inherit}.treb-main *{box-sizing:border-box}.treb-main [contenteditable]{-webkit-user-modify:read-write;-moz-user-modify:read-write}.treb-main[animate] .treb-layout-header{transition:height var(--treb-sidebar-transition,.2s ease),opacity var(--treb-sidebar-transition,.2s ease)}.treb-main .treb-layout-header{grid-column:1/3;grid-row:1;height:1px;opacity:0}.treb-main[toolbar] .treb-layout-header{height:42px;opacity:1}.treb-main[dialog] .treb-layout-header,.treb-main[dialog]>*{opacity:.6}.treb-main[dialog] .treb-dialog-mask{opacity:1;pointer-events:auto}.treb-main .treb-layout-spreadsheet{display:flex;flex-direction:row;gap:1em;grid-column:1;grid-row:2;position:relative;transition:opacity .2s ease;z-index:5}.treb-main .treb-view{display:grid;flex:1 1 0px;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;position:relative}.treb-main .treb-view .treb-spreadsheet-backdrop{box-shadow:0 4px 6px -4px rgba(0,0,0,.4);grid-column:1;grid-row:2;z-index:2}.treb-main .treb-view .treb-spreadsheet-body{position:relative;z-index:4}.treb-main .treb-view .treb-spreadsheet-footer{position:relative;z-index:5}.treb-main .treb-view .treb-layout-resize-handle{display:none}.treb-main .treb-view:last-of-type .treb-layout-resize-handle{align-self:end;border-bottom:.5rem solid var(--treb-resize-handle-color,blue);border-left:.5rem solid transparent;border-right:.5rem solid var(--treb-resize-handle-color,blue);border-top:.5rem solid transparent;cursor:nw-resize;display:block;grid-area:2/1/3/2;height:1rem;justify-self:end;width:1rem;z-index:20}.treb-main[animate] .treb-layout-sidebar{transition:width var(--treb-sidebar-transition,.2s ease),opacity var(--treb-sidebar-transition,.2s ease)}.treb-main .treb-layout-sidebar{align-items:center;display:flex;flex-direction:column;gap:.75rem;grid-column:2;grid-row:2;justify-content:flex-start;overflow:hidden;padding-top:3rem;width:2.5rem;width:3rem}.treb-main[collapsed] .treb-layout-sidebar{opacity:0;width:0}.treb-main[collapsed] .treb-toggle-sidebar-button{background:var(--treb-toolbar-button-background,#fff);border-bottom-right-radius:0;border-color:var(--treb-toolbar-border-color,var(--treb-ui-border-color,#d1d5db));border-right-color:var(--treb-toolbar-button-background,transparent);border-top-right-radius:0;right:0}.treb-main[collapsed] .treb-toggle-sidebar-button:after{mask-image:var(--icon-chevron-left);-webkit-mask-image:var(--icon-chevron-left)}.treb-main .treb-layout-sidebar>button,.treb-main .treb-toggle-sidebar-button{background:transparent;border:0;margin:0;padding:0}.treb-main .treb-layout-sidebar>button:after,.treb-main .treb-toggle-sidebar-button:after{background:#ccc;content:"";display:block;height:24px;mask-image:var(--icon);-webkit-mask-image:var(--icon);mask-position:center;-webkit-mask-position:center;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;transition:background-color .1s ease;width:24px}.treb-main .treb-layout-sidebar>button:hover:after,.treb-main .treb-toggle-sidebar-button:hover:after{background:#666}.treb-main .treb-layout-sidebar>button[data-command=recalculate],.treb-main .treb-toggle-sidebar-button[data-command=recalculate]{--icon:var(--icon-reset)}.treb-main .treb-layout-sidebar>button[data-command=toggle-toolbar],.treb-main .treb-toggle-sidebar-button[data-command=toggle-toolbar]{--icon:var(--icon-toolbar)}.treb-main .treb-layout-sidebar>button[data-command=revert],.treb-main .treb-toggle-sidebar-button[data-command=revert]{--icon:var(--icon-revert)}.treb-main .treb-layout-sidebar>button[data-command=export-xlsx],.treb-main .treb-toggle-sidebar-button[data-command=export-xlsx]{--icon:var(--icon-export)}.treb-main .treb-layout-sidebar>button[data-command=about],.treb-main .treb-toggle-sidebar-button[data-command=about]{--icon:var(--icon-about)}.treb-main .treb-toggle-sidebar-button{align-items:center;background:transparent;border:1px solid transparent;border-radius:12px;bottom:6rem;display:flex;height:24px;justify-content:center;margin:0;padding:0;position:absolute;right:.5rem;right:calc(1.5rem - 12px);width:24px;z-index:39}.treb-main .treb-toggle-sidebar-button:after{height:12px;mask-image:var(--icon-chevron-right);-webkit-mask-image:var(--icon-chevron-right);width:12px}.treb-main .treb-resize-rect{border:1px dotted var(--treb-resize-frame-color,blue);display:block;height:100%;left:0;position:fixed;top:0;width:100%;z-index:9998}.treb-main .treb-resize-mask{height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:9999}treb-spreadsheet{display:block;position:relative}.treb-default-size{height:550px;width:800px}`;var en=`<div class="treb-main treb-theme"><div class="treb-layout-header treb-animate"><div class="treb-toolbar"></div></div><div class="treb-dialog-mask"><div data-bind="dialog" class="treb-embed-dialog"><div data-bind="left"><a href="https://treb.app" target="_blank"><div class="treb-icon-64"></div></a></div><div data-bind="middle"><div data-bind="title" class="treb-embed-dialog-title"></div><div data-bind="message" class="treb-embed-dialog-message"></div><div data-bind="about" class="treb-embed-dialog-body"></div></div><button type="button" title="Close dialog" data-bind="close" class="treb-close-box"><svg viewBox="0 0 16 16"><path d="M11.854 4.146a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708-.708l7-7a.5.5 0 0 1 .708 0z"/><path d="M4.146 4.146a.5.5 0 0 0 0 .708l7 7a.5.5 0 0 0 .708-.708l-7-7a.5.5 0 0 0-.708 0z"/></svg></button></div></div><div class="treb-layout-spreadsheet treb-views"><template class="treb-view-template"><div class="treb-view"><div class="treb-formula-bar notranslate" hidden><div class="treb-address-label"><div></div></div><div class="treb-editor-container"><div contenteditable="true"></div></div></div><div class="treb-spreadsheet-backdrop"></div><div class="treb-spreadsheet-body" role="grid"><div class="treb-grid" tabindex="-1"><div class="treb-overlay-container notranslate" translate="no"><div class="treb-overlay-inset"><div class="treb-overlay-editor" contenteditable tabindex="-1" spellcheck="true" role="gridcell"></div></div></div></div></div><div class="treb-spreadsheet-footer" hidden><button class="treb-delete-tab" title="Delete current sheet" data-command="delete-tab" data-conditional="delete-tab"><svg tabindex="-1" viewbox="0 0 16 16"><path d="M4,4 L12,12 M12,4 L4,12"/></svg></button><ol class="treb-spreadsheet-tabs" role="tablist"></ol><button class="treb-add-tab" data-command="add-tab" data-conditional="add-tab" title="Add sheet">+</button><div class="treb-stats-panel"></div><div class="treb-scale-control" data-conditional="scale-control"></div></div><div class="treb-layout-resize-handle" data-conditional="resize"></div></div></template></div><div class="treb-layout-sidebar treb-animate"><button data-command="recalculate" title="Recalculate"></button> <button data-command="toggle-toolbar" data-conditional="toolbar" title="Toggle toolbar"></button> <button data-command="export-xlsx" data-conditional="export" title="Export as XLSX"></button> <button data-command="revert" data-conditional="revert" title="Revert to original version"></button> <button data-command="about" title="What's this?"></button></div><button class="treb-toggle-sidebar-button" title="Toggle sidebar"></button></div>`;var tn='<div class="treb-menu" title="File menu" file-menu><button data-icon="file-menu" menu-target></button><div><button data-command="reset">New document</button><div separator></div><button data-command="import-file">Open file...</button> <button data-command="save-json">Save JSON</button><div separator xlsx-support></div><button data-command="export-xlsx" xlsx-support>Export XLSX</button></div></div><div composite narrow><button data-command="justify-left" data-target="justify" title="Left-align text"></button><div class="treb-menu"><button dropdown></button><div class="treb-icon-buttons" data-replace="justify"><button data-command="justify-left" title="Left-align text"></button> <button data-command="justify-center" title="Center-align text"></button> <button data-command="justify-right" title="Right-align text"></button></div></div></div><div composite narrow><button data-command="align-top" data-target="align" title="Align to top"></button><div class="treb-menu"><button dropdown></button><div class="treb-icon-buttons" data-replace="align"><button data-command="align-top" title="Align to top"></button> <button data-command="align-middle" title="Align to middle"></button> <button data-command="align-bottom" title="Align to bottom"></button></div></div></div><div class="group" wide><button data-command="justify-left" title="Left-align text"></button> <button data-command="justify-center" title="Center-align text"></button> <button data-command="justify-right" title="Right-align text"></button></div><div class="group" wide><button data-command="align-top" title="Align to top"></button> <button data-command="align-middle" title="Align to middle"></button> <button data-command="align-bottom" title="Align to bottom"></button></div><div class="group"><button data-command="wrap-text" title="Wrap text"></button> <button data-command="merge-cells" data-id="merge" data-title="Merge cells" data-active-title="Unmerge cells"></button> <button data-command="lock-cells" data-title="Lock cells" data-active-title="Unlock cells"></button> <button data-command="freeze-panes" data-title="Freeze panes" data-active-title="Unfreeze panes" freeze-button></button> <button data-command="insert-table" data-icon="table" data-title="Insert table" data-active-title="Remove table" table-button></button><div class="treb-menu"><button data-icon="comment" data-title="Comment" data-active-title="Update comment"></button><div class="treb-comment-box"><textarea></textarea><div><button data-command="clear-comment">Clear</button> <button data-command="update-comment">Save</button></div></div></div></div><div composite><button data-command="fill-color" data-color-bar="fill" data-color="{}" title="Fill color"></button><div class="treb-menu treb-color-menu" data-color-command="fill-color" data-replace-color="fill" data-default-color-text="No fill"><button dropdown></button><div class="treb-color-chooser"><div class="treb-caption">Theme colors</div><div class="treb-swatches"></div><div class="treb-caption">Other colors</div><div class="treb-swatches"></div><div><input placeholder="New color" class="treb-color-input"> <button data-command="set-color" data-color=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" viewBox="0 0 16 16"><path d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z"/></svg></button></div></div></div></div><div composite><button data-command="text-color" data-color-bar="text" data-color="{}" title="Text color"></button><div class="treb-menu treb-color-menu" data-color-command="text-color" data-replace-color="text" data-default-color-text="Default text color"><button dropdown></button></div></div><div composite><button data-command="border-bottom" data-target="border" title="Bottom border"></button><div class="treb-menu"><button dropdown></button><div class="treb-icon-buttons" data-replace="border"><button data-command="border-top" title="Top border"></button> <button data-command="border-left" title="Left border"></button> <button data-command="border-right" title="Right border"></button> <button data-command="border-bottom" title="Bottom border"></button> <button data-command="border-double-bottom" title="Double bottom border"></button> <button data-command="border-outside" title="Outside borders"></button> <button data-command="border-all" title="All borders"></button> <button data-command="border-none" title="Clear borders"></button><div separator></div><div class="treb-menu treb-color-menu treb-submenu" data-color-command="border-color" data-replace-color="border" title="Border color" data-default-color-text="Default border color"><button data-icon="palette" data-color-bar="border" data-color="{}"></button></div></div></div></div><div composite font-scale><input class="treb-font-scale" title="Font scale"><div class="treb-menu"><button dropdown></button><div><button data-command="font-scale" data-scale="0.8">0.80</button> <button data-command="font-scale" data-scale="0.9">0.90</button> <button data-command="font-scale" data-scale="1.0">1.00</button> <button data-command="font-scale" data-scale="1.1">1.10</button> <button data-command="font-scale" data-scale="1.2">1.20</button> <button data-command="font-scale" data-scale="1.5">1.50</button> <button data-command="font-scale" data-scale="2.0">2.00</button></div></div></div><div class="treb-menu"><button data-icon="layout" title="Rows & columns"></button><div><button data-command="insert-row">Insert row</button> <button data-command="insert-column">Insert column</button> <button data-command="delete-row">Delete row</button> <button data-command="delete-column">Delete column</button><div separator add-remove-sheet></div><button data-command="insert-sheet" add-remove-sheet>Add sheet</button> <button data-command="delete-sheet" add-remove-sheet>Delete sheet</button></div></div><div composite><input class="treb-number-format" title="Number format"><div class="treb-menu"><button dropdown></button><div class="treb-number-format-menu"></div></div></div><div class="treb-split"><button data-command="decrease-precision" title="Decrease precision"></button> <button data-command="increase-precision" title="Increase precision"></button></div><div composite chart-menu><button data-command="insert-column-chart" data-target="annotation" title="Insert column chart"></button><div class="treb-menu"><button dropdown></button><div class="treb-icon-buttons" data-replace="annotation"><button data-command="insert-column-chart" title="Insert column chart"></button> <button data-command="insert-donut-chart" title="Insert donut chart"></button> <button data-command="insert-bar-chart" title="Insert bar chart"></button> <button data-command="insert-line-chart" title="Insert line chart"></button><div separator></div><button data-command="insert-image" title="Insert image"></button></div></div></div><button data-command="recalculate" title="Recalculate" recalculate-button></button>';var Oe=(d,e,t={},r={})=>{let i=document.createElement(d);if(t.classes&&(Array.isArray(t.classes)?i.classList.add(...t.classes):i.classList.add(t.classes)),t.title&&(i.title=t.title),t.text&&(i.textContent=t.text),t.style&&i.setAttribute("style",t.style),t.data)for(let[n,s]of Object.entries(t.data))i.dataset[n]=s;for(let[n,s]of Object.entries(r))i.setAttribute(n,s);return e&&e.appendChild(i),i},tt=class{constructor(e){this.color_bar_elements={};this.replace_targets={};this.toolbar_controls={};this.swatch_lists={};if(typeof e=="string"&&(e=document.querySelector(e)),typeof HTMLElement<"u"&&e instanceof HTMLElement&&(this.root=e,!document.head.querySelector("style[treb-stylesheet]"))){let r=document.createElement("style");r.setAttribute("treb-stylesheet",""),r.textContent=Ki,document.head.prepend(r)}}CoerceAttributeValue(e){if(e===null||e.toString().toLowerCase()==="true"||e==="")return!0;if(e.toLowerCase()==="false")return!1;{let t=Number(e);if(!isNaN(t))return t}return e||""}ParseOptionAttributes(){let e={};if(this.root){let t=this.root.getAttributeNames();for(let r of t){switch(r){case"class":case"style":case"id":continue;case"data-options":case"options":{let n=(this.root.getAttribute(r)||"").split(",");for(let s of n){let a=s.split(/=/);a.length===1?e[a[0]]=!0:e[a[0]]=this.CoerceAttributeValue(a[1])}}continue;case"data-treb":continue;case"inline-document":continue;case"src":e.document=this.root.getAttribute("src")||void 0;continue}r=r.replace(/-/g,"_"),e[r]=this.CoerceAttributeValue(this.root.getAttribute(r))}}return{...e}}AttachElement(e={}){if(e={...this.ParseOptionAttributes(),...e},this.root){if(!e.headless){let t=this.root.getBoundingClientRect();(!t.width||!t.height)&&this.root.classList.add("treb-default-size")}if(this.root.hasAttribute("inline-document")){let t=this.root.getAttribute("inline-document")||"";for(let r of Array.from(this.root.children))if(r instanceof HTMLScriptElement&&r.type==="application/json"){let i=r.getAttribute("name")||"";if(i===t||!i&&t==="true"){let n=r.textContent;if(n)try{e.inline_document=JSON.parse(n)}catch(s){console.error(s)}break}}e.inline_document||console.warn("inline document failed")}this.root.innerHTML=en,e.container=this.root.querySelector(".treb-layout-spreadsheet")}this.sheet=new ze(e),this.root&&this.CreateLayout(this.sheet,this.root)}CreateLayout(e,t){new ResizeObserver(()=>e.Resize()).observe(t),this.layout_element=t.querySelector(".treb-main");let i=t.querySelector(".treb-toggle-sidebar-button");if(i&&this.layout_element){let a=this.layout_element;i.addEventListener("click",()=>{let o=a.getAttribute("collapsed");typeof o=="string"&&(o===""||o==="true")?a.removeAttribute("collapsed"):a.setAttribute("collapsed","")})}(e.options.toolbar==="show"||e.options.toolbar==="show-narrow")&&this.layout_element?.setAttribute("toolbar",""),e.options.collapsed&&this.layout_element?.setAttribute("collapsed",""),t.querySelector(".treb-layout-sidebar")?.addEventListener("click",a=>{let o=a.target;if(o.dataset.command)switch(o.dataset.command){case"toggle-toolbar":this.ToggleToolbar();break;default:e.HandleToolbarMessage({command:o.dataset.command});break}}),e.options.toolbar&&this.AttachToolbar(e,t);let s={"table-button":!!e.options.table_button,revert:!!e.options.revert_button,toolbar:!!e.options.toolbar,export:!!e.options.export,resize:!!e.options.resizable,"add-tab":!!e.options.add_tab,"delete-tab":!!e.options.delete_tab||!!e.options.add_tab};for(let[a,o]of Object.entries(s))if(!o){let l=this.layout_element.querySelectorAll(`[data-conditional=${a}]`);for(let c of Array.from(l))c.style.display="none"}if(e.options.resizable){let a={width:0,height:0},o={x:0,y:0},l={x:0,y:0},c=t.querySelector(".treb-views"),h,u,m=t.querySelector(".treb-layout-resize-handle"),f=()=>p(),b=g=>{g.buttons===0?p():(l.x=g.screenX-o.x,l.y=g.screenY-o.y,u&&(u.style.width=a.width+l.x+"px",u.style.height=a.height+l.y+"px"))},p=()=>{if(l.x||l.y){let g=t.getBoundingClientRect();t.style.width=g.width+l.x+"px",t.style.height=g.height+l.y+"px"}h&&(h.removeEventListener("mouseup",f),h.removeEventListener("mousemove",b),h.parentElement?.removeChild(h),h=void 0),u?.parentElement?.removeChild(u),u=void 0};m.addEventListener("mousedown",g=>{g.stopPropagation(),g.preventDefault();let _=t.querySelector(".treb-main");u=Oe("div",_,{classes:"treb-resize-rect"}),h=Oe("div",_,{classes:"treb-resize-mask",style:"cursor: nw-resize;"}),h.addEventListener("mouseup",f),h.addEventListener("mousemove",b),o.x=g.screenX,o.y=g.screenY,l.x=0,l.y=0;let y=c?.querySelectorAll(".treb-spreadsheet-body"),x=Array.from(y||[]).map(w=>w.getBoundingClientRect());if(x.length){let w=JSON.parse(JSON.stringify(x.shift()));for(let E of x)w.top=Math.min(E.top,w.top),w.left=Math.min(E.left,w.left),w.right=Math.max(E.right,w.right),w.bottom=Math.max(E.bottom,w.bottom);let A=w.right-w.left,S=w.bottom-w.top;u.style.top=w.top+"px",u.style.left=w.left+"px",u.style.width=A+"px",u.style.height=S+"px",a.width=A,a.height=S}})}setTimeout(()=>this.layout_element?.setAttribute("animate",""),250)}ToggleToolbar(){if(this.layout_element){let e=this.layout_element.getAttribute("toolbar");typeof e=="string"&&(e===""||e==="true")?this.layout_element.removeAttribute("toolbar"):this.layout_element.setAttribute("toolbar","")}}UpdateSelectionStyle(e,t,r){let i=e.selection_state;r.value="";for(let[o,l]of Object.entries(this.toolbar_controls))l&&(l.removeAttribute("active"),l.dataset.title&&(l.title=l.dataset.title));let n=o=>{o&&(o.setAttribute("active",""),o.dataset.activeTitle&&(o.title=o.dataset.activeTitle))};i.comment&&(n(this.toolbar_controls.comment),r.value=i.comment),i.style?.locked&&n(this.toolbar_controls.locked),i.frozen&&n(this.toolbar_controls.freeze),i.style?.wrap&&n(this.toolbar_controls.wrap),this.toolbar_controls.table&&(i.table?(n(this.toolbar_controls.table),this.toolbar_controls.table.dataset.command="remove-table"):this.toolbar_controls.table.dataset.command="insert-table"),this.toolbar_controls.merge&&(i.merge?(n(this.toolbar_controls.merge),this.toolbar_controls.merge.dataset.command="unmerge-cells"):this.toolbar_controls.merge.dataset.command="merge-cells");let s=this.toolbar_controls.format;s&&(i.style?.number_format?s.value=M.SymbolicName(i.style.number_format)||i.style.number_format:s.value="General");let a=this.toolbar_controls.scale;switch(a&&(a.value=e.FormatNumber(i.relative_font_size||1,"0.00")),i.style?.horizontal_align){case k.HorizontalAlign.Left:n(this.toolbar_controls.left);break;case k.HorizontalAlign.Center:n(this.toolbar_controls.center);break;case k.HorizontalAlign.Right:n(this.toolbar_controls.right);break}switch(i.style?.vertical_align){case k.VerticalAlign.Top:n(this.toolbar_controls.top);break;case k.VerticalAlign.Middle:n(this.toolbar_controls.middle);break;case k.VerticalAlign.Bottom:n(this.toolbar_controls.bottom);break}}UpdateDocumentStyles(e,t){{let a=document.createDocumentFragment(),o=e.document_styles.theme_colors.length,l=["Background","Text","Background","Text","Accent"];if(o){let m=e.document_styles.theme_colors[0].length;for(let f=0;f<m;f++)for(let b=0;b<o;b++){let p=e.document_styles.theme_colors[b][f],g=`background: ${p.resolved};`,_=l[b]||l[4];p.color.tint?_+=` (${(p.color.tint>0?"+":"")+p.color.tint*100}%)`:b===0?this.color_bar_elements.fill?.style.setProperty("--treb-default-color",p.resolved):b===1&&(this.color_bar_elements.text?.style.setProperty("--treb-default-color",p.resolved),this.color_bar_elements.border?.style.setProperty("--treb-default-color",p.resolved)),Oe("button",a,{style:g,title:_,data:{command:"set-color",color:JSON.stringify(p.color)}})}}this.swatch_lists.theme?.replaceChildren(a),a=document.createDocumentFragment(),Oe("button",a,{classes:"treb-default-color",title:"Default color",data:{command:"set-color",color:JSON.stringify({})}});let c=["Black","White","Gray","Red","Orange","Yellow","Green","Blue","Violet"],h=c.map(m=>m.toLowerCase()),u=e.document_styles.colors.filter(m=>!h.includes(m.toLowerCase()));for(let m of[...c,...u]){let f=`background: ${m.toLowerCase()};`;Oe("button",a,{style:f,title:m,data:{command:"set-color",color:JSON.stringify({text:m.toLowerCase()})}})}this.swatch_lists.other?.replaceChildren(a)}let r=["General","Number","Integer","Percent","Fraction","Accounting","Currency","Scientific"],i=["Timestamp","Long Date","Short Date"];for(let a of e.document_styles.number_formats){if(M.SymbolicName(M.Translate(a)))continue;M.Get(a).date_format?i.push(a):r.push(a)}let n=a=>Oe("button",void 0,{text:a,data:{format:a,command:"number-format"}}),s=document.createDocumentFragment();s.append(...r.map(a=>n(a))),s.append(Oe("div",void 0,{},{separator:""})),s.append(...i.map(a=>n(a))),t.textContent="",t.append(s)}ReplaceTemplate(e,t,r=!0){let i=e.querySelector(t);if(i&&i.parentElement){for(let n of Array.from(i.content.children))i.parentElement.insertBefore(n,i);r&&i.parentElement.removeChild(i)}else console.warn("template not found",t)}AttachToolbar(e,t){let r=t.querySelector(".treb-layout-header"),i=t.querySelector(".treb-toolbar");i.innerHTML=tn;let n=[];e.options.toolbar==="narrow"||e.options.toolbar==="show-narrow"?n.push(...Array.from(i.querySelectorAll("[wide]"))):n.push(...Array.from(i.querySelectorAll("[narrow]"))),e.options.file_menu||n.push(i.querySelector("[file-menu]")),e.options.font_scale||n.push(i.querySelector("[font-scale]")),e.options.chart_menu||n.push(i.querySelector("[chart-menu]")),e.options.freeze_button||n.push(i.querySelector("[freeze-button]")),e.options.table_button||n.push(i.querySelector("[table-button]")),!e.options.add_tab&&!e.options.delete_tab&&n.push(...Array.from(i.querySelectorAll("[add-remove-sheet]"))),e.options.toolbar_recalculate_button||n.push(i.querySelector("[recalculate-button]"));for(let y of n)y&&y.parentElement?.removeChild(y);let s=i.querySelector(".treb-color-chooser"),a=i.querySelector(".treb-comment-box textarea");for(let[y,x]of Object.entries({top:"[wide] [data-command=align-top]",middle:"[wide] [data-command=align-middle]",bottom:"[wide] [data-command=align-bottom]",left:"[wide] [data-command=justify-left]",right:"[wide] [data-command=justify-right]",center:"[wide] [data-command=justify-center]",wrap:"[data-command=wrap-text]",merge:"[data-id=merge]",comment:"[data-icon=comment]",locked:"[data-command=lock-cells]",freeze:"[data-command=freeze-panes]",table:"[data-icon=table]",format:"input.treb-number-format",scale:"input.treb-font-scale"})){let w=i.querySelector(x);w&&(this.toolbar_controls[y]=w)}let o=s.querySelectorAll(".treb-swatches");this.swatch_lists={theme:o[0],other:o[1]};let l=t.querySelector("[data-command=increase-precision");l&&(l.textContent=this.sheet?.FormatNumber(0,"0.00")||""),l=t.querySelector("[data-command=decrease-precision"),l&&(l.textContent=this.sheet?.FormatNumber(0,"0.0")||""),l=i.querySelector("[data-command=update-comment]"),a.addEventListener("keydown",y=>{y.key==="Enter"&&(y.shiftKey||y.ctrlKey)&&l.click()});for(let y of["border","annotation","align","justify"])this.replace_targets[y]=i.querySelector(`[data-target=${y}`);for(let y of["fill","text","border"])this.color_bar_elements[y]=i.querySelector(`[data-color-bar=${y}]`);i.addEventListener("click",y=>{let x=y.target,w={format:x.dataset.format,scale:x.dataset.scale},A=x?.dataset.command;if(A){let S=x.parentElement?.dataset.replace;if(S){let E=this.replace_targets[S];E&&(E.dataset.command=A,E.title=x.title||"")}switch(/^border-/.test(A)&&(w.color=this.border_color||{}),A){case"text-color":case"fill-color":w.color={};try{w.color=JSON.parse(x.dataset.color||"{}")}catch(E){console.error(E)}break;case"set-color":A=s.dataset.colorCommand||"",w.color={};try{w.color=JSON.parse(x.dataset.color||"{}")}catch(E){console.error(E)}if(A==="border-color"&&(this.border_color=w.color),s.dataset.target){let E=this.color_bar_elements[s.dataset.target];E&&(E.style.setProperty("--treb-color-bar-color",x.style.backgroundColor),E.dataset.color=x.dataset.color||"{}")}break;case"update-comment":w.comment=a.value;break}e.HandleToolbarMessage({command:A,...w})}});let c=(y,x)=>{let w=i.querySelector(y);if(w){let A="";w.addEventListener("focusin",()=>A=w.value),w.addEventListener("keydown",S=>{switch(S.key){case"Escape":w.value=A,e.Focus();break;case"Enter":x(w.value)||(w.value=A,e.Focus());break;default:return}S.stopPropagation(),S.preventDefault()})}};c("input.treb-number-format",y=>y?(e.HandleToolbarMessage({command:"number-format",format:y}),!0):!1),c("input.treb-font-scale",y=>{let x=Number(y);return!x||isNaN(x)?(console.warn("invalid scale value"),!1):(e.HandleToolbarMessage({command:"font-scale",scale:x}),!0)});let h=s.querySelector("input"),u=s.querySelector("input + button");h.addEventListener("input",y=>{if(y instanceof InputEvent&&y.isComposing)return;u.style.background=h.value||"";let x=u.style.backgroundColor||"#fff",w=pe.MeasureColor(x),A=Me.RGBToHSL(w[0],w[1],w[2]);u.style.color=A.l>.5?"#000":"#fff",u.dataset.color=JSON.stringify(u.style.backgroundColor?{text:u.style.backgroundColor}:{})}),h.addEventListener("keydown",y=>{y.key==="Enter"&&(y.stopPropagation(),y.preventDefault(),u.click())}),/firefox/i.test(navigator.userAgent)?r.addEventListener("scroll",()=>{document.activeElement instanceof HTMLElement&&document.activeElement.blur()}):r.addEventListener("scroll",()=>e.Focus());let m=!1,f=y=>{y.key==="Escape"&&(y.stopPropagation(),y.preventDefault(),Promise.resolve().then(()=>e.Focus()))},b=y=>{if(m){if(y.relatedTarget instanceof Node&&i.contains(y.relatedTarget))return;i.removeEventListener("keydown",f),i.removeEventListener("focusout",b),m=!1}},p=y=>{let x=y.target,w=x?.parentElement;if(x?.classList.contains("treb-menu")){w=x;for(let A of Array.from(w.children))if(A.tagName==="BUTTON"){x=A;break}}else if(!w?.classList.contains("treb-menu"))return;if(x&&w){m||(i.addEventListener("focusout",b),i.addEventListener("keydown",f),m=!0),w.dataset.colorCommand&&(s.querySelector(".treb-default-color")?.setAttribute("title",w.dataset.defaultColorText||"Default color"),w.appendChild(s),s.dataset.colorCommand=w.dataset.colorCommand,s.dataset.target=w.dataset.replaceColor||"");let A=w.querySelector("div"),S=r.getBoundingClientRect(),E=x.getBoundingClientRect(),{left:F}=E,$=w.parentElement;$?.hasAttribute("composite")&&(F=$.firstElementChild.getBoundingClientRect().left);let te=A.getBoundingClientRect();w.classList.contains("treb-submenu")?(A.style.top=E.top-te.height/2+"px",F+E.width+6+te.width>S.right?A.style.left=F-6-te.width+"px":A.style.left=F+E.width+6+"px"):(A.style.top=E.bottom+"px",F+te.width>S.right-6?A.style.left=E.right-te.width+"px":A.style.left=F+"px");let me=A.querySelector("textarea");me&&requestAnimationFrame(()=>me.focus())}},g=this.root?.querySelector(".treb-number-format-menu");g&&(this.UpdateDocumentStyles(e,g),this.UpdateSelectionStyle(e,i,a),e.Subscribe(y=>{switch(y.type){case"focus-view":break;case"data":case"document-change":case"load":case"reset":this.UpdateDocumentStyles(e,g),this.UpdateSelectionStyle(e,i,a);break;case"selection":this.UpdateSelectionStyle(e,i,a);break}}));let _=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);if(i.addEventListener("focusin",y=>{p(y)}),_){let y=Array.from(i.querySelectorAll(".treb-menu"));for(let x of y)x.tabIndex=0;i.addEventListener("mousedown",x=>{p(x)})}}};var ir=class{constructor(){this.version="26.0.3"}CreateSpreadsheet(e){let t=e.container,r=new tt(t);if(r.AttachElement(e),!r.sheet)throw new Error("construction failed");return r.sheet}},As=new ir;if(typeof HTMLElement<"u"){class d extends HTMLElement{constructor(){super();this.instance=new tt(this)}get sheet(){return this.instance.sheet}connectedCallback(){this.instance.AttachElement()}}typeof customElements<"u"&&(customElements.get("treb-spreadsheet")?console.info("custom element treb-spreadsheet is already defined."):customElements.define("treb-spreadsheet",d))}export{As as TREB,ir as TREBGlobal};