From 4809d5ccbec0830e0855e8d5b2dd252736f9f81d Mon Sep 17 00:00:00 2001 From: mjjo Date: Wed, 1 Feb 2017 11:21:21 +0900 Subject: [PATCH] =?UTF-8?q?-=20Excel=20=EC=A0=80=EC=9E=A5=20-=20MaterialSk?= =?UTF-8?q?in=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ConfigForm.Designer.cs | 2 +- ExcelHandler.cs | 142 +- NewsCrawler.csproj | 7 +- NewsForm.Designer.cs | 10 - NewsForm.cs | 2 +- packages.config | 1 + packages/EPPlus.4.1.0/EPPlus.4.1.0.nupkg | Bin 0 -> 1291556 bytes packages/EPPlus.4.1.0/lib/net35/EPPlus.XML | 32621 +++++++++++++++++++ packages/EPPlus.4.1.0/lib/net35/EPPlus.dll | Bin 0 -> 1249280 bytes packages/EPPlus.4.1.0/lib/net40/EPPlus.XML | 32621 +++++++++++++++++++ packages/EPPlus.4.1.0/lib/net40/EPPlus.dll | Bin 0 -> 1250304 bytes packages/EPPlus.4.1.0/lib/readme.txt | 122 + 12 files changed, 65426 insertions(+), 102 deletions(-) create mode 100644 packages/EPPlus.4.1.0/EPPlus.4.1.0.nupkg create mode 100644 packages/EPPlus.4.1.0/lib/net35/EPPlus.XML create mode 100644 packages/EPPlus.4.1.0/lib/net35/EPPlus.dll create mode 100644 packages/EPPlus.4.1.0/lib/net40/EPPlus.XML create mode 100644 packages/EPPlus.4.1.0/lib/net40/EPPlus.dll create mode 100644 packages/EPPlus.4.1.0/lib/readme.txt diff --git a/ConfigForm.Designer.cs b/ConfigForm.Designer.cs index ab646f2..86e027f 100644 --- a/ConfigForm.Designer.cs +++ b/ConfigForm.Designer.cs @@ -584,7 +584,7 @@ this.label9.Name = "label9"; this.label9.Size = new System.Drawing.Size(132, 12); this.label9.TabIndex = 20; - this.label9.Text = "Version : 2017.01.31.15"; + this.label9.Text = "Version : 2017.02.01.11"; // // ConfigForm // diff --git a/ExcelHandler.cs b/ExcelHandler.cs index 4e14109..21a6c43 100644 --- a/ExcelHandler.cs +++ b/ExcelHandler.cs @@ -7,11 +7,15 @@ using System.Text; using System.Threading.Tasks; //using Excel = Microsoft.Office.Interop.Excel; using System.Reflection; + +using OfficeOpenXml; +using System.Drawing; +using OfficeOpenXml.Style; + namespace NewsCrawler { public class ExcelHandler { - bool m_bAvailable = true; string m_strFileName = ""; string m_strToday = DateTime.Now.ToString("yyyy-MM-dd"); @@ -20,52 +24,26 @@ namespace NewsCrawler m_strFileName = strFileName; } - public bool IsAvailable() - { - return m_bAvailable; - } - private void Create() { - //try - //{ - // Excel.Application App = new Excel.Application(); - // if(App == null) - // { - // Util.Log(Util.LOG_TYPE.ERROR, "엑셀이 설치되지 않음"); - // m_bAvailable = false; - // return; - // } + FileInfo newFile = new FileInfo(m_strFileName); + ExcelPackage package = new ExcelPackage(newFile); + ExcelWorksheet Sheet = package.Workbook.Worksheets.Add("first"); + Sheet.Cells[1, 1].Value = "날짜"; + Sheet.Cells[1, 2].Value = "기사 시간"; + Sheet.Cells[1, 3].Value = "받은 시간"; + Sheet.Cells[1, 4].Value = "요청 시간"; + Sheet.Cells[1, 5].Value = "출처"; + Sheet.Cells[1, 6].Value = "제목"; + Sheet.Cells[1, 7].Value = "종목명"; + Sheet.Cells[1, 8].Value = "시가"; + Sheet.Cells[1, 9].Value = "저가"; + Sheet.Cells[1, 10].Value = "대비"; + Sheet.Cells[1, 11].Value = "고가"; + Sheet.Cells[1, 12].Value = "대비"; + Sheet.Cells[1, 13].Value = "링크"; - // Excel._Workbook Workbook = App.Workbooks.Add(Missing.Value); - // Excel._Worksheet Worksheet = Workbook.ActiveSheet; - - // Worksheet.Cells[1, 1] = "날짜"; - // Worksheet.Cells[1, 2] = "기사 시간"; - // Worksheet.Cells[1, 3] = "받은 시간"; - // Worksheet.Cells[1, 4] = "출처"; - // Worksheet.Cells[1, 5] = "제목"; - // Worksheet.Cells[1, 6] = "요청 시간"; - // Worksheet.Cells[1, 7] = "시가"; - // Worksheet.Cells[1, 8] = "저가"; - // Worksheet.Cells[1, 9] = "대비"; - // Worksheet.Cells[1, 10] = "고가"; - // Worksheet.Cells[1, 11] = "대비"; - // Worksheet.Cells[1, 12] = "링크"; - - // Workbook.SaveAs(m_strFileName, Excel.XlFileFormat.xlOpenXMLWorkbook, Missing.Value, - // Missing.Value, false, false, Excel.XlSaveAsAccessMode.xlNoChange, - // Excel.XlSaveConflictResolution.xlUserResolution, true, - // Missing.Value, Missing.Value, Missing.Value); - // Workbook.Close(); - //} - //catch(Exception ex) - //{ - // Console.WriteLine(ex.Message + Environment.NewLine + ex.StackTrace); - //} - - string strMessage = "날짜, 기사 시간, 받은 시간, 요청 시간, 출처, 제목, 종목명, 시가, 저가, 대비, 고가, 대비, 링크"; - File.AppendAllText(m_strFileName, strMessage+Environment.NewLine, new UTF8Encoding(true)); + package.Save(); } public bool AddRow(string strNewsTime, string strResTime, float fReqTime, string strRef, string strTitle, string strCodeName, @@ -73,53 +51,43 @@ namespace NewsCrawler { lock(this) { - if(m_bAvailable == false) - return false; - if(File.Exists(m_strFileName) == false) Create(); - string strMessage = string.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7:n0}, {8:n0}, {9:n2}, {10:n0}, {11:n2}, {12}", - m_strToday, strNewsTime, strResTime, fReqTime, strRef, strTitle.Replace(",", "\\,"), strCodeName, - iPriceS, iPriceLow, fPriceLowP, iPriceHigh, fPriceHighP, strLink); - File.AppendAllText(m_strFileName, strMessage+Environment.NewLine, new UTF8Encoding(true)); + FileInfo newFile = new FileInfo(m_strFileName); + ExcelPackage package = new ExcelPackage(newFile); + ExcelWorksheet Sheet = package.Workbook.Worksheets["first"]; + int iRow = Sheet.Dimension.Rows+1; + Sheet.Cells[iRow, 1].Value = m_strToday; + Sheet.Cells[iRow, 2].Value = strNewsTime; + Sheet.Cells[iRow, 3].Value = strResTime; + Sheet.Cells[iRow, 4].Value = fReqTime; + Sheet.Cells[iRow, 5].Value = strRef; + Sheet.Cells[iRow, 6].Value = strTitle; + Sheet.Cells[iRow, 7].Value = strCodeName; + Sheet.Cells[iRow, 8].Value = iPriceS; + Sheet.Cells[iRow, 8].Style.Numberformat.Format = "###,###,##0"; + Sheet.Cells[iRow, 9].Value = iPriceLow; + Sheet.Cells[iRow, 9].Style.Numberformat.Format = "###,###,##0"; + Sheet.Cells[iRow, 10].Value = fPriceLowP; + Sheet.Cells[iRow, 10].Style.Numberformat.Format = "###,###,##0.00"; + if(fPriceLowP > 0) + Sheet.Cells[iRow, 10].Style.Font.Color.SetColor(Color.Red); + else if(fPriceLowP < 0) + Sheet.Cells[iRow, 10].Style.Font.Color.SetColor(Color.Blue); + Sheet.Cells[iRow, 11].Value = iPriceHigh; + Sheet.Cells[iRow, 11].Style.Numberformat.Format = "###,###,##0"; + Sheet.Cells[iRow, 12].Value = fPriceHighP; + Sheet.Cells[iRow, 12].Style.Numberformat.Format = "###,###,##0.00"; + if(fPriceHighP > 0) + Sheet.Cells[iRow, 12].Style.Font.Color.SetColor(Color.Red); + else if(fPriceHighP < 0) + Sheet.Cells[iRow, 12].Style.Font.Color.SetColor(Color.Blue); + Sheet.Cells[iRow, 13].Value = strLink; + - //try - //{ - // Excel.Application App = new Excel.Application(); - // if(App == null) - // { - // Util.Log(Util.LOG_TYPE.ERROR, "엑셀이 설치되지 않음"); - // m_bAvailable = false; - // return false; - // } - // App.DisplayAlerts = false; - - // Excel._Workbook Workbook = App.Workbooks.Open(m_strFileName); - // Excel._Worksheet Worksheet = Workbook.ActiveSheet; - - // int iRow = Worksheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing).Row+1; - // Worksheet.Cells[iRow, 1] = m_strToday; - // Worksheet.Cells[iRow, 2] = strNewsTime; - // Worksheet.Cells[iRow, 3] = strResTime; - // Worksheet.Cells[iRow, 4] = strRef; - // Worksheet.Cells[iRow, 5] = strTitle; - // Worksheet.Cells[iRow, 6] = fReqTime; - // Worksheet.Cells[iRow, 7] = iPriceS; - // Worksheet.Cells[iRow, 8] = iPriceLow; - // Worksheet.Cells[iRow, 9] = fPriceLowP; - // Worksheet.Cells[iRow, 10] = iPriceHigh; - // Worksheet.Cells[iRow, 11] = fPriceHighP; - // Worksheet.Cells[iRow, 12] = strLink; - - // Workbook.Save(); - // Workbook.Close(); - //} - //catch(Exception ex) - //{ - // Console.WriteLine(ex.Message + Environment.NewLine + ex.StackTrace); - // return false; - //} + Sheet.Cells.AutoFitColumns(0); + package.Save(); } return true; diff --git a/NewsCrawler.csproj b/NewsCrawler.csproj index 23e6c96..738c8a5 100644 --- a/NewsCrawler.csproj +++ b/NewsCrawler.csproj @@ -71,12 +71,13 @@ icon.ico + + packages\EPPlus.4.1.0\lib\net40\EPPlus.dll + True + HtmlAgility\HtmlAgilityPack.dll - - ..\AutoSeller\packages\MaterialSkin.0.2.1\lib\MaterialSkin.dll - packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll True diff --git a/NewsForm.Designer.cs b/NewsForm.Designer.cs index 71b8ce2..a63d9e5 100644 --- a/NewsForm.Designer.cs +++ b/NewsForm.Designer.cs @@ -43,7 +43,6 @@ this.btnConfig = new System.Windows.Forms.Button(); this.chBuy = new System.Windows.Forms.CheckBox(); this.cbPriceCheck = new System.Windows.Forms.CheckBox(); - this.materialContextMenuStrip1 = new MaterialSkin.Controls.MaterialContextMenuStrip(); this.lvList = new NewsCrawler.ListViewNF(); this.chId = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chTime = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); @@ -214,14 +213,6 @@ this.cbPriceCheck.Text = "가격 체크"; this.cbPriceCheck.UseVisualStyleBackColor = true; // - // materialContextMenuStrip1 - // - this.materialContextMenuStrip1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); - this.materialContextMenuStrip1.Depth = 0; - this.materialContextMenuStrip1.MouseState = MaterialSkin.MouseState.HOVER; - this.materialContextMenuStrip1.Name = "materialContextMenuStrip1"; - this.materialContextMenuStrip1.Size = new System.Drawing.Size(61, 4); - // // lvList // this.lvList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { @@ -374,7 +365,6 @@ private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel3; private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel4; private System.Windows.Forms.ColumnHeader chCodeName; - private MaterialSkin.Controls.MaterialContextMenuStrip materialContextMenuStrip1; } } diff --git a/NewsForm.cs b/NewsForm.cs index 1a79f66..381a120 100644 --- a/NewsForm.cs +++ b/NewsForm.cs @@ -153,7 +153,7 @@ namespace NewsCrawler // col.Width = -2; //} - m_Excel = new ExcelHandler(Util.GetLogPath()+"/PriceCheck"+DateTime.Now.ToString("yyyy-MM-dd")+".csv"); + m_Excel = new ExcelHandler(Util.GetLogPath()+"/PriceCheck-"+DateTime.Now.ToString("yyyy-MM-dd")+".xlsx"); m_CrawlTimer.Elapsed+=CrawlTimer_Tick; m_CrawlTimer.Interval = m_iCrawlInterval; diff --git a/packages.config b/packages.config index cd75489..e6c939b 100644 --- a/packages.config +++ b/packages.config @@ -1,5 +1,6 @@  + \ No newline at end of file diff --git a/packages/EPPlus.4.1.0/EPPlus.4.1.0.nupkg b/packages/EPPlus.4.1.0/EPPlus.4.1.0.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..8d5f12f4399fc0ac3c0b50ce14ac990c95088b93 GIT binary patch literal 1291556 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%0DR9NMY-;Z%$|pt6PTsB%Ds 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
tYUml8f`Y0_MYeGqq84*44(68 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%0DnAayn%c3U;h)F$Ek(OQQtMUn|G>!H7xKDQ&B5P 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

`n8xum*F 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

    p=-$?#@+RS-=8AalOiow$ zVl+8PRGl6cNJ~ar%+w|=XiZM)Q@%9bFZnI1@HaWJPfZHA{yOKa{(bOM6@;U>OIY=& zpy{620xe;I*1eVJ%}z>s*DX>JDXH;WSP9jEtjzfbkmb~8RhMt@kMs03;& zg*`9PhfI!?6A5_ANObKcxL@ng;8j%jR!KdSA6;&bO7yY=tYf|%70NEB zdq6w;<0U(tYgw?VT@6pH_IsyKW0_%;HNGed&K>1WN6$p*th%ACbW*N72T0!Uln>C^ z{bzl&#JT+blFHRXmCK$3fVxmVqL!KtP1kQasO!&bt9V?_;*!b-4>;xZbtXDs$_&2T zSz1@pT(3NL+5Nkji)MyuYq;s$=(^f*p6vZAarJ((7j;mZ?Jo7Lo2B}1k^^bo5g%RLC0RA1|6u`Fuz9Ha)dWgwxy03Ti?F&m? z`HA{_$xl%Kbt2cIOGFC&2-+iX7^QL+vSe}uyMli`)nwh%Tvgh}K$L4IN3rY3tA(L9 zQ^C2-G%~if{351V4|4UHPGXOk*jZZ{vA)AM!(vmG53o+EYL$=MD8S2)lG<{J^#E(E zb1LiTPRZ2ADa)w?B^lQ{RRr3Kx?LLSvs1~kk8hNRlakgGE67{-p!z4*&~&V3d9)&> zE_NTS%ypaxO{#$&(-68JGwETcX|KsK7j>91QuFR3v0Kloc%(EVs8QRdZA>Dhd5o*e ztZdok3q^1{9sRkds*EG{KI1sJJD`rX>u0GW^X2{OaQ^z08g=~luY5oqu}5D#C5}=p zeuf;d!BqDxre3F1HyZogh)H|6u!jwnuBfofD<57@webO}kKL2&p)!qC6@1lP7C?Gb ze7b`c=mZO>@)<4>f9Jtp+(dL*DVx@FRRkr%nESsj*#CmaUGkctqdSID%AcUr-ma62P zsR)<*v$HI9)(rhTIDLjKXR8SGs(VXkHp>x~pDn`lCkG~Rd--T`d&L0P2et5hUXx}2^0(w(MRI($9X*8RA_g%E-+U>nf+kd5_~>Cd_x02-|u%u=H@F^C9)zA@#FX zP$KHNMV+?`!cF3obTCm_D^G3|@7&7c>2?#FYVK!^qRMa0-~%o$zw^RRxd;ftl>%sU zyz+_!YOCb!V^JF_pWeoW%!W!F4g85)xW_#}dBXV!`$i`zu_H{1jIoQyW1$G9q(y*f zk7Kq^Vr?Erk>@)Yo}y4!4O9=#_7eyBWPWdhIYQgd9p_#%C+H+5u(mUIz4SIlM}>vq;$+R6Op|9i`@`DRY0 ztb9nB6G%OVIBoJBoS}f=MdH7uR1jr?&75_b6ZMo3Q2A4ol;E^$Cuh;e8d0q>#dS^P zJ9}uqETleh3k6ZXAvWc_PYSq&JKpaz%-C6Cs?=GEotn1bThE=e^0E#iZ!Mz-r^{%j z&GS}Enb|!#_cBA4Prp}ocuKG{wui%yYr&hvbMtdI#8E|xqYBNuA zy}3e{3CN63&Nuy*db*vKqvvG6v#)E|Ui{|TzN|Ie<~vwlZvVHZ9y3q8oiyL( zlcYKwc$=v`{B}}nCoAim@*>RJPVui=itQ4(^4Z%Z58igk^~5_%uXWk^)LW!>_gx(7 zHPo*#U{v2SX>`5H41ucS`$a5SUEG>_vT`^pHho=JV&Q?H%-#wL%i zt{(Kf&+#fJO(C6NC8o}jBIQx39=*JiU+TEuX|Tu4u=u{g(T!=>P8A~qrNbx<1Jm?u zSF3vf4&}j+nIcbrP;-%;63(mSC8Ev+pd>jkLN5cJ9#3SXmchvcC5{*Z0=}|1D5v~8lqTtNK>k8Y*JeA~LUS>p`!MpJ+{57|Xw%*su z^ENy7-QY_6%gYbWnQR%&pRBjp@h@aw;_nfat96lbhnTB}X|+Y5zUZ8?Y5L$ws$!L$ zXX)gC*2w`^I|=&|{x#f(+$HXW|JD6&Hh#`x=myH(zHP~ z%?4$I%GLjv2KrL6?<@OKvOzYb`2##+2~YXZVOjc-p*mUGn6^fb;l>A?kTP3?T9vJI z$pB^abV(+5vH03Jnsi8)q(i#O9#YMqp;B~hW8}Hh^MB$pk@EOk?ksawh`GKTbd%J` z_41(A1}&4;zFq>a5g3>gymDP284QK0Lyd_B0rC2(P`pV@vzP^9TEw*CzGHk#K7U+5 zp#iS0V5mN-mp}s4CsqP!La^6}Su17(0#2LD?>0)nJqY-AFccMcS5+v{EB@jJ@$9VC zgc2h!N>J`u;2jZ!b#Ocx3?*TI7vK?mfx8oTbXrHVbu?K=%sS>-N76bZ!FXmo7^#`J)*Gay_Ic?G(mo1s%w?o_=D83ZNy#~-VM2?Bxtg_` z7vyhYSacWk=xZLMBJyZGv|IU?%`tD4PK&01N>IjF?@GG>@Zf*-et(I-4+olUQ0ay!w zy2vd@cBq;hcqTW1@BD{q5hxWAA4P5CP%k;w^$5U&0EdJtYQU!70fCPIJPPnlfNz1` ztw^NQH*!a;YqWqicmXJTOHWZ*xnqd&Jir71Yw?GuomcSmC4@<}$MX*29)S4S6bw}h zAt3~yk@8@WJQzDKQmYZwnBQp2pZO6=bO>Sd08+saN-+8uJTcRX`6lF5i=eIG@LUv? z`|eykk$DElX#D(I)(n)L->f3bwc&?D?9AxhLno9_+_#KGz+43k zAO#4VL3H6k^zQ=7H%Jt8`~o z>_4mrOqMU=^ zwLz3_@I+mxd_8PfV?&w`?wu8?yu}rP2O^=;&A5ntNMq|&tq6c1+3om3QPjaB08az3 zfKS+R4T58aSo6zK!oiaz`a$a`q|X@mbT_*25W)(m_1$34p<`Cq528ATP@JJBOq~oJ z(ucUh%#09|Fr2T>y*^MU0nY zDB#$$CjJ=GEuy;@lfXy;K-3p8HjhEzW*!I2J_8g8wW5{A#RY~)3|&RAT8=~DVZ?3& zSZy)MRgWPEBCps90NG#UPzpg`M12jT6BNe*z+uG$01!IGLjX+R2>@mR!C!n90NuWb z5xt0hR(uWs{5QP1hW94H2~flsP{bfRTy05%;4j*KS43?NL*f+COhr`bFb36O464JZ zp<&d}FluNR5@C1&0197x$s~gKiQG344)HX+(}sg9hcTcHqfEnx!g?JjICzh()De_m z57ehU5P^HZP_?LqbJf$ZPYWd-jZjyV{=_Q;qMe+cA0gxY)vls*JXA40Jn z0=W-i6nqGUc?iP%A+W|nkhKq?s1Gp#@XSMK#D_3OW*;-`D_VqjN6>RdPN09`rdd(@ z3}1?Z7YxNB*@KXgEU0FgZO1Ej`^)N^Q%sRTk)rVD#-&q@}H1Wrom*ke@_l zjbW%9L#G?VfIWtR_#rUX*z>g^d)XSEzGz3c?3Zd%0XN|S#_L0=V9<@>rk#LHZ^W(& zBpO_|7I$xn9TGIB5oiHE$A!-Gcrj5>o`;%Y-Mr#}y>7~8`iLH1pNz>K~wm`iXk+9+>AwAw@olnNQq=XuZ2_5cq zigyW#iC&~#1fgD{S2KOmt5sY6HCebk^U&1glR*=(&tUJ9|A@KDQ365W$cv3Nb&@S? znIn18vKtDh&<4k|yemoOmjc(ZLXQwWqUk;*lT7-bM2+rbjqY?M^~`tWp?Di>f)R%l z#KdUzO_=JFy5L=IU=rNLl*xF^HiKtjy1;YQw0VUeZk0xEg%U?dHbNF7D1cB+{IhXdPk~!{l9BD|1j%lrTx+ zP#sxszrE6UDN@yP8i=6?N(}`&JCg$)KPA@xXuwhqZx%y zjGU2L4YDy#u^J@A1sgml6;+2e{;mfuGz9*LRrHir(NmI7l6;tXkx9mQf7f!tl`P8Z z8twHkZ|U>uiM*Ha2{Q0bLh^2IlP3F!TFSp8gikZEXEm{BYtf8_SbV2;qHI0xU=tSz zos+6%6F*3*Am{}dwtd8=|;W_kV=P=4fV!cM5%U-Ot zesO&Ym$>hXM5Hr442kM_6tbw=?8S|q>r}zPS`6A~nOE4W3gUO!;{<`1B|C`$R%eP? zWdKKBV@Di<_|u*t0&FYqT!Rn|N(Q*xE!zqfS2gEVDW*^oqbp{@!YzT|d`Egz3obrP zx{@vL^Q8>RwkEP|;>0poc9oPtT1|Reo67%@*My0@WN;R)eZ*~px-R9?pLwO^C+WDS zEU}3dMs~<5WXtbq0URC&%4$fa#NEn+6Y{Tpc>>)ABx6k_Y0E^9CnSSnqvybDpSf-_ z%rPuxZCC5No>pd}4yAlhB>?ZQJ}RQl3?a-KopzSgtyn>Gq2@RnN&2$%e7K(XG%TR> zvH^M%y>%2a6BJj%0G=nlr$pdL1ArCaVfx<KN;>tmEa}UjR$_gayp)V7jY&FU;r1#I{kG1LPN6{>#-1!$#DcM4Dc3XAj&vR0h>~q0iytF= zP6fkrmgA&FA0ewhNaB^(q+imKB1J&$tCEIil&x2Vus|Jzh%m8JRmbZVL5q+V@OyKV`YdZ7a@S zc~ncNy(L>wS{-ZmD-?>nX__RFXHajheKLn)oECPm=V^ zQ_s9QcAO&=2jpBC1u-NB@?6TJa*#j zb4F!)6*x&N$xlIe$iTnf!=#(4O`hf=<=n4C!6is6wB(+7 zvQEi>{=0vc(oHvzYFYx$e1{d#q&j4lj7+)qswc`Wbt#oN_n0~fmYdPESt}c`l@ztP zYL!KKwvD`mJDVr82`6wHyo>S6)A4Bm+qp&CxrM_IM!!}a)>~N?_-wsnbfit!Hk?c{ zvF%K3CllMY-LY-X#Gcr;ZOz2)*tTu;o9lkQpI@*3vHR#_qpHr;UD#`v_Oix6C=`X9 z;;T*&R(^z6D=lob0GiH&yJ<2)HDjZ0`HC{z7}mV%wd^0%fFjglS20<>J}F*~Sp^Cc zy%pa9G7hqYG@kuj*ZzFpWJ2Xg&Xn1HU$~$*3Em0QVY|Z>Cw4fFhC&`KW$m%p#9+pX zmDzIwnWT9qO?a-NeZ-kWWyR1O@P{&k#$S#c&EpOxdAD4VW=m4A_x>idTr15pmPup0 z`m;xa%^lH&t5p^LZG&mawY;R~9y8RZEx~aHXBlUS#YG3MfDxaf{kZRYofRyvc<;ZbCatoEdazo-ISg;v?deQzJ@RVLfVcm>%iO{(PQX|o=36gwuL&vJ6y64EaZ?;g9F1ccij`q=!RN4(r;z+q3oZ#cnhSTd{G|(pXDBP3>PnXF zH+;iqS%U?oI{bCyFb}6Rp~1L@&5xM07u?CJB|U(@<3yT#)ozP3;Q<0XB1M|z?q-T* zZYoqS@GzMiqh9wDq8tZeGq_fN?2TO=tmyhN`p)cEU`4hECUD%Py%0{5USxH?qfgvL zliWokygnFoyVppHk>uIAR|)qYcQ7|UN+ypa%WTScr$~BMvZq%ev1#lb_WvBTbwP|p zfPm_67XGKAGz}##D?H=8>*5;$q=C-8`JTw)QaO&S_(qg-*v}Dc)819b8qZw=k7(zZ z+_ZIWbs^WzVO_0m)2x%VvA-y6eQ}FsD5bKnRt)4aofB46F7}5&odYO)OYbN5xV_BX!!h-n7l&=$LR|RXLK00yS_%%7H$a=6G zfrUz}FViXT?L(8M)d8^MV#uR)J;0fdrfG}V?Fat`p-HN_*9u_4jEONl;i%zM>CG@? z7||=)_1~0Mv-A8o^)rb{T7&J2jJTBvt3>~UjY3XcV>FcYhwjzY!PoVuYc-7v4eiIy zXP%C7?a}u^j&1G*PijRyzQ5!WN^DGyDL3B$arVi$O=`hnz@ES55s)N^^St^hDXgRW z&170Be+zOuT+3tav)cuV;U*g+-koH8oKWTQBX_gt8VeMA@=ovJaWeD3`7wd~^504B zMEKtPC{zh<&bJ!TuNGcaDpANJ1*!>NT%~DMkx@owC_LnrnBiHF&&F6~f6Nh(6~F9h z`9%I@xPb4b&G8fe#QozJl14i>=nTePK2Uu@lwvgaz;pOd8J!xI^45Y+fck~JK&IL# zk7XY)OPaE#6$94FGLXFc2U3`)7Yo?x_`=dllj9Jgr-mKsdKP_@>Z8Os56uJ!*VWUq zx3Bu8QwD21$ev?Zo`BCNzu@`1LNwjc@)|9wIo%=OqTM^i#Xe^%3B&FOIiNNkq}M(% zyzU7{TOS%>czr)gnR;sFKew(%m;?R~6egn8YQ#}wO_eWYG{M64o(dN2Q&MGL?t4Jm zoDv0z!AK6c0khi(?ja`j>$8!gh1Mv9mL22_B|WBW=bqh}p2Vxfv#GoPQC+|`bh@g; z7pXkS(u@go*iMp^Idf!i$aOW4!rN~=G8*655HKr1o9buJSRW${6M1R$irpDzPtN~;OmI!7O#p4uZ7$@Q5EorcLU@;xSv32E-vVu zQTn-HF;ZV11Am?=Hy>o1qnACg_1bXXjxC7F^irZdqQ53_>4ewpClGjrL~+P{*&}?S z^|#SA{#S)U3kUdiiD5JnY;WYask%5wbYghid8f|dNHV&XJ4je6br(Ny7k@zEfa`Z? zuu1PzwdIkgm=Y_LFaP|I7ukEk=I09~XU2bywS-lBNY7ZCcSE7I}vsE)eiO%W?2b8K|cMthwiy!>|d{iUc@ivho%iN}9w#S-f?*6MoT z(O|yg%^VM`8;g^@%ax(j7JLEkN0u~-I&j*7MLLWGH~2wSh}uA|5{7+7PtzDfzJUhs zqB5AkR2ey0oLpT*4u>e*Ql?fPZKu+2yurDGjrJL~h516QK@H#m`w6V;>SoH%{uv*j z;DYYWxSM61%Qq#6&891}ds$F0%D_mNltc0|T)vR^yDS3tpMlLrPKV>Q7!>4Q-?n9z zFmjYx_*CYO zA8j8-Z*Z{FueqdOu*&_Chw#j0DV}~f%Vri$wcc!pbm$l3nDePJ)p>WrkrRomp77RO z_Xvp=?jG2aoi;i861)mAkod{ha!=st-)hnh)P;pbk}%LS;`bbw0-s4)>q^JKZz(dO zjE3zA3d(iNwlO)2CgQ8a_MmxVob}Wds#Cr8^yFUn8V#NN93I0<^G-0vs$Y}nsH!Mt zTBS8~Hs4t17*4=DDlYOTW0USN%7wU+3)&T6+Ebrp@swF@w*e3RyVrbFA6TE&qj~gB}tS>g2T;l-!l-2ZJWmpx_;mzo$GpofCwr zAf=w_Cnqq z81Zy!XPahd1x#CYSxDvtN6(6o;Sn_zB>$@|oV#cRDL&h_Wk`iR8wcysn5aWfvrSS4 zNTRG4BEL&ga+!! z411cu0$aIcV-mj!4%Vp5f8RH783`8ph?9yaATW7zIsBlo@b~MEr~c701QakA#UZK4 zVdqpw3fW^Lb?(OU`11|%kD_IXZH{{GL?h*eN&RMQpFxW*!VN=;C#(Eg9_g2@@&pli z7#?Gp?^!$U6uBORpFpCidbMYaMps%8cm^%p)^e<5;H=}Cso}#$m4+k|wE}PgIZ&XI zR(1Od%s8DLg)I3;S|pXzfp`*B30MJj3*PehOxU;aAfxh9Nl$tyYa|L}C_v=oi}Vh2 z64aei9NdpLC-uxC1y?OXTNaaeB2qj)REWf6IO?6McyyvitD?n+KNq7s?9on%GAD;r z$HyXW#>e>dBZA|~c}SCs_H?CH+f9>&)gZx90D|LRbxIz3l=A z;FE3=b8)I;HgA?CFvU{4_%5=ZZ^x%uy`a^wRu5mYJ-Y&~EdkdNk$8gTeS%iqja7$X zk+Bv?i@L=q{x@y@ahkVAVLUV>#nCLJj*5ADKQ%GsjQ{18h9Ml=$}Oh$c~MePqgvp{ zV`i5C3O*zAqj|JX8|j^dPP4Mz9ho#mpt$RzbIK&I8i%V_O!aER1fyI8I<{Sa=LzOqws=@0P(zC~$;EXGg)^_o_xvv0(cwiC*@ zv=`PLHetFoTaOwvl;v>34s5inSr34=gu8%%1sd448jT}Xa1c$+R8SOmL4`^PD7M7HT382!jQBI>Z!AEdyAhB{dl7>EDVOuBc1HT3JCo9qkPKNUHPIs zU9Bpzc-|8Y1W2PUf0sxck1?hegL*@WWDy9b6HyYFB(b@6P2!xu&CgkQt9-svh3^G{ zCCXeOUNWqs_2QaA(m=6dyr1`cuBFHo9p`Ag{hNcxASpZ{!ZH;)eFc3X@%58RQ>u%zH}{%Y$ozWr?FQN6L~=P{@>;j zfGFt`Gxon@5u9rmL-}YzyQ&@V87~9hltMm6g}H( zQoY5$&Zqqe3j8f1hC(8!!BF-7dRfCVM=lXmBqNHfoHs<+0eqN9%iAy-CI*hGdbu=H zQGr--$l`26eeeBHjX4qdKhxHa0zQ*U4 zRy|;)>@rU6E9jBf++=7`EOAy7CTaZ`*wlC$&U=FxDdCYcihlC<9O-wGNqd&SvT?Sd ze}TGjWYzL~v#XF6Y}u21*-_h`iISWmyOXQW6ERc^$1IsN_1uan!`)fwHWfkHuuhUFe ziV>5(nZvWR%jw(BIugau)Mx;$y;tWU#^)rzxsCt%^^L!1acmxJuX>fBx~EY|(Ri@9 zEuxf#g?#B)n8j1eBeQMT;CxUxSWQS#^F~-xznj0|Bm7o$KI*iAjyx5H|wm$@LWBGH+ z*w~nZ8eGm?FL6is(AfI6ztU^MBQ0^#xW=`D%3wZSE`Ba!*X7hJc2~VVsus=pq_Qnm z3mW4raMn36glD^6QjvNkmCG3GZ7s2~h-+qhK51H}xwMP#-(k+5X=jUF-1Y))qMsAx zt~Z`tS^^VF`=@d@X|t};IY$e3e6nkYYlcV4Tb|0L3gV1w7>1_P#)v!pbjoS~dNl9>_ zUk4OnCx?ZeH-Bg_j+h2TW#;m=72E)x4uI#poY;lx&2>)wNV^vc^y}bpW?ZYZX!eN; z;-UP60iv+WIn*i0_BCK&(CR)Pf?(CzO}}0o@#39gKku1t9ey;<9id{WLw}YwLhkHr zSH1+5FMj5~A}`StWq6d@!=9j< zPm+y8pG;0npMSi&Dy6b~pMNC~*w5gAZ2UxA>Qb}&(PLpZA9bajIFhvpF@)jA1?sO; zna)b$#e9lyFZdxo3nx^*l0J5Dw7c&i7Jy?H-d&(@UuUk&OA`!UPY?3ST8X1 zfz@c!qk#$X64$K6!fZ_h_UlPgzx#OybL8!Sb8$YT3(YN#9FuXF65l z8~OeB0j%>KR&8PQJr+SZFe{A;+!p%PWOpdrwZ@w^-EBdMCwN6GG8FcVU{c; zJ$)^L!^|YwX!#15ydBFegKYxI`1;uTnt!7*Ud3F49gGOql+u7kdS6HQZWSrd&|30M zVz}3bEBIsd?G-5zBlM@2EqFc6NN+;+>6QQ5!n~(V?R3+guM^F;wn`|B_A(m9rkelJ zvJ65hXuh}BI)bFtbh0*lYqOqRdD?EfX1q(mj+1JS(6=8WFsg-Cc0FN>8!r8Q=-SKe z8FMnnxQE5wv-G!rX+|v^IU%~{1(PN80${D+t9Gz8aasnh8}sSdXVZ3vv*V z=B}@Ar^|6*DTQ~grEnLY;C}Jk+>tI0>R91llRlpnWf^Y2vtHg)Q`0{*p>%U6Xn?QK zBXysgwL9V0?uAxoV)L!iF^M3P2_Y$ggHRO4GLcB#mM#Qz3+(Q^7uYw>pjlqOJ81DW zLDl{SWW+4NX5QTDT6v&fjY7RFM#^pS@jqm}LHL0z_O;X-_ZHdr7POoe)H!(@37tFv z324zS4uNk2#28;|A>g0k?;Jf)Uq@)AJL^hw(W#2K*JW+Rb5g<7?<=svQulq@>tJa< zSm0;jKEc=0U z+8mD0IR7?eX{=N!VD*4A)G>t>&LP5yFTmRu-d^a-JO!;EEE z4NRX?fg5pL@qyumZDoaBRDFa|&Q+@MNG;deZz>4rJ0ot9^;iEZ~x)*`iY#xE1H8r!vYJe1C|lJ%hlW>? zErcWZys~{E*tBjP40ioTHXVIQN{`R7+lo?QRR=*O%aXX%A&_6n6DCVj)E|UovxnLz z34TY;fA?*?ITcngrecC{;irW9?ltibt5Ju7%=08Ki8A9puj*CJV*!eMk`Aqf7Y&gV zl7Qep#go{_=A!$CHBQw8>K%`X7zZYL`riqg`B_N3fp5g zl4N2mJHMD`TJA85KC!aUzs$bvImaJt@&lV@G4c$@Kk!9SDHb~pRRB0*=bGpd z#WY)O=KcGRNUbM|W7@4xG*>@j@MN&geyJ>L$w&{U9Jr=0>1G zwX`M!T>8$3C0~%+2uIe0q|YKsgWux-ibZgO)}eweI+h#q_hBOEshkChDH;MKI%p{w zPg&LFA(Qo)<{}0OEyd#w@EM4kOk&4xQ=!}Iov*7t4i_gqP8O0K9!9!~PodR*{K)sv zkW5lt9f9Z_P8%IHgdedknt$8<)HPH26v2Dxn$2`IJ9@n=G(l6yFw6ep)_GLT+}Wqc zvaQHPysG>g<-e*=)B-xLK3%s8=3iZTk}ofki?H18T}ymAXL$$fH=L|JHJ3^url{FE*hiOJ&=puTADnh zLiyL`KFS&V_}5+n2fn^5m-3=)vgoH@qb?ARk4}-5K%wvKe==@ z^wG55h@I45<596`bt~$8n=3zTCN^k&gd2|ESsdLgFW&ldNvvgrBABu1rY}35u!!}p zlRBr9-}6;GnL&0wA6RSP{4l#XD2ok|_%CXK{_MXc096@H-%o_!ARX{^``D z3PLbLGFLTW^?0gBRa-|fMYrc@14C3Qy`ld@YWJi#s@2xsBa7~v!d&Fk)M9aFst4n_7qWD#m7(iI%Vs4A5HhjHH&4v~Mh zJ_WURyg|RZyCU4*7jL%uYl4Kl-wJqNTmG?+2ia{rF-qB8o}6^-`jy-DWoEwlbj(7W z*r;AXG`^5I*j=S=#$PJHUOg4_PKyT@cFvBNhNWHJLyUFUxIdJU#^jIkQjgpbz>!M;fy9D!Mz-NiOt}o30X&W;Pdc4feU{Af`Atn>^f#HQd}c z=jU4eBsG2RFw5;kv^(^rjE1|~djlkSn)4OCV~V_8EKVB+tH)Ce_qZYg(e-mLWeQb7wusUeM%1lJ^_GN;aT+oR*pMKV~}% zTLA6H=gZmLll|FcN=~Y`(c0g|`Hv{ zidj?xwbr;{K|#=B?)%hJY-sQ6eO3_25!ej6 z{dkJ~tlbXCTz(stHC%I@8Q8n>|EM=?>pU_9`c_-q1^B)}8(t#OpZJ{~2|P+lE}j$N zK_Lcs%_(kv$6wV~$v979TjPG>qI5H)GVD$V)J18IZ?7UNAOQ>x?po^atgHM5C6MS_A+x@K|Zc^J&fx09FgCz zva`e9YHRVr_Uh{RM79*$&E4&01^+6U9WXhCIrWwuGL<}~KIJx5nl+yN#FIKU=LT>T zXE+5ho?!vK_hO@7iV)+tr-q~P5BGj{tvX#Y+v6%{b=rCAa{H}kbk2mri`p_@K83HC z_7_*R;(Ju5DK0yvORQV1Ykyro{mg%GA0+VFDDcYkI44*u7qF}tP$n19nd@)(y5Rp> zId=brZ>f|Bo|g9Z$bqgD3Ixqhxr}vYIhyj{MN-gN+T21zy;W0{Rn37-8}#F_h5@Wf zpvm4(&Ea5ZME_=KD$`jH`PBzX#OawI5)~uTJY(*YfFh~b=;K&+iZc-@cke;d0Rnb2 z?wx1CruhnhD2@zT8=(!H;D?*&IMUJf^$XAGZ3lzR~a=PQV}nPk1~ zhaT}SlbQFOp0ig8cki2SIfl0kpLkol4m>^Zxc-%#zCVH2no&EIJ_v$@9Pw-pq`&Aq zYF9oSW{f7Mcy-YSeH^-MYq|cc=YnplE*LJVTVG##7O#6Q(Ai$TQ>Jf|t8$F0DY9}T z%83V*!-mX=PUF+Z=^8|*8?L{j9dfR{<57Mb%Dqlz-*;NhIAbEuTy;f`BB zb4tpo$rYy2vNR6PM|h>C)ulxZ5Oh67{i|i7rsvN*Z*^0%IEC1Q9wM>C#Qu-q5!Eg? z@is`08H9gs)-zV$EGpNV)|FNp@#4o45OoVpdnQ_xzZYsF8lTZ|`dVQ*4Sy`<7FSIc zgq*R+ZN}O00<|Y0(2D==@#g65cZszp(H@)8)K?OXbwrfQd(ba<4DaE484cVx>=)dT z72NM%Id%cw?OeGvO$CC$iKi5DecF)&`jq*jyn34>b51Tu2;e5F!z6*Ifp?O}f^m{J#y?-0; z96eHay?)AU2$AQep9&Iqk|F+-RY>1ryxnnqS%>$12EO*4`CX#s`cxx>)QLaT1+v!s z?2m(5K6?+7&Oofh3c0}Ufz(fyQazBHK-Q$dQ?bCiXwP*XF#E2(_Gu^geunsQ$G7jO zXCO@Q@=F7Xc+MB;TPMER={+y(9SUs!qSlOyB2Hzx$ERf+POS z<@plr1fDPj-fQ3bKHin?+Z`TvK*V3U^_%CSb+&6uJ zcP8GiNP%Dd`vs?ek$Zth{=LW`PT!r++sm7F!P9<_=6_MA0%P0-PqTDC1;4`BlLf_P zpB#X?1)ko%ET6(ZEgdPou73?EsPVtvYXW}Q6Mq8#>kp#FJ#M0nJ952EthVVePgM*mZ(oC-MsfyVz6b^njY`ycP^ zKiKdt1Skdq>Hepa>;9iT;{V{@%m4Xhn&Pblf#U!3Q2X3xQ2+uJ{wD)@zPy7%{u3Qu z{s)KMO`U=Qj{gf@_Wv4k^qEq;s`1u%kkzs$enu6_z;Ec+O7Cm+G`F zj5}@?5F;hId23qcz&j^PYSfE3i|)X?!`F|sul7VX;8Sjbm8F;D(4PfFJA}?gd8ok> zKyMzOW{5e*aF{zdfqmx!5TH0@8uV3~aEN+=Wf8;*Vms1isT_E(NqY+S5|isp>%~IH zzN26vM!)-=HVDW;yVGV7#89Oxp*}Qc*}`%ONgE!tMZbFjFk;=+rNu?P?LI5a!Ie`4}ZP34WxtH{@Hry|F`6=Qf z4ge}#zCwG`2Y{-U1?e8C20x3I14teX!#}|51%Es`M11H10u0W9Q6IzrP}s6@eLnzH zv@A&T7&iD>w;VwINF4bgP`^d>$Q1D*3)rH2>;{0cmjkFC#lK1nKLW!)*Z^A;k6-57 zmjf6dIRJ)akDLRaq07kOAA!pt%E#Uae%W(vfFSv!C}4~7(GCELSPme4R0kMRJk~~h z*Z`iwH^?552R?r-Utzs%06<;Kf=rL4gP%>y0Thph5g#P=U%FS}AH0A7<#VRUkI-cY zNNbvd)q$dcbuvmy^XxP%mTrI^i_HLg)C#S6PFf5gC2EDHL}$X9MIOL2$R57(qeOio zFpX9k{OV})$KlhU9_678fM?*ndN0K^YokAuFQBz>uOB<+++P%B6D61vatBe^^ZygU z!x})Kt+gBY#C`BnuhJUZw?qMy$1VhcBCeP z43E{Mm2R$|8V|_+RVSL67z-^O;J(78x2+kT9+AEmiLNc9T*)cyo#LC7Ez<*9`1@9! z!H?s2?mPW-EAm2DLt!nG?ysR;t3LQ1M+O-4BS@XQeSlwB_U8R z^RSKsv?r21*p<*-Cvda&qk~uY!`^E#+`MOtTsrw2umKkr5ps;y5oABqggep zOrqZ)H|ah@LD}DImTl5IZ(&9LOc(w4T}CFB^ZSg9%(zO zAKw;OH5>lLiTi@O*VFI#Se8m0fVF2irLgXgVA&6!#*60zAb(HWV`65Da}r65l@EfA zf>5W! zJyGsj)4wu4wbYg<(@S)-3HrO$**sIE-xCM;y#U{vsQS=b`LMkImS*-w_;;C%V5LRQ zun!<*JXq0AUzrfy#`k%neC|`1>o@tHBKLE7XZ7c z7>dEUG2ziJFW~*@rhFy&_!z(?g|}fZfsRe=1Yxm3wObmpMp%)MT&gs`agD8BcXML6 zYgz+S^aQW@ge#kar5-SuY7fM&R{~Y{eyn=?po%f}%

    _oy8-GvrbyYHW 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

    ##z0yduM(w&YJ6 z&k`*l>5qM!EkN&`91DJIH=BH`ZZ^&paXnt~eH)ZL4Z)qZ@n?M;g;&2m%k;+bQo(_` zSk#O4O;farlr6K!%SIPEKo}cF(|9%9S6G=D6<9>n>4Ey6hOS+z5YX5*yEI)BX{m~! zVd@PUsyKhR@i}qXveA`U0HWiF4Kqo!TZKW5B?~X$mcy}R7x{H|nwRqt>`R^*YI6QC zDW>@n5JM&Z)Vx-vp|VL&mBHAexml|Z;1)LkF@`QQ0L0FfnU@<=6DO_>P)SvWS6~CU z)o-%|=Q-_5S;1e`hpv=Gu5Pvc#;mSxwe%%nNZX%O?ZCX8VC!`3U*4WC>MP29&sCHa{&f>*(&?G zDbz7I4vN&de1n%!mwsh)=C z8A%^e7joIM0}ft`hsJS$4%I*&8IJT7!le>#@%UYPUPF{0J{}K?SEZ`kjMxDtd?D>S zmwHlY7vZqy&)ca{^_eT=)wQ%DOiG78xoJ^~N5;bh>iyjl2SSK$1bP=)8Pez`AF(E}*eDc+E=u=;7jCLruouV}^k&2(d&zJ%)r}-b4?YVbw-h9^m4`4zCCh-h z0n}we`XSwD@i)%)pQBPG9vog1rIYX$oGWc%&23mk6W!Zz0ux5!IPm#wZz4kuBYUOdVGU1HOyn(I%By@aGX-7svb|K2s%e!jc)_87#j=7ci~<|W zYy~kxv3DSmNpYUfPbt`-cEY`{lxd8t0dP1P%0DenWh(HdLTRMMTPPL+-LbWj4Tc(V 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

    *}5$`vkMVZ5i@~EV_J9yo9F)Yd*Pzf$}Z6QFfz{ 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 KQj7I=_x}J1AiW;| literal 0 HcmV?d00001 diff --git a/packages/EPPlus.4.1.0/lib/net35/EPPlus.XML b/packages/EPPlus.4.1.0/lib/net35/EPPlus.XML new file mode 100644 index 0000000..75d2453 --- /dev/null +++ b/packages/EPPlus.4.1.0/lib/net35/EPPlus.XML @@ -0,0 +1,32621 @@ + + + + EPPlus + + + +

    + This is the store for all Rows, Columns and Cells. + It is a Dictionary implementation that allows you to change the Key (the RowID, ColumnID or CellID ) + + + + + Set Value for Range + + + + + + + + + + + + + + Add a new page to the collection + + The column + Position + The new page object to add + + + + Add a new page to the collection + + The column + Position + + + + IExcelConditionalFormattingAverageGroup + + + + + IExcelConditionalFormattingBeginsWith + + + + + IExcelConditionalFormattingBetween + + + + + IExcelConditionalFormattingColorScaleGroup + + + + + IExcelConditionalFormattingContainsBlanks + + + + + IExcelConditionalFormattingContainsErrors + + + + + IExcelConditionalFormattingContainsText + + + + + IExcelConditionalFormattingDataBar + + + + + ShowValue + + + + + Databar Low Value + + + + + Databar High Value + + + + + The color of the databar + + + + + IExcelConditionalFormattingDuplicateValues + + + + + IExcelConditionalFormattingEndsWith + + + + + IExcelConditionalFormattingEqual + + + + + IExcelConditionalFormattingExpression + + + + + IExcelConditionalFormattingGreaterThan + + + + + IExcelConditionalFormattingGreaterThanOrEqual + + + + + IExcelConditionalFormattingThreeIconSet + + + + + Icon1 (part of the 3, 4 ou 5 Icon Set) + + + + + Icon2 (part of the 3, 4 ou 5 Icon Set) + + + + + Icon3 (part of the 3, 4 ou 5 Icon Set) + + + + + IExcelConditionalFormattingFourIconSet + + + + + Icon4 (part of the 4 ou 5 Icon Set) + + + + + IExcelConditionalFormattingFiveIconSet + eExcelconditionalFormatting4IconsSetType + + + + Icon5 (part of the 5 Icon Set) + + + + + IExcelConditionalFormattingIconSetGroup + + + + + Reverse + + + + + ShowValue + + + + + IconSet (3, 4 ou 5 IconSet) + + + + + IExcelConditionalFormattingThreeColorScale + + + + + Three Color Scale Middle Value + + + + + IExcelConditionalFormattingLessThan + + + + + IExcelConditionalFormattingGreaterThanOrEqual + + + + + IExcelConditionalFormattingNotBetween + + + + + IExcelConditionalFormattingNotContainsBlanks + + + + + IExcelConditionalFormattingNotContainsErrors + + + + + IExcelConditionalFormattingNotContainsText + + + + + IExcelConditionalFormattingNotEqual + + + + + IExcelConditionalFormattingStdDevGroup + + + + + IExcelConditionalFormattingTimePeriod + + + + + IExcelConditionalFormattingTopBottomGroup + + + + + IExcelConditionalFormattingTwoColorScale + + + + + Two Color Scale Low Value + + + + + Two Color Scale High Value + + + + + IExcelConditionalFormattingUniqueValues + + + + + IExcelConditionalFormattingWithFormula + + + + + Formula Attribute + + + + + IExcelConditionalFormattingWithFormula2 + + + + + Formula2 Attribute + + + + + IExcelConditionalFormattingWithRank + + + + + Rank Attribute + + + + + IExcelConditionalFormattingWithReverse + + + + + Reverse Attribute + + + + + IExcelConditionalFormattingWithShowValue + + + + + ShowValue Attribute + + + + + IExcelConditionalFormattingWithStdDev + + + + + StdDev Attribute + + + + + IExcelConditionalFormattingWithText + + + + + Text Attribute + + + + + Interface for conditional formatting rule + + + + + The 'cfRule' XML node + + + + + Type of conditional formatting rule. ST_CfType §18.18.12. + + + + + Range over which these conditional formatting rules apply. + The possible values for this attribute are defined by the + ST_Sqref simple type (§18.18.76). + + + + + The priority of this conditional formatting rule. This value is used to determine + which format should be evaluated and rendered. Lower numeric values are higher + priority than higher numeric values, where 1 is the highest priority. + + + + + If this flag is 1, no rules with lower priority shall be applied over this rule, + when this rule evaluates to true. + + + + + Gives access to the differencial styling (DXF) for the rule. + + + + + 18.3.1.11 cfvo (Conditional Format Value Object) + Describes the values of the interpolation points in a gradient scale. + + + + + Initialize the cfvo (§18.3.1.11) node + + + + + + + + + The cfvo (§18.3.1.11) node parent. Can be any of the following: + colorScale (§18.3.1.16); dataBar (§18.3.1.28); iconSet (§18.3.1.49) + + + + + Initialize the cfvo (§18.3.1.11) node + + + + + The cfvo (§18.3.1.11) node parent. Can be any of the following: + colorScale (§18.3.1.16); dataBar (§18.3.1.28); iconSet (§18.3.1.49) + + + + + Initialize the + + + + + + + + + + + + + Initialize the + + + + + + + + + + + + + + + + + + + + + + Get/Set the 'cfvo' node @val attribute + + + + + Get/Set the Formula of the Object Value (uses the same attribute as the Value) + + + + + Databar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingThreeIconSet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingThreeIconSet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingAboveStdDev + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingAboveOrEqualAverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingAverageGroup + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingAboveAverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Collection of . + This class is providing the API for EPPlus conditional formatting. + + + + The public methods of this class (Add[...]ConditionalFormatting) will create a ConditionalFormatting/CfRule entry in the worksheet. When this + Conditional Formatting has been created changes to the properties will affect the workbook immediately. + + + Each type of Conditional Formatting Rule has diferente set of properties. + + + // Add a Three Color Scale conditional formatting + var cf = worksheet.ConditionalFormatting.AddThreeColorScale(new ExcelAddress("A1:C10")); + // Set the conditional formatting properties + cf.LowValue.Type = ExcelConditionalFormattingValueObjectType.Min; + cf.LowValue.Color = Color.White; + cf.MiddleValue.Type = ExcelConditionalFormattingValueObjectType.Percent; + cf.MiddleValue.Value = 50; + cf.MiddleValue.Color = Color.Blue; + cf.HighValue.Type = ExcelConditionalFormattingValueObjectType.Max; + cf.HighValue.Color = Color.Black; + + + + + + Initialize the + + + + + + + + + + + GetRootNode + + + + + + Validates address - not empty (collisions are allowded) + + + + + + + Get the next priority sequencial number + + + + + + Number of validations + + + + + Index operator, returns by 0-based index + + + + + + + Get the 'cfRule' enumerator + + + + + + Get the 'cfRule' enumerator + + + + + + Removes all 'cfRule' from the collection and from the XML. + + This is the same as removing all the 'conditionalFormatting' nodes. + + + + + + Remove a Conditional Formatting Rule by its object + + + + + + Remove a Conditional Formatting Rule by its 0-based index + + + + + + Remove a Conditional Formatting Rule by its priority + + + + + + Get a rule by its priority + + + + + + + Add rule (internal) + + + + F + + + + Add AboveAverage Rule + + + + + + + Add AboveOrEqualAverage Rule + + + + + + + Add BelowAverage Rule + + + + + + + Add BelowOrEqualAverage Rule + + + + + + + Add AboveStdDev Rule + + + + + + + Add BelowStdDev Rule + + + + + + + Add Bottom Rule + + + + + + + Add BottomPercent Rule + + + + + + + Add Top Rule + + + + + + + Add TopPercent Rule + + + + + + + Add Last7Days Rule + + + + + + + Add LastMonth Rule + + + + + + + Add LastWeek Rule + + + + + + + Add NextMonth Rule + + + + + + + Add NextWeek Rule + + + + + + + Add ThisMonth Rule + + + + + + + Add ThisWeek Rule + + + + + + + Add Today Rule + + + + + + + Add Tomorrow Rule + + + + + + + Add Yesterday Rule + + + + + + + Add BeginsWith Rule + + + + + + + Add Between Rule + + + + + + + Add ContainsBlanks Rule + + + + + + + Add ContainsErrors Rule + + + + + + + Add ContainsText Rule + + + + + + + Add DuplicateValues Rule + + + + + + + Add EndsWith Rule + + + + + + + Add Equal Rule + + + + + + + Add Expression Rule + + + + + + + Add GreaterThan Rule + + + + + + + Add GreaterThanOrEqual Rule + + + + + + + Add LessThan Rule + + + + + + + Add LessThanOrEqual Rule + + + + + + + Add NotBetween Rule + + + + + + + Add NotContainsBlanks Rule + + + + + + + Add NotContainsErrors Rule + + + + + + + Add NotContainsText Rule + + + + + + + Add NotEqual Rule + + + + + + + Add Unique Rule + + + + + + + Add ThreeColorScale Rule + + + + + + + Add TwoColorScale Rule + + + + + + + Add ThreeIconSet Rule + + The address + Type of iconset + + + + + Adds a FourIconSet rule + + + + + + + + Adds a FiveIconSet rule + + + + + + + + Adds a databar rule + + + + + + + + Functions related to the + + + + + + + + + + + + + + param name="attribute" + + + + + Factory class for ExcelConditionalFormatting. + + + + + The conditional formatting constants + + + + + Functions related to the + + + + + + + + + + + + + + + + + + + 18.3.1.11 cfvo (Conditional Format Value Object) + Describes the values of the interpolation points in a gradient scale. + + + + + Initialize the cfvo (§18.3.1.11) node + + + + + + + + + + + The cfvo (§18.3.1.11) node parent. Can be any of the following: + colorScale (§18.3.1.16); dataBar (§18.3.1.28); iconSet (§18.3.1.49) + + + + + Initialize the + + + + + + + + + + + + + + + Initialize the + + + + + + + + + + + + + Get the node order (1, 2 ou 3) according to the Position (Low, Middle and High) + and the Rule Type (TwoColorScale ou ThreeColorScale). + + + + + + Create the 'cfvo'/'color' nodes in the right order. They should appear like this: + "cfvo" --> Low Value (value object) + "cfvo" --> Middle Value (value object) + "cfvo" --> High Value (value object) + "color" --> Low Value (color) + "color" --> Middle Value (color) + "color" --> High Value (color) + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get/Set the 'cfvo' node @val attribute + + + + + Get/Set the Formula of the Object Value (uses the same attribute as the Value) + + + + + Enum for Conditional Format Type ST_CfType §18.18.12. With some changes. + + + + + This conditional formatting rule highlights cells that are above the average + for all values in the range. + + AboveAverage Excel CF Rule Type + + + + This conditional formatting rule highlights cells that are above or equal + the average for all values in the range. + + AboveAverage Excel CF Rule Type + + + + This conditional formatting rule highlights cells that are below the average + for all values in the range. + + AboveAverage Excel CF Rule Type + + + + This conditional formatting rule highlights cells that are below or equal + the average for all values in the range. + + AboveAverage Excel CF Rule Type + + + + This conditional formatting rule highlights cells that are above the standard + deviationa for all values in the range. + AboveAverage Excel CF Rule Type + + + + + This conditional formatting rule highlights cells that are below the standard + deviationa for all values in the range. + + AboveAverage Excel CF Rule Type + + + + This conditional formatting rule highlights cells whose values fall in the + bottom N bracket as specified. + + Top10 Excel CF Rule Type + + + + This conditional formatting rule highlights cells whose values fall in the + bottom N percent as specified. + + Top10 Excel CF Rule Type + + + + This conditional formatting rule highlights cells whose values fall in the + top N bracket as specified. + + Top10 Excel CF Rule Type + + + + This conditional formatting rule highlights cells whose values fall in the + top N percent as specified. + + Top10 Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing dates in the + last 7 days. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing dates in the + last month. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing dates in the + last week. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing dates in the + next month. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing dates in the + next week. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing dates in this + month. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing dates in this + week. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing today dates. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing tomorrow dates. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing yesterday dates. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells in the range that begin with + the given text. + + + Equivalent to using the LEFT() sheet function and comparing values. + + BeginsWith Excel CF Rule Type + + + + This conditional formatting rule highlights cells in the range between the + given two formulas. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights cells that are completely blank. + + + Equivalent of using LEN(TRIM()). This means that if the cell contains only + characters that TRIM() would remove, then it is considered blank. An empty cell + is also considered blank. + + ContainsBlanks Excel CF Rule Type + + + + This conditional formatting rule highlights cells with formula errors. + + + Equivalent to using ISERROR() sheet function to determine if there is + a formula error. + + ContainsErrors Excel CF Rule Type + + + + This conditional formatting rule highlights cells in the range that begin with + the given text. + + + Equivalent to using the LEFT() sheet function and comparing values. + + ContainsText Excel CF Rule Type + + + + This conditional formatting rule highlights duplicated values. + + DuplicateValues Excel CF Rule Type + + + + This conditional formatting rule highlights cells ending with given text. + + + Equivalent to using the RIGHT() sheet function and comparing values. + + EndsWith Excel CF Rule Type + + + + This conditional formatting rule highlights cells equals to with given formula. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule contains a formula to evaluate. When the + formula result is true, the cell is highlighted. + + Expression Excel CF Rule Type + + + + This conditional formatting rule highlights cells greater than the given formula. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights cells greater than or equal the + given formula. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights cells less than the given formula. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights cells less than or equal the + given formula. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights cells outside the range in + given two formulas. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights cells that does not contains the + given formula. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights cells that are not blank. + + + Equivalent of using LEN(TRIM()). This means that if the cell contains only + characters that TRIM() would remove, then it is considered blank. An empty cell + is also considered blank. + + NotContainsBlanks Excel CF Rule Type + + + + This conditional formatting rule highlights cells without formula errors. + + + Equivalent to using ISERROR() sheet function to determine if there is a + formula error. + + NotContainsErrors Excel CF Rule Type + + + + This conditional formatting rule highlights cells that do not contain + the given text. + + + Equivalent to using the SEARCH() sheet function. + + NotContainsText Excel CF Rule Type + + + + This conditional formatting rule highlights cells not equals to with + given formula. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights unique values in the range. + + UniqueValues Excel CF Rule Type + + + + Three Color Scale (Low, Middle and High Color Scale) + + ColorScale Excel CF Rule Type + + + + Two Color Scale (Low and High Color Scale) + + ColorScale Excel CF Rule Type + + + + This conditional formatting rule applies a 3 set icons to cells according + to their values. + + IconSet Excel CF Rule Type + + + + This conditional formatting rule applies a 4 set icons to cells according + to their values. + + IconSet Excel CF Rule Type + + + + This conditional formatting rule applies a 5 set icons to cells according + to their values. + + IconSet Excel CF Rule Type + + + + This conditional formatting rule displays a gradated data bar in the range of cells. + + DataBar Excel CF Rule Type + + + + Enum for Conditional Format Value Object Type ST_CfvoType §18.18.13 + + + + + Formula + + + + + Maximum Value + + + + + Minimum Value + + + + + Number Value + + + + + Percent + + + + + Percentile + + + + + Enum for Conditional Formatting Value Object Position + + + + + The lower position for both TwoColorScale and ThreeColorScale + + + + + The middle position only for ThreeColorScale + + + + + The highest position for both TwoColorScale and ThreeColorScale + + + + + Enum for Conditional Formatting Value Object Node Type + + + + + 'cfvo' node + + + + + 'color' node + + + + + Enum for Conditional Formatting Operartor Type ST_ConditionalFormattingOperator §18.18.15 + + + + + Begins With. 'Begins with' operator + + + + + Between. 'Between' operator + + + + + Contains. 'Contains' operator + + + + + Ends With. 'Ends with' operator + + + + + Equal. 'Equal to' operator + + + + + Greater Than. 'Greater than' operator + + + + + Greater Than Or Equal. 'Greater than or equal to' operator + + + + + Less Than. 'Less than' operator + + + + + Less Than Or Equal. 'Less than or equal to' operator + + + + + Not Between. 'Not between' operator + + + + + Does Not Contain. 'Does not contain' operator + + + + + Not Equal. 'Not equal to' operator + + + + + Enum for Conditional Formatting Time Period Type ST_TimePeriod §18.18.82 + + + + + Last 7 Days. A date in the last seven days. + + + + + Last Month. A date occuring in the last calendar month. + + + + + Last Week. A date occuring last week. + + + + + Next Month. A date occuring in the next calendar month. + + + + + Next Week. A date occuring next week. + + + + + This Month. A date occuring in this calendar month. + + + + + This Week. A date occuring this week. + + + + + Today. Today's date. + + + + + Tomorrow. Tomorrow's date. + + + + + Yesterday. Yesterday's date. + + + + + 18.18.42 ST_IconSetType (Icon Set Type) - Only 3 icons + + + + + (3 Arrows) 3 arrows icon set. + + + + + (3 Arrows (Gray)) 3 gray arrows icon set. + + + + + (3 Flags) 3 flags icon set. + + + + + (3 Signs) 3 signs icon set. + + + + + (3 Symbols Circled) 3 symbols icon set. + + + + + (3 Symbols) 3 Symbols icon set. + + + + + (3 Traffic Lights) 3 traffic lights icon set (#1). + + + + + (3 Traffic Lights Black) 3 traffic lights icon set with thick black border. + + + + + 18.18.42 ST_IconSetType (Icon Set Type) - Only 4 icons + + + + + (4 Arrows) 4 arrows icon set. + + + + + (4 Arrows (Gray)) 4 gray arrows icon set. + + + + + (4 Ratings) 4 ratings icon set. + + + + + (4 Red To Black) 4 'red to black' icon set. + + + + + (4 Traffic Lights) 4 traffic lights icon set. + + + + + 18.18.42 ST_IconSetType (Icon Set Type) - Only 5 icons + + + + + (5 Arrows) 5 arrows icon set. + + + + + (5 Arrows (Gray)) 5 gray arrows icon set. + + + + + (5 Quarters) 5 quarters icon set. + + + + + (5 Ratings Icon Set) 5 rating icon set. + + + + + 18.18.42 ST_IconSetType (Icon Set Type) + + + + + (3 Arrows) 3 arrows icon set. + + + + + (3 Arrows (Gray)) 3 gray arrows icon set. + + + + + (3 Flags) 3 flags icon set. + + + + + (3 Signs) 3 signs icon set. + + + + + (3 Symbols Circled) 3 symbols icon set. + + + + + (3 Symbols) 3 Symbols icon set. + + + + + (3 Traffic Lights) 3 traffic lights icon set (#1). + + + + + (3 Traffic Lights Black) 3 traffic lights icon set with thick black border. + + + + + (4 Arrows) 4 arrows icon set. + + + + + (4 Arrows (Gray)) 4 gray arrows icon set. + + + + + (4 Ratings) 4 ratings icon set. + + + + + (4 Red To Black) 4 'red to black' icon set. + + + + + (4 Traffic Lights) 4 traffic lights icon set. + + + + + (5 Arrows) 5 arrows icon set. + + + + + (5 Arrows (Gray)) 5 gray arrows icon set. + + + + + (5 Quarters) 5 quarters icon set. + + + + + (5 Ratings Icon Set) 5 rating icon set. + + + + + Functions related to the + + + + + Get the sequencial order of a cfvo/color by its position. + + + + 1, 2 or 3 + + + + Get the CFVO type by its @type attribute + + + + + + + + + + + + + + + + + + + + + + + + Get the cfvo (§18.3.1.11) node parent by the rule type. Can be any of the following: + "colorScale" (§18.3.1.16); "dataBar" (§18.3.1.28); "iconSet" (§18.3.1.49) + + + + + + + + + + + + + + ExcelConditionalFormattingBeginsWith + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The text to search in the beginning of the cell + + + + + ExcelConditionalFormattingBelowAverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingBelowOrEqualAverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingBelowStdDev + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingBetween + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingBottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingBottomPercent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingContainsBlanks + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingContainsErrors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingContainsText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The text to search inside the cell + + + + + ExcelConditionalFormattingDuplicateValues + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingEndsWith + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The text to search in the end of the cell + + + + + ExcelConditionalFormattingEqual + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingExpression + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingGreaterThan + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingGreaterThanOrEqual + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingLast7Days + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingLastMonth + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingLastWeek + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingLessThan + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingLessThanOrEqual + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingNextMonth + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingNextWeek + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingNotBetween + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingNotContainsBlanks + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingNotContainsErrors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingNotContainsText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The text to search inside the cell + + + + + ExcelConditionalFormattingNotEqual + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sinalize that we are in a Cnaging Priorities opeartion so that we won't enter + a recursive loop. + + + + + Initialize the + + + + Used also as the cfRule unique key + + + + + + + Initialize the + + + + + + + + + + Get the <cfRule> node + + + + + Address of the conditional formatting rule + + + The address is stores in a parent node called <conditionalFormatting> in the + @sqref attribute. Excel groups rules that have the same address inside one node. + + + + + Type of conditional formatting rule. ST_CfType §18.18.12. + + + + + The priority of this conditional formatting rule. This value is used to determine + which format should be evaluated and rendered. Lower numeric values are higher + priority than higher numeric values, where 1 is the highest priority. + + + + + If this flag is true, no rules with lower priority shall be applied over this rule, + when this rule evaluates to true. + + + + + DxfId Style Attribute + + + + + StdDev (zero is not allowed and will be converted to 1) + + + + + Rank (zero is not allowed and will be converted to 1) + + + + + AboveAverage + + + + + EqualAverage + + + + + Bottom attribute + + + + + Percent attribute + + + + + TimePeriod + + + + + Operator + + + + + Formula + + + + + Formula2 + + + + + Functions related to the ExcelConditionalFormattingRule + + + + + + + + + + + + + + Get the "colorScale" rule type according to the number of "cfvo" and "color" nodes. + If we have excatly 2 "cfvo" and "color" childs, then we return "twoColorScale" + + TwoColorScale or ThreeColorScale + + + + Get the "aboveAverage" rule type according to the follwoing attributes: + "AboveAverage", "EqualAverage" and "StdDev". + + @StdDev greater than "0" == AboveStdDev + @StdDev less than "0" == BelowStdDev + @AboveAverage = "1"/null and @EqualAverage = "0"/null == AboveAverage + @AboveAverage = "1"/null and @EqualAverage = "1" == AboveOrEqualAverage + @AboveAverage = "0" and @EqualAverage = "0"/null == BelowAverage + @AboveAverage = "0" and @EqualAverage = "1" == BelowOrEqualAverage + /// + AboveAverage, AboveOrEqualAverage, BelowAverage or BelowOrEqualAverage + + + + Get the "top10" rule type according to the follwoing attributes: + "Bottom" and "Percent" + + @Bottom = "1" and @Percent = "0"/null == Bottom + @Bottom = "1" and @Percent = "1" == BottomPercent + @Bottom = "0"/null and @Percent = "0"/null == Top + @Bottom = "0"/null and @Percent = "1" == TopPercent + /// + Top, TopPercent, Bottom or BottomPercent + + + + Get the "timePeriod" rule type according to "TimePeriod" attribute. + /// + Last7Days, LastMonth etc. + + + + + + + + + + + Return cfvo §18.3.1.11 parent according to the rule type + + + + + + + ExcelConditionalFormattingThisMonth + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingThisWeek + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingThreeColorScale + + + + + Private Low Value + + + + + Private Middle Value + + + + + Private High Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Low Value for Three Color Scale Object Value + + + + + Middle Value for Three Color Scale Object Value + + + + + High Value for Three Color Scale Object Value + + + + + ExcelConditionalFormattingThreeIconSet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Settings for icon 1 in the iconset + + + + + Settings for icon 2 in the iconset + + + + + Settings for icon 2 in the iconset + + + + + Reverse the order of the icons + + + + + If the cell values are visible + + + + + Type of iconset + + + + + ExcelConditionalFormattingTimePeriodGroup + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingToday + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingTomorrow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingTop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingTopPercent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingTwoColorScale + + + + + Private Low Value + + + + + Private High Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Low Value for Two Color Scale Object Value + + + + + High Value for Two Color Scale Object Value + + + + + Conditional formatting helper + + + + + Check and fix an address (string address) + + + + + + + Convert a color code to Color Object + + Color Code (Ex. "#FFB43C53" or "FFB43C53") + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Encode to XML (special characteres: ' " > < &) + + + + + + + Decode from XML (special characteres: ' " > < &) + + + + + + + Provides functionality for adding Conditional Formatting to a range (). + Each method will return a configurable condtional formatting type. + + + + + Adds a Above Average rule to the range + + + + + + Adds a Above Or Equal Average rule to the range + + + + + + Adds a Below Average rule to the range + + + + + + Adds a Below Or Equal Average rule to the range + + + + + + Adds a Above StdDev rule to the range + + + + + + Adds a Below StdDev rule to the range + + + + + + Adds a Bottom rule to the range + + + + + + Adds a Bottom Percent rule to the range + + + + + + Adds a Top rule to the range + + + + + + Adds a Top Percent rule to the range + + + + + + Adds a Last 7 Days rule to the range + + + + + + Adds a Last Month rule to the range + + + + + + Adds a Last Week rule to the range + + + + + + Adds a Next Month rule to the range + + + + + + Adds a Next Week rule to the range + + + + + + Adds a This Month rule to the range + + + + + + Adds a This Week rule to the range + + + + + + Adds a Today rule to the range + + + + + + Adds a Tomorrow rule to the range + + + + + + Adds a Yesterday rule to the range + + + + + + Adds a Begins With rule to the range + + + + + + Adds a Between rule to the range + + + + + + Adds a ContainsBlanks rule to the range + + + + + + Adds a ContainsErrors rule to the range + + + + + + Adds a ContainsText rule to the range + + + + + + Adds a DuplicateValues rule to the range + + + + + + Adds a EndsWith rule to the range + + + + + + Adds a Equal rule to the range + + + + + + Adds a Expression rule to the range + + + + + + Adds a GreaterThan rule to the range + + + + + + Adds a GreaterThanOrEqual rule to the range + + + + + + Adds a LessThan rule to the range + + + + + + Adds a LessThanOrEqual rule to the range + + + + + + Adds a NotBetween rule to the range + + + + + + Adds a NotContainsBlanks rule to the range + + + + + + Adds a NotContainsErrors rule to the range + + + + + + Adds a NotContainsText rule to the range + + + + + + Adds a NotEqual rule to the range + + + + + + Adds a UniqueValues rule to the range + + + + + + Adds a to the range + + + + + + Adds a to the range + + + + + + Adds a to the range + + + + + + + Adds a to the range + + + + + + + Adds a to the range + + + + + + + Adds a to the range + + + + + + + Add AboveOrEqualAverage Conditional Formatting + + + + + + Add AboveOrEqualAverage Conditional Formatting + + + + + + Add BelowOrEqualAverage Conditional Formatting + + + + + + Add BelowOrEqualAverage Conditional Formatting + + + + + + Add AboveStdDev Conditional Formatting + + + + + + Add BelowStdDev Conditional Formatting + + + + + + Add Bottom Conditional Formatting + + + + + + Add BottomPercent Conditional Formatting + + + + + + Add Top Conditional Formatting + + + + + + Add TopPercent Conditional Formatting + + + + + + Add Last7Days Conditional Formatting + + + + + + Add LastMonth Conditional Formatting + + + + + + Add LastWeek Conditional Formatting + + + + + + Add NextMonth Conditional Formatting + + + + + + Add NextWeek Conditional Formatting + + + + + + Add ThisMonth Conditional Formatting + + + + + + Add ThisWeek Conditional Formatting + + + + + + Add Today Conditional Formatting + + + + + + Add Tomorrow Conditional Formatting + + + + + + Add Yesterday Conditional Formatting + + + + + + Add BeginsWith Conditional Formatting + + + + + + Add Between Conditional Formatting + + + + + + Add ContainsBlanks Conditional Formatting + + + + + + Add ContainsErrors Conditional Formatting + + + + + + Add ContainsText Conditional Formatting + + + + + + Add DuplicateValues Conditional Formatting + + + + + + Add EndsWith Conditional Formatting + + + + + + Add Equal Conditional Formatting + + + + + + Add Expression Conditional Formatting + + + + + + Add GreaterThan Conditional Formatting + + + + + + Add GreaterThanOrEqual Conditional Formatting + + + + + + Add LessThan Conditional Formatting + + + + + + Add LessThanOrEqual Conditional Formatting + + + + + + Add NotBetween Conditional Formatting + + + + + + Add NotContainsBlanks Conditional Formatting + + + + + + Add NotContainsErrors Conditional Formatting + + + + + + Add NotContainsText Conditional Formatting + + + + + + Add NotEqual Conditional Formatting + + + + + + Add UniqueValues Conditional Formatting + + + + + + Add ThreeColorScale Conditional Formatting + + + + + + Add TwoColorScale Conditional Formatting + + + + + + Adds a ThreeIconSet rule + + + + + + + Adds a FourIconSet rule + + + + + + + Adds a FiveIconSet rule + + + + + + + Adds a Databar rule + + The color of the databar + + + + + ExcelConditionalFormattingUniqueValues + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingYesterday + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interface for data validation + + + + + Address of data validation + + + + + Validation type + + + + + Controls how Excel will handle invalid values. + + + + + True if input message should be shown + + + + + True if input message should be shown + + + + + True if error message should be shown. + + + + + Title of error message box (see property ShowErrorMessage) + + + + + Error message box text (see property ShowErrorMessage) + + + + + Title of info box if input message should be shown (see property ShowInputMessage) + + + + + Info message text (see property ShowErrorMessage) + + + + + True if the current validation type allows operator. + + + + + Validates the state of the validation. + + + + + Data validation interface for Any value validation. + + + + + Data validation interface for custom validation. + + + + + Validation interface for datetime validations + + + + + Data validation interface for decimal values + + + + + Data validation interface for time validation. + + + + + Interface for a data validation with two formulas + + + + + + Formula 2 + + + + + Represents a validation with an operator + + + + + Operator type + + + + + Any value validation. + + + + + Constructor + + + + + + + + Constructor + + + + + + + + + Constructor + + + + + + + + + + This method will validate the state of the validation + + + + + Custom validation, i.e. a formula. + + + + + Constructor + + + + + + + + Constructor + + + + + + + + + Constructor + + + + + + + + + + Validation for . + + + + + Constructor + + + + + + + + Constructor + + + + + + + + + Constructor + + + + + + + + + + Factory class for ExcelDataValidation. + + + + + Creates an instance of out of the given parameters. + + + + + + + + + + Validation for times (). + + + + + Constructor + + + + + + + + Constructor + + + + + + + + + Constructor + + + + + + + + + + A validation containing a formula + + + + + + Constructor + + + + + + + + Constructor + + Worksheet that owns the validation + Xml top node (dataValidations) + Data validation type + address for data validation + + + + Constructor + + Worksheet that owns the validation + Xml top node (dataValidations) + Data validation type + address for data validation + for test purposes + + + + Formula - Either a {T} value (except for custom validation) or a spreadsheet formula + + + + + Constructor + + + + + + + + Constructor + + Worksheet that owns the validation + Xml top node (dataValidations) + Data validation type + address for data validation + + + + Constructor + + Worksheet that owns the validation + Xml top node (dataValidations) + Data validation type + address for data validation + for test purposes + + + + Formula - Either a {T} value or a spreadsheet formula + + + + + Represents a time between 00:00:00 and 23:59:59 + + + + + Max number of decimals when rounding. + + + + + Default constructor + + + + + Constructor + + An existing time for initialization + + + + If we are unlucky second might be rounded up to 60. This will have the minute to be raised and might affect the hour. + + + + + + Hour between 0 and 23 + + + + + Minute between 0 and 59 + + + + + Second between 0 and 59 + + + + + Returns the excel decimal representation of a time. + + + + + + Returns the excel decimal representation of a time as a string. + + + + + + Interface for a data validation formula + + + + + An excel formula + + + + + Validation formula interface for + + + + + Interface for a data validation of list type + + + + + A list of value strings. + + + + + Interface for a formula with a value + + + + + + The value. + + + + + Interface for a data validation formula of float value + + + + + Interface for a data validation formula of value + + + + + Enumeration representing the state of an + + + + + Value is set + + + + + Formula is set + + + + + Base class for a formula + + + + + Constructor + + Namespacemanger of the worksheet + validation top node + xml path of the current formula + + + + State of the validationformula, i.e. tells if value or formula is set + + + + + A formula which output must match the current validation type + + + + + This value will be stored in the xml. Can be overridden by subclasses + + + + + Returns the value as a string. Must be implemented by subclasses + + + + + + + + + + + This class represents a validation formula. Its value can be specified as a value of the specified datatype or as a formula. + + + + + + Constructor + + Namespacemanger of the worksheet + validation top node + xml path of the current formula + + + + Typed value + + + + + + + + + + Operator for comparison between Formula and Formula2 in a validation. + + + + + warning style, controls how Excel will handle invalid changes. + + + + + warning style will be excluded + + + + + stop warning style, invalid changes will not be accepted + + + + + warning will be presented when an attempt to an invalid change is done, but the change will be accepted. + + + + + information warning style. + + + + + Data validation for decimal values + + + + + Constructor + + + + + + + + Constructor + + + + + + + + + Constructor + + + + + + For test purposes + + + + This class represents an List data validation. + + + + + Constructor + + + + + + + + Constructor + + + + + + + + + Constructor + + + + + + Namespace manager, for test purposes + + + + Data validation for integer values. + + + + + Constructor + + + + + + + + Constructor + + + + + + + + + Constructor + + + + + + For test purposes + + + + Provides functionality for adding datavalidation to a range (). Each method will + return a configurable validation. + + + + + Adds a to the range. + + A that can be configured for any validation + + + + Adds a to the range + + A that can be configured for integer data validation + + + + Adds a to the range + + A that can be configured for decimal data validation + + + + Adds a to the range + + A that can be configured for datetime data validation + + + + Adds a to the range + + A that can be configured for datetime data validation + + + + Adds a regarding text length validation to the range. + + + + + + Adds a to the range. + + A that can be configured for time data validation + + + + Adds a to the range. + + A that can be configured for custom validation + + + + Excel datavalidation + + + + + Constructor + + worksheet that owns the validation + Xml top node (dataValidations) + Data validation type + address for data validation + + + + Constructor + + worksheet that owns the validation + Xml top node (dataValidations) when importing xml + Data validation type + address for data validation + Xml Namespace manager + + + + This method will validate the state of the validation + + If the state breaks the rules of the validation + + + + True if the validation type allows operator to be set. + + + + + Address of data validation + + + + + Validation type + + + + + Operator for comparison between the entered value and Formula/Formulas. + + + + + Warning style + + + + + True if blanks should be allowed + + + + + True if input message should be shown + + + + + True if error message should be shown + + + + + Title of error message box + + + + + Error message box text + + + + + Formula 1 + + + + + Formula 2 + + + + + + Collection of . This class is providing the API for EPPlus data validation. + + + The public methods of this class (Add[...]Validation) will create a datavalidation entry in the worksheet. When this + validation has been created changes to the properties will affect the workbook immediately. + + + Each type of validation has either a formula or a typed value/values, except for custom validation which has a formula only. + + + // Add a date time validation + var validation = worksheet.DataValidation.AddDateTimeValidation("A1"); + // set validation properties + validation.ShowErrorMessage = true; + validation.ErrorTitle = "An invalid date was entered"; + validation.Error = "The date must be between 2011-01-31 and 2011-12-31"; + validation.Prompt = "Enter date here"; + validation.Formula.Value = DateTime.Parse("2011-01-01"); + validation.Formula2.Value = DateTime.Parse("2011-12-31"); + validation.Operator = ExcelDataValidationOperator.between; + + + + + + Constructor + + + + + + Validates address - not empty, collisions + + + + + + + Validates all data validations. + + + + + Adds a to the worksheet. + + The range/address to validate + + + + + Adds an to the worksheet. Whole means that the only accepted values + are integer values. + + the range/address to validate + + + + Addes an to the worksheet. The only accepted values are + decimal values. + + The range/address to validate + + + + + Adds an to the worksheet. The accepted values are defined + in a list. + + The range/address to validate + + + + + Adds an regarding text length to the worksheet. + + The range/address to validate + + + + + Adds an to the worksheet. + + The range/address to validate + + + + + Adds a to the worksheet. + + The range/address to validate + + + + + Removes an from the collection. + + The item to remove + True if remove succeeds, otherwise false + if is null + + + + Number of validations + + + + + Index operator, returns by 0-based index + + + + + + + Index operator, returns a data validation which address partly or exactly matches the searched address. + + A cell address or range + A or null if no match + + + + Returns all validations that matches the supplied predicate . + + predicate to filter out matching validations + + + + + Returns the first matching validation. + + + + + + + Removes all validations from the collection. + + + + + Removes the validations that matches the predicate + + + + + + Enum for available data validation types + + + + + Any value + + + + + Integer value + + + + + Decimal values + + + + + List of values + + + + + Text length validation + + + + + DateTime validation + + + + + Time validation + + + + + Custom validation + + + + + Types of datavalidation + + + + + Validation type + + + + + This type allows operator to be set + + + + + Returns a validation type by + + + + + + + Overridden Equals, compares on internal validation type + + + + + + + Overrides GetHashCode() + + + + + + Integer values + + + + + Integer values + + + + + List of allowed values + + + + + A serie for a scatter chart + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + Datalabel + + + + + A serie for a surface chart + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + A Surface chart + + + + + Provides access to line chart specific properties + + + + + The type of radarchart + + + + + Access to datalabel properties + + + + + A serie for a scatter chart + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + Datalabel + + + + + A serie for a line chart + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + Datalabels + + + + + Marker symbol + + + + + Smoth lines + + + + + Line color. + + + + The color of the line. + + + + + Gets or sets the size of the marker. + + + + value between 2 and 72. + + + + The size of the marker. + + + + + Gets or sets the width of the line in pt. + + + + The width of the line. + + + + + Marker Line color. + (not to be confused with LineColor) + + + + The color of the Marker line. + + + + + Chart type + + + + + Bar or column + + + + + How the series are grouped + + + + + Shape for bar charts + + + + + Smooth or lines markers + + + + + Specifies that the radar chart shall be filled and have lines but no markers. + + + + + Specifies that the radar chart shall have lines and markers but no fill. + + + + + Specifies that the radar chart shall have lines but no markers and no fill. + + + + + Bar or pie + + + + + Position of the labels + + + + + Axis label position + + + + + Markerstyle + + + + + The time unit of major and minor datetime axis values + + + + + The build in style of the chart. + + + + + Type of Trendline for a chart + + + + + Specifies the trendline shall be an exponential curve in the form + + + + + Specifies the trendline shall be a logarithmic curve in the form , where log is the natural + + + + + Specifies the trendline shall be a logarithmic curve in the form , where log is the natural + + + + + Specifies the trendline shall be a moving average of period Period + + + + + Specifies the trendline shall be a polynomial curve of order Order in the form + + + + + Specifies the trendline shall be a power curve in the form + + + + + Specifies the possible ways to display blanks + + + + + Blank values shall be left as a gap + + + + + Blank values shall be spanned with a line (Line charts) + + + + + Blank values shall be treated as zero + + + + + Specifies the area of the bubbles shall be proportional to the bubble size value. + + + + + Specifies the radius of the bubbles shall be proportional to the bubble size value. + + + + + Base class for Chart object. + + + + + Get the name of the chart node + + The name + + + + Add a secondary axis + + + + + Reference to the worksheet + + + + + The chart xml document + + + + + Type of chart + + + + + Titel of the chart + + + + + Chart series + + + + + An array containg all axis of all Charttypes + + + + + The XAxis + + + + + The YAxis + + + + + If true the charttype will use the secondary axis. + The chart must contain a least one other charttype that uses the primary axis. + + + + + The build-in chart styles. + + + + + Show data in hidden rows and columns + + + + + Specifies the possible ways to display blanks + + + + + Specifies data labels over the maximum of the chart shall be shown + + + + + Remove all axis that are not used any more + + + + + + Plotarea + + + + + Legend + + + + + Border + + + + + Fill + + + + + 3D-settings + + + + + If the chart has only one serie this varies the colors for each point. + + + + + Package internal URI + + + + + Enumerates charttypes + + + + + Add a new charttype to the chart + + The type of the new chart + + + + + Returns a chart at the specific position. + + The position of the chart. 0-base + + + + + A collection of trendlines. + + + + + Add a new trendline + + + The trendline + + + + A trendline object + + + + + Type of Trendline + + + + + Name in the legend + + + + + Order for polynominal trendlines + + + + + Period for monthly average trendlines + + + + + Forcast forward periods + + + + + Forcast backwards periods + + + + + Specify the point where the trendline crosses the vertical axis + + + + + Display the R-squared value for a trendline + + + + + Display the trendline equation on the chart + + + + + Provides access to bubble chart specific properties + + + + + Specifies the scale factor for the bubble chart. Can range from 0 to 300, corresponding to a percentage of the default size, + + + + + Specifies the scale factor for the bubble chart. Can range from 0 to 300, corresponding to a percentage of the default size, + + + + + Specifies if the bubblechart is three dimensional + + + + + Specifies the scale factor for the bubble chart. Can range from 0 to 300, corresponding to a percentage of the default size, + + + + + Chart surface settings + + + + + Show the values + + + + + Access fill properties + + + + + Access border properties + + + + + A serie for a scatter chart + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + Datalabel + + + + + Marker symbol + + + + + Provides access to line chart specific properties + + + + + If the series has markers + + + + + If the series has smooth lines + + + + + Access to datalabel properties + + + + + Position of the legend + + + + + Chart ledger + + + + + Position of the Legend + + + + + If the legend overlays other objects + + + + + Fill style + + + + + Border style + + + + + Font properties + + + + + Remove the legend + + + + + Add a legend to the chart + + + + + A charts plot area + + + + + Datalabel properties + + + + + Position of the labels + + + + + Access fill properties + + + + + Access border properties + + + + + Access font properties + + + + + A serie for a scatter chart + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + Datalabel + + + + + Smooth for scattercharts + + + + + Marker symbol + + + + + Line color. + + + + The color of the line. + + + + + Gets or sets the size of the marker. + + + + value between 2 and 72. + + + + The size of the marker. + + + + + Marker color. + + + + The color of the Marker. + + + + + Gets or sets the width of the line in pt. + + + + The width of the line. + + + + + Marker Line color. + (not to be confused with LineColor) + + + + The color of the Marker line. + + + + + write alpha value (if Color.A != 255) + + Color + where to write + + alpha-values may only written to color-nodes + eg: a:prstClr (preset), a:hslClr (hsl), a:schemeClr (schema), a:sysClr (system), a:scrgbClr (rgb percent) or a:srgbClr (rgb hex) + .../a:prstClr/a:alpha/@val + + + + + read AlphaChannel from a:solidFill + + + alpha or 255 if their is no such node + + + + creates xPath to alpha attribute for a color + eg: a:prstClr/a:alpha/@val + + xPath to color node + + + + + The title of a chart + + + + + The text + + + + + A reference to the border properties + + + + + A reference to the fill properties + + + + + A reference to the font properties + + + + + Richtext + + + + + Show without overlaping the chart. + + + + + Specifies the centering of the text box. + The way it works fundamentally is to determine the smallest possible "bounds box" for the text and then to center that "bounds box" accordingly. + This is different than paragraph alignment, which aligns the text within the "bounds box" for the text. + This flag is compatible with all of the different kinds of anchoring. + If this attribute is omitted, then a value of 0 or false is implied. + + + + + Vertical text + + + + + Rotation in degrees (0-360) + + + + + Provides access to ofpie-chart specific properties + + + + + Type, pie or bar + + + + + The size of the gap between two adjacent bars/columns + + + + + A serie for a pie chart + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + Explosion for Piecharts + + + + + DataLabels + + + + + Bar chart + + + + + Direction, Bar or columns + + + + + The shape of the bar/columns + + + + + Access to datalabel properties + + + + + The size of the gap between two adjacent bars/columns + + + + + Position of the axis. + + + + + Position of the Y-Axis + + + + + Position of the X-Axis + + + + + Axis orientaion + + + + + How the axis are crossed + + + + + Specifies the value axis shall cross the category axis between data markers + + + + + Specifies the value axis shall cross the category axis at the midpoint of a category. + + + + + Where the axis cross. + + + + + (Axis Crosses at Zero) The category axis crosses at the zero point of the valueaxis (if possible), or the minimum value (if theminimum is greater than zero) or the maximum (if the maximum is less than zero). + + + + + The axis crosses at the maximum value + + + + + (Axis crosses at the minimum value of the chart. + + + + + Tickmarks + + + + + Specifies the tick marks shall cross the axis. + + + + + Specifies the tick marks shall be inside the plot area. + + + + + Specifies there shall be no tick marks. + + + + + Specifies the tick marks shall be outside the plot area. + + + + + An axis for a chart + + + + + Type of axis + + + + + Value axis + + + + + Category axis + + + + + Date axis + + + + + Series axis + + + + + majorTickMark + This element specifies the major tick marks for the axis. + + + + + minorTickMark + This element specifies the minor tick marks for the axis. + + + + + Type of axis + + + + + Where the axis is located + + + + + Where the axis cross + + + + + How the axis are crossed + + + + + The value where the axis cross. + Null is automatic + + + + + Numberformat + + + + + Position of the labels + + + + + Access to fill properties + + + + + Access to border properties + + + + + Access to font properties + + + + + If the axis is deleted + + + + + Position of the Lables + + + + + Chart axis title + + + + + Minimum value for the axis. + Null is automatic + + + + + Max value for the axis. + Null is automatic + + + + + Major unit for the axis. + Null is automatic + + + + + Major time unit for the axis. + Null is automatic + + + + + Minor unit for the axis. + Null is automatic + + + + + Minor time unit for the axis. + Null is automatic + + + + + The base for a logaritmic scale + Null for a normal scale + + + + + + + + + + Datalabel on chart level. + This class is inherited by ExcelChartSerieDataLabel + + + + + Show the values + + + + + Show category names + + + + + Show series names + + + + + Show percent values + + + + + Show the leader lines + + + + + Bubble Size. + + + + + Separator string + + + + + Access fill properties + + + + + Access border properties + + + + + Access font properties + + + + + A chart serie + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + Header for the serie. + + + + + Header address for the serie. + + + + + Set this to a valid address or the drawing will be invalid. + + + + + Set an address for the horisontal labels + + + + + Access to the trendline collection + + + + + Collection class for chart series + + + + + Returns the serie at the specified position. + + The position of the series. + + + + + Delete the chart at the specific position + + Zero based + + + + A reference to the chart object + + + + + Add a new serie to the chart. Do not apply to pivotcharts. + + The Y-Axis range + The X-Axis range + + + + + Add a new serie to the chart.Do not apply to pivotcharts. + + The Y-Axis range + The X-Axis range + + + + + Provides access to doughnut chart specific properties + + + + + Angle of the first slize + + + + + Size of the doubnut hole + + + + + Provides access to pie chart specific properties + + + + + Access to datalabel properties + + + + + Provides access to scatter chart specific properties + + + + + If the scatter has LineMarkers or SmoothMarkers + + + + + If the series has markers + + + + + Text anchoring + + + + + Vertical text type + + + + + How the drawing will be resized. + + + + + Specifies that the current start and end positions shall + be maintained with respect to the distances from the + absolute start point of the worksheet. + + + + + Specifies that the current drawing shall move with its + row and column (i.e. the object is anchored to the + actual from row and column), but that the size shall + remain absolute. + + + + + Specifies that the current drawing shall move and + resize to maintain its row and column anchors (i.e. the + object is anchored to the actual from and to row and column). + + + + + Base class for twoanchored drawings. + Drawings are Charts, shapes and Pictures. + + + + + Position of the a drawing. + + + + + Column Offset + + EMU units 1cm = 1/360000 + 1US inch = 1/914400 + 1pixel = 1/9525 + + + + + Row Offset + + EMU units 1cm = 1/360000 + 1US inch = 1/914400 + 1pixel = 1/9525 + + + + + The name of the drawing object + + + + + How Excel resize drawings when the column width is changed within Excel. + The width of drawings are currently NOT resized in EPPLus when the column width changes + + + + + Lock drawing + + + + + Print drawing with sheet + + + + + Top Left position + + + + + Bottom right position + + + + + Add new Drawing types here + + The drawing collection + Xml top node + The Drawing object + + + + Set the top left corner of a drawing. + Note that resizing columns / rows after using this function will effect the position of the drawing + + Top pixel + Left pixel + + + + Set the top left corner of a drawing. + Note that resizing columns / rows after using this function will effect the position of the drawing + + Start row - 0-based index. + Offset in pixels + Start Column - 0-based index. + Offset in pixels + + + + Set size in Percent + Note that resizing columns / rows after using this function will effect the size of the drawing + + + + + + Set size in pixels + Note that resizing columns / rows after using this function will effect the size of the drawing + + Width in pixels + Height in pixels + + + + Will adjust the position and size of the drawing according to chages in font of rows and to the Normal style. + This method will be called before save, so use it only if you need the coordinates of the drawing. + + + + + Properties for drawing line ends + + + + + HeaderEnd + + + + + HeaderEnd + + + + + TailEndSizeWidth + + + + + TailEndSizeHeight + + + + + TailEndSizeWidth + + + + + TailEndSizeHeight + + + + + An image object + + + + + The Image + + + + + Image format + If the picture is created from an Image this type is always Jpeg + + + + + Set the size of the image in percent from the orginal size + Note that resizing columns / rows after using this function will effect the size of the picture + + Percent + + + + Fill + + + + + Border + + + + + Hyperlink + + + + + Indexer + + Index + The VML Drawing Picture object + + + + returns the next drawing id. + + + + + + returns the next drawing id. + + + + + + Drawing object used for header and footer pictures + + + + + Position ID + + + + + The width in points + + + + + The height in points + + + + + Margin Left in points + + + + + Margin top in points + + + + + The Title of the image + + + + + The image + + + + + Determines whether an image will be displayed in black and white + + + + + Determines whether a picture will be displayed in grayscale mode + + + + + Defines the intensity of all colors in an image + Default value is 1 + + + + + Defines the amount of contrast for an image + Default value is 0; + + + + + Defines the intensity of black in an image + Default value is 0 + + + + + Horizontal Alingment + + + + + Vertical Alingment + + + + + Linestyle + + + + + Drawing object used for comments + + + + + Alternative text to be displayed instead of a graphic. + + + + + Drawing object used for comments + + + + + Address in the worksheet + + + + + Vertical alignment for text + + + + + Horizontal alignment for text + + + + + If the drawing object is visible. + + + + + Background color + + + + + Linestyle for border + + + + + Line color + + + + + Width of the border + + + + + Autofits the drawingobject + + + + + If the object is locked when the sheet is protected + + + + + Specifies that the object's text is locked + + + + + From position. For comments only when Visible=true. + + + + + To position. For comments only when Visible=true. + + + + + Row position for a comment + + + + + Column position for a comment + + + + + The position of a VML drawing. Used for comments + + + + + Row. Zero based + + + + + Row offset in pixels. Zero based + + + + + Column. Zero based + + + + + Column offset. Zero based + + + + + Collection for Drawing objects. + + + + + A reference to the drawing xml document + + + + + Creates the NamespaceManager. + + + + + Provides access to a namespace manager instance to allow XPath searching + + + + + Returns the drawing at the specified position. + + The position of the drawing. 0-base + + + + + Returns the drawing matching the specified name + + The name of the worksheet + + + + + Add a new chart to the worksheet. + Do not support Bubble-, Radar-, Stock- or Surface charts. + + + Type of chart + The pivottable source for a pivotchart + The chart + + + + Add a new chart to the worksheet. + Do not support Bubble-, Radar-, Stock- or Surface charts. + + + Type of chart + The chart + + + + Add a picure to the worksheet + + + An image. Allways saved in then JPeg format + + + + + Add a picure to the worksheet + + + An image. Allways saved in then JPeg format + Picture Hyperlink + + + + + Add a picure to the worksheet + + + The image file + + + + + Add a picure to the worksheet + + + The image file + Picture Hyperlink + + + + + Add a new shape to the worksheet + + Name + Shape style + The shape object + + + + Add a new shape to the worksheet + + Name + Source shape + The shape object + + + + Removes a drawing. + + The index of the drawing + + + + Removes a drawing. + + The drawing + + + + Removes a drawing. + + The name of the drawing + + + + Removes all drawings from the collection + + + + + An Excel shape. + + + + + Shape style + + + + + Fill + + + + + Border + + + + + Line Ends + + + + + Text inside the shape + + + + + Lock drawing + + + + + Richtext collection. Used to format specific parts of the text + + + + + Text Anchoring + + + + + Specifies the centering of the text box. + + + + + How the text is aligned + + + + + Indentation + + + + + Vertical text + + + + + Type of Line cap + + + + + Line style. + + + + + Border for drawings + + + + + Fill + + + + + Linestyle + + + + + Linecap + + + + + Width in pixels + + + + + Fill properties for drawing objects + + + + + Fill style + + + + + Fill color for solid fills + + + + + Transparancy in percent + + + + + 3D settings + + + + + Degree of perspective + + + + + Rotation X-axis + + + + + Rotation Y-axis + + + + + Right Angle Axes + + + + + Depth % of base + + + + + Height % of base + + + + + Handels encrypted Excel documents + + + + + Read the package from the OLE document and decrypt it using the supplied password + + The file + + + + + + Read the package from the OLE document and decrypt it using the supplied password + + The memory stream. + The encryption object from the Package + + + + + Encrypts a package + + The package as a byte array + The encryption info from the workbook + + + + + Create an EncryptionInfo object to encrypt a workbook + + The password + + The Encryption key + + + + + Decrypt a document + + The Encrypted data + Encryption Info object + The password + + + + + Validate the password + + The encryption key + The encryption info extracted from the ENCRYPTIOINFO stream inside the OLE document + + + + + Validate the password + + The hash algorithm + The encryption info extracted from the ENCRYPTIOINFO stream inside the OLE document + + + + + Create the hash. + This method is written with the help of Lyquidity library, many thanks for this nice sample + + The password + The encryption info extracted from the ENCRYPTIOINFO stream inside the OLE document + The hash to encrypt the document + + + + Create the hash. + This method is written with the help of Lyquidity library, many thanks for this nice sample + + The password + The encryption info extracted from the ENCRYPTIOINFO stream inside the OLE document + The block key appended to the hash to obtain the final hash + The hash to encrypt the document + + + + Encryption Header inside the EncryptionInfo stream + + + + + AES. MUST conform to the AES algorithm. + + + + + RC2. MUST conform to [RFC2268]. + + + + + RC4. + + + + + MUST conform to the DES algorithm. + + + + + MUST conform to the [DRAFT-DESX] algorithm. + + + + + 3DES. MUST conform to the [RFC1851] algorithm. + + + + 3DES_112 MUST conform to the [RFC1851] algorithm. + + + + Cipher block chaining (CBC). + + + + + Cipher feedback chaining (CFB), with 8-bit window. + + + + + Hashalgorithm + + + + + Sha 1-MUST conform to [RFC4634] + + + + + Sha 256-MUST conform to [RFC4634] + + + + + Sha 384-MUST conform to [RFC4634] + + + + + Sha 512-MUST conform to [RFC4634] + + + + + MD5 + + + + + MD4 + + + + + MD2 + + + + + RIPEMD-128 MUST conform to [ISO/IEC 10118] + + + + + RIPEMD-160 MUST conform to [ISO/IEC 10118] + + + + + WHIRLPOOL MUST conform to [ISO/IEC 10118] + + + + + Handels the agile encryption + + + + + Handles the EncryptionInfo stream + + + + + Encryption verifier inside the EncryptionInfo stream + + + + + An image that fills the background of the worksheet. + + + + + + + + The topnode of the worksheet + Worksheet reference + + + + The background image of the worksheet. + The image will be saved internally as a jpg. + + + + + Set the picture from an image file. + The image file will be saved as a blob, so make sure Excel supports the image format. + + The image file. + + + + Encryption Algorithm + + + + + 128-bit AES. Default + + + + + 192-bit AES. + + + + + 256-bit AES. + + + + + The major version of the Encryption + + + + + Standard Encryption. + Used in Excel 2007 and previous version with compatibility pack. + Default AES 128 with SHA-1 as the hash algorithm. Spincount is hardcoded to 50000 + + + + + Agile Encryption. + Used in Excel 2010- + Default. + + + + + How and if the workbook is encrypted + + + + + + + Constructor + Default AES 256 with SHA-512 as the hash algorithm. Spincount is set to 100000 + + + + + Constructor + + Algorithm used to encrypt the package. Default is AES128 + + + + Is the package encrypted + + + + + The password used to encrypt the workbook. + + + + + Algorithm used for encrypting the package. Default is AES 128-bit for standard and AES 256 for agile + + + + + The version of the encryption. + + + + + Algorithm for password hash + + + + + Specifies that the MD2 algorithm, as defined by RFC 1319, shall be used. + + + + + Specifies that the MD4 algorithm, as defined by RFC 1319, shall be used. + + + + + Specifies that the MD5 algorithm, as defined by RFC 1319, shall be used. + + + + + Specifies that the RIPEMD-128 algorithm, as defined by RFC 1319, shall be used. + + + + + Specifies that the RIPEMD-160 algorithm, as defined by ISO/IEC10118-3:2004 shall be used. + + + + + Specifies that the SHA-1 algorithm, as defined by ISO/IEC 10118-3:2004 shall be used. + + + + + Specifies that the SHA-256 algorithm, as defined by ISO/IEC10118-3:2004 shall be used. + + + + + Specifies that the SHA-384 algorithm, as defined by ISO/IEC 10118-3:2004 shall be used. + + + + + Specifies that the SHA-512 algorithm, as defined by ISO/IEC10118-3:2004 shall be used. + + + + + Specifies that the WHIRLPOOL algorithm, as defined by ISO/IEC 10118-3:2004 shall be used. + + + + + Sets the password for the range + + + + + + Flag enum, specify all flags that you want to exclude from the copy. + + + + + Exclude formulas from being copied + + + + + Base collection class for styles. + + The style type + + + + Finds the key + + the key to be found + The found object. + True if found + + + + Find Index + + + + + + + Represents one or more columns within the worksheet + + + + + Creates a new instance of the ExcelColumn class. + For internal use only! + + + + + + + Sets the first column the definition refers to. + + + + + Sets the last column the definition refers to. + + + + + Internal range id for the column + + + + + Allows the column to be hidden in the worksheet + + + + + Sets the width of the column in the worksheet + + + + + If set to true a column automaticlly resize(grow wider) when a user inputs numbers in a cell. + + + + + If the column is collapsed in outline mode + + + + + Outline level. Zero if no outline + + + + + Phonetic + + + + + The Style applied to the whole column. Only effects cells with no individual style set. + Use Range object if you want to set specific styles. + + + + + Sets the style for the entire column using a style name. + + + + + Sets the style for the entire column using the style ID. + + + + + Adds a manual page break after the column. + + + + + Returns the range of columns covered by the column definition. + + A string describing the range of columns covered by the column definition. + + + + Set the column width from the content of the range. The minimum width is the value of the ExcelWorksheet.defaultColumnWidth property. + Note: Cells containing formulas are ignored since EPPlus don't have a calculation engine. + Wrapped and merged cells are also ignored. + + + + + Set the column width from the content. + Note: Cells containing formulas are ignored since EPPlus don't have a calculation engine. + Wrapped and merged cells are also ignored. + + Minimum column width + + + + Set the column width from the content. + Note: Cells containing formulas are ignored since EPPlus don't have a calculation engine. + Wrapped and merged cells are also ignored. + + Minimum column width + Maximum column width + + + + Get the internal RangeID + + Sheet no + Column + + + + + Copies the current column to a new worksheet + + The worksheet where the copy will be created + + + + How a picture will be aligned in the header/footer + + + + + The picture will be added to the left aligned text + + + + + The picture will be added to the centered text + + + + + The picture will be added to the right aligned text + + + + + Print header and footer + + + + + Get/set the text to appear on the left hand side of the header (or footer) on the worksheet. + + + + + Get/set the text to appear in the center of the header (or footer) on the worksheet. + + + + + Get/set the text to appear on the right hand side of the header (or footer) on the worksheet. + + + + + Inserts a picture at the end of the text in the header or footer + + The image object containing the Picture + Alignment. The image object will be inserted at the end of the Text. + + + + Inserts a picture at the end of the text in the header or footer + + The image object containing the Picture + Alignment. The image object will be inserted at the end of the Text. + + + + Represents the Header and Footer on an Excel Worksheet + + + + + The code for "current page #" + + + + + The code for "total pages" + + + + + The code for "text font color" + RGB Color is specified as RRGGBB + Theme Color is specified as TTSNN where TT is the theme color Id, S is either "+" or "-" of the tint/shade value, NN is the tint/shade value. + + + + + The code for "sheet tab name" + + + + + The code for "this workbook's file path" + + + + + The code for "this workbook's file name" + + + + + The code for "date" + + + + + The code for "time" + + + + + The code for "picture as background" + + + + + The code for "outline style" + + + + + The code for "shadow style" + + + + + ExcelHeaderFooter Constructor + + + + The worksheet + + + + Gets/sets the alignWithMargins attribute + + + + + Gets/sets the flag that tells Excel to display different headers and footers on odd and even pages. + + + + + Gets/sets the flag that tells Excel to display different headers and footers on the first page of the worksheet. + + + + + Provides access to the header on odd numbered pages of the document. + If you want the same header on both odd and even pages, then only set values in this ExcelHeaderFooterText class. + + + + + Provides access to the footer on odd numbered pages of the document. + If you want the same footer on both odd and even pages, then only set values in this ExcelHeaderFooterText class. + + + + + Provides access to the header on even numbered pages of the document. + + + + + Provides access to the footer on even numbered pages of the document. + + + + + Provides access to the header on the first page of the document. + + + + + Provides access to the footer on the first page of the document. + + + + + Vml drawings. Underlaying object for Header footer images + + + + + Saves the header and footer information to the worksheet XML + + + + + Maps to DotNetZips CompressionLevel enum + + + + + Represents an Excel 2007/2010 XLSX file package. + This is the top-level object to access all parts of the document. + + FileInfo newFile = new FileInfo(outputDir.FullName + @"\sample1.xlsx"); + if (newFile.Exists) + { + newFile.Delete(); // ensures we create a new workbook + newFile = new FileInfo(outputDir.FullName + @"\sample1.xlsx"); + } + using (ExcelPackage package = new ExcelPackage(newFile)) + { + // add a new worksheet to the empty workbook + ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Inventory"); + //Add the headers + worksheet.Cells[1, 1].Value = "ID"; + worksheet.Cells[1, 2].Value = "Product"; + worksheet.Cells[1, 3].Value = "Quantity"; + worksheet.Cells[1, 4].Value = "Price"; + worksheet.Cells[1, 5].Value = "Value"; + + //Add some items... + worksheet.Cells["A2"].Value = "12001"; + worksheet.Cells["B2"].Value = "Nails"; + worksheet.Cells["C2"].Value = 37; + worksheet.Cells["D2"].Value = 3.99; + + worksheet.Cells["A3"].Value = "12002"; + worksheet.Cells["B3"].Value = "Hammer"; + worksheet.Cells["C3"].Value = 5; + worksheet.Cells["D3"].Value = 12.10; + + worksheet.Cells["A4"].Value = "12003"; + worksheet.Cells["B4"].Value = "Saw"; + worksheet.Cells["C4"].Value = 12; + worksheet.Cells["D4"].Value = 15.37; + + //Add a formula for the value-column + worksheet.Cells["E2:E4"].Formula = "C2*D2"; + + //Ok now format the values; + using (var range = worksheet.Cells[1, 1, 1, 5]) + { + range.Style.Font.Bold = true; + range.Style.Fill.PatternType = ExcelFillStyle.Solid; + range.Style.Fill.BackgroundColor.SetColor(Color.DarkBlue); + range.Style.Font.Color.SetColor(Color.White); + } + + worksheet.Cells["A5:E5"].Style.Border.Top.Style = ExcelBorderStyle.Thin; + worksheet.Cells["A5:E5"].Style.Font.Bold = true; + + worksheet.Cells[5, 3, 5, 5].Formula = string.Format("SUBTOTAL(9,{0})", new ExcelAddress(2,3,4,3).Address); + worksheet.Cells["C2:C5"].Style.Numberformat.Format = "#,##0"; + worksheet.Cells["D2:E5"].Style.Numberformat.Format = "#,##0.00"; + + //Create an autofilter for the range + worksheet.Cells["A1:E4"].AutoFilter = true; + + worksheet.Cells["A1:E5"].AutoFitColumns(0); + + // lets set the header text + worksheet.HeaderFooter.oddHeader.CenteredText = "&24&U&\"Arial,Regular Bold\" Inventory"; + // add the page number to the footer plus the total number of pages + worksheet.HeaderFooter.oddFooter.RightAlignedText = + string.Format("Page {0} of {1}", ExcelHeaderFooter.PageNumber, ExcelHeaderFooter.NumberOfPages); + // add the sheet name to the footer + worksheet.HeaderFooter.oddFooter.CenteredText = ExcelHeaderFooter.SheetName; + // add the file path to the footer + worksheet.HeaderFooter.oddFooter.LeftAlignedText = ExcelHeaderFooter.FilePath + ExcelHeaderFooter.FileName; + + worksheet.PrinterSettings.RepeatRows = worksheet.Cells["1:2"]; + worksheet.PrinterSettings.RepeatColumns = worksheet.Cells["A:G"]; + + // Change the sheet view to show it in page layout mode + worksheet.View.PageLayoutView = true; + + // set some document properties + package.Workbook.Properties.Title = "Invertory"; + package.Workbook.Properties.Author = "Jan Källman"; + package.Workbook.Properties.Comments = "This sample demonstrates how to create an Excel 2007 workbook using EPPlus"; + + // set some extended property values + package.Workbook.Properties.Company = "AdventureWorks Inc."; + + // set some custom property values + package.Workbook.Properties.SetCustomPropertyValue("Checked by", "Jan Källman"); + package.Workbook.Properties.SetCustomPropertyValue("AssemblyName", "EPPlus"); + + // save our new workbook and we are done! + package.Save(); + + } + + return newFile.FullName; + + More samples can be found at http://epplus.codeplex.com/ + + + + + Extention Schema types + + + + + Main Xml schema name + + + + + Relationship schema name + + + + + Maximum number of columns in a worksheet (16384). + + + + + Maximum number of rows in a worksheet (1048576). + + + + + Create a new instance of the ExcelPackage. Output is accessed through the Stream property. + + + + + Create a new instance of the ExcelPackage class based on a existing file or creates a new file. + + If newFile exists, it is opened. Otherwise it is created from scratch. + + + + Create a new instance of the ExcelPackage class based on a existing file or creates a new file. + + If newFile exists, it is opened. Otherwise it is created from scratch. + Password for an encrypted package + + + + Create a new instance of the ExcelPackage class based on a existing template. + If newFile exists, it will be overwritten when the Save method is called + + The name of the Excel file to be created + The name of the Excel template to use as the basis of the new Excel file + + + + Create a new instance of the ExcelPackage class based on a existing template. + If newFile exists, it will be overwritten when the Save method is called + + The name of the Excel file to be created + The name of the Excel template to use as the basis of the new Excel file + Password to decrypted the template + + + + Create a new instance of the ExcelPackage class based on a existing template. + + The name of the Excel template to use as the basis of the new Excel file + if true use a stream. If false create a file in the temp dir with a random name + + + + Create a new instance of the ExcelPackage class based on a existing template. + + The name of the Excel template to use as the basis of the new Excel file + if true use a stream. If false create a file in the temp dir with a random name + Password to decrypted the template + + + + Create a new instance of the ExcelPackage class based on a stream + + The stream object can be empty or contain a package. The stream must be Read/Write + + + + Create a new instance of the ExcelPackage class based on a stream + + The stream object can be empty or contain a package. The stream must be Read/Write + The password to decrypt the document + + + + Create a new instance of the ExcelPackage class based on a stream + + The output stream. Must be an empty read/write stream. + This stream is copied to the output stream at load + + + + Create a new instance of the ExcelPackage class based on a stream + + The output stream. Must be an empty read/write stream. + This stream is copied to the output stream at load + Password to decrypted the template + + + + Init values here + + + + + Create a new file from a template + + An existing xlsx file to use as a template + The password to decrypt the package. + + + + + Returns a reference to the package + + + + + Information how and if the package is encrypted + + + + + Returns a reference to the workbook component within the package. + All worksheets and cells can be accessed through the workbook. + + + + + Automaticlly adjust drawing size when column width/row height are adjusted, depending on the drawings editBy property. + Default True + + + + + Saves the XmlDocument into the package at the specified Uri. + + The Uri of the component + The XmlDocument to save + + + + Saves the XmlDocument into the package at the specified Uri. + + The Uri of the component + The XmlDocument to save + + + + Closes the package. + + + + + Saves all the components back into the package. + This method recursively calls the Save method on all sub-components. + We close the package after the save is done. + + + + + Saves all the components back into the package. + This method recursively calls the Save method on all sub-components. + The package is closed after it has ben saved + d to encrypt the workbook with. + + This parameter overrides the Workbook.Encryption.Password. + + + + Saves the workbook to a new file + The package is closed after it has been saved + + The file location + + + + Saves the workbook to a new file + The package is closed after it has been saved + + The file + The password to encrypt the workbook with. + This parameter overrides the Encryption.Password. + + + + Copies the Package to the Outstream + The package is closed after it has been saved + + The stream to copy the package to + + + + Copies the Package to the Outstream + The package is closed after it has been saved + + The stream to copy the package to + The password to encrypt the workbook with. + This parameter overrides the Encryption.Password. + + + + The output file. Null if no file is used + + + + + Close the internal stream + + + + + The output stream. This stream is the not the encrypted package. + To get the encrypted package use the SaveAs(stream) method. + + + + + Compression option for the package + + + + + Get the XmlDocument from an URI + + The Uri to the part + The XmlDocument + + + + Saves and returns the Excel files as a bytearray. + Note that the package is closed upon save + + + Example how to return a document from a Webserver... + + ExcelPackage package=new ExcelPackage(); + /**** ... Create the document ****/ + Byte[] bin = package.GetAsByteArray(); + Response.ContentType = "Application/vnd.ms-Excel"; + Response.AddHeader("content-disposition", "attachment; filename=TheFile.xlsx"); + Response.BinaryWrite(bin); + + + + + + + Saves and returns the Excel files as a bytearray + Note that the package is closed upon save + + + Example how to return a document from a Webserver... + + ExcelPackage package=new ExcelPackage(); + /**** ... Create the document ****/ + Byte[] bin = package.GetAsByteArray(); + Response.ContentType = "Application/vnd.ms-Excel"; + Response.AddHeader("content-disposition", "attachment; filename=TheFile.xlsx"); + Response.BinaryWrite(bin); + + + The password to encrypt the workbook with. + This parameter overrides the Encryption.Password. + + + + + Loads the specified package data from a stream. + + The input. + + + + Loads the specified package data from a stream. + + The input. + The password to decrypt the document + + + + + + + + + + + + Copies the input stream to the output stream. + + The input stream. + The output stream. + + + + A range of cells. + + + + + Access the range using an address + + The address + A range object + + + + Access a single cell + + The row + The column + A range object + + + + Access a range of cells + + Start row + Start column + End Row + End Column + + + + + Represents an individual row in the spreadsheet. + + + + + Internal RowID. + + + + + Creates a new instance of the ExcelRow class. + For internal use only! + + The parent worksheet + The row number + + + + Provides access to the node representing the row. + + + + + Allows the row to be hidden in the worksheet + + + + + Sets the height of the row + + + + + Set to true if You don't want the row to Autosize + + + + + Sets the style for the entire column using a style name. + + + + + Sets the style for the entire row using the style ID. + + + + + Rownumber + + + + + If outline level is set this tells that the row is collapsed + + + + + Outline level. + + + + + Show phonetic Information + + + + + The Style applied to the whole row. Only effekt cells with no individual style set. + Use ExcelRange object if you want to set specific styles. + + + + + Adds a manual page break after the row. + + + + + Copies the current row to a new worksheet + + The worksheet where the copy will be created + + + + Containts all shared cell styles for a workbook + + + + + Loads the style XML to memory + + + + + Handels changes of properties on the style objects + + + + + + + + Handles property changes on Named styles. + + + + + + + + Sets protection on the workbook level + + + + + + + Sets a password for the workbook. This does not encrypt the workbook. + + The password. + + + + Locks the structure,which prevents users from adding or deleting worksheets or from displaying hidden worksheets. + + + + + Locks the position of the workbook window. + + + + + Lock the workbook for revision + + + + + Discribes a column when reading a text using the ExcelRangeBase.LoadFromText method + + + + + Let the the import decide. + + + + + Always a string. + + + + + Try to convert it to a number. If it fails then add it as a string. + + + + + Try to convert it to a date. If it fails then add it as a string. + + + + + Try to convert it to a number and divide with 100. + Removes any tailing percent sign (%). If it fails then add it as a string. + + + + + Describes how to split a CSV text. Used by the ExcelRange.LoadFromText method + + + + + Describes how to split a CSV text + + Default values + + PropertyValue + Delimiter, + TextQualifierNone (\0) + EOLCRLF + CultureCultureInfo.InvariantCulture + DataTypesEnd of line default CRLF + SkipLinesBeginning0 + SkipLinesEnd0 + EncodingEncoding.ASCII + + + + + + Delimiter character + + + + + Text qualifier character + + + + + End of line characters. Default CRLF + + + + + Datatypes list for each column (if column is not present Unknown is assumed) + + + + + Culture used when parsing. Default CultureInfo.InvariantCulture + + + + + Number of lines skiped in the begining of the file. Default 0. + + + + + Number of lines skiped at the end of the file. Default 0. + + + + + Only used when reading files from disk using a FileInfo object. Default AscII + + + + + This method follows the calculation chain to get the order of the calculation + Goto (!) is used internally to prevent stackoverflow on extremly larget dependency trees (that is, many recursive formulas). + + The dependency chain object + The formula tokenizer + The workbook where the formula comes from + The worksheet where the formula comes from + The cell function object + Calcultaiton options + + + + This class should be implemented to be able to deliver excel data + to the formula parser. + + + + + A range of cells in a worksheet. + + + + + Information and help methods about a cell + + + + + Returns the names of all worksheet names + + + + + + Returns all defined names in a workbook + + + + + + Returns values from the required range. + + The name of the worksheet + Row + Column + The reference address + + + + + Returns a single cell value + + + + + + + + + Returns the address of the lowest rightmost cell on the worksheet. + + + + + + + Use this method to free unmanaged resources. + + + + + Max number of columns in a worksheet that the Excel data provider can handle. + + + + + Max number of rows in a worksheet that the Excel data provider can handle + + + + + Handles translations from Spreadsheet addresses to 0-based numeric index. + + + + + Translates an address in format "A1" to col- and rowindex. + + If the supplied address is a range, the address of the first part will be calculated. + + + + + + + + Translates an address in format "A1" to col- and rowindex. + + + + + + + + + Returns true if this range collides (full or partly) with the supplied range + + The range to check + + + + + + + will be used if no worksheet name is specified in + address of a range + + + + + Simple implementation of DateValue function, just using .NET built-in + function System.DateTime.TryParse, based on current culture + + + + + This implementation was found on http://stackoverflow.com/questions/1285191/get-week-of-date-from-linq-query + + + + + + + Simple implementation of TimeValue function, just using .NET built-in + function System.DateTime.TryParse, based on current culture + + + + + Base class for functions that handles an error that occurs during the + normal execution of the function. + If an exception occurs during the Execute-call that exception will be + caught by the compiler, then the HandleError-method will be called. + + + + + Indicates that the function is an ErrorHandlingFunction. + + + + + Method that should be implemented to handle the error. + + + + + + + Base class for Excel function implementations. + + + + + + + Arguments to the function, each argument can contain primitive types, lists or Excel ranges + The contains various data that can be useful in functions. + A containing the calculated value + + + + If overridden, this method is called before Execute is called. + + + + + + Used for some Lookupfunctions to indicate that function arguments should + not be compiled before the function is called. + + + + + This functions validates that the supplied contains at least + (the value of) elements. If one of the arguments is an + Excel range the number of cells in + that range will be counted as well. + + + + The of the that will be thrown if is not met. + + + + This functions validates that the supplied contains at least + (the value of) elements. If one of the arguments is an + Excel range the number of cells in + that range will be counted as well. + + + + + + + + Returns the value of the argument att the position of the 0-based + as an integer. + + + + Value of the argument as an integer. + + + + + Returns the value of the argument att the position of the 0-based + as a string. + + + + Value of the argument as a string. + + + + Returns the value of the argument att the position of the 0-based + + + Value of the argument as a double. + + + + + Returns the value of the argument att the position of the 0-based + as a . + + + + Value of the argument as an integer. + + + + + If the argument is a boolean value its value will be returned. + If the argument is an integer value, true will be returned if its + value is not 0, otherwise false. + + + + + + + + Throws an if evaluates to true. + + + + + + + + Throws an if evaluates to true. + + + + Formats to the message string. + + + + Throws an with the given set. + + + + + + Throws an if evaluates to true. + + + + + + + + Helper method for comparison of two doubles. + + + + + + + + Will return the arguments as an enumerable of doubles. + + + + + + + + Will return the arguments as an enumerable of doubles. + + If a cell is hidden and this value is true the value of that cell will be ignored + If a cell contains an error, that error will be ignored if this method is set to true + + + + + + + Will return the arguments as an enumerable of doubles. + + If a cell is hidden and this value is true the value of that cell will be ignored + + + + + + + Will return the arguments as an enumerable of objects. + + If a cell is hidden and this value is true the value of that cell will be ignored + + + + + + + Use this method to create a result to return from Excel functions. + + + + + + + + Use this method to apply a function on a collection of arguments. The + should be modifyed in the supplied and will contain the result + after this operation has been performed. + + + + + + + + + if the supplied argument contains an Excel error + an with that errorcode will be thrown + + + + + + + If the supplied contains an Excel error + an with that errorcode will be thrown + + + + + + This class provides methods for accessing/modifying VBA Functions. + + + + + Gets a of custom s. + + + + + Loads a module of s to the function repository. + + A that can be used for adding functions and custom function compilers. + + + + Removes all functions from the repository + + + + + Returns true if the the supplied exists in the repository. + + + + + + + Returns the names of all implemented functions. + + + + + Adds or replaces a function. + + Case-insensitive name of the function that should be added or replaced. + An implementation of an . + + + + Base class + + + + + Gets a dictionary of custom function implementations. + + + + + Gets a dictionary of custom function compilers. A function compiler is not + necessary for a custom function, unless the default expression evaluation is not + sufficient for the implementation of the custom function. When a FunctionCompiler instance + is created, it should be given a reference to the same function instance that exists + in the Functions collection of this module. + + + + + Base class for functions that needs to handle cells that is not visible. + + + + + Set to true or false to indicate whether the function should ignore hidden values. + + + + + Gets a dictionary of custom function implementations. + + + + + Gets a dictionary of custom function compilers. A function compiler is not + necessary for a custom function, unless the default expression evaluation is not + sufficient for the implementation of the custom function. When a FunctionCompiler instance + is created, it should be given a reference to the same function instance that exists + in the Functions collection of this module. + + + + + Thanks to the guys in this thread: http://stackoverflow.com/questions/2840798/c-sharp-math-class-question + + + + + This Exception represents an Excel error. When this exception is thrown + from an Excel function, the ErrorValue code will be set as the value of the + parsed cell. + + + + + + The error value + + + + + Gets or sets a value that indicates whether or not to resolve directly to an + + + + + Why do the If function require a compiler of its own you might ask;) + + It is because it only needs to evaluate one of the two last expressions. This + compiler handles this - it ignores the irrelevant expression. + + + + + Expression that handles execution of a function. + + + + + Constructor + + should be the of the function + + True if the numeric result of the function should be negated. + + + + Provides access to various functionality regarding + excel formula evaluation. + + + + + Loads a module containing custom functions to the formula parser. By using + this method you can add your own implementations of Excel functions, by + implementing a . + + A containing s. + + + + If the supplied does not exist, the supplied + implementation will be added to the formula parser. + If it exists, the existing function will be replaced by the supplied function implementation + + + + + + + Copies existing ´s from one workbook to another. + + The workbook containing the forumulas to be copied. + + + + Returns an enumeration of the names of all functions implemented, both the built in functions + and functions added using the LoadFunctionModule method of this class. + + Function names in lower case + + + + Returns an enumeration of all implemented functions, including the implementing instance. + + An enumeration of , where the key is the function name + + + + Parses the supplied and returns the result. + + + + + + + Attaches a logger to the . + + An instance of + + + + + Attaches a logger to the formula parser that produces output to the supplied logfile. + + + + + + Detaches any attached logger from the formula parser. + + + + + This class provides access to s - classes that exposes functionatlity + needed when parsing strings to tokens. + + + + + Handles a tokenseparator. + + + + + + Returns true if the tokenseparator was handled. + + + + Used for logging during FormulaParsing + + + + + Called each time an exception occurs during formula parsing. + + + + + + + Called each time information should be logged during formula parsing. + + + + + + + Called to log a message outside the parsing context. + + + + + + Called each time a cell within the calc chain is accessed during formula parsing. + + + + + Called each time a function is called during formula parsing. + + + + + + Some functions measure performance, if so this function will be called. + + + + + + + Create loggers that can be used for logging the formula parser. + + + + + Creates a logger that logs to a simple textfile. + + + + + + + Attaches a logger, errors and log entries will be written to the logger during the parsing process. + + + + + + + if a logger is attached it will be removed. + + + + + + Parsing context + + + + + The of the current context. + + + + + The is an abstraction on top of + Excel, in this case EPPlus. + + + + + Utility for handling addresses + + + + + of the current context + + + + + Configuration + + + + + Scopes, a scope represents the parsing of a cell or a value. + + + + + Returns true if a is attached to the parser. + + + + + Factory method. + + + + + + Represents a parsing of a single input or workbook addrses. + + + + + Id of the scope. + + + + + The calling scope. + + + + + The address of the cell currently beeing parsed. + + + + + True if the current scope is a Subtotal function beeing executed. + + + + + This class implements a stack on which instances of + are put. Each ParsingScope represents the parsing of an address in the workbook. + + + + + Creates a new and puts it on top of the stack. + + + + + + + The current parsing scope. + + + + + Removes the current scope, setting the calling scope to current. + + + + + + Represents the errortypes in excel + + + + + Division by zero + + + + + Not applicable + + + + + Name error + + + + + Null error + + + + + Num error + + + + + Reference error + + + + + Value error + + + + + Represents an Excel error. + + + + + + Handles the convertion between and the string values + used by Excel. + + + + + Returns true if the supplied is an excel error. + + + + + + + Returns true if the supplied is an excel error. + + + + + + + Converts a string to an + + + + Thrown if the supplied value is not an Excel error + + + + The error type + + + + + Returns the string representation of the error type + + + + + + This class exposes a set of COM-accessible wrappers for static + methods available on the ZipFile class. You don't need this + class unless you are using DotNetZip from a COM environment. + + + + + A wrapper for ZipFile.IsZipFile(string) + + The filename to of the zip file to check. + true if the file contains a valid zip file. + + + + A wrapper for ZipFile.IsZipFile(string, bool) + + + We cannot use "overloaded" Method names in COM interop. + So, here, we use a unique name. + + The filename to of the zip file to check. + true if the file contains a valid zip file. + + + + A wrapper for ZipFile.CheckZip(string) + + The filename to of the zip file to check. + + true if the named zip file checks OK. Otherwise, false. + + + + A COM-friendly wrapper for the static method . + + + The filename to of the zip file to check. + + The password to check. + + true if the named zip file checks OK. Otherwise, false. + + + + A wrapper for ZipFile.FixZipDirectory(string) + + The filename to of the zip file to fix. + + + + A wrapper for ZipFile.LibraryVersion + + + the version number on the DotNetZip assembly, formatted as a string. + + + + + An enum that provides the various encryption algorithms supported by this + library. + + + + + + PkzipWeak implies the use of Zip 2.0 encryption, which is known to be + weak and subvertible. + + + + A note on interoperability: Values of PkzipWeak and None are + specified in PKWARE's zip + specification, and are considered to be "standard". Zip archives + produced using these options will be interoperable with many other zip tools + and libraries, including Windows Explorer. + + + + Values of WinZipAes128 and WinZipAes256 are not part of the Zip + specification, but rather imply the use of a vendor-specific extension from + WinZip. If you want to produce interoperable Zip archives, do not use these + values. For example, if you produce a zip archive using WinZipAes256, you + will be able to open it in Windows Explorer on Windows XP and Vista, but you + will not be able to extract entries; trying this will lead to an "unspecified + error". For this reason, some people have said that a zip archive that uses + WinZip's AES encryption is not actually a zip archive at all. A zip archive + produced this way will be readable with the WinZip tool (Version 11 and + beyond). + + + + There are other third-party tools and libraries, both commercial and + otherwise, that support WinZip's AES encryption. These will be able to read + AES-encrypted zip archives produced by DotNetZip, and conversely applications + that use DotNetZip to read zip archives will be able to read AES-encrypted + archives produced by those tools or libraries. Consult the documentation for + those other tools and libraries to find out if WinZip's AES encryption is + supported. + + + + In case you care: According to the WinZip specification, the + actual AES key used is derived from the via an + algorithm that complies with RFC 2898, using an iteration + count of 1000. The algorithm is sometimes referred to as PBKDF2, which stands + for "Password Based Key Derivation Function #2". + + + + A word about password strength and length: The AES encryption technology is + very good, but any system is only as secure as the weakest link. If you want + to secure your data, be sure to use a password that is hard to guess. To make + it harder to guess (increase its "entropy"), you should make it longer. If + you use normal characters from an ASCII keyboard, a password of length 20 will + be strong enough that it will be impossible to guess. For more information on + that, I'd encourage you to read this + article. + + + + The WinZip AES algorithms are not supported with the version of DotNetZip that + runs on the .NET Compact Framework. This is because .NET CF lacks the + HMACSHA1 class that is required for producing the archive. + + + + + + No encryption at all. + + + + + Traditional or Classic pkzip encryption. + + + + + An encryption algorithm that is not supported by DotNetZip. + + + + + Delegate in which the application writes the ZipEntry content for the named entry. + + + The name of the entry that must be written. + The stream to which the entry data should be written. + + + When you add an entry and specify a WriteDelegate, via , the application + code provides the logic that writes the entry data directly into the zip file. + + + + + This example shows how to define a WriteDelegate that obtains a DataSet, and then + writes the XML for the DataSet into the zip archive. There's no need to + save the XML to a disk file first. + + + private void WriteEntry (String filename, Stream output) + { + DataSet ds1 = ObtainDataSet(); + ds1.WriteXml(output); + } + + private void Run() + { + using (var zip = new ZipFile()) + { + zip.AddEntry(zipEntryName, WriteEntry); + zip.Save(zipFileName); + } + } + + + + Private Sub WriteEntry (ByVal filename As String, ByVal output As Stream) + DataSet ds1 = ObtainDataSet() + ds1.WriteXml(stream) + End Sub + + Public Sub Run() + Using zip = New ZipFile + zip.AddEntry(zipEntryName, New WriteDelegate(AddressOf WriteEntry)) + zip.Save(zipFileName) + End Using + End Sub + + + + + + + Delegate in which the application opens the stream, just-in-time, for the named entry. + + + + The name of the ZipEntry that the application should open the stream for. + + + + When you add an entry via , the application code provides the logic that + opens and closes the stream for the given ZipEntry. + + + + + + + Delegate in which the application closes the stream, just-in-time, for the named entry. + + + + The name of the ZipEntry that the application should close the stream for. + + + The stream to be closed. + + + When you add an entry via , the application code provides the logic that + opens and closes the stream for the given ZipEntry. + + + + + + + Delegate for the callback by which the application tells the + library the CompressionLevel to use for a file. + + + + + Using this callback, the application can, for example, specify that + previously-compressed files (.mp3, .png, .docx, etc) should use a + CompressionLevel of None, or can set the compression level based + on any other factor. + + + + + + + In an EventArgs type, indicates which sort of progress event is being + reported. + + + There are events for reading, events for saving, and events for + extracting. This enumeration allows a single EventArgs type to be sued to + describe one of multiple subevents. For example, a SaveProgress event is + invoked before, after, and during the saving of a single entry. The value + of an enum with this type, specifies which event is being triggered. The + same applies to Extraction, Reading and Adding events. + + + + + Indicates that a Add() operation has started. + + + + + Indicates that an individual entry in the archive has been added. + + + + + Indicates that a Add() operation has completed. + + + + + Indicates that a Read() operation has started. + + + + + Indicates that an individual entry in the archive is about to be read. + + + + + Indicates that an individual entry in the archive has just been read. + + + + + Indicates that a Read() operation has completed. + + + + + The given event reports the number of bytes read so far + during a Read() operation. + + + + + Indicates that a Save() operation has started. + + + + + Indicates that an individual entry in the archive is about to be written. + + + + + Indicates that an individual entry in the archive has just been saved. + + + + + Indicates that a Save() operation has completed. + + + + + Indicates that the zip archive has been created in a + temporary location during a Save() operation. + + + + + Indicates that the temporary file is about to be renamed to the final archive + name during a Save() operation. + + + + + Indicates that the temporary file is has just been renamed to the final archive + name during a Save() operation. + + + + + Indicates that the self-extracting archive has been compiled + during a Save() operation. + + + + + The given event is reporting the number of source bytes that have run through the compressor so far + during a Save() operation. + + + + + Indicates that an entry is about to be extracted. + + + + + Indicates that an entry has just been extracted. + + + + + Indicates that extraction of an entry would overwrite an existing + filesystem file. You must use + + ExtractExistingFileAction.InvokeExtractProgressEvent in the call + to ZipEntry.Extract() in order to receive this event. + + + + + The given event is reporting the number of bytes written so far for + the current entry during an Extract() operation. + + + + + Indicates that an ExtractAll operation is about to begin. + + + + + Indicates that an ExtractAll operation has completed. + + + + + Indicates that an error has occurred while saving a zip file. + This generally means the file cannot be opened, because it has been + removed, or because it is locked by another process. It can also + mean that the file cannot be Read, because of a range lock conflict. + + + + + Provides information about the progress of a save, read, or extract operation. + This is a base class; you will probably use one of the classes derived from this one. + + + + + The total number of entries to be saved or extracted. + + + + + The name of the last entry saved or extracted. + + + + + In an event handler, set this to cancel the save or extract + operation that is in progress. + + + + + The type of event being reported. + + + + + Returns the archive name associated to this event. + + + + + The number of bytes read or written so far for this entry. + + + + + Total number of bytes that will be read or written for this entry. + This number will be -1 if the value cannot be determined. + + + + + Provides information about the progress of a Read operation. + + + + + Provides information about the progress of a Add operation. + + + + + Provides information about the progress of a save operation. + + + + + Constructor for the SaveProgressEventArgs. + + the name of the zip archive. + whether this is before saving the entry, or after + The total number of entries in the zip archive. + Number of entries that have been saved. + The entry involved in the event. + + + + Number of entries saved so far. + + + + + Provides information about the progress of the extract operation. + + + + + Constructor for the ExtractProgressEventArgs. + + the name of the zip archive. + whether this is before saving the entry, or after + The total number of entries in the zip archive. + Number of entries that have been extracted. + The entry involved in the event. + The location to which entries are extracted. + + + + Number of entries extracted so far. This is set only if the + EventType is Extracting_BeforeExtractEntry or Extracting_AfterExtractEntry, and + the Extract() is occurring witin the scope of a call to ExtractAll(). + + + + + Returns the extraction target location, a filesystem path. + + + + + Provides information about the an error that occurred while zipping. + + + + + Returns the exception that occurred, if any. + + + + + Returns the name of the file that caused the exception, if any. + + + + + Issued when an ZipEntry.ExtractWithPassword() method is invoked + with an incorrect password. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + The innerException for this exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Indicates that a read was attempted on a stream, and bad or incomplete data was + received. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + The innerException for this exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Issued when an CRC check fails upon extracting an entry from a zip archive. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Issued when errors occur saving a self-extracting archive. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Indicates that an operation was attempted on a ZipFile which was not possible + given the state of the instance. For example, if you call Save() on a ZipFile + which has no filename set, you can get this exception. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + The innerException for this exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Base class for all exceptions defined by and throw by the Zip library. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + The innerException for this exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + An enum for the options when extracting an entry would overwrite an existing file. + + + + + This enum describes the actions that the library can take when an + Extract() or ExtractWithPassword() method is called to extract an + entry to a filesystem, and the extraction would overwrite an existing filesystem + file. + + + + + + + Throw an exception when extraction would overwrite an existing file. (For + COM clients, this is a 0 (zero).) + + + + + When extraction would overwrite an existing file, overwrite the file silently. + The overwrite will happen even if the target file is marked as read-only. + (For COM clients, this is a 1.) + + + + + When extraction would overwrite an existing file, don't overwrite the file, silently. + (For COM clients, this is a 2.) + + + + + When extraction would overwrite an existing file, invoke the ExtractProgress + event, using an event type of . In + this way, the application can decide, just-in-time, whether to overwrite the + file. For example, a GUI application may wish to pop up a dialog to allow + the user to choose. You may want to examine the property before making + the decision. If, after your processing in the Extract progress event, you + want to NOT extract the file, set + on the ZipProgressEventArgs.CurrentEntry to DoNotOverwrite. + If you do want to extract the file, set ZipEntry.ExtractExistingFile + to OverwriteSilently. If you want to cancel the Extraction, set + ZipProgressEventArgs.Cancel to true. Cancelling differs from using + DoNotOverwrite in that a cancel will not extract any further entries, if + there are any. (For COM clients, the value of this enum is a 3.) + + + + + Collects general purpose utility methods. + + + + private null constructor + + + + Utility routine for transforming path names from filesystem format (on Windows that means backslashes) to + a format suitable for use within zipfiles. This means trimming the volume letter and colon (if any) And + swapping backslashes for forward slashes. + + source path. + transformed path + + + + Finds a signature in the zip stream. This is useful for finding + the end of a zip entry, for example, or the beginning of the next ZipEntry. + + + + + Scans through 64k at a time. + + + + If the method fails to find the requested signature, the stream Position + after completion of this method is unchanged. If the method succeeds in + finding the requested signature, the stream position after completion is + direct AFTER the signature found in the stream. + + + + The stream to search + The 4-byte signature to find + The number of bytes read + + + + Create a pseudo-random filename, suitable for use as a temporary + file, and open it. + + + + The System.IO.Path.GetRandomFileName() method is not available on + the Compact Framework, so this library provides its own substitute + on NETCF. + + + This method produces a filename of the form + DotNetZip-xxxxxxxx.tmp, where xxxxxxxx is replaced by randomly + chosen characters, and creates that file. + + + + + + Workitem 7889: handle ERROR_LOCK_VIOLATION during read + + + This could be gracefully handled with an extension attribute, but + This assembly is built for .NET 2.0, so I cannot use them. + + + + + A decorator stream. It wraps another stream, and performs bookkeeping + to keep track of the stream Position. + + + + In some cases, it is not possible to get the Position of a stream, let's + say, on a write-only output stream like ASP.NET's + Response.OutputStream, or on a different write-only stream + provided as the destination for the zip by the application. In this + case, programmers can use this counting stream to count the bytes read + or written. + + + Consider the scenario of an application that saves a self-extracting + archive (SFX), that uses a custom SFX stub. + + + Saving to a filesystem file, the application would open the + filesystem file (getting a FileStream), save the custom sfx stub + into it, and then call ZipFile.Save(), specifying the same + FileStream. ZipFile.Save() does the right thing for the zipentry + offsets, by inquiring the Position of the FileStream before writing + any data, and then adding that initial offset into any ZipEntry + offsets in the zip directory. Everything works fine. + + + Now suppose the application is an ASPNET application and it saves + directly to Response.OutputStream. It's not possible for DotNetZip to + inquire the Position, so the offsets for the SFX will be wrong. + + + The workaround is for the application to use this class to wrap + HttpResponse.OutputStream, then write the SFX stub and the ZipFile + into that wrapper stream. Because ZipFile.Save() can inquire the + Position, it will then do the right thing with the offsets. + + + + + + The constructor. + + The underlying stream + + + + Gets the wrapped stream. + + + + + The count of bytes written out to the stream. + + + + + the count of bytes that have been read from the stream. + + + + + Adjust the byte count on the stream. + + + + the number of bytes to subtract from the count. + + + + + Subtract delta from the count of bytes written to the stream. + This is necessary when seeking back, and writing additional data, + as happens in some cases when saving Zip files. + + + + + + The read method. + + The buffer to hold the data read from the stream. + the offset within the buffer to copy the first byte read. + the number of bytes to read. + the number of bytes read, after decryption and decompression. + + + + Write data into the stream. + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Whether the stream can be read. + + + + + Whether it is possible to call Seek() on the stream. + + + + + Whether it is possible to call Write() on the stream. + + + + + Flushes the underlying stream. + + + + + The length of the underlying stream. + + + + + Returns the sum of number of bytes written, plus the initial + offset before writing. + + + + + The Position of the stream. + + + + + Seek in the stream. + + the offset point to seek to + the reference point from which to seek + The new position + + + + Set the length of the underlying stream. Be careful with this! + + + the length to set on the underlying stream. + + + + This class implements the "traditional" or "classic" PKZip encryption, + which today is considered to be weak. On the other hand it is + ubiquitous. This class is intended for use only by the DotNetZip + library. + + + + Most uses of the DotNetZip library will not involve direct calls into + the ZipCrypto class. Instead, the ZipCrypto class is instantiated and + used by the ZipEntry() class when encryption or decryption on an entry + is employed. If for some reason you really wanted to use a weak + encryption algorithm in some other application, you might use this + library. But you would be much better off using one of the built-in + strong encryption libraries in the .NET Framework, like the AES + algorithm or SHA. + + + + + The default constructor for ZipCrypto. + + + + This class is intended for internal use by the library only. It's + probably not useful to you. Seriously. Stop reading this + documentation. It's a waste of your time. Go do something else. + Check the football scores. Go get an ice cream with a friend. + Seriously. + + + + + + From AppNote.txt: + unsigned char decrypt_byte() + local unsigned short temp + temp :=- Key(2) | 2 + decrypt_byte := (temp * (temp ^ 1)) bitshift-right 8 + end decrypt_byte + + + + + Call this method on a cipher text to render the plaintext. You must + first initialize the cipher with a call to InitCipher. + + + + + var cipher = new ZipCrypto(); + cipher.InitCipher(Password); + // Decrypt the header. This has a side effect of "further initializing the + // encryption keys" in the traditional zip encryption. + byte[] DecryptedMessage = cipher.DecryptMessage(EncryptedMessage); + + + + The encrypted buffer. + + The number of bytes to encrypt. + Should be less than or equal to CipherText.Length. + + + The plaintext. + + + + This is the converse of DecryptMessage. It encrypts the plaintext + and produces a ciphertext. + + + The plain text buffer. + + + The number of bytes to encrypt. + Should be less than or equal to plainText.Length. + + + The ciphertext. + + + + This initializes the cipher with the given password. + See AppNote.txt for details. + + + + The passphrase for encrypting or decrypting with this cipher. + + + + + Step 1 - Initializing the encryption keys + ----------------------------------------- + Start with these keys: + Key(0) := 305419896 (0x12345678) + Key(1) := 591751049 (0x23456789) + Key(2) := 878082192 (0x34567890) + + Then, initialize the keys with a password: + + loop for i from 0 to length(password)-1 + update_keys(password(i)) + end loop + + Where update_keys() is defined as: + + update_keys(char): + Key(0) := crc32(key(0),char) + Key(1) := Key(1) + (Key(0) bitwiseAND 000000ffH) + Key(1) := Key(1) * 134775813 + 1 + Key(2) := crc32(key(2),key(1) rightshift 24) + end update_keys + + Where crc32(old_crc,char) is a routine that given a CRC value and a + character, returns an updated CRC value after applying the CRC-32 + algorithm described elsewhere in this document. + + + + + After the keys are initialized, then you can use the cipher to + encrypt the plaintext. + + + + Essentially we encrypt the password with the keys, then discard the + ciphertext for the password. This initializes the keys for later use. + + + + + + + A Stream for reading and concurrently decrypting data from a zip file, + or for writing and concurrently encrypting data to a zip file. + + + + The constructor. + The underlying stream + To either encrypt or decrypt. + The pre-initialized ZipCrypto object. + + + + Represents a single entry in a ZipFile. Typically, applications get a ZipEntry + by enumerating the entries within a ZipFile, or by adding an entry to a ZipFile. + + + + + True if the referenced entry is a directory. + + + + + Provides a human-readable string with information about the ZipEntry. + + + + + Reads one entry from the zip directory structure in the zip file. + + + + The zipfile for which a directory entry will be read. From this param, the + method gets the ReadStream and the expected text encoding + (ProvisionalAlternateEncoding) which is used if the entry is not marked + UTF-8. + + + + a list of previously seen entry names; used to prevent duplicates. + + + the entry read from the archive. + + + + Returns true if the passed-in value is a valid signature for a ZipDirEntry. + + the candidate 4-byte signature value. + true, if the signature is valid according to the PKWare spec. + + + + Default constructor. + + + Applications should never need to call this directly. It is exposed to + support COM Automation environments. + + + + + The time and date at which the file indicated by the ZipEntry was + last modified. + + + + + The DotNetZip library sets the LastModified value for an entry, equal to + the Last Modified time of the file in the filesystem. If an entry is + added from a stream, the library uses System.DateTime.Now for this + value, for the given entry. + + + + This property allows the application to retrieve and possibly set the + LastModified value on an entry, to an arbitrary value. values with a + setting of DateTimeKind.Unspecified are taken to be expressed as + DateTimeKind.Local. + + + + Be aware that because of the way PKWare's + Zip specification describes how times are stored in the zip file, + the full precision of the System.DateTime datatype is not stored + for the last modified time when saving zip files. For more information on + how times are formatted, see the PKZip specification. + + + + The actual last modified time of a file can be stored in multiple ways in + the zip file, and they are not mutually exclusive: + + + + + In the so-called "DOS" format, which has a 2-second precision. Values + are rounded to the nearest even second. For example, if the time on the + file is 12:34:43, then it will be stored as 12:34:44. This first value + is accessible via the LastModified property. This value is always + present in the metadata for each zip entry. In some cases the value is + invalid, or zero. + + + + In the so-called "Windows" or "NTFS" format, as an 8-byte integer + quantity expressed as the number of 1/10 milliseconds (in other words + the number of 100 nanosecond units) since January 1, 1601 (UTC). This + format is how Windows represents file times. This time is accessible + via the ModifiedTime property. + + + + In the "Unix" format, a 4-byte quantity specifying the number of seconds since + January 1, 1970 UTC. + + + + In an older format, now deprecated but still used by some current + tools. This format is also a 4-byte quantity specifying the number of + seconds since January 1, 1970 UTC. + + + + + + Zip tools and libraries will always at least handle (read or write) the + DOS time, and may also handle the other time formats. Keep in mind that + while the names refer to particular operating systems, there is nothing in + the time formats themselves that prevents their use on other operating + systems. + + + + When reading ZIP files, the DotNetZip library reads the Windows-formatted + time, if it is stored in the entry, and sets both LastModified and + ModifiedTime to that value. When writing ZIP files, the DotNetZip + library by default will write both time quantities. It can also emit the + Unix-formatted time if desired (See .) + + + + The last modified time of the file created upon a call to + ZipEntry.Extract() may be adjusted during extraction to compensate + for differences in how the .NET Base Class Library deals with daylight + saving time (DST) versus how the Windows filesystem deals with daylight + saving time. Raymond Chen provides + some good context. + + + + In a nutshell: Daylight savings time rules change regularly. In 2007, for + example, the inception week of DST changed. In 1977, DST was in place all + year round. In 1945, likewise. And so on. Win32 does not attempt to + guess which time zone rules were in effect at the time in question. It + will render a time as "standard time" and allow the app to change to DST + as necessary. .NET makes a different choice. + + + + Compare the output of FileInfo.LastWriteTime.ToString("f") with what you + see in the Windows Explorer property sheet for a file that was last + written to on the other side of the DST transition. For example, suppose + the file was last modified on October 17, 2003, during DST but DST is not + currently in effect. Explorer's file properties reports Thursday, October + 17, 2003, 8:45:38 AM, but .NETs FileInfo reports Thursday, October 17, + 2003, 9:45 AM. + + + + Win32 says, "Thursday, October 17, 2002 8:45:38 AM PST". Note: Pacific + STANDARD Time. Even though October 17 of that year occurred during Pacific + Daylight Time, Win32 displays the time as standard time because that's + what time it is NOW. + + + + .NET BCL assumes that the current DST rules were in place at the time in + question. So, .NET says, "Well, if the rules in effect now were also in + effect on October 17, 2003, then that would be daylight time" so it + displays "Thursday, October 17, 2003, 9:45 AM PDT" - daylight time. + + + + So .NET gives a value which is more intuitively correct, but is also + potentially incorrect, and which is not invertible. Win32 gives a value + which is intuitively incorrect, but is strictly correct. + + + + Because of this funkiness, this library adds one hour to the LastModified + time on the extracted file, if necessary. That is to say, if the time in + question had occurred in what the .NET Base Class Library assumed to be + DST. This assumption may be wrong given the constantly changing DST rules, + but it is the best we can do. + + + + + + + + Last Modified time for the file represented by the entry. + + + + + + This value corresponds to the "last modified" time in the NTFS file times + as described in the Zip + specification. When getting this property, the value may be + different from . When setting the property, + the property also gets set, but with a lower + precision. + + + + Let me explain. It's going to take a while, so get + comfortable. Originally, waaaaay back in 1989 when the ZIP specification + was originally described by the esteemed Mr. Phil Katz, the dominant + operating system of the time was MS-DOS. MSDOS stored file times with a + 2-second precision, because, c'mon, who is ever going to need better + resolution than THAT? And so ZIP files, regardless of the platform on + which the zip file was created, store file times in exactly the same format that DOS used + in 1989. + + + + Since then, the ZIP spec has evolved, but the internal format for file + timestamps remains the same. Despite the fact that the way times are + stored in a zip file is rooted in DOS heritage, any program on any + operating system can format a time in this way, and most zip tools and + libraries DO - they round file times to the nearest even second and store + it just like DOS did 25+ years ago. + + + + PKWare extended the ZIP specification to allow a zip file to store what + are called "NTFS Times" and "Unix(tm) times" for a file. These are the + last write, last access, and file creation + times of a particular file. These metadata are not actually specific + to NTFS or Unix. They are tracked for each file by NTFS and by various + Unix filesystems, but they are also tracked by other filesystems, too. + The key point is that the times are formatted in the zip file + in the same way that NTFS formats the time (ticks since win32 epoch), + or in the same way that Unix formats the time (seconds since Unix + epoch). As with the DOS time, any tool or library running on any + operating system is capable of formatting a time in one of these ways + and embedding it into the zip file. + + + + These extended times are higher precision quantities than the DOS time. + As described above, the (DOS) LastModified has a precision of 2 seconds. + The Unix time is stored with a precision of 1 second. The NTFS time is + stored with a precision of 0.0000001 seconds. The quantities are easily + convertible, except for the loss of precision you may incur. + + + + A zip archive can store the {C,A,M} times in NTFS format, in Unix format, + or not at all. Often a tool running on Unix or Mac will embed the times + in Unix format (1 second precision), while WinZip running on Windows might + embed the times in NTFS format (precision of of 0.0000001 seconds). When + reading a zip file with these "extended" times, in either format, + DotNetZip represents the values with the + ModifiedTime, AccessedTime and CreationTime + properties on the ZipEntry. + + + + While any zip application or library, regardless of the platform it + runs on, could use any of the time formats allowed by the ZIP + specification, not all zip tools or libraries do support all these + formats. Storing the higher-precision times for each entry is + optional for zip files, and many tools and libraries don't use the + higher precision quantities at all. The old DOS time, represented by + , is guaranteed to be present, though it + sometimes unset. + + + + Ok, getting back to the question about how the LastModified + property relates to this ModifiedTime + property... LastModified is always set, while + ModifiedTime is not. (The other times stored in the NTFS + times extension, CreationTime and AccessedTime also + may not be set on an entry that is read from an existing zip file.) + When reading a zip file, then LastModified takes the DOS time + that is stored with the file. If the DOS time has been stored as zero + in the zipfile, then this library will use DateTime.Now for the + LastModified value. If the ZIP file was created by an evolved + tool, then there will also be higher precision NTFS or Unix times in + the zip file. In that case, this library will read those times, and + set LastModified and ModifiedTime to the same value, the + one corresponding to the last write time of the file. If there are no + higher precision times stored for the entry, then ModifiedTime + remains unset (likewise AccessedTime and CreationTime), + and LastModified keeps its DOS time. + + + + When creating zip files with this library, by default the extended time + properties (ModifiedTime, AccessedTime, and + CreationTime) are set on the ZipEntry instance, and these data are + stored in the zip archive for each entry, in NTFS format. If you add an + entry from an actual filesystem file, then the entry gets the actual file + times for that file, to NTFS-level precision. If you add an entry from a + stream, or a string, then the times get the value DateTime.Now. In + this case LastModified and ModifiedTime will be identical, + to 2 seconds of precision. You can explicitly set the + CreationTime, AccessedTime, and ModifiedTime of an + entry using the property setters. If you want to set all of those + quantities, it's more efficient to use the method. Those + changes are not made permanent in the zip file until you call or one of its cousins. + + + + When creating a zip file, you can override the default behavior of + this library for formatting times in the zip file, disabling the + embedding of file times in NTFS format or enabling the storage of file + times in Unix format, or both. You may want to do this, for example, + when creating a zip file on Windows, that will be consumed on a Mac, + by an application that is not hip to the "NTFS times" format. To do + this, use the and + properties. A valid zip + file may store the file times in both formats. But, there are no + guarantees that a program running on Mac or Linux will gracefully + handle the NTFS-formatted times when Unix times are present, or that a + non-DotNetZip-powered application running on Windows will be able to + handle file times in Unix format. DotNetZip will always do something + reasonable; other libraries or tools may not. When in doubt, test. + + + + I'll bet you didn't think one person could type so much about time, eh? + And reading it was so enjoyable, too! Well, in appreciation, maybe you + should donate? + + + + + + + + + + + Last Access time for the file represented by the entry. + + + This value may or may not be meaningful. If the ZipEntry was read from an existing + Zip archive, this information may not be available. For an explanation of why, see + . + + + + + + + + The file creation time for the file represented by the entry. + + + + This value may or may not be meaningful. If the ZipEntry was read + from an existing zip archive, and the creation time was not set on the entry + when the zip file was created, then this property may be meaningless. For an + explanation of why, see . + + + + + + + + Sets the NTFS Creation, Access, and Modified times for the given entry. + + + + + When adding an entry from a file or directory, the Creation, Access, and + Modified times for the given entry are automatically set from the + filesystem values. When adding an entry from a stream or string, the + values are implicitly set to DateTime.Now. The application may wish to + set these values to some arbitrary value, before saving the archive, and + can do so using the various setters. If you want to set all of the times, + this method is more efficient. + + + + The values you set here will be retrievable with the , and properties. + + + + When this method is called, if both and are false, then the + EmitTimesInWindowsFormatWhenSaving flag is automatically set. + + + + DateTime values provided here without a DateTimeKind are assumed to be Local Time. + + + + the creation time of the entry. + the last access time of the entry. + the last modified time of the entry. + + + + + + + + + + Specifies whether the Creation, Access, and Modified times for the given + entry will be emitted in "Windows format" when the zip archive is saved. + + + + + An application creating a zip archive can use this flag to explicitly + specify that the file times for the entry should or should not be stored + in the zip archive in the format used by Windows. The default value of + this property is true. + + + + When adding an entry from a file or directory, the Creation (), Access (), and Modified + () times for the given entry are automatically + set from the filesystem values. When adding an entry from a stream or + string, all three values are implicitly set to DateTime.Now. Applications + can also explicitly set those times by calling . + + + + PKWARE's + zip specification describes multiple ways to format these times in a + zip file. One is the format Windows applications normally use: 100ns ticks + since Jan 1, 1601 UTC. The other is a format Unix applications typically + use: seconds since January 1, 1970 UTC. Each format can be stored in an + "extra field" in the zip entry when saving the zip archive. The former + uses an extra field with a Header Id of 0x000A, while the latter uses a + header ID of 0x5455. + + + + Not all zip tools and libraries can interpret these fields. Windows + compressed folders is one that can read the Windows Format timestamps, + while I believe the Infozip + tools can read the Unix format timestamps. Although the time values are + easily convertible, subject to a loss of precision, some tools and + libraries may be able to read only one or the other. DotNetZip can read or + write times in either or both formats. + + + + The times stored are taken from , , and . + + + + This property is not mutually exclusive from the property. It is + possible that a zip entry can embed the timestamps in both forms, one + form, or neither. But, there are no guarantees that a program running on + Mac or Linux will gracefully handle NTFS Formatted times, or that a + non-DotNetZip-powered application running on Windows will be able to + handle file times in Unix format. When in doubt, test. + + + + Normally you will use the ZipFile.EmitTimesInWindowsFormatWhenSaving + property, to specify the behavior for all entries in a zip, rather than + the property on each individual entry. + + + + + + + + + + + + + Specifies whether the Creation, Access, and Modified times for the given + entry will be emitted in "Unix(tm) format" when the zip archive is saved. + + + + + An application creating a zip archive can use this flag to explicitly + specify that the file times for the entry should or should not be stored + in the zip archive in the format used by Unix. By default this flag is + false, meaning the Unix-format times are not stored in the zip + archive. + + + + When adding an entry from a file or directory, the Creation (), Access (), and Modified + () times for the given entry are automatically + set from the filesystem values. When adding an entry from a stream or + string, all three values are implicitly set to DateTime.Now. Applications + can also explicitly set those times by calling . + + + + PKWARE's + zip specification describes multiple ways to format these times in a + zip file. One is the format Windows applications normally use: 100ns ticks + since Jan 1, 1601 UTC. The other is a format Unix applications typically + use: seconds since Jan 1, 1970 UTC. Each format can be stored in an + "extra field" in the zip entry when saving the zip archive. The former + uses an extra field with a Header Id of 0x000A, while the latter uses a + header ID of 0x5455. + + + + Not all tools and libraries can interpret these fields. Windows + compressed folders is one that can read the Windows Format timestamps, + while I believe the Infozip + tools can read the Unix format timestamps. Although the time values are + easily convertible, subject to a loss of precision, some tools and + libraries may be able to read only one or the other. DotNetZip can read or + write times in either or both formats. + + + + The times stored are taken from , , and . + + + + This property is not mutually exclusive from the property. It is + possible that a zip entry can embed the timestamps in both forms, one + form, or neither. But, there are no guarantees that a program running on + Mac or Linux will gracefully handle NTFS Formatted times, or that a + non-DotNetZip-powered application running on Windows will be able to + handle file times in Unix format. When in doubt, test. + + + + Normally you will use the ZipFile.EmitTimesInUnixFormatWhenSaving + property, to specify the behavior for all entries, rather than the + property on each individual entry. + + + + + + + + + + + + + The type of timestamp attached to the ZipEntry. + + + + This property is valid only for a ZipEntry that was read from a zip archive. + It indicates the type of timestamp attached to the entry. + + + + + + + + The file attributes for the entry. + + + + + + The attributes in NTFS include + ReadOnly, Archive, Hidden, System, and Indexed. When adding a + ZipEntry to a ZipFile, these attributes are set implicitly when + adding an entry from the filesystem. When adding an entry from a stream + or string, the Attributes are not set implicitly. Regardless of the way + an entry was added to a ZipFile, you can set the attributes + explicitly if you like. + + + + When reading a ZipEntry from a ZipFile, the attributes are + set according to the data stored in the ZipFile. If you extract the + entry from the archive to a filesystem file, DotNetZip will set the + attributes on the resulting file accordingly. + + + + The attributes can be set explicitly by the application. For example the + application may wish to set the FileAttributes.ReadOnly bit for all + entries added to an archive, so that on unpack, this attribute will be set + on the extracted file. Any changes you make to this property are made + permanent only when you call a Save() method on the ZipFile + instance that contains the ZipEntry. + + + + For example, an application may wish to zip up a directory and set the + ReadOnly bit on every file in the archive, so that upon later extraction, + the resulting files will be marked as ReadOnly. Not every extraction tool + respects these attributes, but if you unpack with DotNetZip, as for + example in a self-extracting archive, then the attributes will be set as + they are stored in the ZipFile. + + + + These attributes may not be interesting or useful if the resulting archive + is extracted on a non-Windows platform. How these attributes get used + upon extraction depends on the platform and tool used. + + + + This property is only partially supported in the Silverlight version + of the library: applications can read attributes on entries within + ZipFiles. But extracting entries within Silverlight will not set the + attributes on the extracted files. + + + + + + + The name of the filesystem file, referred to by the ZipEntry. + + + + + This property specifies the thing-to-be-zipped on disk, and is set only + when the ZipEntry is being created from a filesystem file. If the + ZipFile is instantiated by reading an existing .zip archive, then + the LocalFileName will be null (Nothing in VB). + + + + When it is set, the value of this property may be different than , which is the path used in the archive itself. If you + call Zip.AddFile("foop.txt", AlternativeDirectory), then the path + used for the ZipEntry within the zip archive will be different + than this path. + + + + If the entry is being added from a stream, then this is null (Nothing in VB). + + + + + + + + The name of the file contained in the ZipEntry. + + + + + + This is the name of the entry in the ZipFile itself. When creating + a zip archive, if the ZipEntry has been created from a filesystem + file, via a call to or , or a related overload, the value + of this property is derived from the name of that file. The + FileName property does not include drive letters, and may include a + different directory path, depending on the value of the + directoryPathInArchive parameter used when adding the entry into + the ZipFile. + + + + In some cases there is no related filesystem file - for example when a + ZipEntry is created using or one of the similar overloads. In this case, the value of + this property is derived from the fileName and the directory path passed + to that method. + + + + When reading a zip file, this property takes the value of the entry name + as stored in the zip file. If you extract such an entry, the extracted + file will take the name given by this property. + + + + Applications can set this property when creating new zip archives or when + reading existing archives. When setting this property, the actual value + that is set will replace backslashes with forward slashes, in accordance + with the Zip + specification, for compatibility with Unix(tm) and ... get + this.... Amiga! + + + + If an application reads a ZipFile via or a related overload, and then explicitly + sets the FileName on an entry contained within the ZipFile, and + then calls , the application will effectively + rename the entry within the zip archive. + + + + If an application sets the value of FileName, then calls + Extract() on the entry, the entry is extracted to a file using the + newly set value as the filename. The FileName value is made + permanent in the zip archive only after a call to one of the + ZipFile.Save() methods on the ZipFile that contains the + ZipEntry. + + + + If an application attempts to set the FileName to a value that + would result in a duplicate entry in the ZipFile, an exception is + thrown. + + + + When a ZipEntry is contained within a ZipFile, applications + cannot rename the entry within the context of a foreach (For + Each in VB) loop, because of the way the ZipFile stores + entries. If you need to enumerate through all the entries and rename one + or more of them, use ZipFile.EntriesSorted as the + collection. See also, ZipFile.GetEnumerator(). + + + + + + + The stream that provides content for the ZipEntry. + + + + + + The application can use this property to set the input stream for an + entry on a just-in-time basis. Imagine a scenario where the application + creates a ZipFile comprised of content obtained from hundreds of + files, via calls to AddFile(). The DotNetZip library opens streams + on these files on a just-in-time basis, only when writing the entry out to + an external store within the scope of a ZipFile.Save() call. Only + one input stream is opened at a time, as each entry is being written out. + + + + Now imagine a different application that creates a ZipFile + with content obtained from hundreds of streams, added through . Normally the + application would supply an open stream to that call. But when large + numbers of streams are being added, this can mean many open streams at one + time, unnecessarily. + + + + To avoid this, call and specify delegates that open and close the stream at + the time of Save. + + + + + Setting the value of this property when the entry was not added from a + stream (for example, when the ZipEntry was added with or , or when the entry was added by + reading an existing zip archive) will throw an exception. + + + + + + + + A flag indicating whether the InputStream was provided Just-in-time. + + + + + + When creating a zip archive, an application can obtain content for one or + more of the ZipEntry instances from streams, using the method. At the time + of calling that method, the application can supply null as the value of + the stream parameter. By doing so, the application indicates to the + library that it will provide a stream for the entry on a just-in-time + basis, at the time one of the ZipFile.Save() methods is called and + the data for the various entries are being compressed and written out. + + + + In this case, the application can set the + property, typically within the SaveProgress event (event type: ) for that entry. + + + + The application will later want to call Close() and Dispose() on that + stream. In the SaveProgress event, when the event type is , the application can + do so. This flag indicates that the stream has been provided by the + application on a just-in-time basis and that it is the application's + responsibility to call Close/Dispose on that stream. + + + + + + + + An enum indicating the source of the ZipEntry. + + + + + The version of the zip engine needed to read the ZipEntry. + + + + + This is a readonly property, indicating the version of the Zip + specification that the extracting tool or library must support to + extract the given entry. Generally higher versions indicate newer + features. Older zip engines obviously won't know about new features, and + won't be able to extract entries that depend on those newer features. + + + + + value + Features + + + + 20 + a basic Zip Entry, potentially using PKZIP encryption. + + + + + 45 + The ZIP64 extension is used on the entry. + + + + + 46 + File is compressed using BZIP2 compression* + + + + 50 + File is encrypted using PkWare's DES, 3DES, (broken) RC2 or RC4 + + + + 51 + File is encrypted using PKWare's AES encryption or corrected RC2 encryption. + + + + 52 + File is encrypted using corrected RC2-64 encryption** + + + + 61 + File is encrypted using non-OAEP key wrapping*** + + + + 63 + File is compressed using LZMA, PPMd+, Blowfish, or Twofish + + + + + + There are other values possible, not listed here. DotNetZip supports + regular PKZip encryption, and ZIP64 extensions. DotNetZip cannot extract + entries that require a zip engine higher than 45. + + + + This value is set upon reading an existing zip file, or after saving a zip + archive. + + + + + + The comment attached to the ZipEntry. + + + + + Each entry in a zip file can optionally have a comment associated to + it. The comment might be displayed by a zip tool during extraction, for + example. + + + + By default, the Comment is encoded in IBM437 code page. You can + specify an alternative with and + . + + + + + + + + Indicates whether the entry requires ZIP64 extensions. + + + + + + This property is null (Nothing in VB) until a Save() method on the + containing instance has been called. The property is + non-null (HasValue is true) only after a Save() method has + been called. + + + + After the containing ZipFile has been saved, the Value of this + property is true if any of the following three conditions holds: the + uncompressed size of the entry is larger than 0xFFFFFFFF; the compressed + size of the entry is larger than 0xFFFFFFFF; the relative offset of the + entry within the zip archive is larger than 0xFFFFFFFF. These quantities + are not known until a Save() is attempted on the zip archive and + the compression is applied. + + + + If none of the three conditions holds, then the Value is false. + + + + A Value of false does not indicate that the entry, as saved in the + zip archive, does not use ZIP64. It merely indicates that ZIP64 is + not required. An entry may use ZIP64 even when not required if + the property on the containing + ZipFile instance is set to , or if + the property on the containing + ZipFile instance is set to + and the output stream was not seekable. + + + + + + + + Indicates whether the entry actually used ZIP64 extensions, as it was most + recently written to the output file or stream. + + + + + + This Nullable property is null (Nothing in VB) until a Save() + method on the containing instance has been + called. HasValue is true only after a Save() method has been + called. + + + + The value of this property for a particular ZipEntry may change + over successive calls to Save() methods on the containing ZipFile, + even if the file that corresponds to the ZipEntry does not. This + may happen if other entries contained in the ZipFile expand, + causing the offset for this particular entry to exceed 0xFFFFFFFF. + + + + + + + The bitfield for the entry as defined in the zip spec. You probably + never need to look at this. + + + + + You probably do not need to concern yourself with the contents of this + property, but in case you do: + + + + + bit + meaning + + + + 0 + set if encryption is used. + + + + 1-2 + + set to determine whether normal, max, fast deflation. DotNetZip library + always leaves these bits unset when writing (indicating "normal" + deflation"), but can read an entry with any value here. + + + + + 3 + + Indicates that the Crc32, Compressed and Uncompressed sizes are zero in the + local header. This bit gets set on an entry during writing a zip file, when + it is saved to a non-seekable output stream. + + + + + + 4 + reserved for "enhanced deflating". This library doesn't do enhanced deflating. + + + + 5 + set to indicate the zip is compressed patched data. This library doesn't do that. + + + + 6 + + set if PKWare's strong encryption is used (must also set bit 1 if bit 6 is + set). This bit is not set if WinZip's AES encryption is set. + + + + 7 + not used + + + + 8 + not used + + + + 9 + not used + + + + 10 + not used + + + + 11 + + Language encoding flag (EFS). If this bit is set, the filename and comment + fields for this file must be encoded using UTF-8. This library currently + does not support UTF-8. + + + + + 12 + Reserved by PKWARE for enhanced compression. + + + + 13 + + Used when encrypting the Central Directory to indicate selected data + values in the Local Header are masked to hide their actual values. See + the section in the Zip + specification describing the Strong Encryption Specification for + details. + + + + + 14 + Reserved by PKWARE. + + + + 15 + Reserved by PKWARE. + + + + + + + + + The compression method employed for this ZipEntry. + + + + + + The + Zip specification allows a variety of compression methods. This + library supports just two: 0x08 = Deflate. 0x00 = Store (no compression), + for reading or writing. + + + + When reading an entry from an existing zipfile, the value you retrieve + here indicates the compression method used on the entry by the original + creator of the zip. When writing a zipfile, you can specify either 0x08 + (Deflate) or 0x00 (None). If you try setting something else, you will get + an exception. + + + + You may wish to set CompressionMethod to CompressionMethod.None (0) + when zipping already-compressed data like a jpg, png, or mp3 file. + This can save time and cpu cycles. + + + + When setting this property on a ZipEntry that is read from an + existing zip file, calling ZipFile.Save() will cause the new + CompressionMethod to be used on the entry in the newly saved zip file. + + + + Setting this property may have the side effect of modifying the + CompressionLevel property. If you set the CompressionMethod to a + value other than None, and CompressionLevel is previously + set to None, then CompressionLevel will be set to + Default. + + + + + + + In this example, the first entry added to the zip archive uses the default + behavior - compression is used where it makes sense. The second entry, + the MP3 file, is added to the archive without being compressed. + + using (ZipFile zip = new ZipFile(ZipFileToCreate)) + { + ZipEntry e1= zip.AddFile(@"notes\Readme.txt"); + ZipEntry e2= zip.AddFile(@"music\StopThisTrain.mp3"); + e2.CompressionMethod = CompressionMethod.None; + zip.Save(); + } + + + + Using zip As New ZipFile(ZipFileToCreate) + zip.AddFile("notes\Readme.txt") + Dim e2 as ZipEntry = zip.AddFile("music\StopThisTrain.mp3") + e2.CompressionMethod = CompressionMethod.None + zip.Save + End Using + + + + + + Sets the compression level to be used for the entry when saving the zip + archive. This applies only for CompressionMethod = DEFLATE. + + + + + When using the DEFLATE compression method, Varying the compression + level used on entries can affect the size-vs-speed tradeoff when + compression and decompressing data streams or files. + + + + If you do not set this property, the default compression level is used, + which normally gives a good balance of compression efficiency and + compression speed. In some tests, using BestCompression can + double the time it takes to compress, while delivering just a small + increase in compression efficiency. This behavior will vary with the + type of data you compress. If you are in doubt, just leave this setting + alone, and accept the default. + + + + When setting this property on a ZipEntry that is read from an + existing zip file, calling ZipFile.Save() will cause the new + CompressionLevel to be used on the entry in the newly saved zip file. + + + + Setting this property may have the side effect of modifying the + CompressionMethod property. If you set the CompressionLevel + to a value other than None, CompressionMethod will be set + to Deflate, if it was previously None. + + + + Setting this property has no effect if the CompressionMethod is something + other than Deflate or None. + + + + + + + + The compressed size of the file, in bytes, within the zip archive. + + + + When reading a ZipFile, this value is read in from the existing + zip file. When creating or updating a ZipFile, the compressed + size is computed during compression. Therefore the value on a + ZipEntry is valid after a call to Save() (or one of its + overloads) in that case. + + + + + + + The size of the file, in bytes, before compression, or after extraction. + + + + When reading a ZipFile, this value is read in from the existing + zip file. When creating or updating a ZipFile, the uncompressed + size is computed during compression. Therefore the value on a + ZipEntry is valid after a call to Save() (or one of its + overloads) in that case. + + + + + + + The ratio of compressed size to uncompressed size of the ZipEntry. + + + + + This is a ratio of the compressed size to the uncompressed size of the + entry, expressed as a double in the range of 0 to 100+. A value of 100 + indicates no compression at all. It could be higher than 100 when the + compression algorithm actually inflates the data, as may occur for small + files, or uncompressible data that is encrypted. + + + + You could format it for presentation to a user via a format string of + "{3,5:F0}%" to see it as a percentage. + + + + If the size of the original uncompressed file is 0, implying a + denominator of 0, the return value will be zero. + + + + This property is valid after reading in an existing zip file, or after + saving the ZipFile that contains the ZipEntry. You cannot know the + effect of a compression transform until you try it. + + + + + + + The 32-bit CRC (Cyclic Redundancy Check) on the contents of the ZipEntry. + + + + + You probably don't need to concern yourself with this. It is used + internally by DotNetZip to verify files or streams upon extraction. + + The value is a 32-bit + CRC using 0xEDB88320 for the polynomial. This is the same CRC-32 used in + PNG, MPEG-2, and other protocols and formats. It is a read-only property; when + creating a Zip archive, the CRC for each entry is set only after a call to + Save() on the containing ZipFile. When reading an existing zip file, the value + of this property reflects the stored CRC for the entry. + + + + + + True if the entry is a directory (not a file). + This is a readonly property on the entry. + + + + + A derived property that is true if the entry uses encryption. + + + + + This is a readonly property on the entry. When reading a zip file, + the value for the ZipEntry is determined by the data read + from the zip file. After saving a ZipFile, the value of this + property for each ZipEntry indicates whether encryption was + actually used (which will have been true if the was set and the property + was something other than . + + + + + + Set this to specify which encryption algorithm to use for the entry when + saving it to a zip archive. + + + + + + Set this property in order to encrypt the entry when the ZipFile is + saved. When setting this property, you must also set a on the entry. If you set a value other than on this property and do not set a + Password then the entry will not be encrypted. The ZipEntry + data is encrypted as the ZipFile is saved, when you call or one of its cousins on the containing + ZipFile instance. You do not need to specify the Encryption + when extracting entries from an archive. + + + + The Zip specification from PKWare defines a set of encryption algorithms, + and the data formats for the zip archive that support them, and PKWare + supports those algorithms in the tools it produces. Other vendors of tools + and libraries, such as WinZip or Xceed, typically support a + subset of the algorithms specified by PKWare. These tools can + sometimes support additional different encryption algorithms and data + formats, not specified by PKWare. The AES Encryption specified and + supported by WinZip is the most popular example. This library supports a + subset of the complete set of algorithms specified by PKWare and other + vendors. + + + + There is no common, ubiquitous multi-vendor standard for strong encryption + within zip files. There is broad support for so-called "traditional" Zip + encryption, sometimes called Zip 2.0 encryption, as specified + by PKWare, but this encryption is considered weak and + breakable. This library currently supports the Zip 2.0 "weak" encryption, + and also a stronger WinZip-compatible AES encryption, using either 128-bit + or 256-bit key strength. If you want DotNetZip to support an algorithm + that is not currently supported, call the author of this library and maybe + we can talk business. + + + + The class also has a property. In most cases you will use + that property when setting encryption. This property takes + precedence over any Encryption set on the ZipFile itself. + Typically, you would use the per-entry Encryption when most entries in the + zip archive use one encryption algorithm, and a few entries use a + different one. If all entries in the zip file use the same Encryption, + then it is simpler to just set this property on the ZipFile itself, when + creating a zip archive. + + + + Some comments on updating archives: If you read a ZipFile, you can + modify the Encryption on an encrypted entry: you can remove encryption + from an entry that was encrypted; you can encrypt an entry that was not + encrypted previously; or, you can change the encryption algorithm. The + changes in encryption are not made permanent until you call Save() on the + ZipFile. To effect changes in encryption, the entry content is + streamed through several transformations, depending on the modification + the application has requested. For example if the entry is not encrypted + and the application sets Encryption to PkzipWeak, then at + the time of Save(), the original entry is read and decompressed, + then re-compressed and encrypted. Conversely, if the original entry is + encrypted with PkzipWeak encryption, and the application sets the + Encryption property to WinZipAes128, then at the time of + Save(), the original entry is decrypted via PKZIP encryption and + decompressed, then re-compressed and re-encrypted with AES. This all + happens automatically within the library, but it can be time-consuming for + large entries. + + + + Additionally, when updating archives, it is not possible to change the + password when changing the encryption algorithm. To change both the + algorithm and the password, you need to Save() the zipfile twice. First + set the Encryption to None, then call Save(). Then set the + Encryption to the new value (not "None"), then call Save() + once again. + + + + The WinZip AES encryption algorithms are not supported on the .NET Compact + Framework. + + + + + + This example creates a zip archive that uses encryption, and then extracts + entries from the archive. When creating the zip archive, the ReadMe.txt + file is zipped without using a password or encryption. The other file + uses encryption. + + + // Create a zip archive with AES Encryption. + using (ZipFile zip = new ZipFile()) + { + zip.AddFile("ReadMe.txt") + ZipEntry e1= zip.AddFile("2008-Regional-Sales-Report.pdf"); + e1.Encryption= EncryptionAlgorithm.WinZipAes256; + e1.Password= "Top.Secret.No.Peeking!"; + zip.Save("EncryptedArchive.zip"); + } + + // Extract a zip archive that uses AES Encryption. + // You do not need to specify the algorithm during extraction. + using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) + { + // Specify the password that is used during extraction, for + // all entries that require a password: + zip.Password= "Top.Secret.No.Peeking!"; + zip.ExtractAll("extractDirectory"); + } + + + + ' Create a zip that uses Encryption. + Using zip As New ZipFile() + zip.AddFile("ReadMe.txt") + Dim e1 as ZipEntry + e1= zip.AddFile("2008-Regional-Sales-Report.pdf") + e1.Encryption= EncryptionAlgorithm.WinZipAes256 + e1.Password= "Top.Secret.No.Peeking!" + zip.Save("EncryptedArchive.zip") + End Using + + ' Extract a zip archive that uses AES Encryption. + ' You do not need to specify the algorithm during extraction. + Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) + ' Specify the password that is used during extraction, for + ' all entries that require a password: + zip.Password= "Top.Secret.No.Peeking!" + zip.ExtractAll("extractDirectory") + End Using + + + + + + Thrown in the setter if EncryptionAlgorithm.Unsupported is specified. + + + ZipEntry.Password + ZipFile.Encryption + + + + The Password to be used when encrypting a ZipEntry upon + ZipFile.Save(), or when decrypting an entry upon Extract(). + + + + + This is a write-only property on the entry. Set this to request that the + entry be encrypted when writing the zip archive, or set it to specify the + password to be used when extracting an existing entry that is encrypted. + + + + The password set here is implicitly used to encrypt the entry during the + operation, or to decrypt during the or operation. If you set + the Password on a ZipEntry after calling Save(), there is no + effect. + + + + Consider setting the property when using a + password. Answering concerns that the standard password protection + supported by all zip tools is weak, WinZip has extended the ZIP + specification with a way to use AES Encryption to protect entries in the + Zip file. Unlike the "PKZIP 2.0" encryption specified in the PKZIP + specification, AES + Encryption uses a standard, strong, tested, encryption + algorithm. DotNetZip can create zip archives that use WinZip-compatible + AES encryption, if you set the property. But, + archives created that use AES encryption may not be readable by all other + tools and libraries. For example, Windows Explorer cannot read a + "compressed folder" (a zip file) that uses AES encryption, though it can + read a zip file that uses "PKZIP encryption." + + + + The class also has a + property. This property takes precedence over any password set on the + ZipFile itself. Typically, you would use the per-entry Password when most + entries in the zip archive use one password, and a few entries use a + different password. If all entries in the zip file use the same password, + then it is simpler to just set this property on the ZipFile itself, + whether creating a zip archive or extracting a zip archive. + + + + Some comments on updating archives: If you read a ZipFile, you + cannot modify the password on any encrypted entry, except by extracting + the entry with the original password (if any), removing the original entry + via , and then adding a new + entry with a new Password. + + + + For example, suppose you read a ZipFile, and there is an encrypted + entry. Setting the Password property on that ZipEntry and then + calling Save() on the ZipFile does not update the password + on that entry in the archive. Neither is an exception thrown. Instead, + what happens during the Save() is the existing entry is copied + through to the new zip archive, in its original encrypted form. Upon + re-reading that archive, the entry can be decrypted with its original + password. + + + + If you read a ZipFile, and there is an un-encrypted entry, you can set the + Password on the entry and then call Save() on the ZipFile, and get + encryption on that entry. + + + + + + + This example creates a zip file with two entries, and then extracts the + entries from the zip file. When creating the zip file, the two files are + added to the zip file using password protection. Each entry uses a + different password. During extraction, each file is extracted with the + appropriate password. + + + // create a file with encryption + using (ZipFile zip = new ZipFile()) + { + ZipEntry entry; + entry= zip.AddFile("Declaration.txt"); + entry.Password= "123456!"; + entry = zip.AddFile("Report.xls"); + entry.Password= "1Secret!"; + zip.Save("EncryptedArchive.zip"); + } + + // extract entries that use encryption + using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) + { + ZipEntry entry; + entry = zip["Declaration.txt"]; + entry.Password = "123456!"; + entry.Extract("extractDir"); + entry = zip["Report.xls"]; + entry.Password = "1Secret!"; + entry.Extract("extractDir"); + } + + + + + Using zip As New ZipFile + Dim entry as ZipEntry + entry= zip.AddFile("Declaration.txt") + entry.Password= "123456!" + entry = zip.AddFile("Report.xls") + entry.Password= "1Secret!" + zip.Save("EncryptedArchive.zip") + End Using + + + ' extract entries that use encryption + Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) + Dim entry as ZipEntry + entry = zip("Declaration.txt") + entry.Password = "123456!" + entry.Extract("extractDir") + entry = zip("Report.xls") + entry.Password = "1Secret!" + entry.Extract("extractDir") + End Using + + + + + + + ZipFile.Password + + + + The action the library should take when extracting a file that already exists. + + + + + This property affects the behavior of the Extract methods (one of the + Extract() or ExtractWithPassword() overloads), when + extraction would would overwrite an existing filesystem file. If you do + not set this property, the library throws an exception when extracting + an entry would overwrite an existing file. + + + + This property has no effect when extracting to a stream, or when the file to be + extracted does not already exist. + + + + + + + This example shows how to set the ExtractExistingFile property in + an ExtractProgress event, in response to user input. The + ExtractProgress event is invoked if and only if the + ExtractExistingFile property was previously set to + ExtractExistingFileAction.InvokeExtractProgressEvent. + + public static void ExtractProgress(object sender, ExtractProgressEventArgs e) + { + if (e.EventType == ZipProgressEventType.Extracting_BeforeExtractEntry) + Console.WriteLine("extract {0} ", e.CurrentEntry.FileName); + + else if (e.EventType == ZipProgressEventType.Extracting_ExtractEntryWouldOverwrite) + { + ZipEntry entry = e.CurrentEntry; + string response = null; + // Ask the user if he wants overwrite the file + do + { + Console.Write("Overwrite {0} in {1} ? (y/n/C) ", entry.FileName, e.ExtractLocation); + response = Console.ReadLine(); + Console.WriteLine(); + + } while (response != null && response[0]!='Y' && + response[0]!='N' && response[0]!='C'); + + if (response[0]=='C') + e.Cancel = true; + else if (response[0]=='Y') + entry.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently; + else + entry.ExtractExistingFile= ExtractExistingFileAction.DoNotOverwrite; + } + } + + + + + + The action to take when an error is encountered while + opening or reading files as they are saved into a zip archive. + + + + + Errors can occur within a call to ZipFile.Save, as the various files contained + in a ZipFile are being saved into the zip archive. During the + Save, DotNetZip will perform a File.Open on the file + associated to the ZipEntry, and then will read the entire contents of + the file as it is zipped. Either the open or the Read may fail, because + of lock conflicts or other reasons. Using this property, you can + specify the action to take when such errors occur. + + + + Typically you will NOT set this property on individual ZipEntry + instances. Instead, you will set the ZipFile.ZipErrorAction property on + the ZipFile instance, before adding any entries to the + ZipFile. If you do this, errors encountered on behalf of any of + the entries in the ZipFile will be handled the same way. + + + + But, if you use a handler, you will want + to set this property on the ZipEntry within the handler, to + communicate back to DotNetZip what you would like to do with the + particular error. + + + + + + + + + Indicates whether the entry was included in the most recent save. + + + An entry can be excluded or skipped from a save if there is an error + opening or reading the entry. + + + + + + A callback that allows the application to specify the compression to use + for a given entry that is about to be added to the zip archive. + + + + + See + + + + + + Set to indicate whether to use UTF-8 encoding for filenames and comments. + + + + + + If this flag is set, the comment and filename for the entry will be + encoded with UTF-8, as described in the Zip + specification, if necessary. "Necessary" means, the filename or + entry comment (if any) cannot be reflexively encoded and decoded using the + default code page, IBM437. + + + + Setting this flag to true is equivalent to setting to System.Text.Encoding.UTF8. + + + + This flag has no effect or relation to the text encoding used within the + file itself. + + + + + + + The text encoding to use for the FileName and Comment on this ZipEntry, + when the default encoding is insufficient. + + + + + + Don't use this property. See . + + + + + + + Specifies the alternate text encoding used by this ZipEntry + + + + The default text encoding used in Zip files for encoding filenames and + comments is IBM437, which is something like a superset of ASCII. In + cases where this is insufficient, applications can specify an + alternate encoding. + + + When creating a zip file, the usage of the alternate encoding is + governed by the property. + Typically you would set both properties to tell DotNetZip to employ an + encoding that is not IBM437 in the zipfile you are creating. + + + Keep in mind that because the ZIP specification states that the only + valid encodings to use are IBM437 and UTF-8, if you use something + other than that, then zip tools and libraries may not be able to + successfully read the zip archive you generate. + + + The zip specification states that applications should presume that + IBM437 is in use, except when a special bit is set, which indicates + UTF-8. There is no way to specify an arbitrary code page, within the + zip file itself. When you create a zip file encoded with gb2312 or + ibm861 or anything other than IBM437 or UTF-8, then the application + that reads the zip file needs to "know" which code page to use. In + some cases, the code page used when reading is chosen implicitly. For + example, WinRar uses the ambient code page for the host desktop + operating system. The pitfall here is that if you create a zip in + Copenhagen and send it to Tokyo, the reader of the zipfile may not be + able to decode successfully. + + + + This example shows how to create a zipfile encoded with a + language-specific encoding: + + using (var zip = new ZipFile()) + { + zip.AlternateEnoding = System.Text.Encoding.GetEncoding("ibm861"); + zip.AlternateEnodingUsage = ZipOption.Always; + zip.AddFileS(arrayOfFiles); + zip.Save("Myarchive-Encoded-in-IBM861.zip"); + } + + + + + + + Describes if and when this instance should apply + AlternateEncoding to encode the FileName and Comment, when + saving. + + + + + + Indicates whether an entry is marked as a text file. Be careful when + using on this property. Unless you have a good reason, you should + probably ignore this property. + + + + + The ZIP format includes a provision for specifying whether an entry in + the zip archive is a text or binary file. This property exposes that + metadata item. Be careful when using this property: It's not clear + that this property as a firm meaning, across tools and libraries. + + + + To be clear, when reading a zip file, the property value may or may + not be set, and its value may or may not be valid. Not all entries + that you may think of as "text" entries will be so marked, and entries + marked as "text" are not guaranteed in any way to be text entries. + Whether the value is set and set correctly depends entirely on the + application that produced the zip file. + + + + There are many zip tools available, and when creating zip files, some + of them "respect" the IsText metadata field, and some of them do not. + Unfortunately, even when an application tries to do "the right thing", + it's not always clear what "the right thing" is. + + + + There's no firm definition of just what it means to be "a text file", + and the zip specification does not help in this regard. Twenty years + ago, text was ASCII, each byte was less than 127. IsText meant, all + bytes in the file were less than 127. These days, it is not the case + that all text files have all bytes less than 127. Any unicode file + may have bytes that are above 0x7f. The zip specification has nothing + to say on this topic. Therefore, it's not clear what IsText really + means. + + + + This property merely tells a reading application what is stored in the + metadata for an entry, without guaranteeing its validity or its + meaning. + + + + When DotNetZip is used to create a zipfile, it attempts to set this + field "correctly." For example, if a file ends in ".txt", this field + will be set. Your application may override that default setting. When + writing a zip file, you must set the property before calling + Save() on the ZipFile. + + + + When reading a zip file, a more general way to decide just what kind + of file is contained in a particular entry is to use the file type + database stored in the operating system. The operating system stores + a table that says, a file with .jpg extension is a JPG image file, a + file with a .xml extension is an XML document, a file with a .txt is a + pure ASCII text document, and so on. To get this information on + Windows, you + need to read and parse the registry. + + + + + using (var zip = new ZipFile()) + { + var e = zip.UpdateFile("Descriptions.mme", ""); + e.IsText = true; + zip.Save(zipPath); + } + + + + Using zip As New ZipFile + Dim e2 as ZipEntry = zip.AddFile("Descriptions.mme", "") + e.IsText= True + zip.Save(zipPath) + End Using + + + + + Provides a string representation of the instance. + a string representation of the instance. + + + + Extract the entry to the filesystem, starting at the current + working directory. + + + + This method has a bunch of overloads! One of them is sure to + be the right one for you... If you don't like these, check + out the ExtractWithPassword() methods. + + + + + + + + + This method extracts an entry from a zip file into the current + working directory. The path of the entry as extracted is the full + path as specified in the zip archive, relative to the current + working directory. After the file is extracted successfully, the + file attributes and timestamps are set. + + + + The action taken when extraction an entry would overwrite an + existing file is determined by the property. + + + + Within the call to Extract(), the content for the entry is + written into a filesystem file, and then the last modified time of the + file is set according to the property on + the entry. See the remarks the property for + some details about the last modified time. + + + + + + + Extract the entry to a file in the filesystem, using the specified + behavior when extraction would overwrite an existing file. + + + + + See the remarks on the property, for some + details about how the last modified time of the file is set after + extraction. + + + + + The action to take if extraction would overwrite an existing file. + + + + + Extracts the entry to the specified stream. + + + + + The caller can specify any write-able stream, for example a , a , or ASP.NET's + Response.OutputStream. The content will be decrypted and + decompressed as necessary. If the entry is encrypted and no password + is provided, this method will throw. + + + The position on the stream is not reset by this method before it extracts. + You may want to call stream.Seek() before calling ZipEntry.Extract(). + + + + + the stream to which the entry should be extracted. + + + + + + Extract the entry to the filesystem, starting at the specified base + directory. + + + the pathname of the base directory + + + + + + This example extracts only the entries in a zip file that are .txt files, + into a directory called "textfiles". + + using (ZipFile zip = ZipFile.Read("PackedDocuments.zip")) + { + foreach (string s1 in zip.EntryFilenames) + { + if (s1.EndsWith(".txt")) + { + zip[s1].Extract("textfiles"); + } + } + } + + + Using zip As ZipFile = ZipFile.Read("PackedDocuments.zip") + Dim s1 As String + For Each s1 In zip.EntryFilenames + If s1.EndsWith(".txt") Then + zip(s1).Extract("textfiles") + End If + Next + End Using + + + + + + + Using this method, existing entries in the filesystem will not be + overwritten. If you would like to force the overwrite of existing + files, see the property, or call + . + + + + See the remarks on the property, for some + details about how the last modified time of the created file is set. + + + + + + Extract the entry to the filesystem, starting at the specified base + directory, and using the specified behavior when extraction would + overwrite an existing file. + + + + + See the remarks on the property, for some + details about how the last modified time of the created file is set. + + + + + + String sZipPath = "Airborne.zip"; + String sFilePath = "Readme.txt"; + String sRootFolder = "Digado"; + using (ZipFile zip = ZipFile.Read(sZipPath)) + { + if (zip.EntryFileNames.Contains(sFilePath)) + { + // use the string indexer on the zip file + zip[sFileName].Extract(sRootFolder, + ExtractExistingFileAction.OverwriteSilently); + } + } + + + + Dim sZipPath as String = "Airborne.zip" + Dim sFilePath As String = "Readme.txt" + Dim sRootFolder As String = "Digado" + Using zip As ZipFile = ZipFile.Read(sZipPath) + If zip.EntryFileNames.Contains(sFilePath) + ' use the string indexer on the zip file + zip(sFilePath).Extract(sRootFolder, _ + ExtractExistingFileAction.OverwriteSilently) + End If + End Using + + + + the pathname of the base directory + + The action to take if extraction would overwrite an existing file. + + + + + Extract the entry to the filesystem, using the current working directory + and the specified password. + + + + This method has a bunch of overloads! One of them is sure to be + the right one for you... + + + + + + + + + Existing entries in the filesystem will not be overwritten. If you + would like to force the overwrite of existing files, see the property, or call + . + + + + See the remarks on the property for some + details about how the "last modified" time of the created file is + set. + + + + + In this example, entries that use encryption are extracted using a + particular password. + + using (var zip = ZipFile.Read(FilePath)) + { + foreach (ZipEntry e in zip) + { + if (e.UsesEncryption) + e.ExtractWithPassword("Secret!"); + else + e.Extract(); + } + } + + + Using zip As ZipFile = ZipFile.Read(FilePath) + Dim e As ZipEntry + For Each e In zip + If (e.UsesEncryption) + e.ExtractWithPassword("Secret!") + Else + e.Extract + End If + Next + End Using + + + The Password to use for decrypting the entry. + + + + Extract the entry to the filesystem, starting at the specified base + directory, and using the specified password. + + + + + + + + Existing entries in the filesystem will not be overwritten. If you + would like to force the overwrite of existing files, see the property, or call + . + + + + See the remarks on the property, for some + details about how the last modified time of the created file is set. + + + + The pathname of the base directory. + The Password to use for decrypting the entry. + + + + Extract the entry to a file in the filesystem, relative to the + current directory, using the specified behavior when extraction + would overwrite an existing file. + + + + + See the remarks on the property, for some + details about how the last modified time of the created file is set. + + + + The Password to use for decrypting the entry. + + + The action to take if extraction would overwrite an existing file. + + + + + Extract the entry to the filesystem, starting at the specified base + directory, and using the specified behavior when extraction would + overwrite an existing file. + + + + See the remarks on the property, for some + details about how the last modified time of the created file is set. + + + the pathname of the base directory + + The action to take if extraction would + overwrite an existing file. + + The Password to use for decrypting the entry. + + + + Extracts the entry to the specified stream, using the specified + Password. For example, the caller could extract to Console.Out, or + to a MemoryStream. + + + + + The caller can specify any write-able stream, for example a , a , or ASP.NET's + Response.OutputStream. The content will be decrypted and + decompressed as necessary. If the entry is encrypted and no password + is provided, this method will throw. + + + The position on the stream is not reset by this method before it extracts. + You may want to call stream.Seek() before calling ZipEntry.Extract(). + + + + + + the stream to which the entry should be extracted. + + + The password to use for decrypting the entry. + + + + + Opens a readable stream corresponding to the zip entry in the + archive. The stream decompresses and decrypts as necessary, as it + is read. + + + + + + DotNetZip offers a variety of ways to extract entries from a zip + file. This method allows an application to extract an entry by + reading a . + + + + The return value is of type . Use it as you would any + stream for reading. When an application calls on that stream, it will + receive data from the zip entry that is decrypted and decompressed + as necessary. + + + + CrcCalculatorStream adds one additional feature: it keeps a + CRC32 checksum on the bytes of the stream as it is read. The CRC + value is available in the property on the + CrcCalculatorStream. When the read is complete, your + application + should check this CRC against the + property on the ZipEntry to validate the content of the + ZipEntry. You don't have to validate the entry using the CRC, but + you should, to verify integrity. Check the example for how to do + this. + + + + If the entry is protected with a password, then you need to provide + a password prior to calling , either by + setting the property on the entry, or the + property on the ZipFile + itself. Or, you can use , the + overload of OpenReader that accepts a password parameter. + + + + If you want to extract entry data into a write-able stream that is + already opened, like a , do not + use this method. Instead, use . + + + + Your application may use only one stream created by OpenReader() at + a time, and you should not call other Extract methods before + completing your reads on a stream obtained from OpenReader(). This + is because there is really only one source stream for the compressed + content. A call to OpenReader() seeks in the source stream, to the + beginning of the compressed content. A subsequent call to + OpenReader() on a different entry will seek to a different position + in the source stream, as will a call to Extract() or one of its + overloads. This will corrupt the state for the decompressing stream + from the original call to OpenReader(). + + + + The OpenReader() method works only when the ZipEntry is + obtained from an instance of ZipFile. This method will throw + an exception if the ZipEntry is obtained from a ZipInputStream. + + + + + This example shows how to open a zip archive, then read in a named + entry via a stream. After the read loop is complete, the code + compares the calculated during the read loop with the expected CRC + on the ZipEntry, to verify the extraction. + + using (ZipFile zip = new ZipFile(ZipFileToRead)) + { + ZipEntry e1= zip["Elevation.mp3"]; + using (Ionic.Zlib.CrcCalculatorStream s = e1.OpenReader()) + { + byte[] buffer = new byte[4096]; + int n, totalBytesRead= 0; + do { + n = s.Read(buffer,0, buffer.Length); + totalBytesRead+=n; + } while (n>0); + if (s.Crc32 != e1.Crc32) + throw new Exception(string.Format("The Zip Entry failed the CRC Check. (0x{0:X8}!=0x{1:X8})", s.Crc32, e1.Crc32)); + if (totalBytesRead != e1.UncompressedSize) + throw new Exception(string.Format("We read an unexpected number of bytes. ({0}!={1})", totalBytesRead, e1.UncompressedSize)); + } + } + + + Using zip As New ZipFile(ZipFileToRead) + Dim e1 As ZipEntry = zip.Item("Elevation.mp3") + Using s As Ionic.Zlib.CrcCalculatorStream = e1.OpenReader + Dim n As Integer + Dim buffer As Byte() = New Byte(4096) {} + Dim totalBytesRead As Integer = 0 + Do + n = s.Read(buffer, 0, buffer.Length) + totalBytesRead = (totalBytesRead + n) + Loop While (n > 0) + If (s.Crc32 <> e1.Crc32) Then + Throw New Exception(String.Format("The Zip Entry failed the CRC Check. (0x{0:X8}!=0x{1:X8})", s.Crc32, e1.Crc32)) + End If + If (totalBytesRead <> e1.UncompressedSize) Then + Throw New Exception(String.Format("We read an unexpected number of bytes. ({0}!={1})", totalBytesRead, e1.UncompressedSize)) + End If + End Using + End Using + + + + The Stream for reading. + + + + Opens a readable stream for an encrypted zip entry in the archive. + The stream decompresses and decrypts as necessary, as it is read. + + + + + See the documentation on the method for + full details. This overload allows the application to specify a + password for the ZipEntry to be read. + + + + The password to use for decrypting the entry. + The Stream for reading. + + + + Validates that the args are consistent. + + + Only one of {baseDir, outStream} can be non-null. + If baseDir is non-null, then the outputFile is created. + + + + + Reads one ZipEntry from the given stream. The content for + the entry does not get decompressed or decrypted. This method + basically reads metadata, and seeks. + + the ZipContainer this entry belongs to. + + true of this is the first entry being read from the stream. + + the ZipEntry read from the stream. + + + + Finds a particular segment in the given extra field. + This is used when modifying a previously-generated + extra field, in particular when removing the AES crypto + segment in the extra field. + + + + + At current cursor position in the stream, read the extra + field, and set the properties on the ZipEntry instance + appropriately. This can be called when processing the + Extra field in the Central Directory, or in the local + header. + + + + + generate and return a byte array that encodes the filename + for the entry. + + + + side effects: generate and store into _CommentBytes the + byte array for any comment attached to the entry. Also + sets _actualEncoding to indicate the actual encoding + used. The same encoding is used for both filename and + comment. + + + + + + Stores the position of the entry source stream, or, if the position is + already stored, seeks to that position. + + + + + This method is called in prep for reading the source stream. If PKZIP + encryption is used, then we need to calc the CRC32 before doing the + encryption, because the CRC is used in the 12th byte of the PKZIP + encryption header. So, we need to be able to seek backward in the source + when saving the ZipEntry. This method is called from the place that + calculates the CRC, and also from the method that does the encryption of + the file data. + + + + The first time through, this method sets the _sourceStreamOriginalPosition + field. Subsequent calls to this method seek to that position. + + + + + + Copy metadata that may have been changed by the app. We do this when + resetting the zipFile instance. If the app calls Save() on a ZipFile, then + tries to party on that file some more, we may need to Reset() it , which + means re-reading the entries and then copying the metadata. I think. + + + + + Set the input stream and get its length, if possible. The length is + used for progress updates, AND, to allow an optimization in case of + a stream/file of zero length. In that case we skip the Encrypt and + compression Stream. (like DeflateStream or BZip2OutputStream) + + + + + Prepare the given stream for output - wrap it in a CountingStream, and + then in a CRC stream, and an encryptor and deflator as appropriate. + + + + Previously this was used in ZipEntry.Write(), but in an effort to + introduce some efficiencies in that method I've refactored to put the + code inline. This method still gets called by ZipOutputStream. + + + + + + An enum that specifies the type of timestamp available on the ZipEntry. + + + + + + The last modified time of a file can be stored in multiple ways in + a zip file, and they are not mutually exclusive: + + + + + In the so-called "DOS" format, which has a 2-second precision. Values + are rounded to the nearest even second. For example, if the time on the + file is 12:34:43, then it will be stored as 12:34:44. This first value + is accessible via the LastModified property. This value is always + present in the metadata for each zip entry. In some cases the value is + invalid, or zero. + + + + In the so-called "Windows" or "NTFS" format, as an 8-byte integer + quantity expressed as the number of 1/10 milliseconds (in other words + the number of 100 nanosecond units) since January 1, 1601 (UTC). This + format is how Windows represents file times. This time is accessible + via the ModifiedTime property. + + + + In the "Unix" format, a 4-byte quantity specifying the number of seconds since + January 1, 1970 UTC. + + + + In an older format, now deprecated but still used by some current + tools. This format is also a 4-byte quantity specifying the number of + seconds since January 1, 1970 UTC. + + + + + + This bit field describes which of the formats were found in a ZipEntry that was read. + + + + + + + Default value. + + + + + A DOS timestamp with 2-second precision. + + + + + A Windows timestamp with 100-ns precision. + + + + + A Unix timestamp with 1-second precision. + + + + + A Unix timestamp with 1-second precision, stored in InfoZip v1 format. This + format is outdated and is supported for reading archives only. + + + + + The method of compression to use for a particular ZipEntry. + + + + PKWare's + ZIP Specification describes a number of distinct + cmopression methods that can be used within a zip + file. DotNetZip supports a subset of them. + + + + + No compression at all. For COM environments, the value is 0 (zero). + + + + + DEFLATE compression, as described in IETF RFC + 1951. This is the "normal" compression used in zip + files. For COM environments, the value is 8. + + + + + An enum that specifies the source of the ZipEntry. + + + + + Default value. Invalid on a bonafide ZipEntry. + + + + + The entry was instantiated by calling AddFile() or another method that + added an entry from the filesystem. + + + + + The entry was instantiated via or + . + + + + + The ZipEntry was instantiated by reading a zipfile. + + + + + The content for the ZipEntry will be or was provided by the WriteDelegate. + + + + + The content for the ZipEntry will be obtained from the stream dispensed by the OpenDelegate. + The entry was instantiated via . + + + + + The content for the ZipEntry will be or was obtained from a ZipOutputStream. + + + + + An enum providing the options when an error occurs during opening or reading + of a file or directory that is being saved to a zip file. + + + + + This enum describes the actions that the library can take when an error occurs + opening or reading a file, as it is being saved into a Zip archive. + + + + In some cases an error will occur when DotNetZip tries to open a file to be + added to the zip archive. In other cases, an error might occur after the + file has been successfully opened, while DotNetZip is reading the file. + + + + The first problem might occur when calling AddDirectory() on a directory + that contains a Clipper .dbf file; the file is locked by Clipper and + cannot be opened by another process. An example of the second problem is + the ERROR_LOCK_VIOLATION that results when a file is opened by another + process, but not locked, and a range lock has been taken on the file. + Microsoft Outlook takes range locks on .PST files. + + + + + + Throw an exception when an error occurs while zipping. This is the default + behavior. (For COM clients, this is a 0 (zero).) + + + + + When an error occurs during zipping, for example a file cannot be opened, + skip the file causing the error, and continue zipping. (For COM clients, + this is a 1.) + + + + + When an error occurs during zipping, for example a file cannot be opened, + retry the operation that caused the error. Be careful with this option. If + the error is not temporary, the library will retry forever. (For COM + clients, this is a 2.) + + + + + When an error occurs, invoke the zipError event. The event type used is + . A typical use of this option: + a GUI application may wish to pop up a dialog to allow the user to view the + error that occurred, and choose an appropriate action. After your + processing in the error event, if you want to skip the file, set on the + ZipProgressEventArgs.CurrentEntry to Skip. If you want the + exception to be thrown, set ZipErrorAction on the CurrentEntry + to Throw. If you want to cancel the zip, set + ZipProgressEventArgs.Cancel to true. Cancelling differs from using + Skip in that a cancel will not save any further entries, if there are any. + (For COM clients, the value of this enum is a 3.) + + + + + The ZipFile type represents a zip archive file. + + + + + This is the main type in the DotNetZip class library. This class reads and + writes zip files, as defined in the specification + for zip files described by PKWare. The compression for this + implementation is provided by a managed-code version of Zlib, included with + DotNetZip in the classes in the Ionic.Zlib namespace. + + + + This class provides a general purpose zip file capability. Use it to read, + create, or update zip files. When you want to create zip files using a + Stream type to write the zip file, you may want to consider the class. + + + + Both the ZipOutputStream class and the ZipFile class can + be used to create zip files. Both of them support many of the common zip + features, including Unicode, different compression methods and levels, + and ZIP64. They provide very similar performance when creating zip + files. + + + + The ZipFile class is generally easier to use than + ZipOutputStream and should be considered a higher-level interface. For + example, when creating a zip file via calls to the PutNextEntry() and + Write() methods on the ZipOutputStream class, the caller is + responsible for opening the file, reading the bytes from the file, writing + those bytes into the ZipOutputStream, setting the attributes on the + ZipEntry, and setting the created, last modified, and last accessed + timestamps on the zip entry. All of these things are done automatically by a + call to ZipFile.AddFile(). + For this reason, the ZipOutputStream is generally recommended for use + only when your application emits arbitrary data, not necessarily data from a + filesystem file, directly into a zip file, and does so using a Stream + metaphor. + + + + Aside from the differences in programming model, there are other + differences in capability between the two classes. + + + + + ZipFile can be used to read and extract zip files, in addition to + creating zip files. ZipOutputStream cannot read zip files. If you want + to use a stream to read zip files, check out the ZipInputStream class. + + + + ZipOutputStream does not support the creation of segmented or spanned + zip files. + + + + ZipOutputStream cannot produce a self-extracting archive. + + + + + Be aware that the ZipFile class implements the interface. In order for ZipFile to + produce a valid zip file, you use use it within a using clause (Using + in VB), or call the Dispose() method explicitly. See the examples + for how to employ a using clause. + + + + + + + Adds an item, either a file or a directory, to a zip file archive. + + + + + This method is handy if you are adding things to zip archive and don't + want to bother distinguishing between directories or files. Any files are + added as single entries. A directory added through this method is added + recursively: all files and subdirectories contained within the directory + are added to the ZipFile. + + + + The name of the item may be a relative path or a fully-qualified + path. Remember, the items contained in ZipFile instance get written + to the disk only when you call or a similar + save method. + + + + The directory name used for the file within the archive is the same + as the directory name (potentially a relative path) specified in the + . + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + + + This method has two overloads. + + the name of the file or directory to add. + + The ZipEntry added. + + + + Adds an item, either a file or a directory, to a zip file archive, + explicitly specifying the directory path to be used in the archive. + + + + + If adding a directory, the add is recursive on all files and + subdirectories contained within it. + + + The name of the item may be a relative path or a fully-qualified path. + The item added by this call to the ZipFile is not read from the + disk nor written to the zip file archive until the application calls + Save() on the ZipFile. + + + + This version of the method allows the caller to explicitly specify the + directory path to be used in the archive, which would override the + "natural" path of the filesystem file. + + + + Encryption will be used on the file data if the Password has + been set on the ZipFile object, prior to calling this method. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + Thrown if the file or directory passed in does not exist. + + + the name of the file or directory to add. + + + + The name of the directory path to use within the zip archive. This path + need not refer to an extant directory in the current filesystem. If the + files within the zip are later extracted, this is the path used for the + extracted file. Passing null (Nothing in VB) will use the + path on the fileOrDirectoryName. Passing the empty string ("") will + insert the item at the root path within the archive. + + + + + + + + This example shows how to zip up a set of files into a flat hierarchy, + regardless of where in the filesystem the files originated. The resulting + zip archive will contain a toplevel directory named "flat", which itself + will contain files Readme.txt, MyProposal.docx, and Image1.jpg. A + subdirectory under "flat" called SupportFiles will contain all the files + in the "c:\SupportFiles" directory on disk. + + + String[] itemnames= { + "c:\\fixedContent\\Readme.txt", + "MyProposal.docx", + "c:\\SupportFiles", // a directory + "images\\Image1.jpg" + }; + + try + { + using (ZipFile zip = new ZipFile()) + { + for (int i = 1; i < itemnames.Length; i++) + { + // will add Files or Dirs, recurses and flattens subdirectories + zip.AddItem(itemnames[i],"flat"); + } + zip.Save(ZipToCreate); + } + } + catch (System.Exception ex1) + { + System.Console.Error.WriteLine("exception: {0}", ex1); + } + + + + Dim itemnames As String() = _ + New String() { "c:\fixedContent\Readme.txt", _ + "MyProposal.docx", _ + "SupportFiles", _ + "images\Image1.jpg" } + Try + Using zip As New ZipFile + Dim i As Integer + For i = 1 To itemnames.Length - 1 + ' will add Files or Dirs, recursing and flattening subdirectories. + zip.AddItem(itemnames(i), "flat") + Next i + zip.Save(ZipToCreate) + End Using + Catch ex1 As Exception + Console.Error.WriteLine("exception: {0}", ex1.ToString()) + End Try + + + The ZipEntry added. + + + + Adds a File to a Zip file archive. + + + + + This call collects metadata for the named file in the filesystem, + including the file attributes and the timestamp, and inserts that metadata + into the resulting ZipEntry. Only when the application calls Save() on + the ZipFile, does DotNetZip read the file from the filesystem and + then write the content to the zip file archive. + + + + This method will throw an exception if an entry with the same name already + exists in the ZipFile. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + In this example, three files are added to a Zip archive. The ReadMe.txt + file will be placed in the root of the archive. The .png file will be + placed in a folder within the zip called photos\personal. The pdf file + will be included into a folder within the zip called Desktop. + + + try + { + using (ZipFile zip = new ZipFile()) + { + zip.AddFile("c:\\photos\\personal\\7440-N49th.png"); + zip.AddFile("c:\\Desktop\\2008-Regional-Sales-Report.pdf"); + zip.AddFile("ReadMe.txt"); + + zip.Save("Package.zip"); + } + } + catch (System.Exception ex1) + { + System.Console.Error.WriteLine("exception: " + ex1); + } + + + + Try + Using zip As ZipFile = New ZipFile + zip.AddFile("c:\photos\personal\7440-N49th.png") + zip.AddFile("c:\Desktop\2008-Regional-Sales-Report.pdf") + zip.AddFile("ReadMe.txt") + zip.Save("Package.zip") + End Using + Catch ex1 As Exception + Console.Error.WriteLine("exception: {0}", ex1.ToString) + End Try + + + + This method has two overloads. + + + + + + + The name of the file to add. It should refer to a file in the filesystem. + The name of the file may be a relative path or a fully-qualified path. + + The ZipEntry corresponding to the File added. + + + + Adds a File to a Zip file archive, potentially overriding the path to be + used within the zip archive. + + + + + The file added by this call to the ZipFile is not written to the + zip file archive until the application calls Save() on the ZipFile. + + + + This method will throw an exception if an entry with the same name already + exists in the ZipFile. + + + + This version of the method allows the caller to explicitly specify the + directory path to be used in the archive. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + In this example, three files are added to a Zip archive. The ReadMe.txt + file will be placed in the root of the archive. The .png file will be + placed in a folder within the zip called images. The pdf file will be + included into a folder within the zip called files\docs, and will be + encrypted with the given password. + + + try + { + using (ZipFile zip = new ZipFile()) + { + // the following entry will be inserted at the root in the archive. + zip.AddFile("c:\\datafiles\\ReadMe.txt", ""); + // this image file will be inserted into the "images" directory in the archive. + zip.AddFile("c:\\photos\\personal\\7440-N49th.png", "images"); + // the following will result in a password-protected file called + // files\\docs\\2008-Regional-Sales-Report.pdf in the archive. + zip.Password = "EncryptMe!"; + zip.AddFile("c:\\Desktop\\2008-Regional-Sales-Report.pdf", "files\\docs"); + zip.Save("Archive.zip"); + } + } + catch (System.Exception ex1) + { + System.Console.Error.WriteLine("exception: {0}", ex1); + } + + + + Try + Using zip As ZipFile = New ZipFile + ' the following entry will be inserted at the root in the archive. + zip.AddFile("c:\datafiles\ReadMe.txt", "") + ' this image file will be inserted into the "images" directory in the archive. + zip.AddFile("c:\photos\personal\7440-N49th.png", "images") + ' the following will result in a password-protected file called + ' files\\docs\\2008-Regional-Sales-Report.pdf in the archive. + zip.Password = "EncryptMe!" + zip.AddFile("c:\Desktop\2008-Regional-Sales-Report.pdf", "files\documents") + zip.Save("Archive.zip") + End Using + Catch ex1 As Exception + Console.Error.WriteLine("exception: {0}", ex1) + End Try + + + + + + + + + The name of the file to add. The name of the file may be a relative path + or a fully-qualified path. + + + + Specifies a directory path to use to override any path in the fileName. + This path may, or may not, correspond to a real directory in the current + filesystem. If the files within the zip are later extracted, this is the + path used for the extracted file. Passing null (Nothing in + VB) will use the path on the fileName, if any. Passing the empty string + ("") will insert the item at the root path within the archive. + + + The ZipEntry corresponding to the file added. + + + + This method removes a collection of entries from the ZipFile. + + + + A collection of ZipEntry instances from this zip file to be removed. For + example, you can pass in an array of ZipEntry instances; or you can call + SelectEntries(), and then add or remove entries from that + ICollection<ZipEntry> (ICollection(Of ZipEntry) in VB), and pass + that ICollection to this method. + + + + + + + + This method removes a collection of entries from the ZipFile, by name. + + + + A collection of strings that refer to names of entries to be removed + from the ZipFile. For example, you can pass in an array or a + List of Strings that provide the names of entries to be removed. + + + + + + + + This method adds a set of files to the ZipFile. + + + + + Use this method to add a set of files to the zip archive, in one call. + For example, a list of files received from + System.IO.Directory.GetFiles() can be added to a zip archive in one + call. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + The collection of names of the files to add. Each string should refer to a + file in the filesystem. The name of the file may be a relative path or a + fully-qualified path. + + + + This example shows how to create a zip file, and add a few files into it. + + String ZipFileToCreate = "archive1.zip"; + String DirectoryToZip = "c:\\reports"; + using (ZipFile zip = new ZipFile()) + { + // Store all files found in the top level directory, into the zip archive. + String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); + zip.AddFiles(filenames); + zip.Save(ZipFileToCreate); + } + + + + Dim ZipFileToCreate As String = "archive1.zip" + Dim DirectoryToZip As String = "c:\reports" + Using zip As ZipFile = New ZipFile + ' Store all files found in the top level directory, into the zip archive. + Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) + zip.AddFiles(filenames) + zip.Save(ZipFileToCreate) + End Using + + + + + + + + Adds or updates a set of files in the ZipFile. + + + + + Any files that already exist in the archive are updated. Any files that + don't yet exist in the archive are added. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + The collection of names of the files to update. Each string should refer to a file in + the filesystem. The name of the file may be a relative path or a fully-qualified path. + + + + + + Adds a set of files to the ZipFile, using the + specified directory path in the archive. + + + + + Any directory structure that may be present in the + filenames contained in the list is "flattened" in the + archive. Each file in the list is added to the archive in + the specified top-level directory. + + + + For ZipFile properties including , , , , , , and , their respective values at the + time of this call will be applied to each ZipEntry added. + + + + + The names of the files to add. Each string should refer to + a file in the filesystem. The name of the file may be a + relative path or a fully-qualified path. + + + + Specifies a directory path to use to override any path in the file name. + Th is path may, or may not, correspond to a real directory in the current + filesystem. If the files within the zip are later extracted, this is the + path used for the extracted file. Passing null (Nothing in + VB) will use the path on each of the fileNames, if any. Passing + the empty string ("") will insert the item at the root path within the + archive. + + + + + + + Adds a set of files to the ZipFile, using the specified directory + path in the archive, and preserving the full directory structure in the + filenames. + + + + + + Think of the as a "root" or + base directory used in the archive for the files that get added. when + is true, the hierarchy of files + found in the filesystem will be placed, with the hierarchy intact, + starting at that root in the archive. When preserveDirHierarchy + is false, the path hierarchy of files is flattned, and the flattened + set of files gets placed in the root within the archive as specified in + directoryPathInArchive. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + + The names of the files to add. Each string should refer to a file in the + filesystem. The name of the file may be a relative path or a + fully-qualified path. + + + + Specifies a directory path to use as a prefix for each entry name. + This path may, or may not, correspond to a real directory in the current + filesystem. If the files within the zip are later extracted, this is the + path used for the extracted file. Passing null (Nothing in + VB) will use the path on each of the fileNames, if any. Passing + the empty string ("") will insert the item at the root path within the + archive. + + + + whether the entries in the zip archive will reflect the directory + hierarchy that is present in the various filenames. For example, if + includes two paths, + \Animalia\Chordata\Mammalia\Info.txt and + \Plantae\Magnoliophyta\Dicotyledon\Info.txt, then calling this method + with = false will + result in an exception because of a duplicate entry name, while + calling this method with = + true will result in the full direcory paths being included in + the entries added to the ZipFile. + + + + + + Adds or updates a set of files to the ZipFile, using the specified + directory path in the archive. + + + + + + Any files that already exist in the archive are updated. Any files that + don't yet exist in the archive are added. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + The names of the files to add or update. Each string should refer to a + file in the filesystem. The name of the file may be a relative path or a + fully-qualified path. + + + + Specifies a directory path to use to override any path in the file name. + This path may, or may not, correspond to a real directory in the current + filesystem. If the files within the zip are later extracted, this is the + path used for the extracted file. Passing null (Nothing in + VB) will use the path on each of the fileNames, if any. Passing + the empty string ("") will insert the item at the root path within the + archive. + + + + + + + Adds or Updates a File in a Zip file archive. + + + + + This method adds a file to a zip archive, or, if the file already exists + in the zip archive, this method Updates the content of that given filename + in the zip archive. The UpdateFile method might more accurately be + called "AddOrUpdateFile". + + + + Upon success, there is no way for the application to learn whether the file + was added versus updated. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + This example shows how to Update an existing entry in a zipfile. The first + call to UpdateFile adds the file to the newly-created zip archive. The + second call to UpdateFile updates the content for that file in the zip + archive. + + + using (ZipFile zip1 = new ZipFile()) + { + // UpdateFile might more accurately be called "AddOrUpdateFile" + zip1.UpdateFile("MyDocuments\\Readme.txt"); + zip1.UpdateFile("CustomerList.csv"); + zip1.Comment = "This zip archive has been created."; + zip1.Save("Content.zip"); + } + + using (ZipFile zip2 = ZipFile.Read("Content.zip")) + { + zip2.UpdateFile("Updates\\Readme.txt"); + zip2.Comment = "This zip archive has been updated: The Readme.txt file has been changed."; + zip2.Save(); + } + + + + Using zip1 As New ZipFile + ' UpdateFile might more accurately be called "AddOrUpdateFile" + zip1.UpdateFile("MyDocuments\Readme.txt") + zip1.UpdateFile("CustomerList.csv") + zip1.Comment = "This zip archive has been created." + zip1.Save("Content.zip") + End Using + + Using zip2 As ZipFile = ZipFile.Read("Content.zip") + zip2.UpdateFile("Updates\Readme.txt") + zip2.Comment = "This zip archive has been updated: The Readme.txt file has been changed." + zip2.Save + End Using + + + + + + + + + The name of the file to add or update. It should refer to a file in the + filesystem. The name of the file may be a relative path or a + fully-qualified path. + + + + The ZipEntry corresponding to the File that was added or updated. + + + + + Adds or Updates a File in a Zip file archive. + + + + + This method adds a file to a zip archive, or, if the file already exists + in the zip archive, this method Updates the content of that given filename + in the zip archive. + + + + This version of the method allows the caller to explicitly specify the + directory path to be used in the archive. The entry to be added or + updated is found by using the specified directory path, combined with the + basename of the specified filename. + + + + Upon success, there is no way for the application to learn if the file was + added versus updated. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + + + The name of the file to add or update. It should refer to a file in the + filesystem. The name of the file may be a relative path or a + fully-qualified path. + + + + Specifies a directory path to use to override any path in the + fileName. This path may, or may not, correspond to a real + directory in the current filesystem. If the files within the zip are + later extracted, this is the path used for the extracted file. Passing + null (Nothing in VB) will use the path on the + fileName, if any. Passing the empty string ("") will insert the + item at the root path within the archive. + + + + The ZipEntry corresponding to the File that was added or updated. + + + + + Add or update a directory in a zip archive. + + + + If the specified directory does not exist in the archive, then this method + is equivalent to calling AddDirectory(). If the specified + directory already exists in the archive, then this method updates any + existing entries, and adds any new entries. Any entries that are in the + zip archive but not in the specified directory, are left alone. In other + words, the contents of the zip file will be a union of the previous + contents and the new files. + + + + + + + + The path to the directory to be added to the zip archive, or updated in + the zip archive. + + + + The ZipEntry corresponding to the Directory that was added or updated. + + + + + Add or update a directory in the zip archive at the specified root + directory in the archive. + + + + If the specified directory does not exist in the archive, then this method + is equivalent to calling AddDirectory(). If the specified + directory already exists in the archive, then this method updates any + existing entries, and adds any new entries. Any entries that are in the + zip archive but not in the specified directory, are left alone. In other + words, the contents of the zip file will be a union of the previous + contents and the new files. + + + + + + + + The path to the directory to be added to the zip archive, or updated + in the zip archive. + + + + Specifies a directory path to use to override any path in the + directoryName. This path may, or may not, correspond to a real + directory in the current filesystem. If the files within the zip are + later extracted, this is the path used for the extracted file. Passing + null (Nothing in VB) will use the path on the + directoryName, if any. Passing the empty string ("") will insert + the item at the root path within the archive. + + + + The ZipEntry corresponding to the Directory that was added or updated. + + + + + Add or update a file or directory in the zip archive. + + + + + This is useful when the application is not sure or does not care if the + item to be added is a file or directory, and does not know or does not + care if the item already exists in the ZipFile. Calling this method + is equivalent to calling RemoveEntry() if an entry by the same name + already exists, followed calling by AddItem(). + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + + + the path to the file or directory to be added or updated. + + + + + Add or update a file or directory. + + + + + This method is useful when the application is not sure or does not care if + the item to be added is a file or directory, and does not know or does not + care if the item already exists in the ZipFile. Calling this method + is equivalent to calling RemoveEntry(), if an entry by that name + exists, and then calling AddItem(). + + + + This version of the method allows the caller to explicitly specify the + directory path to be used for the item being added to the archive. The + entry or entries that are added or updated will use the specified + DirectoryPathInArchive. Extracting the entry from the archive will + result in a file stored in that directory path. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + + + The path for the File or Directory to be added or updated. + + + Specifies a directory path to use to override any path in the + itemName. This path may, or may not, correspond to a real + directory in the current filesystem. If the files within the zip are + later extracted, this is the path used for the extracted file. Passing + null (Nothing in VB) will use the path on the + itemName, if any. Passing the empty string ("") will insert the + item at the root path within the archive. + + + + + Adds a named entry into the zip archive, taking content for the entry + from a string. + + + + Calling this method creates an entry using the given fileName and + directory path within the archive. There is no need for a file by the + given name to exist in the filesystem; the name is used within the zip + archive only. The content for the entry is encoded using the default text + encoding for the machine, or on Silverlight, using UTF-8. + + + + The content of the file, should it be extracted from the zip. + + + + The name, including any path, to use for the entry within the archive. + + + The ZipEntry added. + + + + This example shows how to add an entry to the zipfile, using a string as + content for that entry. + + + string Content = "This string will be the content of the Readme.txt file in the zip archive."; + using (ZipFile zip1 = new ZipFile()) + { + zip1.AddFile("MyDocuments\\Resume.doc", "files"); + zip1.AddEntry("Readme.txt", Content); + zip1.Comment = "This zip file was created at " + System.DateTime.Now.ToString("G"); + zip1.Save("Content.zip"); + } + + + + Public Sub Run() + Dim Content As String = "This string will be the content of the Readme.txt file in the zip archive." + Using zip1 As ZipFile = New ZipFile + zip1.AddEntry("Readme.txt", Content) + zip1.AddFile("MyDocuments\Resume.doc", "files") + zip1.Comment = ("This zip file was created at " & DateTime.Now.ToString("G")) + zip1.Save("Content.zip") + End Using + End Sub + + + + + + Adds a named entry into the zip archive, taking content for the entry + from a string, and using the specified text encoding. + + + + + + Calling this method creates an entry using the given fileName and + directory path within the archive. There is no need for a file by the + given name to exist in the filesystem; the name is used within the zip + archive only. + + + + The content for the entry, a string value, is encoded using the given + text encoding. A BOM (byte-order-mark) is emitted into the file, if the + Encoding parameter is set for that. + + + + Most Encoding classes support a constructor that accepts a boolean, + indicating whether to emit a BOM or not. For example see . + + + + + + The name, including any path, to use within the archive for the entry. + + + + The content of the file, should it be extracted from the zip. + + + + The text encoding to use when encoding the string. Be aware: This is + distinct from the text encoding used to encode the fileName, as specified + in . + + + The ZipEntry added. + + + + + Create an entry in the ZipFile using the given Stream + as input. The entry will have the given filename. + + + + + + The application should provide an open, readable stream; in this case it + will be read during the call to or one of + its overloads. + + + + The passed stream will be read from its current position. If + necessary, callers should set the position in the stream before + calling AddEntry(). This might be appropriate when using this method + with a MemoryStream, for example. + + + + In cases where a large number of streams will be added to the + ZipFile, the application may wish to avoid maintaining all of the + streams open simultaneously. To handle this situation, the application + should use the + overload. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + This example adds a single entry to a ZipFile via a Stream. + + + + String zipToCreate = "Content.zip"; + String fileNameInArchive = "Content-From-Stream.bin"; + using (System.IO.Stream streamToRead = MyStreamOpener()) + { + using (ZipFile zip = new ZipFile()) + { + ZipEntry entry= zip.AddEntry(fileNameInArchive, streamToRead); + zip.AddFile("Readme.txt"); + zip.Save(zipToCreate); // the stream is read implicitly here + } + } + + + + Dim zipToCreate As String = "Content.zip" + Dim fileNameInArchive As String = "Content-From-Stream.bin" + Using streamToRead as System.IO.Stream = MyStreamOpener() + Using zip As ZipFile = New ZipFile() + Dim entry as ZipEntry = zip.AddEntry(fileNameInArchive, streamToRead) + zip.AddFile("Readme.txt") + zip.Save(zipToCreate) '' the stream is read implicitly, here + End Using + End Using + + + + + + + The name, including any path, which is shown in the zip file for the added + entry. + + + The input stream from which to grab content for the file + + The ZipEntry added. + + + + Add a ZipEntry for which content is written directly by the application. + + + + + When the application needs to write the zip entry data, use this + method to add the ZipEntry. For example, in the case that the + application wishes to write the XML representation of a DataSet into + a ZipEntry, the application can use this method to do so. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + About progress events: When using the WriteDelegate, DotNetZip does + not issue any SaveProgress events with EventType = + Saving_EntryBytesRead. (This is because it is the + application's code that runs in WriteDelegate - there's no way for + DotNetZip to know when to issue a EntryBytesRead event.) + Applications that want to update a progress bar or similar status + indicator should do so from within the WriteDelegate + itself. DotNetZip will issue the other SaveProgress events, + including + Saving_Started, + + Saving_BeforeWriteEntry, and + Saving_AfterWriteEntry. + + + + Note: When you use PKZip encryption, it's normally necessary to + compute the CRC of the content to be encrypted, before compressing or + encrypting it. Therefore, when using PKZip encryption with a + WriteDelegate, the WriteDelegate CAN BE called twice: once to compute + the CRC, and the second time to potentially compress and + encrypt. Surprising, but true. This is because PKWARE specified that + the encryption initialization data depends on the CRC. + If this happens, for each call of the delegate, your + application must stream the same entry data in its entirety. If your + application writes different data during the second call, it will + result in a corrupt zip file. + + + + The double-read behavior happens with all types of entries, not only + those that use WriteDelegate. It happens if you add an entry from a + filesystem file, or using a string, or a stream, or an opener/closer + pair. But in those cases, DotNetZip takes care of reading twice; in + the case of the WriteDelegate, the application code gets invoked + twice. Be aware. + + + + As you can imagine, this can cause performance problems for large + streams, and it can lead to correctness problems when you use a + WriteDelegate. This is a pretty big pitfall. There are two + ways to avoid it. First, and most preferred: don't use PKZIP + encryption. If you use the WinZip AES encryption, this problem + doesn't occur, because the encryption protocol doesn't require the CRC + up front. Second: if you do choose to use PKZIP encryption, write out + to a non-seekable stream (like standard output, or the + Response.OutputStream in an ASP.NET application). In this case, + DotNetZip will use an alternative encryption protocol that does not + rely on the CRC of the content. This also implies setting bit 3 in + the zip entry, which still presents problems for some zip tools. + + + + In the future I may modify DotNetZip to *always* use bit 3 when PKZIP + encryption is in use. This seems like a win overall, but there will + be some work involved. If you feel strongly about it, visit the + DotNetZip forums and vote up the Workitem + tracking this issue. + + + + + the name of the entry to add + the delegate which will write the entry content + the ZipEntry added + + + + This example shows an application filling a DataSet, then saving the + contents of that DataSet as XML, into a ZipEntry in a ZipFile, using an + anonymous delegate in C#. The DataSet XML is never saved to a disk file. + + + var c1= new System.Data.SqlClient.SqlConnection(connstring1); + var da = new System.Data.SqlClient.SqlDataAdapter() + { + SelectCommand= new System.Data.SqlClient.SqlCommand(strSelect, c1) + }; + + DataSet ds1 = new DataSet(); + da.Fill(ds1, "Invoices"); + + using(Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile()) + { + zip.AddEntry(zipEntryName, (name,stream) => ds1.WriteXml(stream) ); + zip.Save(zipFileName); + } + + + + + + This example uses an anonymous method in C# as the WriteDelegate to provide + the data for the ZipEntry. The example is a bit contrived - the + AddFile() method is a simpler way to insert the contents of a file + into an entry in a zip file. On the other hand, if there is some sort of + processing or transformation of the file contents required before writing, + the application could use the WriteDelegate to do it, in this way. + + + using (var input = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite )) + { + using(Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile()) + { + zip.AddEntry(zipEntryName, (name,output) => + { + byte[] buffer = new byte[BufferSize]; + int n; + while ((n = input.Read(buffer, 0, buffer.Length)) != 0) + { + // could transform the data here... + output.Write(buffer, 0, n); + // could update a progress bar here + } + }); + + zip.Save(zipFileName); + } + } + + + + + + This example uses a named delegate in VB to write data for the given + ZipEntry (VB9 does not have anonymous delegates). The example here is a bit + contrived - a simpler way to add the contents of a file to a ZipEntry is to + simply use the appropriate AddFile() method. The key scenario for + which the WriteDelegate makes sense is saving a DataSet, in XML + format, to the zip file. The DataSet can write XML to a stream, and the + WriteDelegate is the perfect place to write into the zip file. There may be + other data structures that can write to a stream, but cannot be read as a + stream. The WriteDelegate would be appropriate for those cases as + well. + + + Private Sub WriteEntry (ByVal name As String, ByVal output As Stream) + Using input As FileStream = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) + Dim n As Integer = -1 + Dim buffer As Byte() = New Byte(BufferSize){} + Do While n <> 0 + n = input.Read(buffer, 0, buffer.Length) + output.Write(buffer, 0, n) + Loop + End Using + End Sub + + Public Sub Run() + Using zip = New ZipFile + zip.AddEntry(zipEntryName, New WriteDelegate(AddressOf WriteEntry)) + zip.Save(zipFileName) + End Using + End Sub + + + + + + Add an entry, for which the application will provide a stream + containing the entry data, on a just-in-time basis. + + + + + In cases where the application wishes to open the stream that + holds the content for the ZipEntry, on a just-in-time basis, the + application can use this method. The application provides an + opener delegate that will be called by the DotNetZip library to + obtain a readable stream that can be read to get the bytes for + the given entry. Typically, this delegate opens a stream. + Optionally, the application can provide a closer delegate as + well, which will be called by DotNetZip when all bytes have been + read from the entry. + + + + These delegates are called from within the scope of the call to + ZipFile.Save(). + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + This example uses anonymous methods in C# to open and close the + source stream for the content for a zip entry. + + + using(Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile()) + { + zip.AddEntry(zipEntryName, + (name) => File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite ), + (name, stream) => stream.Close() + ); + + zip.Save(zipFileName); + } + + + + + + + This example uses delegates in VB.NET to open and close the + the source stream for the content for a zip entry. VB 9.0 lacks + support for "Sub" lambda expressions, and so the CloseDelegate must + be an actual, named Sub. + + + + Function MyStreamOpener(ByVal entryName As String) As Stream + '' This simply opens a file. You probably want to do somethinig + '' more involved here: open a stream to read from a database, + '' open a stream on an HTTP connection, and so on. + Return File.OpenRead(entryName) + End Function + + Sub MyStreamCloser(entryName As String, stream As Stream) + stream.Close() + End Sub + + Public Sub Run() + Dim dirToZip As String = "fodder" + Dim zipFileToCreate As String = "Archive.zip" + Dim opener As OpenDelegate = AddressOf MyStreamOpener + Dim closer As CloseDelegate = AddressOf MyStreamCloser + Dim numFilestoAdd As Int32 = 4 + Using zip As ZipFile = New ZipFile + Dim i As Integer + For i = 0 To numFilesToAdd - 1 + zip.AddEntry(String.Format("content-{0:000}.txt"), opener, closer) + Next i + zip.Save(zipFileToCreate) + End Using + End Sub + + + + + the name of the entry to add + + the delegate that will be invoked by ZipFile.Save() to get the + readable stream for the given entry. ZipFile.Save() will call + read on this stream to obtain the data for the entry. This data + will then be compressed and written to the newly created zip + file. + + + the delegate that will be invoked to close the stream. This may + be null (Nothing in VB), in which case no call is makde to close + the stream. + + the ZipEntry added + + + + + Updates the given entry in the ZipFile, using the given + string as content for the ZipEntry. + + + + + + Calling this method is equivalent to removing the ZipEntry for + the given file name and directory path, if it exists, and then calling + . See the documentation for + that method for further explanation. The string content is encoded + using the default encoding for the machine, or on Silverlight, using + UTF-8. This encoding is distinct from the encoding used for the + filename itself. See . + + + + + + The name, including any path, to use within the archive for the entry. + + + + The content of the file, should it be extracted from the zip. + + + The ZipEntry added. + + + + + Updates the given entry in the ZipFile, using the given string as + content for the ZipEntry. + + + + Calling this method is equivalent to removing the ZipEntry for the + given file name and directory path, if it exists, and then calling . See the + documentation for that method for further explanation. + + + + The name, including any path, to use within the archive for the entry. + + + + The content of the file, should it be extracted from the zip. + + + + The text encoding to use when encoding the string. Be aware: This is + distinct from the text encoding used to encode the filename. See . + + + The ZipEntry added. + + + + + Updates the given entry in the ZipFile, using the given delegate + as the source for content for the ZipEntry. + + + + Calling this method is equivalent to removing the ZipEntry for the + given file name and directory path, if it exists, and then calling . See the + documentation for that method for further explanation. + + + + The name, including any path, to use within the archive for the entry. + + + the delegate which will write the entry content. + + The ZipEntry added. + + + + + Updates the given entry in the ZipFile, using the given delegates + to open and close the stream that provides the content for the ZipEntry. + + + + Calling this method is equivalent to removing the ZipEntry for the + given file name and directory path, if it exists, and then calling . See the + documentation for that method for further explanation. + + + + The name, including any path, to use within the archive for the entry. + + + + the delegate that will be invoked to open the stream + + + the delegate that will be invoked to close the stream + + + The ZipEntry added or updated. + + + + + Updates the given entry in the ZipFile, using the given stream as + input, and the given filename and given directory Path. + + + + + Calling the method is equivalent to calling RemoveEntry() if an + entry by the same name already exists, and then calling AddEntry() + with the given fileName and stream. + + + + The stream must be open and readable during the call to + ZipFile.Save. You can dispense the stream on a just-in-time basis + using the property. Check the + documentation of that property for more information. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + + + The name, including any path, to use within the archive for the entry. + + + The input stream from which to read file data. + The ZipEntry added. + + + + Add an entry into the zip archive using the given filename and + directory path within the archive, and the given content for the + file. No file is created in the filesystem. + + + The data to use for the entry. + + + The name, including any path, to use within the archive for the entry. + + + The ZipEntry added. + + + + Updates the given entry in the ZipFile, using the given byte + array as content for the entry. + + + + Calling this method is equivalent to removing the ZipEntry + for the given filename and directory path, if it exists, and then + calling . See the + documentation for that method for further explanation. + + + + The name, including any path, to use within the archive for the entry. + + + The content to use for the ZipEntry. + + The ZipEntry added. + + + + + Adds the contents of a filesystem directory to a Zip file archive. + + + + + + The name of the directory may be a relative path or a fully-qualified + path. Any files within the named directory are added to the archive. Any + subdirectories within the named directory are also added to the archive, + recursively. + + + + Top-level entries in the named directory will appear as top-level entries + in the zip archive. Entries in subdirectories in the named directory will + result in entries in subdirectories in the zip archive. + + + + If you want the entries to appear in a containing directory in the zip + archive itself, then you should call the AddDirectory() overload that + allows you to explicitly specify a directory path for use in the archive. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + + + + + + This method has 2 overloads. + + The name of the directory to add. + The ZipEntry added. + + + + Adds the contents of a filesystem directory to a Zip file archive, + overriding the path to be used for entries in the archive. + + + + + The name of the directory may be a relative path or a fully-qualified + path. The add operation is recursive, so that any files or subdirectories + within the name directory are also added to the archive. + + + + Top-level entries in the named directory will appear as top-level entries + in the zip archive. Entries in subdirectories in the named directory will + result in entries in subdirectories in the zip archive. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + + + In this code, calling the ZipUp() method with a value of "c:\reports" for + the directory parameter will result in a zip file structure in which all + entries are contained in a toplevel "reports" directory. + + + + public void ZipUp(string targetZip, string directory) + { + using (var zip = new ZipFile()) + { + zip.AddDirectory(directory, System.IO.Path.GetFileName(directory)); + zip.Save(targetZip); + } + } + + + + + + + + The name of the directory to add. + + + Specifies a directory path to use to override any path in the + DirectoryName. This path may, or may not, correspond to a real directory + in the current filesystem. If the zip is later extracted, this is the + path used for the extracted file or directory. Passing null + (Nothing in VB) or the empty string ("") will insert the items at + the root path within the archive. + + + The ZipEntry added. + + + + Creates a directory in the zip archive. + + + + + + Use this when you want to create a directory in the archive but there is + no corresponding filesystem representation for that directory. + + + + You will probably not need to do this in your code. One of the only times + you will want to do this is if you want an empty directory in the zip + archive. The reason: if you add a file to a zip archive that is stored + within a multi-level directory, all of the directory tree is implicitly + created in the zip archive. + + + + + + The name of the directory to create in the archive. + + The ZipEntry added. + + + + Checks a zip file to see if its directory is consistent. + + + + + + In cases of data error, the directory within a zip file can get out + of synch with the entries in the zip file. This method checks the + given zip file and returns true if this has occurred. + + + This method may take a long time to run for large zip files. + + + This method is not supported in the Reduced or Compact Framework + versions of DotNetZip. + + + + Developers using COM can use the ComHelper.CheckZip(String) + method. + + + + + The filename to of the zip file to check. + + true if the named zip file checks OK. Otherwise, false. + + + + + + + Checks a zip file to see if its directory is consistent, + and optionally fixes the directory if necessary. + + + + + + In cases of data error, the directory within a zip file can get out of + synch with the entries in the zip file. This method checks the given + zip file, and returns true if this has occurred. It also optionally + fixes the zipfile, saving the fixed copy in Name_Fixed.zip. + + + + This method may take a long time to run for large zip files. It + will take even longer if the file actually needs to be fixed, and if + fixIfNecessary is true. + + + + This method is not supported in the Reduced or Compact + Framework versions of DotNetZip. + + + + + The filename to of the zip file to check. + + If true, the method will fix the zip file if + necessary. + + + a TextWriter in which messages generated while checking will be written. + + + true if the named zip is OK; false if the file needs to be fixed. + + + + + + + Rewrite the directory within a zipfile. + + + + + + In cases of data error, the directory in a zip file can get out of + synch with the entries in the zip file. This method attempts to fix + the zip file if this has occurred. + + + This can take a long time for large zip files. + + This won't work if the zip file uses a non-standard + code page - neither IBM437 nor UTF-8. + + + This method is not supported in the Reduced or Compact Framework + versions of DotNetZip. + + + + Developers using COM can use the ComHelper.FixZipDirectory(String) + method. + + + + + The filename to of the zip file to fix. + + + + + + + Verify the password on a zip file. + + + + + Keep in mind that passwords in zipfiles are applied to + zip entries, not to the entire zip file. So testing a + zipfile for a particular password doesn't work in the + general case. On the other hand, it's often the case + that a single password will be used on all entries in a + zip file. This method works for that case. + + + There is no way to check a password without doing the + decryption. So this code decrypts and extracts the given + zipfile into + + + + The filename to of the zip file to fix. + + The password to check. + + a bool indicating whether the password matches. + + + + Provides a human-readable string with information about the ZipFile. + + + + + The information string contains 10 lines or so, about each ZipEntry, + describing whether encryption is in use, the compressed and uncompressed + length of the entry, the offset of the entry, and so on. As a result the + information string can be very long for zip files that contain many + entries. + + + This information is mostly useful for diagnostic purposes. + + + + + + Indicates whether to perform a full scan of the zip file when reading it. + + + + + + You almost never want to use this property. + + + + When reading a zip file, if this flag is true (True in + VB), the entire zip archive will be scanned and searched for entries. + For large archives, this can take a very, long time. The much more + efficient default behavior is to read the zip directory, which is + stored at the end of the zip file. But, in some cases the directory is + corrupted and you need to perform a full scan of the zip file to + determine the contents of the zip file. This property lets you do + that, when necessary. + + + + This flag is effective only when calling . Normally you would read a ZipFile with the + static ZipFile.Read + method. But you can't set the FullScan property on the + ZipFile instance when you use a static factory method like + ZipFile.Read. + + + + + + + This example shows how to read a zip file using the full scan approach, + and then save it, thereby producing a corrected zip file. + + + using (var zip = new ZipFile()) + { + zip.FullScan = true; + zip.Initialize(zipFileName); + zip.Save(newName); + } + + + + Using zip As New ZipFile + zip.FullScan = True + zip.Initialize(zipFileName) + zip.Save(newName) + End Using + + + + + + + Whether to sort the ZipEntries before saving the file. + + + + The default is false. If you have a large number of zip entries, the sort + alone can consume significant time. + + + + + using (var zip = new ZipFile()) + { + zip.AddFiles(filesToAdd); + zip.SortEntriesBeforeSaving = true; + zip.Save(name); + } + + + + Using zip As New ZipFile + zip.AddFiles(filesToAdd) + zip.SortEntriesBeforeSaving = True + zip.Save(name) + End Using + + + + + + + Indicates whether NTFS Reparse Points, like junctions, should be + traversed during calls to AddDirectory(). + + + + By default, calls to AddDirectory() will traverse NTFS reparse + points, like mounted volumes, and directory junctions. An example + of a junction is the "My Music" directory in Windows Vista. In some + cases you may not want DotNetZip to traverse those directories. In + that case, set this property to false. + + + + + using (var zip = new ZipFile()) + { + zip.AddDirectoryWillTraverseReparsePoints = false; + zip.AddDirectory(dirToZip,"fodder"); + zip.Save(zipFileToCreate); + } + + + + + + Size of the IO buffer used while saving. + + + + + + First, let me say that you really don't need to bother with this. It is + here to allow for optimizations that you probably won't make! It will work + fine if you don't set or get this property at all. Ok? + + + + Now that we have that out of the way, the fine print: This + property affects the size of the buffer that is used for I/O for each + entry contained in the zip file. When a file is read in to be compressed, + it uses a buffer given by the size here. When you update a zip file, the + data for unmodified entries is copied from the first zip file to the + other, through a buffer given by the size here. + + + + Changing the buffer size affects a few things: first, for larger buffer + sizes, the memory used by the ZipFile, obviously, will be larger + during I/O operations. This may make operations faster for very much + larger files. Last, for any given entry, when you use a larger buffer + there will be fewer progress events during I/O operations, because there's + one progress event generated for each time the buffer is filled and then + emptied. + + + + The default buffer size is 8k. Increasing the buffer size may speed + things up as you compress larger files. But there are no hard-and-fast + rules here, eh? You won't know til you test it. And there will be a + limit where ever larger buffers actually slow things down. So as I said + in the beginning, it's probably best if you don't set or get this property + at all. + + + + + + This example shows how you might set a large buffer size for efficiency when + dealing with zip entries that are larger than 1gb. + + using (ZipFile zip = new ZipFile()) + { + zip.SaveProgress += this.zip1_SaveProgress; + zip.AddDirectory(directoryToZip, ""); + zip.UseZip64WhenSaving = Zip64Option.Always; + zip.BufferSize = 65536*8; // 65536 * 8 = 512k + zip.Save(ZipFileToCreate); + } + + + + + + Size of the work buffer to use for the ZLIB codec during compression. + + + + + When doing ZLIB or Deflate compression, the library fills a buffer, + then passes it to the compressor for compression. Then the library + reads out the compressed bytes. This happens repeatedly until there + is no more uncompressed data to compress. This property sets the + size of the buffer that will be used for chunk-wise compression. In + order for the setting to take effect, your application needs to set + this property before calling one of the ZipFile.Save() + overloads. + + + Setting this affects the performance and memory efficiency of + compression and decompression. For larger files, setting this to a + larger size may improve compression performance, but the exact + numbers vary depending on available memory, the size of the streams + you are compressing, and a bunch of other variables. I don't have + good firm recommendations on how to set it. You'll have to test it + yourself. Or just leave it alone and accept the default. + + + + + + Indicates whether extracted files should keep their paths as + stored in the zip archive. + + + + + This property affects Extraction. It is not used when creating zip + archives. + + + + With this property set to false, the default, extracting entries + from a zip file will create files in the filesystem that have the full + path associated to the entry within the zip file. With this property set + to true, extracting entries from the zip file results in files + with no path: the folders are "flattened." + + + + An example: suppose the zip file contains entries /directory1/file1.txt and + /directory2/file2.txt. With FlattenFoldersOnExtract set to false, + the files created will be \directory1\file1.txt and \directory2\file2.txt. + With the property set to true, the files created are file1.txt and file2.txt. + + + + + + + The compression strategy to use for all entries. + + + + Set the Strategy used by the ZLIB-compatible compressor, when + compressing entries using the DEFLATE method. Different compression + strategies work better on different sorts of data. The strategy + parameter can affect the compression ratio and the speed of + compression but not the correctness of the compresssion. For more + information see Ionic.Zlib.CompressionStrategy. + + + + + The name of the ZipFile, on disk. + + + + + + When the ZipFile instance was created by reading an archive using + one of the ZipFile.Read methods, this property represents the name + of the zip file that was read. When the ZipFile instance was + created by using the no-argument constructor, this value is null + (Nothing in VB). + + + + If you use the no-argument constructor, and you then explicitly set this + property, when you call , this name will + specify the name of the zip file created. Doing so is equivalent to + calling . When instantiating a + ZipFile by reading from a stream or byte array, the Name + property remains null. When saving to a stream, the Name + property is implicitly set to null. + + + + + + Sets the compression level to be used for entries subsequently added to + the zip archive. + + + + + Varying the compression level used on entries can affect the + size-vs-speed tradeoff when compression and decompressing data streams + or files. + + + + As with some other properties on the ZipFile class, like , , and , setting this property on a ZipFile + instance will cause the specified CompressionLevel to be used on all + items that are subsequently added to the + ZipFile instance. If you set this property after you have added + items to the ZipFile, but before you have called Save(), + those items will not use the specified compression level. + + + + If you do not set this property, the default compression level is used, + which normally gives a good balance of compression efficiency and + compression speed. In some tests, using BestCompression can + double the time it takes to compress, while delivering just a small + increase in compression efficiency. This behavior will vary with the + type of data you compress. If you are in doubt, just leave this setting + alone, and accept the default. + + + + + + The compression method for the zipfile. + + + + By default, the compression method is CompressionMethod.Deflate. + + + + + + + A comment attached to the zip archive. + + + + + + This property is read/write. It allows the application to specify a + comment for the ZipFile, or read the comment for the + ZipFile. After setting this property, changes are only made + permanent when you call a Save() method. + + + + According to PKWARE's + zip specification, the comment is not encrypted, even if there is a + password set on the zip file. + + + + The specification does not describe how to indicate the encoding used + on a comment string. Many "compliant" zip tools and libraries use + IBM437 as the code page for comments; DotNetZip, too, follows that + practice. On the other hand, there are situations where you want a + Comment to be encoded with something else, for example using code page + 950 "Big-5 Chinese". To fill that need, DotNetZip will encode the + comment following the same procedure it follows for encoding + filenames: (a) if is + Never, it uses the default encoding (IBM437). (b) if is Always, it always uses the + alternate encoding (). (c) if is AsNecessary, it uses the + alternate encoding only if the default encoding is not sufficient for + encoding the comment - in other words if decoding the result does not + produce the original string. This decision is taken at the time of + the call to ZipFile.Save(). + + + + When creating a zip archive using this library, it is possible to change + the value of between each + entry you add, and between adding entries and the call to + Save(). Don't do this. It will likely result in a zip file that is + not readable by any tool or application. For best interoperability, leave + alone, or specify it only + once, before adding any entries to the ZipFile instance. + + + + + + + Specifies whether the Creation, Access, and Modified times for entries + added to the zip file will be emitted in “Windows format” + when the zip archive is saved. + + + + + An application creating a zip archive can use this flag to explicitly + specify that the file times for the entries should or should not be stored + in the zip archive in the format used by Windows. By default this flag is + true, meaning the Windows-format times are stored in the zip + archive. + + + + When adding an entry from a file or directory, the Creation (), Access (), and Modified () times for the given entry are + automatically set from the filesystem values. When adding an entry from a + stream or string, all three values are implicitly set to + DateTime.Now. Applications can also explicitly set those times by + calling . + + + + PKWARE's + zip specification describes multiple ways to format these times in a + zip file. One is the format Windows applications normally use: 100ns ticks + since January 1, 1601 UTC. The other is a format Unix applications typically + use: seconds since January 1, 1970 UTC. Each format can be stored in an + "extra field" in the zip entry when saving the zip archive. The former + uses an extra field with a Header Id of 0x000A, while the latter uses a + header ID of 0x5455, although you probably don't need to know that. + + + + Not all tools and libraries can interpret these fields. Windows + compressed folders is one that can read the Windows Format timestamps, + while I believe the Infozip + tools can read the Unix format timestamps. Some tools and libraries + may be able to read only one or the other. DotNetZip can read or write + times in either or both formats. + + + + The times stored are taken from , , and . + + + + The value set here applies to all entries subsequently added to the + ZipFile. + + + + This property is not mutually exclusive of the property. It is possible and + legal and valid to produce a zip file that contains timestamps encoded in + the Unix format as well as in the Windows format, in addition to the LastModified time attached to each + entry in the archive, a time that is always stored in "DOS format". And, + notwithstanding the names PKWare uses for these time formats, any of them + can be read and written by any computer, on any operating system. But, + there are no guarantees that a program running on Mac or Linux will + gracefully handle a zip file with "Windows" formatted times, or that an + application that does not use DotNetZip but runs on Windows will be able to + handle file times in Unix format. + + + + When in doubt, test. Sorry, I haven't got a complete list of tools and + which sort of timestamps they can use and will tolerate. If you get any + good information and would like to pass it on, please do so and I will + include that information in this documentation. + + + + + This example shows how to save a zip file that contains file timestamps + in a format normally used by Unix. + + using (var zip = new ZipFile()) + { + // produce a zip file the Mac will like + zip.EmitTimesInWindowsFormatWhenSaving = false; + zip.EmitTimesInUnixFormatWhenSaving = true; + zip.AddDirectory(directoryToZip, "files"); + zip.Save(outputFile); + } + + + + Using zip As New ZipFile + '' produce a zip file the Mac will like + zip.EmitTimesInWindowsFormatWhenSaving = False + zip.EmitTimesInUnixFormatWhenSaving = True + zip.AddDirectory(directoryToZip, "files") + zip.Save(outputFile) + End Using + + + + + + + + + Specifies whether the Creation, Access, and Modified times + for entries added to the zip file will be emitted in "Unix(tm) + format" when the zip archive is saved. + + + + + An application creating a zip archive can use this flag to explicitly + specify that the file times for the entries should or should not be stored + in the zip archive in the format used by Unix. By default this flag is + false, meaning the Unix-format times are not stored in the zip + archive. + + + + When adding an entry from a file or directory, the Creation (), Access (), and Modified () times for the given entry are + automatically set from the filesystem values. When adding an entry from a + stream or string, all three values are implicitly set to DateTime.Now. + Applications can also explicitly set those times by calling . + + + + PKWARE's + zip specification describes multiple ways to format these times in a + zip file. One is the format Windows applications normally use: 100ns ticks + since January 1, 1601 UTC. The other is a format Unix applications + typically use: seconds since January 1, 1970 UTC. Each format can be + stored in an "extra field" in the zip entry when saving the zip + archive. The former uses an extra field with a Header Id of 0x000A, while + the latter uses a header ID of 0x5455, although you probably don't need to + know that. + + + + Not all tools and libraries can interpret these fields. Windows + compressed folders is one that can read the Windows Format timestamps, + while I believe the Infozip + tools can read the Unix format timestamps. Some tools and libraries may be + able to read only one or the other. DotNetZip can read or write times in + either or both formats. + + + + The times stored are taken from , , and . + + + + This property is not mutually exclusive of the property. It is possible and + legal and valid to produce a zip file that contains timestamps encoded in + the Unix format as well as in the Windows format, in addition to the LastModified time attached to each + entry in the zip archive, a time that is always stored in "DOS + format". And, notwithstanding the names PKWare uses for these time + formats, any of them can be read and written by any computer, on any + operating system. But, there are no guarantees that a program running on + Mac or Linux will gracefully handle a zip file with "Windows" formatted + times, or that an application that does not use DotNetZip but runs on + Windows will be able to handle file times in Unix format. + + + + When in doubt, test. Sorry, I haven't got a complete list of tools and + which sort of timestamps they can use and will tolerate. If you get any + good information and would like to pass it on, please do so and I will + include that information in this documentation. + + + + + + + + + Indicates whether verbose output is sent to the during AddXxx() and + ReadXxx() operations. + + + + This is a synthetic property. It returns true if the is non-null. + + + + + Returns true if an entry by the given name exists in the ZipFile. + + + the name of the entry to find + true if an entry with the given name exists; otherwise false. + + + + + Indicates whether to perform case-sensitive matching on the filename when + retrieving entries in the zipfile via the string-based indexer. + + + + The default value is false, which means don't do case-sensitive + matching. In other words, retrieving zip["ReadMe.Txt"] is the same as + zip["readme.txt"]. It really makes sense to set this to true only + if you are not running on Windows, which has case-insensitive + filenames. But since this library is not built for non-Windows platforms, + in most cases you should just leave this property alone. + + + + + Indicates whether to encode entry filenames and entry comments using Unicode + (UTF-8). + + + + + The + PKWare zip specification provides for encoding file names and file + comments in either the IBM437 code page, or in UTF-8. This flag selects + the encoding according to that specification. By default, this flag is + false, and filenames and comments are encoded into the zip file in the + IBM437 codepage. Setting this flag to true will specify that filenames + and comments that cannot be encoded with IBM437 will be encoded with + UTF-8. + + + + Zip files created with strict adherence to the PKWare specification with + respect to UTF-8 encoding can contain entries with filenames containing + any combination of Unicode characters, including the full range of + characters from Chinese, Latin, Hebrew, Greek, Cyrillic, and many other + alphabets. However, because at this time, the UTF-8 portion of the PKWare + specification is not broadly supported by other zip libraries and + utilities, such zip files may not be readable by your favorite zip tool or + archiver. In other words, interoperability will decrease if you set this + flag to true. + + + + In particular, Zip files created with strict adherence to the PKWare + specification with respect to UTF-8 encoding will not work well with + Explorer in Windows XP or Windows Vista, because Windows compressed + folders, as far as I know, do not support UTF-8 in zip files. Vista can + read the zip files, but shows the filenames incorrectly. Unpacking from + Windows Vista Explorer will result in filenames that have rubbish + characters in place of the high-order UTF-8 bytes. + + + + Also, zip files that use UTF-8 encoding will not work well with Java + applications that use the java.util.zip classes, as of v5.0 of the Java + runtime. The Java runtime does not correctly implement the PKWare + specification in this regard. + + + + As a result, we have the unfortunate situation that "correct" behavior by + the DotNetZip library with regard to Unicode encoding of filenames during + zip creation will result in zip files that are readable by strictly + compliant and current tools (for example the most recent release of the + commercial WinZip tool); but these zip files will not be readable by + various other tools or libraries, including Windows Explorer. + + + + The DotNetZip library can read and write zip files with UTF8-encoded + entries, according to the PKware spec. If you use DotNetZip for both + creating and reading the zip file, and you use UTF-8, there will be no + loss of information in the filenames. For example, using a self-extractor + created by this library will allow you to unpack files correctly with no + loss of information in the filenames. + + + + If you do not set this flag, it will remain false. If this flag is false, + your ZipFile will encode all filenames and comments using the + IBM437 codepage. This can cause "loss of information" on some filenames, + but the resulting zipfile will be more interoperable with other + utilities. As an example of the loss of information, diacritics can be + lost. The o-tilde character will be down-coded to plain o. The c with a + cedilla (Unicode 0xE7) used in Portugese will be downcoded to a c. + Likewise, the O-stroke character (Unicode 248), used in Danish and + Norwegian, will be down-coded to plain o. Chinese characters cannot be + represented in codepage IBM437; when using the default encoding, Chinese + characters in filenames will be represented as ?. These are all examples + of "information loss". + + + + The loss of information associated to the use of the IBM437 encoding is + inconvenient, and can also lead to runtime errors. For example, using + IBM437, any sequence of 4 Chinese characters will be encoded as ????. If + your application creates a ZipFile, then adds two files, each with + names of four Chinese characters each, this will result in a duplicate + filename exception. In the case where you add a single file with a name + containing four Chinese characters, calling Extract() on the entry that + has question marks in the filename will result in an exception, because + the question mark is not legal for use within filenames on Windows. These + are just a few examples of the problems associated to loss of information. + + + + This flag is independent of the encoding of the content within the entries + in the zip file. Think of the zip file as a container - it supports an + encoding. Within the container are other "containers" - the file entries + themselves. The encoding within those entries is independent of the + encoding of the zip archive container for those entries. + + + + Rather than specify the encoding in a binary fashion using this flag, an + application can specify an arbitrary encoding via the property. Setting the encoding + explicitly when creating zip archives will result in non-compliant zip + files that, curiously, are fairly interoperable. The challenge is, the + PKWare specification does not provide for a way to specify that an entry + in a zip archive uses a code page that is neither IBM437 nor UTF-8. + Therefore if you set the encoding explicitly when creating a zip archive, + you must take care upon reading the zip archive to use the same code page. + If you get it wrong, the behavior is undefined and may result in incorrect + filenames, exceptions, stomach upset, hair loss, and acne. + + + + + + + Specify whether to use ZIP64 extensions when saving a zip archive. + + + + + + When creating a zip file, the default value for the property is . is + safest, in the sense that you will not get an Exception if a pre-ZIP64 + limit is exceeded. + + + + You may set the property at any time before calling Save(). + + + + When reading a zip file via the Zipfile.Read() method, DotNetZip + will properly read ZIP64-endowed zip archives, regardless of the value of + this property. DotNetZip will always read ZIP64 archives. This property + governs only whether DotNetZip will write them. Therefore, when updating + archives, be careful about setting this property after reading an archive + that may use ZIP64 extensions. + + + + An interesting question is, if you have set this property to + AsNecessary, and then successfully saved, does the resulting + archive use ZIP64 extensions or not? To learn this, check the property, after calling Save(). + + + + Have you thought about + donating? + + + + + + + + Indicates whether the archive requires ZIP64 extensions. + + + + + + This property is null (or Nothing in VB) if the archive has + not been saved, and there are fewer than 65334 ZipEntry items + contained in the archive. + + + + The Value is true if any of the following four conditions holds: + the uncompressed size of any entry is larger than 0xFFFFFFFF; the + compressed size of any entry is larger than 0xFFFFFFFF; the relative + offset of any entry within the zip archive is larger than 0xFFFFFFFF; or + there are more than 65534 entries in the archive. (0xFFFFFFFF = + 4,294,967,295). The result may not be known until a Save() is attempted + on the zip archive. The Value of this + property may be set only AFTER one of the Save() methods has been called. + + + + If none of the four conditions holds, and the archive has been saved, then + the Value is false. + + + + A Value of false does not indicate that the zip archive, as saved, + does not use ZIP64. It merely indicates that ZIP64 is not required. An + archive may use ZIP64 even when not required if the property is set to , or if the property is set to and the output stream was not + seekable. Use the property to determine if + the most recent Save() method resulted in an archive that utilized + the ZIP64 extensions. + + + + + + + + + Indicates whether the most recent Save() operation used ZIP64 extensions. + + + + + The use of ZIP64 extensions within an archive is not always necessary, and + for interoperability concerns, it may be desired to NOT use ZIP64 if + possible. The property can be + set to use ZIP64 extensions only when necessary. In those cases, + Sometimes applications want to know whether a Save() actually used ZIP64 + extensions. Applications can query this read-only property to learn + whether ZIP64 has been used in a just-saved ZipFile. + + + + The value is null (or Nothing in VB) if the archive has not + been saved. + + + + Non-null values (HasValue is true) indicate whether ZIP64 + extensions were used during the most recent Save() operation. The + ZIP64 extensions may have been used as required by any particular entry + because of its uncompressed or compressed size, or because the archive is + larger than 4294967295 bytes, or because there are more than 65534 entries + in the archive, or because the UseZip64WhenSaving property was set + to , or because the + UseZip64WhenSaving property was set to and the output stream was not seekable. + The value of this property does not indicate the reason the ZIP64 + extensions were used. + + + + + + + + + Indicates whether the most recent Read() operation read a zip file that uses + ZIP64 extensions. + + + + This property will return null (Nothing in VB) if you've added an entry after reading + the zip file. + + + + + The text encoding to use when writing new entries to the ZipFile, + for those entries that cannot be encoded with the default (IBM437) + encoding; or, the text encoding that was used when reading the entries + from the ZipFile. + + + + + In its + zip specification, PKWare describes two options for encoding + filenames and comments: using IBM437 or UTF-8. But, some archiving tools + or libraries do not follow the specification, and instead encode + characters using the system default code page. For example, WinRAR when + run on a machine in Shanghai may encode filenames with the Big-5 Chinese + (950) code page. This behavior is contrary to the Zip specification, but + it occurs anyway. + + + + When using DotNetZip to write zip archives that will be read by one of + these other archivers, set this property to specify the code page to use + when encoding the and for each ZipEntry in the zip file, for + values that cannot be encoded with the default codepage for zip files, + IBM437. This is why this property is "provisional". In all cases, IBM437 + is used where possible, in other words, where no loss of data would + result. It is possible, therefore, to have a given entry with a + Comment encoded in IBM437 and a FileName encoded with the + specified "provisional" codepage. + + + + Be aware that a zip file created after you've explicitly set the property to a value other than + IBM437 may not be compliant to the PKWare specification, and may not be + readable by compliant archivers. On the other hand, many (most?) + archivers are non-compliant and can read zip files created in arbitrary + code pages. The trick is to use or specify the proper codepage when + reading the zip. + + + + When creating a zip archive using this library, it is possible to change + the value of between each + entry you add, and between adding entries and the call to + Save(). Don't do this. It will likely result in a zipfile that is + not readable. For best interoperability, either leave alone, or specify it only once, + before adding any entries to the ZipFile instance. There is one + exception to this recommendation, described later. + + + + When using an arbitrary, non-UTF8 code page for encoding, there is no + standard way for the creator application - whether DotNetZip, WinZip, + WinRar, or something else - to formally specify in the zip file which + codepage has been used for the entries. As a result, readers of zip files + are not able to inspect the zip file and determine the codepage that was + used for the entries contained within it. It is left to the application + or user to determine the necessary codepage when reading zip files encoded + this way. In other words, if you explicitly specify the codepage when you + create the zipfile, you must explicitly specify the same codepage when + reading the zipfile. + + + + The way you specify the code page to use when reading a zip file varies + depending on the tool or library you use to read the zip. In DotNetZip, + you use a ZipFile.Read() method that accepts an encoding parameter. It + isn't possible with Windows Explorer, as far as I know, to specify an + explicit codepage to use when reading a zip. If you use an incorrect + codepage when reading a zipfile, you will get entries with filenames that + are incorrect, and the incorrect filenames may even contain characters + that are not legal for use within filenames in Windows. Extracting entries + with illegal characters in the filenames will lead to exceptions. It's too + bad, but this is just the way things are with code pages in zip + files. Caveat Emptor. + + + + Example: Suppose you create a zipfile that contains entries with + filenames that have Danish characters. If you use equal to "iso-8859-1" (cp 28591), + the filenames will be correctly encoded in the zip. But, to read that + zipfile correctly, you have to specify the same codepage at the time you + read it. If try to read that zip file with Windows Explorer or another + application that is not flexible with respect to the codepage used to + decode filenames in zipfiles, you will get a filename like "Inf�.txt". + + + + When using DotNetZip to read a zip archive, and the zip archive uses an + arbitrary code page, you must specify the encoding to use before or when + the Zipfile is READ. This means you must use a ZipFile.Read() + method that allows you to specify a System.Text.Encoding parameter. Setting + the ProvisionalAlternateEncoding property after your application has read in + the zip archive will not affect the entry names of entries that have already + been read in. + + + + And now, the exception to the rule described above. One strategy for + specifying the code page for a given zip file is to describe the code page + in a human-readable form in the Zip comment. For example, the comment may + read "Entries in this archive are encoded in the Big5 code page". For + maximum interoperability, the zip comment in this case should be encoded + in the default, IBM437 code page. In this case, the zip comment is + encoded using a different page than the filenames. To do this, Specify + ProvisionalAlternateEncoding to your desired region-specific code + page, once before adding any entries, and then reset + ProvisionalAlternateEncoding to IBM437 before setting the property and calling Save(). + + + + + This example shows how to read a zip file using the Big-5 Chinese code page + (950), and extract each entry in the zip file. For this code to work as + desired, the Zipfile must have been created using the big5 code page + (CP950). This is typical, for example, when using WinRar on a machine with + CP950 set as the default code page. In that case, the names of entries + within the Zip archive will be stored in that code page, and reading the zip + archive must be done using that code page. If the application did not use + the correct code page in ZipFile.Read(), then names of entries within the + zip archive would not be correctly retrieved. + + using (var zip = ZipFile.Read(zipFileName, System.Text.Encoding.GetEncoding("big5"))) + { + // retrieve and extract an entry using a name encoded with CP950 + zip[MyDesiredEntry].Extract("unpack"); + } + + + + Using zip As ZipFile = ZipFile.Read(ZipToExtract, System.Text.Encoding.GetEncoding("big5")) + ' retrieve and extract an entry using a name encoded with CP950 + zip(MyDesiredEntry).Extract("unpack") + End Using + + + + DefaultEncoding + + + + A Text Encoding to use when encoding the filenames and comments for + all the ZipEntry items, during a ZipFile.Save() operation. + + + + Whether the encoding specified here is used during the save depends + on . + + + + + + A flag that tells if and when this instance should apply + AlternateEncoding to encode the filenames and comments associated to + of ZipEntry objects contained within this instance. + + + + + The default text encoding used in zip archives. It is numeric 437, also + known as IBM437. + + + + + + Gets or sets the TextWriter to which status messages are delivered + for the instance. + + + + If the TextWriter is set to a non-null value, then verbose output is sent + to the TextWriter during Add, Read, Save and + Extract operations. Typically, console applications might use + Console.Out and graphical or headless applications might use a + System.IO.StringWriter. The output of this is suitable for viewing + by humans. + + + + + In this example, a console application instantiates a ZipFile, then + sets the StatusMessageTextWriter to Console.Out. At that + point, all verbose status messages for that ZipFile are sent to the + console. + + + + using (ZipFile zip= ZipFile.Read(FilePath)) + { + zip.StatusMessageTextWriter= System.Console.Out; + // messages are sent to the console during extraction + zip.ExtractAll(); + } + + + + Using zip As ZipFile = ZipFile.Read(FilePath) + zip.StatusMessageTextWriter= System.Console.Out + 'Status Messages will be sent to the console during extraction + zip.ExtractAll() + End Using + + + + In this example, a Windows Forms application instantiates a + ZipFile, then sets the StatusMessageTextWriter to a + StringWriter. At that point, all verbose status messages for that + ZipFile are sent to the StringWriter. + + + + var sw = new System.IO.StringWriter(); + using (ZipFile zip= ZipFile.Read(FilePath)) + { + zip.StatusMessageTextWriter= sw; + zip.ExtractAll(); + } + Console.WriteLine("{0}", sw.ToString()); + + + + Dim sw as New System.IO.StringWriter + Using zip As ZipFile = ZipFile.Read(FilePath) + zip.StatusMessageTextWriter= sw + zip.ExtractAll() + End Using + 'Status Messages are now available in sw + + + + + + + Gets or sets the name for the folder to store the temporary file + this library writes when saving a zip archive. + + + + + This library will create a temporary file when saving a Zip archive to a + file. This file is written when calling one of the Save() methods + that does not save to a stream, or one of the SaveSelfExtractor() + methods. + + + + By default, the library will create the temporary file in the directory + specified for the file itself, via the property or via + the method. + + + + Setting this property allows applications to override this default + behavior, so that the library will create the temporary file in the + specified folder. For example, to have the library create the temporary + file in the current working directory, regardless where the ZipFile + is saved, specfy ".". To revert to the default behavior, set this + property to null (Nothing in VB). + + + + When setting the property to a non-null value, the folder specified must + exist; if it does not an exception is thrown. The application should have + write and delete permissions on the folder. The permissions are not + explicitly checked ahead of time; if the application does not have the + appropriate rights, an exception will be thrown at the time Save() + is called. + + + + There is no temporary file created when reading a zip archive. When + saving to a Stream, there is no temporary file created. For example, if + the application is an ASP.NET application and calls Save() + specifying the Response.OutputStream as the output stream, there is + no temporary file created. + + + + + Thrown when setting the property if the directory does not exist. + + + + + + Sets the password to be used on the ZipFile instance. + + + + + + When writing a zip archive, this password is applied to the entries, not + to the zip archive itself. It applies to any ZipEntry subsequently + added to the ZipFile, using one of the AddFile, + AddDirectory, AddEntry, or AddItem methods, etc. + When reading a zip archive, this property applies to any entry + subsequently extracted from the ZipFile using one of the Extract + methods on the ZipFile class. + + + + When writing a zip archive, keep this in mind: though the password is set + on the ZipFile object, according to the Zip spec, the "directory" of the + archive - in other words the list of entries or files contained in the archive - is + not encrypted with the password, or protected in any way. If you set the + Password property, the password actually applies to individual entries + that are added to the archive, subsequent to the setting of this property. + The list of filenames in the archive that is eventually created will + appear in clear text, but the contents of the individual files are + encrypted. This is how Zip encryption works. + + + + One simple way around this limitation is to simply double-wrap sensitive + filenames: Store the files in a zip file, and then store that zip file + within a second, "outer" zip file. If you apply a password to the outer + zip file, then readers will be able to see that the outer zip file + contains an inner zip file. But readers will not be able to read the + directory or file list of the inner zip file. + + + + If you set the password on the ZipFile, and then add a set of files + to the archive, then each entry is encrypted with that password. You may + also want to change the password between adding different entries. If you + set the password, add an entry, then set the password to null + (Nothing in VB), and add another entry, the first entry is + encrypted and the second is not. If you call AddFile(), then set + the Password property, then call ZipFile.Save, the file + added will not be password-protected, and no warning will be generated. + + + + When setting the Password, you may also want to explicitly set the property, to specify how to encrypt the entries added + to the ZipFile. If you set the Password to a non-null value and do not + set , then PKZip 2.0 ("Weak") encryption is used. + This encryption is relatively weak but is very interoperable. If you set + the password to a null value (Nothing in VB), Encryption is + reset to None. + + + + All of the preceding applies to writing zip archives, in other words when + you use one of the Save methods. To use this property when reading or an + existing ZipFile, do the following: set the Password property on the + ZipFile, then call one of the Extract() overloads on the . In this case, the entry is extracted using the + Password that is specified on the ZipFile instance. If you + have not set the Password property, then the password is + null, and the entry is extracted with no password. + + + + If you set the Password property on the ZipFile, then call + Extract() an entry that has not been encrypted with a password, the + password is not used for that entry, and the ZipEntry is extracted + as normal. In other words, the password is used only if necessary. + + + + The class also has a Password property. It takes precedence + over this property on the ZipFile. Typically, you would use the + per-entry Password when most entries in the zip archive use one password, + and a few entries use a different password. If all entries in the zip + file use the same password, then it is simpler to just set this property + on the ZipFile itself, whether creating a zip archive or extracting + a zip archive. + + + + + + + This example creates a zip file, using password protection for the + entries, and then extracts the entries from the zip file. When creating + the zip file, the Readme.txt file is not protected with a password, but + the other two are password-protected as they are saved. During extraction, + each file is extracted with the appropriate password. + + + // create a file with encryption + using (ZipFile zip = new ZipFile()) + { + zip.AddFile("ReadMe.txt"); + zip.Password= "!Secret1"; + zip.AddFile("MapToTheSite-7440-N49th.png"); + zip.AddFile("2008-Regional-Sales-Report.pdf"); + zip.Save("EncryptedArchive.zip"); + } + + // extract entries that use encryption + using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) + { + zip.Password= "!Secret1"; + zip.ExtractAll("extractDir"); + } + + + + + Using zip As New ZipFile + zip.AddFile("ReadMe.txt") + zip.Password = "123456!" + zip.AddFile("MapToTheSite-7440-N49th.png") + zip.Password= "!Secret1"; + zip.AddFile("2008-Regional-Sales-Report.pdf") + zip.Save("EncryptedArchive.zip") + End Using + + + ' extract entries that use encryption + Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) + zip.Password= "!Secret1" + zip.ExtractAll("extractDir") + End Using + + + + + + ZipFile.Encryption + ZipEntry.Password + + + + The action the library should take when extracting a file that already + exists. + + + + + This property affects the behavior of the Extract methods (one of the + Extract() or ExtractWithPassword() overloads), when + extraction would would overwrite an existing filesystem file. If you do + not set this property, the library throws an exception when extracting an + entry would overwrite an existing file. + + + + This property has no effect when extracting to a stream, or when the file + to be extracted does not already exist. + + + + + + + The action the library should take when an error is encountered while + opening or reading files as they are saved into a zip archive. + + + + + Errors can occur as a file is being saved to the zip archive. For + example, the File.Open may fail, or a File.Read may fail, because of + lock conflicts or other reasons. + + + + The first problem might occur after having called AddDirectory() on a + directory that contains a Clipper .dbf file; the file is locked by + Clipper and cannot be opened for read by another process. An example of + the second problem might occur when trying to zip a .pst file that is in + use by Microsoft Outlook. Outlook locks a range on the file, which allows + other processes to open the file, but not read it in its entirety. + + + + This property tells DotNetZip what you would like to do in the case of + these errors. The primary options are: ZipErrorAction.Throw to + throw an exception (this is the default behavior if you don't set this + property); ZipErrorAction.Skip to Skip the file for which there + was an error and continue saving; ZipErrorAction.Retry to Retry + the entry that caused the problem; or + ZipErrorAction.InvokeErrorEvent to invoke an event handler. + + + + This property is implicitly set to ZipErrorAction.InvokeErrorEvent + if you add a handler to the event. If you set + this property to something other than + ZipErrorAction.InvokeErrorEvent, then the ZipError + event is implicitly cleared. What it means is you can set one or the + other (or neither), depending on what you want, but you never need to set + both. + + + + As with some other properties on the ZipFile class, like , , and , setting this property on a ZipFile + instance will cause the specified ZipErrorAction to be used on all + items that are subsequently added to the + ZipFile instance. If you set this property after you have added + items to the ZipFile, but before you have called Save(), + those items will not use the specified error handling action. + + + + If you want to handle any errors that occur with any entry in the zip + file in the same way, then set this property once, before adding any + entries to the zip archive. + + + + If you set this property to ZipErrorAction.Skip and you'd like to + learn which files may have been skipped after a Save(), you can + set the on the ZipFile before + calling Save(). A message will be emitted into that writer for + each skipped file, if any. + + + + + + This example shows how to tell DotNetZip to skip any files for which an + error is generated during the Save(). + + Public Sub SaveZipFile() + Dim SourceFolder As String = "fodder" + Dim DestFile As String = "eHandler.zip" + Dim sw as New StringWriter + Using zipArchive As ZipFile = New ZipFile + ' Tell DotNetZip to skip any files for which it encounters an error + zipArchive.ZipErrorAction = ZipErrorAction.Skip + zipArchive.StatusMessageTextWriter = sw + zipArchive.AddDirectory(SourceFolder) + zipArchive.Save(DestFile) + End Using + ' examine sw here to see any messages + End Sub + + + + + + + + + + The Encryption to use for entries added to the ZipFile. + + + + + Set this when creating a zip archive, or when updating a zip archive. The + specified Encryption is applied to the entries subsequently added to the + ZipFile instance. Applications do not need to set the + Encryption property when reading or extracting a zip archive. + + + + If you set this to something other than EncryptionAlgorithm.None, you + will also need to set the . + + + + As with some other properties on the ZipFile class, like and , setting this + property on a ZipFile instance will cause the specified + EncryptionAlgorithm to be used on all items + that are subsequently added to the ZipFile instance. In other + words, if you set this property after you have added items to the + ZipFile, but before you have called Save(), those items will + not be encrypted or protected with a password in the resulting zip + archive. To get a zip archive with encrypted entries, set this property, + along with the property, before calling + AddFile, AddItem, or AddDirectory (etc.) on the + ZipFile instance. + + + + If you read a ZipFile, you can modify the Encryption on an + encrypted entry, only by setting the Encryption property on the + ZipEntry itself. Setting the Encryption property on the + ZipFile, once it has been created via a call to + ZipFile.Read(), does not affect entries that were previously read. + + + + For example, suppose you read a ZipFile, and there is an encrypted + entry. Setting the Encryption property on that ZipFile and + then calling Save() on the ZipFile does not update the + Encryption used for the entries in the archive. Neither is an + exception thrown. Instead, what happens during the Save() is that + all previously existing entries are copied through to the new zip archive, + with whatever encryption and password that was used when originally + creating the zip archive. Upon re-reading that archive, to extract + entries, applications should use the original password or passwords, if + any. + + + + Suppose an application reads a ZipFile, and there is an encrypted + entry. Setting the Encryption property on that ZipFile and + then adding new entries (via AddFile(), AddEntry(), etc) + and then calling Save() on the ZipFile does not update the + Encryption on any of the entries that had previously been in the + ZipFile. The Encryption property applies only to the + newly-added entries. + + + + + + + This example creates a zip archive that uses encryption, and then extracts + entries from the archive. When creating the zip archive, the ReadMe.txt + file is zipped without using a password or encryption. The other files + use encryption. + + + + // Create a zip archive with AES Encryption. + using (ZipFile zip = new ZipFile()) + { + zip.AddFile("ReadMe.txt"); + zip.Encryption= EncryptionAlgorithm.WinZipAes256; + zip.Password= "Top.Secret.No.Peeking!"; + zip.AddFile("7440-N49th.png"); + zip.AddFile("2008-Regional-Sales-Report.pdf"); + zip.Save("EncryptedArchive.zip"); + } + + // Extract a zip archive that uses AES Encryption. + // You do not need to specify the algorithm during extraction. + using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) + { + zip.Password= "Top.Secret.No.Peeking!"; + zip.ExtractAll("extractDirectory"); + } + + + + ' Create a zip that uses Encryption. + Using zip As New ZipFile() + zip.Encryption= EncryptionAlgorithm.WinZipAes256 + zip.Password= "Top.Secret.No.Peeking!" + zip.AddFile("ReadMe.txt") + zip.AddFile("7440-N49th.png") + zip.AddFile("2008-Regional-Sales-Report.pdf") + zip.Save("EncryptedArchive.zip") + End Using + + ' Extract a zip archive that uses AES Encryption. + ' You do not need to specify the algorithm during extraction. + Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) + zip.Password= "Top.Secret.No.Peeking!" + zip.ExtractAll("extractDirectory") + End Using + + + + + ZipFile.Password + ZipEntry.Encryption + + + + A callback that allows the application to specify the compression level + to use for entries subsequently added to the zip archive. + + + + + + With this callback, the DotNetZip library allows the application to + determine whether compression will be used, at the time of the + Save. This may be useful if the application wants to favor + speed over size, and wants to defer the decision until the time of + Save. + + + + Typically applications set the property on + the ZipFile or on each ZipEntry to determine the level of + compression used. This is done at the time the entry is added to the + ZipFile. Setting the property to + Ionic.Zlib.CompressionLevel.None means no compression will be used. + + + + This callback allows the application to defer the decision on the + CompressionLevel to use, until the time of the call to + ZipFile.Save(). The callback is invoked once per ZipEntry, + at the time the data for the entry is being written out as part of a + Save() operation. The application can use whatever criteria it + likes in determining the level to return. For example, an application may + wish that no .mp3 files should be compressed, because they are already + compressed and the extra compression is not worth the CPU time incurred, + and so can return None for all .mp3 entries. + + + + The library determines whether compression will be attempted for an entry + this way: If the entry is a zero length file, or a directory, no + compression is used. Otherwise, if this callback is set, it is invoked + and the CompressionLevel is set to the return value. If this + callback has not been set, then the previously set value for + CompressionLevel is used. + + + + + + + The maximum size of an output segment, when saving a split Zip file. + + + + Set this to a non-zero value before calling or to specify that the ZipFile should be saved as a + split archive, also sometimes called a spanned archive. Some also + call them multi-file archives. + + + + A split zip archive is saved in a set of discrete filesystem files, + rather than in a single file. This is handy when transmitting the + archive in email or some other mechanism that has a limit to the size of + each file. The first file in a split archive will be named + basename.z01, the second will be named basename.z02, and + so on. The final file is named basename.zip. According to the zip + specification from PKWare, the minimum value is 65536, for a 64k segment + size. The maximum number of segments allows in a split archive is 99. + + + + The value of this property determines the maximum size of a split + segment when writing a split archive. For example, suppose you have a + ZipFile that would save to a single file of 200k. If you set the + MaxOutputSegmentSize to 65536 before calling Save(), you + will get four distinct output files. On the other hand if you set this + property to 256k, then you will get a single-file archive for that + ZipFile. + + + + The size of each split output file will be as large as possible, up to + the maximum size set here. The zip specification requires that some data + fields in a zip archive may not span a split boundary, and an output + segment may be smaller than the maximum if necessary to avoid that + problem. Also, obviously the final segment of the archive may be smaller + than the maximum segment size. Segments will never be larger than the + value set with this property. + + + + You can save a split Zip file only when saving to a regular filesystem + file. It's not possible to save a split zip file as a self-extracting + archive, nor is it possible to save a split zip file to a stream. When + saving to a SFX or to a Stream, this property is ignored. + + + + About interoperability: Split or spanned zip files produced by DotNetZip + can be read by WinZip or PKZip, and vice-versa. Segmented zip files may + not be readable by other tools, if those other tools don't support zip + spanning or splitting. When in doubt, test. I don't believe Windows + Explorer can extract a split archive. + + + + This property has no effect when reading a split archive. You can read + a split archive in the normal way with DotNetZip. + + + + When saving a zip file, if you want a regular zip file rather than a + split zip file, don't set this property, or set it to Zero. + + + + If you read a split archive, with and + then subsequently call ZipFile.Save(), unless you set this + property before calling Save(), you will get a normal, + single-file archive. + + + + + + + + Returns the number of segments used in the most recent Save() operation. + + + + This is normally zero, unless you have set the property. If you have set , and then you save a file, after the call to + Save() completes, you can read this value to learn the number of segments that + were created. + + + If you call Save("Archive.zip"), and it creates 5 segments, then you + will have filesystem files named Archive.z01, Archive.z02, Archive.z03, + Archive.z04, and Archive.zip, and the value of this property will be 5. + + + + + + + The size threshold for an entry, above which a parallel deflate is used. + + + + + + DotNetZip will use multiple threads to compress any ZipEntry, + if the entry is larger than the given size. Zero means "always + use parallel deflate", while -1 means "never use parallel + deflate". The default value for this property is 512k. Aside + from the special values of 0 and 1, the minimum value is 65536. + + + + If the entry size cannot be known before compression, as with a + read-forward stream, then Parallel deflate will never be + performed, unless the value of this property is zero. + + + + A parallel deflate operations will speed up the compression of + large files, on computers with multiple CPUs or multiple CPU + cores. For files above 1mb, on a dual core or dual-cpu (2p) + machine, the time required to compress the file can be 70% of the + single-threaded deflate. For very large files on 4p machines the + compression can be done in 30% of the normal time. The downside + is that parallel deflate consumes extra memory during the deflate, + and the deflation is not as effective. + + + + Parallel deflate tends to yield slightly less compression when + compared to as single-threaded deflate; this is because the original + data stream is split into multiple independent buffers, each of which + is compressed in parallel. But because they are treated + independently, there is no opportunity to share compression + dictionaries. For that reason, a deflated stream may be slightly + larger when compressed using parallel deflate, as compared to a + traditional single-threaded deflate. Sometimes the increase over the + normal deflate is as much as 5% of the total compressed size. For + larger files it can be as small as 0.1%. + + + + Multi-threaded compression does not give as much an advantage when + using Encryption. This is primarily because encryption tends to slow + down the entire pipeline. Also, multi-threaded compression gives less + of an advantage when using lower compression levels, for example . You may have to + perform some tests to determine the best approach for your situation. + + + + + + + + + + The maximum number of buffer pairs to use when performing + parallel compression. + + + + + This property sets an upper limit on the number of memory + buffer pairs to create when performing parallel + compression. The implementation of the parallel + compression stream allocates multiple buffers to + facilitate parallel compression. As each buffer fills up, + the stream uses + ThreadPool.QueueUserWorkItem() to compress those + buffers in a background threadpool thread. After a buffer + is compressed, it is re-ordered and written to the output + stream. + + + + A higher number of buffer pairs enables a higher degree of + parallelism, which tends to increase the speed of compression on + multi-cpu computers. On the other hand, a higher number of buffer + pairs also implies a larger memory consumption, more active worker + threads, and a higher cpu utilization for any compression. This + property enables the application to limit its memory consumption and + CPU utilization behavior depending on requirements. + + + + For each compression "task" that occurs in parallel, there are 2 + buffers allocated: one for input and one for output. This property + sets a limit for the number of pairs. The total amount of storage + space allocated for buffering will then be (N*S*2), where N is the + number of buffer pairs, S is the size of each buffer (). By default, DotNetZip allocates 4 buffer + pairs per CPU core, so if your machine has 4 cores, and you retain + the default buffer size of 128k, then the + ParallelDeflateOutputStream will use 4 * 4 * 2 * 128kb of buffer + memory in total, or 4mb, in blocks of 128kb. If you then set this + property to 8, then the number will be 8 * 2 * 128kb of buffer + memory, or 2mb. + + + + CPU utilization will also go up with additional buffers, because a + larger number of buffer pairs allows a larger number of background + threads to compress in parallel. If you find that parallel + compression is consuming too much memory or CPU, you can adjust this + value downward. + + + + The default value is 16. Different values may deliver better or + worse results, depending on your priorities and the dynamic + performance characteristics of your storage and compute resources. + + + + This property is not the number of buffer pairs to use; it is an + upper limit. An illustration: Suppose you have an application that + uses the default value of this property (which is 16), and it runs + on a machine with 2 CPU cores. In that case, DotNetZip will allocate + 4 buffer pairs per CPU core, for a total of 8 pairs. The upper + limit specified by this property has no effect. + + + + The application can set this value at any time + before calling ZipFile.Save(). + + + + + + + + Provides a string representation of the instance. + a string representation of the instance. + + + + Returns the version number on the DotNetZip assembly. + + + + + This property is exposed as a convenience. Callers could also get the + version value by retrieving GetName().Version on the + System.Reflection.Assembly object pointing to the DotNetZip + assembly. But sometimes it is not clear which assembly is being loaded. + This property makes it clear. + + + This static property is primarily useful for diagnostic purposes. + + + + + + Creates a new ZipFile instance, using the specified filename. + + + + + Applications can use this constructor to create a new ZipFile for writing, + or to slurp in an existing zip archive for read and update purposes. + + + + To create a new zip archive, an application can call this constructor, + passing the name of a file that does not exist. The name may be a fully + qualified path. Then the application can add directories or files to the + ZipFile via AddDirectory(), AddFile(), AddItem() + and then write the zip archive to the disk by calling Save(). The + zip file is not actually opened and written to the disk until the + application calls ZipFile.Save(). At that point the new zip file + with the given name is created. + + + + If you won't know the name of the Zipfile until the time you call + ZipFile.Save(), or if you plan to save to a stream (which has no + name), then you should use the no-argument constructor. + + + + The application can also call this constructor to read an existing zip + archive. passing the name of a valid zip file that does exist. But, it's + better form to use the static method, + passing the name of the zip file, because using ZipFile.Read() in + your code communicates very clearly what you are doing. In either case, + the file is then read into the ZipFile instance. The app can then + enumerate the entries or can modify the zip file, for example adding + entries, removing entries, changing comments, and so on. + + + + One advantage to this parameterized constructor: it allows applications to + use the same code to add items to a zip archive, regardless of whether the + zip file exists. + + + + Instances of the ZipFile class are not multi-thread safe. You may + not party on a single instance with multiple threads. You may have + multiple threads that each use a distinct ZipFile instance, or you + can synchronize multi-thread access to a single instance. + + + + By the way, since DotNetZip is so easy to use, don't you think you should + donate $5 or $10? + + + + + + Thrown if name refers to an existing file that is not a valid zip file. + + + + This example shows how to create a zipfile, and add a few files into it. + + String ZipFileToCreate = "archive1.zip"; + String DirectoryToZip = "c:\\reports"; + using (ZipFile zip = new ZipFile()) + { + // Store all files found in the top level directory, into the zip archive. + String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); + zip.AddFiles(filenames, "files"); + zip.Save(ZipFileToCreate); + } + + + + Dim ZipFileToCreate As String = "archive1.zip" + Dim DirectoryToZip As String = "c:\reports" + Using zip As ZipFile = New ZipFile() + Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) + zip.AddFiles(filenames, "files") + zip.Save(ZipFileToCreate) + End Using + + + + The filename to use for the new zip archive. + + + + + Creates a new ZipFile instance, using the specified name for the + filename, and the specified Encoding. + + + + + See the documentation on the ZipFile + constructor that accepts a single string argument for basic + information on all the ZipFile constructors. + + + + The Encoding is used as the default alternate encoding for entries with + filenames or comments that cannot be encoded with the IBM437 code page. + This is equivalent to setting the property on the ZipFile + instance after construction. + + + + Instances of the ZipFile class are not multi-thread safe. You may + not party on a single instance with multiple threads. You may have + multiple threads that each use a distinct ZipFile instance, or you + can synchronize multi-thread access to a single instance. + + + + + + Thrown if name refers to an existing file that is not a valid zip file. + + + The filename to use for the new zip archive. + The Encoding is used as the default alternate + encoding for entries with filenames or comments that cannot be encoded + with the IBM437 code page. + + + + Create a zip file, without specifying a target filename or stream to save to. + + + + + See the documentation on the ZipFile + constructor that accepts a single string argument for basic + information on all the ZipFile constructors. + + + + After instantiating with this constructor and adding entries to the + archive, the application should call or + to save to a file or a + stream, respectively. The application can also set the + property and then call the no-argument method. (This + is the preferred approach for applications that use the library through + COM interop.) If you call the no-argument method + without having set the Name of the ZipFile, either through + the parameterized constructor or through the explicit property , the + Save() will throw, because there is no place to save the file. + + + Instances of the ZipFile class are not multi-thread safe. You may + have multiple threads that each use a distinct ZipFile instance, or + you can synchronize multi-thread access to a single instance. + + + + + This example creates a Zip archive called Backup.zip, containing all the files + in the directory DirectoryToZip. Files within subdirectories are not zipped up. + + using (ZipFile zip = new ZipFile()) + { + // Store all files found in the top level directory, into the zip archive. + // note: this code does not recurse subdirectories! + String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); + zip.AddFiles(filenames, "files"); + zip.Save("Backup.zip"); + } + + + + Using zip As New ZipFile + ' Store all files found in the top level directory, into the zip archive. + ' note: this code does not recurse subdirectories! + Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) + zip.AddFiles(filenames, "files") + zip.Save("Backup.zip") + End Using + + + + + + Create a zip file, specifying a text Encoding, but without specifying a + target filename or stream to save to. + + + + + See the documentation on the ZipFile + constructor that accepts a single string argument for basic + information on all the ZipFile constructors. + + + + + + The Encoding is used as the default alternate encoding for entries with + filenames or comments that cannot be encoded with the IBM437 code page. + + + + + Creates a new ZipFile instance, using the specified name for the + filename, and the specified status message writer. + + + + + See the documentation on the ZipFile + constructor that accepts a single string argument for basic + information on all the ZipFile constructors. + + + + This version of the constructor allows the caller to pass in a TextWriter, + to which verbose messages will be written during extraction or creation of + the zip archive. A console application may wish to pass + System.Console.Out to get messages on the Console. A graphical or headless + application may wish to capture the messages in a different + TextWriter, for example, a StringWriter, and then display + the messages in a TextBox, or generate an audit log of ZipFile operations. + + + + To encrypt the data for the files added to the ZipFile instance, + set the Password property after creating the ZipFile instance. + + + + Instances of the ZipFile class are not multi-thread safe. You may + not party on a single instance with multiple threads. You may have + multiple threads that each use a distinct ZipFile instance, or you + can synchronize multi-thread access to a single instance. + + + + + + Thrown if name refers to an existing file that is not a valid zip file. + + + + + using (ZipFile zip = new ZipFile("Backup.zip", Console.Out)) + { + // Store all files found in the top level directory, into the zip archive. + // note: this code does not recurse subdirectories! + // Status messages will be written to Console.Out + String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); + zip.AddFiles(filenames); + zip.Save(); + } + + + + Using zip As New ZipFile("Backup.zip", Console.Out) + ' Store all files found in the top level directory, into the zip archive. + ' note: this code does not recurse subdirectories! + ' Status messages will be written to Console.Out + Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) + zip.AddFiles(filenames) + zip.Save() + End Using + + + + The filename to use for the new zip archive. + A TextWriter to use for writing + verbose status messages. + + + + Creates a new ZipFile instance, using the specified name for the + filename, the specified status message writer, and the specified Encoding. + + + + + This constructor works like the ZipFile + constructor that accepts a single string argument. See that + reference for detail on what this constructor does. + + + + This version of the constructor allows the caller to pass in a + TextWriter, and an Encoding. The TextWriter will collect + verbose messages that are generated by the library during extraction or + creation of the zip archive. A console application may wish to pass + System.Console.Out to get messages on the Console. A graphical or + headless application may wish to capture the messages in a different + TextWriter, for example, a StringWriter, and then display + the messages in a TextBox, or generate an audit log of + ZipFile operations. + + + + The Encoding is used as the default alternate encoding for entries + with filenames or comments that cannot be encoded with the IBM437 code + page. This is a equivalent to setting the property on the ZipFile + instance after construction. + + + + To encrypt the data for the files added to the ZipFile instance, + set the Password property after creating the ZipFile + instance. + + + + Instances of the ZipFile class are not multi-thread safe. You may + not party on a single instance with multiple threads. You may have + multiple threads that each use a distinct ZipFile instance, or you + can synchronize multi-thread access to a single instance. + + + + + + Thrown if fileName refers to an existing file that is not a valid zip file. + + + The filename to use for the new zip archive. + A TextWriter to use for writing verbose + status messages. + + The Encoding is used as the default alternate encoding for entries with + filenames or comments that cannot be encoded with the IBM437 code page. + + + + + Initialize a ZipFile instance by reading in a zip file. + + + + + + This method is primarily useful from COM Automation environments, when + reading or extracting zip files. In COM, it is not possible to invoke + parameterized constructors for a class. A COM Automation application can + update a zip file by using the default (no argument) + constructor, then calling Initialize() to read the contents + of an on-disk zip archive into the ZipFile instance. + + + + .NET applications are encouraged to use the ZipFile.Read() methods + for better clarity. + + + + the name of the existing zip file to read in. + + + + This is an integer indexer into the Zip archive. + + + + + This property is read-only. + + + + Internally, the ZipEntry instances that belong to the + ZipFile are stored in a Dictionary. When you use this + indexer the first time, it creates a read-only + List<ZipEntry> from the Dictionary.Values Collection. + If at any time you modify the set of entries in the ZipFile, + either by adding an entry, removing an entry, or renaming an + entry, a new List will be created, and the numeric indexes for the + remaining entries may be different. + + + + This means you cannot rename any ZipEntry from + inside an enumeration of the zip file. + + + + The index value. + + + + + + The ZipEntry within the Zip archive at the specified index. If the + entry does not exist in the archive, this indexer throws. + + + + + + This is a name-based indexer into the Zip archive. + + + + + This property is read-only. + + + + The property on the ZipFile + determines whether retrieval via this indexer is done via case-sensitive + comparisons. By default, retrieval is not case sensitive. This makes + sense on Windows, in which filesystems are not case sensitive. + + + + Regardless of case-sensitivity, it is not always the case that + this[value].FileName == value. In other words, the FileName + property of the ZipEntry retrieved with this indexer, may or may + not be equal to the index value. + + + + This is because DotNetZip performs a normalization of filenames passed to + this indexer, before attempting to retrieve the item. That normalization + includes: removal of a volume letter and colon, swapping backward slashes + for forward slashes. So, zip["dir1\\entry1.txt"].FileName == + "dir1/entry.txt". + + + + Directory entries in the zip file may be retrieved via this indexer only + with names that have a trailing slash. DotNetZip automatically appends a + trailing slash to the names of any directory entries added to a zip. + + + + + + This example extracts only the entries in a zip file that are .txt files. + + using (ZipFile zip = ZipFile.Read("PackedDocuments.zip")) + { + foreach (string s1 in zip.EntryFilenames) + { + if (s1.EndsWith(".txt")) + zip[s1].Extract("textfiles"); + } + } + + + Using zip As ZipFile = ZipFile.Read("PackedDocuments.zip") + Dim s1 As String + For Each s1 In zip.EntryFilenames + If s1.EndsWith(".txt") Then + zip(s1).Extract("textfiles") + End If + Next + End Using + + + + + + Thrown if the caller attempts to assign a non-null value to the indexer. + + + + The name of the file, including any directory path, to retrieve from the + zip. The filename match is not case-sensitive by default; you can use the + property to change this behavior. The + pathname can use forward-slashes or backward slashes. + + + + The ZipEntry within the Zip archive, given by the specified + filename. If the named entry does not exist in the archive, this indexer + returns null (Nothing in VB). + + + + + + The list of filenames for the entries contained within the zip archive. + + + + According to the ZIP specification, the names of the entries use forward + slashes in pathnames. If you are scanning through the list, you may have + to swap forward slashes for backslashes. + + + + + + This example shows one way to test if a filename is already contained + within a zip archive. + + String zipFileToRead= "PackedDocuments.zip"; + string candidate = "DatedMaterial.xps"; + using (ZipFile zip = new ZipFile(zipFileToRead)) + { + if (zip.EntryFilenames.Contains(candidate)) + Console.WriteLine("The file '{0}' exists in the zip archive '{1}'", + candidate, + zipFileName); + else + Console.WriteLine("The file, '{0}', does not exist in the zip archive '{1}'", + candidate, + zipFileName); + Console.WriteLine(); + } + + + Dim zipFileToRead As String = "PackedDocuments.zip" + Dim candidate As String = "DatedMaterial.xps" + Using zip As ZipFile.Read(ZipFileToRead) + If zip.EntryFilenames.Contains(candidate) Then + Console.WriteLine("The file '{0}' exists in the zip archive '{1}'", _ + candidate, _ + zipFileName) + Else + Console.WriteLine("The file, '{0}', does not exist in the zip archive '{1}'", _ + candidate, _ + zipFileName) + End If + Console.WriteLine + End Using + + + + + The list of strings for the filenames contained within the Zip archive. + + + + + + Returns the readonly collection of entries in the Zip archive. + + + + + + If there are no entries in the current ZipFile, the value returned is a + non-null zero-element collection. If there are entries in the zip file, + the elements are returned in no particular order. + + + This is the implied enumerator on the ZipFile class. If you use a + ZipFile instance in a context that expects an enumerator, you will + get this collection. + + + + + + + Returns a readonly collection of entries in the Zip archive, sorted by FileName. + + + + If there are no entries in the current ZipFile, the value returned + is a non-null zero-element collection. If there are entries in the zip + file, the elements are returned sorted by the name of the entry. + + + + + This example fills a Windows Forms ListView with the entries in a zip file. + + + using (ZipFile zip = ZipFile.Read(zipFile)) + { + foreach (ZipEntry entry in zip.EntriesSorted) + { + ListViewItem item = new ListViewItem(n.ToString()); + n++; + string[] subitems = new string[] { + entry.FileName.Replace("/","\\"), + entry.LastModified.ToString("yyyy-MM-dd HH:mm:ss"), + entry.UncompressedSize.ToString(), + String.Format("{0,5:F0}%", entry.CompressionRatio), + entry.CompressedSize.ToString(), + (entry.UsesEncryption) ? "Y" : "N", + String.Format("{0:X8}", entry.Crc)}; + + foreach (String s in subitems) + { + ListViewItem.ListViewSubItem subitem = new ListViewItem.ListViewSubItem(); + subitem.Text = s; + item.SubItems.Add(subitem); + } + + this.listView1.Items.Add(item); + } + } + + + + + + + + Returns the number of entries in the Zip archive. + + + + + Removes the given ZipEntry from the zip archive. + + + + + After calling RemoveEntry, the application must call Save to + make the changes permanent. + + + + + Thrown if the specified ZipEntry does not exist in the ZipFile. + + + + In this example, all entries in the zip archive dating from before + December 31st, 2007, are removed from the archive. This is actually much + easier if you use the RemoveSelectedEntries method. But I needed an + example for RemoveEntry, so here it is. + + String ZipFileToRead = "ArchiveToModify.zip"; + System.DateTime Threshold = new System.DateTime(2007,12,31); + using (ZipFile zip = ZipFile.Read(ZipFileToRead)) + { + var EntriesToRemove = new System.Collections.Generic.List<ZipEntry>(); + foreach (ZipEntry e in zip) + { + if (e.LastModified < Threshold) + { + // We cannot remove the entry from the list, within the context of + // an enumeration of said list. + // So we add the doomed entry to a list to be removed later. + EntriesToRemove.Add(e); + } + } + + // actually remove the doomed entries. + foreach (ZipEntry zombie in EntriesToRemove) + zip.RemoveEntry(zombie); + + zip.Comment= String.Format("This zip archive was updated at {0}.", + System.DateTime.Now.ToString("G")); + + // save with a different name + zip.Save("Archive-Updated.zip"); + } + + + + Dim ZipFileToRead As String = "ArchiveToModify.zip" + Dim Threshold As New DateTime(2007, 12, 31) + Using zip As ZipFile = ZipFile.Read(ZipFileToRead) + Dim EntriesToRemove As New System.Collections.Generic.List(Of ZipEntry) + Dim e As ZipEntry + For Each e In zip + If (e.LastModified < Threshold) Then + ' We cannot remove the entry from the list, within the context of + ' an enumeration of said list. + ' So we add the doomed entry to a list to be removed later. + EntriesToRemove.Add(e) + End If + Next + + ' actually remove the doomed entries. + Dim zombie As ZipEntry + For Each zombie In EntriesToRemove + zip.RemoveEntry(zombie) + Next + zip.Comment = String.Format("This zip archive was updated at {0}.", DateTime.Now.ToString("G")) + 'save as a different name + zip.Save("Archive-Updated.zip") + End Using + + + + + The ZipEntry to remove from the zip. + + + + + + + + Removes the ZipEntry with the given filename from the zip archive. + + + + + After calling RemoveEntry, the application must call Save to + make the changes permanent. + + + + + + Thrown if the ZipFile is not updatable. + + + + Thrown if a ZipEntry with the specified filename does not exist in + the ZipFile. + + + + + This example shows one way to remove an entry with a given filename from + an existing zip archive. + + + String zipFileToRead= "PackedDocuments.zip"; + string candidate = "DatedMaterial.xps"; + using (ZipFile zip = ZipFile.Read(zipFileToRead)) + { + if (zip.EntryFilenames.Contains(candidate)) + { + zip.RemoveEntry(candidate); + zip.Comment= String.Format("The file '{0}' has been removed from this archive.", + Candidate); + zip.Save(); + } + } + + + Dim zipFileToRead As String = "PackedDocuments.zip" + Dim candidate As String = "DatedMaterial.xps" + Using zip As ZipFile = ZipFile.Read(zipFileToRead) + If zip.EntryFilenames.Contains(candidate) Then + zip.RemoveEntry(candidate) + zip.Comment = String.Format("The file '{0}' has been removed from this archive.", Candidate) + zip.Save + End If + End Using + + + + + The name of the file, including any directory path, to remove from the zip. + The filename match is not case-sensitive by default; you can use the + CaseSensitiveRetrieval property to change this behavior. The + pathname can use forward-slashes or backward slashes. + + + + + + Closes the read and write streams associated + to the ZipFile, if necessary. + + + + The Dispose() method is generally employed implicitly, via a using(..) {..} + statement. (Using...End Using in VB) If you do not employ a using + statement, insure that your application calls Dispose() explicitly. For + example, in a Powershell application, or an application that uses the COM + interop interface, you must call Dispose() explicitly. + + + + This example extracts an entry selected by name, from the Zip file to the + Console. + + using (ZipFile zip = ZipFile.Read(zipfile)) + { + foreach (ZipEntry e in zip) + { + if (WantThisEntry(e.FileName)) + zip.Extract(e.FileName, Console.OpenStandardOutput()); + } + } // Dispose() is called implicitly here. + + + + Using zip As ZipFile = ZipFile.Read(zipfile) + Dim e As ZipEntry + For Each e In zip + If WantThisEntry(e.FileName) Then + zip.Extract(e.FileName, Console.OpenStandardOutput()) + End If + Next + End Using ' Dispose is implicity called here + + + + + + Disposes any managed resources, if the flag is set, then marks the + instance disposed. This method is typically not called explicitly from + application code. + + + + Applications should call the no-arg Dispose method. + + + + indicates whether the method should dispose streams or not. + + + + + Default size of the buffer used for IO. + + + + + An event handler invoked when a Save() starts, before and after each + entry has been written to the archive, when a Save() completes, and + during other Save events. + + + + + Depending on the particular event, different properties on the parameter are set. The following + table summarizes the available EventTypes and the conditions under + which this event handler is invoked with a + SaveProgressEventArgs with the given EventType. + + + + + value of EntryType + Meaning and conditions + + + + ZipProgressEventType.Saving_Started + Fired when ZipFile.Save() begins. + + + + + ZipProgressEventType.Saving_BeforeSaveEntry + + Fired within ZipFile.Save(), just before writing data for each + particular entry. + + + + + ZipProgressEventType.Saving_AfterSaveEntry + + Fired within ZipFile.Save(), just after having finished writing data + for each particular entry. + + + + + ZipProgressEventType.Saving_Completed + Fired when ZipFile.Save() has completed. + + + + + ZipProgressEventType.Saving_AfterSaveTempArchive + + Fired after the temporary file has been created. This happens only + when saving to a disk file. This event will not be invoked when + saving to a stream. + + + + + ZipProgressEventType.Saving_BeforeRenameTempArchive + + Fired just before renaming the temporary file to the permanent + location. This happens only when saving to a disk file. This event + will not be invoked when saving to a stream. + + + + + ZipProgressEventType.Saving_AfterRenameTempArchive + + Fired just after renaming the temporary file to the permanent + location. This happens only when saving to a disk file. This event + will not be invoked when saving to a stream. + + + + + ZipProgressEventType.Saving_AfterCompileSelfExtractor + + Fired after a self-extracting archive has finished compiling. This + EventType is used only within SaveSelfExtractor(). + + + + + ZipProgressEventType.Saving_BytesRead + + Set during the save of a particular entry, to update progress of the + Save(). When this EventType is set, the BytesTransferred is the + number of bytes that have been read from the source stream. The + TotalBytesToTransfer is the number of bytes in the uncompressed + file. + + + + + + + + + This example uses an anonymous method to handle the + SaveProgress event, by updating a progress bar. + + + progressBar1.Value = 0; + progressBar1.Max = listbox1.Items.Count; + using (ZipFile zip = new ZipFile()) + { + // listbox1 contains a list of filenames + zip.AddFiles(listbox1.Items); + + // do the progress bar: + zip.SaveProgress += (sender, e) => { + if (e.EventType == ZipProgressEventType.Saving_BeforeWriteEntry) { + progressBar1.PerformStep(); + } + }; + + zip.Save(fs); + } + + + + + This example uses a named method as the + SaveProgress event handler, to update the user, in a + console-based application. + + + static bool justHadByteUpdate= false; + public static void SaveProgress(object sender, SaveProgressEventArgs e) + { + if (e.EventType == ZipProgressEventType.Saving_Started) + Console.WriteLine("Saving: {0}", e.ArchiveName); + + else if (e.EventType == ZipProgressEventType.Saving_Completed) + { + justHadByteUpdate= false; + Console.WriteLine(); + Console.WriteLine("Done: {0}", e.ArchiveName); + } + + else if (e.EventType == ZipProgressEventType.Saving_BeforeWriteEntry) + { + if (justHadByteUpdate) + Console.WriteLine(); + Console.WriteLine(" Writing: {0} ({1}/{2})", + e.CurrentEntry.FileName, e.EntriesSaved, e.EntriesTotal); + justHadByteUpdate= false; + } + + else if (e.EventType == ZipProgressEventType.Saving_EntryBytesRead) + { + if (justHadByteUpdate) + Console.SetCursorPosition(0, Console.CursorTop); + Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, e.TotalBytesToTransfer, + e.BytesTransferred / (0.01 * e.TotalBytesToTransfer )); + justHadByteUpdate= true; + } + } + + public static ZipUp(string targetZip, string directory) + { + using (var zip = new ZipFile()) { + zip.SaveProgress += SaveProgress; + zip.AddDirectory(directory); + zip.Save(targetZip); + } + } + + + + + Public Sub ZipUp(ByVal targetZip As String, ByVal directory As String) + Using zip As ZipFile = New ZipFile + AddHandler zip.SaveProgress, AddressOf MySaveProgress + zip.AddDirectory(directory) + zip.Save(targetZip) + End Using + End Sub + + Private Shared justHadByteUpdate As Boolean = False + + Public Shared Sub MySaveProgress(ByVal sender As Object, ByVal e As SaveProgressEventArgs) + If (e.EventType Is ZipProgressEventType.Saving_Started) Then + Console.WriteLine("Saving: {0}", e.ArchiveName) + + ElseIf (e.EventType Is ZipProgressEventType.Saving_Completed) Then + justHadByteUpdate = False + Console.WriteLine + Console.WriteLine("Done: {0}", e.ArchiveName) + + ElseIf (e.EventType Is ZipProgressEventType.Saving_BeforeWriteEntry) Then + If justHadByteUpdate Then + Console.WriteLine + End If + Console.WriteLine(" Writing: {0} ({1}/{2})", e.CurrentEntry.FileName, e.EntriesSaved, e.EntriesTotal) + justHadByteUpdate = False + + ElseIf (e.EventType Is ZipProgressEventType.Saving_EntryBytesRead) Then + If justHadByteUpdate Then + Console.SetCursorPosition(0, Console.CursorTop) + End If + Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, _ + e.TotalBytesToTransfer, _ + (CDbl(e.BytesTransferred) / (0.01 * e.TotalBytesToTransfer))) + justHadByteUpdate = True + End If + End Sub + + + + + + This is a more complete example of using the SaveProgress + events in a Windows Forms application, with a + Thread object. + + + delegate void SaveEntryProgress(SaveProgressEventArgs e); + delegate void ButtonClick(object sender, EventArgs e); + + internal class WorkerOptions + { + public string ZipName; + public string Folder; + public string Encoding; + public string Comment; + public int ZipFlavor; + public Zip64Option Zip64; + } + + private int _progress2MaxFactor; + private bool _saveCanceled; + private long _totalBytesBeforeCompress; + private long _totalBytesAfterCompress; + private Thread _workerThread; + + + private void btnZipup_Click(object sender, EventArgs e) + { + KickoffZipup(); + } + + private void btnCancel_Click(object sender, EventArgs e) + { + if (this.lblStatus.InvokeRequired) + { + this.lblStatus.Invoke(new ButtonClick(this.btnCancel_Click), new object[] { sender, e }); + } + else + { + _saveCanceled = true; + lblStatus.Text = "Canceled..."; + ResetState(); + } + } + + private void KickoffZipup() + { + _folderName = tbDirName.Text; + + if (_folderName == null || _folderName == "") return; + if (this.tbZipName.Text == null || this.tbZipName.Text == "") return; + + // check for existence of the zip file: + if (System.IO.File.Exists(this.tbZipName.Text)) + { + var dlgResult = MessageBox.Show(String.Format("The file you have specified ({0}) already exists." + + " Do you want to overwrite this file?", this.tbZipName.Text), + "Confirmation is Required", MessageBoxButtons.YesNo, MessageBoxIcon.Question); + if (dlgResult != DialogResult.Yes) return; + System.IO.File.Delete(this.tbZipName.Text); + } + + _saveCanceled = false; + _nFilesCompleted = 0; + _totalBytesAfterCompress = 0; + _totalBytesBeforeCompress = 0; + this.btnOk.Enabled = false; + this.btnOk.Text = "Zipping..."; + this.btnCancel.Enabled = true; + lblStatus.Text = "Zipping..."; + + var options = new WorkerOptions + { + ZipName = this.tbZipName.Text, + Folder = _folderName, + Encoding = "ibm437" + }; + + if (this.comboBox1.SelectedIndex != 0) + { + options.Encoding = this.comboBox1.SelectedItem.ToString(); + } + + if (this.radioFlavorSfxCmd.Checked) + options.ZipFlavor = 2; + else if (this.radioFlavorSfxGui.Checked) + options.ZipFlavor = 1; + else options.ZipFlavor = 0; + + if (this.radioZip64AsNecessary.Checked) + options.Zip64 = Zip64Option.AsNecessary; + else if (this.radioZip64Always.Checked) + options.Zip64 = Zip64Option.Always; + else options.Zip64 = Zip64Option.Never; + + options.Comment = String.Format("Encoding:{0} || Flavor:{1} || ZIP64:{2}\r\nCreated at {3} || {4}\r\n", + options.Encoding, + FlavorToString(options.ZipFlavor), + options.Zip64.ToString(), + System.DateTime.Now.ToString("yyyy-MMM-dd HH:mm:ss"), + this.Text); + + if (this.tbComment.Text != TB_COMMENT_NOTE) + options.Comment += this.tbComment.Text; + + _workerThread = new Thread(this.DoSave); + _workerThread.Name = "Zip Saver thread"; + _workerThread.Start(options); + this.Cursor = Cursors.WaitCursor; + } + + + private void DoSave(Object p) + { + WorkerOptions options = p as WorkerOptions; + try + { + using (var zip1 = new ZipFile()) + { + zip1.ProvisionalAlternateEncoding = System.Text.Encoding.GetEncoding(options.Encoding); + zip1.Comment = options.Comment; + zip1.AddDirectory(options.Folder); + _entriesToZip = zip1.EntryFileNames.Count; + SetProgressBars(); + zip1.SaveProgress += this.zip1_SaveProgress; + + zip1.UseZip64WhenSaving = options.Zip64; + + if (options.ZipFlavor == 1) + zip1.SaveSelfExtractor(options.ZipName, SelfExtractorFlavor.WinFormsApplication); + else if (options.ZipFlavor == 2) + zip1.SaveSelfExtractor(options.ZipName, SelfExtractorFlavor.ConsoleApplication); + else + zip1.Save(options.ZipName); + } + } + catch (System.Exception exc1) + { + MessageBox.Show(String.Format("Exception while zipping: {0}", exc1.Message)); + btnCancel_Click(null, null); + } + } + + + + void zip1_SaveProgress(object sender, SaveProgressEventArgs e) + { + switch (e.EventType) + { + case ZipProgressEventType.Saving_AfterWriteEntry: + StepArchiveProgress(e); + break; + case ZipProgressEventType.Saving_EntryBytesRead: + StepEntryProgress(e); + break; + case ZipProgressEventType.Saving_Completed: + SaveCompleted(); + break; + case ZipProgressEventType.Saving_AfterSaveTempArchive: + // this event only occurs when saving an SFX file + TempArchiveSaved(); + break; + } + if (_saveCanceled) + e.Cancel = true; + } + + + + private void StepArchiveProgress(SaveProgressEventArgs e) + { + if (this.progressBar1.InvokeRequired) + { + this.progressBar1.Invoke(new SaveEntryProgress(this.StepArchiveProgress), new object[] { e }); + } + else + { + if (!_saveCanceled) + { + _nFilesCompleted++; + this.progressBar1.PerformStep(); + _totalBytesAfterCompress += e.CurrentEntry.CompressedSize; + _totalBytesBeforeCompress += e.CurrentEntry.UncompressedSize; + + // reset the progress bar for the entry: + this.progressBar2.Value = this.progressBar2.Maximum = 1; + + this.Update(); + } + } + } + + + private void StepEntryProgress(SaveProgressEventArgs e) + { + if (this.progressBar2.InvokeRequired) + { + this.progressBar2.Invoke(new SaveEntryProgress(this.StepEntryProgress), new object[] { e }); + } + else + { + if (!_saveCanceled) + { + if (this.progressBar2.Maximum == 1) + { + // reset + Int64 max = e.TotalBytesToTransfer; + _progress2MaxFactor = 0; + while (max > System.Int32.MaxValue) + { + max /= 2; + _progress2MaxFactor++; + } + this.progressBar2.Maximum = (int)max; + lblStatus.Text = String.Format("{0} of {1} files...({2})", + _nFilesCompleted + 1, _entriesToZip, e.CurrentEntry.FileName); + } + + int xferred = e.BytesTransferred >> _progress2MaxFactor; + + this.progressBar2.Value = (xferred >= this.progressBar2.Maximum) + ? this.progressBar2.Maximum + : xferred; + + this.Update(); + } + } + } + + private void SaveCompleted() + { + if (this.lblStatus.InvokeRequired) + { + this.lblStatus.Invoke(new MethodInvoker(this.SaveCompleted)); + } + else + { + lblStatus.Text = String.Format("Done, Compressed {0} files, {1:N0}% of original.", + _nFilesCompleted, (100.00 * _totalBytesAfterCompress) / _totalBytesBeforeCompress); + ResetState(); + } + } + + private void ResetState() + { + this.btnCancel.Enabled = false; + this.btnOk.Enabled = true; + this.btnOk.Text = "Zip it!"; + this.progressBar1.Value = 0; + this.progressBar2.Value = 0; + this.Cursor = Cursors.Default; + if (!_workerThread.IsAlive) + _workerThread.Join(); + } + + + + + + + + + + + An event handler invoked before, during, and after the reading of a zip archive. + + + + + Depending on the particular event being signaled, different properties on the + parameter are set. The following table + summarizes the available EventTypes and the conditions under which this + event handler is invoked with a ReadProgressEventArgs with the given EventType. + + + + + value of EntryType + Meaning and conditions + + + + ZipProgressEventType.Reading_Started + Fired just as ZipFile.Read() begins. Meaningful properties: ArchiveName. + + + + + ZipProgressEventType.Reading_Completed + Fired when ZipFile.Read() has completed. Meaningful properties: ArchiveName. + + + + + ZipProgressEventType.Reading_ArchiveBytesRead + Fired while reading, updates the number of bytes read for the entire archive. + Meaningful properties: ArchiveName, CurrentEntry, BytesTransferred, TotalBytesToTransfer. + + + + + ZipProgressEventType.Reading_BeforeReadEntry + Indicates an entry is about to be read from the archive. + Meaningful properties: ArchiveName, EntriesTotal. + + + + + ZipProgressEventType.Reading_AfterReadEntry + Indicates an entry has just been read from the archive. + Meaningful properties: ArchiveName, EntriesTotal, CurrentEntry. + + + + + + + + + + + + + An event handler invoked before, during, and after extraction of + entries in the zip archive. + + + + + Depending on the particular event, different properties on the parameter are set. The following + table summarizes the available EventTypes and the conditions under + which this event handler is invoked with a + ExtractProgressEventArgs with the given EventType. + + + + + value of EntryType + Meaning and conditions + + + + ZipProgressEventType.Extracting_BeforeExtractAll + + Set when ExtractAll() begins. The ArchiveName, Overwrite, and + ExtractLocation properties are meaningful. + + + + ZipProgressEventType.Extracting_AfterExtractAll + + Set when ExtractAll() has completed. The ArchiveName, Overwrite, + and ExtractLocation properties are meaningful. + + + + + ZipProgressEventType.Extracting_BeforeExtractEntry + + Set when an Extract() on an entry in the ZipFile has begun. + Properties that are meaningful: ArchiveName, EntriesTotal, + CurrentEntry, Overwrite, ExtractLocation, EntriesExtracted. + + + + + ZipProgressEventType.Extracting_AfterExtractEntry + + Set when an Extract() on an entry in the ZipFile has completed. + Properties that are meaningful: ArchiveName, EntriesTotal, + CurrentEntry, Overwrite, ExtractLocation, EntriesExtracted. + + + + + ZipProgressEventType.Extracting_EntryBytesWritten + + Set within a call to Extract() on an entry in the ZipFile, as data + is extracted for the entry. Properties that are meaningful: + ArchiveName, CurrentEntry, BytesTransferred, TotalBytesToTransfer. + + + + + ZipProgressEventType.Extracting_ExtractEntryWouldOverwrite + + Set within a call to Extract() on an entry in the ZipFile, when the + extraction would overwrite an existing file. This event type is used + only when ExtractExistingFileAction on the ZipFile or + ZipEntry is set to InvokeExtractProgressEvent. + + + + + + + + + + private static bool justHadByteUpdate = false; + public static void ExtractProgress(object sender, ExtractProgressEventArgs e) + { + if(e.EventType == ZipProgressEventType.Extracting_EntryBytesWritten) + { + if (justHadByteUpdate) + Console.SetCursorPosition(0, Console.CursorTop); + + Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, e.TotalBytesToTransfer, + e.BytesTransferred / (0.01 * e.TotalBytesToTransfer )); + justHadByteUpdate = true; + } + else if(e.EventType == ZipProgressEventType.Extracting_BeforeExtractEntry) + { + if (justHadByteUpdate) + Console.WriteLine(); + Console.WriteLine("Extracting: {0}", e.CurrentEntry.FileName); + justHadByteUpdate= false; + } + } + + public static ExtractZip(string zipToExtract, string directory) + { + string TargetDirectory= "extract"; + using (var zip = ZipFile.Read(zipToExtract)) { + zip.ExtractProgress += ExtractProgress; + foreach (var e in zip1) + { + e.Extract(TargetDirectory, true); + } + } + } + + + + Public Shared Sub Main(ByVal args As String()) + Dim ZipToUnpack As String = "C1P3SML.zip" + Dim TargetDir As String = "ExtractTest_Extract" + Console.WriteLine("Extracting file {0} to {1}", ZipToUnpack, TargetDir) + Using zip1 As ZipFile = ZipFile.Read(ZipToUnpack) + AddHandler zip1.ExtractProgress, AddressOf MyExtractProgress + Dim e As ZipEntry + For Each e In zip1 + e.Extract(TargetDir, True) + Next + End Using + End Sub + + Private Shared justHadByteUpdate As Boolean = False + + Public Shared Sub MyExtractProgress(ByVal sender As Object, ByVal e As ExtractProgressEventArgs) + If (e.EventType = ZipProgressEventType.Extracting_EntryBytesWritten) Then + If ExtractTest.justHadByteUpdate Then + Console.SetCursorPosition(0, Console.CursorTop) + End If + Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, e.TotalBytesToTransfer, (CDbl(e.BytesTransferred) / (0.01 * e.TotalBytesToTransfer))) + ExtractTest.justHadByteUpdate = True + ElseIf (e.EventType = ZipProgressEventType.Extracting_BeforeExtractEntry) Then + If ExtractTest.justHadByteUpdate Then + Console.WriteLine + End If + Console.WriteLine("Extracting: {0}", e.CurrentEntry.FileName) + ExtractTest.justHadByteUpdate = False + End If + End Sub + + + + + + + + + + An event handler invoked before, during, and after Adding entries to a zip archive. + + + + Adding a large number of entries to a zip file can take a long + time. For example, when calling on a + directory that contains 50,000 files, it could take 3 minutes or so. + This event handler allws an application to track the progress of the Add + operation, and to optionally cancel a lengthy Add operation. + + + + + + int _numEntriesToAdd= 0; + int _numEntriesAdded= 0; + void AddProgressHandler(object sender, AddProgressEventArgs e) + { + switch (e.EventType) + { + case ZipProgressEventType.Adding_Started: + Console.WriteLine("Adding files to the zip..."); + break; + case ZipProgressEventType.Adding_AfterAddEntry: + _numEntriesAdded++; + Console.WriteLine(String.Format("Adding file {0}/{1} :: {2}", + _numEntriesAdded, _numEntriesToAdd, e.CurrentEntry.FileName)); + break; + case ZipProgressEventType.Adding_Completed: + Console.WriteLine("Added all files"); + break; + } + } + + void CreateTheZip() + { + using (ZipFile zip = new ZipFile()) + { + zip.AddProgress += AddProgressHandler; + zip.AddDirectory(System.IO.Path.GetFileName(DirToZip)); + zip.Save(ZipFileToCreate); + } + } + + + + + + Private Sub AddProgressHandler(ByVal sender As Object, ByVal e As AddProgressEventArgs) + Select Case e.EventType + Case ZipProgressEventType.Adding_Started + Console.WriteLine("Adding files to the zip...") + Exit Select + Case ZipProgressEventType.Adding_AfterAddEntry + Console.WriteLine(String.Format("Adding file {0}", e.CurrentEntry.FileName)) + Exit Select + Case ZipProgressEventType.Adding_Completed + Console.WriteLine("Added all files") + Exit Select + End Select + End Sub + + Sub CreateTheZip() + Using zip as ZipFile = New ZipFile + AddHandler zip.AddProgress, AddressOf AddProgressHandler + zip.AddDirectory(System.IO.Path.GetFileName(DirToZip)) + zip.Save(ZipFileToCreate); + End Using + End Sub + + + + + + + + + + + + An event that is raised when an error occurs during open or read of files + while saving a zip archive. + + + + + Errors can occur as a file is being saved to the zip archive. For + example, the File.Open may fail, or a File.Read may fail, because of + lock conflicts or other reasons. If you add a handler to this event, + you can handle such errors in your own code. If you don't add a + handler, the library will throw an exception if it encounters an I/O + error during a call to Save(). + + + + Setting a handler implicitly sets to + ZipErrorAction.InvokeErrorEvent. + + + + The handler you add applies to all items that are + subsequently added to the ZipFile instance. If you set this + property after you have added items to the ZipFile, but before you + have called Save(), errors that occur while saving those items + will not cause the error handler to be invoked. + + + + If you want to handle any errors that occur with any entry in the zip + file using the same error handler, then add your error handler once, + before adding any entries to the zip archive. + + + + In the error handler method, you need to set the property on the + ZipErrorEventArgs.CurrentEntry. This communicates back to + DotNetZip what you would like to do with this particular error. Within + an error handler, if you set the ZipEntry.ZipErrorAction property + on the ZipEntry to ZipErrorAction.InvokeErrorEvent or if + you don't set it at all, the library will throw the exception. (It is the + same as if you had set the ZipEntry.ZipErrorAction property on the + ZipEntry to ZipErrorAction.Throw.) If you set the + ZipErrorEventArgs.Cancel to true, the entire Save() will be + canceled. + + + + In the case that you use ZipErrorAction.Skip, implying that + you want to skip the entry for which there's been an error, DotNetZip + tries to seek backwards in the output stream, and truncate all bytes + written on behalf of that particular entry. This works only if the + output stream is seekable. It will not work, for example, when using + ASPNET's Response.OutputStream. + + + + + + + This example shows how to use an event handler to handle + errors during save of the zip file. + + + public static void MyZipError(object sender, ZipErrorEventArgs e) + { + Console.WriteLine("Error saving {0}...", e.FileName); + Console.WriteLine(" Exception: {0}", e.exception); + ZipEntry entry = e.CurrentEntry; + string response = null; + // Ask the user whether he wants to skip this error or not + do + { + Console.Write("Retry, Skip, Throw, or Cancel ? (R/S/T/C) "); + response = Console.ReadLine(); + Console.WriteLine(); + + } while (response != null && + response[0]!='S' && response[0]!='s' && + response[0]!='R' && response[0]!='r' && + response[0]!='T' && response[0]!='t' && + response[0]!='C' && response[0]!='c'); + + e.Cancel = (response[0]=='C' || response[0]=='c'); + + if (response[0]=='S' || response[0]=='s') + entry.ZipErrorAction = ZipErrorAction.Skip; + else if (response[0]=='R' || response[0]=='r') + entry.ZipErrorAction = ZipErrorAction.Retry; + else if (response[0]=='T' || response[0]=='t') + entry.ZipErrorAction = ZipErrorAction.Throw; + } + + public void SaveTheFile() + { + string directoryToZip = "fodder"; + string directoryInArchive = "files"; + string zipFileToCreate = "Archive.zip"; + using (var zip = new ZipFile()) + { + // set the event handler before adding any entries + zip.ZipError += MyZipError; + zip.AddDirectory(directoryToZip, directoryInArchive); + zip.Save(zipFileToCreate); + } + } + + + + Private Sub MyZipError(ByVal sender As Object, ByVal e As Ionic.Zip.ZipErrorEventArgs) + ' At this point, the application could prompt the user for an action to take. + ' But in this case, this application will simply automatically skip the file, in case of error. + Console.WriteLine("Zip Error, entry {0}", e.CurrentEntry.FileName) + Console.WriteLine(" Exception: {0}", e.exception) + ' set the desired ZipErrorAction on the CurrentEntry to communicate that to DotNetZip + e.CurrentEntry.ZipErrorAction = Zip.ZipErrorAction.Skip + End Sub + + Public Sub SaveTheFile() + Dim directoryToZip As String = "fodder" + Dim directoryInArchive As String = "files" + Dim zipFileToCreate as String = "Archive.zip" + Using zipArchive As ZipFile = New ZipFile + ' set the event handler before adding any entries + AddHandler zipArchive.ZipError, AddressOf MyZipError + zipArchive.AddDirectory(directoryToZip, directoryInArchive) + zipArchive.Save(zipFileToCreate) + End Using + End Sub + + + + + + + + + Extracts all of the items in the zip archive, to the specified path in the + filesystem. The path can be relative or fully-qualified. + + + + + This method will extract all entries in the ZipFile to the + specified path. + + + + If an extraction of a file from the zip archive would overwrite an + existing file in the filesystem, the action taken is dictated by the + ExtractExistingFile property, which overrides any setting you may have + made on individual ZipEntry instances. By default, if you have not + set that property on the ZipFile instance, the entry will not + be extracted, the existing file will not be overwritten and an + exception will be thrown. To change this, set the property, or use the + overload that allows you to + specify an ExtractExistingFileAction parameter. + + + + The action to take when an extract would overwrite an existing file + applies to all entries. If you want to set this on a per-entry basis, + then you must use one of the ZipEntry.Extract methods. + + + + This method will send verbose output messages to the , if it is set on the ZipFile + instance. + + + + You may wish to take advantage of the ExtractProgress event. + + + + About timestamps: When extracting a file entry from a zip archive, the + extracted file gets the last modified time of the entry as stored in + the archive. The archive may also store extended file timestamp + information, including last accessed and created times. If these are + present in the ZipEntry, then the extracted file will also get + these times. + + + + A Directory entry is somewhat different. It will get the times as + described for a file entry, but, if there are file entries in the zip + archive that, when extracted, appear in the just-created directory, + then when those file entries are extracted, the last modified and last + accessed times of the directory will change, as a side effect. The + result is that after an extraction of a directory and a number of + files within the directory, the last modified and last accessed + timestamps on the directory will reflect the time that the last file + was extracted into the directory, rather than the time stored in the + zip archive for the directory. + + + + To compensate, when extracting an archive with ExtractAll, + DotNetZip will extract all the file and directory entries as described + above, but it will then make a second pass on the directories, and + reset the times on the directories to reflect what is stored in the + zip archive. + + + + This compensation is performed only within the context of an + ExtractAll. If you call ZipEntry.Extract on a directory + entry, the timestamps on directory in the filesystem will reflect the + times stored in the zip. If you then call ZipEntry.Extract on + a file entry, which is extracted into the directory, the timestamps on + the directory will be updated to the current time. + + + + + This example extracts all the entries in a zip archive file, to the + specified target directory. The extraction will overwrite any + existing files silently. + + + String TargetDirectory= "unpack"; + using(ZipFile zip= ZipFile.Read(ZipFileToExtract)) + { + zip.ExtractExistingFile= ExtractExistingFileAction.OverwriteSilently; + zip.ExtractAll(TargetDirectory); + } + + + + Dim TargetDirectory As String = "unpack" + Using zip As ZipFile = ZipFile.Read(ZipFileToExtract) + zip.ExtractExistingFile= ExtractExistingFileAction.OverwriteSilently + zip.ExtractAll(TargetDirectory) + End Using + + + + + + + + The path to which the contents of the zipfile will be extracted. + The path can be relative or fully-qualified. + + + + + + Extracts all of the items in the zip archive, to the specified path in the + filesystem, using the specified behavior when extraction would overwrite an + existing file. + + + + + + This method will extract all entries in the ZipFile to the specified + path. For an extraction that would overwrite an existing file, the behavior + is dictated by , which overrides any + setting you may have made on individual ZipEntry instances. + + + + The action to take when an extract would overwrite an existing file + applies to all entries. If you want to set this on a per-entry basis, + then you must use or one of the similar methods. + + + + Calling this method is equivalent to setting the property and then calling . + + + + This method will send verbose output messages to the + , if it is set on the ZipFile instance. + + + + + This example extracts all the entries in a zip archive file, to the + specified target directory. It does not overwrite any existing files. + + String TargetDirectory= "c:\\unpack"; + using(ZipFile zip= ZipFile.Read(ZipFileToExtract)) + { + zip.ExtractAll(TargetDirectory, ExtractExistingFileAction.DontOverwrite); + } + + + + Dim TargetDirectory As String = "c:\unpack" + Using zip As ZipFile = ZipFile.Read(ZipFileToExtract) + zip.ExtractAll(TargetDirectory, ExtractExistingFileAction.DontOverwrite) + End Using + + + + + The path to which the contents of the zipfile will be extracted. + The path can be relative or fully-qualified. + + + + The action to take if extraction would overwrite an existing file. + + + + + + Reads a zip file archive and returns the instance. + + + + + The stream is read using the default System.Text.Encoding, which is the + IBM437 codepage. + + + + + Thrown if the ZipFile cannot be read. The implementation of this method + relies on System.IO.File.OpenRead, which can throw a variety of exceptions, + including specific exceptions if a file is not found, an unauthorized access + exception, exceptions for poorly formatted filenames, and so on. + + + + The name of the zip archive to open. This can be a fully-qualified or relative + pathname. + + + . + + The instance read from the zip archive. + + + + + Reads a zip file archive from the named filesystem file using the + specified options. + + + + + This version of the Read() method allows the caller to pass + in a TextWriter an Encoding, via an instance of the + ReadOptions class. The ZipFile is read in using the + specified encoding for entries where UTF-8 encoding is not + explicitly specified. + + + + + + + This example shows how to read a zip file using the Big-5 Chinese + code page (950), and extract each entry in the zip file, while + sending status messages out to the Console. + + + + For this code to work as intended, the zipfile must have been + created using the big5 code page (CP950). This is typical, for + example, when using WinRar on a machine with CP950 set as the + default code page. In that case, the names of entries within the + Zip archive will be stored in that code page, and reading the zip + archive must be done using that code page. If the application did + not use the correct code page in ZipFile.Read(), then names of + entries within the zip archive would not be correctly retrieved. + + + + string zipToExtract = "MyArchive.zip"; + string extractDirectory = "extract"; + var options = new ReadOptions + { + StatusMessageWriter = System.Console.Out, + Encoding = System.Text.Encoding.GetEncoding(950) + }; + using (ZipFile zip = ZipFile.Read(zipToExtract, options)) + { + foreach (ZipEntry e in zip) + { + e.Extract(extractDirectory); + } + } + + + + + Dim zipToExtract as String = "MyArchive.zip" + Dim extractDirectory as String = "extract" + Dim options as New ReadOptions + options.Encoding = System.Text.Encoding.GetEncoding(950) + options.StatusMessageWriter = System.Console.Out + Using zip As ZipFile = ZipFile.Read(zipToExtract, options) + Dim e As ZipEntry + For Each e In zip + e.Extract(extractDirectory) + Next + End Using + + + + + + + + This example shows how to read a zip file using the default + code page, to remove entries that have a modified date before a given threshold, + sending status messages out to a StringWriter. + + + + var options = new ReadOptions + { + StatusMessageWriter = new System.IO.StringWriter() + }; + using (ZipFile zip = ZipFile.Read("PackedDocuments.zip", options)) + { + var Threshold = new DateTime(2007,7,4); + // We cannot remove the entry from the list, within the context of + // an enumeration of said list. + // So we add the doomed entry to a list to be removed later. + // pass 1: mark the entries for removal + var MarkedEntries = new System.Collections.Generic.List<ZipEntry>(); + foreach (ZipEntry e in zip) + { + if (e.LastModified < Threshold) + MarkedEntries.Add(e); + } + // pass 2: actually remove the entry. + foreach (ZipEntry zombie in MarkedEntries) + zip.RemoveEntry(zombie); + zip.Comment = "This archive has been updated."; + zip.Save(); + } + // can now use contents of sw, eg store in an audit log + + + + Dim options as New ReadOptions + options.StatusMessageWriter = New System.IO.StringWriter + Using zip As ZipFile = ZipFile.Read("PackedDocuments.zip", options) + Dim Threshold As New DateTime(2007, 7, 4) + ' We cannot remove the entry from the list, within the context of + ' an enumeration of said list. + ' So we add the doomed entry to a list to be removed later. + ' pass 1: mark the entries for removal + Dim MarkedEntries As New System.Collections.Generic.List(Of ZipEntry) + Dim e As ZipEntry + For Each e In zip + If (e.LastModified < Threshold) Then + MarkedEntries.Add(e) + End If + Next + ' pass 2: actually remove the entry. + Dim zombie As ZipEntry + For Each zombie In MarkedEntries + zip.RemoveEntry(zombie) + Next + zip.Comment = "This archive has been updated." + zip.Save + End Using + ' can now use contents of sw, eg store in an audit log + + + + + Thrown if the zipfile cannot be read. The implementation of + this method relies on System.IO.File.OpenRead, which + can throw a variety of exceptions, including specific + exceptions if a file is not found, an unauthorized access + exception, exceptions for poorly formatted filenames, and so + on. + + + + The name of the zip archive to open. + This can be a fully-qualified or relative pathname. + + + + The set of options to use when reading the zip file. + + + The ZipFile instance read from the zip archive. + + + + + + + Reads a zip file archive using the specified text encoding, the specified + TextWriter for status messages, and the specified ReadProgress event handler, + and returns the instance. + + + + The name of the zip archive to open. + This can be a fully-qualified or relative pathname. + + + + An event handler for Read operations. + + + + The System.IO.TextWriter to use for writing verbose status messages + during operations on the zip archive. A console application may wish to + pass System.Console.Out to get messages on the Console. A graphical + or headless application may wish to capture the messages in a different + TextWriter, such as a System.IO.StringWriter. + + + + The System.Text.Encoding to use when reading in the zip archive. Be + careful specifying the encoding. If the value you use here is not the same + as the Encoding used when the zip archive was created (possibly by a + different archiver) you will get unexpected results and possibly exceptions. + + + The instance read from the zip archive. + + + + + Reads a zip archive from a stream. + + + + + + When reading from a file, it's probably easier to just use + ZipFile.Read(String, ReadOptions). This + overload is useful when when the zip archive content is + available from an already-open stream. The stream must be + open and readable and seekable when calling this method. The + stream is left open when the reading is completed. + + + + Using this overload, the stream is read using the default + System.Text.Encoding, which is the IBM437 + codepage. If you want to specify the encoding to use when + reading the zipfile content, see + ZipFile.Read(Stream, ReadOptions). This + + + + Reading of zip content begins at the current position in the + stream. This means if you have a stream that concatenates + regular data and zip data, if you position the open, readable + stream at the start of the zip data, you will be able to read + the zip archive using this constructor, or any of the ZipFile + constructors that accept a as + input. Some examples of where this might be useful: the zip + content is concatenated at the end of a regular EXE file, as + some self-extracting archives do. (Note: SFX files produced + by DotNetZip do not work this way; they can be read as normal + ZIP files). Another example might be a stream being read from + a database, where the zip content is embedded within an + aggregate stream of data. + + + + + + + This example shows how to Read zip content from a stream, and + extract one entry into a different stream. In this example, + the filename "NameOfEntryInArchive.doc", refers only to the + name of the entry within the zip archive. A file by that + name is not created in the filesystem. The I/O is done + strictly with the given streams. + + + + using (ZipFile zip = ZipFile.Read(InputStream)) + { + zip.Extract("NameOfEntryInArchive.doc", OutputStream); + } + + + + Using zip as ZipFile = ZipFile.Read(InputStream) + zip.Extract("NameOfEntryInArchive.doc", OutputStream) + End Using + + + + the stream containing the zip data. + + The ZipFile instance read from the stream + + + + + Reads a zip file archive from the given stream using the + specified options. + + + + + + When reading from a file, it's probably easier to just use + ZipFile.Read(String, ReadOptions). This + overload is useful when when the zip archive content is + available from an already-open stream. The stream must be + open and readable and seekable when calling this method. The + stream is left open when the reading is completed. + + + + Reading of zip content begins at the current position in the + stream. This means if you have a stream that concatenates + regular data and zip data, if you position the open, readable + stream at the start of the zip data, you will be able to read + the zip archive using this constructor, or any of the ZipFile + constructors that accept a as + input. Some examples of where this might be useful: the zip + content is concatenated at the end of a regular EXE file, as + some self-extracting archives do. (Note: SFX files produced + by DotNetZip do not work this way; they can be read as normal + ZIP files). Another example might be a stream being read from + a database, where the zip content is embedded within an + aggregate stream of data. + + + + the stream containing the zip data. + + + The set of options to use when reading the zip file. + + + + Thrown if the zip archive cannot be read. + + + The ZipFile instance read from the stream. + + + + + + + Reads a zip archive from a stream, using the specified text Encoding, the + specified TextWriter for status messages, + and the specified ReadProgress event handler. + + + + + Reading of zip content begins at the current position in the stream. This + means if you have a stream that concatenates regular data and zip data, if + you position the open, readable stream at the start of the zip data, you + will be able to read the zip archive using this constructor, or any of the + ZipFile constructors that accept a as + input. Some examples of where this might be useful: the zip content is + concatenated at the end of a regular EXE file, as some self-extracting + archives do. (Note: SFX files produced by DotNetZip do not work this + way). Another example might be a stream being read from a database, where + the zip content is embedded within an aggregate stream of data. + + + + the stream containing the zip data. + + + The System.IO.TextWriter to which verbose status messages are written + during operations on the ZipFile. For example, in a console + application, System.Console.Out works, and will get a message for each entry + added to the ZipFile. If the TextWriter is null, no verbose messages + are written. + + + + The text encoding to use when reading entries that do not have the UTF-8 + encoding bit set. Be careful specifying the encoding. If the value you use + here is not the same as the Encoding used when the zip archive was created + (possibly by a different archiver) you will get unexpected results and + possibly exceptions. See the + property for more information. + + + + An event handler for Read operations. + + + an instance of ZipFile + + + + Checks the given file to see if it appears to be a valid zip file. + + + + + Calling this method is equivalent to calling with the testExtract parameter set to false. + + + + The file to check. + true if the file appears to be a zip file. + + + + Checks a file to see if it is a valid zip file. + + + + + This method opens the specified zip file, reads in the zip archive, + verifying the ZIP metadata as it reads. + + + + If everything succeeds, then the method returns true. If anything fails - + for example if an incorrect signature or CRC is found, indicating a + corrupt file, the the method returns false. This method also returns + false for a file that does not exist. + + + + If is true, as part of its check, this + method reads in the content for each entry, expands it, and checks CRCs. + This provides an additional check beyond verifying the zip header and + directory data. + + + + If is true, and if any of the zip entries + are protected with a password, this method will return false. If you want + to verify a ZipFile that has entries which are protected with a + password, you will need to do that manually. + + + + + The zip file to check. + true if the caller wants to extract each entry. + true if the file contains a valid zip file. + + + + Checks a stream to see if it contains a valid zip archive. + + + + + This method reads the zip archive contained in the specified stream, verifying + the ZIP metadata as it reads. If testExtract is true, this method also extracts + each entry in the archive, dumping all the bits into . + + + + If everything succeeds, then the method returns true. If anything fails - + for example if an incorrect signature or CRC is found, indicating a corrupt + file, the the method returns false. This method also returns false for a + file that does not exist. + + + + If testExtract is true, this method reads in the content for each + entry, expands it, and checks CRCs. This provides an additional check + beyond verifying the zip header data. + + + + If testExtract is true, and if any of the zip entries are protected + with a password, this method will return false. If you want to verify a + ZipFile that has entries which are protected with a password, you will need + to do that manually. + + + + + + The stream to check. + true if the caller wants to extract each entry. + true if the stream contains a valid zip archive. + + + + Delete file with retry on UnauthorizedAccessException. + + + + + When calling File.Delete() on a file that has been "recently" + created, the call sometimes fails with + UnauthorizedAccessException. This method simply retries the Delete 3 + times with a sleep between tries. + + + + the name of the file to be deleted + + + + Saves the Zip archive to a file, specified by the Name property of the + ZipFile. + + + + + The ZipFile instance is written to storage, typically a zip file + in a filesystem, only when the caller calls Save. In the typical + case, the Save operation writes the zip content to a temporary file, and + then renames the temporary file to the desired name. If necessary, this + method will delete a pre-existing file before the rename. + + + + The property is specified either explicitly, + or implicitly using one of the parameterized ZipFile constructors. For + COM Automation clients, the Name property must be set explicitly, + because COM Automation clients cannot call parameterized constructors. + + + + When using a filesystem file for the Zip output, it is possible to call + Save multiple times on the ZipFile instance. With each + call the zip content is re-written to the same output file. + + + + Data for entries that have been added to the ZipFile instance is + written to the output when the Save method is called. This means + that the input streams for those entries must be available at the time + the application calls Save. If, for example, the application + adds entries with AddEntry using a dynamically-allocated + MemoryStream, the memory stream must not have been disposed + before the call to Save. See the property for more discussion of the + availability requirements of the input stream for an entry, and an + approach for providing just-in-time stream lifecycle management. + + + + + + + + Thrown if you haven't specified a location or stream for saving the zip, + either in the constructor or by setting the Name property, or if you try + to save a regular zip archive to a filename with a .exe extension. + + + + Thrown if is non-zero, and the number + of segments that would be generated for the spanned zip file during the + save operation exceeds 99. If this happens, you need to increase the + segment size. + + + + + + Save the file to a new zipfile, with the given name. + + + + + This method allows the application to explicitly specify the name of the zip + file when saving. Use this when creating a new zip file, or when + updating a zip archive. + + + + An application can also save a zip archive in several places by calling this + method multiple times in succession, with different filenames. + + + + The ZipFile instance is written to storage, typically a zip file in a + filesystem, only when the caller calls Save. The Save operation writes + the zip content to a temporary file, and then renames the temporary file + to the desired name. If necessary, this method will delete a pre-existing file + before the rename. + + + + + + Thrown if you specify a directory for the filename. + + + + The name of the zip archive to save to. Existing files will + be overwritten with great prejudice. + + + + This example shows how to create and Save a zip file. + + using (ZipFile zip = new ZipFile()) + { + zip.AddDirectory(@"c:\reports\January"); + zip.Save("January.zip"); + } + + + + Using zip As New ZipFile() + zip.AddDirectory("c:\reports\January") + zip.Save("January.zip") + End Using + + + + + + This example shows how to update a zip file. + + using (ZipFile zip = ZipFile.Read("ExistingArchive.zip")) + { + zip.AddFile("NewData.csv"); + zip.Save("UpdatedArchive.zip"); + } + + + + Using zip As ZipFile = ZipFile.Read("ExistingArchive.zip") + zip.AddFile("NewData.csv") + zip.Save("UpdatedArchive.zip") + End Using + + + + + + + Save the zip archive to the specified stream. + + + + + The ZipFile instance is written to storage - typically a zip file + in a filesystem, but using this overload, the storage can be anything + accessible via a writable stream - only when the caller calls Save. + + + + Use this method to save the zip content to a stream directly. A common + scenario is an ASP.NET application that dynamically generates a zip file + and allows the browser to download it. The application can call + Save(Response.OutputStream) to write a zipfile directly to the + output stream, without creating a zip file on the disk on the ASP.NET + server. + + + + Be careful when saving a file to a non-seekable stream, including + Response.OutputStream. When DotNetZip writes to a non-seekable + stream, the zip archive is formatted in such a way that may not be + compatible with all zip tools on all platforms. It's a perfectly legal + and compliant zip file, but some people have reported problems opening + files produced this way using the Mac OS archive utility. + + + + + + + This example saves the zipfile content into a MemoryStream, and + then gets the array of bytes from that MemoryStream. + + + using (var zip = new Ionic.Zip.ZipFile()) + { + zip.CompressionLevel= Ionic.Zlib.CompressionLevel.BestCompression; + zip.Password = "VerySecret."; + zip.Encryption = EncryptionAlgorithm.WinZipAes128; + zip.AddFile(sourceFileName); + MemoryStream output = new MemoryStream(); + zip.Save(output); + + byte[] zipbytes = output.ToArray(); + } + + + + + + This example shows a pitfall you should avoid. DO NOT read + from a stream, then try to save to the same stream. DO + NOT DO THIS: + + + + using (var fs = new FileSteeam(filename, FileMode.Open)) + { + using (var zip = Ionic.Zip.ZipFile.Read(inputStream)) + { + zip.AddEntry("Name1.txt", "this is the content"); + zip.Save(inputStream); // NO NO NO!! + } + } + + + + Better like this: + + + + using (var zip = Ionic.Zip.ZipFile.Read(filename)) + { + zip.AddEntry("Name1.txt", "this is the content"); + zip.Save(); // YES! + } + + + + + + The System.IO.Stream to write to. It must be + writable. If you created the ZipFile instanct by calling + ZipFile.Read(), this stream must not be the same stream + you passed to ZipFile.Read(). + + + + + Saves the ZipFile instance to a self-extracting zip archive. + + + + + + The generated exe image will execute on any machine that has the .NET + Framework 2.0 installed on it. The generated exe image is also a + valid ZIP file, readable with DotNetZip or another Zip library or tool + such as WinZip. + + + + There are two "flavors" of self-extracting archive. The + WinFormsApplication version will pop up a GUI and allow the + user to select a target directory into which to extract. There's also + a checkbox allowing the user to specify to overwrite existing files, + and another checkbox to allow the user to request that Explorer be + opened to see the extracted files after extraction. The other flavor + is ConsoleApplication. A self-extractor generated with that + flavor setting will run from the command line. It accepts command-line + options to set the overwrite behavior, and to specify the target + extraction directory. + + + + There are a few temporary files created during the saving to a + self-extracting zip. These files are created in the directory pointed + to by , which defaults to . These temporary files are + removed upon successful completion of this method. + + + + When a user runs the WinForms SFX, the user's personal directory (Environment.SpecialFolder.Personal) + will be used as the default extract location. If you want to set the + default extract location, you should use the other overload of + SaveSelfExtractor()/ The user who runs the SFX will have the + opportunity to change the extract directory before extracting. When + the user runs the Command-Line SFX, the user must explicitly specify + the directory to which to extract. The .NET Framework 2.0 is required + on the computer when the self-extracting archive is run. + + + + NB: This method is not available in the version of DotNetZip build for + the .NET Compact Framework, nor in the "Reduced" DotNetZip library. + + + + + + + string DirectoryPath = "c:\\Documents\\Project7"; + using (ZipFile zip = new ZipFile()) + { + zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)); + zip.Comment = "This will be embedded into a self-extracting console-based exe"; + zip.SaveSelfExtractor("archive.exe", SelfExtractorFlavor.ConsoleApplication); + } + + + Dim DirectoryPath As String = "c:\Documents\Project7" + Using zip As New ZipFile() + zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)) + zip.Comment = "This will be embedded into a self-extracting console-based exe" + zip.SaveSelfExtractor("archive.exe", SelfExtractorFlavor.ConsoleApplication) + End Using + + + + + a pathname, possibly fully qualified, to be created. Typically it + will end in an .exe extension. + + Indicates whether a Winforms or Console self-extractor is + desired. + + + + Saves the ZipFile instance to a self-extracting zip archive, using + the specified save options. + + + + + This method saves a self extracting archive, using the specified save + options. These options include the flavor of the SFX, the default extract + directory, the icon file, and so on. See the documentation + for for more + details. + + + + The user who runs the SFX will have the opportunity to change the extract + directory before extracting. If at the time of extraction, the specified + directory does not exist, the SFX will create the directory before + extracting the files. + + + + + + This example saves a WinForms-based self-extracting archive EXE that + will use c:\ExtractHere as the default extract location. The C# code + shows syntax for .NET 3.0, which uses an object initializer for + the SelfExtractorOptions object. + + string DirectoryPath = "c:\\Documents\\Project7"; + using (ZipFile zip = new ZipFile()) + { + zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)); + zip.Comment = "This will be embedded into a self-extracting WinForms-based exe"; + var options = new SelfExtractorOptions + { + Flavor = SelfExtractorFlavor.WinFormsApplication, + DefaultExtractDirectory = "%USERPROFILE%\\ExtractHere", + PostExtractCommandLine = ExeToRunAfterExtract, + SfxExeWindowTitle = "My Custom Window Title", + RemoveUnpackedFilesAfterExecute = true + }; + zip.SaveSelfExtractor("archive.exe", options); + } + + + Dim DirectoryPath As String = "c:\Documents\Project7" + Using zip As New ZipFile() + zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)) + zip.Comment = "This will be embedded into a self-extracting console-based exe" + Dim options As New SelfExtractorOptions() + options.Flavor = SelfExtractorFlavor.WinFormsApplication + options.DefaultExtractDirectory = "%USERPROFILE%\\ExtractHere" + options.PostExtractCommandLine = ExeToRunAfterExtract + options.SfxExeWindowTitle = "My Custom Window Title" + options.RemoveUnpackedFilesAfterExecute = True + zip.SaveSelfExtractor("archive.exe", options) + End Using + + + + The name of the EXE to generate. + provides the options for creating the + Self-extracting archive. + + + + Adds to the ZipFile a set of files from the current working directory on + disk, that conform to the specified criteria. + + + + + This method selects files from the the current working directory matching + the specified criteria, and adds them to the ZipFile. + + + + Specify the criteria in statements of 3 elements: a noun, an operator, and + a value. Consider the string "name != *.doc" . The noun is "name". The + operator is "!=", implying "Not Equal". The value is "*.doc". That + criterion, in English, says "all files with a name that does not end in + the .doc extension." + + + + Supported nouns include "name" (or "filename") for the filename; "atime", + "mtime", and "ctime" for last access time, last modfied time, and created + time of the file, respectively; "attributes" (or "attrs") for the file + attributes; "size" (or "length") for the file length (uncompressed), and + "type" for the type of object, either a file or a directory. The + "attributes", "name" and "type" nouns both support = and != as operators. + The "size", "atime", "mtime", and "ctime" nouns support = and !=, and + >, >=, <, <= as well. The times are taken to be expressed in + local time. + + + + Specify values for the file attributes as a string with one or more of the + characters H,R,S,A,I,L in any order, implying file attributes of Hidden, + ReadOnly, System, Archive, NotContextIndexed, and ReparsePoint (symbolic + link) respectively. + + + + To specify a time, use YYYY-MM-DD-HH:mm:ss or YYYY/MM/DD-HH:mm:ss as the + format. If you omit the HH:mm:ss portion, it is assumed to be 00:00:00 + (midnight). + + + + The value for a size criterion is expressed in integer quantities of bytes, + kilobytes (use k or kb after the number), megabytes (m or mb), or gigabytes + (g or gb). + + + + The value for a name is a pattern to match against the filename, potentially + including wildcards. The pattern follows CMD.exe glob rules: * implies one + or more of any character, while ? implies one character. If the name + pattern contains any slashes, it is matched to the entire filename, + including the path; otherwise, it is matched against only the filename + without the path. This means a pattern of "*\*.*" matches all files one + directory level deep, while a pattern of "*.*" matches all files in all + directories. + + + + To specify a name pattern that includes spaces, use single quotes around the + pattern. A pattern of "'* *.*'" will match all files that have spaces in + the filename. The full criteria string for that would be "name = '* *.*'" . + + + + The value for a type criterion is either F (implying a file) or D (implying + a directory). + + + + Some examples: + + + + + criteria + Files retrieved + + + + name != *.xls + any file with an extension that is not .xls + + + + + name = *.mp3 + any file with a .mp3 extension. + + + + + *.mp3 + (same as above) any file with a .mp3 extension. + + + + + attributes = A + all files whose attributes include the Archive bit. + + + + + attributes != H + all files whose attributes do not include the Hidden bit. + + + + + mtime > 2009-01-01 + all files with a last modified time after January 1st, 2009. + + + + + size > 2gb + all files whose uncompressed size is greater than 2gb. + + + + + type = D + all directories in the filesystem. + + + + + + You can combine criteria with the conjunctions AND or OR. Using a string + like "name = *.txt AND size >= 100k" for the selectionCriteria retrieves + entries whose names end in .txt, and whose uncompressed size is greater than + or equal to 100 kilobytes. + + + + For more complex combinations of criteria, you can use parenthesis to group + clauses in the boolean logic. Without parenthesis, the precedence of the + criterion atoms is determined by order of appearance. Unlike the C# + language, the AND conjunction does not take precendence over the logical OR. + This is important only in strings that contain 3 or more criterion atoms. + In other words, "name = *.txt and size > 1000 or attributes = H" implies + "((name = *.txt AND size > 1000) OR attributes = H)" while "attributes = + H OR name = *.txt and size > 1000" evaluates to "((attributes = H OR name + = *.txt) AND size > 1000)". When in doubt, use parenthesis. + + + + Using time properties requires some extra care. If you want to retrieve all + entries that were last updated on 2009 February 14, specify a time range + like so:"mtime >= 2009-02-14 AND mtime < 2009-02-15". Read this to + say: all files updated after 12:00am on February 14th, until 12:00am on + February 15th. You can use the same bracketing approach to specify any time + period - a year, a month, a week, and so on. + + + + The syntax allows one special case: if you provide a string with no spaces, it is + treated as a pattern to match for the filename. Therefore a string like "*.xls" + will be equivalent to specifying "name = *.xls". + + + + There is no logic in this method that insures that the file inclusion + criteria are internally consistent. For example, it's possible to specify + criteria that says the file must have a size of less than 100 bytes, as well + as a size that is greater than 1000 bytes. Obviously no file will ever + satisfy such criteria, but this method does not detect such logical + inconsistencies. The caller is responsible for insuring the criteria are + sensible. + + + + Using this method, the file selection does not recurse into + subdirectories, and the full path of the selected files is included in the + entries added into the zip archive. If you don't like these behaviors, + see the other overloads of this method. + + + + + This example zips up all *.csv files in the current working directory. + + using (ZipFile zip = new ZipFile()) + { + // To just match on filename wildcards, + // use the shorthand form of the selectionCriteria string. + zip.AddSelectedFiles("*.csv"); + zip.Save(PathToZipArchive); + } + + + Using zip As ZipFile = New ZipFile() + zip.AddSelectedFiles("*.csv") + zip.Save(PathToZipArchive) + End Using + + + + The criteria for file selection + + + + Adds to the ZipFile a set of files from the disk that conform to the + specified criteria, optionally recursing into subdirectories. + + + + + This method selects files from the the current working directory matching + the specified criteria, and adds them to the ZipFile. If + recurseDirectories is true, files are also selected from + subdirectories, and the directory structure in the filesystem is + reproduced in the zip archive, rooted at the current working directory. + + + + Using this method, the full path of the selected files is included in the + entries added into the zip archive. If you don't want this behavior, use + one of the overloads of this method that allows the specification of a + directoryInArchive. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + + + + This example zips up all *.xml files in the current working directory, or any + subdirectory, that are larger than 1mb. + + + using (ZipFile zip = new ZipFile()) + { + // Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.xml and size > 1024kb", true); + zip.Save(PathToZipArchive); + } + + + Using zip As ZipFile = New ZipFile() + ' Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.xml and size > 1024kb", true) + zip.Save(PathToZipArchive) + End Using + + + + The criteria for file selection + + + If true, the file selection will recurse into subdirectories. + + + + + Adds to the ZipFile a set of files from a specified directory in the + filesystem, that conform to the specified criteria. + + + + + This method selects files that conform to the specified criteria, from the + the specified directory on disk, and adds them to the ZipFile. The search + does not recurse into subdirectores. + + + + Using this method, the full filesystem path of the files on disk is + reproduced on the entries added to the zip file. If you don't want this + behavior, use one of the other overloads of this method. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + + + + This example zips up all *.xml files larger than 1mb in the directory + given by "d:\rawdata". + + + using (ZipFile zip = new ZipFile()) + { + // Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.xml and size > 1024kb", "d:\\rawdata"); + zip.Save(PathToZipArchive); + } + + + + Using zip As ZipFile = New ZipFile() + ' Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.xml and size > 1024kb", "d:\rawdata) + zip.Save(PathToZipArchive) + End Using + + + + The criteria for file selection + + + The name of the directory on the disk from which to select files. + + + + + Adds to the ZipFile a set of files from the specified directory on disk, + that conform to the specified criteria. + + + + + + This method selects files from the the specified disk directory matching + the specified selection criteria, and adds them to the ZipFile. If + recurseDirectories is true, files are also selected from + subdirectories. + + + + The full directory structure in the filesystem is reproduced on the + entries added to the zip archive. If you don't want this behavior, use + one of the overloads of this method that allows the specification of a + directoryInArchive. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + + + This example zips up all *.csv files in the "files" directory, or any + subdirectory, that have been saved since 2009 February 14th. + + + using (ZipFile zip = new ZipFile()) + { + // Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.csv and mtime > 2009-02-14", "files", true); + zip.Save(PathToZipArchive); + } + + + Using zip As ZipFile = New ZipFile() + ' Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.csv and mtime > 2009-02-14", "files", true) + zip.Save(PathToZipArchive) + End Using + + + + + This example zips up all files in the current working + directory, and all its child directories, except those in + the excludethis subdirectory. + + Using Zip As ZipFile = New ZipFile(zipfile) + Zip.AddSelectedFfiles("name != 'excludethis\*.*'", datapath, True) + Zip.Save() + End Using + + + + The criteria for file selection + + + The filesystem path from which to select files. + + + + If true, the file selection will recurse into subdirectories. + + + + + Adds to the ZipFile a selection of files from the specified directory on + disk, that conform to the specified criteria, and using a specified root + path for entries added to the zip archive. + + + + + This method selects files from the specified disk directory matching the + specified selection criteria, and adds those files to the ZipFile, using + the specified directory path in the archive. The search does not recurse + into subdirectories. For details on the syntax for the selectionCriteria + parameter, see . + + + + + + + This example zips up all *.psd files in the "photos" directory that have + been saved since 2009 February 14th, and puts them all in a zip file, + using the directory name of "content" in the zip archive itself. When the + zip archive is unzipped, the folder containing the .psd files will be + named "content". + + + using (ZipFile zip = new ZipFile()) + { + // Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.psd and mtime > 2009-02-14", "photos", "content"); + zip.Save(PathToZipArchive); + } + + + Using zip As ZipFile = New ZipFile + zip.AddSelectedFiles("name = *.psd and mtime > 2009-02-14", "photos", "content") + zip.Save(PathToZipArchive) + End Using + + + + + The criteria for selection of files to add to the ZipFile. + + + + The path to the directory in the filesystem from which to select files. + + + + Specifies a directory path to use to in place of the + directoryOnDisk. This path may, or may not, correspond to a real + directory in the current filesystem. If the files within the zip are + later extracted, this is the path used for the extracted file. Passing + null (nothing in VB) will use the path on the file name, if any; in other + words it would use directoryOnDisk, plus any subdirectory. Passing + the empty string ("") will insert the item at the root path within the + archive. + + + + + Adds to the ZipFile a selection of files from the specified directory on + disk, that conform to the specified criteria, optionally recursing through + subdirectories, and using a specified root path for entries added to the + zip archive. + + + + This method selects files from the specified disk directory that match the + specified selection criteria, and adds those files to the ZipFile, using + the specified directory path in the archive. If recurseDirectories + is true, files are also selected from subdirectories, and the directory + structure in the filesystem is reproduced in the zip archive, rooted at + the directory specified by directoryOnDisk. For details on the + syntax for the selectionCriteria parameter, see . + + + + + This example zips up all files that are NOT *.pst files, in the current + working directory and any subdirectories. + + + using (ZipFile zip = new ZipFile()) + { + zip.AddSelectedFiles("name != *.pst", SourceDirectory, "backup", true); + zip.Save(PathToZipArchive); + } + + + Using zip As ZipFile = New ZipFile + zip.AddSelectedFiles("name != *.pst", SourceDirectory, "backup", true) + zip.Save(PathToZipArchive) + End Using + + + + + The criteria for selection of files to add to the ZipFile. + + + + The path to the directory in the filesystem from which to select files. + + + + Specifies a directory path to use to in place of the + directoryOnDisk. This path may, or may not, correspond to a real + directory in the current filesystem. If the files within the zip are + later extracted, this is the path used for the extracted file. Passing + null (nothing in VB) will use the path on the file name, if any; in other + words it would use directoryOnDisk, plus any subdirectory. Passing + the empty string ("") will insert the item at the root path within the + archive. + + + + If true, the method also scans subdirectories for files matching the + criteria. + + + + + Updates the ZipFile with a selection of files from the disk that conform + to the specified criteria. + + + + This method selects files from the specified disk directory that match the + specified selection criteria, and Updates the ZipFile with those + files, using the specified directory path in the archive. If + recurseDirectories is true, files are also selected from + subdirectories, and the directory structure in the filesystem is + reproduced in the zip archive, rooted at the directory specified by + directoryOnDisk. For details on the syntax for the + selectionCriteria parameter, see . + + + + The criteria for selection of files to add to the ZipFile. + + + + The path to the directory in the filesystem from which to select files. + + + + Specifies a directory path to use to in place of the + directoryOnDisk. This path may, or may not, correspond to a + real directory in the current filesystem. If the files within the zip + are later extracted, this is the path used for the extracted file. + Passing null (nothing in VB) will use the path on the file name, if + any; in other words it would use directoryOnDisk, plus any + subdirectory. Passing the empty string ("") will insert the item at + the root path within the archive. + + + + If true, the method also scans subdirectories for files matching the criteria. + + + + + + + Retrieve entries from the zipfile by specified criteria. + + + + + This method allows callers to retrieve the collection of entries from the zipfile + that fit the specified criteria. The criteria are described in a string format, and + can include patterns for the filename; constraints on the size of the entry; + constraints on the last modified, created, or last accessed time for the file + described by the entry; or the attributes of the entry. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + This method is intended for use with a ZipFile that has been read from storage. + When creating a new ZipFile, this method will work only after the ZipArchive has + been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip + archive from storage.) Calling SelectEntries on a ZipFile that has not yet been + saved will deliver undefined results. + + + + + Thrown if selectionCriteria has an invalid syntax. + + + + This example selects all the PhotoShop files from within an archive, and extracts them + to the current working directory. + + using (ZipFile zip1 = ZipFile.Read(ZipFileName)) + { + var PhotoShopFiles = zip1.SelectEntries("*.psd"); + foreach (ZipEntry psd in PhotoShopFiles) + { + psd.Extract(); + } + } + + + Using zip1 As ZipFile = ZipFile.Read(ZipFileName) + Dim PhotoShopFiles as ICollection(Of ZipEntry) + PhotoShopFiles = zip1.SelectEntries("*.psd") + Dim psd As ZipEntry + For Each psd In PhotoShopFiles + psd.Extract + Next + End Using + + + the string that specifies which entries to select + a collection of ZipEntry objects that conform to the inclusion spec + + + + Retrieve entries from the zipfile by specified criteria. + + + + + This method allows callers to retrieve the collection of entries from the zipfile + that fit the specified criteria. The criteria are described in a string format, and + can include patterns for the filename; constraints on the size of the entry; + constraints on the last modified, created, or last accessed time for the file + described by the entry; or the attributes of the entry. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + This method is intended for use with a ZipFile that has been read from storage. + When creating a new ZipFile, this method will work only after the ZipArchive has + been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip + archive from storage.) Calling SelectEntries on a ZipFile that has not yet been + saved will deliver undefined results. + + + + + Thrown if selectionCriteria has an invalid syntax. + + + + + using (ZipFile zip1 = ZipFile.Read(ZipFileName)) + { + var UpdatedPhotoShopFiles = zip1.SelectEntries("*.psd", "UpdatedFiles"); + foreach (ZipEntry e in UpdatedPhotoShopFiles) + { + // prompt for extract here + if (WantExtract(e.FileName)) + e.Extract(); + } + } + + + Using zip1 As ZipFile = ZipFile.Read(ZipFileName) + Dim UpdatedPhotoShopFiles As ICollection(Of ZipEntry) = zip1.SelectEntries("*.psd", "UpdatedFiles") + Dim e As ZipEntry + For Each e In UpdatedPhotoShopFiles + ' prompt for extract here + If Me.WantExtract(e.FileName) Then + e.Extract + End If + Next + End Using + + + the string that specifies which entries to select + + + the directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + + a collection of ZipEntry objects that conform to the inclusion spec + + + + Remove entries from the zipfile by specified criteria. + + + + + This method allows callers to remove the collection of entries from the zipfile + that fit the specified criteria. The criteria are described in a string format, and + can include patterns for the filename; constraints on the size of the entry; + constraints on the last modified, created, or last accessed time for the file + described by the entry; or the attributes of the entry. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + This method is intended for use with a ZipFile that has been read from storage. + When creating a new ZipFile, this method will work only after the ZipArchive has + been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip + archive from storage.) Calling SelectEntries on a ZipFile that has not yet been + saved will deliver undefined results. + + + + + Thrown if selectionCriteria has an invalid syntax. + + + + This example removes all entries in a zip file that were modified prior to January 1st, 2008. + + using (ZipFile zip1 = ZipFile.Read(ZipFileName)) + { + // remove all entries from prior to Jan 1, 2008 + zip1.RemoveEntries("mtime < 2008-01-01"); + // don't forget to save the archive! + zip1.Save(); + } + + + Using zip As ZipFile = ZipFile.Read(ZipFileName) + ' remove all entries from prior to Jan 1, 2008 + zip1.RemoveEntries("mtime < 2008-01-01") + ' do not forget to save the archive! + zip1.Save + End Using + + + the string that specifies which entries to select + the number of entries removed + + + + Remove entries from the zipfile by specified criteria, and within the specified + path in the archive. + + + + + This method allows callers to remove the collection of entries from the zipfile + that fit the specified criteria. The criteria are described in a string format, and + can include patterns for the filename; constraints on the size of the entry; + constraints on the last modified, created, or last accessed time for the file + described by the entry; or the attributes of the entry. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + This method is intended for use with a ZipFile that has been read from storage. + When creating a new ZipFile, this method will work only after the ZipArchive has + been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip + archive from storage.) Calling SelectEntries on a ZipFile that has not yet been + saved will deliver undefined results. + + + + + Thrown if selectionCriteria has an invalid syntax. + + + + + using (ZipFile zip1 = ZipFile.Read(ZipFileName)) + { + // remove all entries from prior to Jan 1, 2008 + zip1.RemoveEntries("mtime < 2008-01-01", "documents"); + // a call to ZipFile.Save will make the modifications permanent + zip1.Save(); + } + + + Using zip As ZipFile = ZipFile.Read(ZipFileName) + ' remove all entries from prior to Jan 1, 2008 + zip1.RemoveEntries("mtime < 2008-01-01", "documents") + ' a call to ZipFile.Save will make the modifications permanent + zip1.Save + End Using + + + + the string that specifies which entries to select + + the directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + the number of entries removed + + + + Selects and Extracts a set of Entries from the ZipFile. + + + + + The entries are extracted into the current working directory. + + + + If any of the files to be extracted already exist, then the action taken is as + specified in the property on the + corresponding ZipEntry instance. By default, the action taken in this case is to + throw an exception. + + + + For information on the syntax of the selectionCriteria string, + see . + + + + + This example shows how extract all XML files modified after 15 January 2009. + + using (ZipFile zip = ZipFile.Read(zipArchiveName)) + { + zip.ExtractSelectedEntries("name = *.xml and mtime > 2009-01-15"); + } + + + the selection criteria for entries to extract. + + + + + + Selects and Extracts a set of Entries from the ZipFile. + + + + + The entries are extracted into the current working directory. When extraction would would + overwrite an existing filesystem file, the action taken is as specified in the + parameter. + + + + For information on the syntax of the string describing the entry selection criteria, + see . + + + + + This example shows how extract all XML files modified after 15 January 2009, + overwriting any existing files. + + using (ZipFile zip = ZipFile.Read(zipArchiveName)) + { + zip.ExtractSelectedEntries("name = *.xml and mtime > 2009-01-15", + ExtractExistingFileAction.OverwriteSilently); + } + + + + the selection criteria for entries to extract. + + + The action to take if extraction would overwrite an existing file. + + + + + Selects and Extracts a set of Entries from the ZipFile. + + + + + The entries are selected from the specified directory within the archive, and then + extracted into the current working directory. + + + + If any of the files to be extracted already exist, then the action taken is as + specified in the property on the + corresponding ZipEntry instance. By default, the action taken in this case is to + throw an exception. + + + + For information on the syntax of the string describing the entry selection criteria, + see . + + + + + This example shows how extract all XML files modified after 15 January 2009, + and writes them to the "unpack" directory. + + using (ZipFile zip = ZipFile.Read(zipArchiveName)) + { + zip.ExtractSelectedEntries("name = *.xml and mtime > 2009-01-15","unpack"); + } + + + + the selection criteria for entries to extract. + + + the directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + + + + + + Selects and Extracts a set of Entries from the ZipFile. + + + + + The entries are extracted into the specified directory. If any of the files to be + extracted already exist, an exception will be thrown. + + + For information on the syntax of the string describing the entry selection criteria, + see . + + + + the selection criteria for entries to extract. + + + the directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + + + the directory on the disk into which to extract. It will be created + if it does not exist. + + + + + Selects and Extracts a set of Entries from the ZipFile. + + + + + The entries are extracted into the specified directory. When extraction would would + overwrite an existing filesystem file, the action taken is as specified in the + parameter. + + + + For information on the syntax of the string describing the entry selection criteria, + see . + + + + + This example shows how extract all files with an XML extension or with a size larger than 100,000 bytes, + and puts them in the unpack directory. For any files that already exist in + that destination directory, they will not be overwritten. + + using (ZipFile zip = ZipFile.Read(zipArchiveName)) + { + zip.ExtractSelectedEntries("name = *.xml or size > 100000", + null, + "unpack", + ExtractExistingFileAction.DontOverwrite); + } + + + + the selection criteria for entries to extract. + + + The directory on the disk into which to extract. It will be created if it does not exist. + + + + The directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + + + The action to take if extraction would overwrite an existing file. + + + + + + Generic IEnumerator support, for use of a ZipFile in an enumeration. + + + + You probably do not want to call GetEnumerator explicitly. Instead + it is implicitly called when you use a loop in C#, or a + For Each loop in VB.NET. + + + + This example reads a zipfile of a given name, then enumerates the + entries in that zip file, and displays the information about each + entry on the Console. + + using (ZipFile zip = ZipFile.Read(zipfile)) + { + bool header = true; + foreach (ZipEntry e in zip) + { + if (header) + { + System.Console.WriteLine("Zipfile: {0}", zip.Name); + System.Console.WriteLine("Version Needed: 0x{0:X2}", e.VersionNeeded); + System.Console.WriteLine("BitField: 0x{0:X2}", e.BitField); + System.Console.WriteLine("Compression Method: 0x{0:X2}", e.CompressionMethod); + System.Console.WriteLine("\n{1,-22} {2,-6} {3,4} {4,-8} {0}", + "Filename", "Modified", "Size", "Ratio", "Packed"); + System.Console.WriteLine(new System.String('-', 72)); + header = false; + } + + System.Console.WriteLine("{1,-22} {2,-6} {3,4:F0}% {4,-8} {0}", + e.FileName, + e.LastModified.ToString("yyyy-MM-dd HH:mm:ss"), + e.UncompressedSize, + e.CompressionRatio, + e.CompressedSize); + + e.Extract(); + } + } + + + + Dim ZipFileToExtract As String = "c:\foo.zip" + Using zip As ZipFile = ZipFile.Read(ZipFileToExtract) + Dim header As Boolean = True + Dim e As ZipEntry + For Each e In zip + If header Then + Console.WriteLine("Zipfile: {0}", zip.Name) + Console.WriteLine("Version Needed: 0x{0:X2}", e.VersionNeeded) + Console.WriteLine("BitField: 0x{0:X2}", e.BitField) + Console.WriteLine("Compression Method: 0x{0:X2}", e.CompressionMethod) + Console.WriteLine(ChrW(10) & "{1,-22} {2,-6} {3,4} {4,-8} {0}", _ + "Filename", "Modified", "Size", "Ratio", "Packed" ) + Console.WriteLine(New String("-"c, 72)) + header = False + End If + Console.WriteLine("{1,-22} {2,-6} {3,4:F0}% {4,-8} {0}", _ + e.FileName, _ + e.LastModified.ToString("yyyy-MM-dd HH:mm:ss"), _ + e.UncompressedSize, _ + e.CompressionRatio, _ + e.CompressedSize ) + e.Extract + Next + End Using + + + + A generic enumerator suitable for use within a foreach loop. + + + + An IEnumerator, for use of a ZipFile in a foreach construct. + + + + This method is included for COM support. An application generally does not call + this method directly. It is called implicitly by COM clients when enumerating + the entries in the ZipFile instance. In VBScript, this is done with a For Each + statement. In Javascript, this is done with new Enumerator(zipfile). + + + + The IEnumerator over the entries in the ZipFile. + + + + + Options for using ZIP64 extensions when saving zip archives. + + + + + + Designed many years ago, the original zip + specification from PKWARE allowed for 32-bit quantities for the + compressed and uncompressed sizes of zip entries, as well as a 32-bit quantity + for specifying the length of the zip archive itself, and a maximum of 65535 + entries. These limits are now regularly exceeded in many backup and archival + scenarios. Recently, PKWare added extensions to the original zip spec, called + "ZIP64 extensions", to raise those limitations. This property governs whether + DotNetZip will use those extensions when writing zip archives. The use of + these extensions is optional and explicit in DotNetZip because, despite the + status of ZIP64 as a bona fide standard, many other zip tools and libraries do + not support ZIP64, and therefore a zip file with ZIP64 extensions may be + unreadable by some of those other tools. + + + + Set this property to to always use ZIP64 + extensions when saving, regardless of whether your zip archive needs it. + Suppose you add 5 files, each under 100k, to a ZipFile. If you specify Always + for this flag, you will get a ZIP64 archive, though the archive does not need + to use ZIP64 because none of the original zip limits had been exceeded. + + + + Set this property to to tell the DotNetZip + library to never use ZIP64 extensions. This is useful for maximum + compatibility and interoperability, at the expense of the capability of + handling large files or large archives. NB: Windows Explorer in Windows XP + and Windows Vista cannot currently extract files from a zip64 archive, so if + you want to guarantee that a zip archive produced by this library will work in + Windows Explorer, use Never. If you set this property to , and your application creates a zip that would + exceed one of the Zip limits, the library will throw an exception while saving + the zip file. + + + + Set this property to to tell the + DotNetZip library to use the ZIP64 extensions when required by the + entry. After the file is compressed, the original and compressed sizes are + checked, and if they exceed the limits described above, then zip64 can be + used. That is the general idea, but there is an additional wrinkle when saving + to a non-seekable device, like the ASP.NET Response.OutputStream, or + Console.Out. When using non-seekable streams for output, the entry + header - which indicates whether zip64 is in use - is emitted before it is + known if zip64 is necessary. It is only after all entries have been saved + that it can be known if ZIP64 will be required. On seekable output streams, + after saving all entries, the library can seek backward and re-emit the zip + file header to be consistent with the actual ZIP64 requirement. But using a + non-seekable output stream, the library cannot seek backward, so the header + can never be changed. In other words, the archive's use of ZIP64 extensions is + not alterable after the header is emitted. Therefore, when saving to + non-seekable streams, using is the same + as using : it will always produce a zip + archive that uses ZIP64 extensions. + + + + + + + The default behavior, which is "Never". + (For COM clients, this is a 0 (zero).) + + + + + Do not use ZIP64 extensions when writing zip archives. + (For COM clients, this is a 0 (zero).) + + + + + Use ZIP64 extensions when writing zip archives, as necessary. + For example, when a single entry exceeds 0xFFFFFFFF in size, or when the archive as a whole + exceeds 0xFFFFFFFF in size, or when there are more than 65535 entries in an archive. + (For COM clients, this is a 1.) + + + + + Always use ZIP64 extensions when writing zip archives, even when unnecessary. + (For COM clients, this is a 2.) + + + + + An enum representing the values on a three-way toggle switch + for various options in the library. This might be used to + specify whether to employ a particular text encoding, or to use + ZIP64 extensions, or some other option. + + + + + The default behavior. This is the same as "Never". + (For COM clients, this is a 0 (zero).) + + + + + Never use the associated option. + (For COM clients, this is a 0 (zero).) + + + + + Use the associated behavior "as necessary." + (For COM clients, this is a 1.) + + + + + Use the associated behavior Always, whether necessary or not. + (For COM clients, this is a 2.) + + + + + A class for collecting the various options that can be used when + Reading zip files for extraction or update. + + + + + When reading a zip file, there are several options an + application can set, to modify how the file is read, or what + the library does while reading. This class collects those + options into one container. + + + + Pass an instance of the ReadOptions class into the + ZipFile.Read() method. + + + . + . + + + + + An event handler for Read operations. When opening large zip + archives, you may want to display a progress bar or other + indicator of status progress while reading. This parameter + allows you to specify a ReadProgress Event Handler directly. + When you call Read(), the progress event is invoked as + necessary. + + + + + The System.IO.TextWriter to use for writing verbose status messages + during operations on the zip archive. A console application may wish to + pass System.Console.Out to get messages on the Console. A graphical + or headless application may wish to capture the messages in a different + TextWriter, such as a System.IO.StringWriter. + + + + + The System.Text.Encoding to use when reading in the zip archive. Be + careful specifying the encoding. If the value you use here is not the same + as the Encoding used when the zip archive was created (possibly by a + different archiver) you will get unexpected results and possibly exceptions. + + + + + + + + An enum that provides the different self-extractor flavors + + + + + A self-extracting zip archive that runs from the console or + command line. + + + + + A self-extracting zip archive that presents a graphical user + interface when it is executed. + + + + + The options for generating a self-extracting archive. + + + + + The type of SFX to create. + + + + + The command to run after extraction. + + + + + This is optional. Leave it empty (null in C# or Nothing in + VB) to run no command after extraction. + + + + If it is non-empty, the SFX will execute the command specified in this + string on the user's machine, and using the extract directory as the + working directory for the process, after unpacking the archive. The + program to execute can include a path, if you like. If you want to execute + a program that accepts arguments, specify the program name, followed by a + space, and then the arguments for the program, each separated by a space, + just as you would on a normal command line. Example: program.exe arg1 + arg2. The string prior to the first space will be taken as the + program name, and the string following the first space specifies the + arguments to the program. + + + + If you want to execute a program that has a space in the name or path of + the file, surround the program name in double-quotes. The first character + of the command line should be a double-quote character, and there must be + a matching double-quote following the end of the program file name. Any + optional arguments to the program follow that, separated by + spaces. Example: "c:\project files\program name.exe" arg1 arg2. + + + + If the flavor of the SFX is SelfExtractorFlavor.ConsoleApplication, + then the SFX starts a new process, using this string as the post-extract + command line. The SFX waits for the process to exit. The exit code of + the post-extract command line is returned as the exit code of the + command-line self-extractor exe. A non-zero exit code is typically used to + indicated a failure by the program. In the case of an SFX, a non-zero exit + code may indicate a failure during extraction, OR, it may indicate a + failure of the run-after-extract program if specified, OR, it may indicate + the run-after-extract program could not be fuond. There is no way to + distinguish these conditions from the calling shell, aside from parsing + the output of the SFX. If you have Quiet set to true, you may not + see error messages, if a problem occurs. + + + + If the flavor of the SFX is + SelfExtractorFlavor.WinFormsApplication, then the SFX starts a new + process, using this string as the post-extract command line, and using the + extract directory as the working directory for the process. The SFX does + not wait for the command to complete, and does not check the exit code of + the program. If the run-after-extract program cannot be fuond, a message + box is displayed indicating that fact. + + + + You can specify environment variables within this string, with a format like + %NAME%. The value of these variables will be expanded at the time + the SFX is run. Example: %WINDIR%\system32\xcopy.exe may expand at + runtime to c:\Windows\System32\xcopy.exe. + + + + By combining this with the RemoveUnpackedFilesAfterExecute + flag, you can create an SFX that extracts itself, runs a file that + was extracted, then deletes all the files that were extracted. If + you want it to run "invisibly" then set Flavor to + SelfExtractorFlavor.ConsoleApplication, and set Quiet + to true. The user running such an EXE will see a console window + appear, then disappear quickly. You may also want to specify the + default extract location, with DefaultExtractDirectory. + + + + If you set Flavor to + SelfExtractorFlavor.WinFormsApplication, and set Quiet to + true, then a GUI with progressbars is displayed, but it is + "non-interactive" - it accepts no input from the user. Instead the SFX + just automatically unpacks and exits. + + + + + + + The default extract directory the user will see when + running the self-extracting archive. + + + + + Passing null (or Nothing in VB) here will cause the Self Extractor to use + the the user's personal directory () for the default extract + location. + + + + This is only a default location. The actual extract location will be + settable on the command line when the SFX is executed. + + + + You can specify environment variables within this string, + with %NAME%. The value of these variables will be + expanded at the time the SFX is run. Example: + %USERPROFILE%\Documents\unpack may expand at runtime to + c:\users\melvin\Documents\unpack. + + + + + + The name of an .ico file in the filesystem to use for the application icon + for the generated SFX. + + + + + Normally, DotNetZip will embed an "zipped folder" icon into the generated + SFX. If you prefer to use a different icon, you can specify it here. It + should be a .ico file. This file is passed as the /win32icon + option to the csc.exe compiler when constructing the SFX file. + + + + + + + Whether the ConsoleApplication SFX will be quiet during extraction. + + + + + This option affects the way the generated SFX runs. By default it is + false. When you set it to true,... + + + + + Flavor + Behavior + + + + ConsoleApplication + no messages will be emitted during successful + operation. Double-clicking the SFX in Windows + Explorer or as an attachment in an email will cause a console + window to appear briefly, before it disappears. If you run the + ConsoleApplication SFX from the cmd.exe prompt, it runs as a + normal console app; by default, because it is quiet, it displays + no messages to the console. If you pass the -v+ command line + argument to the Console SFX when you run it, you will get verbose + messages to the console. + + + + + WinFormsApplication + the SFX extracts automatically when the application + is launched, with no additional user input. + + + + + + + When you set it to false,... + + + + + Flavor + Behavior + + + + ConsoleApplication + the extractor will emit a + message to the console for each entry extracted. + + When double-clicking to launch the SFX, the console window will + remain, and the SFX will emit a message for each file as it + extracts. The messages fly by quickly, they won't be easily + readable, unless the extracted files are fairly large. + + + + + + WinFormsApplication + the SFX presents a forms UI and allows the user to select + options before extracting. + + + + + + + + + + Specify what the self-extractor will do when extracting an entry + would overwrite an existing file. + + + + The default behavvior is to Throw. + + + + + + Whether to remove the files that have been unpacked, after executing the + PostExtractCommandLine. + + + + + If true, and if there is a + PostExtractCommandLine, and if the command runs successfully, + then the files that the SFX unpacked will be removed, afterwards. If + the command does not complete successfully (non-zero return code), + that is interpreted as a failure, and the extracted files will not be + removed. + + + + Setting this flag, and setting Flavor to + SelfExtractorFlavor.ConsoleApplication, and setting Quiet to + true, results in an SFX that extracts itself, runs a file that was + extracted, then deletes all the files that were extracted, with no + intervention by the user. You may also want to specify the default + extract location, with DefaultExtractDirectory. + + + + + + + The file version number to embed into the generated EXE. It will show up, for + example, during a mouseover in Windows Explorer. + + + + + + The product version to embed into the generated EXE. It will show up, for + example, during a mouseover in Windows Explorer. + + + + You can use any arbitrary string, but a human-readable version number is + recommended. For example "v1.2 alpha" or "v4.2 RC2". If you specify nothing, + then there is no product version embedded into the EXE. + + + + + + The copyright notice, if any, to embed into the generated EXE. + + + + It will show up, for example, while viewing properties of the file in + Windows Explorer. You can use any arbitrary string, but typically you + want something like "Copyright � Dino Chiesa 2011". + + + + + + The description to embed into the generated EXE. + + + + Use any arbitrary string. This text will be displayed during a + mouseover in Windows Explorer. If you specify nothing, then the string + "DotNetZip SFX Archive" is embedded into the EXE as the description. + + + + + + The product name to embed into the generated EXE. + + + + Use any arbitrary string. This text will be displayed + while viewing properties of the EXE file in + Windows Explorer. + + + + + + The title to display in the Window of a GUI SFX, while it extracts. + + + + + By default the title show in the GUI window of a self-extractor + is "DotNetZip Self-extractor (http://DotNetZip.codeplex.com/)". + You can change that by setting this property before saving the SFX. + + + + This property has an effect only when producing a Self-extractor + of flavor SelfExtractorFlavor.WinFormsApplication. + + + + + + + Additional options for the csc.exe compiler, when producing the SFX + EXE. + + + + + + Provides a stream metaphor for generating zip files. + + + + + This class writes zip files, as defined in the specification + for zip files described by PKWare. The compression for this + implementation is provided by a managed-code version of Zlib, included with + DotNetZip in the classes in the Ionic.Zlib namespace. + + + + This class provides an alternative programming model to the one enabled by the + class. Use this when creating zip files, as an + alternative to the class, when you would like to use a + Stream type to write the zip file. + + + + Both the ZipOutputStream class and the ZipFile class can be used + to create zip files. Both of them support many of the common zip features, + including Unicode, different compression levels, and ZIP64. They provide + very similar performance when creating zip files. + + + + The ZipFile class is generally easier to use than + ZipOutputStream and should be considered a higher-level interface. For + example, when creating a zip file via calls to the PutNextEntry() and + Write() methods on the ZipOutputStream class, the caller is + responsible for opening the file, reading the bytes from the file, writing + those bytes into the ZipOutputStream, setting the attributes on the + ZipEntry, and setting the created, last modified, and last accessed + timestamps on the zip entry. All of these things are done automatically by a + call to ZipFile.AddFile(). + For this reason, the ZipOutputStream is generally recommended for use + only when your application emits arbitrary data, not necessarily data from a + filesystem file, directly into a zip file, and does so using a Stream + metaphor. + + + + Aside from the differences in programming model, there are other + differences in capability between the two classes. + + + + + ZipFile can be used to read and extract zip files, in addition to + creating zip files. ZipOutputStream cannot read zip files. If you want + to use a stream to read zip files, check out the class. + + + + ZipOutputStream does not support the creation of segmented or spanned + zip files. + + + + ZipOutputStream cannot produce a self-extracting archive. + + + + + Be aware that the ZipOutputStream class implements the interface. In order for + ZipOutputStream to produce a valid zip file, you use use it within + a using clause (Using in VB), or call the Dispose() method + explicitly. See the examples for how to employ a using clause. + + + + Also, a note regarding compression performance: On the desktop .NET + Framework, DotNetZip can use a multi-threaded compression implementation + that provides significant speed increases on large files, over 300k or so, + at the cost of increased memory use at runtime. (The output of the + compression is almost exactly the same size). But, the multi-threaded + approach incurs a performance hit on smaller files. There's no way for the + ZipOutputStream to know whether parallel compression will be beneficial, + because the ZipOutputStream does not know how much data you will write + through the stream. You may wish to set the property to zero, if you are compressing + large files through ZipOutputStream. This will cause parallel + compression to be used, always. + + + + + + Create a ZipOutputStream, wrapping an existing stream. + + + + + The class is generally easier to use when creating + zip files. The ZipOutputStream offers a different metaphor for creating a + zip file, based on the class. + + + + + + The stream to wrap. It must be writable. This stream will be closed at + the time the ZipOutputStream is closed. + + + + + This example shows how to create a zip file, using the + ZipOutputStream class. + + + private void Zipup() + { + if (filesToZip.Count == 0) + { + System.Console.WriteLine("Nothing to do."); + return; + } + + using (var raw = File.Open(_outputFileName, FileMode.Create, FileAccess.ReadWrite )) + { + using (var output= new ZipOutputStream(raw)) + { + output.Password = "VerySecret!"; + output.Encryption = EncryptionAlgorithm.WinZipAes256; + + foreach (string inputFileName in filesToZip) + { + System.Console.WriteLine("file: {0}", inputFileName); + + output.PutNextEntry(inputFileName); + using (var input = File.Open(inputFileName, FileMode.Open, FileAccess.Read, FileShare.Read | FileShare.Write )) + { + byte[] buffer= new byte[2048]; + int n; + while ((n= input.Read(buffer,0,buffer.Length)) > 0) + { + output.Write(buffer,0,n); + } + } + } + } + } + } + + + + Private Sub Zipup() + Dim outputFileName As String = "XmlData.zip" + Dim filesToZip As String() = Directory.GetFiles(".", "*.xml") + If (filesToZip.Length = 0) Then + Console.WriteLine("Nothing to do.") + Else + Using raw As FileStream = File.Open(outputFileName, FileMode.Create, FileAccess.ReadWrite) + Using output As ZipOutputStream = New ZipOutputStream(raw) + output.Password = "VerySecret!" + output.Encryption = EncryptionAlgorithm.WinZipAes256 + Dim inputFileName As String + For Each inputFileName In filesToZip + Console.WriteLine("file: {0}", inputFileName) + output.PutNextEntry(inputFileName) + Using input As FileStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) + Dim n As Integer + Dim buffer As Byte() = New Byte(2048) {} + Do While (n = input.Read(buffer, 0, buffer.Length) > 0) + output.Write(buffer, 0, n) + Loop + End Using + Next + End Using + End Using + End If + End Sub + + + + + + Create a ZipOutputStream that writes to a filesystem file. + + + + The class is generally easier to use when creating + zip files. The ZipOutputStream offers a different metaphor for creating a + zip file, based on the class. + + + + The name of the zip file to create. + + + + + This example shows how to create a zip file, using the + ZipOutputStream class. + + + private void Zipup() + { + if (filesToZip.Count == 0) + { + System.Console.WriteLine("Nothing to do."); + return; + } + + using (var output= new ZipOutputStream(outputFileName)) + { + output.Password = "VerySecret!"; + output.Encryption = EncryptionAlgorithm.WinZipAes256; + + foreach (string inputFileName in filesToZip) + { + System.Console.WriteLine("file: {0}", inputFileName); + + output.PutNextEntry(inputFileName); + using (var input = File.Open(inputFileName, FileMode.Open, FileAccess.Read, + FileShare.Read | FileShare.Write )) + { + byte[] buffer= new byte[2048]; + int n; + while ((n= input.Read(buffer,0,buffer.Length)) > 0) + { + output.Write(buffer,0,n); + } + } + } + } + } + + + + Private Sub Zipup() + Dim outputFileName As String = "XmlData.zip" + Dim filesToZip As String() = Directory.GetFiles(".", "*.xml") + If (filesToZip.Length = 0) Then + Console.WriteLine("Nothing to do.") + Else + Using output As ZipOutputStream = New ZipOutputStream(outputFileName) + output.Password = "VerySecret!" + output.Encryption = EncryptionAlgorithm.WinZipAes256 + Dim inputFileName As String + For Each inputFileName In filesToZip + Console.WriteLine("file: {0}", inputFileName) + output.PutNextEntry(inputFileName) + Using input As FileStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) + Dim n As Integer + Dim buffer As Byte() = New Byte(2048) {} + Do While (n = input.Read(buffer, 0, buffer.Length) > 0) + output.Write(buffer, 0, n) + Loop + End Using + Next + End Using + End If + End Sub + + + + + + Create a ZipOutputStream. + + + + See the documentation for the ZipOutputStream(Stream) + constructor for an example. + + + + The stream to wrap. It must be writable. + + + + true if the application would like the stream + to remain open after the ZipOutputStream has been closed. + + + + Provides a string representation of the instance. + + + This can be useful for debugging purposes. + + + a string representation of the instance. + + + + Sets the password to be used on the ZipOutputStream instance. + + + + + + When writing a zip archive, this password is applied to the entries, not + to the zip archive itself. It applies to any ZipEntry subsequently + written to the ZipOutputStream. + + + + Using a password does not encrypt or protect the "directory" of the + archive - the list of entries contained in the archive. If you set the + Password property, the password actually applies to individual + entries that are added to the archive, subsequent to the setting of this + property. The list of filenames in the archive that is eventually created + will appear in clear text, but the contents of the individual files are + encrypted. This is how Zip encryption works. + + + + If you set this property, and then add a set of entries to the archive via + calls to PutNextEntry, then each entry is encrypted with that + password. You may also want to change the password between adding + different entries. If you set the password, add an entry, then set the + password to null (Nothing in VB), and add another entry, the + first entry is encrypted and the second is not. + + + + When setting the Password, you may also want to explicitly set the property, to specify how to encrypt the entries added + to the ZipFile. If you set the Password to a non-null value and do not + set , then PKZip 2.0 ("Weak") encryption is used. + This encryption is relatively weak but is very interoperable. If + you set the password to a null value (Nothing in VB), + Encryption is reset to None. + + + + Special case: if you wrap a ZipOutputStream around a non-seekable stream, + and use encryption, and emit an entry of zero bytes, the Close() or + PutNextEntry() following the entry will throw an exception. + + + + + + + The Encryption to use for entries added to the ZipOutputStream. + + + + + The specified Encryption is applied to the entries subsequently + written to the ZipOutputStream instance. + + + + If you set this to something other than + EncryptionAlgorithm.None, you will also need to set the + to a non-null, non-empty value in + order to actually get encryption on the entry. + + + + + ZipOutputStream.Password + ZipEntry.Encryption + + + + Size of the work buffer to use for the ZLIB codec during compression. + + + + Setting this may affect performance. For larger files, setting this to a + larger size may improve performance, but I'm not sure. Sorry, I don't + currently have good recommendations on how to set it. You can test it if + you like. + + + + + The compression strategy to use for all entries. + + + + Set the Strategy used by the ZLIB-compatible compressor, when compressing + data for the entries in the zip archive. Different compression strategies + work better on different sorts of data. The strategy parameter can affect + the compression ratio and the speed of compression but not the correctness + of the compresssion. For more information see . + + + + + The type of timestamp attached to the ZipEntry. + + + + Set this in order to specify the kind of timestamp that should be emitted + into the zip file for each entry. + + + + + Sets the compression level to be used for entries subsequently added to + the zip archive. + + + + + Varying the compression level used on entries can affect the + size-vs-speed tradeoff when compression and decompressing data streams + or files. + + + + As with some other properties on the ZipOutputStream class, like , and , + setting this property on a ZipOutputStream + instance will cause the specified CompressionLevel to be used on all + items that are subsequently added to the + ZipOutputStream instance. + + + + If you do not set this property, the default compression level is used, + which normally gives a good balance of compression efficiency and + compression speed. In some tests, using BestCompression can + double the time it takes to compress, while delivering just a small + increase in compression efficiency. This behavior will vary with the + type of data you compress. If you are in doubt, just leave this setting + alone, and accept the default. + + + + + + The compression method used on each entry added to the ZipOutputStream. + + + + + A comment attached to the zip archive. + + + + + + The application sets this property to specify a comment to be embedded + into the generated zip archive. + + + + According to PKWARE's + zip specification, the comment is not encrypted, even if there is a + password set on the zip file. + + + + The specification does not describe how to indicate the encoding used + on a comment string. Many "compliant" zip tools and libraries use + IBM437 as the code page for comments; DotNetZip, too, follows that + practice. On the other hand, there are situations where you want a + Comment to be encoded with something else, for example using code page + 950 "Big-5 Chinese". To fill that need, DotNetZip will encode the + comment following the same procedure it follows for encoding + filenames: (a) if is + Never, it uses the default encoding (IBM437). (b) if is Always, it always uses the + alternate encoding (). (c) if is AsNecessary, it uses the + alternate encoding only if the default encoding is not sufficient for + encoding the comment - in other words if decoding the result does not + produce the original string. This decision is taken at the time of + the call to ZipFile.Save(). + + + + + + + Specify whether to use ZIP64 extensions when saving a zip archive. + + + + + The default value for the property is . is + safest, in the sense that you will not get an Exception if a + pre-ZIP64 limit is exceeded. + + + + You must set this property before calling Write(). + + + + + + + Indicates whether ZIP64 extensions were used when saving the zip archive. + + + + The value is defined only after the ZipOutputStream has been closed. + + + + + Whether the ZipOutputStream should use case-insensitive comparisons when + checking for uniqueness of zip entries. + + + + + Though the zip specification doesn't prohibit zipfiles with duplicate + entries, Sane zip files have no duplicates, and the DotNetZip library + cannot create zip files with duplicate entries. If an application attempts + to call with a name that duplicates one + already used within the archive, the library will throw an Exception. + + + This property allows the application to specify whether the + ZipOutputStream instance considers ordinal case when checking for + uniqueness of zip entries. + + + + + + Indicates whether to encode entry filenames and entry comments using + Unicode (UTF-8). + + + + + The + PKWare zip specification provides for encoding file names and file + comments in either the IBM437 code page, or in UTF-8. This flag selects + the encoding according to that specification. By default, this flag is + false, and filenames and comments are encoded into the zip file in the + IBM437 codepage. Setting this flag to true will specify that filenames + and comments that cannot be encoded with IBM437 will be encoded with + UTF-8. + + + + Zip files created with strict adherence to the PKWare specification with + respect to UTF-8 encoding can contain entries with filenames containing + any combination of Unicode characters, including the full range of + characters from Chinese, Latin, Hebrew, Greek, Cyrillic, and many other + alphabets. However, because at this time, the UTF-8 portion of the PKWare + specification is not broadly supported by other zip libraries and + utilities, such zip files may not be readable by your favorite zip tool or + archiver. In other words, interoperability will decrease if you set this + flag to true. + + + + In particular, Zip files created with strict adherence to the PKWare + specification with respect to UTF-8 encoding will not work well with + Explorer in Windows XP or Windows Vista, because Windows compressed + folders, as far as I know, do not support UTF-8 in zip files. Vista can + read the zip files, but shows the filenames incorrectly. Unpacking from + Windows Vista Explorer will result in filenames that have rubbish + characters in place of the high-order UTF-8 bytes. + + + + Also, zip files that use UTF-8 encoding will not work well with Java + applications that use the java.util.zip classes, as of v5.0 of the Java + runtime. The Java runtime does not correctly implement the PKWare + specification in this regard. + + + + As a result, we have the unfortunate situation that "correct" behavior by + the DotNetZip library with regard to Unicode encoding of filenames during + zip creation will result in zip files that are readable by strictly + compliant and current tools (for example the most recent release of the + commercial WinZip tool); but these zip files will not be readable by + various other tools or libraries, including Windows Explorer. + + + + The DotNetZip library can read and write zip files with UTF8-encoded + entries, according to the PKware spec. If you use DotNetZip for both + creating and reading the zip file, and you use UTF-8, there will be no + loss of information in the filenames. For example, using a self-extractor + created by this library will allow you to unpack files correctly with no + loss of information in the filenames. + + + + If you do not set this flag, it will remain false. If this flag is false, + the ZipOutputStream will encode all filenames and comments using + the IBM437 codepage. This can cause "loss of information" on some + filenames, but the resulting zipfile will be more interoperable with other + utilities. As an example of the loss of information, diacritics can be + lost. The o-tilde character will be down-coded to plain o. The c with a + cedilla (Unicode 0xE7) used in Portugese will be downcoded to a c. + Likewise, the O-stroke character (Unicode 248), used in Danish and + Norwegian, will be down-coded to plain o. Chinese characters cannot be + represented in codepage IBM437; when using the default encoding, Chinese + characters in filenames will be represented as ?. These are all examples + of "information loss". + + + + The loss of information associated to the use of the IBM437 encoding is + inconvenient, and can also lead to runtime errors. For example, using + IBM437, any sequence of 4 Chinese characters will be encoded as ????. If + your application creates a ZipOutputStream, does not set the + encoding, then adds two files, each with names of four Chinese characters + each, this will result in a duplicate filename exception. In the case + where you add a single file with a name containing four Chinese + characters, the zipfile will save properly, but extracting that file + later, with any zip tool, will result in an error, because the question + mark is not legal for use within filenames on Windows. These are just a + few examples of the problems associated to loss of information. + + + + This flag is independent of the encoding of the content within the entries + in the zip file. Think of the zip file as a container - it supports an + encoding. Within the container are other "containers" - the file entries + themselves. The encoding within those entries is independent of the + encoding of the zip archive container for those entries. + + + + Rather than specify the encoding in a binary fashion using this flag, an + application can specify an arbitrary encoding via the property. Setting the encoding + explicitly when creating zip archives will result in non-compliant zip + files that, curiously, are fairly interoperable. The challenge is, the + PKWare specification does not provide for a way to specify that an entry + in a zip archive uses a code page that is neither IBM437 nor UTF-8. + Therefore if you set the encoding explicitly when creating a zip archive, + you must take care upon reading the zip archive to use the same code page. + If you get it wrong, the behavior is undefined and may result in incorrect + filenames, exceptions, stomach upset, hair loss, and acne. + + + + + + + The text encoding to use when emitting entries into the zip archive, for + those entries whose filenames or comments cannot be encoded with the + default (IBM437) encoding. + + + + + In its + zip specification, PKWare describes two options for encoding + filenames and comments: using IBM437 or UTF-8. But, some archiving tools + or libraries do not follow the specification, and instead encode + characters using the system default code page. For example, WinRAR when + run on a machine in Shanghai may encode filenames with the Big-5 Chinese + (950) code page. This behavior is contrary to the Zip specification, but + it occurs anyway. + + + + When using DotNetZip to write zip archives that will be read by one of + these other archivers, set this property to specify the code page to use + when encoding the and for each ZipEntry in the zip file, for + values that cannot be encoded with the default codepage for zip files, + IBM437. This is why this property is "provisional". In all cases, IBM437 + is used where possible, in other words, where no loss of data would + result. It is possible, therefore, to have a given entry with a + Comment encoded in IBM437 and a FileName encoded with the + specified "provisional" codepage. + + + + Be aware that a zip file created after you've explicitly set the + ProvisionalAlternateEncoding property to a value other than + IBM437 may not be compliant to the PKWare specification, and may not be + readable by compliant archivers. On the other hand, many (most?) + archivers are non-compliant and can read zip files created in arbitrary + code pages. The trick is to use or specify the proper codepage when + reading the zip. + + + + When creating a zip archive using this library, it is possible to change + the value of ProvisionalAlternateEncoding between each entry you + add, and between adding entries and the call to Close(). Don't do + this. It will likely result in a zipfile that is not readable. For best + interoperability, either leave ProvisionalAlternateEncoding + alone, or specify it only once, before adding any entries to the + ZipOutputStream instance. There is one exception to this + recommendation, described later. + + + + When using an arbitrary, non-UTF8 code page for encoding, there is no + standard way for the creator application - whether DotNetZip, WinZip, + WinRar, or something else - to formally specify in the zip file which + codepage has been used for the entries. As a result, readers of zip files + are not able to inspect the zip file and determine the codepage that was + used for the entries contained within it. It is left to the application + or user to determine the necessary codepage when reading zip files encoded + this way. If you use an incorrect codepage when reading a zipfile, you + will get entries with filenames that are incorrect, and the incorrect + filenames may even contain characters that are not legal for use within + filenames in Windows. Extracting entries with illegal characters in the + filenames will lead to exceptions. It's too bad, but this is just the way + things are with code pages in zip files. Caveat Emptor. + + + + One possible approach for specifying the code page for a given zip file is + to describe the code page in a human-readable form in the Zip comment. For + example, the comment may read "Entries in this archive are encoded in the + Big5 code page". For maximum interoperability, the zip comment in this + case should be encoded in the default, IBM437 code page. In this case, + the zip comment is encoded using a different page than the filenames. To + do this, Specify ProvisionalAlternateEncoding to your desired + region-specific code page, once before adding any entries, and then set + the property and reset + ProvisionalAlternateEncoding to IBM437 before calling Close(). + + + + + + A Text Encoding to use when encoding the filenames and comments for + all the ZipEntry items, during a ZipFile.Save() operation. + + + + Whether the encoding specified here is used during the save depends + on . + + + + + + A flag that tells if and when this instance should apply + AlternateEncoding to encode the filenames and comments associated to + of ZipEntry objects contained within this instance. + + + + + The default text encoding used in zip archives. It is numeric 437, also + known as IBM437. + + + + + + The size threshold for an entry, above which a parallel deflate is used. + + + + + + DotNetZip will use multiple threads to compress any ZipEntry, when + the CompressionMethod is Deflate, and if the entry is + larger than the given size. Zero means "always use parallel + deflate", while -1 means "never use parallel deflate". + + + + If the entry size cannot be known before compression, as with any entry + added via a ZipOutputStream, then Parallel deflate will never be + performed, unless the value of this property is zero. + + + + A parallel deflate operations will speed up the compression of + large files, on computers with multiple CPUs or multiple CPU + cores. For files above 1mb, on a dual core or dual-cpu (2p) + machine, the time required to compress the file can be 70% of the + single-threaded deflate. For very large files on 4p machines the + compression can be done in 30% of the normal time. The downside + is that parallel deflate consumes extra memory during the deflate, + and the deflation is slightly less effective. + + + + Parallel deflate tends to not be as effective as single-threaded deflate + because the original data stream is split into multiple independent + buffers, each of which is compressed in parallel. But because they are + treated independently, there is no opportunity to share compression + dictionaries, and additional framing bytes must be added to the output + stream. For that reason, a deflated stream may be slightly larger when + compressed using parallel deflate, as compared to a traditional + single-threaded deflate. For files of about 512k, the increase over the + normal deflate is as much as 5% of the total compressed size. For larger + files, the difference can be as small as 0.1%. + + + + Multi-threaded compression does not give as much an advantage when using + Encryption. This is primarily because encryption tends to slow down + the entire pipeline. Also, multi-threaded compression gives less of an + advantage when using lower compression levels, for example . You may have to perform + some tests to determine the best approach for your situation. + + + + The default value for this property is -1, which means parallel + compression will not be performed unless you set it to zero. + + + + + + + The maximum number of buffer pairs to use when performing + parallel compression. + + + + + This property sets an upper limit on the number of memory + buffer pairs to create when performing parallel + compression. The implementation of the parallel + compression stream allocates multiple buffers to + facilitate parallel compression. As each buffer fills up, + the stream uses + ThreadPool.QueueUserWorkItem() to compress those + buffers in a background threadpool thread. After a buffer + is compressed, it is re-ordered and written to the output + stream. + + + + A higher number of buffer pairs enables a higher degree of + parallelism, which tends to increase the speed of compression on + multi-cpu computers. On the other hand, a higher number of buffer + pairs also implies a larger memory consumption, more active worker + threads, and a higher cpu utilization for any compression. This + property enables the application to limit its memory consumption and + CPU utilization behavior depending on requirements. + + + + For each compression "task" that occurs in parallel, there are 2 + buffers allocated: one for input and one for output. This property + sets a limit for the number of pairs. The total amount of storage + space allocated for buffering will then be (N*S*2), where N is the + number of buffer pairs, S is the size of each buffer (). By default, DotNetZip allocates 4 buffer + pairs per CPU core, so if your machine has 4 cores, and you retain + the default buffer size of 128k, then the + ParallelDeflateOutputStream will use 4 * 4 * 2 * 128kb of buffer + memory in total, or 4mb, in blocks of 128kb. If you then set this + property to 8, then the number will be 8 * 2 * 128kb of buffer + memory, or 2mb. + + + + CPU utilization will also go up with additional buffers, because a + larger number of buffer pairs allows a larger number of background + threads to compress in parallel. If you find that parallel + compression is consuming too much memory or CPU, you can adjust this + value downward. + + + + The default value is 16. Different values may deliver better or + worse results, depending on your priorities and the dynamic + performance characteristics of your storage and compute resources. + + + + This property is not the number of buffer pairs to use; it is an + upper limit. An illustration: Suppose you have an application that + uses the default value of this property (which is 16), and it runs + on a machine with 2 CPU cores. In that case, DotNetZip will allocate + 4 buffer pairs per CPU core, for a total of 8 pairs. The upper + limit specified by this property has no effect. + + + + The application can set this value at any time, but it is + effective only if set before calling + ZipOutputStream.Write() for the first time. + + + + + + + + + Returns true if an entry by the given name has already been written + to the ZipOutputStream. + + + + The name of the entry to scan for. + + + + true if an entry by the given name has already been written. + + + + + Write the data from the buffer to the stream. + + + + As the application writes data into this stream, the data may be + compressed and encrypted before being written out to the underlying + stream, depending on the settings of the + and the properties. + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Specify the name of the next entry that will be written to the zip file. + + + + + Call this method just before calling , to + specify the name of the entry that the next set of bytes written to + the ZipOutputStream belongs to. All subsequent calls to Write, + until the next call to PutNextEntry, + will be inserted into the named entry in the zip file. + + + + If the used in PutNextEntry() ends in + a slash, then the entry added is marked as a directory. Because directory + entries do not contain data, a call to Write(), before an + intervening additional call to PutNextEntry(), will throw an + exception. + + + + If you don't call Write() between two calls to + PutNextEntry(), the first entry is inserted into the zip file as a + file of zero size. This may be what you want. + + + + Because PutNextEntry() closes out the prior entry, if any, this + method may throw if there is a problem with the prior entry. + + + + This method returns the ZipEntry. You can modify public properties + on the ZipEntry, such as , , and so on, until the first call to + ZipOutputStream.Write(), or until the next call to + PutNextEntry(). If you modify the ZipEntry after + having called Write(), you may get a runtime exception, or you may + silently get an invalid zip archive. + + + + + + + This example shows how to create a zip file, using the + ZipOutputStream class. + + + private void Zipup() + { + using (FileStream fs raw = File.Open(_outputFileName, FileMode.Create, FileAccess.ReadWrite )) + { + using (var output= new ZipOutputStream(fs)) + { + output.Password = "VerySecret!"; + output.Encryption = EncryptionAlgorithm.WinZipAes256; + output.PutNextEntry("entry1.txt"); + byte[] buffer= System.Text.Encoding.ASCII.GetBytes("This is the content for entry #1."); + output.Write(buffer,0,buffer.Length); + output.PutNextEntry("entry2.txt"); // this will be zero length + output.PutNextEntry("entry3.txt"); + buffer= System.Text.Encoding.ASCII.GetBytes("This is the content for entry #3."); + output.Write(buffer,0,buffer.Length); + } + } + } + + + + + The name of the entry to be added, including any path to be used + within the zip file. + + + + The ZipEntry created. + + + + + + Dispose the stream + + + + + This method writes the Zip Central directory, then closes the stream. The + application must call Dispose() (or Close) in order to produce a valid zip file. + + + + Typically the application will call Dispose() implicitly, via a using + statement in C#, or a Using statement in VB. + + + + + set this to true, always. + + + + Always returns false. + + + + + Always returns false. + + + + + Always returns true. + + + + + Always returns a NotSupportedException. + + + + + Setting this property always returns a NotSupportedException. Getting it + returns the value of the Position on the underlying stream. + + + + + This is a no-op. + + + + + This method always throws a NotSupportedException. + + ignored + ignored + ignored + nothing + + + + This method always throws a NotSupportedException. + + ignored + ignored + nothing + + + + This method always throws a NotSupportedException. + + ignored + + + + Sort-of like a factory method, ForUpdate is used only when + the application needs to update the zip entry metadata for + a segmented zip file, when the starting segment is earlier + than the ending segment, for a particular entry. + + + + The update is always contiguous, never rolls over. As a + result, this method doesn't need to return a ZSS; it can + simply return a FileStream. That's why it's "sort of" + like a Factory method. + + + Caller must Close/Dispose the stream object returned by + this method. + + + + + + Name of the filesystem file corresponding to the current segment. + + + + The name is not always the name currently being used in the + filesystem. When rwMode is RwMode.Write, the filesystem file has a + temporary name until the stream is closed or until the next segment is + started. + + + + + + Read from the stream + + the buffer to read + the offset at which to start + the number of bytes to read + the number of bytes actually read + + + + Write to the stream. + + the buffer from which to write + the offset at which to start writing + the number of bytes to write + + + + Computes a CRC-32. The CRC-32 algorithm is parameterized - you + can set the polynomial and enable or disable bit + reversal. This can be used for GZIP, BZip2, or ZIP. + + + This type is used internally by DotNetZip; it is generally not used + directly by applications wishing to create, read, or manipulate zip + archive files. + + + + + Indicates the total number of bytes applied to the CRC. + + + + + Indicates the current CRC for all blocks slurped in. + + + + + Returns the CRC32 for the specified stream. + + The stream over which to calculate the CRC32 + the CRC32 calculation + + + + Returns the CRC32 for the specified stream, and writes the input into the + output stream. + + The stream over which to calculate the CRC32 + The stream into which to deflate the input + the CRC32 calculation + + + + Get the CRC32 for the given (word,byte) combo. This is a + computation defined by PKzip for PKZIP 2.0 (weak) encryption. + + The word to start with. + The byte to combine it with. + The CRC-ized result. + + + + Update the value for the running CRC32 using the given block of bytes. + This is useful when using the CRC32() class in a Stream. + + block of bytes to slurp + starting point in the block + how many bytes within the block to slurp + + + + Process one byte in the CRC. + + the byte to include into the CRC . + + + + Process a run of N identical bytes into the CRC. + + + + This method serves as an optimization for updating the CRC when a + run of identical bytes is found. Rather than passing in a buffer of + length n, containing all identical bytes b, this method accepts the + byte value and the length of the (virtual) buffer - the length of + the run. + + + the byte to include into the CRC. + the number of times that byte should be repeated. + + + + Combines the given CRC32 value with the current running total. + + + This is useful when using a divide-and-conquer approach to + calculating a CRC. Multiple threads can each calculate a + CRC32 on a segment of the data, and then combine the + individual CRC32 values at the end. + + the crc value to be combined with this one + the length of data the CRC value was calculated on + + + + Create an instance of the CRC32 class using the default settings: no + bit reversal, and a polynomial of 0xEDB88320. + + + + + Create an instance of the CRC32 class, specifying whether to reverse + data bits or not. + + + specify true if the instance should reverse data bits. + + + + In the CRC-32 used by BZip2, the bits are reversed. Therefore if you + want a CRC32 with compatibility with BZip2, you should pass true + here. In the CRC-32 used by GZIP and PKZIP, the bits are not + reversed; Therefore if you want a CRC32 with compatibility with + those, you should pass false. + + + + + + Create an instance of the CRC32 class, specifying the polynomial and + whether to reverse data bits or not. + + + The polynomial to use for the CRC, expressed in the reversed (LSB) + format: the highest ordered bit in the polynomial value is the + coefficient of the 0th power; the second-highest order bit is the + coefficient of the 1 power, and so on. Expressed this way, the + polynomial for the CRC-32C used in IEEE 802.3, is 0xEDB88320. + + + specify true if the instance should reverse data bits. + + + + + In the CRC-32 used by BZip2, the bits are reversed. Therefore if you + want a CRC32 with compatibility with BZip2, you should pass true + here for the reverseBits parameter. In the CRC-32 used by + GZIP and PKZIP, the bits are not reversed; Therefore if you want a + CRC32 with compatibility with those, you should pass false for the + reverseBits parameter. + + + + + + Reset the CRC-32 class - clear the CRC "remainder register." + + + + Use this when employing a single instance of this class to compute + multiple, distinct CRCs on multiple, distinct data blocks. + + + + + + A Stream that calculates a CRC32 (a checksum) on all bytes read, + or on all bytes written. + + + + + This class can be used to verify the CRC of a ZipEntry when + reading from a stream, or to calculate a CRC when writing to a + stream. The stream should be used to either read, or write, but + not both. If you intermix reads and writes, the results are not + defined. + + + + This class is intended primarily for use internally by the + DotNetZip library. + + + + + + The default constructor. + + + + Instances returned from this constructor will leave the underlying + stream open upon Close(). The stream uses the default CRC32 + algorithm, which implies a polynomial of 0xEDB88320. + + + The underlying stream + + + + The constructor allows the caller to specify how to handle the + underlying stream at close. + + + + The stream uses the default CRC32 algorithm, which implies a + polynomial of 0xEDB88320. + + + The underlying stream + true to leave the underlying stream + open upon close of the CrcCalculatorStream; false otherwise. + + + + A constructor allowing the specification of the length of the stream + to read. + + + + The stream uses the default CRC32 algorithm, which implies a + polynomial of 0xEDB88320. + + + Instances returned from this constructor will leave the underlying + stream open upon Close(). + + + The underlying stream + The length of the stream to slurp + + + + A constructor allowing the specification of the length of the stream + to read, as well as whether to keep the underlying stream open upon + Close(). + + + + The stream uses the default CRC32 algorithm, which implies a + polynomial of 0xEDB88320. + + + The underlying stream + The length of the stream to slurp + true to leave the underlying stream + open upon close of the CrcCalculatorStream; false otherwise. + + + + A constructor allowing the specification of the length of the stream + to read, as well as whether to keep the underlying stream open upon + Close(), and the CRC32 instance to use. + + + + The stream uses the specified CRC32 instance, which allows the + application to specify how the CRC gets calculated. + + + The underlying stream + The length of the stream to slurp + true to leave the underlying stream + open upon close of the CrcCalculatorStream; false otherwise. + the CRC32 instance to use to calculate the CRC32 + + + + Gets the total number of bytes run through the CRC32 calculator. + + + + This is either the total number of bytes read, or the total number of + bytes written, depending on the direction of this stream. + + + + + Provides the current CRC for all blocks slurped in. + + + + The running total of the CRC is kept as data is written or read + through the stream. read this property after all reads or writes to + get an accurate CRC for the entire stream. + + + + + + Indicates whether the underlying stream will be left open when the + CrcCalculatorStream is Closed. + + + + Set this at any point before calling . + + + + + + Read from the stream + + the buffer to read + the offset at which to start + the number of bytes to read + the number of bytes actually read + + + + Write to the stream. + + the buffer from which to write + the offset at which to start writing + the number of bytes to write + + + + Indicates whether the stream supports reading. + + + + + Indicates whether the stream supports seeking. + + + + Always returns false. + + + + + + Indicates whether the stream supports writing. + + + + + Flush the stream. + + + + + Returns the length of the underlying stream. + + + + + The getter for this property returns the total bytes read. + If you use the setter, it will throw + . + + + + + Seeking is not supported on this stream. This method always throws + + + N/A + N/A + N/A + + + + This method always throws + + + N/A + + + + Closes the stream. + + + + + Enumerates the options for a logical conjunction. This enum is intended for use + internally by the FileSelector class. + + + + + FileSelector encapsulates logic that selects files from a source - a zip file + or the filesystem - based on a set of criteria. This class is used internally + by the DotNetZip library, in particular for the AddSelectedFiles() methods. + This class can also be used independently of the zip capability in DotNetZip. + + + + + + The FileSelector class is used internally by the ZipFile class for selecting + files for inclusion into the ZipFile, when the method, or one of + its overloads, is called. It's also used for the methods. Typically, an + application that creates or manipulates Zip archives will not directly + interact with the FileSelector class. + + + + Some applications may wish to use the FileSelector class directly, to + select files from disk volumes based on a set of criteria, without creating or + querying Zip archives. The file selection criteria include: a pattern to + match the filename; the last modified, created, or last accessed time of the + file; the size of the file; and the attributes of the file. + + + + Consult the documentation for + for more information on specifying the selection criteria. + + + + + + + Constructor that allows the caller to specify file selection criteria. + + + + + This constructor allows the caller to specify a set of criteria for + selection of files. + + + + See for a description of + the syntax of the selectionCriteria string. + + + + By default the FileSelector will traverse NTFS Reparse Points. To + change this, use FileSelector(String, bool). + + + + The criteria for file selection. + + + + Constructor that allows the caller to specify file selection criteria. + + + + + This constructor allows the caller to specify a set of criteria for + selection of files. + + + + See for a description of + the syntax of the selectionCriteria string. + + + + The criteria for file selection. + + whether to traverse NTFS reparse points (junctions). + + + + + The string specifying which files to include when retrieving. + + + + + Specify the criteria in statements of 3 elements: a noun, an operator, + and a value. Consider the string "name != *.doc" . The noun is + "name". The operator is "!=", implying "Not Equal". The value is + "*.doc". That criterion, in English, says "all files with a name that + does not end in the .doc extension." + + + + Supported nouns include "name" (or "filename") for the filename; + "atime", "mtime", and "ctime" for last access time, last modfied time, + and created time of the file, respectively; "attributes" (or "attrs") + for the file attributes; "size" (or "length") for the file length + (uncompressed); and "type" for the type of object, either a file or a + directory. The "attributes", "type", and "name" nouns all support = + and != as operators. The "size", "atime", "mtime", and "ctime" nouns + support = and !=, and >, >=, <, <= as well. The times are + taken to be expressed in local time. + + + + Specify values for the file attributes as a string with one or more of + the characters H,R,S,A,I,L in any order, implying file attributes of + Hidden, ReadOnly, System, Archive, NotContextIndexed, and ReparsePoint + (symbolic link) respectively. + + + + To specify a time, use YYYY-MM-DD-HH:mm:ss or YYYY/MM/DD-HH:mm:ss as + the format. If you omit the HH:mm:ss portion, it is assumed to be + 00:00:00 (midnight). + + + + The value for a size criterion is expressed in integer quantities of + bytes, kilobytes (use k or kb after the number), megabytes (m or mb), + or gigabytes (g or gb). + + + + The value for a name is a pattern to match against the filename, + potentially including wildcards. The pattern follows CMD.exe glob + rules: * implies one or more of any character, while ? implies one + character. If the name pattern contains any slashes, it is matched to + the entire filename, including the path; otherwise, it is matched + against only the filename without the path. This means a pattern of + "*\*.*" matches all files one directory level deep, while a pattern of + "*.*" matches all files in all directories. + + + + To specify a name pattern that includes spaces, use single quotes + around the pattern. A pattern of "'* *.*'" will match all files that + have spaces in the filename. The full criteria string for that would + be "name = '* *.*'" . + + + + The value for a type criterion is either F (implying a file) or D + (implying a directory). + + + + Some examples: + + + + + criteria + Files retrieved + + + + name != *.xls + any file with an extension that is not .xls + + + + + name = *.mp3 + any file with a .mp3 extension. + + + + + *.mp3 + (same as above) any file with a .mp3 extension. + + + + + attributes = A + all files whose attributes include the Archive bit. + + + + + attributes != H + all files whose attributes do not include the Hidden bit. + + + + + mtime > 2009-01-01 + all files with a last modified time after January 1st, 2009. + + + + + ctime > 2009/01/01-03:00:00 + all files with a created time after 3am (local time), + on January 1st, 2009. + + + + + size > 2gb + all files whose uncompressed size is greater than 2gb. + + + + + type = D + all directories in the filesystem. + + + + + + You can combine criteria with the conjunctions AND, OR, and XOR. Using + a string like "name = *.txt AND size >= 100k" for the + selectionCriteria retrieves entries whose names end in .txt, and whose + uncompressed size is greater than or equal to 100 kilobytes. + + + + For more complex combinations of criteria, you can use parenthesis to + group clauses in the boolean logic. Absent parenthesis, the + precedence of the criterion atoms is determined by order of + appearance. Unlike the C# language, the AND conjunction does not take + precendence over the logical OR. This is important only in strings + that contain 3 or more criterion atoms. In other words, "name = *.txt + and size > 1000 or attributes = H" implies "((name = *.txt AND size + > 1000) OR attributes = H)" while "attributes = H OR name = *.txt + and size > 1000" evaluates to "((attributes = H OR name = *.txt) + AND size > 1000)". When in doubt, use parenthesis. + + + + Using time properties requires some extra care. If you want to + retrieve all entries that were last updated on 2009 February 14, + specify "mtime >= 2009-02-14 AND mtime < 2009-02-15". Read this + to say: all files updated after 12:00am on February 14th, until + 12:00am on February 15th. You can use the same bracketing approach to + specify any time period - a year, a month, a week, and so on. + + + + The syntax allows one special case: if you provide a string with no + spaces, it is treated as a pattern to match for the filename. + Therefore a string like "*.xls" will be equivalent to specifying "name + = *.xls". This "shorthand" notation does not work with compound + criteria. + + + + There is no logic in this class that insures that the inclusion + criteria are internally consistent. For example, it's possible to + specify criteria that says the file must have a size of less than 100 + bytes, as well as a size that is greater than 1000 bytes. Obviously + no file will ever satisfy such criteria, but this class does not check + for or detect such inconsistencies. + + + + + + Thrown in the setter if the value has an invalid syntax. + + + + + Indicates whether searches will traverse NTFS reparse points, like Junctions. + + + + + Returns a string representation of the FileSelector object. + + The string representation of the boolean logic statement of the file + selection criteria for this instance. + + + + Returns the names of the files in the specified directory + that fit the selection criteria specified in the FileSelector. + + + + This is equivalent to calling + with recurseDirectories = false. + + + + The name of the directory over which to apply the FileSelector + criteria. + + + + A collection of strings containing fully-qualified pathnames of files + that match the criteria specified in the FileSelector instance. + + + + + Returns the names of the files in the specified directory that fit the + selection criteria specified in the FileSelector, optionally recursing + through subdirectories. + + + + This method applies the file selection criteria contained in the + FileSelector to the files contained in the given directory, and + returns the names of files that conform to the criteria. + + + + The name of the directory over which to apply the FileSelector + criteria. + + + + Whether to recurse through subdirectories when applying the file + selection criteria. + + + + A collection of strings containing fully-qualified pathnames of files + that match the criteria specified in the FileSelector instance. + + + + + Retrieve the ZipEntry items in the ZipFile that conform to the specified criteria. + + + + + This method applies the criteria set in the FileSelector instance (as described in + the ) to the specified ZipFile. Using this + method, for example, you can retrieve all entries from the given ZipFile that + have filenames ending in .txt. + + + + Normally, applications would not call this method directly. This method is used + by the ZipFile class. + + + + Using the appropriate SelectionCriteria, you can retrieve entries based on size, + time, and attributes. See for a + description of the syntax of the SelectionCriteria string. + + + + + The ZipFile from which to retrieve entries. + + a collection of ZipEntry objects that conform to the criteria. + + + + Retrieve the ZipEntry items in the ZipFile that conform to the specified criteria. + + + + + This method applies the criteria set in the FileSelector instance (as described in + the ) to the specified ZipFile. Using this + method, for example, you can retrieve all entries from the given ZipFile that + have filenames ending in .txt. + + + + Normally, applications would not call this method directly. This method is used + by the ZipFile class. + + + + This overload allows the selection of ZipEntry instances from the ZipFile to be restricted + to entries contained within a particular directory in the ZipFile. + + + + Using the appropriate SelectionCriteria, you can retrieve entries based on size, + time, and attributes. See for a + description of the syntax of the SelectionCriteria string. + + + + + The ZipFile from which to retrieve entries. + + + the directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + + a collection of ZipEntry objects that conform to the criteria. + + + + Summary description for EnumUtil. + + + + + Returns the value of the DescriptionAttribute if the specified Enum + value has one. If not, returns the ToString() representation of the + Enum value. + + The Enum to get the description for + + + + + Converts the string representation of the name or numeric value of one + or more enumerated constants to an equivalent enumerated object. + Note: use the DescriptionAttribute on enum values to enable this. + + The System.Type of the enumeration. + + A string containing the name or value to convert. + + + + + + Converts the string representation of the name or numeric value of one + or more enumerated constants to an equivalent enumerated object. A + parameter specified whether the operation is case-sensitive. Note: + use the DescriptionAttribute on enum values to enable this. + + The System.Type of the enumeration. + + A string containing the name or value to convert. + + + Whether the operation is case-sensitive or not. + + + + + A class for compressing and decompressing streams using the Deflate algorithm. + + + + + + The DeflateStream is a Decorator on a . It adds DEFLATE compression or decompression to any + stream. + + + + Using this stream, applications can compress or decompress data via stream + Read and Write operations. Either compresssion or decompression + can occur through either reading or writing. The compression format used is + DEFLATE, which is documented in IETF RFC 1951, "DEFLATE + Compressed Data Format Specification version 1.3.". + + + + This class is similar to , except that + ZlibStream adds the RFC + 1950 - ZLIB framing bytes to a compressed stream when compressing, or + expects the RFC1950 framing bytes when decompressing. The DeflateStream + does not. + + + + + + + + + + Create a DeflateStream using the specified CompressionMode. + + + + When mode is CompressionMode.Compress, the DeflateStream will use + the default compression level. The "captive" stream will be closed when + the DeflateStream is closed. + + + + This example uses a DeflateStream to compress data from a file, and writes + the compressed data to another file. + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(fileToCompress + ".deflated")) + { + using (Stream compressor = new DeflateStream(raw, CompressionMode.Compress)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(fileToCompress & ".deflated") + Using compressor As Stream = New DeflateStream(raw, CompressionMode.Compress) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + The stream which will be read or written. + Indicates whether the DeflateStream will compress or decompress. + + + + Create a DeflateStream using the specified CompressionMode and the specified CompressionLevel. + + + + + + When mode is CompressionMode.Decompress, the level parameter is + ignored. The "captive" stream will be closed when the DeflateStream is + closed. + + + + + + + This example uses a DeflateStream to compress data from a file, and writes + the compressed data to another file. + + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(fileToCompress + ".deflated")) + { + using (Stream compressor = new DeflateStream(raw, + CompressionMode.Compress, + CompressionLevel.BestCompression)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n= -1; + while (n != 0) + { + if (n > 0) + compressor.Write(buffer, 0, n); + n= input.Read(buffer, 0, buffer.Length); + } + } + } + } + + + + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(fileToCompress & ".deflated") + Using compressor As Stream = New DeflateStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + The stream to be read or written while deflating or inflating. + Indicates whether the DeflateStream will compress or decompress. + A tuning knob to trade speed for effectiveness. + + + + Create a DeflateStream using the specified + CompressionMode, and explicitly specify whether the + stream should be left open after Deflation or Inflation. + + + + + + This constructor allows the application to request that the captive stream + remain open after the deflation or inflation occurs. By default, after + Close() is called on the stream, the captive stream is also + closed. In some cases this is not desired, for example if the stream is a + memory stream that will be re-read after compression. Specify true for + the parameter to leave the stream open. + + + + The DeflateStream will use the default compression level. + + + + See the other overloads of this constructor for example code. + + + + + The stream which will be read or written. This is called the + "captive" stream in other places in this documentation. + + + + Indicates whether the DeflateStream will compress or decompress. + + + true if the application would like the stream to + remain open after inflation/deflation. + + + + Create a DeflateStream using the specified CompressionMode + and the specified CompressionLevel, and explicitly specify whether + the stream should be left open after Deflation or Inflation. + + + + + + When mode is CompressionMode.Decompress, the level parameter is ignored. + + + + This constructor allows the application to request that the captive stream + remain open after the deflation or inflation occurs. By default, after + Close() is called on the stream, the captive stream is also + closed. In some cases this is not desired, for example if the stream is a + that will be re-read after + compression. Specify true for the parameter + to leave the stream open. + + + + + + + This example shows how to use a DeflateStream to compress data from + a file, and store the compressed data into another file. + + + using (var output = System.IO.File.Create(fileToCompress + ".deflated")) + { + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (Stream compressor = new DeflateStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, true)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n= -1; + while (n != 0) + { + if (n > 0) + compressor.Write(buffer, 0, n); + n= input.Read(buffer, 0, buffer.Length); + } + } + } + // can write additional data to the output stream here + } + + + + Using output As FileStream = File.Create(fileToCompress & ".deflated") + Using input As Stream = File.OpenRead(fileToCompress) + Using compressor As Stream = New DeflateStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, True) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + ' can write additional data to the output stream here. + End Using + + + The stream which will be read or written. + Indicates whether the DeflateStream will compress or decompress. + true if the application would like the stream to remain open after inflation/deflation. + A tuning knob to trade speed for effectiveness. + + + + This property sets the flush behavior on the stream. + + See the ZLIB documentation for the meaning of the flush behavior. + + + + + The size of the working buffer for the compression codec. + + + + + The working buffer is used for all stream operations. The default size is + 1024 bytes. The minimum size is 128 bytes. You may get better performance + with a larger buffer. Then again, you might not. You would have to test + it. + + + + Set this before the first call to Read() or Write() on the + stream. If you try to set it afterwards, it will throw. + + + + + + The ZLIB strategy to be used during compression. + + + + By tweaking this parameter, you may be able to optimize the compression for + data with particular characteristics. + + + + Returns the total number of bytes input so far. + + + Returns the total number of bytes output so far. + + + + Dispose the stream. + + + + This may or may not result in a Close() call on the captive + stream. See the constructors that have a leaveOpen parameter + for more information. + + + Application code won't call this code directly. This method may be + invoked in two distinct scenarios. If disposing == true, the method + has been called directly or indirectly by a user's code, for example + via the public Dispose() method. In this case, both managed and + unmanaged resources can be referenced and disposed. If disposing == + false, the method has been called by the runtime from inside the + object finalizer and this method should not reference other objects; + in that case only unmanaged resources must be referenced or + disposed. + + + + true if the Dispose method was invoked by user code. + + + + + Indicates whether the stream can be read. + + + The return value depends on whether the captive stream supports reading. + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream can be written. + + + The return value depends on whether the captive stream supports writing. + + + + + Flush the stream. + + + + + Reading this property always throws a . + + + + + The position of the stream pointer. + + + + Setting this property always throws a . Reading will return the total bytes + written out, if used in writing, or the total bytes read in, if used in + reading. The count may refer to compressed bytes or uncompressed bytes, + depending on how you've used the stream. + + + + + Read data from the stream. + + + + + If you wish to use the DeflateStream to compress data while + reading, you can create a DeflateStream with + CompressionMode.Compress, providing an uncompressed data stream. + Then call Read() on that DeflateStream, and the data read will be + compressed as you read. If you wish to use the DeflateStream to + decompress data while reading, you can create a DeflateStream with + CompressionMode.Decompress, providing a readable compressed data + stream. Then call Read() on that DeflateStream, and the data read + will be decompressed as you read. + + + + A DeflateStream can be used for Read() or Write(), but not both. + + + + The buffer into which the read data should be placed. + the offset within that data array to put the first byte read. + the number of bytes to read. + the number of bytes actually read + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + this is irrelevant, since it will always throw! + irrelevant! + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + + + + Write data to the stream. + + + + + If you wish to use the DeflateStream to compress data while + writing, you can create a DeflateStream with + CompressionMode.Compress, and a writable output stream. Then call + Write() on that DeflateStream, providing uncompressed data + as input. The data sent to the output stream will be the compressed form + of the data written. If you wish to use the DeflateStream to + decompress data while writing, you can create a DeflateStream with + CompressionMode.Decompress, and a writable output stream. Then + call Write() on that stream, providing previously compressed + data. The data sent to the output stream will be the decompressed form of + the data written. + + + + A DeflateStream can be used for Read() or Write(), + but not both. + + + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Compress a string into a byte array using DEFLATE (RFC 1951). + + + + Uncompress it with . + + + DeflateStream.UncompressString(byte[]) + DeflateStream.CompressBuffer(byte[]) + GZipStream.CompressString(string) + ZlibStream.CompressString(string) + + + A string to compress. The string will first be encoded + using UTF8, then compressed. + + + The string in compressed form + + + + Compress a byte array into a new byte array using DEFLATE. + + + + Uncompress it with . + + + DeflateStream.CompressString(string) + DeflateStream.UncompressBuffer(byte[]) + GZipStream.CompressBuffer(byte[]) + ZlibStream.CompressBuffer(byte[]) + + + A buffer to compress. + + + The data in compressed form + + + + Uncompress a DEFLATE'd byte array into a single string. + + + DeflateStream.CompressString(String) + DeflateStream.UncompressBuffer(byte[]) + GZipStream.UncompressString(byte[]) + ZlibStream.UncompressString(byte[]) + + + A buffer containing DEFLATE-compressed data. + + + The uncompressed string + + + + Uncompress a DEFLATE'd byte array into a byte array. + + + DeflateStream.CompressBuffer(byte[]) + DeflateStream.UncompressString(byte[]) + GZipStream.UncompressBuffer(byte[]) + ZlibStream.UncompressBuffer(byte[]) + + + A buffer containing data that has been compressed with DEFLATE. + + + The data in uncompressed form + + + + A class for compressing and decompressing GZIP streams. + + + + + The GZipStream is a Decorator on a + . It adds GZIP compression or decompression to any + stream. + + + + Like the System.IO.Compression.GZipStream in the .NET Base Class Library, the + Ionic.Zlib.GZipStream can compress while writing, or decompress while + reading, but not vice versa. The compression method used is GZIP, which is + documented in IETF RFC + 1952, "GZIP file format specification version 4.3". + + + A GZipStream can be used to decompress data (through Read()) or + to compress data (through Write()), but not both. + + + + If you wish to use the GZipStream to compress data, you must wrap it + around a write-able stream. As you call Write() on the GZipStream, the + data will be compressed into the GZIP format. If you want to decompress data, + you must wrap the GZipStream around a readable stream that contains an + IETF RFC 1952-compliant stream. The data will be decompressed as you call + Read() on the GZipStream. + + + + Though the GZIP format allows data from multiple files to be concatenated + together, this stream handles only a single segment of GZIP format, typically + representing a single file. + + + + This class is similar to and . + ZlibStream handles RFC1950-compliant streams. + handles RFC1951-compliant streams. This class handles RFC1952-compliant streams. + + + + + + + + + + The comment on the GZIP stream. + + + + + The GZIP format allows for each file to optionally have an associated + comment stored with the file. The comment is encoded with the ISO-8859-1 + code page. To include a comment in a GZIP stream you create, set this + property before calling Write() for the first time on the + GZipStream. + + + + When using GZipStream to decompress, you can retrieve this property + after the first call to Read(). If no comment has been set in the + GZIP bytestream, the Comment property will return null + (Nothing in VB). + + + + + + The FileName for the GZIP stream. + + + + + + The GZIP format optionally allows each file to have an associated + filename. When compressing data (through Write()), set this + FileName before calling Write() the first time on the GZipStream. + The actual filename is encoded into the GZIP bytestream with the + ISO-8859-1 code page, according to RFC 1952. It is the application's + responsibility to insure that the FileName can be encoded and decoded + correctly with this code page. + + + + When decompressing (through Read()), you can retrieve this value + any time after the first Read(). In the case where there was no filename + encoded into the GZIP bytestream, the property will return null (Nothing + in VB). + + + + + + The last modified time for the GZIP stream. + + + + GZIP allows the storage of a last modified time with each GZIP entry. + When compressing data, you can set this before the first call to + Write(). When decompressing, you can retrieve this value any time + after the first call to Read(). + + + + + The CRC on the GZIP stream. + + + This is used for internal error checking. You probably don't need to look at this property. + + + + + Create a GZipStream using the specified CompressionMode. + + + + + When mode is CompressionMode.Compress, the GZipStream will use the + default compression level. + + + + As noted in the class documentation, the CompressionMode (Compress + or Decompress) also establishes the "direction" of the stream. A + GZipStream with CompressionMode.Compress works only through + Write(). A GZipStream with + CompressionMode.Decompress works only through Read(). + + + + + + This example shows how to use a GZipStream to compress data. + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(outputFile)) + { + using (Stream compressor = new GZipStream(raw, CompressionMode.Compress)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + Dim outputFile As String = (fileToCompress & ".compressed") + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(outputFile) + Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + + + This example shows how to use a GZipStream to uncompress a file. + + private void GunZipFile(string filename) + { + if (!filename.EndsWith(".gz)) + throw new ArgumentException("filename"); + var DecompressedFile = filename.Substring(0,filename.Length-3); + byte[] working = new byte[WORKING_BUFFER_SIZE]; + int n= 1; + using (System.IO.Stream input = System.IO.File.OpenRead(filename)) + { + using (Stream decompressor= new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, true)) + { + using (var output = System.IO.File.Create(DecompressedFile)) + { + while (n !=0) + { + n= decompressor.Read(working, 0, working.Length); + if (n > 0) + { + output.Write(working, 0, n); + } + } + } + } + } + } + + + + Private Sub GunZipFile(ByVal filename as String) + If Not (filename.EndsWith(".gz)) Then + Throw New ArgumentException("filename") + End If + Dim DecompressedFile as String = filename.Substring(0,filename.Length-3) + Dim working(WORKING_BUFFER_SIZE) as Byte + Dim n As Integer = 1 + Using input As Stream = File.OpenRead(filename) + Using decompressor As Stream = new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, True) + Using output As Stream = File.Create(UncompressedFile) + Do + n= decompressor.Read(working, 0, working.Length) + If n > 0 Then + output.Write(working, 0, n) + End IF + Loop While (n > 0) + End Using + End Using + End Using + End Sub + + + + The stream which will be read or written. + Indicates whether the GZipStream will compress or decompress. + + + + Create a GZipStream using the specified CompressionMode and + the specified CompressionLevel. + + + + + The CompressionMode (Compress or Decompress) also establishes the + "direction" of the stream. A GZipStream with + CompressionMode.Compress works only through Write(). A + GZipStream with CompressionMode.Decompress works only + through Read(). + + + + + + + This example shows how to use a GZipStream to compress a file into a .gz file. + + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(fileToCompress + ".gz")) + { + using (Stream compressor = new GZipStream(raw, + CompressionMode.Compress, + CompressionLevel.BestCompression)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(fileToCompress & ".gz") + Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + The stream to be read or written while deflating or inflating. + Indicates whether the GZipStream will compress or decompress. + A tuning knob to trade speed for effectiveness. + + + + Create a GZipStream using the specified CompressionMode, and + explicitly specify whether the stream should be left open after Deflation + or Inflation. + + + + + This constructor allows the application to request that the captive stream + remain open after the deflation or inflation occurs. By default, after + Close() is called on the stream, the captive stream is also + closed. In some cases this is not desired, for example if the stream is a + memory stream that will be re-read after compressed data has been written + to it. Specify true for the parameter to leave + the stream open. + + + + The (Compress or Decompress) also + establishes the "direction" of the stream. A GZipStream with + CompressionMode.Compress works only through Write(). A GZipStream + with CompressionMode.Decompress works only through Read(). + + + + The GZipStream will use the default compression level. If you want + to specify the compression level, see . + + + + See the other overloads of this constructor for example code. + + + + + + The stream which will be read or written. This is called the "captive" + stream in other places in this documentation. + + + Indicates whether the GZipStream will compress or decompress. + + + + true if the application would like the base stream to remain open after + inflation/deflation. + + + + + Create a GZipStream using the specified CompressionMode and the + specified CompressionLevel, and explicitly specify whether the + stream should be left open after Deflation or Inflation. + + + + + + This constructor allows the application to request that the captive stream + remain open after the deflation or inflation occurs. By default, after + Close() is called on the stream, the captive stream is also + closed. In some cases this is not desired, for example if the stream is a + memory stream that will be re-read after compressed data has been written + to it. Specify true for the parameter to + leave the stream open. + + + + As noted in the class documentation, the CompressionMode (Compress + or Decompress) also establishes the "direction" of the stream. A + GZipStream with CompressionMode.Compress works only through + Write(). A GZipStream with CompressionMode.Decompress works only + through Read(). + + + + + + This example shows how to use a GZipStream to compress data. + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(outputFile)) + { + using (Stream compressor = new GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression, true)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + Dim outputFile As String = (fileToCompress & ".compressed") + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(outputFile) + Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression, True) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + The stream which will be read or written. + Indicates whether the GZipStream will compress or decompress. + true if the application would like the stream to remain open after inflation/deflation. + A tuning knob to trade speed for effectiveness. + + + + This property sets the flush behavior on the stream. + + + + + The size of the working buffer for the compression codec. + + + + + The working buffer is used for all stream operations. The default size is + 1024 bytes. The minimum size is 128 bytes. You may get better performance + with a larger buffer. Then again, you might not. You would have to test + it. + + + + Set this before the first call to Read() or Write() on the + stream. If you try to set it afterwards, it will throw. + + + + + Returns the total number of bytes input so far. + + + Returns the total number of bytes output so far. + + + + Dispose the stream. + + + + This may or may not result in a Close() call on the captive + stream. See the constructors that have a leaveOpen parameter + for more information. + + + This method may be invoked in two distinct scenarios. If disposing + == true, the method has been called directly or indirectly by a + user's code, for example via the public Dispose() method. In this + case, both managed and unmanaged resources can be referenced and + disposed. If disposing == false, the method has been called by the + runtime from inside the object finalizer and this method should not + reference other objects; in that case only unmanaged resources must + be referenced or disposed. + + + + indicates whether the Dispose method was invoked by user code. + + + + + Indicates whether the stream can be read. + + + The return value depends on whether the captive stream supports reading. + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream can be written. + + + The return value depends on whether the captive stream supports writing. + + + + + Flush the stream. + + + + + Reading this property always throws a . + + + + + The position of the stream pointer. + + + + Setting this property always throws a . Reading will return the total bytes + written out, if used in writing, or the total bytes read in, if used in + reading. The count may refer to compressed bytes or uncompressed bytes, + depending on how you've used the stream. + + + + + Read and decompress data from the source stream. + + + + With a GZipStream, decompression is done through reading. + + + + + byte[] working = new byte[WORKING_BUFFER_SIZE]; + using (System.IO.Stream input = System.IO.File.OpenRead(_CompressedFile)) + { + using (Stream decompressor= new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, true)) + { + using (var output = System.IO.File.Create(_DecompressedFile)) + { + int n; + while ((n= decompressor.Read(working, 0, working.Length)) !=0) + { + output.Write(working, 0, n); + } + } + } + } + + + The buffer into which the decompressed data should be placed. + the offset within that data array to put the first byte read. + the number of bytes to read. + the number of bytes actually read + + + + Calling this method always throws a . + + irrelevant; it will always throw! + irrelevant; it will always throw! + irrelevant! + + + + Calling this method always throws a . + + irrelevant; this method will always throw! + + + + Write data to the stream. + + + + + If you wish to use the GZipStream to compress data while writing, + you can create a GZipStream with CompressionMode.Compress, and a + writable output stream. Then call Write() on that GZipStream, + providing uncompressed data as input. The data sent to the output stream + will be the compressed form of the data written. + + + + A GZipStream can be used for Read() or Write(), but not + both. Writing implies compression. Reading implies decompression. + + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Compress a string into a byte array using GZip. + + + + Uncompress it with . + + + + + + + A string to compress. The string will first be encoded + using UTF8, then compressed. + + + The string in compressed form + + + + Compress a byte array into a new byte array using GZip. + + + + Uncompress it with . + + + + + + + A buffer to compress. + + + The data in compressed form + + + + Uncompress a GZip'ed byte array into a single string. + + + + + + + A buffer containing GZIP-compressed data. + + + The uncompressed string + + + + Uncompress a GZip'ed byte array into a byte array. + + + + + + + A buffer containing data that has been compressed with GZip. + + + The data in uncompressed form + + + + A class for compressing streams using the + Deflate algorithm with multiple threads. + + + + + This class performs DEFLATE compression through writing. For + more information on the Deflate algorithm, see IETF RFC 1951, + "DEFLATE Compressed Data Format Specification version 1.3." + + + + This class is similar to , except + that this class is for compression only, and this implementation uses an + approach that employs multiple worker threads to perform the DEFLATE. On + a multi-cpu or multi-core computer, the performance of this class can be + significantly higher than the single-threaded DeflateStream, particularly + for larger streams. How large? Anything over 10mb is a good candidate + for parallel compression. + + + + The tradeoff is that this class uses more memory and more CPU than the + vanilla DeflateStream, and also is less efficient as a compressor. For + large files the size of the compressed data stream can be less than 1% + larger than the size of a compressed data stream from the vanialla + DeflateStream. For smaller files the difference can be larger. The + difference will also be larger if you set the BufferSize to be lower than + the default value. Your mileage may vary. Finally, for small files, the + ParallelDeflateOutputStream can be much slower than the vanilla + DeflateStream, because of the overhead associated to using the thread + pool. + + + + + + + + Create a ParallelDeflateOutputStream. + + + + + This stream compresses data written into it via the DEFLATE + algorithm (see RFC 1951), and writes out the compressed byte stream. + + + + The instance will use the default compression level, the default + buffer sizes and the default number of threads and buffers per + thread. + + + + This class is similar to , + except that this implementation uses an approach that employs + multiple worker threads to perform the DEFLATE. On a multi-cpu or + multi-core computer, the performance of this class can be + significantly higher than the single-threaded DeflateStream, + particularly for larger streams. How large? Anything over 10mb is + a good candidate for parallel compression. + + + + + + + This example shows how to use a ParallelDeflateOutputStream to compress + data. It reads a file, compresses it, and writes the compressed data to + a second, output file. + + + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n= -1; + String outputFile = fileToCompress + ".compressed"; + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(outputFile)) + { + using (Stream compressor = new ParallelDeflateOutputStream(raw)) + { + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Dim outputFile As String = (fileToCompress & ".compressed") + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(outputFile) + Using compressor As Stream = New ParallelDeflateOutputStream(raw) + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + The stream to which compressed data will be written. + + + + Create a ParallelDeflateOutputStream using the specified CompressionLevel. + + + See the + constructor for example code. + + The stream to which compressed data will be written. + A tuning knob to trade speed for effectiveness. + + + + Create a ParallelDeflateOutputStream and specify whether to leave the captive stream open + when the ParallelDeflateOutputStream is closed. + + + See the + constructor for example code. + + The stream to which compressed data will be written. + + true if the application would like the stream to remain open after inflation/deflation. + + + + + Create a ParallelDeflateOutputStream and specify whether to leave the captive stream open + when the ParallelDeflateOutputStream is closed. + + + See the + constructor for example code. + + The stream to which compressed data will be written. + A tuning knob to trade speed for effectiveness. + + true if the application would like the stream to remain open after inflation/deflation. + + + + + Create a ParallelDeflateOutputStream using the specified + CompressionLevel and CompressionStrategy, and specifying whether to + leave the captive stream open when the ParallelDeflateOutputStream is + closed. + + + See the + constructor for example code. + + The stream to which compressed data will be written. + A tuning knob to trade speed for effectiveness. + + By tweaking this parameter, you may be able to optimize the compression for + data with particular characteristics. + + + true if the application would like the stream to remain open after inflation/deflation. + + + + + The ZLIB strategy to be used during compression. + + + + + + The maximum number of buffer pairs to use. + + + + + This property sets an upper limit on the number of memory buffer + pairs to create. The implementation of this stream allocates + multiple buffers to facilitate parallel compression. As each buffer + fills up, this stream uses + ThreadPool.QueueUserWorkItem() + to compress those buffers in a background threadpool thread. After a + buffer is compressed, it is re-ordered and written to the output + stream. + + + + A higher number of buffer pairs enables a higher degree of + parallelism, which tends to increase the speed of compression on + multi-cpu computers. On the other hand, a higher number of buffer + pairs also implies a larger memory consumption, more active worker + threads, and a higher cpu utilization for any compression. This + property enables the application to limit its memory consumption and + CPU utilization behavior depending on requirements. + + + + For each compression "task" that occurs in parallel, there are 2 + buffers allocated: one for input and one for output. This property + sets a limit for the number of pairs. The total amount of storage + space allocated for buffering will then be (N*S*2), where N is the + number of buffer pairs, S is the size of each buffer (). By default, DotNetZip allocates 4 buffer + pairs per CPU core, so if your machine has 4 cores, and you retain + the default buffer size of 128k, then the + ParallelDeflateOutputStream will use 4 * 4 * 2 * 128kb of buffer + memory in total, or 4mb, in blocks of 128kb. If you then set this + property to 8, then the number will be 8 * 2 * 128kb of buffer + memory, or 2mb. + + + + CPU utilization will also go up with additional buffers, because a + larger number of buffer pairs allows a larger number of background + threads to compress in parallel. If you find that parallel + compression is consuming too much memory or CPU, you can adjust this + value downward. + + + + The default value is 16. Different values may deliver better or + worse results, depending on your priorities and the dynamic + performance characteristics of your storage and compute resources. + + + + This property is not the number of buffer pairs to use; it is an + upper limit. An illustration: Suppose you have an application that + uses the default value of this property (which is 16), and it runs + on a machine with 2 CPU cores. In that case, DotNetZip will allocate + 4 buffer pairs per CPU core, for a total of 8 pairs. The upper + limit specified by this property has no effect. + + + + The application can set this value at any time, but it is effective + only before the first call to Write(), which is when the buffers are + allocated. + + + + + + The size of the buffers used by the compressor threads. + + + + + The default buffer size is 128k. The application can set this value + at any time, but it is effective only before the first Write(). + + + + Larger buffer sizes implies larger memory consumption but allows + more efficient compression. Using smaller buffer sizes consumes less + memory but may result in less effective compression. For example, + using the default buffer size of 128k, the compression delivered is + within 1% of the compression delivered by the single-threaded . On the other hand, using a + BufferSize of 8k can result in a compressed data stream that is 5% + larger than that delivered by the single-threaded + DeflateStream. Excessively small buffer sizes can also cause + the speed of the ParallelDeflateOutputStream to drop, because of + larger thread scheduling overhead dealing with many many small + buffers. + + + + The total amount of storage space allocated for buffering will be + (N*S*2), where N is the number of buffer pairs, and S is the size of + each buffer (this property). There are 2 buffers used by the + compressor, one for input and one for output. By default, DotNetZip + allocates 4 buffer pairs per CPU core, so if your machine has 4 + cores, then the number of buffer pairs used will be 16. If you + accept the default value of this property, 128k, then the + ParallelDeflateOutputStream will use 16 * 2 * 128kb of buffer memory + in total, or 4mb, in blocks of 128kb. If you set this property to + 64kb, then the number will be 16 * 2 * 64kb of buffer memory, or + 2mb. + + + + + + + The CRC32 for the data that was written out, prior to compression. + + + This value is meaningful only after a call to Close(). + + + + + The total number of uncompressed bytes processed by the ParallelDeflateOutputStream. + + + This value is meaningful only after a call to Close(). + + + + + Write data to the stream. + + + + + + To use the ParallelDeflateOutputStream to compress data, create a + ParallelDeflateOutputStream with CompressionMode.Compress, passing a + writable output stream. Then call Write() on that + ParallelDeflateOutputStream, providing uncompressed data as input. The + data sent to the output stream will be the compressed form of the data + written. + + + + To decompress data, use the class. + + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Flush the stream. + + + + + Close the stream. + + + You must call Close on the stream to guarantee that all of the data written in has + been compressed, and the compressed data has been written out. + + + + Dispose the object + + + Because ParallelDeflateOutputStream is IDisposable, the + application must call this method when finished using the instance. + + + This method is generally called implicitly upon exit from + a using scope in C# (Using in VB). + + + + + The Dispose method + + indicates whether the Dispose method was invoked by user code. + + + + + Resets the stream for use with another stream. + + + Because the ParallelDeflateOutputStream is expensive to create, it + has been designed so that it can be recycled and re-used. You have + to call Close() on the stream first, then you can call Reset() on + it, to use it again on another stream. + + + + The new output stream for this era. + + + + + ParallelDeflateOutputStream deflater = null; + foreach (var inputFile in listOfFiles) + { + string outputFile = inputFile + ".compressed"; + using (System.IO.Stream input = System.IO.File.OpenRead(inputFile)) + { + using (var outStream = System.IO.File.Create(outputFile)) + { + if (deflater == null) + deflater = new ParallelDeflateOutputStream(outStream, + CompressionLevel.Best, + CompressionStrategy.Default, + true); + deflater.Reset(outStream); + + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + deflater.Write(buffer, 0, n); + } + } + } + } + + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream supports Read operations. + + + Always returns false. + + + + + Indicates whether the stream supports Write operations. + + + Returns true if the provided stream is writable. + + + + + Reading this property always throws a NotSupportedException. + + + + + Returns the current position of the output stream. + + + + Because the output gets written by a background thread, + the value may change asynchronously. Setting this + property always throws a NotSupportedException. + + + + + + This method always throws a NotSupportedException. + + + The buffer into which data would be read, IF THIS METHOD + ACTUALLY DID ANYTHING. + + + The offset within that data array at which to insert the + data that is read, IF THIS METHOD ACTUALLY DID + ANYTHING. + + + The number of bytes to write, IF THIS METHOD ACTUALLY DID + ANYTHING. + + nothing. + + + + This method always throws a NotSupportedException. + + + The offset to seek to.... + IF THIS METHOD ACTUALLY DID ANYTHING. + + + The reference specifying how to apply the offset.... IF + THIS METHOD ACTUALLY DID ANYTHING. + + nothing. It always throws. + + + + This method always throws a NotSupportedException. + + + The new value for the stream length.... IF + THIS METHOD ACTUALLY DID ANYTHING. + + + + + Map from a distance to a distance code. + + + No side effects. _dist_code[256] and _dist_code[257] are never used. + + + + + Describes how to flush the current deflate operation. + + + The different FlushType values are useful when using a Deflate in a streaming application. + + + + No flush at all. + + + Closes the current block, but doesn't flush it to + the output. Used internally only in hypothetical + scenarios. This was supposed to be removed by Zlib, but it is + still in use in some edge cases. + + + + + Use this during compression to specify that all pending output should be + flushed to the output buffer and the output should be aligned on a byte + boundary. You might use this in a streaming communication scenario, so that + the decompressor can get all input data available so far. When using this + with a ZlibCodec, AvailableBytesIn will be zero after the call if + enough output space has been provided before the call. Flushing will + degrade compression and so it should be used only when necessary. + + + + + Use this during compression to specify that all output should be flushed, as + with FlushType.Sync, but also, the compression state should be reset + so that decompression can restart from this point if previous compressed + data has been damaged or if random access is desired. Using + FlushType.Full too often can significantly degrade the compression. + + + + Signals the end of the compression/decompression stream. + + + + The compression level to be used when using a DeflateStream or ZlibStream with CompressionMode.Compress. + + + + + None means that the data will be simply stored, with no change at all. + If you are producing ZIPs for use on Mac OSX, be aware that archives produced with CompressionLevel.None + cannot be opened with the default zip reader. Use a different CompressionLevel. + + + + + Same as None. + + + + + The fastest but least effective compression. + + + + + A synonym for BestSpeed. + + + + + A little slower, but better, than level 1. + + + + + A little slower, but better, than level 2. + + + + + A little slower, but better, than level 3. + + + + + A little slower than level 4, but with better compression. + + + + + The default compression level, with a good balance of speed and compression efficiency. + + + + + A synonym for Default. + + + + + Pretty good compression! + + + + + Better compression than Level7! + + + + + The "best" compression, where best means greatest reduction in size of the input data stream. + This is also the slowest compression. + + + + + A synonym for BestCompression. + + + + + Describes options for how the compression algorithm is executed. Different strategies + work better on different sorts of data. The strategy parameter can affect the compression + ratio and the speed of compression but not the correctness of the compresssion. + + + + + The default strategy is probably the best for normal data. + + + + + The Filtered strategy is intended to be used most effectively with data produced by a + filter or predictor. By this definition, filtered data consists mostly of small + values with a somewhat random distribution. In this case, the compression algorithm + is tuned to compress them better. The effect of Filtered is to force more Huffman + coding and less string matching; it is a half-step between Default and HuffmanOnly. + + + + + Using HuffmanOnly will force the compressor to do Huffman encoding only, with no + string matching. + + + + + An enum to specify the direction of transcoding - whether to compress or decompress. + + + + + Used to specify that the stream should compress the data. + + + + + Used to specify that the stream should decompress the data. + + + + + A general purpose exception class for exceptions in the Zlib library. + + + + + The ZlibException class captures exception information generated + by the Zlib library. + + + + + This ctor collects a message attached to the exception. + + the message for the exception. + + + + Performs an unsigned bitwise right shift with the specified number + + Number to operate on + Ammount of bits to shift + The resulting number from the shift operation + + + + Reads a number of characters from the current source TextReader and writes + the data to the target array at the specified index. + + + The source TextReader to read from + Contains the array of characteres read from the source TextReader. + The starting index of the target array. + The maximum number of characters to read from the source TextReader. + + + The number of characters read. The number will be less than or equal to + count depending on the data available in the source TextReader. Returns -1 + if the end of the stream is reached. + + + + + Computes an Adler-32 checksum. + + + The Adler checksum is similar to a CRC checksum, but faster to compute, though less + reliable. It is used in producing RFC1950 compressed streams. The Adler checksum + is a required part of the "ZLIB" standard. Applications will almost never need to + use this class directly. + + + + + + + Calculates the Adler32 checksum. + + + + This is used within ZLIB. You probably don't need to use this directly. + + + + To compute an Adler32 checksum on a byte array: + + var adler = Adler.Adler32(0, null, 0, 0); + adler = Adler.Adler32(adler, buffer, index, length); + + + + + + Encoder and Decoder for ZLIB and DEFLATE (IETF RFC1950 and RFC1951). + + + + This class compresses and decompresses data according to the Deflate algorithm + and optionally, the ZLIB format, as documented in RFC 1950 - ZLIB and RFC 1951 - DEFLATE. + + + + + The buffer from which data is taken. + + + + + An index into the InputBuffer array, indicating where to start reading. + + + + + The number of bytes available in the InputBuffer, starting at NextIn. + + + Generally you should set this to InputBuffer.Length before the first Inflate() or Deflate() call. + The class will update this number as calls to Inflate/Deflate are made. + + + + + Total number of bytes read so far, through all calls to Inflate()/Deflate(). + + + + + Buffer to store output data. + + + + + An index into the OutputBuffer array, indicating where to start writing. + + + + + The number of bytes available in the OutputBuffer, starting at NextOut. + + + Generally you should set this to OutputBuffer.Length before the first Inflate() or Deflate() call. + The class will update this number as calls to Inflate/Deflate are made. + + + + + Total number of bytes written to the output so far, through all calls to Inflate()/Deflate(). + + + + + used for diagnostics, when something goes wrong! + + + + + The compression level to use in this codec. Useful only in compression mode. + + + + + The number of Window Bits to use. + + + This gauges the size of the sliding window, and hence the + compression effectiveness as well as memory consumption. It's best to just leave this + setting alone if you don't know what it is. The maximum value is 15 bits, which implies + a 32k window. + + + + + The compression strategy to use. + + + This is only effective in compression. The theory offered by ZLIB is that different + strategies could potentially produce significant differences in compression behavior + for different data sets. Unfortunately I don't have any good recommendations for how + to set it differently. When I tested changing the strategy I got minimally different + compression performance. It's best to leave this property alone if you don't have a + good feel for it. Or, you may want to produce a test harness that runs through the + different strategy options and evaluates them on different file types. If you do that, + let me know your results. + + + + + The Adler32 checksum on the data transferred through the codec so far. You probably don't need to look at this. + + + + + Create a ZlibCodec. + + + If you use this default constructor, you will later have to explicitly call + InitializeInflate() or InitializeDeflate() before using the ZlibCodec to compress + or decompress. + + + + + Create a ZlibCodec that either compresses or decompresses. + + + Indicates whether the codec should compress (deflate) or decompress (inflate). + + + + + Initialize the inflation state. + + + It is not necessary to call this before using the ZlibCodec to inflate data; + It is implicitly called when you call the constructor. + + Z_OK if everything goes well. + + + + Initialize the inflation state with an explicit flag to + govern the handling of RFC1950 header bytes. + + + + By default, the ZLIB header defined in RFC 1950 is expected. If + you want to read a zlib stream you should specify true for + expectRfc1950Header. If you have a deflate stream, you will want to specify + false. It is only necessary to invoke this initializer explicitly if you + want to specify false. + + + whether to expect an RFC1950 header byte + pair when reading the stream of data to be inflated. + + Z_OK if everything goes well. + + + + Initialize the ZlibCodec for inflation, with the specified number of window bits. + + The number of window bits to use. If you need to ask what that is, + then you shouldn't be calling this initializer. + Z_OK if all goes well. + + + + Initialize the inflation state with an explicit flag to govern the handling of + RFC1950 header bytes. + + + + If you want to read a zlib stream you should specify true for + expectRfc1950Header. In this case, the library will expect to find a ZLIB + header, as defined in RFC + 1950, in the compressed stream. If you will be reading a DEFLATE or + GZIP stream, which does not have such a header, you will want to specify + false. + + + whether to expect an RFC1950 header byte pair when reading + the stream of data to be inflated. + The number of window bits to use. If you need to ask what that is, + then you shouldn't be calling this initializer. + Z_OK if everything goes well. + + + + Inflate the data in the InputBuffer, placing the result in the OutputBuffer. + + + You must have set InputBuffer and OutputBuffer, NextIn and NextOut, and AvailableBytesIn and + AvailableBytesOut before calling this method. + + + + private void InflateBuffer() + { + int bufferSize = 1024; + byte[] buffer = new byte[bufferSize]; + ZlibCodec decompressor = new ZlibCodec(); + + Console.WriteLine("\n============================================"); + Console.WriteLine("Size of Buffer to Inflate: {0} bytes.", CompressedBytes.Length); + MemoryStream ms = new MemoryStream(DecompressedBytes); + + int rc = decompressor.InitializeInflate(); + + decompressor.InputBuffer = CompressedBytes; + decompressor.NextIn = 0; + decompressor.AvailableBytesIn = CompressedBytes.Length; + + decompressor.OutputBuffer = buffer; + + // pass 1: inflate + do + { + decompressor.NextOut = 0; + decompressor.AvailableBytesOut = buffer.Length; + rc = decompressor.Inflate(FlushType.None); + + if (rc != ZlibConstants.Z_OK && rc != ZlibConstants.Z_STREAM_END) + throw new Exception("inflating: " + decompressor.Message); + + ms.Write(decompressor.OutputBuffer, 0, buffer.Length - decompressor.AvailableBytesOut); + } + while (decompressor.AvailableBytesIn > 0 || decompressor.AvailableBytesOut == 0); + + // pass 2: finish and flush + do + { + decompressor.NextOut = 0; + decompressor.AvailableBytesOut = buffer.Length; + rc = decompressor.Inflate(FlushType.Finish); + + if (rc != ZlibConstants.Z_STREAM_END && rc != ZlibConstants.Z_OK) + throw new Exception("inflating: " + decompressor.Message); + + if (buffer.Length - decompressor.AvailableBytesOut > 0) + ms.Write(buffer, 0, buffer.Length - decompressor.AvailableBytesOut); + } + while (decompressor.AvailableBytesIn > 0 || decompressor.AvailableBytesOut == 0); + + decompressor.EndInflate(); + } + + + + The flush to use when inflating. + Z_OK if everything goes well. + + + + Ends an inflation session. + + + Call this after successively calling Inflate(). This will cause all buffers to be flushed. + After calling this you cannot call Inflate() without a intervening call to one of the + InitializeInflate() overloads. + + Z_OK if everything goes well. + + + + I don't know what this does! + + Z_OK if everything goes well. + + + + Initialize the ZlibCodec for deflation operation. + + + The codec will use the MAX window bits and the default level of compression. + + + + int bufferSize = 40000; + byte[] CompressedBytes = new byte[bufferSize]; + byte[] DecompressedBytes = new byte[bufferSize]; + + ZlibCodec compressor = new ZlibCodec(); + + compressor.InitializeDeflate(CompressionLevel.Default); + + compressor.InputBuffer = System.Text.ASCIIEncoding.ASCII.GetBytes(TextToCompress); + compressor.NextIn = 0; + compressor.AvailableBytesIn = compressor.InputBuffer.Length; + + compressor.OutputBuffer = CompressedBytes; + compressor.NextOut = 0; + compressor.AvailableBytesOut = CompressedBytes.Length; + + while (compressor.TotalBytesIn != TextToCompress.Length && compressor.TotalBytesOut < bufferSize) + { + compressor.Deflate(FlushType.None); + } + + while (true) + { + int rc= compressor.Deflate(FlushType.Finish); + if (rc == ZlibConstants.Z_STREAM_END) break; + } + + compressor.EndDeflate(); + + + + Z_OK if all goes well. You generally don't need to check the return code. + + + + Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel. + + + The codec will use the maximum window bits (15) and the specified + CompressionLevel. It will emit a ZLIB stream as it compresses. + + The compression level for the codec. + Z_OK if all goes well. + + + + Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, + and the explicit flag governing whether to emit an RFC1950 header byte pair. + + + The codec will use the maximum window bits (15) and the specified CompressionLevel. + If you want to generate a zlib stream, you should specify true for + wantRfc1950Header. In this case, the library will emit a ZLIB + header, as defined in RFC + 1950, in the compressed stream. + + The compression level for the codec. + whether to emit an initial RFC1950 byte pair in the compressed stream. + Z_OK if all goes well. + + + + Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, + and the specified number of window bits. + + + The codec will use the specified number of window bits and the specified CompressionLevel. + + The compression level for the codec. + the number of window bits to use. If you don't know what this means, don't use this method. + Z_OK if all goes well. + + + + Initialize the ZlibCodec for deflation operation, using the specified + CompressionLevel, the specified number of window bits, and the explicit flag + governing whether to emit an RFC1950 header byte pair. + + + The compression level for the codec. + whether to emit an initial RFC1950 byte pair in the compressed stream. + the number of window bits to use. If you don't know what this means, don't use this method. + Z_OK if all goes well. + + + + Deflate one batch of data. + + + You must have set InputBuffer and OutputBuffer before calling this method. + + + + private void DeflateBuffer(CompressionLevel level) + { + int bufferSize = 1024; + byte[] buffer = new byte[bufferSize]; + ZlibCodec compressor = new ZlibCodec(); + + Console.WriteLine("\n============================================"); + Console.WriteLine("Size of Buffer to Deflate: {0} bytes.", UncompressedBytes.Length); + MemoryStream ms = new MemoryStream(); + + int rc = compressor.InitializeDeflate(level); + + compressor.InputBuffer = UncompressedBytes; + compressor.NextIn = 0; + compressor.AvailableBytesIn = UncompressedBytes.Length; + + compressor.OutputBuffer = buffer; + + // pass 1: deflate + do + { + compressor.NextOut = 0; + compressor.AvailableBytesOut = buffer.Length; + rc = compressor.Deflate(FlushType.None); + + if (rc != ZlibConstants.Z_OK && rc != ZlibConstants.Z_STREAM_END) + throw new Exception("deflating: " + compressor.Message); + + ms.Write(compressor.OutputBuffer, 0, buffer.Length - compressor.AvailableBytesOut); + } + while (compressor.AvailableBytesIn > 0 || compressor.AvailableBytesOut == 0); + + // pass 2: finish and flush + do + { + compressor.NextOut = 0; + compressor.AvailableBytesOut = buffer.Length; + rc = compressor.Deflate(FlushType.Finish); + + if (rc != ZlibConstants.Z_STREAM_END && rc != ZlibConstants.Z_OK) + throw new Exception("deflating: " + compressor.Message); + + if (buffer.Length - compressor.AvailableBytesOut > 0) + ms.Write(buffer, 0, buffer.Length - compressor.AvailableBytesOut); + } + while (compressor.AvailableBytesIn > 0 || compressor.AvailableBytesOut == 0); + + compressor.EndDeflate(); + + ms.Seek(0, SeekOrigin.Begin); + CompressedBytes = new byte[compressor.TotalBytesOut]; + ms.Read(CompressedBytes, 0, CompressedBytes.Length); + } + + + whether to flush all data as you deflate. Generally you will want to + use Z_NO_FLUSH here, in a series of calls to Deflate(), and then call EndDeflate() to + flush everything. + + Z_OK if all goes well. + + + + End a deflation session. + + + Call this after making a series of one or more calls to Deflate(). All buffers are flushed. + + Z_OK if all goes well. + + + + Reset a codec for another deflation session. + + + Call this to reset the deflation state. For example if a thread is deflating + non-consecutive blocks, you can call Reset() after the Deflate(Sync) of the first + block and before the next Deflate(None) of the second block. + + Z_OK if all goes well. + + + + Set the CompressionStrategy and CompressionLevel for a deflation session. + + the level of compression to use. + the strategy to use for compression. + Z_OK if all goes well. + + + + Set the dictionary to be used for either Inflation or Deflation. + + The dictionary bytes to use. + Z_OK if all goes well. + + + + A bunch of constants used in the Zlib interface. + + + + + The maximum number of window bits for the Deflate algorithm. + + + + + The default number of window bits for the Deflate algorithm. + + + + + indicates everything is A-OK + + + + + Indicates that the last operation reached the end of the stream. + + + + + The operation ended in need of a dictionary. + + + + + There was an error with the stream - not enough data, not open and readable, etc. + + + + + There was an error with the data - not enough data, bad data, etc. + + + + + There was an error with the working buffer. + + + + + The size of the working buffer used in the ZlibCodec class. Defaults to 8192 bytes. + + + + + The minimum size of the working buffer used in the ZlibCodec class. Currently it is 128 bytes. + + + + + Represents a Zlib stream for compression or decompression. + + + + + The ZlibStream is a Decorator on a . It adds ZLIB compression or decompression to any + stream. + + + Using this stream, applications can compress or decompress data via + stream Read() and Write() operations. Either compresssion or + decompression can occur through either reading or writing. The compression + format used is ZLIB, which is documented in IETF RFC 1950, "ZLIB Compressed + Data Format Specification version 3.3". This implementation of ZLIB always uses + DEFLATE as the compression method. (see IETF RFC 1951, "DEFLATE + Compressed Data Format Specification version 1.3.") + + + The ZLIB format allows for varying compression methods, window sizes, and dictionaries. + This implementation always uses the DEFLATE compression method, a preset dictionary, + and 15 window bits by default. + + + + This class is similar to , except that it adds the + RFC1950 header and trailer bytes to a compressed stream when compressing, or expects + the RFC1950 header and trailer bytes when decompressing. It is also similar to the + . + + + + + + + + Create a ZlibStream using the specified CompressionMode. + + + + + When mode is CompressionMode.Compress, the ZlibStream + will use the default compression level. The "captive" stream will be + closed when the ZlibStream is closed. + + + + + + This example uses a ZlibStream to compress a file, and writes the + compressed data to another file. + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(fileToCompress + ".zlib")) + { + using (Stream compressor = new ZlibStream(raw, CompressionMode.Compress)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(fileToCompress & ".zlib") + Using compressor As Stream = New ZlibStream(raw, CompressionMode.Compress) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + + The stream which will be read or written. + Indicates whether the ZlibStream will compress or decompress. + + + + Create a ZlibStream using the specified CompressionMode and + the specified CompressionLevel. + + + + + + When mode is CompressionMode.Decompress, the level parameter is ignored. + The "captive" stream will be closed when the ZlibStream is closed. + + + + + + This example uses a ZlibStream to compress data from a file, and writes the + compressed data to another file. + + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(fileToCompress + ".zlib")) + { + using (Stream compressor = new ZlibStream(raw, + CompressionMode.Compress, + CompressionLevel.BestCompression)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(fileToCompress & ".zlib") + Using compressor As Stream = New ZlibStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + + The stream to be read or written while deflating or inflating. + Indicates whether the ZlibStream will compress or decompress. + A tuning knob to trade speed for effectiveness. + + + + Create a ZlibStream using the specified CompressionMode, and + explicitly specify whether the captive stream should be left open after + Deflation or Inflation. + + + + + + When mode is CompressionMode.Compress, the ZlibStream will use + the default compression level. + + + + This constructor allows the application to request that the captive stream + remain open after the deflation or inflation occurs. By default, after + Close() is called on the stream, the captive stream is also + closed. In some cases this is not desired, for example if the stream is a + that will be re-read after + compression. Specify true for the parameter to leave the stream + open. + + + + See the other overloads of this constructor for example code. + + + + + The stream which will be read or written. This is called the + "captive" stream in other places in this documentation. + Indicates whether the ZlibStream will compress or decompress. + true if the application would like the stream to remain + open after inflation/deflation. + + + + Create a ZlibStream using the specified CompressionMode + and the specified CompressionLevel, and explicitly specify + whether the stream should be left open after Deflation or Inflation. + + + + + + This constructor allows the application to request that the captive + stream remain open after the deflation or inflation occurs. By + default, after Close() is called on the stream, the captive + stream is also closed. In some cases this is not desired, for example + if the stream is a that will be + re-read after compression. Specify true for the parameter to leave the stream open. + + + + When mode is CompressionMode.Decompress, the level parameter is + ignored. + + + + + + + This example shows how to use a ZlibStream to compress the data from a file, + and store the result into another file. The filestream remains open to allow + additional data to be written to it. + + + using (var output = System.IO.File.Create(fileToCompress + ".zlib")) + { + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (Stream compressor = new ZlibStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, true)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + // can write additional data to the output stream here + } + + + Using output As FileStream = File.Create(fileToCompress & ".zlib") + Using input As Stream = File.OpenRead(fileToCompress) + Using compressor As Stream = New ZlibStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, True) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + ' can write additional data to the output stream here. + End Using + + + + The stream which will be read or written. + + Indicates whether the ZlibStream will compress or decompress. + + + true if the application would like the stream to remain open after + inflation/deflation. + + + + A tuning knob to trade speed for effectiveness. This parameter is + effective only when mode is CompressionMode.Compress. + + + + + This property sets the flush behavior on the stream. + Sorry, though, not sure exactly how to describe all the various settings. + + + + + The size of the working buffer for the compression codec. + + + + + The working buffer is used for all stream operations. The default size is + 1024 bytes. The minimum size is 128 bytes. You may get better performance + with a larger buffer. Then again, you might not. You would have to test + it. + + + + Set this before the first call to Read() or Write() on the + stream. If you try to set it afterwards, it will throw. + + + + + Returns the total number of bytes input so far. + + + Returns the total number of bytes output so far. + + + + Dispose the stream. + + + + This may or may not result in a Close() call on the captive + stream. See the constructors that have a leaveOpen parameter + for more information. + + + This method may be invoked in two distinct scenarios. If disposing + == true, the method has been called directly or indirectly by a + user's code, for example via the public Dispose() method. In this + case, both managed and unmanaged resources can be referenced and + disposed. If disposing == false, the method has been called by the + runtime from inside the object finalizer and this method should not + reference other objects; in that case only unmanaged resources must + be referenced or disposed. + + + + indicates whether the Dispose method was invoked by user code. + + + + + Indicates whether the stream can be read. + + + The return value depends on whether the captive stream supports reading. + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream can be written. + + + The return value depends on whether the captive stream supports writing. + + + + + Flush the stream. + + + + + Reading this property always throws a . + + + + + The position of the stream pointer. + + + + Setting this property always throws a . Reading will return the total bytes + written out, if used in writing, or the total bytes read in, if used in + reading. The count may refer to compressed bytes or uncompressed bytes, + depending on how you've used the stream. + + + + + Read data from the stream. + + + + + + If you wish to use the ZlibStream to compress data while reading, + you can create a ZlibStream with CompressionMode.Compress, + providing an uncompressed data stream. Then call Read() on that + ZlibStream, and the data read will be compressed. If you wish to + use the ZlibStream to decompress data while reading, you can create + a ZlibStream with CompressionMode.Decompress, providing a + readable compressed data stream. Then call Read() on that + ZlibStream, and the data will be decompressed as it is read. + + + + A ZlibStream can be used for Read() or Write(), but + not both. + + + + + + The buffer into which the read data should be placed. + + + the offset within that data array to put the first byte read. + + the number of bytes to read. + + the number of bytes read + + + + Calling this method always throws a . + + + The offset to seek to.... + IF THIS METHOD ACTUALLY DID ANYTHING. + + + The reference specifying how to apply the offset.... IF + THIS METHOD ACTUALLY DID ANYTHING. + + + nothing. This method always throws. + + + + Calling this method always throws a . + + + The new value for the stream length.... IF + THIS METHOD ACTUALLY DID ANYTHING. + + + + + Write data to the stream. + + + + + + If you wish to use the ZlibStream to compress data while writing, + you can create a ZlibStream with CompressionMode.Compress, + and a writable output stream. Then call Write() on that + ZlibStream, providing uncompressed data as input. The data sent to + the output stream will be the compressed form of the data written. If you + wish to use the ZlibStream to decompress data while writing, you + can create a ZlibStream with CompressionMode.Decompress, and a + writable output stream. Then call Write() on that stream, + providing previously compressed data. The data sent to the output stream + will be the decompressed form of the data written. + + + + A ZlibStream can be used for Read() or Write(), but not both. + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Compress a string into a byte array using ZLIB. + + + + Uncompress it with . + + + + + + + + A string to compress. The string will first be encoded + using UTF8, then compressed. + + + The string in compressed form + + + + Compress a byte array into a new byte array using ZLIB. + + + + Uncompress it with . + + + + + + + A buffer to compress. + + + The data in compressed form + + + + Uncompress a ZLIB-compressed byte array into a single string. + + + + + + + A buffer containing ZLIB-compressed data. + + + The uncompressed string + + + + Uncompress a ZLIB-compressed byte array into a byte array. + + + + + + + A buffer containing ZLIB-compressed data. + + + The data in uncompressed form + + + + Specifies whether the target is inside or outside the System.IO.Packaging.Package. + + + + + The relationship references a part that is inside the package. + + + + + The relationship references a resource that is external to the package. + + + + + Represent an OOXML Zip package. + + + + + This is the store for all Rows, Columns and Cells. + It is a Dictionary implementation that allows you to change the Key (the RowID, ColumnID or CellID ) + + + + + Compares an IndexItem + + + + + Creates a new collection + + The Cells. This list must be sorted + + + + Return the item with the RangeID + + + + + + + Return specified index from the sorted list + + + + + + + Insert a number of rows in the collecion but dont update the cell only the index + + + + Index of first rangeItem + + + + Insert a number of rows in the collecion + + + + Index of first rangeItem + + + + Delete rows from the collecion + + + + Update range id's on cells + + + + Init the size starting from 128 items. Double the size until the list fits. + + + + + + Check the size and double the size if out of bound + + + + + Tries to parse a double from the specified which is expected to be a string value. + + The string value. + The double value parsed from the specified . + True if could be parsed to a double; otherwise, false. + + + + Tries to parse a boolean value from the specificed . + + The value to check for boolean-ness. + The boolean value parsed from the specified . + True if could be parsed + + + + Tries to parse a from the specified which is expected to be a string value. + + The string value. + The double value parsed from the specified . + True if could be parsed to a double; otherwise, false. + + + + Convert an object value to a double + + + + Return NaN if invalid double otherwise 0 + + + + + OOXML requires that "," , and & be escaped, but ' and " should *not* be escaped, nor should + any extended Unicode characters. This function only encodes the required characters. + System.Security.SecurityElement.Escape() escapes ' and " as ' and ", so it cannot + be used reliably. System.Web.HttpUtility.HtmlEncode overreaches as well and uses the numeric + escape equivalent. + + + + + + + Return true if preserve space attribute is set. + + + + + + + + Return true if preserve space attribute is set. + + + + + + + + + Return true if preserve space attribute is set. + + + + + + + Extension methods for guarding + + + + + Throws an ArgumentNullException if argument is null + + Argument type + Argument to check + parameter/argument name + + + + + Throws an if the string argument is null or empty + + Argument to check + parameter/argument name + + + + + Throws an ArgumentOutOfRangeException if the value of the argument is out of the supplied range + + Type implementing + The argument to check + Min value of the supplied range + Max value of the supplied range + parameter/argument name + + + + + Compression using a run length encoding algorithm. + See MS-OVBA Section 2.4 + + Byte array to decompress + + + + + Decompression using a run length encoding algorithm. + See MS-OVBA Section 2.4 + + Byte array to decompress + + + + + + Read the stream and return it as a byte-array + + + + + + + + An argument + + Argument Type + + + + Utility for validation + + + + + Class for handling translation between ExcelAddresses and sqref addresses. + + + + + Transforms an address to a valid sqRef address. + + The address to transform + A valid SqRef address + + + + Transforms an sqRef address into a excel address + + The address to transform + A valid excel address + + + + Type of VBA module + + + + + A Workbook or Worksheet objects + + + + + A Module + + + + + A Class + + + + + Designer, typically a user form + + + + + A VBA code module. + + + + + The name of the module + + + + + A description of the module + + + + + The code without any module level attributes. + Can contain function level attributes. + + + + + A reference to the helpfile + + + + + Module level attributes. + + + + + Type of module + + + + + If the module is readonly + + + + + If the module is private + + + + + To determine if the attribute uses double quotes around the value + + + + + A string + + + + + Not a string + + + + + The name of the attribute + + + + + The datatype. Determine if the attribute uses double quotes around the value. + + + + + The value of the attribute without any double quotes. + + + + + Base class for VBA collections + + + + + + Indexer + + Name + + + + + Indexer + + Position + + + + + Number of items in the collection + + + + + If a specific name exists in the collection + + The name + True if the name exists + + + + Removes the item + + + + + + Removes the item at the specified index + + THe index + + + + Collection class for VBA modules + + + + + Adds a new VBA Module + + The name of the module + The module object + + + + Adds a new VBA class + + The name of the class + Private or Public not createble + The class object + + + + A collection of the vba projects references + + + + + Adds a new reference + + The reference object + + + + A collection of the module level attributes + + + + + Represents the VBA project part of the package + + + + + Type of system where the VBA project was created. + + + + + System kind. Default Win32. + + + + + Name of the project + + + + + A description of the project + + + + + A helpfile + + + + + Secondary helpfile + + + + + Context if refering the helpfile + + + + + Conditional compilation constants + + + + + Codepage for encoding. Default is current regional setting. + + + + + Project references + + + + + Code Modules (Modules, classes, designer code) + + + + + The digital signature + + + + + VBA protection + + + + + 2.4.3.3 Decryption + + Byte hex string + The decrypted value + + + + 2.4.3.2 Encryption + + + Byte hex string + + + + MS-OVBA 2.3.4.1 + + + + + + MS-OVBA 2.3.4.1 + + + + + + Create a new VBA Project + + + + + Remove the project from the package + + + + + Vba security properties + + + + + Specifies whether access to the VBA project was restricted by the user + + + + + Specifies whether access to the VBA project was restricted by the VBA host application + + + + + Specifies whether access to the VBA project was restricted by the VBA project editor + + + + + Specifies whether the VBA project is visible. + + + + + Password protect the VBA project. + An empty string or null will remove the password protection + + The password + + + + A VBA reference + + + + + Constructor. + Defaults ReferenceRecordID to 0xD + + + + + The reference record ID. See MS-OVBA documentation for more info. + + + + + The name of the reference + + + + + LibID + For more info check MS-OVBA 2.1.1.8 LibidReference and 2.3.4.2.2 PROJECTREFERENCES + + + + + A string representation of the object (the Name) + + + + + + A reference to a twiddled type library + + + + + Constructor. + Sets ReferenceRecordID to 0x2F + + + + + LibIdExternal + For more info check MS-OVBA 2.1.1.8 LibidReference and 2.3.4.2.2 PROJECTREFERENCES + + + + + LibIdTwiddled + For more info check MS-OVBA 2.1.1.8 LibidReference and 2.3.4.2.2 PROJECTREFERENCES + + + + + A GUID that specifies the Automation type library the extended type library was generated from. + + + + + A reference to an external VBA project + + + + + Constructor. + Sets ReferenceRecordID to 0x0E + + + + + LibIdRelative + For more info check MS-OVBA 2.1.1.8 LibidReference and 2.3.4.2.2 PROJECTREFERENCES + + + + + Major version of the referenced VBA project + + + + + Minor version of the referenced VBA project + + + + + The code signature properties of the project + + + + + The certificate to sign the VBA project. + + This certificate must have a private key. + There is no validation that the certificate is valid for codesigning, so make sure it's valid to sign Excel files (Excel 2010 is more strict that prior versions). + + + + + + The verifier + + + + + Access to workbook view properties + + + + + Creates a new ExcelWorkbookView which provides access to all the + view states of the worksheet. + + + + + + + + Position of the upper left corner of the workbook window. In twips. + + + + + Position of the upper left corner of the workbook window. In twips. + + + + + Width of the workbook window. In twips. + + + + + Height of the workbook window. In twips. + + + + + If true the the workbook window is minimized. + + + + + Show the vertical scrollbar + + + + + Show the horizontal scrollbar + + + + + Show the sheet tabs + + + + + Set the window position in twips + + + + + + + + + Represents the different view states of the worksheet + + + + + The worksheet panes after a freeze or split. + + + + + Set the active cell. Must be set within the SelectedRange. + + + + + Selected Cells.Used in combination with ActiveCell + + + + + Creates a new ExcelWorksheetView which provides access to all the view states of the worksheet. + + + + + + + + Returns a reference to the sheetView element + + + + + The active cell. Single Cell address. + This cell must be inside the selected range. If not, the selected range is set to the active cell address + + + + + Selected Cells in the worksheet. Used in combination with ActiveCell. + If the active cell is not inside the selected range, the active cell will be set to the first cell in the selected range. + If the selected range has multiple adresses, these are separated with space. If the active cell is not within the first address in this list, the attribute ActiveCellId must be set (not supported, so it must be set via the XML). + + + + + Indicates if the worksheet is selected within the workbook + + + + + Sets the view mode of the worksheet to pagelayout + + + + + Sets the view mode of the worksheet to pagebreak + + + + + Show gridlines in the worksheet + + + + + Show the Column/Row headers (containg column letters and row numbers) + + + + + Window zoom magnification for current view representing percent values. + + + + + Flag indicating whether the sheet is in 'right to left' display mode. When in this mode,Column A is on the far right, Column B ;is one column left of Column A, and so on. Also,information in cells is displayed in the Right to Left format. + + + + + Reference to the panes + + + + + Freeze the columns/rows to left and above the cell + + + + + + + Unlock all rows and columns to scroll freely + /// + + + + Same as SetValue but will set first char to lower case. + + + + + + + + Is this value allowed to be changed? + + + + + Left border style + + + + + Right border style + + + + + Top border style + + + + + Bottom border style + + + + + The color of the pattern + + + + + The background color + + + + + Font bold + + + + + Font Italic + + + + + Font-Strikeout + + + + + Id for number format + + Build in ID's + + 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 @ + + + + + The background fill of a cell + + + + + Angle of the linear gradient + + + + + Linear or Path gradient + + + + + Specifies in percentage format(from the top to the bottom) the position of the top edge of the inner rectangle (color 1). For top, 0 means the top edge of the inner rectangle is on the top edge of the cell, and 1 means it is on the bottom edge of the cell. (applies to From Corner and From Center gradients). + + + + + Specifies in percentage format (from the top to the bottom) the position of the bottom edge of the inner rectangle (color 1). For bottom, 0 means the bottom edge of the inner rectangle is on the top edge of the cell, and 1 means it is on the bottom edge of the cell. + + + + + Specifies in percentage format (from the left to the right) the position of the left edge of the inner rectangle (color 1). For left, 0 means the left edge of the inner rectangle is on the left edge of the cell, and 1 means it is on the right edge of the cell. (applies to From Corner and From Center gradients). + + + + + Specifies in percentage format (from the left to the right) the position of the right edge of the inner rectangle (color 1). For right, 0 means the right edge of the inner rectangle is on the left edge of the cell, and 1 means it is on the right edge of the cell. (applies to From Corner and From Center gradients). + + + + + Gradient Color 1 + + + + + Gradient Color 2 + + + + + Xml access class for gradient fillsde + + + + + Type of gradient fill. + + + + + Angle of the linear gradient + + + + + Gradient color 1 + + + + + Gradient color 2 + + + + + Percentage format bottom + + + + + Percentage format top + + + + + Percentage format left + + + + + Percentage format right + + + + + Xml access class for border top level + + + + + Left border style properties + + + + + Right border style properties + + + + + Top border style properties + + + + + Bottom border style properties + + + + + Diagonal border style properties + + + + + Diagonal up border + + + + + Diagonal down border + + + + + Xml access class for border items + + + + + Cell Border style + + + + + Border style + + + + + Xml access class xfs records. This is the top level style object. + + + + + Style index + + + + + Numberformat properties + + + + + Font properties + + + + + Fill properties + + + + + Border style properties + + + + + Horizontal alignment + + + + + Vertical alignment + + + + + Wraped text + + + + + Text rotation angle + + + + + Locked when sheet is protected + + + + + Hide formulas when sheet is protected + + + + + Prefix the formula with a quote. + + + + + Readingorder + + + + + Shrink to fit + + + + + Indentation + + + + + Xml access class for named styles + + + + + Named style index + + + + + Style index + + + + + Name of the style + + + + + The style object + + + + + Xml access class for color + + + + + Theme color value + + + + + Tint + + + + + RGB value + + + + + Indexed color value + + + + + Xml access class for fills + + + + + Cell fill pattern style + + + + + Pattern color + + + + + Cell background color + + + + + Xml access class for fonts + + + + + The name of the font + + + + + Font size + + + + + Font family + + + + + Text color + + + + + Font Scheme + + + + + If the font is bold + + + + + If the font is italic + + + + + If the font is striked out + + + + + If the font is underlined. + When set to true a the text is underlined with a single line + + + + + If the font is underlined + + + + + Vertical aligned + + + + + Xml access class for number formats + + + + + Id for number format + + Build in ID's + + 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 @ + + + + + Xml helper class for cell style classes + + + + + Handels paragraph text + + + + + Text + + + + + A collection of Paragraph objects + + + + + Add a rich text string + + The text to add + + + + + Cell Border style + + + + + Left border style + + + + + Right border style + + + + + Top border style + + + + + Bottom border style + + + + + 0Diagonal border style + + + + + A diagonal from the bottom left to top right of the cell + + + + + A diagonal from the top left to bottom right of the cell + + + + + Set the border style around the range. + + The border style + + + + Set the border style around the range. + + The border style + The color of the border + + + + Cell border style + + + + + The line style of the border + + + + + The color of the border + + + + + Color for cellstyling + + + + + The theme color + + + + + The tint value + + + + + The RGB value + + + + + The indexed color number. + + + + + Set the color of the object + + The color + + + + Return the RGB value for the Indexed or Tint property + + The RGB color starting with a # + + + + Return the RGB value for the color object that uses the Indexed or Tint property + + The color object + The RGB color starting with a # + + + + The background fill of a cell + + + + + The pattern for solid fills. + + + + + The color of the pattern + + + + + The background color + + + + + Access to properties for gradient fill. + + + + + A richtext part + + + + + The text + + + + + Preserves whitespace. Default true + + + + + Bold text + + + + + Italic text + + + + + Strike-out text + + + + + Underlined text + + + + + Vertical Alignment + + + + + Font size + + + + + Name of the font + + + + + Text color + + + + + Collection of Richtext objects + + + + + Collection containing the richtext objects + + + + + + + Items in the list + + + + + Add a rich text string + + The text to add + + + + + Insert a rich text string at the specified index. + + The zero-based index at which rich text should be inserted. + The text to insert. + + + + + Clear the collection + + + + + Removes an item at the specific index + + + + + + Removes an item + + + + + + The text + + + + + Toplevel class for cell styling + + + + + Numberformat + + + + + Font styling + + + + + Fill Styling + + + + + Border + + + + + The horizontal alignment in the cell + + + + + The vertical alignment in the cell + + + + + Wrap the text + + + + + Readingorder + + + + + Shrink the text to fit + + + + + The margin between the border and the text + + + + + Text orientation in degrees. Values range from 0 to 180. + + + + + If true the cell is locked for editing when the sheet is protected + + + + + + If true the formula is hidden when the sheet is protected. + + + + + + If true the cell has a quote prefix, which indicates the value of the cell is prefixed with a single quote. + + + + + The index in the style collection + + + + + Cell style Font + + + + + The name of the font + + + + + The Size of the font + + + + + Font family + + + + + Cell color + + + + + Scheme + + + + + Font-bold + + + + + Font-italic + + + + + Font-Strikeout + + + + + Font-Underline + + + + + Font-Vertical Align + + + + + Set the font from a Font object + + + + + + The numberformat of the cell + + + + + The numeric index fror the format + + + + + The numberformat + + + + + If the numeric format is a build-in from. + + + + + Border line style + + + + + Horizontal text alignment + + + + + Vertical text alignment + + + + + Font-Vertical Align + + + + + Font-Underlinestyle for + + + + + Fill pattern + + + + + Type of gradient fill + + + + + No gradient fill. + + + + + This gradient fill is of linear gradient type. Linear gradient type means that the transition from one color to the next is along a line (e.g., horizontal, vertical,diagonal, etc.) + + + + + This gradient fill is of path gradient type. Path gradient type means the that the boundary of transition from one color to the next is a rectangle, defined by top,bottom, left, and right attributes on the gradientFill element. + + + + + The reading order + + + + + Reading order is determined by scanning the text for the first non-whitespace character: if it is a strong right-to-left character, the reading order is right-to-left; otherwise, the reading order left-to-right. + + + + + Left to Right + + + + + Right to Left + + + + + Linestyle + + + + + Type of font strike + + + + + Used by Rich-text and Paragraphs. + + + + + Set the font style from a font object + + + + + + Base class for pivot table field groups + + + + + A date group + + + + + How to group the date field + + + + + Auto detect start date + + + + + Auto detect end date + + + + + A pivot table field numeric grouping + + + + + Start value + + + + + End value + + + + + Interval + + + + + A field Item. Used for grouping + + + + + The text. Unique values only + + + + + A page / report filter field + + + + + The Name of the field + + + + + A pivo table data field + + + + + The field + + + + + The index of the datafield + + + + + The name of the datafield + + + + + Field index. Reference to the field collection + + + + + Specifies the index to the base item when the ShowDataAs calculation is in use + + + + + Number format id. + + + + + Number format for the data column + + + + + Type of aggregate function + + + + + Base collection class for pivottable fields + + + + + + Indexer by name + + + + + + + Returns the date group field. + + The type of grouping + The matching field. If none is found null is returned + + + + Returns the numeric group field. + + The matching field. If none is found null is returned + + + + Collection class for Row and column fields in a Pivottable + + + + + Add a new row/column field + + The field + The new field + + + + Insert a new row/column field + + The field + The position to insert the field + The new field + + + + Remove a field + + + + + + Remove a field at a specific position + + + + + + Collection class for data fields in a Pivottable + + + + + Add a new datafield + + The field + The new datafield + + + + Remove a datafield + + + + + + Indicates that the cache contains data that consolidates ranges. + + + + + Indicates that the cache contains data from an external data source. + + + + + Indicates that the cache contains a scenario summary report + + + + + Indicates that the cache contains worksheet data + + + + + Cache definition. This class defines the source data. Note that one cache definition can be shared between many pivot tables. + + + + + Reference to the internal package part + + + + + Provides access to the XML data representing the cache definition in the package. + + + + + The package internal URI to the pivottable cache definition Xml Document. + + + + + Referece to the PivoTable object + + + + + The source data range when the pivottable has a worksheet datasource. + The number of columns in the range must be intact if this property is changed. + The range must be in the same workbook as the pivottable. + + + + + Type of source data + + + + + Defines the axis for a PivotTable + + + + + None + + + + + Column axis + + + + + Page axis (Include Count Filter) + + + + + + Row axis + + + + + Values axis + + + + + Build-in table row functions + + + + + Defines the data formats for a field in the PivotTable + + + + + Indicates the field is shown as the "difference from" a value. + + + + + Indicates the field is shown as the "index. + + + + + Indicates that the field is shown as its normal datatype. + + + + + /Indicates the field is show as the "percentage of" a value + + + + + Indicates the field is shown as the "percentage difference from" a value. + + + + + Indicates the field is shown as the percentage of column. + + + + + Indicates the field is shown as the percentage of row + + + + + Indicates the field is shown as percentage of total. + + + + + Indicates the field is shown as running total in the table. + + + + + Built-in subtotal functions + + + + + Data grouping + + + + + Sorting + + + + + A pivot table field. + + + + + Name of the field + + + + + Compact mode + + + + + A boolean that indicates whether the items in this field should be shown in Outline form + + + + + The custom text that is displayed for the subtotals label + + + + + A boolean that indicates whether to show all items for this field + + + + + The type of sort that is applied to this field + + + + + A boolean that indicates whether manual filter is in inclusive mode + + + + + Enumeration of the different subtotal operations that can be applied to page, row or column fields + + + + + Type of axis + + + + + If the field is a row field + + + + + If the field is a column field + + + + + If the field is a datafield + + + + + If the field is a page field. + + + + + Grouping settings. + Null if the field has no grouping otherwise ExcelPivotTableFieldNumericGroup or ExcelPivotTableFieldNumericGroup. + + + + + Pivottable field Items. Used for grouping. + + + + + Add numberic grouping to the field + + Start value + End value + Interval + + + + Add a date grouping on this field. + + Group by + + + + Add a date grouping on this field. + + Group by + Fixed start date. Use DateTime.MinValue for auto + Fixed end date. Use DateTime.MaxValue for auto + + + + Add a date grouping on this field. + + Number of days when grouping on days + Fixed start date. Use DateTime.MinValue for auto + Fixed end date. Use DateTime.MaxValue for auto + + + + A collection of pivottable objects + + + + + Create a pivottable on the supplied range + + The range address including header and total row + The Source data range address + The name of the table. Must be unique + The pivottable object + + + + The pivottable Index. Base 0. + + + + + + + Pivottabes accesed by name + + The name of the pivottable + The Pivotable. Null if the no match is found + + + + An Excel Pivottable + + + + + Add a new pivottable + + The worksheet + the address of the pivottable + The address of the Source data + + + + + + Provides access to the XML data representing the pivottable in the package. + + + + + The package internal URI to the pivottable Xml Document. + + + + + Name of the pivottable object in Excel + + + + + Reference to the pivot table cache definition object + + + + + The worksheet where the pivottable is located + + + + + The location of the pivot table + + + + + If multiple datafields are displayed in the row area or the column area + + + + + if true apply legacy table autoformat number format properties. + + + + + If true apply legacy table autoformat border properties + + + + + If true apply legacy table autoformat font properties + + + + + If true apply legacy table autoformat pattern properties + + + + + If true apply legacy table autoformat width/height properties. + + + + + Show member property information + + + + + Show the drill indicators + + + + + If the user is prevented from drilling down on a PivotItem or aggregate value + + + + + Show the drill down buttons + + + + + If the tooltips should be displayed for PivotTable data cells. + + + + + If the row and column titles from the PivotTable should be printed. + + + + + If the row and column titles from the PivotTable should be printed. + + + + + If the grand totals should be displayed for the PivotTable columns + + + + + If the grand totals should be displayed for the PivotTable rows + + + + + If the drill indicators expand collapse buttons should be printed. + + + + + Indicates whether to show error messages in cells. + + + + + The string to be displayed in cells that contain errors. + + + + + Specifies the name of the value area field header in the PivotTable. + This caption is shown when the PivotTable when two or more fields are in the values area. + + + + + Show field headers + + + + + The number of page fields to display before starting another row or column + + + + + A boolean that indicates whether legacy auto formatting has been applied to the PivotTable view + + + + + A boolean that indicates whether the in-grid drop zones should be displayed at runtime, and whether classic layout is applied + + + + + Specifies the indentation increment for compact axis and can be used to set the Report Layout to Compact Form + + + + + A boolean that indicates whether data fields in the PivotTable should be displayed in outline form + + + + + a boolean that indicates whether new fields should have their outline flag set to true + + + + + A boolean that indicates whether the fields of a PivotTable can have multiple filters set on them + + + + + A boolean that indicates whether new fields should have their compact flag set to true + + + + + A boolean that indicates whether the field next to the data field in the PivotTable should be displayed in the same column of the spreadsheet + + + + + Specifies the string to be displayed for grand totals. + + + + + Specifies the string to be displayed in row header in compact mode. + + + + + Specifies the string to be displayed in cells with no value + + + + + Specifies the first row of the PivotTable header, relative to the top left cell in the ref value + + + + + Specifies the first column of the PivotTable data, relative to the top left cell in the ref value + + + + + Specifies the first column of the PivotTable data, relative to the top left cell in the ref value + + + + + The fields in the table + + + + + Row label fields + + + + + Column label fields + + + + + Value fields + + + + + Report filter fields + + + + + Pivot style name. Used for custom styles + + + + + The table style. If this property is cusom the style from the StyleName propery is used. + + + + + A collection of table columns + + + + + A reference to the table object + + + + + Number of items in the collection + + + + + The column Index. Base 0. + + + + + + + Indexer + + The name of the table + The table column. Null if the table name is not found in the collection + + + + Table style Enum + + + + + An Excel Table + + + + + Provides access to the XML data representing the table in the package. + + + + + The package internal URI to the Table Xml Document. + + + + + The name of the table object in Excel + + + + + The worksheet of the table + + + + + The address of the table + + + + + Collection of the columns in the table + + + + + The table style. If this property is cusom, the style from the StyleName propery is used. + + + + + If the header row is visible or not + + + + + If the header row has an autofilter + + + + + If the total row is visible or not + + + + + The style name for custum styles + + + + + Display special formatting for the first row + + + + + Display special formatting for the last row + + + + + Display banded rows + + + + + Display banded columns + + + + + Named style used for the total row + + + + + Named style used for the data cells + + + + + Named style used for the header row + + + + + A collection of table objects + + + + + Create a table on the supplied range + + The range address including header and total row + The name of the table. Must be unique + The table object + + + + Number of items in the collection + + + + + Get the table object from a range. + + The range + The table. Null if no range matches + + + + The table Index. Base 0. + + + + + + + Indexer + + The name of the table + The table. Null if the table name is not found in the collection + + + + Build-in table row functions + + + + + A table column + + + + + The column id + + + + + The position of the column + + + + + The name of the column + + + + + A string text in the total row + + + + + Build-in total row functions. + To set a custom Total row formula use the TotalsRowFormula property + + + + + + Sets a custom Totals row Formula. + Be carefull with this property since it is not validated. + + tbl.Columns[9].TotalsRowFormula = string.Format("SUM([{0}])",tbl.Columns[9].Name); + + + + + + The named style for datacells in the column + + + + + Sets a calculated column Formula. + Be carefull with this property since it is not validated. + + tbl.Columns[9].CalculatedColumnFormula = string.Format("SUM(MyDataTable[[#This Row],[{0}]])",tbl.Columns[9].Name); + + + + + + Provides access to the properties bag of the package + + + + + Provides access to all the office document properties. + + + + + + + Provides access to the XML document that holds all the code + document properties. + + + + + Gets/sets the title property of the document (core property) + + + + + Gets/sets the subject property of the document (core property) + + + + + Gets/sets the author property of the document (core property) + + + + + Gets/sets the comments property of the document (core property) + + + + + Gets/sets the keywords property of the document (core property) + + + + + Gets/sets the lastModifiedBy property of the document (core property) + + + + + Gets/sets the lastPrinted property of the document (core property) + + + + + Gets/sets the created property of the document (core property) + + + + + Gets/sets the category property of the document (core property) + + + + + Gets/sets the status property of the document (core property) + + + + + Provides access to the XML document that holds the extended properties of the document (app.xml) + + + + + Gets/Set the Application property of the document (extended property) + + + + + Gets/sets the HyperlinkBase property of the document (extended property) + + + + + Gets/Set the AppVersion property of the document (extended property) + + + + + Gets/sets the Company property of the document (extended property) + + + + + Gets/sets the Manager property of the document (extended property) + + + + + Gets/sets the modified property of the document (core property) + + + + + Get the value of an extended property + + The name of the property + The value + + + + Set the value for an extended property + + The name of the property + The value + + + + Provides access to the XML document which holds the document's custom properties + + + + + Gets the value of a custom property + + The name of the property + The current value of the property + + + + Allows you to set the value of a current custom property or create your own custom property. + + The name of the property + The value of the property + + + + Saves the document properties back to the package. + + + + + How the application should calculate formulas in the workbook + + + + + Indicates that calculations in the workbook are performed automatically when cell values change. + The application recalculates those cells that are dependent on other cells that contain changed values. + This mode of calculation helps to avoid unnecessary calculations. + + + + + Indicates tables be excluded during automatic calculation + + + + + Indicates that calculations in the workbook be triggered manually by the user. + + + + + Represents the Excel workbook and provides access to all the + document properties and worksheets within the workbook. + + + + + Creates a new instance of the ExcelWorkbook class. + + The parent package + NamespaceManager + + + + Read shared strings to list + + + + + Provides access to all the worksheets in the workbook. + + + + + Provides access to named ranges + + + + + Max font width for the workbook + This method uses GDI. If you use Asure or another environment that does not support GDI, you have to set this value manually if you don't use the standard Calibri font + + + + + Access properties to protect or unprotect a workbook + + + + + Access to workbook view properties + + + + + A reference to the VBA project. + Null if no project exists. + Use Workbook.CreateVBAProject to create a new VBA-Project + + + + + Create an empty VBA project. + + + + + URI to the workbook inside the package + + + + + URI to the styles inside the package + + + + + URI to the shared strings inside the package + + + + + Returns a reference to the workbook's part within the package + + + + + Provides access to the XML data representing the workbook in the package. + + + + + The date systems used by Microsoft Excel can be based on one of two different dates. By default, a serial number of 1 in Microsoft Excel represents January 1, 1900. + The default for the serial number 1 can be changed to represent January 2, 1904. + This option was included in Microsoft Excel for Windows to make it compatible with Excel for the Macintosh, which defaults to January 2, 1904. + + + + + Create or read the XML for the workbook. + + + + + Provides access to the XML data representing the styles in the package. + + + + + Package styles collection. Used internally to access style data. + + + + + The office document properties + + + + + Calculation mode for the workbook. + + + + + Should Excel do a full calculation after the workbook has been loaded? + This property is always true for both new workbooks and loaded templates(on load). If this is not the wanted behavior set this property to false. + + + + + Saves the workbook and all its components to the package. + For internal use only! + + + + + Is their any names in the workbook or in the sheets. + + ? + + + + Worksheet hidden enumeration + + + + + The worksheet is visible + + + + + The worksheet is hidden but can be shown by the user via the user interface + + + + + The worksheet is hidden and cannot be shown by the user via the user interface + + + + + For Cell value structure (for memory optimization of huge sheet) + + + + + Represents an Excel Chartsheet and provides access to its properties and methods + + + + + Represents an Excel worksheet and provides access to its properties and methods + + + + + Collection containing merged cell addresses + + + + + A worksheet + + Namespacemanager + Package + Relationship ID + URI + Name of the sheet + Sheet id + Position + hide + + + + The Uri to the worksheet within the package + + + + + The Zip.ZipPackagePart for the worksheet within the package + + + + + The ID for the worksheet's relationship with the workbook in the package + + + + + The unique identifier for the worksheet. + + + + + The position of the worksheet. + + + + + The index in the worksheets collection + + + + + Address for autofilter + + + + + + Returns a ExcelWorksheetView object that allows you to set the view state properties of the worksheet + + + + + The worksheet's display name as it appears on the tab + + + + + Provides access to named ranges + + + + + Indicates if the worksheet is hidden in the workbook + + + + + Get/set the default height of all rows in the worksheet + + + + + 'True' if defaultRowHeight value has been manually set, or is different from the default value. + Is automaticlly set to 'True' when assigning the DefaultRowHeight property + + + + + Get/set the default width of all columns in the worksheet + + + + * + + + + Summary rows below details + + + + + Summary rows to right of details + + + + + Automatic styles + + + + + Color of the sheet tab + + + + + The XML document holding the worksheet data. + All column, row, cell, pagebreak, merged cell and hyperlink-data are loaded into memory and removed from the document when loading the document. + + + + + Vml drawings. underlaying object for comments + + + + + Collection of comments + + + + + Get the lenth of the attributes + Conditional formatting attributes can be extremly long som get length of the attributes to finetune position. + + + + + + + Extracts the workbook XML without the sheetData-element (containing all cell data). + Xml-Cell data can be extreemly large (GB), so we find the sheetdata element in the streem (position start) and + then tries to find the </sheetData> element from the end-parameter. + This approach is to avoid out of memory exceptions reading large packages + + the worksheet stream + Position from previous reading where we found the sheetData element + End position, where </sheetData> or <sheetData/> is found + Encoding + The worksheet xml, with an empty sheetdata. (Sheetdata is in memory in the worksheet) + + + + Read until the node is found. If not found the xmlreader is reseted. + + The reader + Text to search for + Alternative text to search for + + + + + Load Hyperlinks + + The reader + + + + Load cells + + The reader + + + + Load merged cells + + + + + + Update merged cells + + The writer + + + + Reads a row from the XML reader + + The reader + The row number + + + + + A reference to the header and footer class which allows you to + set the header and footer for all odd, even and first pages of the worksheet + + + To format the text you can use the following format + + PrefixDescription + &UUnderlined + &EDouble Underline + &K:xxxxxxColor. ex &K:FF0000 for red + &"Font,Regular Bold Italic"Changes the font. Regular or Bold or Italic or Bold Italic can be used. ex &"Arial,Bold Italic" + &nnChange font size. nn is an integer. ex &24 + &GPlaceholder for images. Images can not be added by the library, but its possible to use in a template. + + + + + + Printer settings + + + + + Provides access to a range of cells + + + + + Provides access to the selected range of cells + + + + + Addresses to merged ranges + + + + + Provides access to an individual row within the worksheet so you can set its properties. + + The row number in the worksheet + + + + + Provides access to an individual column within the worksheet so you can set its properties. + + The column number in the worksheet + + + + + Returns the name of the worksheet + + The name of the worksheet + + + + Make the current worksheet active. + + + + + Selects a range in the worksheet. The active cell is the topmost cell. + Make the current worksheet active. + + An address range + + + + Selects a range in the worksheet. The actice cell is the topmost cell. + + A range of cells + Make the sheet active + + + + Selects a range in the worksheet. The active cell is the topmost cell of the first address. + Make the current worksheet active. + + An address range + + + + Selects a range in the worksheet. The active cell is the topmost cell of the first address. + + A range of cells + Make the sheet active + + + + Inserts a new row into the spreadsheet. Existing rows below the position are + shifted down. All formula are updated to take account of the new row. + + The position of the new row + Number of rows to insert + + + + Inserts a new row into the spreadsheet. Existing rows below the position are + shifted down. All formula are updated to take account of the new row. + + The position of the new row + Number of rows to insert. + Copy Styles from this row. Applied to all inserted rows + + + + Inserts a new column into the spreadsheet. Existing columns below the position are + shifted down. All formula are updated to take account of the new column. + + The position of the new column + Number of columns to insert + + + + Inserts a new column into the spreadsheet. Existing column to the left are + shifted. All formula are updated to take account of the new column. + + The position of the new column + Number of columns to insert. + Copy Styles from this column. Applied to all inserted columns + + + + Adds a value to the row of merged cells to fix for inserts or deletes + + + + + + + + Adds a value to the row of merged cells to fix for inserts or deletes + + + + + + + + Delete the specified row from the worksheet. + + A row to be deleted + + + + Delete the specified row from the worksheet. + + The start row + Number of rows to delete + + + + Delete the specified column from the worksheet. + + The column to be deleted + + + + Delete the specified column from the worksheet. + + The start column + Number of columns to delete + + + + Deletes the specified row from the worksheet. + + The number of the start row to be deleted + Number of rows to delete + Not used. Rows are always shifted + + + + Get the cell value from thw worksheet + + The row number + The row number + The value + + + + Get a strongly typed cell value from the worksheet + + The type + The row number + The row number + The value. If the value can't be converted to the specified type, the default value will be returned + + + + Set the value of a cell + + The row number + The column number + The value + + + + Set the value of a cell + + The Excel address + The value + + + + Get MergeCell Index No + + + + + + + + Delete the printersettings relationship and part. + + + + + Save all table data + + + + + Inserts the cols collection into the XML document + + + + + Insert row and cells into the XML document + + + + + Update xml with hyperlinks + + The stream + + + + Create the hyperlinks node in the XML + + + + + + Dimension address for the worksheet. + Top left cell to Bottom right. + If the worksheet has no cells, null is returned + + + + + Access to sheet protection properties + + + + + Collection of drawing-objects like shapes, images and charts + + + + + Tables defined in the worksheet. + + + + + Pivottables defined in the worksheet. + + + + + ConditionalFormatting defined in the worksheet. Use the Add methods to create ConditionalFormatting and add them to the worksheet. Then + set the properties on the instance returned. + + + + + + DataValidation defined in the worksheet. Use the Add methods to create DataValidations and add them to the worksheet. Then + set the properties on the instance returned. + + + + + + An image displayed as the background of the worksheet. + + + + + Returns the style ID given a style name. + The style ID will be created if not found, but only if the style name exists! + + + + + + + The workbook object + + + + + Get the next ID from a shared formula or an Array formula + Sharedforumlas will have an id from 0-x. Array formula ids start from 0x4000001-. + + If the formula is an array formula + + + + + Get the ExcelColumn for column (span ColumnMin and ColumnMax) + + + + + + + Get accessor of sheet value + + row + column + cell value + + + + Get accessor of sheet styleId + + row + column + cell styleId + + + + Set accessor of sheet value + + row + column + value + + + + Set accessor of sheet styleId + + row + column + styleId + + + + Bulk(Range) set accessor of sheet value, for value array + + start row + start column + end row + end column + set values + + + + Existance check of sheet value + + row + column + is exists + + + + Existance check of sheet styleId + + row + column + is exists + + + + Existance check of sheet value + + row + column + + is exists + + + + Existance check of sheet styleId + + row + column + + is exists + + + + The collection of worksheets for the workbook + + + + + Returns the number of worksheets in the workbook + + + + + Foreach support + + An enumerator + + + + Adds a new blank worksheet. + + The name of the workbook + + + + Adds a copy of a worksheet + + The name of the workbook + The worksheet to be copied + + + + Adds a chartsheet to the workbook. + + + + + + + + Validate the sheetname + + The Name + True if valid + + + + Creates the XML document representing a new empty worksheet + + + + + + Deletes a worksheet from the collection + + The position of the worksheet in the workbook + + + + Deletes a worksheet from the collection + + The name of the worksheet in the workbook + + + + Delete a worksheet from the collection + + The worksheet to delete + + + + Returns the worksheet at the specified position. + + The position of the worksheet. 1-base + + + + + Returns the worksheet matching the specified name + + The name of the worksheet + + + + + Copies the named worksheet and creates a new worksheet in the same workbook + + The name of the existing worksheet + The name of the new worksheet to create + The new copy added to the end of the worksheets collection + + + + Moves the source worksheet to the position before the target worksheet + + The name of the source worksheet + The name of the target worksheet + + + + Moves the source worksheet to the position before the target worksheet + + The id of the source worksheet + The id of the target worksheet + + + + Moves the source worksheet to the position after the target worksheet + + The name of the source worksheet + The name of the target worksheet + + + + Moves the source worksheet to the position after the target worksheet + + The id of the source worksheet + The id of the target worksheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + Help class containing XML functions. + Can be Inherited + + + + + Schema order list + + + + + Options to insert a node in the XmlDocument + + + + + Insert as first node of "topNode" + + + + + Insert as the last child of "topNode" + + + + + Insert after the "referenceNode" + + + + + Insert before the "referenceNode" + + + + + Use the Schema List to insert in the right order. If the Schema list + is null or empty, consider "Last" as the selected option + + + + + Create a complex node. Insert the node according to SchemaOrder + using the TopNode as the parent + + + + + + + Create a complex node. Insert the node according to the + using the as the parent + + + + + + + + Creates complex XML nodes + + + 1. "d:conditionalFormatting" + 1.1. Creates/find the first "conditionalFormatting" node + + 2. "d:conditionalFormatting/@sqref" + 2.1. Creates/find the first "conditionalFormatting" node + 2.2. Creates (if not exists) the @sqref attribute + + 3. "d:conditionalFormatting/@id='7'/@sqref='A9:B99'" + 3.1. Creates/find the first "conditionalFormatting" node + 3.2. Creates/update its @id attribute to "7" + 3.3. Creates/update its @sqref attribute to "A9:B99" + + 4. "d:conditionalFormatting[@id='7']/@sqref='X1:X5'" + 4.1. Creates/find the first "conditionalFormatting" node with @id=7 + 4.2. Creates/update its @sqref attribute to "X1:X5" + + 5. "d:conditionalFormatting[@id='7']/@id='8'/@sqref='X1:X5'/d:cfRule/@id='AB'" + 5.1. Creates/find the first "conditionalFormatting" node with @id=7 + 5.2. Set its @id attribute to "8" + 5.2. Creates/update its @sqref attribute and set it to "X1:X5" + 5.3. Creates/find the first "cfRule" node (inside the node) + 5.4. Creates/update its @id attribute to "AB" + + 6. "d:cfRule/@id=''" + 6.1. Creates/find the first "cfRule" node + 6.1. Remove the @id attribute + + + + + + The last node creates/found + + + + return Prepend node + + name of the node to check + Topnode to check children + + + + + Insert the new node before any of the nodes in the comma separeted list + + Parent node + comma separated list containing nodes to insert after. Left to right order + The new node to be inserterd + + + + A range address + + Examples of addresses are "A1" "B1:C2" "A:A" "1:1" "A1:E2,G3:G5" + + + + Creates an Address object + + start row + start column + End row + End column + + + + Creates an Address object + + start row + start column + End row + End column + start row fixed + start column fixed + End row fixed + End column fixed + + + + Creates an Address object + + Examples of addresses are "A1" "B1:C2" "A:A" "1:1" "A1:E2,G3:G5" + The Excel Address + + + + Creates an Address object + + Examples of addresses are "A1" "B1:C2" "A:A" "1:1" "A1:E2,G3:G5" + The Excel Address + Reference to the package to find information about tables and names + The address + + + + Address is an defined name + + the name + Should always be true + + + + Gets the row and column of the top left cell. + + The start row column. + + + + Gets the row and column of the bottom right cell. + + The end row column. + + + + The address for the range + + + + + If the address is a defined name + + + + + Returns the address text + + + + + + returns the first address if the address is a multi address. + A1:A2,B1:B2 returns A1:A2 + + + + + Validate the address + + + + + Range address with the address property readonly + + + + + The address for the range + + Examples of addresses are "A1" "B1:C2" "A:A" "1:1" "A1:E2,G3:G5" + + + + The address for the range + + Examples of addresses are "A1" "B1:C2" "A:A" "1:1" "A1:E2,G3:G5" + + + + A single cell address + + + + + Initializes a new instance of the ExcelCellAddress class. + + The row. + The column. + + + + Initializes a new instance of the ExcelCellAddress class. + + The address + + + + Row + + + + + Column + + + + + Celladdress + + + + + If the address is an invalid reference (#REF!) + + + + + Returns the letter corresponding to the supplied 1-based column index. + + Index of the column (1-based) + The corresponding letter, like A for 1. + + + + An Excel Cell Comment + + + + + Author + + + + + The comment text + + + + + Sets the font of the first richtext item. + + + + + Richtext collection + + + + + Reference + + + + + Collection of Excelcomment objects + + + + + Access to the comment xml document + + + + + A reference to the worksheet object + + + + + Number of comments in the collection + + + + + Indexer for the comments collection + + The index + The comment + + + + Indexer for the comments collection + + The cell + The comment + + + + Adds a comment to the top left cell of the range + + The cell + The comment text + Author + The comment + + + + Removes the comment + + The comment to remove + + + + Shifts all comments based on their address and the location of inserted rows and columns. + + The start row. + The start column. + The number of rows to insert. + The number of columns to insert. + + + + Shifts all comments based on their address and the location of inserted rows and columns. + + The start row. + The start column. + The number of rows to insert. + The number of columns to insert. + + + + Removes the comment at the specified position + + The index + + + + Sheet protection + + + + + + + If the worksheet is protected. + + + + + Allow users to select locked cells + + + + + Allow users to select unlocked cells + + + + + Allow users to edit objects + + + + + Allow users to edit senarios + + + + + Allow users to format cells + + + + + Allow users to Format columns + + + + + Allow users to Format rows + + + + + Allow users to insert columns + + + + + Allow users to Format rows + + + + + Allow users to insert hyperlinks + + + + + Allow users to delete columns + + + + + Allow users to delete rows + + + + + Allow users to sort a range + + + + + Allow users to use autofilters + + + + + Allow users to use pivottables + + + + + Sets a password for the sheet. + + + + + + Base class containing cell address manipulating methods. + + + + + Get the sheet, row and column from the CellID + + + + + + + + + Get the cellID for the cell. + + + + + + + + + Translates a R1C1 to an absolut address/Formula + + Address + Current row + Current column + The RC address + + + + Translates a absolut address to R1C1 Format + + R1C1 Address + Current row + Current column + The absolut address/Formula + + + + Translates betweein R1C1 or absolut addresses + + The addresss/function + The translating function + + + + + + + + + Translate to R1C1 + + the value to be translated + + + + + + + + + Translates to absolute address + + + + + + + + + + + Adds or subtracts a row or column to an address + + + + + + + + + + + Returns with brackets if the value is negative + + The value + + + + + Get the offset value for RC format + + + + + + + + + Returns the character representation of the numbered column + + The number of the column + The letter representing the column + + + + Get the row/columns for a Cell-address + + The address + Returns the to column + Returns the from column + Returns the to row + Returns the from row + Is the from row fixed? + Is the from column fixed? + Is the to row fixed? + Is the to column fixed? + + + + + Get the row/column for n Cell-address + + The address + Returns Tthe row + Returns the column + true if valid + + + + Get the row/column for a Cell-address + + the address + returns the row + returns the column + throw exception if invalid, otherwise returns false + + + + + Returns the AlphaNumeric representation that Excel expects for a Cell Address + + The number of the row + The number of the column in the worksheet + The cell address in the format A1 + + + + Returns the AlphaNumeric representation that Excel expects for a Cell Address + + The number of the row + The number of the column in the worksheet + Absolute row + Absolute column + The cell address in the format A1 + + + + Returns the AlphaNumeric representation that Excel expects for a Cell Address + + The number of the row + The number of the column in the worksheet + Get an absolute address ($A$1) + The cell address in the format A1 + + + + Returns the AlphaNumeric representation that Excel expects for a Cell Address + + From row number + From column number + To row number + From column number + The cell address in the format A1 + + + + Returns the AlphaNumeric representation that Excel expects for a Cell Address + + From row number + From column number + To row number + From column number + if true address is absolute (like $A$1) + The cell address in the format A1 + + + + Returns the AlphaNumeric representation that Excel expects for a Cell Address + + From row number + From column number + To row number + From column number + + + + + The cell address in the format A1 + + + + Get the full address including the worksheet name + + The name of the worksheet + The address + The full address + + + + Checks that a cell address (e.g. A5) is valid. + + The alphanumeric cell address + True if the cell address is valid + + + + Updates the Excel formula so that all the cellAddresses are incremented by the row and column increments + if they fall after the afterRow and afterColumn. + Supports inserting rows and columns into existing templates. + + The Excel formula + The amount to increment the cell reference by + The amount to increment the cell reference by + Only change rows after this row + Only change columns after this column + The sheet that contains the formula currently being processed. + The sheet where cells are being inserted or deleted. + Fixed address + The updated version of the . + + + + Updates all the references to a renamed sheet in a formula. + + The formula to updated. + The old sheet name. + The new sheet name. + The formula with all cross-sheet references updated. + + + + HyperlinkClass + + + + + A new hyperlink with the specified URI + + The URI + + + + A new hyperlink with the specified URI. This syntax is obsolete + + The URI + + + + + A new hyperlink with the specified URI and kind + + The URI + Kind (absolute/relative or indeterminate) + + + + Sheet internal reference + + Address + Displayed text + + + + The Excel address for internal links. + + + + + Displayed text + + + + + Tooltip + + + + + If the hyperlink spans multiple columns + + + + + If the hyperlink spans multiple rows + + + + + Used to handle non absolute URI's. + Is used if IsAblsoluteUri is true. The base URI will have a dummy value of xl://nonAbsolute. + + + + + A named range. + + + + + A named range + + The name + The sheet containing the name. null if its a global name + Sheet where the address points + The address + The index in the collection + + + + Name of the range + + + + + Is the named range local for the sheet + + + + + Is the name hidden + + + + + A comment for the Name + + + + + Collection for named ranges + + + + + Add a new named range + + The name + The range + + + + + Add a defined name referencing value + + + + + + + + Add a defined name referencing a formula -- the method name contains a typo. + This method is obsolete and will be removed in the future. + Use + + + + + + + + Add a defined name referencing a formula + + + + + + + + Remove a defined name from the collection + + The name + + + + Checks collection for the presence of a key + + key to search for + true if the key is in the collection + + + + The current number of items in the collection + + + + + Name indexer + + The name (key) for a Named range + a reference to the range + + Throws a KeyNotFoundException if the key is not in the collection. + + + + + Implement interface method IEnumerator<ExcelNamedRange> GetEnumerator() + + + + + + Implement interface method IEnumeratable GetEnumerator() + + + + + + Printer orientation + + + + + Portrait orientation + + + + + Landscape orientation + + + + + Papersize + + + + + Letter paper (8.5 in. by 11 in.) + + + + + Letter small paper (8.5 in. by 11 in.) + + + + + // Tabloid paper (11 in. by 17 in.) + + + + + Ledger paper (17 in. by 11 in.) + + + + + Legal paper (8.5 in. by 14 in.) + + + + + Statement paper (5.5 in. by 8.5 in.) + + + + + Executive paper (7.25 in. by 10.5 in.) + + + + + A3 paper (297 mm by 420 mm) + + + + + A4 paper (210 mm by 297 mm) + + + + + A4 small paper (210 mm by 297 mm) + + + + + A5 paper (148 mm by 210 mm) + + + + + B4 paper (250 mm by 353 mm) + + + + + B5 paper (176 mm by 250 mm) + + + + + Folio paper (8.5 in. by 13 in.) + + + + + Quarto paper (215 mm by 275 mm) + + + + + Standard paper (10 in. by 14 in.) + + + + + Standard paper (11 in. by 17 in.) + + + + + Note paper (8.5 in. by 11 in.) + + + + + #9 envelope (3.875 in. by 8.875 in.) + + + + + #10 envelope (4.125 in. by 9.5 in.) + + + + + #11 envelope (4.5 in. by 10.375 in.) + + + + + #12 envelope (4.75 in. by 11 in.) + + + + + #14 envelope (5 in. by 11.5 in.) + + + + + C paper (17 in. by 22 in.) + + + + + D paper (22 in. by 34 in.) + + + + + E paper (34 in. by 44 in.) + + + + + DL envelope (110 mm by 220 mm) + + + + + C5 envelope (162 mm by 229 mm) + + + + + C3 envelope (324 mm by 458 mm) + + + + + C4 envelope (229 mm by 324 mm) + + + + + C6 envelope (114 mm by 162 mm) + + + + + C65 envelope (114 mm by 229 mm) + + + + + B4 envelope (250 mm by 353 mm) + + + + + B5 envelope (176 mm by 250 mm) + + + + + B6 envelope (176 mm by 125 mm) + + + + + Italy envelope (110 mm by 230 mm) + + + + + Monarch envelope (3.875 in. by 7.5 in.). + + + + + 6 3/4 envelope (3.625 in. by 6.5 in.) + + + + + US standard fanfold (14.875 in. by 11 in.) + + + + + German standard fanfold (8.5 in. by 12 in.) + + + + + German legal fanfold (8.5 in. by 13 in.) + + + + + ISO B4 (250 mm by 353 mm) + + + + + Japanese double postcard (200 mm by 148 mm) + + + + + Standard paper (9 in. by 11 in.) + + + + + Standard paper (10 in. by 11 in.) + + + + + Standard paper (15 in. by 11 in.) + + + + + Invite envelope (220 mm by 220 mm) + + + + + Letter extra paper (9.275 in. by 12 in.) + + + + + Legal extra paper (9.275 in. by 15 in.) + + + + + Tabloid extra paper (11.69 in. by 18 in.) + + + + + A4 extra paper (236 mm by 322 mm) + + + + + Letter transverse paper (8.275 in. by 11 in.) + + + + + A4 transverse paper (210 mm by 297 mm) + + + + + Letter extra transverse paper (9.275 in. by 12 in.) + + + + + SuperA/SuperA/A4 paper (227 mm by 356 mm) + + + + + SuperB/SuperB/A3 paper (305 mm by 487 mm) + + + + + Letter plus paper (8.5 in. by 12.69 in.) + + + + + A4 plus paper (210 mm by 330 mm) + + + + + A5 transverse paper (148 mm by 210 mm) + + + + + JIS B5 transverse paper (182 mm by 257 mm) + + + + + A3 extra paper (322 mm by 445 mm) + + + + + A5 extra paper (174 mm by 235 mm) + + + + + ISO B5 extra paper (201 mm by 276 mm) + + + + + A2 paper (420 mm by 594 mm) + + + + + A3 transverse paper (297 mm by 420 mm) + + + + + A3 extra transverse paper (322 mm by 445 mm*/ + + + + + Specifies printed page order + + + + + Order pages vertically first, then move horizontally. + + + + + Order pages horizontally first, then move vertically + + + + + Printer settings + + + + + Left margin in inches + + + + + Right margin in inches + + + + + Top margin in inches + + + + + Bottom margin in inches + + + + + Header margin in inches + + + + + Footer margin in inches + + + + + Orientation + Portrait or Landscape + + + + + Fit to Width in pages. + Set FitToPage to true when using this one. + 0 is automatic + + + + + Fit to height in pages. + Set FitToPage to true when using this one. + 0 is automatic + + + + + Print scale + + + + + Fit To Page. + + + + + Print headings (column letter and row numbers) + + + + + Print titles + Rows to be repeated after each pagebreak. + The address must be a full row address (ex. 1:1) + + + + + Print titles + Columns to be repeated after each pagebreak. + The address must be a full column address (ex. A:A) + + + + + The printarea. + Null if no print area is set. + + + + + Print gridlines + + + + + Horizontal centered when printing + w + + + + Vertical centered when printing + + + + + Specifies printed page order + + + + + Print black and white + + + + + Print a draft + + + + + Paper size + + + + + All or none of the margin attributes must exist. Create all att ones. + + + + + A range of cells + + + + + Reference to the worksheet + + + + + On change address handler + + + + + We dont know the address yet. Set the delegate first time a property is set. + + + + + + + + Set a single cell + + + + + + + + Set a range + + + + + + + + Set a multirange (A1:A2,C1:C2) + + + + + + + + Set the property for an address + + + + + + + + Handles shared formulas + + The range + The formula + The address of the formula + If the forumla is an array formula. + + + + The styleobject for the range. + + + + + The named style + + + + + The style ID. + It is not recomended to use this one. Use Named styles as an alternative. + If you do, make sure that you use the Style.UpdateXml() method to update any new styles added to the workbook. + + + + + Set the range to a specific value + + + + + Returns the formatted value. + + + + + Set the column width from the content of the range. The minimum width is the value of the ExcelWorksheet.defaultColumnWidth property. + Note: Cells containing formulas are ignored since EPPlus don't have a calculation engine. + Wrapped and merged cells are also ignored. + + + + + Set the column width from the content of the range. + Note: Cells containing formulas are ignored if no calculation is made. + Wrapped and merged cells are also ignored. + + This method will not work if you run in an environment that does not support GDI + Minimum column width + + + + Set the column width from the content of the range. + Note: Cells containing formulas are ignored if no calculation is made. + Wrapped and merged cells are also ignored. + Hidden columns are left hidden. + + Minimum column width + Maximum column width + + + + Gets or sets a formula for a range. + + + + + Gets or Set a formula in R1C1 format. + + + + + Set the hyperlink property for a range of cells + + + + + If the cells in the range are merged. + + + + + Set an autofilter for the range + + + + + If the value is in richtext format. + + + + + Is the range a part of an Arrayformula + + + + + Cell value is richtext formatted. + Richtext-property only apply to the left-top cell of the range. + + + + + returns the comment object of the first cell in the range + + + + + WorkSheet object + + + + + Address including sheetname + + + + + Address including sheetname + + + + + Address including sheetname + + + + + Set the value without altering the richtext property + + the value + + + + Conditional Formatting for this range. + + + + + Data validation for this range. + + + + + Load the data from the datareader starting from the top left cell of the range + + The datareader to loadfrom + Print the column caption property (if set) or the columnname property if not, on first row + The name of the table + The table style to apply to the data + The filled range + + + + Load the data from the datareader starting from the top left cell of the range + + The datareader to load from + Print the caption property (if set) or the columnname property if not, on first row + The filled range + + + + Load the data from the datatable starting from the top left cell of the range + + The datatable to load + Print the column caption property (if set) or the columnname property if not, on first row + The table style to apply to the data + The filled range + + + + Load the data from the datatable starting from the top left cell of the range + + The datatable to load + Print the caption property (if set) or the columnname property if not, on first row + The filled range + + + + Loads data from the collection of arrays of objects into the range, starting from + the top-left cell. + + The data. + + + + Load a collection into a the worksheet starting from the top left row of the range. + + The datatype in the collection + The collection to load + The filled range + + + + Load a collection of T into the worksheet starting from the top left row of the range. + Default option will load all public instance properties of T + + The datatype in the collection + The collection to load + Print the property names on the first row. If the property is decorated with a or a that attribute will be used instead of the reflected member name. + The filled range + + + + Load a collection of T into the worksheet starting from the top left row of the range. + Default option will load all public instance properties of T + + The datatype in the collection + The collection to load + Print the property names on the first row. If the property is decorated with a or a that attribute will be used instead of the reflected member name. + Will create a table with this style. If set to TableStyles.None no table will be created + The filled range + + + + Load a collection into the worksheet starting from the top left row of the range. + + The datatype in the collection + The collection to load + Print the property names on the first row. Any underscore in the property name will be converted to a space. If the property is decorated with a or a that attribute will be used instead of the reflected member name. + Will create a table with this style. If set to TableStyles.None no table will be created + Property flags to use + The properties to output. Must be of type T + The filled range + + + + Loads a CSV text into a range starting from the top left cell. + Default settings is Comma separation + + The Text + The range containing the data + + + + Loads a CSV text into a range starting from the top left cell. + + The Text + Information how to load the text + The range containing the data + + + + Loads a CSV text into a range starting from the top left cell. + + The Text + Information how to load the text + Create a table with this style + Use the first row as header + + + + + Loads a CSV file into a range starting from the top left cell. + + The Textfile + + + + + Loads a CSV file into a range starting from the top left cell. + + The Textfile + Information how to load the text + + + + + Loads a CSV file into a range starting from the top left cell. + + The Textfile + Information how to load the text + Create a table with this style + Use the first row as header + + + + + Get the strongly typed value of the cell. + + The type + The value. If the value can't be converted to the specified type, the default value will be returned + + + + Get a range with an offset from the top left cell. + The new range has the same dimensions as the current range + + Row Offset + Column Offset + + + + + Get a range with an offset from the top left cell. + + Row Offset + Column Offset + Number of rows. Minimum 1 + Number of colums. Minimum 1 + + + + + Adds a new comment for the range. + If this range contains more than one cell, the top left comment is returned by the method. + + + + A reference comment of the top left cell + + + + Copies the range of cells to an other range + + The start cell where the range will be copied. + + + + Copies the range of cells to an other range + + The start cell where the range will be copied. + Cell parts that will not be copied. If Formulas are specified, the formulas will NOT be copied. + + + + Clear all cells + + + + + Creates an array-formula. + + The formula + + + + The current range when enumerating + + + + + The current range when enumerating + + + + + Id from a cell, column or row. + + + + + This is the id for a cell, row or column. + The id is a composit of the SheetID, the row number and the column number. + Bit 1-14 SheetID, Bit 15-28 Column number (0 if entire column), Bit 29- Row number (0 if entire row). + + + + + Line end style. + + + + + No end + + + + + Triangle arrow head + + + + + Stealth arrow head + + + + + Diamond + + + + + Oval + + + + + Line arrow head + + + + + Lend end size. + + + + + Smal + + + + + Medium + + + + + Large + + + + + Shape style + + + + + Text alignment + + + + + Fillstyle. + + + + + Provides a stream metaphor for reading zip files. + + + + + This class provides an alternative programming model for reading zip files to + the one enabled by the class. Use this when reading zip + files, as an alternative to the class, when you would + like to use a Stream class to read the file. + + + + Some application designs require a readable stream for input. This stream can + be used to read a zip file, and extract entries. + + + + Both the ZipInputStream class and the ZipFile class can be used + to read and extract zip files. Both of them support many of the common zip + features, including Unicode, different compression levels, and ZIP64. The + programming models differ. For example, when extracting entries via calls to + the GetNextEntry() and Read() methods on the + ZipInputStream class, the caller is responsible for creating the file, + writing the bytes into the file, setting the attributes on the file, and + setting the created, last modified, and last accessed timestamps on the + file. All of these things are done automatically by a call to ZipEntry.Extract(). For this reason, the + ZipInputStream is generally recommended for when your application wants + to extract the data, without storing that data into a file. + + + + Aside from the obvious differences in programming model, there are some + differences in capability between the ZipFile class and the + ZipInputStream class. + + + + + ZipFile can be used to create or update zip files, or read and + extract zip files. ZipInputStream can be used only to read and + extract zip files. If you want to use a stream to create zip files, check + out the . + + + + ZipInputStream cannot read segmented or spanned + zip files. + + + + ZipInputStream will not read Zip file comments. + + + + When reading larger files, ZipInputStream will always underperform + ZipFile. This is because the ZipInputStream does a full scan on the + zip file, while the ZipFile class reads the central directory of the + zip file. + + + + + + + + + Create a ZipInputStream, wrapping it around an existing stream. + + + + + + While the class is generally easier + to use, this class provides an alternative to those + applications that want to read from a zipfile directly, + using a . + + + + Both the ZipInputStream class and the ZipFile class can be used + to read and extract zip files. Both of them support many of the common zip + features, including Unicode, different compression levels, and ZIP64. The + programming models differ. For example, when extracting entries via calls to + the GetNextEntry() and Read() methods on the + ZipInputStream class, the caller is responsible for creating the file, + writing the bytes into the file, setting the attributes on the file, and + setting the created, last modified, and last accessed timestamps on the + file. All of these things are done automatically by a call to ZipEntry.Extract(). For this reason, the + ZipInputStream is generally recommended for when your application wants + to extract the data, without storing that data into a file. + + + + Aside from the obvious differences in programming model, there are some + differences in capability between the ZipFile class and the + ZipInputStream class. + + + + + ZipFile can be used to create or update zip files, or read and extract + zip files. ZipInputStream can be used only to read and extract zip + files. If you want to use a stream to create zip files, check out the . + + + + ZipInputStream cannot read segmented or spanned + zip files. + + + + ZipInputStream will not read Zip file comments. + + + + When reading larger files, ZipInputStream will always underperform + ZipFile. This is because the ZipInputStream does a full scan on the + zip file, while the ZipFile class reads the central directory of the + zip file. + + + + + + + + The stream to read. It must be readable. This stream will be closed at + the time the ZipInputStream is closed. + + + + + This example shows how to read a zip file, and extract entries, using the + ZipInputStream class. + + + private void Unzip() + { + byte[] buffer= new byte[2048]; + int n; + using (var raw = File.Open(inputFileName, FileMode.Open, FileAccess.Read)) + { + using (var input= new ZipInputStream(raw)) + { + ZipEntry e; + while (( e = input.GetNextEntry()) != null) + { + if (e.IsDirectory) continue; + string outputPath = Path.Combine(extractDir, e.FileName); + using (var output = File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite)) + { + while ((n= input.Read(buffer, 0, buffer.Length)) > 0) + { + output.Write(buffer,0,n); + } + } + } + } + } + } + + + + Private Sub UnZip() + Dim inputFileName As String = "MyArchive.zip" + Dim extractDir As String = "extract" + Dim buffer As Byte() = New Byte(2048) {} + Using raw As FileStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read) + Using input As ZipInputStream = New ZipInputStream(raw) + Dim e As ZipEntry + Do While (Not e = input.GetNextEntry Is Nothing) + If Not e.IsDirectory Then + Using output As FileStream = File.Open(Path.Combine(extractDir, e.FileName), _ + FileMode.Create, FileAccess.ReadWrite) + Dim n As Integer + Do While (n = input.Read(buffer, 0, buffer.Length) > 0) + output.Write(buffer, 0, n) + Loop + End Using + End If + Loop + End Using + End Using + End Sub + + + + + + Create a ZipInputStream, given the name of an existing zip file. + + + + + + This constructor opens a FileStream for the given zipfile, and + wraps a ZipInputStream around that. See the documentation for the + constructor for full details. + + + + While the class is generally easier + to use, this class provides an alternative to those + applications that want to read from a zipfile directly, + using a . + + + + + + The name of the filesystem file to read. + + + + + This example shows how to read a zip file, and extract entries, using the + ZipInputStream class. + + + private void Unzip() + { + byte[] buffer= new byte[2048]; + int n; + using (var input= new ZipInputStream(inputFileName)) + { + ZipEntry e; + while (( e = input.GetNextEntry()) != null) + { + if (e.IsDirectory) continue; + string outputPath = Path.Combine(extractDir, e.FileName); + using (var output = File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite)) + { + while ((n= input.Read(buffer, 0, buffer.Length)) > 0) + { + output.Write(buffer,0,n); + } + } + } + } + } + + + + Private Sub UnZip() + Dim inputFileName As String = "MyArchive.zip" + Dim extractDir As String = "extract" + Dim buffer As Byte() = New Byte(2048) {} + Using input As ZipInputStream = New ZipInputStream(inputFileName) + Dim e As ZipEntry + Do While (Not e = input.GetNextEntry Is Nothing) + If Not e.IsDirectory Then + Using output As FileStream = File.Open(Path.Combine(extractDir, e.FileName), _ + FileMode.Create, FileAccess.ReadWrite) + Dim n As Integer + Do While (n = input.Read(buffer, 0, buffer.Length) > 0) + output.Write(buffer, 0, n) + Loop + End Using + End If + Loop + End Using + End Sub + + + + + + Create a ZipInputStream, explicitly specifying whether to + keep the underlying stream open. + + + + See the documentation for the ZipInputStream(Stream) + constructor for a discussion of the class, and an example of how to use the class. + + + + The stream to read from. It must be readable. + + + + true if the application would like the stream + to remain open after the ZipInputStream has been closed. + + + + Provides a string representation of the instance. + + + This can be useful for debugging purposes. + + + a string representation of the instance. + + + + The text encoding to use when reading entries into the zip archive, for + those entries whose filenames or comments cannot be encoded with the + default (IBM437) encoding. + + + + + In its + zip specification, PKWare describes two options for encoding + filenames and comments: using IBM437 or UTF-8. But, some archiving tools + or libraries do not follow the specification, and instead encode + characters using the system default code page. For example, WinRAR when + run on a machine in Shanghai may encode filenames with the Big-5 Chinese + (950) code page. This behavior is contrary to the Zip specification, but + it occurs anyway. + + + + When using DotNetZip to read zip archives that use something other than + UTF-8 or IBM437, set this property to specify the code page to use when + reading encoded filenames and comments for each ZipEntry in the zip + file. + + + + This property is "provisional". When the entry in the zip archive is not + explicitly marked as using UTF-8, then IBM437 is used to decode filenames + and comments. If a loss of data would result from using IBM436 - + specifically when encoding and decoding is not reflexive - the codepage + specified here is used. It is possible, therefore, to have a given entry + with a Comment encoded in IBM437 and a FileName encoded with + the specified "provisional" codepage. + + + + When a zip file uses an arbitrary, non-UTF8 code page for encoding, there + is no standard way for the reader application - whether DotNetZip, WinZip, + WinRar, or something else - to know which codepage has been used for the + entries. Readers of zip files are not able to inspect the zip file and + determine the codepage that was used for the entries contained within it. + It is left to the application or user to determine the necessary codepage + when reading zip files encoded this way. If you use an incorrect codepage + when reading a zipfile, you will get entries with filenames that are + incorrect, and the incorrect filenames may even contain characters that + are not legal for use within filenames in Windows. Extracting entries with + illegal characters in the filenames will lead to exceptions. It's too bad, + but this is just the way things are with code pages in zip files. Caveat + Emptor. + + + + + + + Size of the work buffer to use for the ZLIB codec during decompression. + + + + Setting this affects the performance and memory efficiency of compression + and decompression. For larger files, setting this to a larger size may + improve performance, but the exact numbers vary depending on available + memory, and a bunch of other variables. I don't have good firm + recommendations on how to set it. You'll have to test it yourself. Or + just leave it alone and accept the default. + + + + + Sets the password to be used on the ZipInputStream instance. + + + + + + When reading a zip archive, this password is used to read and decrypt the + entries that are encrypted within the zip file. When entries within a zip + file use different passwords, set the appropriate password for the entry + before the first call to Read() for each entry. + + + + When reading an entry that is not encrypted, the value of this property is + ignored. + + + + + + + This example uses the ZipInputStream to read and extract entries from a + zip file, using a potentially different password for each entry. + + + byte[] buffer= new byte[2048]; + int n; + using (var raw = File.Open(_inputFileName, FileMode.Open, FileAccess.Read )) + { + using (var input= new ZipInputStream(raw)) + { + ZipEntry e; + while (( e = input.GetNextEntry()) != null) + { + input.Password = PasswordForEntry(e.FileName); + if (e.IsDirectory) continue; + string outputPath = Path.Combine(_extractDir, e.FileName); + using (var output = File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite)) + { + while ((n= input.Read(buffer,0,buffer.Length)) > 0) + { + output.Write(buffer,0,n); + } + } + } + } + } + + + + + + + Read the data from the stream into the buffer. + + + + + The data for the zipentry will be decrypted and uncompressed, as + necessary, before being copied into the buffer. + + + + You must set the property before calling + Read() the first time for an encrypted entry. To determine if an + entry is encrypted and requires a password, check the ZipEntry.Encryption property. + + + + The buffer to hold the data read from the stream. + the offset within the buffer to copy the first byte read. + the number of bytes to read. + the number of bytes read, after decryption and decompression. + + + + Read the next entry from the zip file. + + + + + Call this method just before calling , + to position the pointer in the zip file to the next entry that can be + read. Subsequent calls to Read(), will decrypt and decompress the + data in the zip file, until Read() returns 0. + + + + Each time you call GetNextEntry(), the pointer in the wrapped + stream is moved to the next entry in the zip file. If you call , and thus re-position the pointer within + the file, you will need to call GetNextEntry() again, to insure + that the file pointer is positioned at the beginning of a zip entry. + + + + This method returns the ZipEntry. Using a stream approach, you will + read the raw bytes for an entry in a zip file via calls to Read(). + Alternatively, you can extract an entry into a file, or a stream, by + calling , or one of its siblings. + + + + + + The ZipEntry read. Returns null (or Nothing in VB) if there are no more + entries in the zip file. + + + + + + Dispose the stream. + + + + + This method disposes the ZipInputStream. It may also close the + underlying stream, depending on which constructor was used. + + + + Typically the application will call Dispose() implicitly, via + a using statement in C#, or a Using statement in VB. + + + + Application code won't call this code directly. This method may + be invoked in two distinct scenarios. If disposing == true, the + method has been called directly or indirectly by a user's code, + for example via the public Dispose() method. In this case, both + managed and unmanaged resources can be referenced and disposed. + If disposing == false, the method has been called by the runtime + from inside the object finalizer and this method should not + reference other objects; in that case only unmanaged resources + must be referenced or disposed. + + + + + true if the Dispose method was invoked by user code. + + + + + Always returns true. + + + + + Returns the value of CanSeek for the underlying (wrapped) stream. + + + + + Always returns false. + + + + + Returns the length of the underlying stream. + + + + + Gets or sets the position of the underlying stream. + + + Setting the position is equivalent to calling Seek(value, SeekOrigin.Begin). + + + + + This is a no-op. + + + + + This method always throws a NotSupportedException. + + ignored + ignored + ignored + + + + This method seeks in the underlying stream. + + + + + Call this method if you want to seek around within the zip file for random access. + + + + Applications can intermix calls to Seek() with calls to . After a call to Seek(), + GetNextEntry() will get the next ZipEntry that falls after + the current position in the input stream. You're on your own for finding + out just where to seek in the stream, to get to the various entries. + + + + + the offset point to seek to + the reference point from which to seek + The new position + + + + This method always throws a NotSupportedException. + + ignored + + + diff --git a/packages/EPPlus.4.1.0/lib/net35/EPPlus.dll b/packages/EPPlus.4.1.0/lib/net35/EPPlus.dll new file mode 100644 index 0000000000000000000000000000000000000000..02d219fd352548ac1fcdff20a754998fe9d6c89b GIT binary patch literal 1249280 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 z zDWtc~L1Ib@>63Gin36(zcn%U%0wh_V>;YMwEwU1J{5{Nojn_AU+fDbH+wj0*1$eY4 zao&UeHQf2`y_r%O?(>%%h^`^7kKNUaST;9r*E>SQg z)uQX?ATcFC+Kn&8K&VYz2k(CX$#PMh+)n4c6$IIBjy?a{g8-=>9QI%4(0uF^97_J( z07jHVDM2M?1xWTG0a8^ig5;$hg35HqYzHf%=1KZYh|iuDrNqsXr02~+VoD0>y>pP5 z5+I43Y%3+#hr%rXgK}k=U2@%xgoIqBzcfM5Ip{AVMSuMah?G;_u$-v8;FOHkX8251 zE-xRhC`NsaF5113H<1%EB%kP<=9q=Re}ZUA;Jkh?5IA+Ke-Cliun0QpCF!&-0W%byf+pq)JIrCP^_mAjQ*bS2KIwTAh{GX!;F~ytv z6#TzNk;#I;JBsXI@H2;nXh+wt$m4BY4z>mk++TMP7qug`{BTxJKIBVT+5KYL_@jMr zQ*o#byYw3|hkG5ad6XRfP*`XqSH12dOwIdaaau*wP!7ssyFUP*_<3lzw$ zEtF~AAEM~YR`!JElFU|I#Maj=XSUwMXMbkvH}KReAQKH`e@qmoxf@FhnRl?5a&9=M zO8uQ7f%T4-C^#&-oFC3B&buO<&04$Qkc@I+xS%-ij&Sx3m@1^#abH}_{ohc~a=mDh z`+|tC9&Sbv6Y7tKeIb8pdEg>`F)Y+V(KIsz6{Cth28;0}lSBZfGKj%qiit`Qu;>TZ zdJY7`KfCoF5YPd&xG&|s3}zS{2WVR-7YFkUj*gC2D=i$zDRu@Kmqk-&NP>SuD?3XV zY~k=sv9pZ9$O6P52l|R5LKD)fpmV~6j1v}1!ew#77!&N)Uhv>|vQk(F*TZ5%$y*AD zft#}Em1$qD7!JLJuS9N|es7oOnEz>cF7oe}=VJda@?7HgKZSTp{YCOz=I<}h<^GxS zTv6~}tbw9`n+E#*f6>5z|7i^j`ajXYkpFiLEbvQ5ve*?1{iX&={xJ-wd$Q_bQxm!u zjO1iMKh7zT0k&FUQ<6RU^#gAa8^^D|ZkPsGLAWH8sWdSC3sGdC(Zq|Hkea*URS=tc zDf{ae2A>nasstZQ^j{d~+YM!f>oIU`9%bD+680OPuhsK| zyu)I(WAU4em?zkq{P)G&QQz`wYI6!~thMf_#%lh2NMgR8Z8XAy*CxR*UtJ zB9{75&PRdFl@aU2%BWDncM#?Lgnn;w5U&JOOYn6Lm)ymx5nHkvQ}fsiw76xLvN}IW z>#MCxFiNqG&o-CZZ4TB15R3Q;Li6<{5d3lAN-y9wH{+CX!5<`VJ_foPOG^1d73Uj3 z{g^gc_U@+_VpJ3oM#F#_4Q0G!Fd$}wqWua)q6D)is-Av`eAbRK(t07q03Xlj!8Z_R zuzeBe)qVOyQc_D(3*FNt)j~xY9=7j!De!#RwMw%atVorBSz9VdVDQ496i4mSPfga>;vo2?VxW$~nq^<%re zfPHHp^erx>0-t&7Jj~A>LKJR$JiKZ6xnxbiM`hZOY^FJu$_R_f?GU1HoF!_Pw1U_& z@DIg6QU9Czo$zt0)^)fXb7oyx?_ij#s=6+Pb zkvEJwWHUhmNWfk5njirrjD!giI4e=7?eSXza-%)I1}FLe178(^w-O*t9f=_4jrrYJf#FuqF-f|D?R-Wd4pwIR&_2E;M=muB>e%`(s#!`kJ%wn?&r^!7i zMmI@XUqo7m&;aL4%%Zl~Ch!aI6+sW|fx?{CxKW;(*kJ01QxBiLm3_1?A{KaRf15m) zhEt7k*-~S;5u?7_QLEa}Jud3V0Zd_+h>ncp67Yz2Ujw~E6`}HtR$qrov^IyQdY!*Y z7b`9OSe5OVFQZ+pyV+RgQ})XCA6yMg@&68<#M{F7eE8teNRUq?a51V_!RyRH7TV5n z7J4pa#Jxjnt%Q=P+(s}c*6BNiE!oEIQ?&l z@b=^4^ycw#_!EiniBFBwpBsg3aSwM$tlj3Xt1I3&pzE{A67lksY!RXovp^s>R>mL?HGWATgHpVw*sJ~{Amw)&Srt6HY z9;xpYl%m;n3s=k4GP+VWu~bQcLOG2Q+0}(YVZ`xPfok5VnX#bDtV?Cg%TWI@nvK&8 z*8wX$&Cnz#R2Lta7=39iikU!{Io)60Xl&4A8K&lJjBPpwWIZH^@dq~+28i-?4IY&*>|&FY+Af+wr^%{l%Z$6i&rZ zl@Z~=vV9w{{8J(fNJlWD!5XiH2kKLKSqbAl27W3fr{C!c=j$j(A+Zb|3Ap;DdARE8 zM-u~^b(e? z`|vX`O;0wClHl+uz7isN3I>Pzifwuz8mq8&KQU6Yg^D){M!NpTqqOPkkzd!5m9=LV zf_DYRS07o>M684Vj-I(vRSNy;R&^}C2{%q0xvNO+jbp4wkM0v&mFJgWSz1Q)ocKBpLJ>)yxb00r&dpKWa;cUqZgxRw6A%9Y zvUHoPZ2xTJ2v2sRK?11JYa<0MZ9g~TSpAhd><2-sd&iqCeL zQRGoixLJZ=V_`uSwef+Zyjg~HUA$sjpUYWIl3aGa;H^b70&mnyy3RMr0#Z!5a%TEL z^apsSXwT7`uW$cP{tRk10$%ElSaT_6}19MbPge@3aZ7c z9C`MUC`~K@i3|6*jex|BECb9|28r5CTnUj&G<4%;_L9Vhl+dyz=*}A#>+8V@PaMAa zUGQHAA(RUGjkMaKa6Y1IaJ*s_Xu(5p2_qq;=e`uzvDT8XV)Jy z;{O6X8c?IOcj?H#f;vGyBC+Aih&pDEP?#IuEAbVGo9{y?2Gtdtiygxhb^qh@?-HT& zy|EA8@MTOr@aUubl&1e9c2Vvk@l2C$KH!a7$t61)dk48>?*co#9_$uo)I8CCKrJIK zD9tIBnZ)&8cJ64@P!35K_dO$Tk0LTh;7q*rY>qW?R+x2w!U+=3tHt^r-D-9?CvGCa ztgPi3!LeY4@x7e`v9{$|d>#9fvcHA{mf%cn3X+Lz%KEXVu; z>}h1G{W~i`4G$&td8HPgOC7Mh^-r+;PqX~*|HI|8f4mU%w@APLtF)rYo}5$~Fd&y8 zLHERxQ+~!43eEp?(|ZO5vv< zXHJQb?*j*MwfeV#7`WM|--U3(H|(DVZ1KcF@6jg78-80FGgo9M6y!70I^_%9vNXmw zuJ#0ld@(xuOp*W0xN17>Wq*=NtFay@#G;zuNauwCtcPz}(_W-A7}|+eg?QJ^4^ejD z-#dY-A@uKcUDY1-uf42KKCEs%+Va<+iTu;qm){DKnHxu(ig+c5Vckg}ggXl6M+%Xh zq>;csK_4Cw_%ws`iHxXsZ=^%cAf}557$kznr^)bL$Pw}Dfi}wKXP^Uj;$eJobE>ko zuZB<5%05-KBYRYdF);nlK<*lC8()JI+*%B|n59{~3twNEH#jVT?GW=D3{@?4YRJ|o zULRo5fywoqq{)>t?D*yjC;pfX-6kE+1+*IV+(djfE=V0OqI z$_?ec13{?meGO3MPk7lE|K8A@be!$WuF3b5%?q@UOfQciC`#mbIQr9gjb| z^;5LD10$LnhBLU71@?8uUMWE9ua9;PV6-)h1wrQs262ZTJ`02$yIQzocQXj$=EOVY zIp%*to{Rji%X6{+Q+Y1&_5A-*|F05X=8rs``Ih_3<%u1;DGe0;lQhup`x+SVU#5XU z|4kYg@^9C`0{=b@EDQrB|KBxb*v~(MHLNK6%QZ0KAFF{;{}K&U{B0Vj`nPIe%>R%E z7Wt3hJJ-m**#DBIEb$-Iz*7Hr8d&DrrwYz;e=iNJ@DJ3$xIe3bJ^V{Gu%~~u23GpF zXkah@6B=0M->rcOf2Ria_IGQ*^Ow&`75n(>8PJ``Ob3P%KU=XMAGrD)<{zHf&N_Lz zo%Qm}b@r8K-h;g15BM2n?J=o^E#+co9|>;32;0mDW84&ITh z#y<@04xJA_UV`wSI0@oAR{GumT(W}ba4SM^m(e|-VaJ??i24#vvc*tr^!pc}#MXOI zihTQz^Viv^Q};ZkK~Zy)TG9T4KukJ{;pn}lXr|A zy@m{p9oUSN>@h$jnk7X5(bg*cSnYIpSg*Jv` z{RHiKj?B62FY?~57~(}-y)MfLEJq`gu`!wx)2=y)7w_17$2=Xp3`o4Ui^NpJ2kOrX z{2B#)3;B$K+Fx9=6zh0JnQIog`Y*1o3cXEJvN?oLP|mHe>lJ0}Gb%;5p&h}@aeZ>; zz`9v1u;DnvZuoep-_Nn0`+$bA8z`N)&2a<1(KmKv*uP^z`>*N2dO7L`dx`6d zpwCxpFp7X0M8(}EWnzy;#*BljI3KTAxoBbm-VvXK{ucuon`BklWEN9e&J*D~&)0y9 z;fYBZ&-7;Wq*RaF;nQAz~>=PLIs@fYKX2XOrHi8glj12~o-6dIj=PfB zWEeh8PCji|3WR_f>`=PiuaVfF3u;(8bJ{={UO035%KFPI-~Yy6et*cU_Zy%ENY>10 zLFkb~W(NyFcw}b%SQH$r59DKcnzhkTQ~;Mng0;Uatoi@J)qq5u7^uy9^5 z!$@L7?<@|m?kDI=w^M>-|gYNWLVc5#OU)NJoy z)bGj>Q1b$;x*A7!C2?(r@qaNMx+;@}A9q2esC-xq)hL&@SJY~&RE=ORzIs0G#!7@W}zR}8iw-Bq&C9LTpGfy4$2Rr3ct3u6Xu zouXavE<-7KgEtH@8zOoI`CITVz@v;;ikM!?Ub2}tiFm%kj6N>Z$3=MLqtBz-I0syE zasKiWBp37YrP{oF=U2Y*YBqyhyrL+s*aKGw@^!1O8~_T=Ji+s|Kg5RD*+oF~gfXsd z%1N7S51;b{%cPGV2zg!wo;l`^Xi{}GUQn*!PUQNylQTH0T^w-p>Q2O=TAnki_f=+# zyk!}8u>A+%Q{Uq~KQ7OSX@7Ud!gY%p^HsIwy-QJN^C0+}{)}Ay*cliFVrEVSHLu&l z5qE_73*h1PZ-aQ-=4xcD%6IM@^H;!{pV4{D<-0vWoz<{TSvUOSb#0)SyJiAESu)Zl1fizxqO~1sq|!)Yv;+5N|!8< zbc128$s$(lW$(X$F1I!RHv&z3 zYydBLBXnYbUJIVQjhJ6OhvTFurdPQj=jV_FbzStoic(Dx9$xf{C}+*vo^M zo~aWPtz4M?3B-?kn~-JnfR`YgEf?$0FJY5{?cH3tgvXh2ATe7iZoatO@8C?Les{Xm zuMH2_#rF4W`vblu*pMLJzpqETc^p*Q?V|Wg*1Qle0ro~K_lG%7;gi)P&KEwVNI8a1i(xHd?r)-(f9GT3TLmCTQ4Y>Qj)@kHH+YEw4oZaAg%CjK6 z7ocz0&Z2PMQg>N3aDa^^=FE*Au)}HdI#4JzZCEB9V0%dMFm5OtwsFw!x0viFMxcvh z-@d{6rr3C1I)z(yG{^$4xcI@TrOg7O?}@;6G`rP@H9amf-D3g?wY^+U09RE{cdMhJELJ#8Ro*{%wnL=)}89>PKzZzmu>8mY* zd)}a-i>#|n51PxP^b0|DAenDaGP)0hTj#8W@3V$^c9V9>Z5i3e1MkBF;DLX%8n`vb z0@vlDKo*M=vY5czY&8FI&q-wv-xt*CCZ=alXb=vD@PgI94=kMrLB3i#mplH~u+<{N zl5J_ayr2k|)@OOb1RM8`_iV_cvC%G6Y^UJCnd}BVldoDzzQ!^D9eMRqhqr9!vHK@_ z=EU>|V6X)B&rXD0=Jim4NfIFW=7_$31%~3EeA5^QR`JbST!R2DDffM_Fa0=_L1QQp z>94Ex+@Bz*F_DOfS{lH|1Nl99Elo#I-L4FT%yVK|e;)B_58KJ*lli=@(ZHLSz7OlI zpn1OzvuuEC70rt%Wmj(QYq#lwO%~*sVQ`DfDCo-sVI#uoX;g!c?)krqioIXB_Fo|b zXjW|aAky$XMk-z2`k$_%RM5j3^VH$^(XcI}$C4a*r=*Mz?ds~1>V5+}4X`%3aZoCF zH(-;ebrdF`Rd`$B7FrreBLNT4JT)SJ7by(L z=e}Yf`=O`_UyTt082f<^yFI(aoZz<#oR(aWhoe*T9O{@+vS2|SXZtm*Rv;oWD@Ul! zA9fXAS|Fv?$GTF35;)7)?OLisR>#a)n1>uOLpFTo@1nY7ZPp}d5LRN)Hk>NvxuWBb zpzW#=GQ1Q}7h~>j>^{*pb7`Ne@4|`hhth4EYM|f70{ylqq2C(EDHYAb>l=cGj+4ji zkIgmVLT!1X17qRLT`RYB4HQPjoB@%kpqh865B_-2@j_|CdQ!|IJetLv1KeW0?3xNV z4Ha?%;5k!8B=AxHEa{_m{AX2lC}Uk zufw(~up@JV*il4n3%p}T+oE%`qTWg}LenCO^su2Gxub)j#?m7Lm_%)59C)2O=a^dDr<}R70szme#M%} z=j9SFO*#6~)ND}39w-9`J6B3Cd*J4o(Br$`!oBX?f6v0oeXub-^O_?MU9U|n@L)qx z-s)DWh0ub$eU(U1)3cVWH>33qO9s3c&bM+CIg|kG947!rUh_J<8RqZ~s-oOotG?T# zLF)yOwcXx;G1|mQTiH#!58O-mF0khYr#}?^K(Lm1px-jq7tppBvu(*7Gjes*_}Nj8isRjb3guhGIF^Z>t52d$;xKa$ zz%T$USnj+1P+D9f*|;ugHs{H=n(G(9M8T01?&i|6)=vb^*p))ENXgEfFlTBNGRs05 z)~mA?o-34vtNx`hL>vj#&i!+vve3#jL12KfZL4VP31f1Y7*5{sZrK#kL0 z4{g!mkL$G8G0Y#46lGVH8`5f6(N?_|3Dul$vex0CyA;a%OH3YN|Pe}+HyG5Fe&4H*SJYkI_)&U2yj8GV9qp^*tsvJey;T7MA1)}F{{ z8nP;+*=$xaz88K5r|*Ddu{vIbi0oT$qM4SXCW5td8@&uH;$oH1$%(Jq(wKw1c_4RoJrB&SeQA`|-z2UcKOkAn+ zln&z_yA9xfv3ZwtmutbzY(*|+Q<-Kfs)qD~&u;wyI1O;RRX;%9Xjbsz@=Dt&J-P`MDE* z^dvL&Q``F#2$Mr;aJ??ZXGVA|ZI$^0M2=o=E+DJ^9T7m5u!@IqgbZJcL3A;qc+WmQ zkJev523}Y>kB0A%;EN&;;FMZa$oCOJ+PCpAFHVIcBp!S*FUAiFlIq^Svs~&&b^XEH zl^!lmX02j_6hS&V>JQja>tMB)gE}`D5?E-}EBLqx4_m9yQA5SN35ZCQf`5c|45Hvc zEtt04p>Vv~c!Jy3H}QW5^y3ho{9`)mr2TLG63+o9;*aTl82>zfdn%sEbexm1aPG`H z5C1`#{1N|p#8={ZJDwrF>XcW2K-%~P>w8(tdU;Qs(%dpvr%?UHI)yRnlo^@2pB>?M z>lBO%+#Lp9X-Ai6tWzW!>lBHO3o>C(N@jQENh_6kN}r=tUI})pHmM{(AK!wi zE)JSC_$}w^dtuaL=e;POUZ%nj)2%Ux9UA!%v%%JE5jZj|zJ+0-AElJxT`*GsRySj- z=3VHq&>04&jO05;Z5WPF&u5g15(+xpWT{kK6(n?sQHQ#at|&1ePa&}jSra;Z)DH=f zCAKy|cc%6ZL!05z!Q8r8&}{@Wv-nr)pH-s}nhmt#{)z*6s1^El7-Kl=Ol6@L7dkDR z;KRp`0**ob!W_=3{>7JZ%kWEhCqli{*F!7Bs(7L_Fm^r8z2TBSq#p^D^5#|5B*vS~ zzU1Jb>fkTz%%dDpQ&4v}JBUxp){h)s=wZhapEIhIhwJO`O{1HdqtMI4vmWYS>YGXz84!+n)&97D%^~l;~QCjrn^2vgeDUEvnM8Zdd9Ms?! z0bl2e5$#OxLT4I*jvbjhS5&59dE)cpI$cy9d}fogg_=mLc(PKe28mJGoI;2h%^?Z& z4Pp9AfwX8{EsV-klgJVk7Ed)5p?0I85in4yfZ$3Ig;Dv)siF6z=?@H%f)<)XB_#e(? zTr>U*>92qwGv<%zHx+|&UBe}@Tryg;GpYWBdt~rZ`~Db2Ik`$~AU8JKUm29Q<+Kcc z=o~n$cu5aVMBr{VEUtq4+`+4&c^DOxaqH#J@T~fK0#{$|!kW4$x0ut&l#LoK&OGpc zn0pgAxvDDhzq;P5_o}LwboEk|jdUj=P0>}=>4l}!LK2kCu$Vvw6Ocs&6a*et6I7ax z5gi>7P!UjZ103AN4IOs{7u;oZW^`2It|Q_$qw`~2!vA~Dxv%O~btm9&KL5|>*Po=` zUC%xD+;g{c&pnrfxgD@RX2P1l^i~rIqVn=XYRe1G;|0Wg0K zH%(%BPl2|28FkK7dC@{P*>e{lsnL}*8k6}7uNJq4$~-!ICfIYXKYc3{vjkyu7Bh(* zzwmIKT<{9qV@2FFKr^P1kEL~V6nUbf`Qfl*r!4=A z>mNKYeRNf@fIb@fzoXB^i_%91qyGo#Bl~VyKVAp_%yLwi&+9J=Qo6m`BxK#pPuFys zRBZN-!9$};Y%XF{u)UV7e)@vGOkWn&COx0@3c;p97!&i=m%|8XB^({#^@|&sy6B%= z;L9X-@1>n+G5rA=*%dS0FrnD+gzL%EJYkTjl*X1tn60}Q`Q5foTuF%RLv}0#DY<32 z#7Fjo4p#Z66zs*GpWxBm82ggwNz`yU1c^f6?<{23uQ1FV^v33H`lpLjYEcxXKSoNn zQAZ0IxVSUDV1G(Uk6n|>RSMS7QZQ?hNuJI2cT_x_{aH!QsUHyp z^Qm-rc3+C6W)?y!5_T zNTYMgh;t9sNF|BGpk{X;!_?NN8XEoM+0<*m>3VSJ@wY}#1~wj)B$j z!-$k_z(=JdTeVARH|WoJTMHS9kzQ7AbcV`IYo5%`IEi!~%hd+1k++cP57_)qpHDvu z`?J$0^97SkA@tWz!haY(*Mc(aGZt=Qw9`uxEht~n92q*}!4!7V z!l@prn$xa6{XxQG+7lV~mIIy4CAab2=tBTmds|MT4B6 z(t>0eU}`3fRHteX5zUM>#=nNp(lUM&-fxvuYB-XGy;RmD3uBUvk@3}p@GX_E6Gv0d z#Uo*M`LZeHk|mbzT-?Q(A0#i%Bt%@@mBVtjV-ew^Zdefd1kp|WK+lPy3LRsymqL|2 zi+h&mb9)Q9DjwZghqgtO_KC+wpEg>DpE wK#w#*3|cCi{pOG7Ed1c@DRt5#cmJ1Y&*j7`g}XWS)Hcl z%`=>?tnTu?$sBJj*!hjyb9=+Wa(;qyig8era~eTS&S?ZSIj0fSLB^Z_w{9Kxt0ZC-D{W-+BZM&*X96zwgaly@vdYz!f_GReE z#EF%EWy6hRrP$w9sUq2x?U_DORp^AJ8Td4WVQ^X^Uc(PE5r#fwy#C}jSR&?{n;*R3j>|G zb2fn$GCOrj0}mB;%3j%4fK6d%5Sm)fy;IS zOs)b8nXbHz>efC@ST&A`_YJ<21ya}!^`QMgy-QM$a)Tx-k52+u_9O47-`@m$uh!Y; z8^D5(y3D^bQ05L~I;c;F(P?}i*u>64Bcjvs*1UlVTGQKcb_F5tyk)0C z&x#Ame@AF{_`uO|jn1Rn@E@_d;$K49RUCRmYnjM%~^gL1u8=Q z{)6wO3L||v*Z4U?-be^iIHgsIvKnj;67HkJBG$I3@L`l@){9Y&Um1Ab|; z*A{0J{kD`xb?B=s9NimoSo<&?D(Pb|v#eF){e|p;OXc4)B8~)r3IP=i>u#ez)U_0# z(&slo1)(XziN1~}di<$Z1B-W?pKW5tAR#H;Ze24Op__TSS92{sJ_a!x>K5a}E>2b$ z{&*i^*5(>XbUjDiBhV`16!GWeOZ8qsE=4<~ZkBp+$C+`2c}XU)rW!<7Wu2Rf*Xi7u z>B;y#7@Lrh8(XYRO#_=JYu{|2Bok@|ot25?TKZ&xG*2z=RGu9SPl$Ll2{r_rbkQ~jGM$rCizO1F@4AGB5Uel{^ zwcUHb+OA91c4@MTA?NySr`g zC-x3x7kM|(Ce!#Y5PwXipQ`w-WjP7;HRt#%o?m+^L} zV*UN~q~%nEvE%84)!zhJ6S|aFo(e}Z@z2>UXHJjKWlW1WG()NRJe(s&zR>PJGdv(x zN8%?}pLsDsu0Ch=B92~t#?+uhXBVX~i)m8x>ZjdY7NTRNgCM~(le&fh?lpp^UfteM zh0V+v-2)TU&UBu4;<1*lPPmrU4AHxZh~xrK0)8Tomc%{r^T99rEW|E<4%hVOg=Zag_mR;R{dt@-dz8)sGm$=lTm5Nd zT|l8P2$U8IHL!9N`a0Q^Lix1b>bJ*5%;<+=>|Ps@JNK@*PdA-{T7rh7a(=WAKIH6{ z{_-(l6)`B5pZ-?@0~HW35&k!;;2Ph*@ZInVs2S>(Tyt%uQX`8sIyLuOLZ7jTMr(Q2~oVC+h92LTE2`v6{@ zLcq}uj#mRTn?R6j!Wu7c!03XavP#r(qJsfe>5pUO7}z0`Bk~zwT0N+~@&dWw@M}%UF4_(0U9V&k{+~`m2MdMu@sCkej|l=INm|3UMZ$| z$|8pSkF-QA94>?tKSfTAsWp=*yhS7mEr!>^=qI2&BL{S$8i4E1u{A~y$Lvql_fRd~ zdOA$_^go2)$W$JdZz53`{eqDC`$%dMQM2^d?7Tmf3|f#eP(Qn1IWhwU_};9dj7N1if|(|1W@)JRQ^`UlAG1FG%oT{LkZ-KN-ir zO1js<@1C`D$7p77>Paj%C%BD6JuwH$uks`dJz<Gc!Q{Pu zbO@=JO)bL|z9toB$@tNs0z(*tXS*fE$|oES2IlSzj}z1~{6B{OYx)02{-4YLdFPht z@!S0WDF3HfuB2MQ*EtWnqWm_%TN!P!*#pM*9x!(40b_>`7+XGI?Dzp=r(0v|oAJ-0 z-NM7wt(09Sl$9%Bqt`jjXg_1u5LrPoA_lb_+kLx+D0-Ed)Mt^k-KJyb$B9-uiuvi= z2;|8HSdlSvEy9E7BF2rLT1}zc4`Vl>Qgi z`v}D9Ff}wWq1e$0n=;iZKpO&9wWeEROC=%oNzK`eyjDmf*%Lat$;?lecxEteiSUz* zSq3;>fK*Vs1oSn4cB2bR=Dgev&TaTGT}NlI{xGMn8zUW;-8aHoUH?w7TI2+iiK&TG zoiZmg557y1ncZi#l*&U_d7Go2C_8cO{AdRt*!G)4K;_^BBu+Urx>SljEn~!s)}5E$;GLsh$hAS;$Hzl_(p<(&pntZaRogW>N6wAQG{2tm|y7_)J)_ze{b3 zGLSw?d?+hMPk};;{D$kKTHVo30#;7-;yMXebUi=)J(V#R(_iQ->?@wb;Gy`|e+X@p zNmUJ`AGv$~lBMV?4i$O|y`ppoF?##@ntD_2%BFRb!V*A46jXbl&|O#(ZN&+WDn{RG z0`@NI)8)kI+JnOA%cM#yX%a2&oU^S7+yrpeU)m>t_}om!^ZOvejg0eyeB}>k>V5qD z6JLbl3+4sZ;;E1Dzd0}Xsl!Q2P+@7lVi!O~$3fN|<;HQSws7so3nNC!D{_z%`5pp{ zw9Xv$hamIrXQ3Uou2ve^{Y)JDf@dLLn7x>GT(?JJ#4=GnU;hg!F{*eqdS<$w3ChnV z9J?2p)X%9OlK|43O9>i=QBt#)NhW6-vdFp-HB+=--Zc=Uv`rhGx7zq>t93{s0?=$i^bv8W(LoP zDY&b0WY$!iIlb}q=u%#0%thZ|CakUq>i5w6S-p2+m(ul-1hG+-H7)0R!{WqBul^U3 zg_^>~!SWq(+az#76uJNxxVSe}Tnv}haIWGq$3denxIFJ-!R2^H%>&}{Ig%X!moT-P zPVpw`n?{eM#(ciiIsIg!!)muz-+T!(q}-}5B5e3I6;jQ4B@&uYx=PnKG9aB@fhEtW z3CEB0REDDSUwwlhEyuU zy;H2A8S7_N)w?)>DUgS?=r2ejblf`hx_37EoPZu~mRo$bt5k*Z4vRfmy}KwVJgXV> zHL@1hbIC~@SaLE)bSxB^t8gh+)jcQry!wmD!)@9|sTdZ)kdTtjE+ox}mP}X!{F`F% z$`{$xBdmDetZlIfJ@bQR{%RyaZMFTqfc*Br2Tx<%E%3hrh9l|OqxsAq2VYx5OFP4C zP3C96`vi(-d-fX|x47|l=tAR>mhR6m!pt2)-fGS{Q0FC5xX)!M-%YzGs3H1#5*>~$ zP3P2XiulSOkg>sHIsqm9OwKEDH)f6tvoGrguw_)3y{$HvhW?oy@eN%ofwYziO3Y?`f^K5Wu1m5|P=}$0$ z=IR?SO0uP`L|K~R0_}4pOXO9+KN{1T>W*H zqS1(Pg&bW%Wx47zSd_|QwrMb>x;0n-q~tX=X`^a`7SS#tuPer2D6g~?bGvYBSgQhN z;_)=s6`Fp-#roNWB-s|oM-)Q6hgqw!Qtp>dD-s4-bXEs&$S$DD%&QKrKZUzdi$?VT z#XdQZwP!xK6Xjm`#<3B|wLTn2izA2Q6dcuKAEWL?W&F7Azk*DS`s!>sjl7Bamal?1 z{oPrX${aZ4YnvEO1)&~7>~vdSJ6>1lncvAmF?t@^D@z2>HvupwVf{V1 z`k(jPKymZ0znms?)@2kmY^m&Lq{<~830mgmlpl0J_jGl_J4Vk33vfjck)QeKpB{ab zcM@c*4F|`%a`jUv$%f%v{j7$2Asp7VzOKzrfJDW7+AFfu{tn|vHH{VYIRWU)Rn`2= z%OE0G>Eq}nE;5LYBersRvD0_=xx`qPX``L&CirZ03Te7?I`*1Y7DI1!71*=*3j9ef zYG_G09q|n!4+(2n(Y&bMC%n!RJqfs@d%fzIot`H;%*y&Ms?G7n`>Bj}g8DoGy1g3J zbaIx^A@9=YpSSBC;kBUtQc{h2%9Jb<>@59i;g_tp>rhBQl3OH+Up>OBPMLCn@$!h} zs;%;jlZ&1)a*wBcTnp-Nk&ITj=qu#tP`5*OOIMw-)xI(^14oYl$pC>Q2Gi8X&@6C;FOky!yJI$px2Sdx)t9yfEcg%EKOp?SJc_cX4qivbq?rH$l@N4oD)Mj#ff7) z1oWvZ0`*=`Jv;1ivtaHP$+N~GguO9c4Jtwv(9`9hLr-kr2+9)xatkV{+t=ZSPS*Tb z@jHeX#4C;EpsoLu3|@U#Bb)GfsP=;$4Os>1@E|MeRuYzI!37kgi^dcrXJgsiPQarc z4*_jSYLo+*Qcln?O6e-Pop6Gaqua2f8>{!lSJAp=SA&zE} zN!P}msh2Yy-wEH%a^T1&U(NB&&g1SZbxosClFG_P;`u^p$yH}>>!F}ha+Y`I$##n&X7&kU^F}`^Z@i7&Xt)UmKbd9a2DYCW>7gE9nEnY1s z5iX>J3tBvjQlhfftNYIp;cl}z6&+;1da@(CQ|Cr({rC80-pEl)RyJ)Xl2KXA&grkD zvTuPeon2;;0NN4mCX+G?ZW^-zC5hF^Xf-{f2)JGBUP3gJgaU~v`l{>1ub;9qw z#8|wfJ7KYOv~w^oF&58z&~t$IYkjdL_1QofN9#(cyEARpaCV#~q{6;0`j zj+OS_FS|N;QZ~xbKTv>}?&E<>DPZ$?PLylWLG&`>Yrhf8OZ9tTI`=97DFt`oFYcB( zJrrfX`cF00Z&@-Vn3`kAZoA;@o~)F!C0}*F?^0aK;4=Fhu#c&*8YG|_cZ&$mG% zTh}}>b=2+@4It|pKXn}Se5K+k!U!~TL;#Twc8SQLI^;;D0tgj5cut)yIs+NNXi#+z zfX1s?quo=1`PTixWJNEn6EtCR&L*4DP~{Zp!-{l4uA2eA$0Ugy;Awy@TSvVrqR!TN>D zir$xRhIy#*VcRq0~3dFuwQL|!R78*h?b6i-c!?(_6rCGL|#9y`WHFL^T_Uw@}o zdePJI>B)iLbZSywemp)A9lcb>;Zu#?Fpcc3bZ6Bbc8JvFv^d@FQ}Je^>!Aour}F74 z-?vL0;mCc1lgzMvm_%a)V3)@M?+ql?4cWXv3Zfe&>$NdFF7131jAvg#XvUVFN!T3! zDQvl)8p8%zg()StVlv8#$pRF&P~KTiy#w54FNP(>ruil8vIBqqQu**!8LtZa0S{a9 zDMnnX%gl=LD{8Px1_UE_BXZBT6 zsjWCm`HbB=`e!=IJ5x?48j5>huz^ zdf0*WcM_(RYWhT9=-0yfr%23J;q+OSoEFv4esa30`tWym8nbX@&qc4Nwb|rJ0p>!W_H;RCP9K zTvxU-Qa=ecFb$*JDZF5uB!R5PzsY0pa#+wBp$`%j7(`H;3uaFz&Fl_-*1@M|%2%h# z=p1pjXZ7k2L8Rzg#6{;zf?{-mea@4hzvo9@c#h7|^82%U!>lu5#N)p)4|Rhqw?tC! z;D4wbByF2bQM1&08g1(o<^A~G!kH^k-dP9XQQomu?yO%fVU6}ha93<^->f#StH$E3 zYVX!2W~~UxNPd5f9A=A+MouKnD5N;aqjW<*2N>lo3`2XU-xmC4P_=WzYUxgh#Uv|MN zUy1qmG>oqLv$v5`N2@E@1Eg*4@>LPyjWJ7)KJz9mwY1fFU(7-8-bwoZ0)3smaJ5XAks4-Kt=+Sg-k{apyF> ziYZ&JC^K7&0;jGjyPZkhKhRjBL#e%>1iNEYXj`zt9&DuAY}@*?^?mRHSGYdFl&^2z zkZ7q3EbUm=-x8DP15C(=LAlz$B*NC|rdy0zxaX8n>&O)RybT*U9W2(>dw0pXeM6rQ z4Hd*i`RMf^w60!ljieL{KY7t`tFFU9?hcq5Z${O4Wh!Wl=89P%vz}+E8)1cvJtu7; zk{yLTRqnNrMaRH(ITg?7(TpE$gap1QhmduFE^nBPeo33uuCW2LesyadL>I1hu&*k< zro*_ubS}J2$rr19oW`j(Auld8dM$&1N|{W}chcp3t(Gn5Xd@@+zw1<5KF%b>b}O8J zRPEoeN;i^C;P)Hr8d-NRP^WhBKaX4fgin8f|9uHQ)lv4duwCc$`;1n}GzJ*ac>km_fLT4MJTA(m$OH8trV@6%Th}o-J7}4=s3s1?iVV%l=DBsaWc3Ai=GeRZR4lRW0zg9eYDC&3HcX^PZrLx zI}5+s*IUBsUjlMFLi;Bov=Z_)uFyu9hSqiq9qdRa?T- zS`v!SC49Io;pr_2#pe?Kx-B7w6cR;?&m~0fCs~;Y`5wz1S+Q-DyGK?<3zh3cBMC-n z-XI$B>mQQ_k{f`@9Q}+$`Dqr!z+|hHzw)Wv!s~P;OG#mL9YDkAdHTCce=pNt)EQ8~ z<_A4!X(wF+i9N}DccqduXfi^|j#lDT{hXoVjilfs3nJAnb_Qp@ws#=6$bCM`>q>a9 zOm}Z0zgq~LC<}psV3BOjcEY_KM?PZr`_ic^IzGKVO&wFITYYct7zjKsKe#!&_vhsY zH>c(Py!^1R5*_>xKw@Ti)>X3RakQ1eZC^*cL+ZqbFimDhdoB$fsL<$p=t@rqN92d_O(&m;?_nGeUBfR zVex-W{9orsUWa0v{tYs@;Qnl70@EGCs7rA27pOM)Z~@LaRaOI?(G&QPhDWU=Z~3>9 zCL7eYu^v`ki7MK*1@2R2RX-v6XW}b|`ATGcuEXf9PFXDrv@TMkDkHiSicgp3qH@2Z zax+Wd1z$z(_R1;kXSUFGrVhW+?%v9~I4_4TAA~d_;_~>fgwTrds*b+RLm<-s+o5!I zi64gq(d#M1Q;j&u^&Fx*!)ji@gpu5rQD9%k(UrB}tfJSN1zk~KiX@wSIlcYCo>gQL zpM=luQ9jeHoZL)|gx&LcYtkg3%^BP#6328VW3cO>82QvynoekY>G67huqC0pJ*mkW zlV;1@5iGt?3m06YgAjqp{nq=T=_R zvV*frF=B=0P`|#JxRwRw{t`DAjk&~{5th@o+{Gae(k8|X-CfK5V_j|J>*rCx;^b*< zqSq>tt+npT?yr$_m(a~?og!06&h~MOb+t`x2k||@uH)OmqcO)0LjUN(iUjHOTDmONSMY?ea>%Uf9S}VK1 zs#2=13F^D$RSzZaJ|XWunN4I$>Ca|a|GCEhA*t*PJeRBQdVy@$bRE{7(^m4XDP<); z&6qCLIYp}Ws8vneGA>3BQ(!+MolFRJk5MbqX$!R{E{q`0FUeEXd&=Bf$wxoKTj+6> zbkXI#Qjt3-J?l0`ovs>RTOL;ft+lsFHS*CNBwn;Ga^a@h!xfhxW;DuUB^+ zU@*db@*x(zvfdnj>i4gM3GSo@(FT6B!!nzca?M`r>;&lc)xDASv{d0TyG|rJ37>%` z+%ZC~t+i6g?h0BX=^wN2 z&2yQ%#tV6eq<2T0V(C4m%W>=rE|a4yrs@2;JrYyyBxPyGc7F?oIjcjN`d>lSt|Zi_ zUPvw9N>ZC-w^a_x)Q=`?Khbiu;Rq;{$Y5EO4N~pxFru8(_cM^lAM)h?h9(>C#_c(s z_(8dsAkPHpi$c+t8NPZuyrK1~Ft3sF7;FNi#=8JRhuJ?GiY z$Xt75G*26;49x_Fo%IOdCMNgl_u`g?V!no+mwIl7b{J~;d^3^W9~v5(==6$1LwYHR zdX7$d^`oza)^8)do+q;$7ke)SozFPWY~{QbPU=398hk^#gjz#){NYuv4C=RTC+c*G z+5z5O>~2-k6V!(ePeyceCDTP5-V!1Gx_&l@sm`UsCtywjK0M?KlohmQo_+=G*$%ot z6EaOM4qPN1_bJx0=z)mDulzs!B!?Rreu9YYP;6|ZIWp-G@=sJeu})#h zJs#G7LSUde0nHV0B9Sy;H76FYxs=5n8$B`cqW4e(Jk0{+{HluCjn)u7xKd*+L3B4+ z(&fLj;oK+KvR-eghzP@@AM-O=O+u8k?S9RRsnJihfoQ-Yd%recH2n2-+x0 z1sTB>n4yVI6e!Yio||ICE{xo-L%Zhv0GxblBD)uzN363%BV%A%?PYU!k@ME_KA@l> zQmFU8NX|}?Fy!5NTM)4c4$6=4BdQ?cNgTwCujan#R`yL6qwF}v<}#6~ejy+Y81)yq z>N$KrLAj;89^JFV76`5%9MaYg0@-Z`VZfc~eB3qUZ9KjJH(&W5Wzs@j;t-1n|0nSd75j`KFFd@3G5j;q z9{yCvs1+VtcSH4nngXp@|A|ncIT$*Sz9zsBvL*1_69BV6QJ zltcpA8yj}X_X`4KWX_s-rbq#M`ZD{9iD|3gYwt{l*-W_$wrU)+!uYW*78xgR=l^PG z+{0J?*yyT$$T(q$1QWUgp4?MT-K+gg<(*uZU`jOQ5PMnmqQ942sdT<3sS^_u>a@Cf zm1ONZkVLYsucOuUiM(qc0L36iw53qTRlMrHf~o2clu-?>;`Hlc zxg^CdZS>L+jrdeS|u8@p2DSZYrC*t>1@P6GsZNwVioA zaas^(_I@MtjAiC_Yk7d;swnvvqd$Ym(B`r3VsD!Jwn2FXF<9ll@#50NQM~7Mn=IVo zRJL`sX!$sPF?U8 zGI@RKD0}0@n>L_B7K}a-6>sST-tvL+a$$urgw3&Ac;a8^%v>#JHQ4Rz#Y#gu?TvbQ z^>;SgIl&~il1-V!(YUyA4hTGWvMMhJQN`+5GF&+IfS}{T&=d$G<1-epciYZ)yy)&JR&m3aaBLHhW|DG!$CT)R1V_=g#!e+C^9n8>sJmozYgQ#ACME4 z2J^c;Y9ZHT{-+~%3$U%17XAO!=V=>8+?5oc#}I<7*APu|8!)d1hq@|dXKP3_Q@hhS zJ$}>VvP~MCU?&?)__@x#tDIfU2Nt)h88Xn?+_Ext*j7`^ls+cw9_bw>$k6r#kBLDs zIfeoaq{m^yUT+7R5G-%&@E+dgI%7DhI|&QD@#4uJ46+{1=$+Fq2;9a`x!|aYW#02rr+_PbfIV+a!!<|W9{=2G7FAL)4m&EBA`&FxZj9fP(b;pPEh-be z1IW-y-^pO>prN9$8 zrNf0aR-IDi=J+r%d*HWpY8=;>n`sb~>V(ZUEMF~zah5Qc{S5RQ_mW&n+I^qo6WZ7w>Z=DzPcfg>VlX$)<{5MIn(tU}M9LS}1G+R9 z6>6HEjVNh@1On;uol?~>JNvm9pd}JKHUW>5<;CHxC6d2K9&LfwVer!7Xfs~h>^Ra| zA26)i8NRxXS8qUJ>C~Xv<>i{WU{6PtBO^ZlB_9i$iFvR*Axt5C3;~L^VJR=SKvZ2x zX@3;qoO`i1+tOU`o77k=A^H9mk&$dSJ3qSDbCGOPRY?4OfuBh|88{CBr@5f0+JZu) zHfw|Mwk|K5=)s8n^Ij%rQ;3b80b|#i2dIO9v*G}C5b(4(Kpg~}9S5j`fOFyibg{6+FTaQW#u$=riLOf$_%mh%6AvEg(^TSd#K zNrPOqSg2fW*($MeM)pnyCf0xK3!f zE#(5v12=86>3?Qyb9qjbJX3zHKd$7UCAnLY_z57^q!!5)s5t)Yza zC@Ls#u+q5*xfYF63}4fPq)5#GN$Zw?q;z(OEE*>XDqCY59!GT^7xi2PH$p3$s2iLh z9n^ZMtE+TH?XC|pUZ-53q(W3>WD+Qi1!KHXVW<>SxzRBE%`STvJ0l?J13!|vI6f{r zHa0m)U5@wr?j5Jks=df;72&%EJN>qs7nqT3yubEq7TwoEg@`^S^OO9^9z*77 zm@xGZ{Lf1ue-d8h|14o|PK3)Gu|*Q_7xyC_M*S-5P90m~;6ZB$>tzH=)sP2WVxMR8 zkyVwBJ2Ic-QtRmxOsOtYhG3{5w9zfbLT3P*zg|jv&`br-$&k*Ps(E!embL8_ zBJG$8^D=N#XGo-Veiq(JUs_i(F3v{UIf<#~p_$vF4Nl0RkAyZdOEp~>rv@xB^JbBN zvlLI>JV^b$&J~i!v&~z`G%DV7`3&lpPef# z^{;UFnvEpC+8xSQ`dpZi{r8~3`m($k5H)%5ltYDUSZZ27NxK;^-kXl6w(c>Rr0^hT zpSqS;a&U^#nB@?N3qx3lQr5~gg6J?*E3v+ZTrNli^{V>7d7xaRsbUP^K#K)STRCdK zsccG5&nc(0PwSRD808>IdKk7Rl7-E_5(KR4X|yDh9;nHb7j@BM$t1#}S+dPtich|} zl({ci-Ib0a(nj@_QgM4qge^dxa|a3LkVdOq+~<#8o}RmmARDo{l%@bJ47r?ohpI!v z(O2n2qj$#G3v%N zn|A51*jh$O4J$Jfv6OgFu3~z9?4q9ytxEmjgK`$`#scjHIu>M$#N0;=_iE9Noqick z56P&=cSSFD=#Z%`NDpVkSiT#N#^QM5*6;>mZw@o9Uk5L3v+hcdm~CzNF{ID^Vr)1b z3gkf4Op$h70pPQy3aA`*ix~C+0;hAt6MXh&?B%iupZOoE9;crUM3WTZZs--bc_cdb zyiBhhH2MLwuyiv>OH%1pKq?A~C6YVJkKZFfJZS85giAAycV_$I*J$M7I$ zX@?VrS&Pbc2XSYaal73-Dc+t@WWFln8D8@gexy3p=a*L*XvUn8Rs#K`^Y<=gU zD_egb)G*1w5!w338lEGw^{+NO)7koW8lDZ=`hPS$GnM15cb1}KD8F)L?0b^d>dL>}~&zn$G0yK#emX zPBh&}D}B-Ae}|_2I?|!XWwL%?->QFp?I7$gPy`R-@N0Snc?+r{oAKOesY3uhojG-! z8V4ttO+DRk#lwTAaTAH0l4hzJ=al?Yt1ORg)uwtaj}0tS>1B;FCFdkLZEREw$Y~hJ z?_^8P@$^z8N%C$swbwsHmXc{AogT$0(8kZpAYRj5S&fNBf_OE(Ww6%-vI39A8~M#+S*Kv2CK) z=o^o13@6cZ= zr@5d!Gr2O&np~iUoqXGDg!7Uz{J-0SaY9$I)n%J27U|m`Zo1SCsvwFQ0ausJLP25gqGQwV5POh%=x^v~rBzH@OIP>z+WpdgeJef&Fe7_?&+R|LmYZr)c zK6e`^aqRJXV9LP>;^PvJftPLrPmY%~I4q8aUA&19X2*v)BphFn8=PQCH=Np>N{#n~ zgA@7eu$U?zPnYbhBa>Q7fB1JLz88O>n|#|5sg>e5A8XgJwoQ#lv8bNrdWGha&2qrzt+8KrOXY2tLP`YM zhIw1X^Mh>}%5?tHXbk?WsooILUvVOnNpCBS=DI3J#8GEY4WPo69YmiwaP_JzgNiP` z-|zFATL3$_O{+9xQZcO4t7)3(B{-=%VbzY=)Lzx|63v39!LK##ss2 z9gi=PZVH3NHn>Y7>>}wImapg6B9FlKaf8Uq(?g~+j=H289VrD%ZBNo_YfWTRF0Y)O zTm{GJ*~x{{)WWCA7bZ?XF(X+-XKNADfe~^2dX7&V=j76XUw*#8Ob@LNqJw2;7zUU? zL6Os8gR+P94Nq-WIb5_kepqe=<38H(pOUUwqjlm z5*)N`F|^f9XkD2GxNW1jRak>dfo@ZJ9PePJRj_43no3vF7YvU7&QF`jOVlQ|a~izG zvs$)E!xYbS>QrFLU$TwIHzwP7eB9znlUQ<+rY}vh_ZD6l*1pZrfUv@_boza1F_l#u zy=th_$;wv8va;Fl!g70rIoZOOPm=aH$IhzDC*yJQDBar2QPQcBpw8*EI1)oW%3Yp` zoUW2{if#LgMbt?2Qv`~Rc_62MCU>xb4=rqA`r^debX97oi>^&Nha%vc^LMKdS14}ng>2qNvfPPRgaC^ zM?~vZ&-V6-MPzp7WrDKSlP}k9sO75Y+1kw!`I7Y96_8J6`R~D<^Ww1}&c3oTN2VSW z`fK6PT1rPlT-bvfsKWK#JZqi{b7~^4(t-U~k?q#}z>^C5%0 z>6Kq2UPb|~I3t0R^KTjNETuJ@el^}Z zKP!N2&17zXOKNyyG1%Wr!j^Of@$tjf@~#Cjair(;_Zmg&8Ua`SEfpNWs;VMdv|&xh z^(|J-R9eToaX(#Je`IVTxnBB*)D>biT2K11id_FY4OpgWEwKDUC^CB|?0t2*{3{`& zt;x7mkwUS$kRHfn)cBy?NxYwnGv!zE!*Eu90?FsE1U}Oqm`Qyt9*N>@>K*j zZ~NrAd8k^E22Y=6b)YwMx|(UeF7BK+1HSxYexhemV6Cqu-!ljrNheTyoS-fupI*mx z8ot5otFVMyzLR2t`U{VbYr&#wJJQH6|jEeSA- z5~8YFf3MX1UVa#ZOwHmBAh~3{Ql)+PO@%|~?WKl=R|U3Leq$4)mcb;gHx7phXB_ZT zUnT7iNGofw1w~7#$$}7e#cFlDRy2U`$_d0`TDCh9@k^b1hh(&L>U7`P>)y*lYXhTx zdb$_Z&RS5ET<@&^RjR62*Hq^a=53=z=gV3VlA6a?(L{Aaw6_A+_t&SYXNd{wRO(jV z{1!UBL0U&fU#vJcLq^kc+A2p_m>0c~WM~gqiktBiCwPfkAQYolOWc4A56_d96fJIb zuw~bFJRAfgQ~`wbwJko*SJrvntW2frY^X243eHjI&b+NSEkwrPohXq?v=_aI3<v2cwqnmQov?h8Iwrks0YUG_ypb3NHi*>$h{&RbRTCy_m!L zS)Mr!m`sJvXq7;6OE*{3fCm3$BXvr1S>gyS716W*DIa&_e%)Sf@)s#G(FI)}S(&=} zR_h~h^wj`Sj#dW&b8&z=2)HH=PzM3?aez7q*c}I`gMb&r0qVd+snkf39DS!(oa{l! z)d-pFtbY-@*1l{LA<;C8EwTgd=bhYpk}94@zlf?k0&z6m^K5m91}WN1R8nxSdLsla}U zf~s8O$V6`-&M+lm8y_WVoT#v+PV$k}(PU&MS&KLk3eclf!XzUG%tnsQadN=)lV%^6 znb|Xbl?AVJ3hV03%tLYmjLQvDFP^loqos*?eHxOZAGn$8I%sS436+GJ&Z$baUK^#8 zeobJd>Z)Y!Dl99gI<6yI82yqG9uqHKnVo4(H~SF&?n)^a{R&4o(UV)JE;{GK1fV3w zZ|z5;_3@X(^XtI*YN{Y}GJ2*d&MgZ%)N+-_wa9Ns-&MJU3z@&gh5pg28J%@n>15?O z5b8|gPj-f=;TNNep#=BMC;CGj-;w@@UZxoFzA9Jd^lUpJ#mg}@3v*Puauyf;Bk3sV zcY@;$tgqAiil1++uQ6w@xD*^Ntl+V6#1pNJEI)70B7Lx9rObr`spr1j*5v8b?Wt9t zGPj&_Uq_ms3BTBoAZ6q$=d)yy`hs+$zFnE(#G0(D*Rl{pnovS&cM&MqqsW3kWSCf+ zb!1uYk|}YX)sl`9w4S$sG>3l8dV;i#^LA>{?x9PEA~|myDyQqF7Tb ze}WY0@;&?($A2d;80?{uou2jG=0pBCLcE9Z>QecBNna{|i4R)^No=a?PfXW8(8wwB z2ZUS_;NiCX$h7KzX-^^ntx2|AAD8c-NI+|nJ?%*(pf$*7A_1*QKGL2<0$P*&p*@KNv?e*~#x`6epf$M+Fv2B}|2JrnX#r?pKTOpI1IytC~*}G(RI=>oo?o%s6FDsWydNR>0*r}Yo0a>Ncg-mydq@khH z(m5@9RYA4CE%YsfQe7`Fq;b z)j~9K64;}Wqw1KxlgQtXa!HaX1FZm!9(o5NBX+}u{|fatz)@X11kuMBB!?wx(K@Jl zVGR|5^w7a2l|&aOdb4i7sbIP)s{(H)kGI!vCqGWx%{Elax>P?YU4J*Rk?JS)p;m&& zT_AWX+&LQhJFBZKSi#^=fRTESTC5g1nzpr{pSl~|{{!52-+~@yI$9}nOQ01|S#wno zS1EXDDvLPc55l0>^c7S@*xVToVvoXOzI%umS#=EqaL+_1HvBj-`lBQVLMe2oEsc~s zs9oA&ki%GO$>%Uk!N8&hX0Q;LgVxR#f?Nzx)~$iOB#9d!Q(fy- zhk00JWuqwur+S$mcdid~&L0gjJH+l!#jln_fAZjVy4U(-3DHO$_8{d8ny~hz!}c7C zZ!gxk-;^#+Vj+Iqb=4&%ZWz_3GSQLV1Cc$YulJ`IIa>O7#xI`cjW*9&j!e5|aff1O zPpu~Qyrkj6rvw#!Cqn3*4zrn0^HNf7OqQhq5Wj1DaMp<~je zokPpd-to`!jG}aW8yE6v3n%U@Dq9@?H?PL^B4t=hA@$1X<-msou3lG@R?_p&-$==_ z5BUS-{z~G9%qCHBV#piZ?hkIy3~uk?)5CFaPr(0>|JmYc#nA-UQZRaj95r(2$ICOZ zM~_J*&OJB0{$NV)$@B!}-%%{B?Qhwh@wRO5341ap0JSGL;k3#X3(iJ)Ht@D&zM$HN zxLn4^uqSJvD!pwXBmS1+xaXI)d-C;4)B#7fhc2=?m6Df8#zW!r-qdz8bWzelgH;ik z0A2o1YZB#kQLN&0RB0!aiz9_!IvC`COBZHPp;s1!}y@*Z5hg+xt))Ml7z?LH{d*2^Z>)Dyqs0`a6C{sxJYC0U1|7b zct_(NMj00Mj9s&*^K*4^v~7?+mt#|JOD%w|JnACX{Ge4v&+{_S196EBT{}C&uFARq z@rIsHY~Hz+l>E(X4zoKiE&m?6Tzn>?xzf(AY;pa!^*&Rv{NFA2Wd7>v#GNsv4zJ$f0bccZmXl9`iM2Y)aQOs ztxDVbQ$1dWGe{5SQ0&sBsS{+x?M+Q>Qj2T}r1C3nVDE>a19{ZY$`SFj*cIbVLIRg( z6sbGQ-<4v$($tgT#?7hJ)G_U#I%7~Fpd7LZScEQjCfgja28LRktRoa(J)e-VAP^gT z`bV9(5O$sQ}6ROAHfbkg)<5Ob<+c94h-yYV7$>v*# zeiIq1Ku;h=3vyO8_uWe6KT8Wq`}~EP{D$`Nnu_#;W4#Hz;|-jiVa566=A~tK2PGfe zxZyLz)gKa8NB^RH2W`>YA&M6p-$sO2-$x7@7}^bV?(XeSlPe}T?X+ENX{tMH9?y;y zZO>bpIy-Eh(@t%zXJ6TTH9QSzESYh^x}^q6R}Ca<(c!r?KUr9rKvUs~he!$1g`w_;8yrZDESCLm0=a zshQ^5)9h$0+xRcgtjJ17`avU8Zt+Y=3O)w4mu-BrW{MLrcAe31Zx~0>yS6rn16qqk zXeAI1nmCU#7f*sEBujEM8aHu0XQnbGUWI4|96YtMkckJYF_yB})ijdKO!-9)*JDGQ zmS)qJ#n45fk|!ju2G6+aGo9wq(zayk84k<;1=DITA4l;z&%ieAG~Wfe?+m{Zu;o6~Or^&l&t5RMlM=mc#>Kd8G9E>@l*cVZIlCnU=oOP06V zm4iaN)TNLEXilLoR*4v>q8bC$;$oocS?wypf<|ak$OE*MGNMQ&^7$!v<##r>$nr%G z4XdkoRCsAtWKCMT@h(?g9t5kTi+Ov`(Cp*LinTgs?-+_~=LY6(R_BG;|D@cJaj&9;t8<2x65_C=HMS{v zglgTnjMo#YxTza$zT)~W0xl#(#B1G%oqDiwL79;Vnz}38f>_@zA(BJ{b4cQ|x#((K zHSW>ty$zWY^OX|~qlU`b>ZWBC(NW{V1Xt}0-^$7s^fBpRw6R$C2*F3`KrQDQ{Q)-y z()?oHSJn}+EvQ3qp9+0<@js6{{tIw$wJP;u{)^l05_qcP_@6Qt82LNv!k9@Q&Jaw zFeX7Yb?bd{tdQ!s#3}LI1Y02i{3DFXSy?YfHQWVK&Yia?RsaWx>w!RVzFU*|>K8yP z1MAJdN(%86pd2-dR}W^?L4cH`0qP*&)p3A22)H>8PzM3G!~yCc;MO=m9R$244p7In zX<5w3Q53Z;%EzC7Eh*BhQy$66s6bXhB@C-m~#R$Jtu`l zkATMP0666<2NN$b9OB^TsY19onW|q>alx^C2##R%CW|AJ)FS#H07XbO&;}5{AN`2{ z+gq=9cpSKVN*o4ovj7%+epz0mvOR{cZxKp;9uv-*7C3jy;=ae<{STF0S9= z@5n?uq@uON!<7o7Ke2}NS&A~6Xk@MM`B$4R$K**7F-3v zrxK`VwTTiMhzmxGaV7VoPHj z8AgAR&L$&?SfS02B!kyQ%LwmcUmeNVxSxE<9GXG9uCxBs=+Bcci&0AygN_eniq4h{ zAf93^?|n9glTpT20TCyVS}4YnMNzEadN!sL>lOd$#UG)2m2cjmY*6TK$t${GJl0$n4`qqcRwKdQWCHQDC+NK? z0YNi@_Xnk=r*Yb$Q7v;Hq2JbNdt0sC%O1Zz1@ z=VI(J2I^1+R0~tl2#4}*HPZ@n->EHFD(r^K_Biv0s_>)lOpeIh{lBBB43tfpif>rO zW(T6_^{q6WZ_-p^4oFigE~aUtIB5F(S2t;TT02dRkV;b{@Bg1P{Zx|f*_&hDEG`I^ zrh;{}4K9XvQa*EKT5YBF$ml_m$H`04ptV@i0#KmV}IMJm? zea4?L!#;iBsxwaFn7j6ZbZK7Fq=(355H@lnRYuZmn{Et!-uIE57JYNFDS&?G%47_e-LUI03yXLxDwFl+>i=tUAbiY}2K zT|x3u)%$uPb$UejKMqb9lF3&JbO$jc!>tyVivTqXBg$6jEx`&+V+E$SG?-d7WqM1} zcUbEpm6QIcV&gf*Q;;f6jk)VjQ@log9wEazX)H}#f12v7e}rCaifWl%AE2=6X+HFr z16jo`-8AYU0vK{OO3-}%S99=UoJ?GOx76@Hr&vhnW`E#A(Q0RaL<#Sjn zuao+ARONPub_6s(1EMNC7ZJUK`d7IfBN6(vou5&AAo{vp0|nKKWYHvj1r_uZ22R+6 zB=TrE`M?TV9Vp7h$^Dk7{ahB16)UYXX&{+)OF(X7Ga6gvK6(nH+$}b_dplb4ge};c zR;RA1p3T_zC&m45V4O|2#%lrJnpYUWZ*EqnHn?!zt~S?aQ>!zzRni%hCoEHgJ<3-~ z$4T>^1>f>3L@Im&tRdI5p2C+dC^X1K_t93-lO@ErXT47{cLPv#dLlpyiMB~VCOUsyowd^;;oNg&u&S)U+e7JijXdZ3gbX*M*Hs^Q%PAtpYnob5t{8WV3Z zd5)aju+}bkyDGwoyIdhvYr;^F-(#UF*x$XGCr(1#zf7mTTA zVIvz7bZsybCvjlk$DotUJ74INoWDpPtG|GBWf`YA z;@6rdtBbb#cc@a09lj97VHSrDb7h5$Hm*lsCLu3n_-G}d2aAHSTr^Tr%34658Fd6z znQXc&g2;#mfJMk7GO-!@{a;&gvI0v}?0K3~hS-af8LqsC!t<5+cwRXyIh7pJTAgBy z^HW+gZ*EOypyIS^7p--73j~B0NPp+SB>D#0@pEu8n$gD!Kc5`RrIMBHu|Xm>8TWp2 zMi-H>tFk;BJrf6~s;>YBsvWuLH8}eHy~ME6l(%21K%_6NJrI*f1Lp~p z*1vK&*=3ZZL&+$q)8N-}TWWnp*8wW+z#;3U*@vkY2XUMT<~O`kyMe$Q(Gz+-945CU z#HyaMmGhQ%SY-493Kx@cl15aOg20={Y^YCAqx@`ya!-D4ge27`Cp?NU2Fp2L=72|j zOFP$d#OIs}F2{W{L2iUcxwI-$(8lx8n@M7~zAK4>W6jO?YJDWbaB6cZwfX((7kVl! zO2uJW3>B3Idf!3|s;se^BI!RKc7RY?k$Wh@d2os-=J0nZ=24{?&7Z*rqqrkB(7K$m* z!(Gu~WrZsT!<@;AFdNBR9_on@_dL*$!xlpFT1^{+7EcICXx#S%EO!vk zcRPUHIpXYTBHIdRd0y&8eC5xXQ`~GoYK*12*~`EuHa|onK!}F;anx2B+ahtcyO748 z8i|`h8hy&G29pgG$q2zc`o^y#kqwL?4hfw5>y#U#xFc z5*=WQ!@vgLBkItGiax9@RPzT$83whtxVxB)R+>CeP?!gqrSbBe=Ixr^Ly?xUyK>2Z zJP#%9p3C;}{3#%-Zoi>xpImlnbS}xO>%yFao^@c;xor8((x!SH73$KI*r8W zi!X-b#0|PwGz>Rh$;gIQw(;)w`KFZ?f{@m)9|KH6n1b1YZdg6yRX`2T+dVFPLN$q& zZ$+ZT(P_rw@CiSS6D?nj76)&w3t5Slk3`E?qs7r}Wd~Dh3~V^H%m8HDZPcOZ>vqLj z4xLj)81N$$KP*XP`+M5Sl?t)Jt#MLtu*9C3CC2EImc$}ITVpa-YnBL=HZnARCp3~ zGA74k(FBMTqb@=m$9aLkI~gq$M#s9z%SL=R zDC@KG6JTyaj3sG#?Y?{iI8WatY@)$xnzp~Qa&=#)iWK_03SEyEvCt*ufn_bY9g#&) zlPrQYU8aEzC5!B0=4u)O@kM7+d@HWJKGD9csVIbgqGQC2J+Au zhGGZ$^QF>kA8s*(fT7kxeyJP~=25PB@FQuN&A}3W?5^-*r@5dONG$2o5 zH+SN)Mva&cf|=taWpDHv^37~8x31$q&N_akECE(|(!7u~wrm#?^z*h>K_0QkyqLI3 zQdVCD;~_?~g3)N1&}dmJjh00%G+Gw5&}doILZf9yjb%w1_4iR?p)XoWnTz3fjo{Z0 z$~Ou*1_}d({vt0B4VVs<)78xlom=RiT?Po%GIB3KH{yVe1CDV z0)+vneMNchD8D9^x_$GGLhh_f`%Cb&OR?vS%@aKd&(2D^u(W@v z%fp8Ubn-hdUAwe)?Djve&TTF%J<~w%xoGoQWzGolCHR(OM91*U=0as|Hgo@d|&Y!tP89M6r6ai z(5s_Vq-^pT*yIS#Ta1aC5rvXJ?iWgx4j!T>3G61FYUb~GHi~|=gnqT8rC-V5oQ(z< zoeh?b=b;YYOt8lwRfXH+PJ-S~y^75ihm86s;RSxK;`>s*T^6jrM|!E$Qe02r8|%$U z`kk3nYK-qo`6l60x1S2Lb2}f~)s^vVILG0RyfW}qM!@JnqNWC0!+u6scZHi)wuiCEXe|sk zd9PRP%SG=+P{;Hcy+^*8N^dTDn+v&1Ljq>fLZORPMk-qCPDlSP zh4T(wzIq{p-Z`{Mes9-^iU2wv6!l6kdKa)tQwMv|`*B#uU(zQlQK2%-<+ zK^88Fmu^OBkf;?v>*8F*rF^rbOz%3HlB?TY%Bf=dE(z%F^IDU|q2&k3#oDl?a6e9K zg|lhZ($l+65!la*VIQ2nO9J{cTqisOTxOrjPkTvgX-@r9bcwZ0%oFrzm-7?@nRZkM@3Hn)tEE95SBw5a za&MK0YguM~fpn@X_9M#DGn>b`ZxS`R{S@X!8VN7jZQg`zF^ln$7hBH6HV+AeEqr8! zflV|diWV!OPCV|h6y8NnTliI{6AQrPk&+i$vI89{xxRc)YSlMw=t7_66|sQQ=$Aww zx<97T68KkX)J$%s)QS__f-?PoP9(gNh1yWW&5Ok-;r8H>oWQi!_a`E;#N$ubErSqNbZi^wKm!WK|u|G0REMKhTgP*E`=3Zf!lh=7VLiYS7z$__$U1%wEQ zh!J-_7nJaO-*c+&z1=gDAb!vP`Oovr?W$9!PF0<%I#qS*RF!G>v~4&UCBVIA;Kid6 zpCth)i+N096)Hb}*E(C`aNATGb?xx(rJ{sLQx*q|F*6ZrK8fDWYkq zJXn_))^$l-Py=?vL?YELLkw{S`L+5J@)UPj7v#<ylfH-=)8C!vjZvoQzB-2sSwCFJVR&N3s2TwnMpV|Sj zE|)dy==pRs(h>_cKCqyLEc;0hOq>?7UbtR zWLf4TV{WDH<@0lLJOmv=?rigvPR>_Hjs7 z3_ezaTey%1OB1s|${3sXm5EQ7v4p&O1^NE}fLBF1A!?XaJFSjW@3owI*Tq-r_2s{M zwDPY=9QvfT750(6QGWhuRhRI7v4~pCzT-M#tSvcz>P{@ikzk(nEO}RnB&(lZ2<&2Q z%h=iWzZyzHWAq`@HQD30eROxGEqzA^V01>dIc_^@ucL)YCT(^HI?x~EL+~%+L-0LH z(@iV`O=uPis#(odm#D5a&(WQoRx*P@omMN&S+yo9WQ{dR7H4^AuA)P|>SSl%C+V0w z`M<|>xZew1XrhHO@lf;{qb<(&bG4=kHuqn^(nV=zGm>UYlcsrElcdT0vSQzH+!EV{ zOZy{C4BArw2C;*!Sj-D*3+=$giQNcDdjm;kcRHw*V2+gknjOqY{s`n#G~`;WMMp!i zDD2ddE!rJ^JbVW%tnJ#dhWQ|!u#Cg`(5t}{Kt2RW@2}CeQk#m$gndib7!F=wD!*ad zRyuJHgfG@*MlKGrJX#zpgjo(eb854l#|&H49?jYDGm_aZ7_2GpH0B;)1a98Zqse+) zIqnwSrN(c`mKMJUi8po4$TW>#yckYgfP>4iP==0_M$&dR(@V!`m|n2V9C-da1dLBp z7#xn&1hq*mMC-!wrP^L`lN!xyF=k7nQPgy%xH(H1yamn#*zmRGVCz;LVrElqHklNk z9>3NaoVhLdw?8tN_7B9@2C*yQX38-8xbGm2rg60>aWrh0#?fSkE_Om%G+9r?s!Ppw z{BMG($}iK3_~Zqcv*YHOvt@>W1r$0s{Y>K{<%co}>`{khPmEcX2b`kMtS`3)HP$U& z&yAN_nbU~$->`-`F&&PYDzIk3f594*oYkwXN@X-SB-U7?RbO5CMrOhmYuL)`51?|f zRxRLaoHCvy!BVn@n;`jn-U+Fh%}JeY;B9L>)uO@U!rt+Kdu2!XXsdd)+a`c%?egP-_Yw)ijw zV4=qdMNFBdL6p`qnKjh)RFWn$sS8{1bObDq6SBFS!Y@exC(*wepX3Os+QgET(W!5t zG$T+g49`1q8E4;-S|@5|B#c{b_kXrZ^i5V_Cm&|3>AVRgqBs;Pkqi!D(>w%#TJ|T3RO3HRZQszh_#~|2wF+ zCjI}#4<@19YrYHIn}o*g_O=Blpk{+JIr8B0zT67e-xfcR`E0jXEHIhoWbH%67CXpi zGt+RG%x&^LAc`5CZtC{E$kEC~tj>iDw(7B@1dA3Z=TNiHGFC~)Le7~Z((JIeKO z#!K;vvk%-XtC^%G9*bmI?fNrFC&urTuv_OInM5yzEb7|DiuH1``W*BSusY0TFSdpU zW`afzj}s#M%$7G6M}Jm**&b!N2#!tZuR*vD%tq+6)eP~VEUbD3o-CaUprN=OoO$fQ z>xI^bqfa$M1HL_=f@O5zFK#Gg8gJ267K~v2!e)^6u?ozM!Utzl`Y~{RU~iNR!!W+1 zRH9bsW@*`~HS4956Wg4xclu65UH=qy-EMgKK*&pFUJ=r*A9-x9c4hr}aI|0{LdIm8 z&O2dd5}&-WXnQek(e|H|I>YjBN#v4i4(jDvQ@zdX?ekIUwp8^!t*MR_Hx%Y$i#L5SZJ&JH zOrNW5V;t!j6Re9bd*{$XpCDK9Xku=K-CE%D$bGjZd$X?Bft*#%Z)quxHFpA_W+g>D z1k{>34>vj`m(Tk)s>!6?e;(YLe72BX4=a)}lGh^ND9m{{BvU<|z>X#{?8a_uQ!QU; z@^?mPM-GoqX4fAzQXB$1@`XH*^L$U6$nCJh+7-_7a`RRx9@%WlLSQu)a$5e!eo>C7cbDH zw9t(GxMtmtv+?_(V?=yky8~-rA=d! z%WJ&-3LY-te3-K6>o9y^vH1OEhetveImM!cTl4~maBTcK#H$(nd)?;c0_4Td$9P@#*#FU2D1tUln162FrDB;dZ$Ow z9ayTa(F#)-I~ws3^2Tl5*;4cDAf_K;o&^gL*wLJK!cG|^xA{>|+QE4zgnh4&TAJRJ zzLe7s8R8{;%j0~LnVKTH8S|*~pNTsB8>*3WUv?2YSKusHx68FRVjSb-RVP#O1eFh& zne(tuo#R7PIqxQRuwxxp;7NZ4s!IZtF3O0ORQR+L~LN$Bu zwIPx{J{G2NQYgu68;1K(OMN(hV1qO&ROwn~1izEQ+1RmYdiO?zYV-<|slAW?|Vj-|{OLm$25nbGbmt1FpMV{+18fHW@A;)n1 zA7Wi4_uOHkoEQfgjC*ero5tbg$BAk0E;a?gC*q#dw=^oGcC8hT1K=nv z$M9AiQ|vJ5jW8cq@}#Ne==p&I5fS3?V-&r4F-h-egX0gBz=eUYpyN(c#Y+KpYUI$e zrT(WB%33Z!@yB04KSL;@hL-;RX94MGFXVdnF+ziSUJCg33}05u)#hR;aRVm>Q*nd7 zu*BrSyQQFC5F_UZ?Z!DK@VqWQM{MjH0}i9WXf zS(Lnh34pvc!EL47{Ch)I$%$;`no#tYu_g@e56~XOW^2)C{*U&As*j~FK%kk4Oz8|A=qJ6w~6nzskTZIY!Ijpe>{-^clT>OYq383@g z?wHs#v^968x|EfsR*OY_*IvIRZxic_ zA}Yo^P^!-ay3X<;kU?~#yG^2Q>KV>A>6fvuD&0~)k}Q}GWR!V z{$UzoB~&V|`?og9=b%-@;97ji#cn1bPQN&&|nsUGdSS?fio0V4=KJOhRo6GSC^A4QJ0z8mdp>^!gV(ri z>)Y`6LI%|^U$F2V2S!-;a58a*ZW!0{LCShO%CJ5NU#L`nZi5*O_4lp~IE5laC`I_p^@?**swKbzX*E+zvxW>j36*_EX zCgrJrH2MjiWX||SNZV#tJ9<{_;ba#R7npW6bpChK=0-(C3ab+x<4mzQo_4H zo6}UsdlW5+uMdbYaRy;DqsKChlS6%UI-K`R7JwmFXo^F14mW}y{42vAx zzQPb^upJRgOZ8$G@o2FBKd7pir<+}DGX*^bHK{TDQxGh}fuhHuY>LC7I^$`iAS33seONhsX|DA`x}njlf`n!Z%|pC0{!^iD67*72yaAL zol$^~EXbuRt8qw=Q9eunF9cbQ<8yU4gsg@FkbpBnjJyKQ3<0$N0>(!|fUIdYr9T=1 zxTImeQ;8Fi=kaL2I2t4~bT0JF5Y>h&Bu`t929)xBaK1HpF|ImToL+S*JTv zr+LUjlhB%kAMa^g3~{wMYjTs7;Wo;RYjWdeH8<|C+%#!!cs_u0JCC}70m%E@5YFG! zU2fVb{>5l8F#Y&Bc!&q}@D1KXZ*_gNp}O}8k1_8Pf*{@}93(MC%D@(eK5nz+2Bu)6 z%pZWu85H^w6hnZ*{xpR8TLZ5i{2DT1?!dgzzDfvIK#EL2$n)T@%BkHFr`{O8ONi4# z+Ev8?BbqQL;S+)(1WyR=`SnPlKsdHdk(tUm&8*&?h?`tYrda^J^ik0|`J|VSI~}ps zY(Nu|wJ^6)asM>NAdT@GzmrI-JZT7XJzVuGHQ}LU^TEtNp@N`@IROTPu74cgsT|MGYYLW!D>uTO)PsjG zLWM#I=MsMdm_B^@3NiHo%~$F4SmloQDI8hURPN@IOSQef04nV~nHWGm z`4{F>8-wQ4)qLXh4w4y`8r4QGAtbVg#I?uFhkq@`3wnsoXSj&JdKab2@d3;iCWF7hjR?VwV?ApVr`mUnljh$460{** z=o2p^HM|1gczGV-$sU;gf%$fa(S3# z*{aSg+7HXEbns{3Shf__MegQrgzm}`H<$u%&_~!46qy)nvC7vDEDiv$vQ>aM0KnQ+ z0pb7vi$Vp61J{ObPlDJ0mP;||sk_pW^`1;1-#lB6vqZw%J28`S{W5d>#hdPL{8{4(grFS0=-w1Z#wbn-Tw@|vCMlcQpP{ujIE7&7(@d%0;-SjSlUVuHH`HO|js3|3D!rgW!k4wN1r+(E4=9d5aZI@_4f?co@OLVZJdV<7*%K z5p=8IC)>a3=%Ti|thg!ZF7E{kMht~c&Rt&X(0ro;UI%$q$-49IWCzd$r!*9JANTqgw%d!b`8#oYSIkwjog)>9dA6IckJ``AJicCDM)qJ4i32C(ce;|oY z)O4}(hyhM=anWDAooQ4pk&7xk(iJyThP2XELNd5K95hqBhQPs%R8TZUQ6 zEr6DDYAt3i5GI0j=nXS^aIq!3_J(cTU?VF*8dIB76sYVo;?)|w3@Lui0&eQx3c0lB zaTco;pgu;f({OGM6m z&hW&v6UuGbE*RvkORm2!CJe=yg`kFbZfwUB6_3SOIv_oiZ)>=XwAsZ_ijA(aoRX#_ zOMk7=xJYCFkv%t@r$X1@wbm!cGRpPFH<3@Leth{)@=0=GK4aaQJ<^(4)#Zy4Ujvrq z)0vqwVx_X;jxz;ZJSNmeD8ad537G%?lFuX-=3m6f2z(w{QpKQ+x!mablnzPx&VeoC z@5IONoJqP`@v#cdC1v3vPHFHETuWlX{-@ANq>m*NccY%BaDF{-CMGvSP@>eWi8$Kh zAO-rE8%?2mFkWJfj^+lIrh^+;)?w?TL(KYUHrGe4JX)U#HoOmG>!Z`qnLmQm{IfZ2 zAJ~BG!?=%0;U+71oIz&8|0q#ph9Led-+-|zqIGsfH2j_R{SzO!LDxf^=fFfw{*Kmq?`yKC1es=IO7ALusxf zW?S$YxE0L!CPs%r6vsXQgF&W*(X-8|Vp0;OoE%|Bmh?JgsVFR32@<(#FAQUc;KH-d zY}_~|3T11$Rt)ANnT!-uMZq-G`wAeh0&?$z&>Z0?-;0p7=8V6l>{7u}SN4Hlf~r?Q zvev$TATj@1Yv1oA4nWzvS$3Uda{blJ&cxs%kO|h2R*X%*L>F3t`;I&m3@cMfgW}N@_Ua22JUokKKO3z^ zwJ#m8UR?hyknhpns^{`^h|hQ8)6LZrvi=DusvlmQ(o(J9NpXN=`NH0;4Qw`6B6tTK zem>KS=J`6DO==SM$c9`~4Ia@2#1fh&t+ljFnx?Tx{CwOZFpumd4Y*SJ{V3q` zl`$S=^_LRcKVK_eo15?tO;CMAWe%eo!w?Vqg4Dm40(M@)YqT2XlPkiD}e>C$Ou@SI6*Vrg=lr z=trK4zY)?|$%44*Mhc0Ui?tkAyT!g%G?-AbK>LyXHd@*R>=U+C;DnlJKeSq9k%NBE zIJT-cf@3_$mV;qCv>#zFT=OEzgQJ+Up zzqJp+>Volo89H_{9?E{>jD|$T6F&zy$J+|&>8#%?LB8gy6NC9Es0L8^VqQq#f(Dnb zArH*Uhw;n#H0%`_NwcIg;doa1|MRTa<6lyqs0hwD{~Kr>oIC7^?CHD@*QC>2q5J}c`FxD=~NrUKd zi8P)u;H(lIjzV1%<+v+Gj7#Y7xVyw;*2gKM z&?E0e6s)vIGf5R!HV7qcm(Lv$cMKt zGgI^q)SrVSYu-Ni;Q#?t9U#PUuj9Q30fXzw-mP((-F18)0L+lOkt^LkjO)%=ZwJOR zPfuOmfN*>qfu1@9)HBEAbMOm0Tj;W)96XJrV}j*7SZ(@;qU}n39|i};Y2GB{cn1S> zPE*Ezkyj3F*lEQ2-aO%=UQ9#+v9UaA4_u#7H-H)DX7ZTp#BG$!r`tZpKZn(@qds{t z@C*n~bN!e2qbSn`XQ2q(n;4=a>u*4qjh^vm0@mYb0X^*8W7MRK!9JLgF)PW|;W{e} zR7W;S83HiqGQMx(yIsq6&%n+7{+`%B*3Y=D2kSHZSGU2FLQF+^U2r~}xvCdjA-~krargZ84wPOm~_Ot0=jl6HEf@t~N=aUr$2KA5pU zTCRZ$ZE6j;?T(kXN^6|*G3av$l8tXHUyxO^e2LHdniJk!U7xT$W0pHS4PH!R()bqA zIQ>Adt%iI4={b!ae>RhzQ#+wW7O-&pNx-#B!Qvv zHPn_!>)vhC!M{V#Zt0-yS{rgS_J^zoC$RmsNE0V_{BPhFa%myLjM_Tsf1TXx@-M{? zFfXge{6!q|a$*)OrlrXkpt<5YOVb%VAKCYx0bKTf#?R~y#$M06KSH?f0sIlIEX>9g zBwkYDw^{ytfek1h+=AFe!!v0Si(z64)= z%!>e#CjMnQbPjkOdCl?D7aiP2By02~n~+u9e}h9BUjcg1_FYU7ix^h1bQ}>?@%)ET zsGtJm;CG;9_BW8fHWr#Jy!b^_t2XJfhoa|v9zei3=?f0?Y-LZQ_o`5u-xDRx<~`UM|5<#oWM{~%}vRVc*#)mU-) z1Nh+GmW&VUtsHA)CBlt)(8joV5LCH?2$DT-<2(*=b>sUZ2ub=JtRr=u?0BEaD0>p` zG`P$j^ci$|r^|PM2+@wWf@2%dN$+gI`y{^O=bSol8H`q1n(*iz7$igA(8aL0)wCm( zN7JVC*MT@tg-XRMVHm?U%`lun#^kGwW{)@MJI>IQTP%jqH{|{ym4j0f6Z&;t$az2u z^g38QgnWff0P{JV2fFJXD{;y@2Z*sfcZfZdWo*)$iw@$ElQb0|EOWcMNwBEiX=BJnEDY!{3=_9<9(Er9{8xCgf>oY`?#2!uN;&8nwTO=bryq`L7=Z< z!mEgYXBP0|i(SKNiP2DbLXMM33;{Zs6bAs1{R$8V0Fasr5C;H|iV6@10FZ(T5C;H| zfeH`@rjzSX>Tu;wkD0>*7lKl8#UXtFZ(H)bGWtAgbUrjM*vOIgw0Nbs&tl=&c%uds zYhcnsa_RZpY6aLPjqT=!czL#@?V&7bu2!=CGhi?dSITpwW+Kt)G)behgHezv!++A(+wa@fol-RO5dQLuY2usH%x{h?0*N zK21_M{1s(-{rp!MEyRI9yE2MA+GG(;8 zo9SFINqiIRG-ILE4qxF=z2J$7?bm95bFd1Wae%(Z;lP^e8z+ouM#g0>`&InPxvPfC zFh@}-pvFqGom%S|mg>OX^MD!T?q5|fM+!5j7 z%Iih4uEyNf%8&XvJGKxf+72*c9BZz6Z)Y`a#bn)EYh4ty~Ev;0jBt*7{a7%OY1+-*y;$t&fSA9j8_7Qr5YD;bEQXw zhLxVGk|3D}<9VUSiRJ)>Gen1yf*ny0&Fy|gdUaKP{sk?$3RiTg4E3@@1KEHNDi#UglL74Th~H@ z$t4lo+=%29=7+Rj#zicN?xl$`$~eYJR1)t$D}fA9Kaot_fIf(2I@GAkOLNA;Y9}8o zLn3C!sob`_+=j;!%58w(8p1~|DrRgfYH{`l(o)iVb&+WuR4&-r12XcBCQ(dzXV{ z{yKc}{b!;4n!78H0;@aHxQ}ajAwB2h_VlJAA<`Il5rbY7s~W~{AZ|xfdy||%##46w zDim0{ZAVtiSI9+ z)9|7K#h@=G1W!@74sK-J`!e05brOF}TyXZ70*WSm87czPmv3Uqrl0(jZs{k})4>y= z2NLR6p$E2o{~LO;)od5~PN_1!GEVft$1?%^xw|Lv?Z7{Fv1p-?*arXA-JF2w1(J|x zb`3xhivuK$I6!g`1E_}PYQu^AkJ+`T{EH-f?B!Kj6`|az1dLk}PzV>?dFL`;+AsH$ z$Ze1na;qg)iV$U#jKO)wVqPdK#Zgc>b!DnS0(0r$$1}mdZ^PT;c;`~UN*G>w(R2oo zj#iKXJlY7@LNR0+l+V;!GSVS3x(upVCb&P@A`?dC!5$KKBp%$=$b&}I|6?9(p%kO= z0AmZ+-DZcN;&_*U|6&Fv_5KKIdp2d+yiY{+e$ucqLqj0-{sn~8)q5jqV~vJ9_zq%< zia^>y9!m-GG=pC@lYyP_8G3?atJ5jJhS2Sjl~LQT6dG3PEm7Fzgy(vH{S z0N^PCME6HMGbZzRx61W*fKW1H4es8Tv4%_QmL?q3{|n>?&btIasbLgJ&Pg?Oq&Dos zcg!e@dLIo(5=_G}lBDgf_=Sj(it9*PlQ;)W-GpdHT-^QmC3t!=l|l;hJ6&J4CbrvE z#~SX7ejIt+zITpQwa!VLRa%zWRMPCoZ({deQ-0jF@DZdkKKV{-W z=+W%^-vpY8lOBL); z5RjJW)BNkfiJ;>)7KtK4#MNkfUzF%FgoxAtPp`lr(|t0O*fViOsAS<9PzwHp58t#% zSD`x&!DF3Z;z9@{*#P@GYlA2Tq3d?Uy8)(x0!*#C5|q8G@Zr0$LgH{@T!K$MWrD}L zo1uI+i{q-m-o(cA@Bh!`Bn1X=U*~HIL_j5<&H7nBcI(bI}uNOB0B3_#k ztOADCMji8S0odB!$0`9=5nz`_n8n>f*y4lXG4J@XZp<55SEY2Z8J7(E6c51z2#-WWOOuS1MuVyP(_Y;3+nfGGxKo7Me}!Z^#Z#^zfr=OP;fVPA5}tgUcE zhslW_c z#@v67x&Ik+kNIhY-xPBfV(#%V_f|3Y^q6~g%stP#Gv#I!=u&VQx!Ku5;eJodeQ?aZ z+`2OpmgcL+p^t_#vTs>yQsvs!lxy!XVL0*G2|j5Xl7ic-455=`G}jLXEpsvWfR z!3ju9yDKupJ~B4hAP0vxByB=hJh@Kr}H zy@zr<>OEM|zIp`jj^e%pUS^Sf2OaA#M7(~=(!rl&?3~YTid_`WX$HQ7q74yhdhF%M zgXytcjmoSbSH(d@nH6{#r=jxG$;-e(G!MMBx)?t(-3F{lNiXYP1JY&#`i>DSMitHM z1@tF&Td8Z3C64zaHaiRu-ZgOa;1LOT)ukwt)LO~A3Bbw>hKKGcxaV5oltY=s{%FHk zSwgOs`p~qy-~JfpI{DyE))W+paJ^sqn#loE#C&Q! z`&5h(tOPUN$CFxk_1N`gswwQN;ap!k;sp(h&gN>#1T-wKa5o!zSU7KoLY(t?sGGyd zJGJ66oazkT)fqglHD|_rwu>hJd#n>(lJYxer>qXkvTO}^H>uMQN*UST?8vrfqmdT( zj$z7w69?!G(~Zb9YVcF2r5IO8sh+6`w?AfZJCE4RYNM&)DO$%!r^z@HMCVC); z6*@HzjpaMz-#}hw&?Hjcj}awPX-yUn#J;>R6fbH5CM_oAeTNjOJ~r!%%$TpP9U~@U zT=P;cE)=;a*?1DjKKFEjFQ9%+ifs)IC_?%k8$rk=ir-0`m|X<|u=9-Bt?5iAxNoFJ z13`T?BH-o%#$zk@CC_5}wHEo?k@*|=K1w|F44c%zjdVUsr?(gqy5VTRa|lp_fB!7* zaB*idSKSM*dZJ-Nw|El#!6_>+SigbDwOJW=;2tClp-qxm|8aPnL8j#YfUV;-V5vXL z`?jn=zrL=+>e_8_;@~gYy}`KcKZ&^#Src&^6A5kqr=!N5K^8&wpa!#0s?+vAgt$IY zU?{{8+Wu#8+kGOj2s}!u?QYibZbuQ?%vBI3uIy0U#scSqU!fYToC*o2MlkkQF5HAd ztCjzc-~tC}1JP*ZPp*k}UWXD67eKaF{u{&1Z;ZN9K}p;M5T-p%$|?3wELL{lUQ)Xi zpQzm)k(mEwyH_5w1D|)VwF5r@uHkmzVH#R=!r2;kSAHmLoL z-B;r}0`boTz>pEk9a?7iG}OTxo{|p728_HiIf=#bx06uzUsp^5U_8q~ou`Pfe39cg zF|z{*T^-NfKPJ0e_uDyF_%JICe@?mC-tX`&EVrN^3XVW4gU!Rg|kAclPF zrcDe!CH_fb%eQXY!y{Pf@=j(&INa>BOg3QhrKES@-vfo9BJe7tZ3ix zpFkNdgle(2ZCY&BN%P8u+yLjDXtXMNVtwf0k=rbGD3$RdZD!s-QgYkGlH*NDq%Da_ zpMePBQ>Cr3_({FZ&GDT)3=RQK!P1n8_=BR%lNC_8qH3c-hv2{);mIhSM1!KCZS zhZ3iz)Z&1)hjvRGyK$$s>a*|o;cop1yX+<;Uu{bV-#`S7ERXS+xU*kP2hWBf>EQ1% zch@5}hFFmQ0;7an)Fck*+Ml-oaRBgw1&9NH4Hh5{)uEwSQdY+cZE?c8A@)RycCpGS z2No29G{W5wjc|_8Sh+WX&D{|7;LY6)@f4EPeeUzLb@X-`ZMoA~YV5=#-?H(tEwwnn zhF@8LIIw^I33ApN2hbC3^IsAVq9+QvJ03(&6!dyLh@L2@?a^3T^h81P<3aR9K_|z9 z=!t?Zi3ibRg0L6$Blt>Q1;PjB+~SME9*7K5L_t4dP@gTe1X0hx%s&|qqQ}^tlgEHoq=P}^oEG1*cHV3;}&AIm{`P9Y~6R^Qz|$EQJC_%c1%8} z6&Ha1a=tyK|Bn7*AOOS@4k-rF8~!}h6wP1x|vVmcNeZP2W~?ihI*NnIok=cw^*{V z)kcn1qvIgZ@cf50-kWCD0^B5mK9N-1tVqMwxm8{~~e)#+GikEyk)u0}jL-ZaHkjHtIUYo^;7 zWMZaFG$Dbt$TYM-LcJmodPc)b2X})d!9&yVxgRb*gOY2;Nov`0Gof>zjEA;lo6IJG zC=rw`j@OA~gf&#~1p7Il^%fXq-EWF}Y9cXfXTJ&kumJVjuB=000MtQbC~U=#G#t4L zUQ^J6kR|LHI`X#cv1sdY7K+hHt_lkrDtfT>f{XeuMJo&zBGYnLO7ANTXKIxHKPAi2 zkjOu^Mli-^Y)4K4rx9tRT^M+nWKE{-MjYH!fpz&kaPh^mUDy^L0!j~n_X61aGENC$ zpnDx;RK=wipJHif+CqC`syS20GA#z2`=*Y!1f+VKp!(kfj-CpR_wEjd;gW=+7Kv0^ zhP!{Aw6_=B^rVZk{>&qnESJwLu3_SwQE-49E`cUE14kh0=m?XxgfM8#ZTQ_H!R;CePTV{})DQQ!Ps8u- zXb+Q(#>DXs1P_fMg^+z;*mc-@-~2XHv4xpXEO9AZkFCrh;8YqdrR~tY?dBRCe+iTHe_@8 zoAeIoF;9BaVp>icj7ZP&xCK1spXFz{-Cc8LI32VXt1?^Gy`>^gY$QQWsh&q~XjRqE zh`BPkn9xXqjH)NGMMjNGf|=i9F8GE~e1bkSlX9muJ%oP4%M!c~vdJ%G$NQnlu`@`V z`ZR~n%inYcX9KNw=BTqNrQ-}TC7o6=f<{BOyd#ma){l1-Gr@_E_iuJ848)A&`m&lp z|8Wv`pkDWs{=*QTYl>nY9?A)Qc<=^&g*ne>#xL7F#dd)IS@<81|2^=3B>t-dF=3YW zMUM5d^uxh3M+Q$H8C)G1Je%NPHw<{HIjFCW^w1o#1QV}5{IWVuAtx?pBI{-gI19FH_dGJTBmOZ} zOW;NXd0_r0`28CGU%)@%{AUB(3jh88#K$zAhV`!h1F~k6uh2R=>vKGUNTOGxq z?P=z^Tne^PM_16Vj`6`h>X;B5rH+ZgY3i61d|DlogGX;kcsE+M|`_-|1@Vq*92>zsw{vi2`BswqXQpfzDrj7-{ zVs$JG4pPUCmWPXi;}x<~u#%2E-rHf1pH;*Y0_vPiLnp#6&Q(9=`V{T=X@w zBRC&%6`~t3)k9pL@}zq$dho!_=y={k6r~U2(_?}Xc2elQDuWOh-1vyc8B#F9Y&B&DR;PQR)&+8;o~o8b4=I` zzx;Cs=OS|NcB78Q<-E~S5N}wT1Y#~5r?=e}=wb6$bS1rY51m6oxpOGWaODq%%(gg84@6~<5wTdp3B_yV25G(kg4G9L@;3L*y&LESj;ZjTf`jl}&k+a+LAj2E*(7aIlg7w3I%i%Er9s^SbRljN=f$?4(rM<_hGt1wb!EOCO{ zn8{v*dj(+P$&09JH4sxpIYIJGit5n_p;kB8(ozsdO;O;gksK)pln;)q7q+F&CrCaw z63^1BUPtPcbT?NQ-tU={KM=tFx(HlReNik?k{NN1J6Zvtb={fr0C#8&i34?+ls8XR zcls!pGqejZLfvUlK^k$bX}Y$n)s~j)wWW;bW}ShLQlP8{C1W)4>3T9Q9V@k zqjHPj7bt~NL%TAIC@|U8U2)|B6{ey!eIHz+HO*rc6Q(hw2N!Z`U|faq3IoiYO3K)b@(c>+kWO*Yw73P-4$ z{VWRSufYfI&(M7?K284T@RgHAI8d3xIZF@cD0BXKfL5D<$zbtivpyxhzX~6~KSuXz zb)QA|+3Nlz-RI!b|7pn}E26h6tBPMqeX8hsnRxYht*Bzrzm1oc4B?|MrF@T6p5RBK zz{o}*PZ7eHd`(3l&l4iqu#gReFf&TK z$&0Euc4J+e*jL(_lxPfwcRJ(=M0r_N{rYl@1c|<^%U_OX`k=AC5Ohn6d1@m)A8Qd* z-8+e1>hdwLnW9KqBPZiO0{btFtRYRk;06z9;RJ3Bx--qhG@*DG}~vpA<-m~PZ}n-23T&>qpoLPx)OC>xz}_Boa=~h8Q3~zoErKRe~Z#etW4pZ zWc*W#rZq@El3fLR2N(O9>%$P(${UI;a!YsB?QcPz z(3@~CS6ss=3YFBj+2f4jGw6oKpaU5cFzCj{po18+AA^2~4|h0sLkp6zRvZA}*rfu* z0l*Rq5C;HzSb#W!SUHWc1Iy~4h@>Jrhq2{WcMUd!G1!f)P8*F34qVrf8SAe3=(`|u zN&}g3o8MU(EjJ%&Ak*otS@kY*v!a2__;;6^l_aC<;Kin2;|ln!+x;edv-3e8=0$bd z(DK;w)|=N&j#ltfH7SfknM8eBH)>j^jgVIH-K7;YaHsU{xN}+qnXY$7=8Oh1+q^q6 z`!tZ5x_RE9o9$)0nK%I0+XBSFdQT=`hmgRCStxgeMi$qjXWPxc;A&Kh=!#{kLL~v0 z^a{m>-}fWji3W;&z8^%;$p(rCgl`5^`kok5D~U2jwVMcM*9JUq&|yj9{TT3Q`w;3! z6Qvb47zn~H-=-ovkF1UmcdSKdbG(OuU{6vas9=NI9q)lSSygx2M%$=IzLh*b*JzYV zrBPM+qs70S@h`LS(SC4)&8V9QqY=52MAlg%<^1OB{cM${20bP#OR8?d#*uDDHxx`)Pn^Bm*H8|3DV{jb=FqZ++FN;NeKd9GrtEu2N z1dUdq$lL488^r#5tk@R^^4T$KOyVr8-}vY3-iI$YnG=f-%S2kcAu z=f>jY`2QyU`@e;c@TDT>#4EugWMA-%d|#38-{kvm`DTB?&)i^W?U9UNb&m_S? zt_8eq=y`JK?$7T3r89PU5yeS&S6@G~f4h^@-HQ(Ree-rb>F#Y0J1)K8d@L!`-RoX> zD!pKmI2pPCtK~%h0?~uhgp$i@*A!yU!pZ4S6Sf({+?;jqy zU~eHv&;lqT6aBbg0w^!taQGPuc9S3$Z2=BUC;Go2K_CBn`8JmCg`qW{XPWn1I_azh zP?00nXHpB!T7bR|Cqoxp#2g+bv6`37{vy*nzV_7l3zC9D(1OcJxL;7FAHDO<3)V@R zOk=@w44N!KlZ#i}zulsA_ws+_?;(}+q@K2#a(1Ncrp}$Df(gQ>HFL*$L7;C|6 zr1EnKI_6`4dzi7`{zTJ5QlfM>K?{RI$5+q z(In5GPyA01IByld-Yr;G&fA7iyj2HOUV5OY1p=1|kZoImo0ugs*O8{Kz~2!#Q-Eyw z3VepZ2?AtCP~bfTrUb}-p}_AG_$PdvfZara!rWg7kiABMpC{(M0%Rvr;1Gd$a1qhj zrxbV+fxMCjZy1F@m}4gT@!TGO>~V?-TdzbvZZiXr9Z-R|gelRF9ex1W9~FpKR}%d& zZ2^$oQ-K8n=LnF!Re^7l^-~1M&Z|JFk0t@KFDvjD#C!uE@G}HHK;SP0$eym4Hxc-t z0NL>scqM^95Fq7%0xuwNtpF(&6nGYapA{gbgaCVk>Pjb|xKQu0)&Fq<$_@1%T0K&) zq*U*|)%|#fV;635oKPt@Rm!1=k?-zlg{so6ILRp4t-CYOX$2o zocqxEeQ_R6=Z)e#hRz?*X}2Sdy)*KA4Zx|GLaqb1&zLJBv00qfC&N=i-vJs7rkp`$ zPff57G$z;zi)^sDUV0D8#6M?{5o6^0t)`9X&Z&SP5sZbhGf1d{V*7ZK2T7a^X-u3j zlQ{E7M(OFObHn@*=JsYpJYYf)z8=d>0cVi>6rx@;=cXry(S*^i*8->>66Bn~N#I0$ zLiTQ)LGoXs)@^u=wt0hi)GyD#FN7<`FtK1)DkJUPbWPG5ySlMUAjM}LH2mw<8pn$#!4NVlZ;sD@g3lIkYKehmI0C1}X zhy#GzEkGOq+-U*g0N|$f&^he?^OL(dam2Ywfslyx9awXxgj$sU-QmjLj8 zE5R^O93T0x2;{LfbLt0cJ|4Y_qGFY|RUH89x`}lFERA?pEsSDK9+5{kafPjCIRG+H z0OB-fusMZovK!PrmhP+J_J62=mJo2G05t1@!PYd*|*iZWhsJ4a3dS`BJ%Tmz?C`5DE4WbU+KPVgnE>2Ti7HP8;q{K||6;Ns+5* zdcTE)>z$(QSV3foSO{EYg`d{Ly!+TI)f9#FV?)?9y^88?K%+~R@|oZf0>Z1haOOx3 z-56|I`b5~_ksM7d>%WE)_H33g2Rbpxv4k}jqta#bF?5y5TKKKCi-qkWcoDf)4m=-m zfE5wqvj>I^YGiy?R*26I8aC09@mZlEKKpOjf=9x4*_XXn5eMT~D#58H|0tJ!10a5b zS3$!_nfU+>-G{D7_!|xI2Mj#AZ;;*6<900J$0uToPEU^H@0e}>kHYi$h$`3Sd4JP*VW&sel;@U@rW*>ShM~?cug#8JFJt z3uOiyjLHmXeWkT%Une})*QH~c^KsIc!Z^~BG!7ftXmQxk!Z^~(G!EgT#bF~1<46nC zIE0TDhYd80Bdt^85I#yAslXaUB^z-xk=A-7oJ~1`yE1WLFLa7SPlCbbb`6ew}x?eA%4vP6&l>jXs!oTf{j;T(sz~C#lSoSqTQ3ezoWWI zN(b4U05H5fg;~O%ZMTv@ZK-k-6~OeoUHQ>bP7=Ka{@PqTQ%jD^xac|_L(F(a_$X~c z8jVSNN2JU7a>O}38|A$U9>3EmGMM#qGLg&@$8Ap6&~E{O>H^sq!rSH8dl~v8e^ka} z9s3M@MeqH{vg9S1z*C~~x0%RhFi2@^sG3;%D%#u7vm`gjZ!c~r6|!iL&A8J+!=Gcg z6FeA3_=N(V3jxn7U}Fe)K>$v$i4bYjdm^(#|EqX?FIm$6RKTGG$TV5jt2#|CR>zcv z{%#1Zu^8UoBqSU{o_-X9_agW=O71m6d27hf?=<=#*{Fs2y`pr!Y*GHKfJFf44KK=U zJo*}<{1qr%%tV>PV&-fHOHQ$vp|%C4pVAMh_dn#__QSR@>$&e4U!&2VqxEQRgVeY7 z!yOV``)NO9-)EZGP^j~2S1Atd7KpX)4+5*IZ%}@3ldeBrUZ^VfR6fOb~2LS960uToP(g7Gn900H*3x+rVU_TXrIFKlNc95?Da#y$qxDVQk9y-IJfzZxiUqCr$qyDAN)L{R*fS9!b&6T1UF@uAH>H^BR zuJB|)#BP91-r5c1tZ@J?-Z~Ko*a6&BWIwbB%@zTMt)~EiJB~WX#8D_?lz^khwC$l4 zYQ0rLo5g@y?2!7%*v32+kSOnET+>YBl~@9uj(1u;WSrxzsE6QUjFt6tFo`}Rj-yLl zY7yCby|WM|V~Lx%6HSGGIt01{OAv&yn7!KHPu*Hjer?X~#r{~;W>o(Cp( z-lsrTIAhG~{J%r<)c>Uj;nPGQyMVwps|cqF0`3h4iBA$rCIW+vS23_djx-eGoDnf* z#V|fj3^E@y*v^$kD==D<<<@1pHzV7<_}>Zt+_;GU9|ivb`2QUKFTwwJ@bBXvF{duu z-Gz$`J0AbkhV);DPr5aAN*(uq(?Fz?uy*^o5lbBDSFGdyj~mF1jK!L+o<;;Q z*kR+Seu!QPW!+Z~36o&;SN90LYyr60-XgORRHuhtwu9<~(95QP%l^;7aINQsad9)( zhyJM$C;3cqW~%|<@k`2BK8Ydn>96>OiURHC1fuVN4^)-Qc25J&x%Te(pN4;OW;^_k z!+-x-_&8~wYf{|V`3d}B=O*pXj`>f9e|pS+IQ(4STKs+B=L*;Q7beRS=Cq~_XSjl^ zPEVF6Mj$Tas>R^Ju!KR|uWVtptgzaZF^XeL)ipj^*JqW>PjvMWHMe!PQnuzlV>E8Q|4^r%1L)T3;lsGP23@h9Hm57`d7lKXPMg3 z5)T!A9uJs*6F#}*Bz=>E?K1wKEO#uv60r2?XfzJ=x2k))mT|xdp5hbbn{1Sgh~$3{ zxX9K|m@RoGz%A$J;2o0h1Kz?LRDM85a?+gErdU?1J0>R+a^)g6(r*BzT17Dlk;eW_ zLdL@<&2%k&`JniUO{1RO9PYFJ=_9aPLU6USZE)0uZUlcYk4JkWf3)C`;~}$7BP(+K zG;%P|HcW9vABoGoONis){bzO}52`ZF#t1H4J^lgc zSy(!$J?$<6ZdZVGw)+W?kteCW??D1CjbS`Y0J8!bw6ycr15jO+mecgKy!P}JA^K$%8!wRR;ZnqmJ{ln8sR@+9Tsq@NFN44GOl61Ymp`U6r;-NDb|w?oVh(d8>qK?>$==;`0VX77?_k=%^&sxUWC#y)ZW9A3 zsvH*>tYT+EB5iW8szBS|w654UUDx~0N_wM>&NS6rZ=fiVnoAdR#lA(V5HQI^iyv9= ztYk6`WG4K&o($)WLWXJtLnc}u$(m>+GP4@UaLOrUHb!KkC6p|iMk2GMfedG*P*90N z0drz{#Q@p+Eb2g%N9kHsl_n!|wjmK+mvzkmNvbYDl5<_Lb&g2tT8%uW#v;yRPMGnu zi0DsrwPg(;Rgop@Ek>l~Bp#8o<>Krj-g9QEE9s5uL05mp*(GF06iX{Pp^k@hQr!!( z)P|^qk?752Mabl+Hi;+4$u{BCmBipyO(yg2xoGB)2YActSu{;3vHk<~*hP*s)}gnM zPNe^OlRgRXE|e~Ubkd1WARYeIMKM~hn7Ye5A5ow>3Lic8zM_Dm&?H1hBt(I61_4wf zc^45QH6-b#Qk&9H@1zG#fmI$>USDR|;J=Wif$K2uA4;O>W1%i^F4!3&D`Rm0z_JKH z900s+0pb8)3`uagEe-%&3lIkYk_a)xq4U+%D7(vbj@|cT2{o=Z8d3Q8e6Y-0YdobK|roJ;M;C9%_P9=iX`A!&)x#PAf3kn}t?AM+|5~`HT9w(AJNp;{6E8=>LL8fo6;E9wNgUkdkomX`NDxD09 zU&#Xy6Q~@5b|9QKobkSes$tV(La^Er`cb*Pn^5>#devQeodXjW9lmfuNiZ^#$5pZJ zkTAoLmf}mPQ5}*vR6Wd>1W>;uwOFiNg;PT*x4bis4Bf@cfiFOsD;&ugND|4^W98L& z1Br5}l@d!&hF8suNgBN7d}S;AO1oF;BU#W$G;LdM;vnGj&rGN;0kbfPVwNOdaFY{~ zKHMz5M2DOFl%@qY3ojgio9$5>C*{yhN;Y3oq8n?-|%IsgqGtiEOcu>4l|!o<&ZE$@1;+q(fDZa+7_TEDp^bOB%3 z02lIB&kb#9y`H=H&h^|}IL7td^lwhLewpKO9cgYw;nGob2RP4Uoq8(@m_{av&=v;( zl4;6laR9*535GZ}#@4iGL;rz22^h^e;Z-4@jhzRXjFFv`yql3fQ>!dMZIvr^plOQD zV~;6>?1nAJ{0}_W-7pPs1rm#(Mi^ipi!QM+Yh+E?SPXClGAtIJ>z28|j>t3T0_&rS z5Z?YrlLF9S`B&rjXpRvo8783Ew#h1_osg-(N(^<<*$vm~p(35JDDieYEjLs`a9X~Q zaFd8z9Gap(-TE_?KT2R5IK}3o7i*>uH0H%N|KMaYNya6~5}rvQK+uix z#qLJ@yy30LFz*ctw*YPjK#t1A$4&1}Lb+b!TP=!J)g4ggsF z0uV>V@tFJKCbu%*aeH0akCoa5s{B&8S%7o}0!*J6es+vY{^;x&*Zc6ji1zPs-EOTm zxypxI&W=5zZn50tV!yIc&D`bg|6bRrV!PU3h1zRNtZLze*1rWFSa!PJQ$&~RIgDHP zW;@YOk3m~A=+Nfl5%r%iQmGDfD?mP~43|kkX55~`_sw1NF%otrhTT*f%I55u;%VR^*A3(&;&yC5@XQY^i+A7;tJRqDCQ z$YC*PCW;Y*#^@|_)5|jHWrrQQR4H;_*}-PVdoQ%_)w$8#UaEh+1zg2g#YQR`9Jtv& zMR@}^+oDgs4cu&XJ{vXMY;Zm+7H+mRpOpzW+m7gH;AWHa*%07n6Y{A@fo-Go=BwfM z@5aZ@F@BDEu_zMxlrwGgd5kwk>2;x%& z=9YIdQ5t##aoR>;X%3 zk}8*X8u4O?jAz;kOkP6aM9l+7F=r(~(F9i8Lw&J0h?#a06-zY-`#N$GZpZ@>Gp6IL z!Z4VV^qyyKuiIM0{~{Bf+sn=zi@Fc zgj|h&AYQP^CI#L$2CEKkPuuo6Gl@YBf3SJS=_#i)@GM(%Q53S%1SZN`Rm8fYX|YHp zgCv%+FR|f^w$_z%ix#QNAo09c9VH%Xv`FI(5@B^nJo{ylCKx2b>X3LA%p#SW3>JZP zSUemSV&x1Lfpu6sEf!+s4HkiQSUf%!Vl^8q0_(7No-D*_F<1oFVex=jh}CMa2&}{6 ziL(%Etid9%4vR<7Laa7}MPMBk&!mM|1%pLk9TpF%g;?zdi@-W8o>~jBIt&(pby!!$ zu{sSFfpu6s*A~(mXRrvY!{R}=5X-hx0_(7N@-4)gW@r&uhsC3CAy$vUBCrmNXX8Sw zZ4DNIbyz$s7h-t^YYF;s9Trc|g;>1?i@-W89;XYjW*962>#%srF2tH?un4Tf;^Dgx zYnH(xunz0ZPsXrj8!Q6jSl!%Gmkk@;C*|HsogR;J%<*1;D5zJ#i9Evzb_AHEo-E)m zb_SC^Ycez5fMr^~jXp z3Xj}6$HiN%Ow>~6W6bb`cy&g~Z>z(fO#H7z_zaEk@j^JUQ|&1)Me2fmO@z(R zHMd&ovfg$R^T8+1lTy7|Hz_Z|S9G&`MElfeE|PO$MAFULKQms08OorIh{R#_5} zc9Q_z3oiN77~4 zfPXat-f9HA4FFS`!GW6#5^(@9(*nc+0NRgYhy#Gx79frX9q-?u<^PkJ@-{`ze?-nV ztyAtP*1ftTz;pgN9uZNcx7bSZ-xN}e1n`3mU?v9e^9^7o4DiM}Fy2rS>i)k#5zjAq zk`eLXXq04IJTRP)jMIbDcHp<02=#Ny=f8tK=GlVwZ=m^PAOJ!{0Aw)$QfvXRRsfJR z1;AR7Nzz*^pgYjQy369jis-Xk6$b!wEI=I3K}@CCcK^b*y9oqjiSBqA0Bf+XgQPMYb0rkRR^KC-A+@Z z7y-MWI(Gq|g=n0HEIj z#DRQLr+f!~kE4#H$v(*9c#$|sA^Etv1Tq@ARMDYf(fv%A_cQE^WVVJysuMhG#4r&e z8Wt%~9M8&35vX8+^^Yn;ZG8!;=xvuhQ5OC|pHAkot$-R!CgE1Y7r1rj8n$XKPFx0L-@laR9Ku0>pu`bL=`%xPW?ys&q0auK6pgCfiV@ zUKv5`4g8JwhB}4VRtAZ`bx6v6)wj`BoPQV)WWCD1(jE1cC=X3i?qsku3S{bD&cM%& z;7m~9GVY8?R6+j)sSlDP|MQ5{3)v+3Xa8bnlYE-awh@|Z;0#Pc1hfan^QWj=;!}MVllzX%zN#Cn|6WuBHu-a z+-34?7t#+GIv$e^{WZMn7xzP}%VgMZJ3x$0N7!PT4%@XWHx9AL&`AMjU|U2$Q(-#( zbahJ{X*O&j2xOvuRozU`?^QPw^Jn8zSz%_xJEIvGrT;E;y52aJ3JruIGS3hP01W3~ zIAjp1IPm&O3|0a2_^bW!ROD6W`Q8oy7H3Y^P}QvRhA$0-3PDvDYiPkaUWh#&DElN(0*i13V!WpV@_*k^K4iAj=}N ze1{wck5gV3({KjI+o;~&z_S1{-`g_=;4H)2HwIug_x8ajIqyZx*OA+Sd6+Z~?Mm)? zdl7Sx?qDIx;Paf4WU4Oc0}Se85c8-(KJ(wrCDqJc1CgSCmunE52o=im6-@8Xs2vl1 zk0{YKr0kJ0n~vkfg02aJ*l_BC9u9-pj!cj##_Kk(-fjq!##N8dyb%?-E5q109q+yT zn#dJ~EoPWZi0i`k4#Q+_To-n78210zdlNXhifRwIb8q*(y-wz)C*3_WNqSf&T&BBc zGBbjmL`YbJpdy=ehb19VAW^y4&7x^~2q=om77Q*Sghdt=7u=Vp$RZ*r2vMKP5^%%k z!xdMyKR=4ylT z?X8XQ>+z{d%B}71UPzzg`e2ZqJP-mE#s?7NeqyXdwRTBRVH-sZbm;$!Gn4-pd)T~R z^(Pn)ZzSJU<23~e#JQ>nR;M1f9Yy{kI9P-#FhwyygY~lz+TZvSEp^4RGda1zWgxi4 z-_C6X>Dvl2V=}~@L54Du?UzNdEO(VJ<*N}%0g&Ke?dy#YcgljAPZ@Gj;Z3No>GJXd zG0?=dH8plhOqTJ|-d1gO;Mv2fT^4v|TD98(Pqr{4Tb~77hH~oDt3G||gX>18bMCb{ z4;<{z1L6SS5Fa2801ov5;s9Wg4-f|chxq_;pv|~H`g(jhPXuzJ;$C^6CHG{IH+ci% z!`XPU4R1H`LE7S=_I4K^&c^Qn2dw+tLjdJmOO3S_(r;+V=O>~({!_fiqq?U@_nQSs zh-pDe+!L93Wbpuysd|G1a1sDO%AHLBSv&xO)?Nf~5)hpd?S}bJ=Z9x=<3$Jt%-pPP zL>qW}1Ee#@W4RK_lFZtZ3@u2glvLEA^q9407+R80DRx+g(qqE=0#N>hDD%?lSyf)6_j4UkCz6vRTo* zOrqA{%cbUM*NIzFq3~cSJA2}0I5t~fhL*05Mvo7!W{BI18^!Sm-83LwzX1iT!f||N zF8YmshNaG43;evr_+o?d_566J;Fqtc#OpP<25WaB zzIPU#ruSBUGTu4(cn2biPNa&pq*$55!y)W-OSzq8sK|e#mJ&C3q(L`FGH>&?RxlKb~&b-}V;4k+f=&--XV^5eVdn zvr+gh;tiH_@hwcRr4})W9&w7M&pQitsP4Ypv3{e={`Ul0Icu<;s9W!4-f|cZ}b7;0N_nNKpX(P*$0RNfHQo6 zH~{c`fH(j+(+7wHfVcPnaR5;B0pb9l?gPXDz*#;(8~~i{1H=KqIX*xf0G#Us#Brg~ zcq;&~Jis#+AYAHhDN3A4D;Y&tRIa zeStmWaD;eA;K%)#r235feipwnF0KLZ!}X=W;S&IPuR_FlSq=evuZ9~(&0Cp%nwfr+ znZ5==QikoVU@{hBdvAu*EdfCYCjnMbDLj=)hs(c0ePgvX*nGoV^Pj~yOh=qZW^}KZ z6VAsfPQ(dU^RcQ3?Ac525-nDKziYfNVW_38!Yma{wu9P&v)+*?JZ(AFWh=7#uSOA$ zmBs(-ye3MxK}`&fl~H~*IWSnpvbNd6-FIrD7@QP>T(j#6)A_6N{0f>Or%)8eoVM*2 zJ9ccDXq-r{k`7CqV(LxGUO` zM!?di|L1l4%!K3G=CiMz4-V-A=U)aIlwp5H!1;f8=%o2qt3Vbu|K-f$VHNn=+n)V^ z6#A22J#p@Q9OYn&lYj80RdOdX+>9{)0%muuO7XR&FMMO4K7{Of>GfZoKSiY=aQLk9 zc`C}Eo;&Do!+Rpi)kj>ud3dz^27)8C2Qf}mJIlqtM=I#|1LzFm1?3XsJ{3UmI$5ZU z8`TN@O8_krno`jC@BMraA@r~46o{J(psytKCknb}0DTC6^0yUq-vIg*LO-vd3j^ql zgkGzlCkD{V2z|GLo)tjfN@!g{*9XuiNWqg7^u_?1A!dsd^y2|E#~eoSW3UgoA3-7946PBgP7y99=*-j4un!Eyq7qyyF`u*Zl1 zj`z1`7IR{kt;o+dcVby5p6PWD!WisRFg!xWf|bwvDROgSeNH0N zCz0|!Di#)AjHSKalM-!~lg#9MBwi++DqoBS8(57WCpGJ&e16IDbeEIr8yP`~Yn-kn znB*i6?q^CM@XR0K{S$-DpJt0Z^sz{8d1v)@Z z5`|UQtann`N*Y<@a|^sJTecK1=Q3W4)R{E{TYw})zfH(3nyn+P(S6GslSOWt-Ya{I~}{#Mt(i{A>O z5lG&}`K3DcBO7gEXV=V*&RCK=VPndU z+lhM5BXv54UbC^XG39_H>8KOM*kG;49*^c?Dk*-6Z#tYw#|u+!c)g=hniEF?{5s*W zr)`w%9RnaE{V%lj6Gx^Qnu=T0obdx9`!l6pF+PAo=FrAH0?F{?vcDD7CWYWIVB)v`tmwp zAX0a{kh8W9q47){$IBCTc=Ril(yjf18>QSA;~g01faakyz!odOvT9_5rd%l zfyh)vKssW1i}|%kokR8mt`Yq4EIaIDhwK0#(cJX}{E7er!_xg0yzUi* z{UCtdPuP`&-5J0n-de(VZoMt-`w5em4m1iMB;aC3(tr&FoZAMt4gepW8yL7a$Wn@4 zN7$i&>GrkjKL>VJkS zjp6R6kEsm(a-7(<@=M$8@V_!o+&w{Zd(UbQDeFBCk1iAMmcmoM5M^p)${0q08{4G; zb#7)vK8_&G!TKl5hr=uCloS!NTtY>4qh{2YcM%iqiCAsnD+vQ9Y=@ml*bC?+KEg{0 zcv=Aj={FJZNL!3E2;ed=Lo56~%vxn4J_KwDR5F37|#&L=xng zAcFTNI1A_0e~nMV*3`EZ@o`JP?uXKbih{NfuyC*{d{C#*?UX=@gu>zXK@ond7rJ9v z?^G6N!*RNVpG0hK2BWh)aef%i5!(sR{j8q*xQ9a#?XAM6zJf$^FNC+ghb$`Vchb(1 zD?@Q5^eQn}(AnO}D8N?B#=F4A@TwWI@RqcoWNwE0RUfL_QPzv8!lIZg7Smys1C}&Y zeYPzE0imkSdk=o#J_#SOdGzi;J=`JSC`H9&{Zsn%rg*G~=W_cH_?Tk4b2pAW&#kLmH z-WyneU06EJc2A`-&{7iAt zcA+yv$K0)!tVZZ}p+);n=|YnNe!`SDe@nTk8}sdepx9W0)Pb$0aB~3P*8wCu2k@#6 zAo)3fAL;;-BWH)6YYAF|1K&9XYTuP0-{8O&h-S)}5xEF@V+Kr;eJIEAz4b#eJG~9# ztd$v+%S>SPd2i&$a4$u9%AK1O^5GyP-!m!brXZ+Sh2;F~s7`sgLaFNyts6)Wt zJPJByUX3B(%E0YaP{P_Oc$i;wkZ4lTlM{@p1Zn`8s&UM`8a$?khP@?3fy2to7gYk) zY0Ori0HVtgD?5xE84E^!H`Rx9j$!W&2rEuC^Mfk6Dk$uoronDI*vuE&z2voQ`_u5{ zKQpgbGD`d<@!C$?OV}N)w%=dn*_LP$X*v_AeQ=m^hgMOJ!dnF#aAtl)vI&bE88`bZ z?{_{9mA*=@qNvmc-KxLnuoh;T=&DjIh~wYP&r$fIgx_?Okncu8elbDNHj0t3?G%G6 zCI5h2X|U*_S%u95_D7b)b{=}f%#Zs7`;}k*R)vH;2@495J*`_nvj%8p=DRelZoohm zS_L_w3V5*B&$okeL7c5h!>M_u2ucIOK^EJHEMe`D|K`^Y37?~z3`w=~3BZ~E@UD<1 zyRI5LR~ve5(5*_GObmZCsfHaAd4ZP$p4TZav@z2}VUaE3bFy7xjw%*+hu@VgC74*k zvbGV(T4{z4@wsg~QXzsnSP`M6#_?IN+@EjYEzM(AD%p(k&GX>5*gVmDrB-d;A1G4Z zLgGCL>27u#^2zcAs9aR=PsM~8lzOb%Ymp+RY9J{JC#$gRI0D}>Iq(1#m}B6E$$@)X zwJ!+F3(B`@8z;qzs*RJgpf%hSj}|eJ_JMF%J5bzcJK#Ibsy&0G3a%<+)w-V{L?k9b z)~XE&gkptQuKKm6fTRpzkhUr-c}+3FKjA2q6t*yQ0U zgjuI+3S)j%|Hm~6Ba-dL^@;?r>V~0L(1PxLBr4Ca?S=|Nr-)s+eX~k8jT3aD-H1c+ zcm%K+lCh!Y+OWKgDApdsMe14QI|h~_P0T($Xx&r*Ue!jCr0h$Bz$XZVR1&V(@r z#&W{2-HnKVuKWpnqFxPXmX1+Ad$YBq6N~897}(xnh*SID`c6<#o5-b$+jo%lt}rnD z5emoW5%qbDADr#SN6Zs2?&ZFX$3o{-{IPC^&PPAOvK~5gVi30`ZiDJV%mY6K$7bt} zmU$pU#5}OnrK*P8N>Tgb0j75V(k5y%{~S6K@&}DPMFRwtzQCY%Peyt1NGqg0gVH0y zCn7u_C;!Bxad1~{zd9neOtQjTnPYWC+?gd-N93IuVRb}qv%lJ=4OK_vmg&{D&8Ipd z@66V!BXXOW)i%)pW9SDT`5Y*IfsE4!&{0ZLhP1)T1yKEXb^LH&#>+}C7ZW4f^B8m< zesphqvZFV)+aVo}NU*SN2OR;BwnI{Vz^h}h=#}$XbZT3rj4R_lqlSA%4fRa>P#;qL zxi7Tm{%RhB9TsQ$wgcQv@FnmSjsaRdP55j|8~~i}1H=KqY9AmD050$W;sD@6A0Q3@ z-tGg$!F{RkgQiff!xmi5fXqjIp9BW@{FI-J%b|%62P!@swi-#JL5zhxdLIFJ$WR-= zlF+?VWiF(?XL~n@Ra3KL=Xgchfe@;0C15H5C;J7^a0{PGjV0cV?o?G zG4dlpR`2p7iUTPx_5tDm;N3nz900t>2Z$rcvn$B+y?z97AjKsI1}abYQx7 zIpBu-B5{@V>S5qdun$0oW(dcMIBMsTI&D^Zb9w0#wvZ+p>ZRECRT}SDy4@sxm9<_% z{BineD<*r330o%Tr24=jkyG{G^NET;klI#4NKJD);9{?}FNCIuB*M03I6p9+G90UZ z4vKXnz)B_HZg}bLj>JGpqzU~o>gO_vEp@W+8}r@@zz{|Nv%!Z!uu+T1e&sua|AYY& z{zHfNHpHJNH_vC?EocELG=>*beNQnB37D~paTpOuzJ+CmD-;Zv7d8<3Q6aLgG|0_B z+#L}xFa*&ktMu5Wq!TH!>UwD*xu_-*=Tf3X)-@yo;Gk^h8*T^?7(KfNzKKDYE65UZ z5GoZexd$<{lmj98qFUl(ewHwR5L}rI-YQfpAn?W{CCou3Xd)A?2|GXDDu7InYs5Syi+Ou(J>&d0BdrYyKnHx?3`l9qP?K#$GtNo)$q`x;6Q*%cZb58238 z{>_^gicCY%JoB;)5X#eS?dvzyz(I!`eXO*aF7rZU9UsgOsFuvCPte#w6G=N~R(fwo zbZH!+!O#TcbOxC!p&8M=#EeK2gBZkTAy~*egK;4py%f{qr)LO#&IBRbZA)zEmuU83 z=g0Kd_jf7(3=NL^Uon>$d}t2Ey8E%HmE!F_6|5F7txN}WDnHYt^6N}zDc>xerQ4Zh ze@B+O0MKirf-8beHb$wx1C_x_Gz52m7bqeC(y7`vJ?_?vYClz25);)vS&~xfr^cgp zz9F^oL0#i>;S5w??t6huI+B4kQZMXktTouSw~HD4s8rex$w6lrdqS(*Kh&;nH$5&b zWKR}0Iw!(9h$g(U+nV$3X;aq>X7llDvfd>uEXKkLuqLq9(F~~eAZVEF@h(MJsmsPb zc}wr+n?cb&ZR`Q$EnM+xaK$LNqE@)520A;i7D~F8A*-m!3cgNZQRt1I@pTIKg;tDB zp-C(3;~Q7_Q>-`uSmOi40l<|$KpX(P&j*MDfVDnA9M2ggBQs>k74P07VDP0OlSlGe)t z$wJD|5xgro1h~9aa`u8%&{9g>o_uNRR(==q^O4QZS?N1t!!vwmeAw}wsbPzUXkhss zUdp?3|Dl>H3FVc>=zWLp zEyiO=6h+j+be%-Kz@Gfh|?jN0c!;uTvz5IM88n%0`J}-+`() zBDpG)8^{>y?%~T>SKPdMB}@GP8sGaMeiDUV+v@=iXDt%mjU5&CTX!Z#hu+nBVv}Q^ z4a?9esg`XN)|^TvPKO4|AqS)cO>L2hpNE`U`y>i62STClkh+26dXx}!pLx3b7{+VO z+E)=1XJl~B#bqSn&PVac=0f;z1nfgVlIwW+Zcs{#l4*hnA9`2l%7yVn7RoTO-$Wyw2zIKKnk&nPk} z?b{PKd-C0qa|St&6ZmqYRUZRtW!mn!b6KY4UXL7S57iz-o2mUK_k%#U{(AJ7Rj3Zi zFhi(C2+vzM18DqE{RX6nTgt%P&WbphO%50cqD8WC*$Rm^X3M8w0)Sz>%$SDfiBTl2 z--{4PFDu0cXq=2OF(k*Wssmf_{??L*+3N>Fx4{A!PRgsY8;Mmk*Q3bH2}{P6F&LUF zmo9^&WF#Dojjgq1^@9UXsEMkB#q*k>wSFCZ!|iO+JUnF{uChViV-frmqCNyBpE)Fh zT$@ST<>x?!n0a_Lv;Pm_nx2kkU@H$!6erLfVcin>ZYNPqC&j42N%HW+!|4h25cWhf^-@Lc8C z>_Y0v$~-w?0>UXITLF%1((uJz@fX0+)Md6Vw%{C#^jlKe6FXRkukmg|SvK}JD%kdF zPrJUnUh-4eq-{&}geZDKw3^1A9g1^e(h~+xeHhJV1HE(tZEi1dqJ*cDmXoZaNmH=n zt&ri*z>f?lrD{!g*-n=wM0L7wWMXPzz_4*hrVS@}fm#|(=uE|Tsx#F|j6I^Njk=)` z^@4BKg54lsgbxQ(!PU-(#}+(;2E_6n^b*wwl0+-V3LnEed8irx8Tsxxcw=zL$PeI~ zz;_|OP_M~0D4a1kL!j*(V-{ToT{G#z&e|Mf23=9Q`sqSz%`y6h@<}6G?OXn)JyaQ? zh3?HDvG)CbLB)L7>p&p-= z(ml--RvHynirhHI{S+vG>p9?^({On6`(U*_Ni(CFsNp>bK=#r)=F7p1eIvi*bkS@K zZ{*#Duymx1+Xh1r0>CE<=Qyy!|1e|GM!#_jYLy*dXu|msI9tp)=G}+1!kN?YaD(>K zIu4e~G@&-ImX0evUFcWGaCHO&xw-Q|4YAnu2PoO-*oEzAp@T0xl>((=^J;#wgmxd2 zF(fESJ@eg|F1&kzQMmC@6ds%!R^Am7$@>^W^qhfJ8TF}~Q1NwJwL?#$Cut2#>z)$I zU^MRoOy_+R5!KWqRaN%Zc3~E5l*QgUYQS=t2G{t|q}q00fn*33o9Z7c3+6VPYL%Dm z?uS^G_d_5)&D=blWQQZ;JqkcfYO;cQ6X_1zrx!+%#Jmbt6~=|UKR`Su66FD_TTvMK~sNBcR@V*J8qJYvqTz@Xp4f}C|LdshFb|4XIw-yhp`e+=Ip+k>WILtEY zIOrQ6+Jwstp$5gRg}~IPeS06Qyzj-2cR%KV?oh4kZ`g_dBw`u@c0UDYcgVoilO5@p zL=x+C#?VIW(;)}bqZSdN+gIdKw#QidIAmAMUXs;(bF}I=q9_gZbOOP$%2MIfa{tH2k?}DX! zOOUK^5Nw=TdUkZKiiZ=p>Ztx#n8%*Fv`Jx|nV|Y#MdW#Z25~S#t<4$OIq4H7dboP;K~uVc`*L1S_6ZW{<@|XVN#b~T zZW(#W!pyedY+GU#tmtG!8xMoR(jB8Rn6-hxJ2yGj<&=EjO-AaY1k@_)!YL0>J)}U($24U!j0!WL0=+532Cb98K zH`-FlRrh*cOPW3ou7m?0&F`UFxISqkK8DrcMK<;n-H`9HDuw=;szABIXmxA z?JWVqs0-J|(5%b-=q9(bu#k`EM~0K4bWo?J6b@mL39cg!PbeIeB1kEho?@$U&^NzN zjAZzFUnl;XttW}d9YiD#M3hXh2>t1L=7nqPu<}*$??fE$F8m}5=U@uF8?IE$Ywetd z3x|Pa$UQ z&elDp9ezLI(95_Slf$9o-mdm4X=D5Lb!xa8SSptu_ho``=uWgZHWC~em}a(qa7wyV zgVUsU6g*b#YL2xx!wL2Lt6BUVs2=Z!fp{#70Hg77#I|a8GveD2qX*~y$+Nwn5mSY| zafLJ+QFf(HMx@$rUjsGN?Z~T$7O=cG09L>%Fv*7nNVEq*G_#%V*zAF(l<_cd!8k18 zRF-!O@@S3MrJ;S_@7FI9qM-d@)UWm^d;0xIr3a+v z%m^L#7KJZ#TqL{b>y856Hv;d;gp5Nn3<)64$z-N8JdJTuZ1@evfHz6`b;YpFYS#hTO}4Gw5G$fb3vJoq4Kt-wzNQ0{$Bj!xXiD z(WcQZyx=eYjlhy#_Yng%S3xrH$8|O|bb!zQ?9ev=zlHqo9Scoa zwR>I+o!O@+%9zyOy#V4ZCrd%-hQVA+rdgR`byzP94uD;DIM}2tZRSVkw>o)*>^EOhal@PE9jrYnsvP$r+&)7peN;)<>zy4@upV^-AkU@H7cl zs(HMUruv!3Y1J@|^FDzvw+RpSK~1@r--HZj)|x~{w!3DUy&`Obm)0<06jN6C@N9M5 zg0d@Hg|dr0;NR}|DV~GiD&@|~l6V67a>InLo zh^A*xX~x6+4x%CHvnTtbzceGp`*j}o7q$=PKHbr|rn;Ul89)Bu;+ z)Gi_cC~7d zMq9N22L5bQnzDyV_u%Mz5`iOa{(2h4gz6ALG2ch)3pgz*I@sBt{!q8h7rP zYIh^Jme>M;6O-R0(xE&<%KJEIV>DP2Cr2t zqYz*;2y}mj6t&~vubqY;(fHLqK=1W|_lxv?E%4q=?|p&yMV3u02{~q~kO6Ejve@H;5M4Jj^drnApCU~LRs-86QPfxU z^E$D3CQ-(Sq+WoHmyG6Lwa-vAf57}7BXTrQ(h3H90(1N;Jc7mVyg6ogB7~E9d{{l7}f_urUEQY z2GNsOshiwnO|xJTw@f*14*+KTr|0~OKzq$wzK!PI!8p2p+vBJYd2u{&K4)8nmxRY- zCVn|v8(A4R?Ejp;uttT=hw$B$(O`Lfo2Ovl44LjzGUP1xX2qk-(8)Sq!_2ui0*LEi zV}{w+=Fa+V*yrR2d=JbHg^(S7&_?-nscnOrxMBZY;pTmo(+8NBpaG%jLEt#_9?S)F zn5C$ZX?}+wqrngMN3zOK-e88_gnY2=fH~^{M)%%Dyj4_)-qm0_=NOrdzrsFNaX-WT zD5B}eg<-3NJ*jrc4D1oL{HMeViP|-2G+%&Wx$j0^{HNRW^Q|@|9=NXj%YfkJZ9!|B zqRV-#&gRT#w

    N2Ca<5+m_MYeu;Xv0WQRA3BK+0c=yieF>V#-__dYDh25+Ygfdls z1(_PqgZ@*{!Dbs~*1ZiLw3NFL97LOE;dvYP3jjC2i^@Tb^f^Ys5}Mu;%s7-w&5!r9 zaeE}@kSRAOtBs{UAv-)>uS421&h&l;eITE>6dKt6!A#D7QRiL| ziEohohF>^>fERT@YKjEpf`DEEkYXIAd>VO3*pf3n`r4Bes1@s32$LoMMsDK$k zfTshRDqv<1@Gc#2y$YBW1bm`1ARh}telRH{9)wUlU`;3?+;BtONWetVop>C2PFN;p z)=g~Ub^)a?T%iU%Y-}Cu@V*C`At7drv=P`S`u~Z?7?BfT(vC`QDw;^)oq^8+840A$ z!wM~qg+jP;+kr(qTHgIU`U19dmGqAGiccR;)m}sroMl7q2$D_^92*$mv4NPj7z94O zBetQ2U=Qw-uKyD3D;=)?4?ozW&v?Iri-tKk^v~l|>sp%<)YGf`pkZk-@Q%G-cG7{D zW1P^vE?L~?AUM*$zB!GXo}&Xd-?jJD`M`&v1kT6psiE?pZ2_G4gXTbbgV6 zKT?4g$D9R{MRt9%H2(#a1%dNnOdl$LM#XydAND$G{=+&8U^4$}h*-W#2Y&U-9~N|` z@B7f(C9iv~nQ_7VFRADR&c|LtsC=r5{?ymzUON9E75Hi-oeyRbD!)<%PCWX?@8BBg z=)h6V;K%3RqtGF6xLlsCqO5&%%TMNysPx}E{^4imb9GyeF%Wxc1{#xNao$mc{t-(? zK&J=L`Gh{Mpfdv~X2DSTUIisnR5_rvL*-8^C>fW6{*}yK|w94wY{qAng4wI&3PI8}5}M zfi8y4e<9KfrE)tejw~QoStpDC9{0B>EFIf)@@x&g1`QQJ5A~t zj1T=oI~3+k{LhKy+~2XJ5`tIDNy6wuBL8k8`53% zbyCkR?<)DGnp9X!t`BWwciuyHP#;*RvOZIHR3C8TfbW+2>mMOLs!6;X1h=V8u6qi- z_3PS#*6Sc@944V%*aMgF2(Kyh3W<>0I&p}+q*!x{e~+KgVo}1=d&dtbjKkXC4;V~m ze-)z`r=-br!EJ@>ft4xl2i~8k4Wi?9WZ64>H?ILwgFMzZ4!2I$x)pvw|6lQt2NWbz zUIr3}z7(GRKsYlOUhL|Jr++a#tlXD`r(YjFRJqRyPk(RtWV+9&6;NiIC|;8}nX(}F z7$~c&wb9Ty%2&j*cZ7Nup%z6OSM@xDs&NsJasLY-;6a<8PXd$A$y!Xr{X}h1P_;UA ztZ^(7WFb0Xx_?A^2yulRUj#8??w2HEoX39x@#HX<4FUA0;o{NQ3Da>8KwKOga6gN< zrKvE)N0Withx{tLlG2Za6$N9ow*pLe};Q zpl8yEx?fdwi+X=W1bwpRCmr{t5r=N{6IkKwq3;YKJwJ|ezObEg!o_J}5zkv1z`~TC zgk8)Ry8T_%tYYdgsuC?BM|SCF3c+MyVN?)Ig^RPbh27tPURdOxQo0Rf3#izQR?;`Nt7X;RM2LOWeXIRqdu6CDd0`xUAbPn=_Sd0yvRNK>*I27bwk7V8r_=y)r^nTYK zCcs(N8NwP`PH7k1yaH;7=0AVSqpENHJ8q4~#)`c2l}w*V*p zGwSs?mcZQ>mcYvCw4BrEoY;upY=z6!Da|w?xrra*vly_?5Z2QP`zv9PQn|&n2S4sY zP{o+|4F+XyvC1Z;l6)T@WaC4-6!d$Y(5diJryLHw1^7aYaEzSM_zQAd+B%$=^@;IgO#Cm>WvhenW*mO28CHRo z`n-rhkPzh?a?cZ-&=m@~8mvY0vy3NziB0r>Ui?DD1}mf^5HRsXD}s==!Mf=P1WY^` zM94G;;0CU{@iVKL=g0k~^eWQg0^s4`{|uh1Fa#4Tw>WbRxGwIWV)Kms3a2&^L>%yr zL*^P$_f3%G2ud=DrAHYgOl*R5AN!TcY~r`5cW!a^8pFs8rkXPm6l>1Fukz0le;v+VI?#JnOBzGAaM zwPHrjut!2&n2ElE_|p?+_DUXun3<0B;m}bjKJXqkeWW*yr)$|yvz37@;JVjj;^iM8 zB$hNmaDuPI>L6Pg#4c@Q#E!;faf`!S)<|DK=D=~K6RwCBV36b8;{PA z+7&ESW$8ZQ{rBXlWcK+;Xcej{V@~x8)zcfFL-y`{98;=;84dRDHgH4ww|6FZi}b5( z6?b51+&+P*))hjvQWUSq#I4?upCco7uU=rVxWCem+eItV-#Cx4zn|*kVGiKHM5x;D zewW2#;A&TdH!u-~5it|F2^rdo>XksLU}WqGMBwN(@#e~RTGc>q;*~PNm3N_EpeH=B z!=6BuiS&e=frpTYmHQw{M0cs8yOjR7@V01iAM}ItR>6=TqzAO6f|$@-%}GrP2S`_# zWk@fW97oj_gpi)l8JbU2XDUklJ$<5&ed03Qq}ccaScB2{BYq?9L1gXPQ)v>W`%PZA z7lt54pmn7j8e0+u{k2mtPRAFI0mrGy&|GD5HqhVb~B%IWl_ zrz;Mr&`~Ie0Sl1;Z(yp8;0=Q9wu5IaM+8$!Q`uLM|Lb+W3SvoUwIXbIXs5{NL^?X< z3HDq5GbVlxyt2zw!x+L}CmsWi(i;r-`{)yR_la!2g7=Mld}1Se?n+8yrc4l;_OC;~ zrAowas(xf@G{~)Ui!0`=*9T;2bcAFpW-BBYq^XdMDmhG5n2TA$Y|G&@i8;Ln(Ks_8 z8b26ZkZ~m9#BGdy#l#QrsgPr~@ifIjO!o}%ib(-1Y+wtz(vs5YYEI9ME>WoTE<

      Ab<&yh;Imz*?y?!=!fQ%KnuTw<09Ec4cL8WrdQd)%5oxt9Ln46Gu&!6GozzojYN~ z$POt8p3X*SwmOVyl2|A|=8UZ7N6(^7AqG1c*a$MhTwJOF!GHus>3HKw5g#WpXDu7x z%T~afU6JQA)hk^~mI4PgmPqWV4^D74ws6ymZA#xLyiurUUxBrUPe2ti@iC-}trgRt zv_0`@@l|p89M%`)gu+{eu1Kmnnvld#VoiKTCBc@KP68Ii+AJ8uXjh$76@_7}&Crxk>Sc?(rivLDg`_qZ5iHL9EyYH<%nO+@M43 zLSG=$nKkx`o#m?vn6G zR*h~9Jj(vrIoLaVlo^V*6fxyGB=O9pA&@Re1y}slgDe{aH>-k7$%L@?EMI%9pwrmZ zro^*#D))y{4v}qyZEi5);-&VgsU^+CuMwfT;6x6;%;Yrl4gna+Ol*r!4l6~?zG38< z8{#)R)Qgjd6F);{*<}%B{#emd4~3V-BaDe(Y^zFbQfU@bXCRAaE8wN>w^;$j zf7J9KnW@E8q=*`F1Sp;o2|WXPa9w3I)Y_7bSXB*GO~pzxl(Ph>ogsL=FkMxT z1}=i*Y!NPsaf`uVQp;QDsR9BgX8aK|Q;2GJ^>nNou>daJr@|!t^INAE&<@jM7%=k+ z%r~T`d` zEhba$z_LsUM1xfHV3J^3guG;ZxA1ZU?X^{Q9ZdjAN=tO$XwMygahsFL41jkqnT#7b zC`kOtM8?J!FgCvWcaM!xq-t;a|BSJrn^$yxaIxunglxfe;lrDCwHH;>eI zFsfd+qfymA=jAFmJG@)lNE(MndcELLmHR|SQyr)n4I-gN(#BmUY7?$Yk>1Wk9wXbRc?jRi8Srqk#Rl+4qM8LM@6EgK z1sQHxh20Jkm9IriLm{!}4v~O%SgN``d2rGYmUYNV%v4{aZd5VnpMp7Ka$y5QKp+*N zb!wAb^i%<10q<0+F4~$waATd$<|oJomqRx=G2sDni8%r5lQ5oJR$L2f(h6vphJ-*S zM(>(5N@kHdlP8eL7*>wU` zlr;+vYXPC3P5J>45EhmYWalcf-q!IEC8480azyln-w*~MC~qCeO_c4Xe9sO7$FZZi z?L5c9KeiKsRp@p?cHeGD6j#qK$YWSYYdBH6TE#2a;;HhotI-0CSIPWhxbP3^>iu<2 z+i5KdAtr8l(qhSA_Y@~GinSnw$9Yu4klpX&aU zQul#e2uwVRY%}i92{<$WbcGc}tyf=-#^OJqt7J+3_B1UFtw=sL7K!AijwWhXafkC9 zh?J|k!r8G{S9szPL>uj^{R{!(Ru}!zj$Fl4VxZBqk&zK;{uR*;=;8RKP}yW}2m9a$ zgPQ#tM}%iqnp@~XM1CbA1#d*;2N5ZB!pBfyMCkkSJ)uc)RcDBOFYLHaX|h!{NNtaa ztf%r)0Fm^vUEvuODT}%(B;cn{=b=~a1T{sg*Q>%8H${^dZgO#FbVZsJ`3(0Lpf#`1 zl{Mf5zPAfcXpuIv5*uO>5XEXvA!&q@DSCtLP{)eTGwQQDvozc%kY~xBcoIOUYo5TT z`Flo?q?w*f#yuY`(}c+$)Bc%3?mb9@D-783#Kn+1I;5Q&Oe?tz&oq>WIS)f{myn;( zW9B#GLj0ywzNaZv>S+q~dK6XL5@Kvvp!1`V9aqKN#a)70s@hDvoIygIkq@1Z!p5NAT94k1* zpvFwAeHT&?ocJjM6~mfU?ORrvwG0zEdt4T4K6Jt*+2zS-@2JrWi|854mLibTcrj{E zY(m1N30$&>|4*tyl_f)0kJ&aYV2VdnIpSmXR=U2nFsk~P_1xP~YKI!J6-kqV-ERP~ zwk*l#TDuWSMYz4lTX5@P_bx`}QnziJV@DYaiHJHIU=ov(J+2~TbB2kEQR6QPya8jn zGzj&0GJK_1#7%3CrBre4{i8ijaa+y(Xj^l)a>Lxo>9mwFHC2NiH~%`JGP#oJ{Spj{ zy8yXi7?<~sqb125r6pl>0$6Swi$}>;P`3lru?;z1HM4jW*L?^~tWY#E;L}vhnZ4ur z3~o6Eza?LFBAIKrcfp&m)XX&Y)OH9H3v$y2st077 zGTlkvD4{O;?)pEYIruLhTTPK;)@sT$`M7_$j(hQZ$2`Qq=ZT_xZC z+Nb0@qjrycXV!ir-&r-=V)}ecC0tDwlOI^k5u6`d&8as3mergd2i8HpU(ME^wVI3} zvs!e(tGW4@TTSI@W;Hibva7kPl3PtBZ@zmqH(YyHQ*|{!1^Q}=?jj^=;ia;gO0&T3 zXEkkk257*yn!7?nl;~z;+~1+wh&$5eo)J;-%MAA#ZWf!(LG%Jjc>~wlxSuOre>f5lp#fD6%jLQm+!L0M)qjKT$!7*Xfc~a#lS#I}x)#-Rv_gFY z${uhh`FwEK^D#n$z~^qt7WMmJ+K44n{nr|u4Z%LI$TFJ}hB!sWq0P<5I)@kl_MY z%kZ<=O4hRU1SWeClVi|+7~_&m%s^FEj?PNXo=XN?R1OnO&3U>}f1mRNZg3uP*L=!3!kg$SS*>UubRy2}J`(IFT!EBH>`#8Fs{M*)$ zkSu)GV>Aj#TiP3xq61x03V0T7HvuyGfaeH^u|G=wN9`>C2CJ2$2AKJI??B387gp1I zuxVJef>nP}&3%kObTpeo{ubYc2z`S*!HqKIvSe=M^fe~LysXmsO7FMzzS|2O!W=nKz)yneKiNMvFBwF0fk~r8w)p6kJ zjH5dMdw%;(u)Gp>`*TniX!}ykL4H2}cx>A`|>FwtZlwrIZ;?}>-1xLDwul0PFiw%`XE261yONliS< zfbho>p#f((Y5~Tw#t^^?IFTw3?-K+kF5S0`2CKr8#D~N|!^`lu9P5HX?8M>Suh1*e z0PtcAfxmuSlv{oaez;)FbWbT9Z`e(#VN}&u@N&XUVy2KBlz9jW{Q&#w z%8J$&5)^B)Murm+`aoJ80cD41_=;29Iu+F_>Y)autl;YbP*Ox^;W?<@1!qEWZO>c+ z^R(=e=6po8vaja_^oKxE1NMMh8}LUJ) z1|7BPKrY)H?|WMcYEFV){O$w+jLDv^$QT|1kOa7~f{-4sQ`GEx<+v(JN_i|;E zV5`q?-RPvtMgIo67`pK0%g}I{!6c0t=)~*X4fZ!$PK9R{rsPyB-iVz!yxaOO8yeO; znh{aK!f`zgg(3%aagehvfIA-ajy3NA41-DIjTX4O$~OMtg8yX{0V7fkf>XiaQEV#l zbTGcWHbuCO@DHOwcJ4%!Haccia2Ue^lL3TNwgorEGd8RRqx+P!wv(FogXhGc!*A#* zGgT|!4)A{t7tD9bfMHKv0JSD&n|)Xhu(tfnIdQ9hxwu9rkDjmp8%B@liik-?p;1Ar zyqp~tvk|}8D;ViAEH(QQfJgr%0Q&|!r)B56z@GD6;Ln-nz6dw^R108N>_2WEQkYMS z5ly2(Yz;Q|05!D`Q_N?7p)MG8UOhUN-=nSiSikW|Ld@6RtNbP{1{%htGzs>sfWX8Ip1CShB zb&OZ=LJM7~wehkXg8z?^Gc1ua3{6o|H?!8BScI>&c1fidr@PjoUW(pZhvq74)7?&Y zzI&w9E^w$8+eSxmx;K=+%dPV6{Ip>kzg^YBl$q%+@teH`BcDi5{ZFG1UhZ1Jrz+cO z=uA~Ka=JjI^i(|Oq@*o}!&!|FOrp{$@Zi_f%2s`1PJ&b$KOe{UM^;VlvPv|vqyGlc z2uKWLn%6uF*i_M=YOp$8T=%p6lozcidK8S&)=ZHQznW~OgYvg9DNj2qI9 z@0qb7JxvRlY5j%SupTBH)^d_f_-9r#P+hF!Omor>BDW3lgZ)9ijS-H4|1T08wczVO z=$)2Xs}OS1fvYF8RzzSe`o7dih}4Z6SYL*^gSTaesq>aqga`(~y5prB5=QoIQ_FvWy{)KCk{N{fd){FIO9^6G1{5?$$D6H)x zp#g{(SPtXOJtaM6{IiUaj`ck6m=MbHY=t`eWrdD~kbW=L?YQvrU^wj()`yhMRU^}A zjp92Guu$?=VL1N^cG&L65ic|U{J4p(Y|`dJdNa3YNA=QEYy&W_NBw9j&Y-|8SWUOB z#Klqvt8b+d6&*xTMTf8=+6$496)u)oeGDc=B@tByIc>oj6`DV2rwOMv^$;`%8v>~` z`9T4!JdF1h4b-nJV0N={J6}e_Row-i0+8N<9Q&4o>A3};$E0WuEz74xUL1UA517Wd z_hYkUHDxXYI67dzAb@i;4h?0RN5f&58=H&y4R36oz;C2^B0qT1;UxJ+nkUQGYA)fo zr+F+sN*5CgeFBP-Z?R2z{u}EpQ!2_QDMc@XWkkFoN*T)(rA*2crA#_(s^t}QEv8S;@dg)|THmdW zm2m8uIx4I&XH{r)VJ&DtGBO%OE!HMBCZHK(595^w6pfIe1;FZ5d)6kSI8~%Q5GI?) zBMs(L_LcH|5Hj%W=91!UBbuMOq*-BDTij#l&#AcANZf@>aA87J(a-KZp%u3xv@4%0 zv3M;orZy?#4HRUcdZEXO*XFm$T*gaBQKLcJ|6^LqXpnTR=4y&p6oy)P05Wq>_&t%s z!S9J26sjlo3e}AN*Yw04bhRofjrF;7nX%{DEqB({l8DvTvFiUH=~yIGTgMV_N5|?{ zLk%i$hT%coLc)ouNu$E|kTYYyFCPeI??mVEAR#9fr4CfH3DtqSFxw#Y9h@UHr`MdV z+t~H_>K`t+^b&GnQ|b0>F2q0xQS@=cARWWIz}S<+c7UcGBq^LOPy-tl*uolRl+XJt zCl)0nl+XPemfrtAVXYy|m>sk=8k~4GYNGn&It*90IpLY3(=gjnqlzQ-*tv~>?va0@ zXQ_^?dgAa)*jca)B7e%FYX7uo&E8^*+e1T~Q^TS#XG~ zYIoTptfs?oa1SvZfrFAachTUatUi{6gA4|bdl%>?5N@=wVq@mobX??`@Y-~uP{cEW zRWP713K8Lm4~VBNUpRtQ0E8pz-XR@f*CO9D_8|7+<4fX^L{~T&wV+U=wrJ|w!BlCU zgM&bL+*{-$rcpk0E}$Vpov*T|afoFqBqQ`qY}BV?WxP}c_3(C5#xRG?-4F6~3<6V1 zrF6oAe~g+cJfA2}m$SGSO8UDiG*v2;SQ76-jqu2At45Ff^jvG!`+h}s-{*%q$y_y^ zEb~UAAjo$_bIML4id$b%B!0VebnZU;$aEn(yBb5gGGo8fUZ9wAlCjZK@q-dH&LgZ$ zS9Nr+pbY5@zR$-BeF9zS(ZcK?z;{Gr8mE}xgx@YM?|ho<O66sy;B*(%|vVdOOyBrXkrPz3u9gPl#>?C`a$*{p%aDNcE%f?ENBfcvN0f5Y) zE2+*Xc4~ZOxbd#Xz+KdGi3zoGi8RmFH{UA6PxXs<}yjL62G2U<79?vMuT4N zEDE@Y$k5=>oq;~j3N1%@{0B5z1?s$2Jlx|G!MVdxyp1&w z*wu)=%8U5o1-#In;0zze-)@+vZpGgN_~YrLTk%(b4(Ma}gLWf?HFKzZ27Yug9LOaj zI%FejmOCi(JkJ|a5vM^kcg*^hIBod(;T-&!{di3molbZSE~0C`UYwXSXAQs1$ftB0 zu#nnsP%ERs2(8nTVzFZMH%|k!+#?DQM(A5U3m34En4{%Mxy+6ExiHdpa=M?QdR7WA z-%ht8@84hVR2$hXWKbysZS^0a>j z*IjC(d~Vsw0d$`&XDoSh^Hh{+^s1siK>f`>N+zQrS?vn7^4-f&K8|5kRPlYP_}ss# zc>fwTU3$MNeVv?@mm&D~_mRJ&@~W%ovV~eIu~MGT5M**gle!KM{iv>!k#WMqs=~f- zoiSJmUdVcJyeCMb;*`Hd-Ac)@lhN$38tIzlkrOuGz=l^$DsJSHQZDYSo29662{kVN zcvlEG+4hIb*1Zs#Lm2_x|6JMsa5v1yRry!YnCBm_`!1J1sUPMOs(9z$RD5SglEJW@_1vqIX3-fg}u43&q6K}*P zx@O$s^@|1I6pRLYO)-o^$>F|eHOajyxmK|lj`oe+u3{;{8u~m*(k@#okS+79a;qI0 zXy}PUw6BdsVoi&kY{`WCc-SIPB8P&-v}rBFA?3?XpHCN@ViB=u7{nT?^@)x1U{3nV z`oUiHUCj!LU9$@*<2&5zO2;DHhqwR%Caha4YcHp5_2A*z%CT5#QyD47x-fZsM8(Ri zjf_J@0E>sNXeP5E1K~NdHf?9IjD{q{e4NPI64on7%*FrI(O)?ctWU5S89`9m&QDE; zgQ(%PrFc-n(@vPHn(!zpm$s3wV{gbJ3v`ims<4{_%IN%Q!iO6IDKM*YQdva78Yn#W z;~-jiZ7Z5i8P>IPQk7$k#yfy)HZz!xY{;f#xpcCyr-ETo2vbWbDz+9kI!88O{YSMy zKoDNr`#squ#6xzZ8X^^EcA;M}PbZ>_N#i{T5)!xnZwM0eis;DLw^Y>V+HTxy%S0I< z65fFJn4WU%H>8o(+XV^`o{8!zzX8KfBW1yU>QH!rP6}qqb|syNIti}yyBvE?*y$=5 zj-AGn7#5(wj07Cym7Amc+xV^G{Rl27ovxAL!fv=ndk}?5ZBa|Ca@US#(UBEkEh2-$ z$i(Ry`@Y{8U0pPR?y3x22O)J-4RK-{BYZF&-+-@A>8{GLvEr$!j_6D97DK> zjji2Kz-W_Px-6Z(x;Eck$uF$5VnyTaAA=*esjwgn#6a1y$z1)RxJInn04RT(J4 zWc+~an~*Xq2|31)HgXCzS6Q6{0ZU5%qv2U6!6Kj}ixx7_i%18l!nC~wN6hFF-5_hn zABFO+8lQJBh^1A#R&@XOL85a~U~t)S-kI?{ct%p*Tf`#8G4g5mP_pF4`D{rTEt;8p zI-l<8iG;hrO9(X@tMTg|h-h&OGEP@lr1lGcIx6&9`R9itu(2ym1$>`)VB)3Uf=q^Z zmRiah7yzfAR9qyZZUCQHg)$}@_(3y3yRnU;O9((Qdn+7bwWeQIp~uRpOCE zuz(CM`;liE6syz8WG*-5Yzpf#5W*@~${T!W-@w3w_0KQW;N1f-$&t@%@XG=)dqe=9 zAAs3M^0Rd8c>$Ph8-RxcFk4&WRs&wr58Z`wqDUPbx(E?Wb0D-j6gnYW>0gZ7o^e1$ zg}oDDMtwaxe)AGK8~nv{f42ZKTltIzBQ=$Ejf%t^o0LLmt8y{EJjyx)_b|K$$>dmT zn|nqk9KdJ5YDwa-Ul=VN$i$`0aV>MK6ZPi%Th41+&YS5R*nb7y^1X#l|A79L^n{xq z<|pF57Dy1WE9gbz9ZjTW8I6y?FS;Rd0PsEnYG&U^ckNT?)U^ljqu=Q@n-YjfL~7_l zkPk8lB1V#k*pHw36R`AI1?`PQK*Vbp5#Jm5W&I+dkD@&=^Wpq+1P8~O*C9kZuNNoY zv5Pk^hjZdG{J1u}i+Kew%XW|Cv1>euF>W*%MPXtzq>}EDsFPiPC4RjqQW*_qXnQfZ z#X89vyU)nfgRdteX zmLzOJ1ym40K|4`MfDD8dc~A|gDJn)$zy%~Ij0+$jpoqITm1r=~d z5pZD)zwh^)`(C~3?gW00{{ElOzduR6d(Yj@J$F0z+;h)O%H8Vs!U^Lu{wq-`qS9+a zhkg^hg-j0?aH3Ec$I3`Ywv6SB6$r9Gxat)%t8XXe6xI$HuelIiNPq-up@?y%_;b};>2CAILUxn}Y zWFOPgE9yHCyV8cKSetby?6LGpBk>7h(#>=}r?S8<7Nk4a{(8ViVZ}wfqdUVcwTC`t z*V*@2V8P$O)Wq$Tz>Rk8Sidb?%3+QopDEI6Bp zNeeVC@3P;5^6wJ*$N(TkIOc;K`ibey>g0e976O_n4=uF(JX|PL#&DhUsSe~G>8=Rx zWB#tRK1y{Dm$iHmg{HFg`yR&~;%&=>Vc zSlclE@0NOmEn95R#i4Xe%>CFlW8BRv_XnwCpvsh)Cj=vzpi?LiFI+VcyDvW7-i zLXeE_0@X!@EF9VGGsfqm0Wm0RqofB1Ya_mq|O@XkF%jzI3 zGfN4{W?*hnGjdZC(20*@TCTf26R%5U%F{ha!^)>+Wh<4VaRGS|b9 zxy*|NSC9^NvKp>`GCm^^QpnI|E$uqjSG?LqQo4rH#0{;a-UfX$UP|ez)b2>fNUy~z z{k?P;O-Ns4Cz%=Jo}FvADJB}C89WbT7LKTZ84G<9@9x>w3#~<)G3!aaUvK5#5xPHV z6~3Wvs4`pcyVe?m?UXk16aR#`|3!KT8@HNTmNEY_d|{I-hmA3Ll8u!k>^ixZj4LGa zdqINWBG{(MdV?nnPWpZD*Zz$&w4NyR!w=K)eDlvAfP2Psm4s}6Tm`qSqBZeituOX* zGBJrsiqLZt8gBIPA;h+}la1=%PG$n;a)vnc#=EzD5?*oJi)9lwdD*DI?8{gOo<-%s zqJ7!+s%k@$kABQb6M~@A`VKGT~+N0QMkPFSm+F~S-<7wAqel* z7(%g*cv{PN6S26tEL0bud0kj}HLG2&g-I^YyX9Af#Ns(WCCebV=Ej- zYB`llO@-j8_2RmG3NOs)b5$B&DT#eJC{(@9=&7ZuZ>LQV*P1~8xMz?3<7XgBdk=K1 z3XL8(9idW#t&NA#4|3CZU8OQ=I>E5Ku!d#?+7dhGrBRJ*9C=^^NS**lKwP>|S(8ar(2_3~(( zBgplRzl%3$*sl!WRUKu#ot6%6hY=(SD$>Ojze~Z)uk`EUd!Sv<4qj|QlNCg9BuLJC z&oy{@O_GOcsERM6VpxWSC@FbDGY|yS*j*UJQqqrws?g8i%QfsnT2VvA%XS(-;Q^lwlp2WQOz+UwA-D6`CzXx&^Kj3tm!&L-M z1OD0YY5&27&AJ!;C;l=cwl>A~a^6jOeD&e-$>PadhO_2jznw_F>S6Spaa%gV=QYO~Yhr9FUHvATX!>b^xqSzl(FyELQzH8qI z{BeMXFt=NmXvjzu63x~oq#A{MidlvD3`gKk6CC2RJOY0PU~EVI#b|rsQ@KF_z=6PR zv(!0Z?Th-}$My13zV3p9j7z=_Ji)BPX3rqfWxcB1Gm4Xktdnw6@7{S8j~Y@5Z*u%G zZ*<&013OeZ_$u=aJ-8E+VVm35aU>@GN(;8LIZOHN|0RfS|2{sl9BsdcfW_PI#YbLH zDo$>rdvg1I_+7mH2Mq4o{zHCp+keE*!tMW!&**0&lPO%Iu=D5ggzGb0nYi=kY(&$+ zT%EKpB&{8ajy1H7RKG*oRTy*1 zaC`Na?zTrjsS`7vezVw&e;zEh2i*X7)95RPeh=1dJEIJJss}ETb#wzP^5Uxx9?>P- zvbK}*nCwcp#X>_^;Ih_19Q6d9MU|;NNw}0R9ab9v&K`x)NCzC{oRxQ>J0z73lKG#JgOw~@<19|6Cw6F@I z>HqJj{weO!#q3|K+1BBHt);Z69HwJHrVVVAh-q4lzV(~VAhXIH=yW}2Zakg4W5xj+ z^G(pCppiyvr+_G7A7fJ%*PX&Lnq6hx%cC;a(yY4aBHW~6XEG=wmdBILZnUCdd?LKp zfM-~A5?wcnCg+ooWJiGYeE338jOUiih>26|Qeb{+?6BIGn~jL=Dh>@}I&)z?B+I#l z=aR7O{(Mv(i1^1~D@>DM(bNk*8m96D3^}f3!8!`O|CBG1n4v(C?$9P~#!4-;mM{}+?U@6jjm9M(N zGC11B9Am1Gy7cs5uc)kr=v@DevI-d(i2f2-CsUeNfYC)M3U@-mL8eL>6#4H_kzQd( zsWj2$!E8RwEl%Lc(j9|{@nkcGwkw_vS^>QCiG_*u8U8Q|ZafXYn*uY_x1)b!|HR9+ zeqNzh%afqO4rWa;$A-x*+z)7%N8Ly*Z2EE#a2xz`NfZow17=8>tOqv^PTdCjY}ob^alo1sR4gQlnU%+iWN@s@F?y9M!FE)W^1yr zB3oOq!a8gE-SpxGgJI`f>Ca?Dmj7+8OK znkoTqWsO@L+qd>-)Y|0Jvb^hrVWt*2H+c=VHsPElm4GF`2{Q}G!krw0DuiGuEAlFY zNj%qG^Czwk@v!4uKD!uIX~bZ6kZHDkHB1k2U_N0OxGt$puqWTt$JoQ^CWabOZ9EqSGTYnREq$8p%IZm?{J}B4i}xO)p2+50Yrud~zm} zs<8SoZUIxg70hUk1 zX@&=fwA{S4Xhm3V&KiHdy0QLJB@w%kMU4y`P=RP<`SsUHBXN&?H1Oizyipvmz5b1u zO)AyeYtWgrJLBmDfUhCAP`fz-*B*_WSZwef2TJm7D4q}A&?>0ifyAW7(nH|l& z^E*#I!6D3MDGv5NO2@&#Qm8oFpV06PVL09$BDN;lY;aOzbIyN}k{(PKF+jcVYSv`> z-ytQ`7n+1BPVgWAcx{AP;|Vc-gv5AT5ANWn2qjGzj=G$bk0@x8|B?}E^F`>EVhW_h zZc+yiGx3GH4adFFpEJh2rY7K6StBPnn1s`0e5HrkJHammleb0~%KAs<6Wb5$sTfIK znxGm3r>0eqO!J#@$xUfE-_p4BbmQTZOsfvY%dm({u;q~(X6nTqH&ag$ zMEEjB5jk%g=Hii~0 zr5$b%mF1b0=W7>&j6m49!rQNG!N2+OfdFx_#6>6^3m)rF{ zMv_GvLw+}r;x_5mMR-f4$Vu|8i&-@^0O2$F)brEoW(BOPggmWQNJ_*w& z9%b8s8E^neE5n*A9@k2pgvXtQ0)r=OzUeDYYLFsjU*TFv3R=Zs#LXHpmoPD*HI8|6 z`~wJQEt96UN=J~*dI&g~lJ|;Ac23HK8Jdz^lONVCBA^93CuPHErd%(KCiC|jO#bE9 zni4P*GBxTpPYH#6(ynY^@svSW95w#-SRN92VWO~b2>;i2*@cyF*LB1Z{b$IBa!?By zIv#%;izmYvxjHuiHi5s5y(hc9o7G9!0{m_4KiTcytWLmie+mdfO1^RM_&yGmlF3YnGXUIS&wojAq%7~9_ASh0SFG7HqJ>`AZ$*L6U`Orp5C%ckaJqWW`vr*Hsq zxelYZ<{Z~fB-|_fA24_6U8SM%UuvGz`Fa?6mWHGb8S_O(>b ziI+}K#EL8Bf?~YbdE?}tL!5>4#d)4x>X{yw{54|$3M~NCzgq!&sy`~rI&e&zIvmJM zOGPboR?^0iCa!$PZGRym2cN?ad-2QoMQ`(8PKR`v<09AbkqcsR3>tPQpQ3V%ESZ&@ z;3kZQ#<8TR(|~nM_UJml5vPoCOn)?}#S@C<#3O?`j3(pwXp@GS+jZu?e)MGuQ?D}_ z>`gpst-yo`z`_)$os4zS^W7iw+@oBB{Y9us)w8FcLgrfwQ<=W3*N>-H`-+}_4M6Rw zfH-90GA%6ry0=+srOTnrN_QTQ+qLh2-3y>olc}Wb-T(^4nJ&w&-3_R|x%O=Yby?e9 zj%wJoA2RYMaqNRQA^&m$aO0ote~P)-_NX0v0j}Qh611`c_(V8j{+ZtI&XFRb_gfB!R_5KXhlZKXMyF9V#MLvA$n&lwKbi9K zmWb6}6H)F&n22MH=tAz`foPWXOVUpCfW{oVnj89#XI`W#Os_!9P+e$?Jw+PA;0B1e zB{TFTL<94_3(R{deF}7fhOim4HV&N9PV3$F#e=?V2}#+JOG)X`Ut|W28nfDPy|8qRZ&oz zfzhz)3AN*U+Rj>Z$wGAT;ewt=Uq4*b)8^}kd-e1g59#JqBzgUCe=aG)$?Jy)%)#~b z{(CW9=F_#CkyS3Oqm3)kR_N;bkMVRIils8o$bs{(t)kQByq$x}y3<*+J7-RF-@Wiu7U%-0vyVx`PQ*0(GPf*ZvxjZEJEQtmoCo(q*^ch3mSgVs&qc-j{Sf_FCvi-1 zdJt7VcBVMu_D)mQbQvcw;Lw?3s9f3)WoY?$i+eN z_pHtyYYXwmf_xw{9{ob?E68yA6KLM;Tor2-71i!FpG2Oae@ZuhkCM~4FNm0wT4GjN6svQ(q{RNzFlt(G80Dn zGHPi`r|d@10xKl73J)^H6LL)A3HLj8 z6+HZ9LLk!T3ee{_=$B6YV@L(-`t7p7HEtm?b^c~|p9KU3-Pn4K4D;p7;8J9Yxh}iI zslNy5u%?bbtcEiy}lc?&S=LqQ=8Hb|^E!6(pG}V1xv5d#_M+)Vq5z zs9m>s(uToPc8YEy`G?=KE~xICSjvUy`A|8y^z>C-viq<7Gof;8R+R}Ugc*Pk(Dp9@ z@+a+tfWqGam+Pg#4oqgf#P~y$#U!kk#qz$ecfP#ePw1??7gNCKda)9&G9{SYf2{q~ zv6dqL^N72DI?5+r9T2+g5Nsr_BdjMyKA?$forn1RQ<^}uBaJQuDqP_NcVTOPjfUZ- zCCOI2!bH7d=j7~=q2yaqDcp82@ZNZCy(V4p3QEp2WAOL7&qy@RK-Sn|yq2G2<4k;1 z#>sn{kD)$xoiH@W+xkGBo6#q?&QcK3!*#pPEZl<5ijWB~W1Q_vr-B-OJFmv3V8B>b zQE&WrSbfOXQLq1ZQ8~qlZ0(1;D+toC?hM|UR27{J%+s{HDcr=J+@VV4$?@NnZ3i10 zDLNUv3k?B8h?i;^aZ;c@ENfJRKCE$4HTGn?eiop71Mh5nMSln20uHNtrW)4(1ntug z;S=`hKFrN9Zkn5hQ5o=AwQ@i8LjDCs%2Xe~R!^pO0)h1a$=*qA@mR>aB>I;SeOAbb zUB3kJD>=9JHN=s8Mpj<}D!H|1B)eM?T=i!J|9#)@K_5=Yss z-7FDqoSP}C^G-lz3t26?wf~lg0*aI4yT@9lv5X`OEyi(vqH9@?vwsI)!%U024wvE6 zJLdV9<6Cy^;8J|EuIwvtxAA%)S9vikb%Z;P)D-q_Nq1^&LR>Cfd#7|ux1`oF2whmI zsvFx{U5DNnX&7Nv=UB4<#X zA8Y~}>@_IZtJ5K!q|p%2aQ$=m7B@Bc*&}N67ce zI+(QTOc?ZIMkO8Kj~C9OiW9kQW35o=`J5qr?*D~{rc~_9B;DD_Bm>hF*ML=O zY-2&%O;|0_lqaaf6p_bQlZPhs=cV9MRxJOImP> z1}&1XIHG^H&y7Vjv&{IdQR7;_&NzN|NaV16?oZCx5Cbsv85>@;egktSuf#8RNZh?~ z*}zRUf^H@VWw0F%Gi9M22xdFd{@G)`uk)f2%1oH==a* zn?Bx;>`WOa{GZ}jPTT&!LI#;BcfhzjT_T)?HIvhTAhm}>kRfjbEtm{<(p zj|uz&fNt{K2kHJIBYc_>79H?WeyZ(mQ3_uD0eBPVehztKk0&(B);l4J93+lW`{-{F-8c9>n?mUgeS2!O>A0G95EL@GTQ z?)>f2AS7mZS%9;g|62r3iUbO^ycQ6cdc!Yd+t<(|iNga&)>YfB-RfCl?YkY`6K&D| zE>1u~JX-r1YNqS+iLh6N40@&}(D1(zGSE+rOy*yWp!8u9t8M?IbryzU0%S)d$KS~` zEznWB8>3euV5te?9&RTzZUhN4bDD7z^X6-yu^f_Nl5R{6Qqs;?9{~emFO3#loqva` z?U3Y1_jn_EhW}Tf&HEA&&(WI5(FiKPem&^p$S5mt4LB=Ed4NTB%;H-WinS;l4Hrw|63^Hrrw3TNs{P<}A-06p?V|GmpP1v-H z`EU#s+{=`oV(UB-3#pW2p1PevQ_f0R4DO3k#;J#QH=9(^lz5dpq7!W2O2QFdu!*2p zZ(=?i;rt-V`#f7FB<}mN_7M7_<*&nR1hXRGbVp}m$trutJi(igLj}U`sEpvh{CYxag_c4i)l8gOJ;)PRov3|a>(J;~ag>Bfm) z0RuGN`Uz}Ya>Q_nUAq=3i{`x6z20{KM)!cdHTQvqK+&y?xH3ss28%E->-sK2cre_1 zz}K*X;h1q-k> zB-GkJpl#8WQ>-5D777fjqy-fUKS@m2d>cMblnA@CZa&q`x4R0tlpKxpua~1&T&wGG zYn8olR7uona0^db0oPm#_i5O1+@haFZn<=&3qe#ng2W;1+kmAj2Pn=&Vur~6{$`LGztnIFT zt#xIwTj`gpjZ~B}jh{|c!GEyR^UmU-=A!qhpvV9^$(!&W#aTFyZG+Pyd>D>*;Qt8R z{JR$nEm`2Pa_tzmcWf=jvn-GFDk!x8|U zjQ=dI5C0Fu|MDigws5%FofF!`&{3_O8Ux3h-*oljs9RW-t9=!*^t4;o7lgKf%!V%c z-qATRcs#%QG+1Dna;k;eUy$B38O7@=$3`8vcK-?p{@K()=2EY98uf2N#bg17_A2LK zaO*PnVh)yV2<`>!W~MDn|T8UQKKu8y@B-@nKl$O_}? zuj>wuC17m{oON;fx4dfC4f09c6241>U)R~BI6+(db)+j!Uk+rUW#CXDpL6R+5%+1y zmmFkeW1=$V=vbRZ8Zx8)3osbrCKKu(rfw0w91eH+C64l=hlR0^h{b+kEcS~SyJY(} z00Cb_Lbz>$N%F;ndvF{H$IOzfU7H+fJFC}Bvko+3yx`3kOxi(d^3m`-mUZ#P){^b; zaxd74dG&u#k8M4Oi}8OGu!W*e7sl7VFY$&PeuuoudEQVPoa+yBP;WS_Gx48iw5$IO zKi*Ipu(7kfq0T7MNr3b4@@z(Wk3qTgqp z;kUf0b|vbRDW6%pO1`JoZjkSZwU5d76}8*sdvxtC`5s>TwR{h*rIs_@ekT4{Z7=bU z)b^9_VC``E7HUW1tCen^(wRFKwsk$Q-WUBLqz!leS+BS0*ygU4 z)vh>^f}zoE?C5S&Q?-(U(Le#lR=?nERG~7Mblh;IoN#a)={C3P$ClFwRkf;Q@)*fa z3J$&vnjUNW-v+AHg$ARp6L9<~!vB@YW0c3p!y!C|ojgVt*D_*r?coiS5LSe^0(SY5 z-Mh~b#?0^--uFm8Q3%0Ymb5+#YW$V+lU@HZX*}8BN15y0?&@~CJuCIMdwl=1eTVrB znN!V<`N5dxr47^3W=;KI$$0uOqP`}7uQ;w394Vjoth!5sTe2S80T(ktT8@3x@4ptn ztlJOsC4LVZ>%|Ih9u0eXTD;N=kBCQVKLwFgV=$JfZc}9>$f+>iw@}U5c8wI*g2j3_ zMr#-8NxZ?5uwe@sRLLiHM2?U!jf+U`2pl=0a7st*JwzDJyCMk1L!2CSyN@|5Yg53y zP!lF+x#$?JC%JaZL9Q*QWZaZsTZE%1PmiKJIf?>1N15K=6(=%of6ol{i1+WCBc->n zn~mSs_Kab%r2n-&6Fgzyu~Qp{0onv+2%3bH<1;Ac z^PI`H1Ijv^28Bef6caY-yn`bGo<}k|hZDIgj2e_tkOREg@z?GE+pFc{axUGRp;qB)hjbUw>cpOcn*&>vJ4JsJoqX1rHV(=tufrV3&y?HbjQk<5L{{1fMZ#7cJ&twBkVRuu*V3vJN$swG3}02h5JvOXRhep%XvD^*7)V z74(|kiBHxJ-iA-RNZ&issza2vMSCdi$)3g~JJKE8jq&2Z_K#nLBc1Z|_*9{alukDX zp-48pwCv#026c16CGGbjfm>MsD?J=~w4cK))1#-_{+Sqi7=@#&2JvFhP`av+Z;>1AY<>(k&<~Eyg)GhrfY*M%*eJ$nNlGfoU2OBro zEh?|JsWg?@VLoQK-kq38xV`H~=MCJFbv-JrPr~BS_*Z)b_oVQG5Ds7upC}wm2E|rQ z0@y5STmb}g30#Pe?5SlOX-ao$J%m@QzX^2G`6SF_jv zq8d9L&dk^v0>)lbuH|qgd=lG-ZaR*`Zl-D=W8>xH>4ea9>?k1#aA@GMdC}t=MT^ceKl{gAI7}N zgNw}gm}M|oTC{3O?P?5`r0fUWI-}0!vfN~&mq~ZIPa?* zUzm}xk;ff-q962{KbV_)3AW|rOwP?f2Fe65xlnIlP!;18r-apwZkZq*pAtGcjYT9v zqOlmCB%ZAtNtV(;b^yrUy$57Ly+NhkA4$EJl6p)I!4CQS!oeRx-QBumUT5ANFsVK% zrKF*;U1wr~)=M_2;zkG+1=v4M+8;yOv+8!LcVi`Of>wA^$uiWIB?2pNr}}pvfnpFt zhJGbONSk8g0)$cSv=DvQ6%^%M{Hwql2E@>2Lm1#qV z60bOM2J9(JoQ7893QsdA$A)#pqAtzb5+DsbUjXYQDZ;8~GxtXIqjHI!@k8hXu7@_( zxr-n3cICqnhbZ=?5&!_%{ z{~y@pHcvFRW7X;1)i(VNKpPA%i=F!V;HDZucgv+&|>Mn%B5 ztPo*KIYn!Bs!%aECbuH9V+w3e=?Vo{uQ7&55zMQ3d<$D{JB9(|>}KaIusJy^bWY9$ zx8zLTQ;AISRhGbCUZ}-ML09P&J}`^pzgYcwpcJCQX-i^E#adK=#ARw@oOB8Xe5$pc z20o{noG9nyEx@^XD|l|+1|H>Y`^zvmhc7)HhCj6qxuld4p$|W^7tHM#Q5v5HI@mY* zOOS!Ay?7`HAlT8A@1>{1B=Z)$AR&Vx=g!L2jpbUu)THBA(uo@OB(BV^;`3bI`n+ed z@n&V?#j}YHZYr>65_y8_fS?+Cu7KU*(A0DD)~pOn>$-X8Rpl;?TQFTc{OVbL6>nv< z6~kfB3_BY&n4Pb{G~d|3Q7FKzjZbh(R}2@yRpW|}Xixxd{(bC@Tlh$T!`=G)i-=eQfd4?{o)cU&Z@vVnFz2`l*3ygwzM=;dM3bw0VCR2 z`Z5G+$~U^!7A)u<*Uy(>`bKY(mXzrYuU$8N#dVKj;5pD&I{!1MpU;uH=KBEkLlvjg zg$ZvFI3-m^;CQZo8nK*Bl>$^p(FtHd=Bm(z$5IxB?xFV~izuYkm+oJWi_|80;VR{2 z{FehwW;*CUAGI(WNa3F64RUxcO=`{?T2SlN$gW?q!$N!<^2gh}NTC8y(QRDw9iUm- zE394;jlfDJOBo=j&O+oW4MonvRj>k$cwr|kGIuL8?m5v9d#(7-i%(>c5 z8bC6rYcX1kmDxt_&$m&dd}?9Jci=cZB)g|%&v_t{=TxB^!sH()P=H{2KcVl={ce*m6;c{5rH$JSs$c{u0MDI^y2$WV# zVB;nN_iXtMu_XQD2S6ZfqO62W-Z+OLg6|FX!T@eh^*~K=pb9~^m^tFJ>?Wg?v5fl0 zhr*1;CVH9~WsLA2uf^ebSM~@A>;2%z(^9vkSP6`lAgmo6mF``4k@UBBvTm4L_?5ar zW})hZ2KH6ds=?LCfE!oQEeeQkz`#+BSXma&q+oCR0OM)C%{&AuS%}Nz5OZh6t@~J7 z%)ntN3wQn7P!yg`)q!9_Kwl^wh#L#aSKvN6}3q@c^6|3=9 zte%~GKp-X6(sr_~)6f?D(`mKTHMK$vLy^N2#Vyqi78qG1jizy^+DOCVqWm22LbDq7 zJ|FN(x9ZgLm`RVNS0WF*JjXk+&_|R%r?`r0tt@L)&vl@@6#9*tYa1F_3xb3Ck(G6^ z0x>qUbZpBqRooRfnMso3M33#$E{?yM+4S|YUbeCRg z9E2>|D>%8ah#^xkJ7GPRKrh_L0XHcCuRa1CoQ<8lO3LYiJ!Z3Q;jN!Ark>Cx z6QxroR)+ch(c~NY!*Xz^6rYt}DRD_lUs z0n%j)jdufer~wXRCJIxD=M8IOPD@Kht;0-;x2lMosSf4X(w63*zjd*X9+$rPR` zzf|D^uz@6yD)@mq72ORF;&AkF3203Qs{_Pn(HOGhY~NSx6T@E_F=_$Iy1|_xDkfu0 z(I4jYUDTOD?{{!sx2<;pKmM7Rh1&M9P!&To*NrB{`JX_M{(4Y=s-l9Ff;Ir8w#*bP zvo<*!U8mSm)2~9D1~b5_M~#r;M9Gk63egNl@ww`M{a(0_qV5-UrrOcpx-&gfSno)ytk@^A zY-qh!5WU@*egi7nfk)Hqv_B3A_Lw=`MOZ~=vh4CTPT0sw7N;LXn{$2B-ikrc?4r=A zV;?QQ$Zl%x<-PJ!*fsU270P`vOl$=YBT~vAMb<{0u2&-96hM2Ve;#nbZPMyDZO0go z@~enFvrpKQv4-<@2A@vmSChGchje(y=3E>gwDCa+cEj z83Xi`Q+W+Uisn7r-&fm@ZFH0i9Af;UjL5aLx1`4~YoT>&+G7!~%1J|r-ZI4~W}3j| zVailUnne?N!z*QLr>_X-38R?y0;eaJ*bp8QIy#iZ1Q0Gz!yLnuSULjYJf+Pg)`y3- z*N7MQlj*?zhn)ejF2*O~3>Q(wnrnoSV6-x2^94n#Czw5%rj+L^FR|;gRp<+=heI@x z;9%1*DdZf)%EF>3Nq{rXv&{{NiYaxrCX2IDEy=o6t2-xC&-6${3juA%@78T@_k+8yx>xX)s0d zL=lQ6t&k0pm|ljGV^Ud?iK+4=Z;*jx_vQ&)y$<6^qxYA(n;4ZA#*5SBf)zQs7$PQw zEu$>sJYfhleB*q95rfwfDBK^ZFsD2T*-d#Gwwv-yU{qeZazvc0IQ=ph#E!u5)Yj4% zUMjYn2f*>eYyN0N8M^DJ+pD8@%_rzot`8D3yh$jgZJ^;TeBLo;8m6v8a4u#O4fZc1 zKL}~BvUWy^gI@Ll@DTijZx+223f>-8wSF!#m~bftH7Vemn}FI4VGcS`AR0SJXyh~G zP}bGiJ7l-F_AEF{5DLo~nVx=OmpW)T<#Zvd>Pg=O4uxFW$onAfLqFnBQ$b*BKr^q( z{_!4)Sn;mQhSRRw60rKKAS@s{bF^${TA|I(G7H}9D6<2iP7(!3?+H6(D|DXxXLrO| z39w5vXKfDn@?6?9Bqm3$L-ea92(gD}TSq09Pva^Y{-|eiJ{|ZoQ)$ncD{wl%0^x$F zhK=8I<}Tjug%Cl{Eh)&4Zy0)GvVA;K@{8u`5{uP4))9*q<;C`gY%@W7tfKFdRF3V~ zM5VtImcEV=rtR3yBuqpflMuG;*mAZr(Fs-G;mon_v7K&b61Eh{y&bD(6G^Lt&b2`H zAzT3l*X5+&Q9iTArBmf3Z^4+TEDLKw-@)Lk;-Q79gRf{p-i#R4b2Tye3ub3>x(Fe~ z>7#){Z~>eKdLf*JRRhMy)UklzIK(#ox9%<|BQg(I#NG(Vs8diBiqntb?gaQa zk^N|yxiDvXgFhfV1Q65UNdiV4svzlZq7ws_D{Db+S0H4MH|BnVX+_y^^5BO+>9DKG zr|8rqmM3NI>Vw^4xlax|vyQ(SNgqILGYeEsvSD<6gwvF;KInt7{ub+OrgnO~wA+5< zRj4w-c~JJW4}2JHU8K=gJqNZOXgy0|j=w+4bo??ud(b^Y!c_?vg$r3Hx^b6hFC>F# z`cNE};mN1>%Wxp#!8Is*q)c+gC(RaiiWjq})+QWPdhJQj4g$mYK0u1?50Iw=yX5~D z`c~d8;1Z8Gt1zmmt|Amm1k}5Zi~k%UqR#Q$=&z?%Utwxh1#^O#h!u}~rj@_L!9yyS zS+5+PQezRQ4>Gf>Ev2Xt)>QKgm%6U(Q$BSSQgs zAN>M+6hf*7v~qd6g)OL=go4-uvQ?{3=Y)jCTM4i)jI$H=dAajIZq;mnU>-ppE|fvU zJq(_qN`ax}s0cUR>#jr=xP{M_*@G>k(Ogcc}z|_jmMtx>o8!#(%<-wLodthMV zL={|{iVxG2x`8jd0V8n4L^(CqI@R@D{s*;#2&yn`n5~`1K5#wKY(?;3_$srm@Uw$U zT_#*vhr#t~Q|b)U7uLs0>zz1KFK1vriHdEO;N-%`odGMgYqm`wXiVN@&={@CGK)}< zvWNND^oOsam*@A;A6nU5oo}m)OuJ6ar(~?BG97lhc`B3EQyKOw%>mj)N5GzyHhjV~ ze3A`sEG#!09`=6MqaTJ1&-p$s7NUVeG`zgE_CnMJj9|{L--cMw^F0<#<@Zu5coB|T zv)% zM~JydDS#6QsC^pE+BB>G%fqT6}w$9#h>qMABLjA(ztwtB37^Db$a@0-vjv-1Uys`(ah^@I7|_T2N8x*ta5#dQQ-usTsl_=nSp z`Z(4XQ6FS2Y?|5hpoe3 zBiF=1+w-lF>($LVvcHG4jnz>q7oyM=*33)zFG8*(24B20+r-xtsO>jkEi&)f3U!%C z<_d><3Trvr()2Mb;Ji*>@!(+dMcr2t9?67gmPFCtNT&c_Lf5^fzh{_0kP17zK$vi3 zZjWEf*k^H+zLc2&7p~LbX{?>VNgme4^KH|c&|&e&&OI3L!F~8~qqlr%hT#|{i={{<4n0RnsZ zb7IC@v9o#u>Kjn-2lwmf=J`6@@1vV$T;Toy-DEl8{vh4=shd`6lm(k6eS>VTi zgCP>|$Qbae3Fj#?;J+pOlj?qq?oY!Fvmi8(?D(4y6AaFe@o`{NCTz>&;m6aNj=x^Q z6G?5|=QSbzv2&uljF5N~X;#qGmN9`o0h`>P!pO!J`kZL+!(>(I)y6~w?CjAxM8=WJ zuU&2E8njQxiO6(mosmRWXc;KWJ_Zi1b}_Q6UC%u0uo<{DG5w#IztC+>*NP*xfmlkf zmnob>p`b$n`LX@$_(~u2A41u9`nG9z*EJX0{HPJo8KXv+x3hvPidq2fs0G|!J!EpF zAzW<;R~iDZSJABWPX?^B>xFl-rkw) zfPwcKY`C4}pMs=#jsyRK&2YBMD;$ND4>_TlR0c{yda#mCR$12aGP&ALGk_BkD^FF~hB3#X9BQ+0&p zldDez5NsX!2W$)yLN@UCq@I|8Tyqd3BxK)_bLBI(qR^hGj3#Os^noym#*iyFCYrc| zQ_&tsPBA0k{6xv$*OHt;Ve-fwCMOe*?pABizUT4+3^O{$~ipAK^HTqn!~kdXpy*f8-SzpZ4J9 z>uKn4f=i5RF)~=!DlTsFL?h+f`~p$Pr%j@+ zu=f+a8*nbDj2CP`MxnIY`?u@AMhBBsizer9WE=%SbfcF3u~U5raVoH)e~$#y_s-;O zOZ-1EaTe^yEa;mZ$F04HVg5US!aE`S8i?WH*4`lLe#&$>(~X$g{J6k^jhQzD}#b7WBQ~bo}6PRairuf(sT6gKNh+JH~{#42oMJVY<00bOGmiG0?vg<&=Cg! zkA(nnjN0`F0O*D#)EAq@T5LGV@D)n=A*Dz=b*YxbD=a9 zn*d~9TcQod1!{}{2_9cDP*6cZC@sUFr6@!kXakPti|}1U9zmFi;0(0k&@ODyS9yB+ zfjT@1oS=AGCu328Vdz~w?2ax%$bZDUM#*%I;4A1CG$Ab)mC~A1W@aetBtMwlNeUwT z9>tD9`^gKe%2`&}Puhq#aXkaLF5V-qKG(BMxoWn;UhqXA(l^$=&{m{V?K2f)O59-8 zJ~Lo;Ti=QAwhTfkGk*{;3)#GL_|6q$Zb{3P|ej!`?pFLpgrU?$mc7!PyJp08g?Az_-Xi7{m7Nk zSloZ}OEko>!LBa^9@rc9H6D?S_zUZcPR!c}y|FM_cZ2bn(f=^wiF3{O3LN40hXsiP zfS(bt)fvKyVy)_o1H-NP#wztpUkw)A@l?3RNO z6DBU1Rvs?dG;8b4Gu^2QW_N+bBoKuL>w_^W z>+0FoJ~t{WVOyK5SA8*DV{_K6-%vN#RopVSN~A@x!ATP4t2wE{_eXxF*J0gk{E1Fj zz~9AhQ)s7yYFj(nw!!%xZ{5vL3P@i--Xww>v(e%h-aZFImC50)7OS_WI8s({3UK7#Kag&)086@Yuc&XB z{)5YNT4)lL&UNVjO+QIQ{bX({aNS`W{6Fp|$rhSG;1c%axfssvC#2gTu$J)^8wI;h zi{X-K_OaDSJH)Z+Ux0p4_58Ci4dS7Uv+?08eO%rvu(QdpJ6&TSOy5r9+aL&X7mj@W z!#vB`3on9mB{MTAR-iN3{}=hM=Vu7lxvVMw2D*jE(Wy|)7cRyI2LUwC`#XHgh{CB3 zIX%v@uC(ivZ-_bTi0zm@hq#E`LqhSKpZ_mN$oanj zx6n}R zHIaV>=%(g{nOsDl_W2Uyd{V+c2du2gas&CNH^T0W_j6L>kCow&` zhwP-CR?N<4FN4c;Wlu?kZez34F4MIB*dCKg+S2T_xb#OF_$%URb^Yb}#9l(L&erxB z*7hM3?Xz^g_L-ed+UHr)5jWT|#=cL>}`4 zdzMQJw!f29Sk{_a`|07c(;wi#oQR-?z7aLMzXXZ#vVa7{;X^H%-e%XyD3-3Cn!t5N znRBYJsb7Zni43yMh}{rYQsTwN3f}kyZMs_90+S)f3ZZC=W%ISg>~zu=drarbIoI-7 zdA!lgwuo2QfpmC!Ram(ps+;4WCxPhVbfxqvw=b(LKXm%dBzbbk7tK(V7nBRTe{pZBx z*z<+{xz_duB|)E8)pyTZ^bK46x|)5Rv^Sec~HsNl=(e{Ai*K9KYw6!gK2GnYQI(+Pd{ zkdD05OHp1qDvuYMxkEI%BD#e~KRk$tt7rmC$y-_}#ziDj5((E7<&k=<%AuBrA}pNy z75#@X&~Q$f@ZS$d1ON}`k#<&vc!+)mufy4>DNa3qgs26SEz?mX8f{;_3PNO9%A|C( z!>t@=&fD(6LOo#YW7qckoply83u}wlw&B}bTOr@R+8X)x*AC-Xo>I`%rE2Mg(|tI` z4Bm=dDKV$6$eIg)zRCXOND*eQyME-K4sHN>@`;6s+6NKt-w448->4662Ut!>@KAj^ z_!fQN!OjAY)u#hK@}yycKsu0%^gN>l+pW4Ow<9x!i-HOss)|mUZLgSi{Cj|10uuY! z@pak>oCn3_TPB`(g{gjOn9uZ*3$aP9BP+OHKgWcZ9Oo^ z!@)DFruJLq&=$~lS(gQlfytpHlwFNituYHwwc`pw7PT?>Rd>um&hdYU@EKm5XUE|4 z0nvF2y14ZMbcZwWUj&(~0{&kK|1`d7c;axn`6vbUW7s6=->BVY~sW%Wwk|R4c*Oq-7&ZA)3jjVvH z4}9R9jT^bzlPJ@cwl<;+iYRb-GT^}Oa;131y-RD89N4lG!kWWZ$&#)IkwIF zzseA(>`m^ZREdOO!vUxL0#~lumDb^{0d)>p>u~dC zeJL~L!*U@`mZ6ut!YNF_?w!%B)I7u(Ergs@63(Y9y&NFv(hxoyybZ`Lh35%!iIrbV ztpPg^OV-J^0_WCzqKiQy6QYDk}tUC;tY$UmL z!!Rr&OBm*3EL@rsWl;Y@3_}{Z>Y2bM{5Pm-IgexR29Jnv&Uj|17V1C7pstwGju2{Q z6*W1ZZCh8{1uSwYmCj+{sI~&ejnRkZ#C#YidldeYm!!;&e9bLzk2TxNR6pyMeh^;c zbG<^TOR0bhFf^*yZubcCxIE57FqkS1ZX}V^dT2))E$O;rOKNKm#H1#NU`k_|1Jy+R zVd!65k@KL*xF8vSUv2&X4)sVAQrb()j7ou+T#T6NTKs$9zXJFdGSiQvQ?!?l_ks^1 zbK4kQwRPAPY#=QZ#RA=hVB2JQMCAFc2I{;PdGzdeg#|r41#(p~zN-Etq_Typ9D)BtfH? zRaKn!^7t&;U5$vUyP)_Aaz?X8XjjOBTPXmI;Y{`4Eol$P&JWdE=n^U-AucSHMUV~CFn7ef7xDzu#co;06vN93Zn9nrK+#>?f_O{?3S-^$Vg z_W^Crb~9e~=lE%k7k$V)+YOVm9?jC@z4CP*N7Iz{k*e7IEMxy#L< zrkOQTX`Nblq@C`a?65-s&#yxOClQ%e2tXF=b+ELQV6ah4yeYiW^>kE<8QHsy&o|dA zF~h#K(+&>Rgy$c)gaI~XxJ+>f-Pm9|F{Jh|I;z= z7IwJB9YZ+L;zR3MTm@O_?IxQk>d7Atma%M49Y_%oDcAMXRup zGvnK#B&t2-_)j8wCN3uodxtyfjq2GM7yLm6h8{3I z(0afWS8#!%hUwMrD9%~;A$I#)%TEl?lq%M`Gr~G_SyNlXI>6ls>)^=V`FGGwDrEYw z7MD>|dCCcymqu#eMWy_=f!ssiLRC}pyJ6D50L(CM;=tNa%3I;MmG5AZQu%)x3!qhc zBfPxpwb+3nWo?Us3a1JU9#G;=Cz=43kMIl99digs_fk|EC-#&oK#(Zk+D8$fM)31? zJ&P3xk#CJf=Gs@q-tRk-8~J+J4OBimv(8L^4}1U&A>`;En;YlAFivdxm9>5x#qo?E z#k~x1bo64s;-5~0v9?nTO#%BC@oi6uKpMs&PDCrJ2AB;aiADcg2*uSpsb;VbJi3np z&wixx@;SF4ks>%Ax%5_}j#Ai}L6v3L+s*`>0oB_|^F#In7 z-ajgPp3NM)mh}k!zXt!01-0TjW?1*FallW;H-y7${S^L%_&$j*h8o@S#u~%A0pNe~ zgZvv<*(N&N`*FT9Hy)tV$o?Aa2TY6-$8X|F9K=oc{GL@DY@SI|uDn0C^GfT`i8&*_wI39E;SqeUDB`gJAwbJ-X`=+UuyzwBk=231p#|pA@2@m14`^dYq z{k5xsd+p!&bNKTx8BitKaNnx#U@{Og$XT21{}K2A5uV)~ZOY~TbCT&V1QE760WKD2 zplV$MNa3Pt4XoH%ZN1d2=NqP!!tA^qtAM;$qaCIXMaRsziC}~s6e_{H!tx!f)>?1R z)Ek4F6Y8^6_#@A;!jL9eELtj#34>Xq{#+wBq5L(n28gPzGX7AQe>)fP6x4G517(;? zKeD$<`0qea2kuFQdxK0mydmcnRz5n@ovvUks=h^}Wg&K2Y-^=8VDuAtM`zvfVV`xa zMQO`g3p}Xj+uh#XVXkLDG%o7~WK?o@=y75rebi|#Kh<6nD_mWUdcIj*Y;)@5ji|1D zN4oYX!u&Q+BYW5Xa6-m|PMP4Hs1hFHJ0Clj;o4(}QCsi=WN{w*(j^Q_cIVw~d5|rS z3&@=?71WXIe1CpHZb7|-W6MM^j0`8-+yW?8cjh{A9~Qs4j!RD;zc=Sr2WoxDO(VV2 z#-n?psi;fp^rg%mo6_K2aDd^s44+^JexM>u&SJ1-R4!D>YT+ZyhV(@PH7J~Q4S9H~bE8rGwp?qrk4s`r{I$gUK zC<~oncPv%AiR56P@PC26n_rl&Jr#zxgGoZ|^{&GyDSdk@x3IR0NqCVVU&s}L&tkFU zt49lRg<F&6r&^uBgbaEL~uxmd3A9V=k|RqG?s*LDUwn_X=0?6Oy#_8g}U`6Y@uni z5FNp-AYSF4^hxY0E^5g;WMQCbzG~Qf#Z<1S(zsq+*)HaK{bxWel=NPdl!FutpOLUl zzdg52HC{`PN!Lz91#=m>Q6gHdvYLttYwc77sq41FgF9Hu?*R4MeutYVatSHl zx3I7F3V=kssxjUY#u!NiYa-%}<T6M<5F!B?}oTcOdpF z0FxY%&%RMU6@>g0Aqsnzd=kO_QNp5nW~IRGk5|30?W}x05gZUjoj@6%15`@afLY13 zro>t?6om6H3cX1G4tR3;Srx1O2GAx&W9rC>U;@Q=`|m@GRu&`u`WLf~1PbwEQ4#oE z1cs#98&UGzx$er+T=y(2^)`U=KY1jpy^2^4E*$hPL&|30galUS2}}eB0jffqZe;U(iAh*9 z_1OYj!PK1#JN=PZ);)sDb%>Db2@|Aqi?x-Tn&3d*#_U-*a6cL{XwNNz6l9T^Khw4E zA-OgRf(8&|rdBgP*Zv2k`~9<~-Gzv^Fw8<)8m6Fe%e;6AOyIT+7joI_gAb5kc(Duo z$2}-x`Y2F)t69$u&$S0vAw0O6kxJ!4t`uBD=a4RkxgilD0s28es}IfeuAd_ z$t^+IOHA4A!L`igI{d78lI@h4zMk1E%`MGk<(gt{X{~e=YRD^#aNioabt=g(116Hk zhnQ}!@;SM^f^PJ>bFO4*!$|TMBw1umfpW`eTw*x50g**uhNBsHZ)|$|;Jpc6-28gp zOXQl?(fHt$2JjC9e*N$OTpyv!e=plo5Zg<4SQpGJ$?Y{?J(r@+OSR6m6OkV#LM{x3 zrlke49q{~{k!^lt=-LJ5^^pAXV%{(Bl^e+|FXWaR=||qr`P{B@vqZSBHURwU4`zCE zBPeLZ5I1(!CES|L9B1hoP${K~{zp;VOd-FwVPXD-i0y6oY)`rKK~Hxjg*>#Ih0&2% zqb8Pc)%TAcio+IcC9I_wr#OtXj=(p5#_|vXc_uo5eMKDp`J`pt4fxyK=Kh5FU^VB^;&L%Y59 z2wJw^3;_=#Ko`;E!eq@o+AN|N2q~OQI@+rt15l1fpX#oD1Q+IUwgK5TmF{Ir++FZJ zOlnPkLj7a7$r*-;JK2OMO`81>2Wk}sKf@f1uc*E=9n}PU52n0|jaQq+E3A>cao-C{ z9*DXps@=vAK)cgr*L+l@tF63LF9}up1;;MC3=0Tq#2uF;aqT_RWha{XSASyWGaNNa z=U$0iaIcehGI4+RH5g&jpMnu1Tu}_ZDAtdZ>4!BHiT-9pcY}{1c1-#%H_UNwP~HT= zPWj^qZZE$iC70+sl9dH%Q89yBNEWq+4NII;>0n#bnS^B_96jm%#&Vyy*8vN#CUkoR zy@EPolooG^3nN?Zsei&+@3m#Lzc^x$b2(;L+y53w5Il_CgVS{44FQONKx}(7fy1sZ zFbbc?Rhl0iCxjh*8DtoJSqm%?+(w}EO%s`>KOI{hsOYrdVdov<6Q$$c zaVZN7ko+~T8*JyDoFPtn+j-@n_mZ<6%N{QLAMV~f&d#FB|GzxX?Ys1n(COrMrxVg) z>G*J$grotJpb&Np``(?%z6c@mU|)hjb7R~P5l|3OaRmhx75Ci{bsR=VWe^>87>F~B z+o&^xjx#!=#_#)cs-AnF`*Z{Po$v3TU%!(3RGr#RRh_Cjb?Vfq=5Lk7a7+8x@#Y60 z$noj-GT`DLnDYxA=aY%ErEO^vw{l`T?sUibmBiW7z9@;i^rUv&Gdj+@JI)6?&fj;O zD^6}FJ3n!@#JDoYI`k`Zqwf%1*oDLG-8t;grd~IG_S9Ebhs*(BuLNKY0DC6@bI`id zq2Zoq?qH2WlY(+Hw8-sbneDD@=`(u}L#T(G!W8?G4O8RSh8$A#e7(nriPF}n1R=OE^`j{Jnf_wUfGP7pu+zEct>$A^R1{McK?4B&zF)gAC?F9A49 zsc$VvNHQqHS7zfJYf1CQqt~zoRwQBZ&%(^(S(w@2vFFSIB#p^lFtju;n@=z}K(4+C zYlCy)a}YL~h#+(8-x?j7KOViyP$>=0A93#t%^#T@nm;!*z@oaPW+!BH;7qDB7warD zfJ2Iob?i=%Taw$f&AD|BcO31D-96;Kuc6@nQoXMHzW3beRtSXMuUm{U*0x)CMS=Z{SobeJgS_&ewN@mGF1yg!V&ZZ#kSYZH(i<(#U1dA?Tv;3(F)?;!XAe(j` zgYFRlnU+n%l(92n+XV&e&DVB=+crGg;9$A1?aDT==Ls^o0-PgLLECxKeX?Dx?rV&+ z3+U>J+QnsF2pgFk#18E0KK%~%OpQ!k!Z7rPo7)c(rXZ@MwQ;$=f(DzXpyFhyc&mFQ zqP&VzuA=3+=7(~jL14PfTJl z=yCV+Zz%w0pZ!Uooop^!^JIR@`0T7^L!gA&z+g5=Y6HdD2=~-`dWNTXS8sMuI6IS` z*|EHiNML6~hcX^@0<9&XuZFPCPI&B4F<;=d-lAIuev-cOuM8YtQO@nL!ma(RM{KLy zie(M}Q35arfPE8yIRI1>fH?rv5`Z}X)DwU?05lSSIRLCo0OkO&Dgl@S0PKfD%p3q# zCjfH*Sd#$E0bn8lm;=E63BVj^vR0xaG!JUNWXt8=QtmJ}t;3103zVnm8@-K@5sob8 z!Y~ea<4PDEsnmC;uV2niqCJ(1X#DdQ%F!RkA@9&oE4gEz+HPU%xhiI9bTXL+%c4{D zskGKv*}7fkE|G1JztTEHpM2{G^F_xiZjV$J?G{Vx1c4WAi7pg=)6+XnmAa7uXO!Zm zkJI<2t0lfJ$Q|lX;!O8QLb(()+&T)!^uKZ=rg=A5>iY0O%5z4)a03o6Zp#Qg-I_K$ z#qtPHed4Ke;`(zt|KE?Xs3-YbLNYi&8Hi^x2Y>?;fH?rH7vRRHE`qccg{aR?(wYOn z+5}(@0LTlTDKm>gRJHjtlxtCr3TBQbsxC7fqa?%Vea@VS3#%km_SJk^@?u?i@26sd_+&WANg6IOGI8eobHU={a8rI!;y2!$_~-bb&dQR&`}^+<5>o(f&vGyx6iT6`>6{{a> zP9gVRYIT@+bjxJjTk!@np2UWY#M0#jGnVa)WjkZp8ui6`9wr?zUfBkiK9P)ye1&mU zUrr-wW^$3+VGj~^Zp#7|wyca`A%+!HLa}9~Eo=#Ya4zO<2Fb$>XIm?FtA_P!f*CCr zjTZ%ugkAHv&N53Uyis85Rdkv<*o?uM-cd`_qh5c~V7IMiU$H))+qn=LOv`&%c`zPq zp+wTk)nL0RFd7ZES`N2_h3*o|Ys%i$mD4{}2ft72*2?K$wcYn8rVqC1jJ|a$34(AN zLf4>mnsXzU4qB%xLna=D>#H#ANt+)LpM6cEwi?VRZoSaF&z4Aw8E>JA)knIcJ5wS) zI$0>$3D2DNmuh_|Ya>m6^&%y1^K>fOzoNr?3941AdKzg@n3>n!<#)}%i1oyywy zNu4bm!FY6uMqDB^F_g&14qIniT9aM3rf~NbX7q7J1%D0o*82)3b+=F+WPK~i3)NqR zV;Ati+wV1m%!v%$)>BI)%+-{z_kv;8MTr_ z(>Y}ZZZ@uZOY9tC+Po2NK|4_mwPiIIv4jUUb)3Vk>z%vs(=VgEXPQWg+-m^)3C7#&SMbFsNW}~v8Fn?R&hny zkz-3K629Yp+69|*tS7=?cxAhN{!#7Y7;P&;49mOeEUqQiAoO+{c;~waS}7LI8n<$$ z`dpPuozW*P@PGqEr2nRuD@q3YLH zTCZvWR5a-U8dk0?tZ>uZL?PEaQaN-~;Q><43@ZoD^E4ECB#h33>y%e;oruVp1Tb8A zN6ZRgkB(Z+gH*cWY>+4IsRcRI*^9O3NT)rIphPS`l%k>dyLrABhgsh=d z+vrFu73dw&OiR}Kd;7Aj^=<666+W#Et@Ry+PW9GCIVaMP?ehoE2s{*_Fg(>; z2oHDymR9tDu%(Wc+BR{w%Ea}X>qAq&-8r}d5hV{pcs29IYaXTz6m@ZP8TlEhccV+a zCBw+&?#?ayVy?Uc?{-i8dQ-&e!fdRs?Y5bXH)X)^V7-8SvXNQI3Y1JZ9ERnxMBc=s zankmv>p2g#XrX(palQBD?bcBBmZU!h{LpIt0ZFhQf1y34CRj1I^M~m0<1Z$zTLSsKY(KHXz`sf zwJEsTko%WZdK>E?g>~SuE?@?ylV*HY67*O<1XddJYA>DTvm#Q?u}Q^xYxROvj0ZgS zq*_jCXe7*L#i@kq=TGsz(RJ+T`=&p)_6S#}TdWG8a~C;gtKr(+_6R=%pJS+Z-Xd}a zz|*71-#L8daC|XoE7237UFtp`dML&pV;)@pX%aQR2rlF4`0=L%ajD|Z$X$s)=Rm4f z{1>>n+3+6nS0##lP&U58yy?=*HGZZSqWtk?Q7!LCn>@h508t|szpy~^CBUM;y^{l`wP zrkcYga&6+0TEh&u!nb{tX`y~VxiG^;P{>0F-6L4c#*?Bt1r}Umox#biwP=kO#4Nf) zTEtOKHS!td(0LtU&ehVc2(1O8&dbkip>bj~k$3_lz6-J(Te#s$YwUO6XWxy* z3|IT44f1JA8-Lb)QoiPK>duq+DaGgU+c=~2jL|FcMasU;8=ZeohK;?aZ)1(^P8R)| zD2{i!YCej1r5O&<@|A;M3~y1IInUge$!(=Nb>PFP-3zH*qjz4urzKbI7!R_(r-V;Z z-pYx25U1vJ4~St{3NHRg66ErYcM;1%d_L=b!%-ebr>-EQ^HPV-y;BrjiraMVoozaA zZ3VNnd-sUItpgTqxQkr5rb`Db2p8lRa7<_wsn1K$w|S(;4S=i39-SGPOIZI3$lJ$h zEKG1`-pk@`6SFHJUcJ_V4;4(JnUoJ zjHguixbkGS`xQf7k9hS z6L+T7KPc9;5D$|vpUzSs^Xr;5I0v%DfO8AK82H$38ue+?3xO_30d6k_=2QNQR@OqE z-qFh7s4dA!)Rr0gwFODk_@!Md1!vhdq2>?>$bH=W^aau!a>ws@b#3MX3ynWcsqtA*X@V(_%KvyRO#Fd#& zGvT&gQgsq{yQK&FCk{*KY1Q<+N$ANZ)r2+IjD8oL+q4-yAqEVyIEq_;o%FqD5uFuZ zA55Cnmbx$Tv|WZA*KP$yb)1gJFT&F{ki33FULhvPUcxNN%wdek zBDzEA^F8^V4#QFCEd31_d~qLLg@QnLp+zgS&+?s`JP3x^84PMw^+ma6MG#~0idz7sCd^YnFpG!QEPNo+96H0R{S9;;1lIrSW z{8#k4jE6ekgZQe=Dis|s#$)>AQnz><_dvlh zU90yiyXfPMU`5FR3&w*LX3iyHVTKF0dF#e_U((h3iT`rtBA-VIi%{THrk{K4uBG}J zn%NVYjJ_$tX>NBtu6}ex^k;PHOk{Y7N1Ow*UoaG}#AenK#KuOH=sbT@G>l-wXmkb- zuubssGNP}saUQg&KNo{%MTw#V%R=M0F3=YNX&l+#%Kd!)F*g_sG5eW9V~-@dferxF zj?U5caP+mc`K=61Mdq{J@v>!?{p(NoED6vO_>* z33sQ3s-w#_vFO9~` z!ET3J(}ldfKT|K4VlMsDo(sL?=Fzm|2BQY~Ma_3ZCcR++3s&#J6}=8hPjrI!$W@Q_ zvWj%!oms){>wDs_YJiH)PV#*-cXZYyb#WKftlaBqGK&K@%XD?^)k22J> z6ius_rORNB+md6x=%2J=PU1aR$ z${PPQL~7}$EBsmQ@M{&WpRVwI+u<_`*N=Ka`Dh~Q6jW33!R`(}$u`dizmtrfEz%)` z=i`(3WnNJ7&~^gB8F=tzi?nD;%SxW!11w!#XHGiAT4n#(;!YB zx*&JN8IF!s{tGDojXCT;oataB?mkZ-&{HA{KQ}CK{0#a@tX`gYvn^Jynf*HX|UNn zb^&Kz-ae+4HpD{PA)#@iIzJn{^YJW=Ud6mHuyccUx}DruoaRhajL#zxyW#606lkQY zdvb^F4^sS{!T+D}e*;Z;Am8)R3t$f?elT|;u&emri(7ve2g&FX`Q(j!;@@cyYEC#) zZp-^mmN`6x3&5Z>7OW_hEt!UZzVB}kw8Dgins5)^}lK4Lq|EO&H>A<4X zyo<8IcA0=U5mn?)5;~`~=_gdZZ>V~8yiCd0k-g20JaVTi&9Oes2GSJrEr_R+^tkS%IuARXbZ4l|;{mNWy|iEaO_1uX@ovpS zIQjx!)%jZ-d>$6IMWT4Q{p0CbBpJVhxo53)-T$b=IsPA-ENW26@$H9$&Uj;Z#dcPM z{I0@@Lg-uMI=(|8@gq3hS^X;TI#cyI+3M5$HX*Ge)0H`;t1^Wd1?o^q%@oFeR5y`_ z=6SW}r1Cn|@(No=rSmzhE1z_lDWy5xr#U*E=8Wz%_q$TJA3>Z{?M_N!jqgy1>#yy} zn%ioDC@Y0N@sB{awH=o$Kgb;b&YLJdub0CWB_IEgIBd@Ppnns$1;g-bN+bSXUkB#| zj#hAfZ8^{goK?tZb65kVcOkDl8ci}5mjQtV;BJvvfV~vXGW8PSB!&cx3`G2Y~AnfH^jLB%?oQZL15l(Pl%R6(GKkFg91z zc2&)FZ5VMrSet%QL+v{vUdW1}7I9z8k}UKtN_H7a~vE*#$sre)_&uv=Ki?Gqm}%|2g^C$JW+1Ou05N(FdsqHSZ7T-sdY0M z(n-$)N+%twkKKihAW!SBTapsZ0Sd280OkPjx&&Yj0JkOpb3i**NPLQNyf|q7okrg4 ziPJ{nHYM<5YaQRs&}lHEDA9hjZ)No&C{Et^yQB@9szYy$)7K`$K+J=}cw&}7duFtg zaz9hFYA4mJ9On5xQCFmjXfPWKi+F*MOxRrP4L6T5|yShXh~_QO#pOg6eHS z{5TG`Dqsn6C!XnDkc-_4b&pR}w*>JIfZuc<$DX{>8UG_5ryg5~cJBs*G zej0lP+rADv)ff%79jxzyVB2%`?G3ga&sY6EOyg-@(i|6RKRj~>b>WiEA78SjZ+gF} zw!(x9Ks#Wvr5Ntra=OnvgaOzr-{ zSgdM%GC%dpQ=WLEAkX(Xew7@vfwrKVZvKx|zM1)S_!KtH5ql%6w8dUdsKth2qDv`- z4&I`VC1&ab$27Wg$C3r?bgXNAUY1FiY7Jj!y^p#PUg!Cu|6u0rv>QF8kMk_YNOJD1 z^;Ld-o!hNyP1(0#w_rwH6#a;jebLh!sEbQ)TpkLkA)&^#+KugCMqL^ISjg@wOjFC| zPjE-88G5$LnmLjFwJ)VJxbQ7YMXV3%)bjN8mbcQEnx26_?Zf|@?H8Zn{Rpua+toGI8iDam1d0u0^ijkWz)%cF~0o(gUH>jOf|Ky z)6dDCvElXsx8`mihn?e3w59cs|BMx3AI3icdtMWEzDoR4yx!A`uuFAAZEAQj{)NlZ z@({0jmd#bFO=#6@pw(l(%9i+Ft#@{!ind z{(}1PJ#?6COj@cLL);;zC}aKctN6s9-gk2G zo`5b%^L4~%zKx&gCdECY zO|69bd^z?{Wc7t;4bxmT9KQL>%oF34vD(|>|DYdu zy}kKClJS80jO90@?3&vE^%e8+i}}`|rfc{Xfa|vbLclixGI}AsQW_yd zw*xI$o7$NBJ)2xa-rOHtE7OvJg%sjnQ+}dUF*dvjQ^ia>!5Ll}WOb8#WOU7=#gaR& zeJ3^Jo^lPMPAd6dBpT$Iamh}~Ykso!6U;$wCaCwj@9>7ZG%uyF9G-g4Ef!6x5Yu1P zBqUAi#-i-_U-yDJqScQ_XC*;kD%Hv>hv$Hfm3gYiVH*oq>At6G!-H9KkB5=#4aTeZ&J(lbm4&uPy9DH|uvWZco8V&E)aFo=-K4 z%rT!zW^xL3zkqq5d7fkgVf-Jg7Jap-82=gv5?EDhY;>YnYTm$p_1d6Rh~5H7-?#Gh zCkzj##cPG=PKUSSeFk#-AL?W%4+Zg=loG^K{9?%b8w`%-Z)v7$gLtzAoaF-6Z%zVi zo|dRidyCLdID_1TP)6EJ#FIFxE@bhv0KA1!@$DKiB_*IHuPDSjWXiR_UrMW8-pp8!frt>P~Zz#mVt#6&Mr&R5D?hm0*W9;`Ymr!YbzxmF(uBdD^LkVlz^L0keS_vVbv)PH2U>eJxj_)uaE z`dHJCrlIo_=r4c{N54~35_$I|OB&FbfSSH$HTC^Advk?XW{1C!aDNJzA9H+UH6L}- z|9rnx_{i+^=cLmwcHzN{2!UD5zDS?vLkuc^Q4%hC$;Z3HC<#2|z^+FttCw|}+a_00 z^yow>zbq+zD~G?s6GJI9lh)6Vjk-vC!QhD}u0H74I)75z&(@fYRIT+95D1#Tr`=i~ zHRm^IqSnW7YEUUuUj^y=aeXy3%>m#O3BVkOF*H9+Vcge_KB7Ve_^1bbOaPL6GD%_% z4t`abF%rmOEIB*6NW8BRLJirLJSLpceQ?e;J2<;B;J&bn&>MC>E`7Cb5Nv_((**bYK z<6eKwKazCEr^si!er&C^A4iOFu8`|>AzD9e#hVq<`+STd>t|NT?q`ukKeIwk{v#p! znHBQHe-WaeSs~kELi95$~BU&n0m zw0_3Q*`P>8>1V7r8`L9Hz4}?24Jj)`KYL_DE_w?g`Wai$396173Aue!h=n7az2ycC zh(<`f8$?z|vr1D*gQJ5=6%&N&G{ZEDNHC0BT&@zVK`EAj}nzndUo;6ctD9$G)Gmccefd!rEHjb zyf|moeCGo6`mwz%qVcHj1qc20#F{O+%O|z_CeEJd8v^W(_eyzP(<_eh~VIx#FNI8n4k# zN-|A~UY>t<-YOE6mFxmc$Iv@9gj`ADGf;4ZghrrDE;SmwU2z1d=DAY(B+*)0k*Cdj+qqVY@mke8h<-#(8cT!d z$NDbpl-t41H%Ecy5I6N`()8x|au7X1%HfriCr6$4?)4q(U5RxZxfW|1B!?3?(lVm0 zi0{>+EepaxoI{sN&Bxj)R$B@k1T=Fh%}UaolS;F9JI$cdEDUBfiJR?b{vkox9Ms{l z1YnN!3t1mUxjT$*jTY8I3o0wzb}bE99|*71H$IX^L*{3+Ri7VP>sBi9eh%CyCpodp z)zRF;oO12vo|-_xgqIz|5jRA9uukkc!5Esdvpb>0QXa}kKXxK%yb|5tB5=Emkb^%&CvS;qFi(a?Bj1Wrn3S8G#BL79l)?X=IAf*`mO{ijkXQ%zuG`U_>c zJxEsJdui-s60>3WbA@|aJDu-k8rL&|a{6UMn-fx3s4c2!MEBO`B@XbS@3##^%N3r$67?`G~{z+VmFsI_?9pXg%JZ=pX@a5wKst=int9 zh^IFF0YL`@<(Q*JZ~Z%{Agg#%pLzM#FYVjY`js%84&nu%qghonu*_8n^#b9@SnSEY z6kJ|t{ih5%hrINUGA`KpuGh)ZQLk6bGN-h&T*mQ_(PLo}EJTm0tAgkcd>TuOwkpIJ z#Vri)H_!W~Zc zWLrS?EXMx?*iXVxl8vQetjW=8&H5g%Q|g}qDQdF)54Di`&>R4MEdbyDOajaS;J*@p zIRN}70hnWBV6@dzdbi4A^dt+S!;922SQyPyb;;znNhaoC>#X$AAynIVS*I@)Ti>)p z>Z3l|2DJ|NeEZ3a)1h8vZ5iN(I6^l*!`$D}o>wRj7K$>F*4+glhz8`mqwNgh5oKU8 z%o*Q^zb|?gzs2}?etQes4uUJH@6NlGDvXa6O^DO{P>FntS^dy%NYF;8P(p8?8x&4`%IEBJ{<`RQ;(t^ZLsoEhAQMjZMLF9K1jsjR{cLenO%Qc07(< zg$tpl<~*8ve1}4!L+O;p-|zxl(vkK4LUb5FYtyP59J*&8=6*q0)7H1`$dLNs>U^JG z=@^9y-hN_txfgZHRY-J%ig1(Ob$-$-S&;)}D|6+=Jc>;|W$Q|v_mtvxKgrW>dU@LY z%v5&DQk?j4m01E@JdDO|l)#f^P zXwnYNOQ@6dB2S@0sTN?Is|C=Jyfmq_Rd-z6Y;A?LE_Vdg*`>HiDe>j}43r(UmUs-n ziY^r=f^uJ(i#$tQ)$2pP30_0=!i-8?`Dr@ZVuO=#JCU#cd?%dL-3b>b_>AvRh+(xI z{TQb$=m_KmiZkB`L?O|U>R;p05ZC3dRK2w-nQDTK+u9K0&2<29=j0qxkj9UKf)Q<@ zdf)WHXYF>y_S2HWPQ|gSuvLW(T44%l?oFcfvi^J8h<*8tzVQO$Rc{R4U>9d=97OXB z(u|`w%E!j8@rHHywQb-U+HBfe;DKW{xBRC%W}yE{zB0m+{r@gtPw;=Os68}|>uuuN z8f4Yx@|&j!PX};FoRkF!D<7jP{XOFGn*Rm%UFm<_0dz+f^Va-+C)5@9y$+x&`jukl zn*ZJjbxf9FZqDci^st-8bG4a&SDS^^v$y|&W^VM_G_^x+1Ei*@UBH;8{>aDX`+QC> zN$Tvv2^)F~V|`Oc&Zp({=77$MlmBXZ(T@sEU`#!^_wXOSI`<;}znuSX;Qw0cOw&v7 z5ytQ4w|TN_OhK%>X}VOX@q!N0^bMm>o+cK$Gs4#Alk4QO#P*x6C0yFkSrDhSo{qD4 zRvedq^R!OR4nr2pT-mM7yXmV%+Z^9@0dCC;qB;qY&)e6niP-rO&?YHX;0Epx)dkBg z9%2lz9t&9gq>njKftl8HsOur24LpmG6ts{ul0v)XU0C@QAO1Pt+?Ry;XhIpn0j%cR z3ffUXI+Q2h%BvD?j?upQD*7DjXFUp>QT%unDZ@soax+6OsBt)Ulr084cXa?EE|TVv zLhdi2nHQ6O?T2unmak0i?j;BHx7}j{ z8*ZT)>>yw~^hFJnePQK0jXs^e!v8whHBc%?8_E8lr9YU@W9ZKY>)PoK&EbhM#)=A5 zy>_^Rj4hbh4|&VmiDZqKZ}4)iIxX4@P`r|#6}4gStC+7$wgt;J(~O2pc*~`S9B%eL zwB|^6>1z5j-`K}x+x#uV&tbaia>g*KUfHU0E zb+@Q)Ty3OG{dKpvA0W}uVwhCG=raQhviqqL-_hLZa zHrZjU5PyZ_7u{D#{Qh|;H&SzaA3TT(F^WU2xh;1ni6;D&Jzbn@o=={wvY{w)b6^U()xYrABoN;@>m~yC?WM)I_|jQTH5Io;HkXW;@@@9 zd_F-VwnlkTO8?`FDJ`89_c%JmT2{8tjxVxYg?S;q5EO!VA-|2HG59(IRS)>I=i!9Q zRsHHSZa3RFDP73K^le~PG`_>*cNh4fD4QwU{N>agu>|j(7e3SOxPRxN#r~bo;g6rD|EA5sB30UFmwzEh@~>YP`=eC8VOtde1wa}j966edqW=qM;siX?na2OlRd z6X@yXWl0P#FH=EJAusbX$`n>edVL#&x%X4%c54GcyJS2Dcs9M667=|?^Aji1>32h* z`Er{2+M)?*8{Ft{E+?x!)Ok!`i>j0^N7k{wbtGReQXqs zfer~T(beI~+3ISycfOYTyoCBRM`&N<8qX&vA3w}*=y$=-b-Q5O-GI?gs9=3*$wpA~ z--tI*9*v*mi%GA=)H&tvUfg*F=%C7`C=9cKgf(piN8+KLp?j6vmzB?TAD0L$X*`v zH$OGzgFW2o(*Z$luiVmub9?EYr@7C~jV_>CL2hyGvRAk|!FKO1G7`IOj`n58V;GIo z{bwVI9Hsf9=i#M`&T>s-^YR6h@KV|$+$LiU_2Zpbzj37NGY5^Akhrh5dof;$1JkMb zLUc~2{ePOSMGqS-f~>o$J+RvU-uC&vu=@0>X1p;l)|a=e%!UBUSGkvo{+oMHPKyJL zM3sL=?uUO#8<05te&8bgsuO9ScBG3kk^Z9-Y5#VlOOr@p{5v_v z$TVKg59>3hDtqE${ud@i7o!;Or6?+#@V)sozK1a#RM}2#TX53+=4kNNT;mJ5d8)VO z7xt{Vm#f|FjKm{fi1#5AT`5#41WN*GGf(Mx!mg9b6%KRESmrF)72;3CX(Rw*n{are_@Q&;?Iv{ zJ$q%Rj;j*(agI7xta6=-^cCHCSAVf{-UUpDi1odSHhYf84d%(=)qT@fwM+I#V8oR8 zqFyfEqi=uhz#@k%49h~JUW`~93iZW$WN`tmwlrebZs;%cBTxN8JG(;3j*~l0SgO~3 zKXgzXD3m)93JW{#+QH#SbS!;l*XVmImKQqa^SCkJ?lGQ5OC^C(=%nxN6xvktrsNhG zx_OKVu{uYaK0V#k+)O%bOk1=vL}Z zsOCGmAJxp#zuri@Xos8IQOVf=6UodD!RP@KC-ZwXDDaj_*t`-4Q^bq((enF3Ibhrs zJ06zD%{Q;1-tLS-A=@w?5HuFpxq**+9C6`zEun65SOyZXxbp)Kkbu)4VzeXFVcOcB zu298phsxtKbBML87F|P-PFjXkMXh4ySQA87t2nGE^j5DAx19&h_2KYJePf0A@Q+9d zv4X6}fT8``lW=gHS&-C(Y<`eD=T)ME7c!80?ItPQzfNacrz4czz7SLpW?xQd^NZLm zj*eq6Nd=|C!wp)?n=cm9E2mFJ12u6U-FE+*drdNWi7H^VuqP#>9U1>iyZk#;YU-Hy z6)Hl^B0I`ngc+}rAEw%k8*zGSwM9v*nd9tW`ln1HPQ2%owUxT9G~LtMi}(n)_SPqC z?W5G>BCo#YcXKGm753*P!VZ9AAW$79#Mwf1%>Q2_|BvXh_ruZa_e6l4=w{PlBc4a4-LVPmC zuiia2e{}oi?&#Y((G_CRt9K8N&ENj~?ub`)A}Yj1d}8~)hRCWFW96~M+t2P!^5RYs zg?Lnyf(ENv!j&tQk?!2?bk}s!Da5B!g6b37Ye|6vBxJAc&P`ko&2$nf#3xh=64sN1 zy(GM_J7KGnP$52{QjoBbBSb{nGB}FYiQGh(+I_$d;n|Np7h_{f%Yrh-GA=U}}8T_Cju_+1!))M`E#$40G>g z1aY$rnG7uA-4HO3q&6Q{D8u+2`1=rO>)Y>{gY!y`NtjBQgn^Rh7I?&&w@afj6e0G8 zyRpChhq&mmFGD1)dxmAxd{hNE)WaKwvx0d<;4TUrD#)O0Hmz_*FVoo!i&kb1BQ%Ux(gNBHINvI@bvQhMfg1san_p2zy)lOim~x2j zRYu|f?vsOqkJZ3iis=tNz8k~`LEX+~f?V4#OK5)!j$MW8Mf+<=HNHb35o&fdY;B@D zWeORMB`J|ad>kFiUL^XUN~@r?e4ru@$G>!b&i%iJtGQ5@Q9mLW(w_}l#dzCIIPoSR z9~twJm*ahOZU0*F4(0_V2Z@K;_PFwPC+bGpCX6S*u(x(VA>JPcXRf~@)wW4(UWWtc zyHY;1Mn6sn@3Z&za0~SSBJYk(b#$|P8-JM=eCGXmcQJS9F^=cb{tU^p{e?&7`Lgx4 zt=mGrCH~hIG#3cD<`;x=^FjSiM=WsjciUBYj`$M|7+ZatcjLMi4XIBPDf+Bpel}qxV+ScuLf_G3x(^#CD2w?`e#!MGPGDz~z^fml0~zsbWc z1@;=XzuO0mI<-HqR9P<-P2&f%`zQuBif+464c$(tKeU~Y%}~`aV%00u`@`rU3idE- zE#}A9!Dy{0I3Q!=lWHu=mHrbC7ug^3CK?{iD1N8kN_#c;#T7q?%slYj0@gCX4-0r` z2KadapOpbVDBwXE;3EP~WPpzfxGn?ynShN9@Ye!9Hv{ZF7vPc%a4!KDXMlA9$1=dR z0`8ds9wy-48Q=*59*_Y(U%*uv;H@{n%dXAi0p2a($Y3{x+%Mp&4DizeK05>avViL{ zz=s8_WPslla7hOEV*$UCL23RfTIrz-@V^xEI~id9Jb>TL07nJ<;Fsr$`N&)`pAc|ECi$-g{Krg#{9eGHXMp+h0sdgz-uzVegUt{ z0QVAbdj`0lfH!1-&k=A(26&QyFUtTo33y8ec&>mqWq>+SXkL;5>I9*=B?HunL33*c zc%kyVJOdmE0A82@?jhh68K5p8HK#K`T~2CVoB_%*XYckZw+DD3>X!yZ!DiG-yKdQ8B} zGr*q;ctr;IbG@7V=DD-}A0>EQrXlke0sMLfxVwNK&HzUQd{YLvT)_J?z`B5cmjNCq z;Kwq+4FcYk0d5rV0~z3?fFI2OFBb5=4Dc!eAIbo)7w|0^;2i>fKLdQPfN#qHKQ7=q zGQh70`0fnwQ31c50sc(DJ2Jps0=_o`TyQbKpJsqd1^lNBuqxmWGr;u%{yYObLco8^ z08bF`ml@!sfIBn5Edu^J1H4ke-y}fxM(BgGGr5VqQ4@hF=iHbnkDkkZ#P%-9TW#sR z>*_i7u8X?&u9iWqq@C-*%F69q|2n;IO>DjvbIy9gc7x-tohB}idmbzXCo>|-THG0zq|@`dojqn6|n}Y>o3%Yn+2Ei z4SJCB-yq4yp{n&^{9y7k+YZc9FnVKlZBEaKFZhIqVE_ zAD%uW-#+YAv@dgdXXi4fnH+?T<4d1NZ z8m|8WpQdKjmlHj;9gQLoleARID6Dnzm)u4rNj3jk<3#mRDN*?I1FFG5lZWuR4-9604 zg3#Mg4O2E$PYJVvXbdJ+g9@iTKQSDF8PU2E>wQ!ZbUlU<$^BSvM0`Fp{+Rq*f*Fm4 zeEfcVVSJB%^X>{N7#AIu!5wm7$?kIrVzdrk#ww2c1a1=Q#_2LMY&=AsB`a5s%jobiE4)=*b>-$AbFy@C$4gw!b61{+VXYO9$eKrWx1>5iu3eW z$*IPPs@IKPl}DZ+IvUb#9>Y)TB=c`zj8uSV|dI+Vf= zlJUvpV;yS9rbA94M1-MA#HY%0_T0(akxo-2&Fi{H!g&qrH&kAm-pJ7J*zM0dC7=rh zY%74J3TB>Bk(di6JDoH*-|6^Pcu(HiQG|LjG4(w~->ZV=8N_M{==)f3HzXA6RK*fm zn}fry{BYDuySuU2liLj5uebFLN~|%s5K42UE-DhIen7bWDpmtqf4AY-Rk%%y#+j5j zzC$6=B(Zra#G=D)*`(vWD4j(%&7fbP-03GDn-qPAS}BzGVG6qr2U3IZ16e zCl9oDiU;C$8rSN?14Wad#1pq>%hyk%eZ_}A%3N)VY7@x5<#FM~hqb_1z{-K*!(1U~ z$BL%ND9J_B7t-))@ooKSPRARe7H<=QGv+G?o395A-N$<|%~I%TUCk$u=ECi2u}$O} zZRUqAiJq_TXmgSEg7VOOc!%o#MZ8W z3phqO73X*7CGVu%JFVWXSJgWIKvumYeH9L0RKPF=&;lx;&p}iq?X*)xmavYporweM zC~KDIuAr|q-9}&2&mZ_1C{|XjEF>yy`)nvK+O#$LCFF1x Y6b+58`nakn^KJew` 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 z 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 sY`tR{Y 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%0D%48v~^h{ZK!^UE7 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 literal 0 HcmV?d00001 diff --git a/packages/EPPlus.4.1.0/lib/net40/EPPlus.XML b/packages/EPPlus.4.1.0/lib/net40/EPPlus.XML new file mode 100644 index 0000000..75d2453 --- /dev/null +++ b/packages/EPPlus.4.1.0/lib/net40/EPPlus.XML @@ -0,0 +1,32621 @@ + + + + EPPlus + + + +

      + This is the store for all Rows, Columns and Cells. + It is a Dictionary implementation that allows you to change the Key (the RowID, ColumnID or CellID ) + + + + + Set Value for Range + + + + + + + + + + + + + + Add a new page to the collection + + The column + Position + The new page object to add + + + + Add a new page to the collection + + The column + Position + + + + IExcelConditionalFormattingAverageGroup + + + + + IExcelConditionalFormattingBeginsWith + + + + + IExcelConditionalFormattingBetween + + + + + IExcelConditionalFormattingColorScaleGroup + + + + + IExcelConditionalFormattingContainsBlanks + + + + + IExcelConditionalFormattingContainsErrors + + + + + IExcelConditionalFormattingContainsText + + + + + IExcelConditionalFormattingDataBar + + + + + ShowValue + + + + + Databar Low Value + + + + + Databar High Value + + + + + The color of the databar + + + + + IExcelConditionalFormattingDuplicateValues + + + + + IExcelConditionalFormattingEndsWith + + + + + IExcelConditionalFormattingEqual + + + + + IExcelConditionalFormattingExpression + + + + + IExcelConditionalFormattingGreaterThan + + + + + IExcelConditionalFormattingGreaterThanOrEqual + + + + + IExcelConditionalFormattingThreeIconSet + + + + + Icon1 (part of the 3, 4 ou 5 Icon Set) + + + + + Icon2 (part of the 3, 4 ou 5 Icon Set) + + + + + Icon3 (part of the 3, 4 ou 5 Icon Set) + + + + + IExcelConditionalFormattingFourIconSet + + + + + Icon4 (part of the 4 ou 5 Icon Set) + + + + + IExcelConditionalFormattingFiveIconSet + eExcelconditionalFormatting4IconsSetType + + + + Icon5 (part of the 5 Icon Set) + + + + + IExcelConditionalFormattingIconSetGroup + + + + + Reverse + + + + + ShowValue + + + + + IconSet (3, 4 ou 5 IconSet) + + + + + IExcelConditionalFormattingThreeColorScale + + + + + Three Color Scale Middle Value + + + + + IExcelConditionalFormattingLessThan + + + + + IExcelConditionalFormattingGreaterThanOrEqual + + + + + IExcelConditionalFormattingNotBetween + + + + + IExcelConditionalFormattingNotContainsBlanks + + + + + IExcelConditionalFormattingNotContainsErrors + + + + + IExcelConditionalFormattingNotContainsText + + + + + IExcelConditionalFormattingNotEqual + + + + + IExcelConditionalFormattingStdDevGroup + + + + + IExcelConditionalFormattingTimePeriod + + + + + IExcelConditionalFormattingTopBottomGroup + + + + + IExcelConditionalFormattingTwoColorScale + + + + + Two Color Scale Low Value + + + + + Two Color Scale High Value + + + + + IExcelConditionalFormattingUniqueValues + + + + + IExcelConditionalFormattingWithFormula + + + + + Formula Attribute + + + + + IExcelConditionalFormattingWithFormula2 + + + + + Formula2 Attribute + + + + + IExcelConditionalFormattingWithRank + + + + + Rank Attribute + + + + + IExcelConditionalFormattingWithReverse + + + + + Reverse Attribute + + + + + IExcelConditionalFormattingWithShowValue + + + + + ShowValue Attribute + + + + + IExcelConditionalFormattingWithStdDev + + + + + StdDev Attribute + + + + + IExcelConditionalFormattingWithText + + + + + Text Attribute + + + + + Interface for conditional formatting rule + + + + + The 'cfRule' XML node + + + + + Type of conditional formatting rule. ST_CfType §18.18.12. + + + + + Range over which these conditional formatting rules apply. + The possible values for this attribute are defined by the + ST_Sqref simple type (§18.18.76). + + + + + The priority of this conditional formatting rule. This value is used to determine + which format should be evaluated and rendered. Lower numeric values are higher + priority than higher numeric values, where 1 is the highest priority. + + + + + If this flag is 1, no rules with lower priority shall be applied over this rule, + when this rule evaluates to true. + + + + + Gives access to the differencial styling (DXF) for the rule. + + + + + 18.3.1.11 cfvo (Conditional Format Value Object) + Describes the values of the interpolation points in a gradient scale. + + + + + Initialize the cfvo (§18.3.1.11) node + + + + + + + + + The cfvo (§18.3.1.11) node parent. Can be any of the following: + colorScale (§18.3.1.16); dataBar (§18.3.1.28); iconSet (§18.3.1.49) + + + + + Initialize the cfvo (§18.3.1.11) node + + + + + The cfvo (§18.3.1.11) node parent. Can be any of the following: + colorScale (§18.3.1.16); dataBar (§18.3.1.28); iconSet (§18.3.1.49) + + + + + Initialize the + + + + + + + + + + + + + Initialize the + + + + + + + + + + + + + + + + + + + + + + Get/Set the 'cfvo' node @val attribute + + + + + Get/Set the Formula of the Object Value (uses the same attribute as the Value) + + + + + Databar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingThreeIconSet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingThreeIconSet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingAboveStdDev + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingAboveOrEqualAverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingAverageGroup + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingAboveAverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Collection of . + This class is providing the API for EPPlus conditional formatting. + + + + The public methods of this class (Add[...]ConditionalFormatting) will create a ConditionalFormatting/CfRule entry in the worksheet. When this + Conditional Formatting has been created changes to the properties will affect the workbook immediately. + + + Each type of Conditional Formatting Rule has diferente set of properties. + + + // Add a Three Color Scale conditional formatting + var cf = worksheet.ConditionalFormatting.AddThreeColorScale(new ExcelAddress("A1:C10")); + // Set the conditional formatting properties + cf.LowValue.Type = ExcelConditionalFormattingValueObjectType.Min; + cf.LowValue.Color = Color.White; + cf.MiddleValue.Type = ExcelConditionalFormattingValueObjectType.Percent; + cf.MiddleValue.Value = 50; + cf.MiddleValue.Color = Color.Blue; + cf.HighValue.Type = ExcelConditionalFormattingValueObjectType.Max; + cf.HighValue.Color = Color.Black; + + + + + + Initialize the + + + + + + + + + + + GetRootNode + + + + + + Validates address - not empty (collisions are allowded) + + + + + + + Get the next priority sequencial number + + + + + + Number of validations + + + + + Index operator, returns by 0-based index + + + + + + + Get the 'cfRule' enumerator + + + + + + Get the 'cfRule' enumerator + + + + + + Removes all 'cfRule' from the collection and from the XML. + + This is the same as removing all the 'conditionalFormatting' nodes. + + + + + + Remove a Conditional Formatting Rule by its object + + + + + + Remove a Conditional Formatting Rule by its 0-based index + + + + + + Remove a Conditional Formatting Rule by its priority + + + + + + Get a rule by its priority + + + + + + + Add rule (internal) + + + + F + + + + Add AboveAverage Rule + + + + + + + Add AboveOrEqualAverage Rule + + + + + + + Add BelowAverage Rule + + + + + + + Add BelowOrEqualAverage Rule + + + + + + + Add AboveStdDev Rule + + + + + + + Add BelowStdDev Rule + + + + + + + Add Bottom Rule + + + + + + + Add BottomPercent Rule + + + + + + + Add Top Rule + + + + + + + Add TopPercent Rule + + + + + + + Add Last7Days Rule + + + + + + + Add LastMonth Rule + + + + + + + Add LastWeek Rule + + + + + + + Add NextMonth Rule + + + + + + + Add NextWeek Rule + + + + + + + Add ThisMonth Rule + + + + + + + Add ThisWeek Rule + + + + + + + Add Today Rule + + + + + + + Add Tomorrow Rule + + + + + + + Add Yesterday Rule + + + + + + + Add BeginsWith Rule + + + + + + + Add Between Rule + + + + + + + Add ContainsBlanks Rule + + + + + + + Add ContainsErrors Rule + + + + + + + Add ContainsText Rule + + + + + + + Add DuplicateValues Rule + + + + + + + Add EndsWith Rule + + + + + + + Add Equal Rule + + + + + + + Add Expression Rule + + + + + + + Add GreaterThan Rule + + + + + + + Add GreaterThanOrEqual Rule + + + + + + + Add LessThan Rule + + + + + + + Add LessThanOrEqual Rule + + + + + + + Add NotBetween Rule + + + + + + + Add NotContainsBlanks Rule + + + + + + + Add NotContainsErrors Rule + + + + + + + Add NotContainsText Rule + + + + + + + Add NotEqual Rule + + + + + + + Add Unique Rule + + + + + + + Add ThreeColorScale Rule + + + + + + + Add TwoColorScale Rule + + + + + + + Add ThreeIconSet Rule + + The address + Type of iconset + + + + + Adds a FourIconSet rule + + + + + + + + Adds a FiveIconSet rule + + + + + + + + Adds a databar rule + + + + + + + + Functions related to the + + + + + + + + + + + + + + param name="attribute" + + + + + Factory class for ExcelConditionalFormatting. + + + + + The conditional formatting constants + + + + + Functions related to the + + + + + + + + + + + + + + + + + + + 18.3.1.11 cfvo (Conditional Format Value Object) + Describes the values of the interpolation points in a gradient scale. + + + + + Initialize the cfvo (§18.3.1.11) node + + + + + + + + + + + The cfvo (§18.3.1.11) node parent. Can be any of the following: + colorScale (§18.3.1.16); dataBar (§18.3.1.28); iconSet (§18.3.1.49) + + + + + Initialize the + + + + + + + + + + + + + + + Initialize the + + + + + + + + + + + + + Get the node order (1, 2 ou 3) according to the Position (Low, Middle and High) + and the Rule Type (TwoColorScale ou ThreeColorScale). + + + + + + Create the 'cfvo'/'color' nodes in the right order. They should appear like this: + "cfvo" --> Low Value (value object) + "cfvo" --> Middle Value (value object) + "cfvo" --> High Value (value object) + "color" --> Low Value (color) + "color" --> Middle Value (color) + "color" --> High Value (color) + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get/Set the 'cfvo' node @val attribute + + + + + Get/Set the Formula of the Object Value (uses the same attribute as the Value) + + + + + Enum for Conditional Format Type ST_CfType §18.18.12. With some changes. + + + + + This conditional formatting rule highlights cells that are above the average + for all values in the range. + + AboveAverage Excel CF Rule Type + + + + This conditional formatting rule highlights cells that are above or equal + the average for all values in the range. + + AboveAverage Excel CF Rule Type + + + + This conditional formatting rule highlights cells that are below the average + for all values in the range. + + AboveAverage Excel CF Rule Type + + + + This conditional formatting rule highlights cells that are below or equal + the average for all values in the range. + + AboveAverage Excel CF Rule Type + + + + This conditional formatting rule highlights cells that are above the standard + deviationa for all values in the range. + AboveAverage Excel CF Rule Type + + + + + This conditional formatting rule highlights cells that are below the standard + deviationa for all values in the range. + + AboveAverage Excel CF Rule Type + + + + This conditional formatting rule highlights cells whose values fall in the + bottom N bracket as specified. + + Top10 Excel CF Rule Type + + + + This conditional formatting rule highlights cells whose values fall in the + bottom N percent as specified. + + Top10 Excel CF Rule Type + + + + This conditional formatting rule highlights cells whose values fall in the + top N bracket as specified. + + Top10 Excel CF Rule Type + + + + This conditional formatting rule highlights cells whose values fall in the + top N percent as specified. + + Top10 Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing dates in the + last 7 days. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing dates in the + last month. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing dates in the + last week. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing dates in the + next month. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing dates in the + next week. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing dates in this + month. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing dates in this + week. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing today dates. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing tomorrow dates. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells containing yesterday dates. + + TimePeriod Excel CF Rule Type + + + + This conditional formatting rule highlights cells in the range that begin with + the given text. + + + Equivalent to using the LEFT() sheet function and comparing values. + + BeginsWith Excel CF Rule Type + + + + This conditional formatting rule highlights cells in the range between the + given two formulas. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights cells that are completely blank. + + + Equivalent of using LEN(TRIM()). This means that if the cell contains only + characters that TRIM() would remove, then it is considered blank. An empty cell + is also considered blank. + + ContainsBlanks Excel CF Rule Type + + + + This conditional formatting rule highlights cells with formula errors. + + + Equivalent to using ISERROR() sheet function to determine if there is + a formula error. + + ContainsErrors Excel CF Rule Type + + + + This conditional formatting rule highlights cells in the range that begin with + the given text. + + + Equivalent to using the LEFT() sheet function and comparing values. + + ContainsText Excel CF Rule Type + + + + This conditional formatting rule highlights duplicated values. + + DuplicateValues Excel CF Rule Type + + + + This conditional formatting rule highlights cells ending with given text. + + + Equivalent to using the RIGHT() sheet function and comparing values. + + EndsWith Excel CF Rule Type + + + + This conditional formatting rule highlights cells equals to with given formula. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule contains a formula to evaluate. When the + formula result is true, the cell is highlighted. + + Expression Excel CF Rule Type + + + + This conditional formatting rule highlights cells greater than the given formula. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights cells greater than or equal the + given formula. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights cells less than the given formula. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights cells less than or equal the + given formula. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights cells outside the range in + given two formulas. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights cells that does not contains the + given formula. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights cells that are not blank. + + + Equivalent of using LEN(TRIM()). This means that if the cell contains only + characters that TRIM() would remove, then it is considered blank. An empty cell + is also considered blank. + + NotContainsBlanks Excel CF Rule Type + + + + This conditional formatting rule highlights cells without formula errors. + + + Equivalent to using ISERROR() sheet function to determine if there is a + formula error. + + NotContainsErrors Excel CF Rule Type + + + + This conditional formatting rule highlights cells that do not contain + the given text. + + + Equivalent to using the SEARCH() sheet function. + + NotContainsText Excel CF Rule Type + + + + This conditional formatting rule highlights cells not equals to with + given formula. + + CellIs Excel CF Rule Type + + + + This conditional formatting rule highlights unique values in the range. + + UniqueValues Excel CF Rule Type + + + + Three Color Scale (Low, Middle and High Color Scale) + + ColorScale Excel CF Rule Type + + + + Two Color Scale (Low and High Color Scale) + + ColorScale Excel CF Rule Type + + + + This conditional formatting rule applies a 3 set icons to cells according + to their values. + + IconSet Excel CF Rule Type + + + + This conditional formatting rule applies a 4 set icons to cells according + to their values. + + IconSet Excel CF Rule Type + + + + This conditional formatting rule applies a 5 set icons to cells according + to their values. + + IconSet Excel CF Rule Type + + + + This conditional formatting rule displays a gradated data bar in the range of cells. + + DataBar Excel CF Rule Type + + + + Enum for Conditional Format Value Object Type ST_CfvoType §18.18.13 + + + + + Formula + + + + + Maximum Value + + + + + Minimum Value + + + + + Number Value + + + + + Percent + + + + + Percentile + + + + + Enum for Conditional Formatting Value Object Position + + + + + The lower position for both TwoColorScale and ThreeColorScale + + + + + The middle position only for ThreeColorScale + + + + + The highest position for both TwoColorScale and ThreeColorScale + + + + + Enum for Conditional Formatting Value Object Node Type + + + + + 'cfvo' node + + + + + 'color' node + + + + + Enum for Conditional Formatting Operartor Type ST_ConditionalFormattingOperator §18.18.15 + + + + + Begins With. 'Begins with' operator + + + + + Between. 'Between' operator + + + + + Contains. 'Contains' operator + + + + + Ends With. 'Ends with' operator + + + + + Equal. 'Equal to' operator + + + + + Greater Than. 'Greater than' operator + + + + + Greater Than Or Equal. 'Greater than or equal to' operator + + + + + Less Than. 'Less than' operator + + + + + Less Than Or Equal. 'Less than or equal to' operator + + + + + Not Between. 'Not between' operator + + + + + Does Not Contain. 'Does not contain' operator + + + + + Not Equal. 'Not equal to' operator + + + + + Enum for Conditional Formatting Time Period Type ST_TimePeriod §18.18.82 + + + + + Last 7 Days. A date in the last seven days. + + + + + Last Month. A date occuring in the last calendar month. + + + + + Last Week. A date occuring last week. + + + + + Next Month. A date occuring in the next calendar month. + + + + + Next Week. A date occuring next week. + + + + + This Month. A date occuring in this calendar month. + + + + + This Week. A date occuring this week. + + + + + Today. Today's date. + + + + + Tomorrow. Tomorrow's date. + + + + + Yesterday. Yesterday's date. + + + + + 18.18.42 ST_IconSetType (Icon Set Type) - Only 3 icons + + + + + (3 Arrows) 3 arrows icon set. + + + + + (3 Arrows (Gray)) 3 gray arrows icon set. + + + + + (3 Flags) 3 flags icon set. + + + + + (3 Signs) 3 signs icon set. + + + + + (3 Symbols Circled) 3 symbols icon set. + + + + + (3 Symbols) 3 Symbols icon set. + + + + + (3 Traffic Lights) 3 traffic lights icon set (#1). + + + + + (3 Traffic Lights Black) 3 traffic lights icon set with thick black border. + + + + + 18.18.42 ST_IconSetType (Icon Set Type) - Only 4 icons + + + + + (4 Arrows) 4 arrows icon set. + + + + + (4 Arrows (Gray)) 4 gray arrows icon set. + + + + + (4 Ratings) 4 ratings icon set. + + + + + (4 Red To Black) 4 'red to black' icon set. + + + + + (4 Traffic Lights) 4 traffic lights icon set. + + + + + 18.18.42 ST_IconSetType (Icon Set Type) - Only 5 icons + + + + + (5 Arrows) 5 arrows icon set. + + + + + (5 Arrows (Gray)) 5 gray arrows icon set. + + + + + (5 Quarters) 5 quarters icon set. + + + + + (5 Ratings Icon Set) 5 rating icon set. + + + + + 18.18.42 ST_IconSetType (Icon Set Type) + + + + + (3 Arrows) 3 arrows icon set. + + + + + (3 Arrows (Gray)) 3 gray arrows icon set. + + + + + (3 Flags) 3 flags icon set. + + + + + (3 Signs) 3 signs icon set. + + + + + (3 Symbols Circled) 3 symbols icon set. + + + + + (3 Symbols) 3 Symbols icon set. + + + + + (3 Traffic Lights) 3 traffic lights icon set (#1). + + + + + (3 Traffic Lights Black) 3 traffic lights icon set with thick black border. + + + + + (4 Arrows) 4 arrows icon set. + + + + + (4 Arrows (Gray)) 4 gray arrows icon set. + + + + + (4 Ratings) 4 ratings icon set. + + + + + (4 Red To Black) 4 'red to black' icon set. + + + + + (4 Traffic Lights) 4 traffic lights icon set. + + + + + (5 Arrows) 5 arrows icon set. + + + + + (5 Arrows (Gray)) 5 gray arrows icon set. + + + + + (5 Quarters) 5 quarters icon set. + + + + + (5 Ratings Icon Set) 5 rating icon set. + + + + + Functions related to the + + + + + Get the sequencial order of a cfvo/color by its position. + + + + 1, 2 or 3 + + + + Get the CFVO type by its @type attribute + + + + + + + + + + + + + + + + + + + + + + + + Get the cfvo (§18.3.1.11) node parent by the rule type. Can be any of the following: + "colorScale" (§18.3.1.16); "dataBar" (§18.3.1.28); "iconSet" (§18.3.1.49) + + + + + + + + + + + + + + ExcelConditionalFormattingBeginsWith + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The text to search in the beginning of the cell + + + + + ExcelConditionalFormattingBelowAverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingBelowOrEqualAverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingBelowStdDev + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingBetween + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingBottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingBottomPercent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingContainsBlanks + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingContainsErrors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingContainsText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The text to search inside the cell + + + + + ExcelConditionalFormattingDuplicateValues + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingEndsWith + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The text to search in the end of the cell + + + + + ExcelConditionalFormattingEqual + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingExpression + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingGreaterThan + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingGreaterThanOrEqual + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingLast7Days + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingLastMonth + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingLastWeek + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingLessThan + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingLessThanOrEqual + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingNextMonth + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingNextWeek + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingNotBetween + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingNotContainsBlanks + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingNotContainsErrors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingNotContainsText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The text to search inside the cell + + + + + ExcelConditionalFormattingNotEqual + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sinalize that we are in a Cnaging Priorities opeartion so that we won't enter + a recursive loop. + + + + + Initialize the + + + + Used also as the cfRule unique key + + + + + + + Initialize the + + + + + + + + + + Get the <cfRule> node + + + + + Address of the conditional formatting rule + + + The address is stores in a parent node called <conditionalFormatting> in the + @sqref attribute. Excel groups rules that have the same address inside one node. + + + + + Type of conditional formatting rule. ST_CfType §18.18.12. + + + + + The priority of this conditional formatting rule. This value is used to determine + which format should be evaluated and rendered. Lower numeric values are higher + priority than higher numeric values, where 1 is the highest priority. + + + + + If this flag is true, no rules with lower priority shall be applied over this rule, + when this rule evaluates to true. + + + + + DxfId Style Attribute + + + + + StdDev (zero is not allowed and will be converted to 1) + + + + + Rank (zero is not allowed and will be converted to 1) + + + + + AboveAverage + + + + + EqualAverage + + + + + Bottom attribute + + + + + Percent attribute + + + + + TimePeriod + + + + + Operator + + + + + Formula + + + + + Formula2 + + + + + Functions related to the ExcelConditionalFormattingRule + + + + + + + + + + + + + + Get the "colorScale" rule type according to the number of "cfvo" and "color" nodes. + If we have excatly 2 "cfvo" and "color" childs, then we return "twoColorScale" + + TwoColorScale or ThreeColorScale + + + + Get the "aboveAverage" rule type according to the follwoing attributes: + "AboveAverage", "EqualAverage" and "StdDev". + + @StdDev greater than "0" == AboveStdDev + @StdDev less than "0" == BelowStdDev + @AboveAverage = "1"/null and @EqualAverage = "0"/null == AboveAverage + @AboveAverage = "1"/null and @EqualAverage = "1" == AboveOrEqualAverage + @AboveAverage = "0" and @EqualAverage = "0"/null == BelowAverage + @AboveAverage = "0" and @EqualAverage = "1" == BelowOrEqualAverage + /// + AboveAverage, AboveOrEqualAverage, BelowAverage or BelowOrEqualAverage + + + + Get the "top10" rule type according to the follwoing attributes: + "Bottom" and "Percent" + + @Bottom = "1" and @Percent = "0"/null == Bottom + @Bottom = "1" and @Percent = "1" == BottomPercent + @Bottom = "0"/null and @Percent = "0"/null == Top + @Bottom = "0"/null and @Percent = "1" == TopPercent + /// + Top, TopPercent, Bottom or BottomPercent + + + + Get the "timePeriod" rule type according to "TimePeriod" attribute. + /// + Last7Days, LastMonth etc. + + + + + + + + + + + Return cfvo §18.3.1.11 parent according to the rule type + + + + + + + ExcelConditionalFormattingThisMonth + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingThisWeek + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingThreeColorScale + + + + + Private Low Value + + + + + Private Middle Value + + + + + Private High Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Low Value for Three Color Scale Object Value + + + + + Middle Value for Three Color Scale Object Value + + + + + High Value for Three Color Scale Object Value + + + + + ExcelConditionalFormattingThreeIconSet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Settings for icon 1 in the iconset + + + + + Settings for icon 2 in the iconset + + + + + Settings for icon 2 in the iconset + + + + + Reverse the order of the icons + + + + + If the cell values are visible + + + + + Type of iconset + + + + + ExcelConditionalFormattingTimePeriodGroup + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingToday + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingTomorrow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingTop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingTopPercent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingTwoColorScale + + + + + Private Low Value + + + + + Private High Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Low Value for Two Color Scale Object Value + + + + + High Value for Two Color Scale Object Value + + + + + Conditional formatting helper + + + + + Check and fix an address (string address) + + + + + + + Convert a color code to Color Object + + Color Code (Ex. "#FFB43C53" or "FFB43C53") + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Encode to XML (special characteres: ' " > < &) + + + + + + + Decode from XML (special characteres: ' " > < &) + + + + + + + Provides functionality for adding Conditional Formatting to a range (). + Each method will return a configurable condtional formatting type. + + + + + Adds a Above Average rule to the range + + + + + + Adds a Above Or Equal Average rule to the range + + + + + + Adds a Below Average rule to the range + + + + + + Adds a Below Or Equal Average rule to the range + + + + + + Adds a Above StdDev rule to the range + + + + + + Adds a Below StdDev rule to the range + + + + + + Adds a Bottom rule to the range + + + + + + Adds a Bottom Percent rule to the range + + + + + + Adds a Top rule to the range + + + + + + Adds a Top Percent rule to the range + + + + + + Adds a Last 7 Days rule to the range + + + + + + Adds a Last Month rule to the range + + + + + + Adds a Last Week rule to the range + + + + + + Adds a Next Month rule to the range + + + + + + Adds a Next Week rule to the range + + + + + + Adds a This Month rule to the range + + + + + + Adds a This Week rule to the range + + + + + + Adds a Today rule to the range + + + + + + Adds a Tomorrow rule to the range + + + + + + Adds a Yesterday rule to the range + + + + + + Adds a Begins With rule to the range + + + + + + Adds a Between rule to the range + + + + + + Adds a ContainsBlanks rule to the range + + + + + + Adds a ContainsErrors rule to the range + + + + + + Adds a ContainsText rule to the range + + + + + + Adds a DuplicateValues rule to the range + + + + + + Adds a EndsWith rule to the range + + + + + + Adds a Equal rule to the range + + + + + + Adds a Expression rule to the range + + + + + + Adds a GreaterThan rule to the range + + + + + + Adds a GreaterThanOrEqual rule to the range + + + + + + Adds a LessThan rule to the range + + + + + + Adds a LessThanOrEqual rule to the range + + + + + + Adds a NotBetween rule to the range + + + + + + Adds a NotContainsBlanks rule to the range + + + + + + Adds a NotContainsErrors rule to the range + + + + + + Adds a NotContainsText rule to the range + + + + + + Adds a NotEqual rule to the range + + + + + + Adds a UniqueValues rule to the range + + + + + + Adds a to the range + + + + + + Adds a to the range + + + + + + Adds a to the range + + + + + + + Adds a to the range + + + + + + + Adds a to the range + + + + + + + Adds a to the range + + + + + + + Add AboveOrEqualAverage Conditional Formatting + + + + + + Add AboveOrEqualAverage Conditional Formatting + + + + + + Add BelowOrEqualAverage Conditional Formatting + + + + + + Add BelowOrEqualAverage Conditional Formatting + + + + + + Add AboveStdDev Conditional Formatting + + + + + + Add BelowStdDev Conditional Formatting + + + + + + Add Bottom Conditional Formatting + + + + + + Add BottomPercent Conditional Formatting + + + + + + Add Top Conditional Formatting + + + + + + Add TopPercent Conditional Formatting + + + + + + Add Last7Days Conditional Formatting + + + + + + Add LastMonth Conditional Formatting + + + + + + Add LastWeek Conditional Formatting + + + + + + Add NextMonth Conditional Formatting + + + + + + Add NextWeek Conditional Formatting + + + + + + Add ThisMonth Conditional Formatting + + + + + + Add ThisWeek Conditional Formatting + + + + + + Add Today Conditional Formatting + + + + + + Add Tomorrow Conditional Formatting + + + + + + Add Yesterday Conditional Formatting + + + + + + Add BeginsWith Conditional Formatting + + + + + + Add Between Conditional Formatting + + + + + + Add ContainsBlanks Conditional Formatting + + + + + + Add ContainsErrors Conditional Formatting + + + + + + Add ContainsText Conditional Formatting + + + + + + Add DuplicateValues Conditional Formatting + + + + + + Add EndsWith Conditional Formatting + + + + + + Add Equal Conditional Formatting + + + + + + Add Expression Conditional Formatting + + + + + + Add GreaterThan Conditional Formatting + + + + + + Add GreaterThanOrEqual Conditional Formatting + + + + + + Add LessThan Conditional Formatting + + + + + + Add LessThanOrEqual Conditional Formatting + + + + + + Add NotBetween Conditional Formatting + + + + + + Add NotContainsBlanks Conditional Formatting + + + + + + Add NotContainsErrors Conditional Formatting + + + + + + Add NotContainsText Conditional Formatting + + + + + + Add NotEqual Conditional Formatting + + + + + + Add UniqueValues Conditional Formatting + + + + + + Add ThreeColorScale Conditional Formatting + + + + + + Add TwoColorScale Conditional Formatting + + + + + + Adds a ThreeIconSet rule + + + + + + + Adds a FourIconSet rule + + + + + + + Adds a FiveIconSet rule + + + + + + + Adds a Databar rule + + The color of the databar + + + + + ExcelConditionalFormattingUniqueValues + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExcelConditionalFormattingYesterday + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interface for data validation + + + + + Address of data validation + + + + + Validation type + + + + + Controls how Excel will handle invalid values. + + + + + True if input message should be shown + + + + + True if input message should be shown + + + + + True if error message should be shown. + + + + + Title of error message box (see property ShowErrorMessage) + + + + + Error message box text (see property ShowErrorMessage) + + + + + Title of info box if input message should be shown (see property ShowInputMessage) + + + + + Info message text (see property ShowErrorMessage) + + + + + True if the current validation type allows operator. + + + + + Validates the state of the validation. + + + + + Data validation interface for Any value validation. + + + + + Data validation interface for custom validation. + + + + + Validation interface for datetime validations + + + + + Data validation interface for decimal values + + + + + Data validation interface for time validation. + + + + + Interface for a data validation with two formulas + + + + + + Formula 2 + + + + + Represents a validation with an operator + + + + + Operator type + + + + + Any value validation. + + + + + Constructor + + + + + + + + Constructor + + + + + + + + + Constructor + + + + + + + + + + This method will validate the state of the validation + + + + + Custom validation, i.e. a formula. + + + + + Constructor + + + + + + + + Constructor + + + + + + + + + Constructor + + + + + + + + + + Validation for . + + + + + Constructor + + + + + + + + Constructor + + + + + + + + + Constructor + + + + + + + + + + Factory class for ExcelDataValidation. + + + + + Creates an instance of out of the given parameters. + + + + + + + + + + Validation for times (). + + + + + Constructor + + + + + + + + Constructor + + + + + + + + + Constructor + + + + + + + + + + A validation containing a formula + + + + + + Constructor + + + + + + + + Constructor + + Worksheet that owns the validation + Xml top node (dataValidations) + Data validation type + address for data validation + + + + Constructor + + Worksheet that owns the validation + Xml top node (dataValidations) + Data validation type + address for data validation + for test purposes + + + + Formula - Either a {T} value (except for custom validation) or a spreadsheet formula + + + + + Constructor + + + + + + + + Constructor + + Worksheet that owns the validation + Xml top node (dataValidations) + Data validation type + address for data validation + + + + Constructor + + Worksheet that owns the validation + Xml top node (dataValidations) + Data validation type + address for data validation + for test purposes + + + + Formula - Either a {T} value or a spreadsheet formula + + + + + Represents a time between 00:00:00 and 23:59:59 + + + + + Max number of decimals when rounding. + + + + + Default constructor + + + + + Constructor + + An existing time for initialization + + + + If we are unlucky second might be rounded up to 60. This will have the minute to be raised and might affect the hour. + + + + + + Hour between 0 and 23 + + + + + Minute between 0 and 59 + + + + + Second between 0 and 59 + + + + + Returns the excel decimal representation of a time. + + + + + + Returns the excel decimal representation of a time as a string. + + + + + + Interface for a data validation formula + + + + + An excel formula + + + + + Validation formula interface for + + + + + Interface for a data validation of list type + + + + + A list of value strings. + + + + + Interface for a formula with a value + + + + + + The value. + + + + + Interface for a data validation formula of float value + + + + + Interface for a data validation formula of value + + + + + Enumeration representing the state of an + + + + + Value is set + + + + + Formula is set + + + + + Base class for a formula + + + + + Constructor + + Namespacemanger of the worksheet + validation top node + xml path of the current formula + + + + State of the validationformula, i.e. tells if value or formula is set + + + + + A formula which output must match the current validation type + + + + + This value will be stored in the xml. Can be overridden by subclasses + + + + + Returns the value as a string. Must be implemented by subclasses + + + + + + + + + + + This class represents a validation formula. Its value can be specified as a value of the specified datatype or as a formula. + + + + + + Constructor + + Namespacemanger of the worksheet + validation top node + xml path of the current formula + + + + Typed value + + + + + + + + + + Operator for comparison between Formula and Formula2 in a validation. + + + + + warning style, controls how Excel will handle invalid changes. + + + + + warning style will be excluded + + + + + stop warning style, invalid changes will not be accepted + + + + + warning will be presented when an attempt to an invalid change is done, but the change will be accepted. + + + + + information warning style. + + + + + Data validation for decimal values + + + + + Constructor + + + + + + + + Constructor + + + + + + + + + Constructor + + + + + + For test purposes + + + + This class represents an List data validation. + + + + + Constructor + + + + + + + + Constructor + + + + + + + + + Constructor + + + + + + Namespace manager, for test purposes + + + + Data validation for integer values. + + + + + Constructor + + + + + + + + Constructor + + + + + + + + + Constructor + + + + + + For test purposes + + + + Provides functionality for adding datavalidation to a range (). Each method will + return a configurable validation. + + + + + Adds a to the range. + + A that can be configured for any validation + + + + Adds a to the range + + A that can be configured for integer data validation + + + + Adds a to the range + + A that can be configured for decimal data validation + + + + Adds a to the range + + A that can be configured for datetime data validation + + + + Adds a to the range + + A that can be configured for datetime data validation + + + + Adds a regarding text length validation to the range. + + + + + + Adds a to the range. + + A that can be configured for time data validation + + + + Adds a to the range. + + A that can be configured for custom validation + + + + Excel datavalidation + + + + + Constructor + + worksheet that owns the validation + Xml top node (dataValidations) + Data validation type + address for data validation + + + + Constructor + + worksheet that owns the validation + Xml top node (dataValidations) when importing xml + Data validation type + address for data validation + Xml Namespace manager + + + + This method will validate the state of the validation + + If the state breaks the rules of the validation + + + + True if the validation type allows operator to be set. + + + + + Address of data validation + + + + + Validation type + + + + + Operator for comparison between the entered value and Formula/Formulas. + + + + + Warning style + + + + + True if blanks should be allowed + + + + + True if input message should be shown + + + + + True if error message should be shown + + + + + Title of error message box + + + + + Error message box text + + + + + Formula 1 + + + + + Formula 2 + + + + + + Collection of . This class is providing the API for EPPlus data validation. + + + The public methods of this class (Add[...]Validation) will create a datavalidation entry in the worksheet. When this + validation has been created changes to the properties will affect the workbook immediately. + + + Each type of validation has either a formula or a typed value/values, except for custom validation which has a formula only. + + + // Add a date time validation + var validation = worksheet.DataValidation.AddDateTimeValidation("A1"); + // set validation properties + validation.ShowErrorMessage = true; + validation.ErrorTitle = "An invalid date was entered"; + validation.Error = "The date must be between 2011-01-31 and 2011-12-31"; + validation.Prompt = "Enter date here"; + validation.Formula.Value = DateTime.Parse("2011-01-01"); + validation.Formula2.Value = DateTime.Parse("2011-12-31"); + validation.Operator = ExcelDataValidationOperator.between; + + + + + + Constructor + + + + + + Validates address - not empty, collisions + + + + + + + Validates all data validations. + + + + + Adds a to the worksheet. + + The range/address to validate + + + + + Adds an to the worksheet. Whole means that the only accepted values + are integer values. + + the range/address to validate + + + + Addes an to the worksheet. The only accepted values are + decimal values. + + The range/address to validate + + + + + Adds an to the worksheet. The accepted values are defined + in a list. + + The range/address to validate + + + + + Adds an regarding text length to the worksheet. + + The range/address to validate + + + + + Adds an to the worksheet. + + The range/address to validate + + + + + Adds a to the worksheet. + + The range/address to validate + + + + + Removes an from the collection. + + The item to remove + True if remove succeeds, otherwise false + if is null + + + + Number of validations + + + + + Index operator, returns by 0-based index + + + + + + + Index operator, returns a data validation which address partly or exactly matches the searched address. + + A cell address or range + A or null if no match + + + + Returns all validations that matches the supplied predicate . + + predicate to filter out matching validations + + + + + Returns the first matching validation. + + + + + + + Removes all validations from the collection. + + + + + Removes the validations that matches the predicate + + + + + + Enum for available data validation types + + + + + Any value + + + + + Integer value + + + + + Decimal values + + + + + List of values + + + + + Text length validation + + + + + DateTime validation + + + + + Time validation + + + + + Custom validation + + + + + Types of datavalidation + + + + + Validation type + + + + + This type allows operator to be set + + + + + Returns a validation type by + + + + + + + Overridden Equals, compares on internal validation type + + + + + + + Overrides GetHashCode() + + + + + + Integer values + + + + + Integer values + + + + + List of allowed values + + + + + A serie for a scatter chart + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + Datalabel + + + + + A serie for a surface chart + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + A Surface chart + + + + + Provides access to line chart specific properties + + + + + The type of radarchart + + + + + Access to datalabel properties + + + + + A serie for a scatter chart + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + Datalabel + + + + + A serie for a line chart + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + Datalabels + + + + + Marker symbol + + + + + Smoth lines + + + + + Line color. + + + + The color of the line. + + + + + Gets or sets the size of the marker. + + + + value between 2 and 72. + + + + The size of the marker. + + + + + Gets or sets the width of the line in pt. + + + + The width of the line. + + + + + Marker Line color. + (not to be confused with LineColor) + + + + The color of the Marker line. + + + + + Chart type + + + + + Bar or column + + + + + How the series are grouped + + + + + Shape for bar charts + + + + + Smooth or lines markers + + + + + Specifies that the radar chart shall be filled and have lines but no markers. + + + + + Specifies that the radar chart shall have lines and markers but no fill. + + + + + Specifies that the radar chart shall have lines but no markers and no fill. + + + + + Bar or pie + + + + + Position of the labels + + + + + Axis label position + + + + + Markerstyle + + + + + The time unit of major and minor datetime axis values + + + + + The build in style of the chart. + + + + + Type of Trendline for a chart + + + + + Specifies the trendline shall be an exponential curve in the form + + + + + Specifies the trendline shall be a logarithmic curve in the form , where log is the natural + + + + + Specifies the trendline shall be a logarithmic curve in the form , where log is the natural + + + + + Specifies the trendline shall be a moving average of period Period + + + + + Specifies the trendline shall be a polynomial curve of order Order in the form + + + + + Specifies the trendline shall be a power curve in the form + + + + + Specifies the possible ways to display blanks + + + + + Blank values shall be left as a gap + + + + + Blank values shall be spanned with a line (Line charts) + + + + + Blank values shall be treated as zero + + + + + Specifies the area of the bubbles shall be proportional to the bubble size value. + + + + + Specifies the radius of the bubbles shall be proportional to the bubble size value. + + + + + Base class for Chart object. + + + + + Get the name of the chart node + + The name + + + + Add a secondary axis + + + + + Reference to the worksheet + + + + + The chart xml document + + + + + Type of chart + + + + + Titel of the chart + + + + + Chart series + + + + + An array containg all axis of all Charttypes + + + + + The XAxis + + + + + The YAxis + + + + + If true the charttype will use the secondary axis. + The chart must contain a least one other charttype that uses the primary axis. + + + + + The build-in chart styles. + + + + + Show data in hidden rows and columns + + + + + Specifies the possible ways to display blanks + + + + + Specifies data labels over the maximum of the chart shall be shown + + + + + Remove all axis that are not used any more + + + + + + Plotarea + + + + + Legend + + + + + Border + + + + + Fill + + + + + 3D-settings + + + + + If the chart has only one serie this varies the colors for each point. + + + + + Package internal URI + + + + + Enumerates charttypes + + + + + Add a new charttype to the chart + + The type of the new chart + + + + + Returns a chart at the specific position. + + The position of the chart. 0-base + + + + + A collection of trendlines. + + + + + Add a new trendline + + + The trendline + + + + A trendline object + + + + + Type of Trendline + + + + + Name in the legend + + + + + Order for polynominal trendlines + + + + + Period for monthly average trendlines + + + + + Forcast forward periods + + + + + Forcast backwards periods + + + + + Specify the point where the trendline crosses the vertical axis + + + + + Display the R-squared value for a trendline + + + + + Display the trendline equation on the chart + + + + + Provides access to bubble chart specific properties + + + + + Specifies the scale factor for the bubble chart. Can range from 0 to 300, corresponding to a percentage of the default size, + + + + + Specifies the scale factor for the bubble chart. Can range from 0 to 300, corresponding to a percentage of the default size, + + + + + Specifies if the bubblechart is three dimensional + + + + + Specifies the scale factor for the bubble chart. Can range from 0 to 300, corresponding to a percentage of the default size, + + + + + Chart surface settings + + + + + Show the values + + + + + Access fill properties + + + + + Access border properties + + + + + A serie for a scatter chart + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + Datalabel + + + + + Marker symbol + + + + + Provides access to line chart specific properties + + + + + If the series has markers + + + + + If the series has smooth lines + + + + + Access to datalabel properties + + + + + Position of the legend + + + + + Chart ledger + + + + + Position of the Legend + + + + + If the legend overlays other objects + + + + + Fill style + + + + + Border style + + + + + Font properties + + + + + Remove the legend + + + + + Add a legend to the chart + + + + + A charts plot area + + + + + Datalabel properties + + + + + Position of the labels + + + + + Access fill properties + + + + + Access border properties + + + + + Access font properties + + + + + A serie for a scatter chart + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + Datalabel + + + + + Smooth for scattercharts + + + + + Marker symbol + + + + + Line color. + + + + The color of the line. + + + + + Gets or sets the size of the marker. + + + + value between 2 and 72. + + + + The size of the marker. + + + + + Marker color. + + + + The color of the Marker. + + + + + Gets or sets the width of the line in pt. + + + + The width of the line. + + + + + Marker Line color. + (not to be confused with LineColor) + + + + The color of the Marker line. + + + + + write alpha value (if Color.A != 255) + + Color + where to write + + alpha-values may only written to color-nodes + eg: a:prstClr (preset), a:hslClr (hsl), a:schemeClr (schema), a:sysClr (system), a:scrgbClr (rgb percent) or a:srgbClr (rgb hex) + .../a:prstClr/a:alpha/@val + + + + + read AlphaChannel from a:solidFill + + + alpha or 255 if their is no such node + + + + creates xPath to alpha attribute for a color + eg: a:prstClr/a:alpha/@val + + xPath to color node + + + + + The title of a chart + + + + + The text + + + + + A reference to the border properties + + + + + A reference to the fill properties + + + + + A reference to the font properties + + + + + Richtext + + + + + Show without overlaping the chart. + + + + + Specifies the centering of the text box. + The way it works fundamentally is to determine the smallest possible "bounds box" for the text and then to center that "bounds box" accordingly. + This is different than paragraph alignment, which aligns the text within the "bounds box" for the text. + This flag is compatible with all of the different kinds of anchoring. + If this attribute is omitted, then a value of 0 or false is implied. + + + + + Vertical text + + + + + Rotation in degrees (0-360) + + + + + Provides access to ofpie-chart specific properties + + + + + Type, pie or bar + + + + + The size of the gap between two adjacent bars/columns + + + + + A serie for a pie chart + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + Explosion for Piecharts + + + + + DataLabels + + + + + Bar chart + + + + + Direction, Bar or columns + + + + + The shape of the bar/columns + + + + + Access to datalabel properties + + + + + The size of the gap between two adjacent bars/columns + + + + + Position of the axis. + + + + + Position of the Y-Axis + + + + + Position of the X-Axis + + + + + Axis orientaion + + + + + How the axis are crossed + + + + + Specifies the value axis shall cross the category axis between data markers + + + + + Specifies the value axis shall cross the category axis at the midpoint of a category. + + + + + Where the axis cross. + + + + + (Axis Crosses at Zero) The category axis crosses at the zero point of the valueaxis (if possible), or the minimum value (if theminimum is greater than zero) or the maximum (if the maximum is less than zero). + + + + + The axis crosses at the maximum value + + + + + (Axis crosses at the minimum value of the chart. + + + + + Tickmarks + + + + + Specifies the tick marks shall cross the axis. + + + + + Specifies the tick marks shall be inside the plot area. + + + + + Specifies there shall be no tick marks. + + + + + Specifies the tick marks shall be outside the plot area. + + + + + An axis for a chart + + + + + Type of axis + + + + + Value axis + + + + + Category axis + + + + + Date axis + + + + + Series axis + + + + + majorTickMark + This element specifies the major tick marks for the axis. + + + + + minorTickMark + This element specifies the minor tick marks for the axis. + + + + + Type of axis + + + + + Where the axis is located + + + + + Where the axis cross + + + + + How the axis are crossed + + + + + The value where the axis cross. + Null is automatic + + + + + Numberformat + + + + + Position of the labels + + + + + Access to fill properties + + + + + Access to border properties + + + + + Access to font properties + + + + + If the axis is deleted + + + + + Position of the Lables + + + + + Chart axis title + + + + + Minimum value for the axis. + Null is automatic + + + + + Max value for the axis. + Null is automatic + + + + + Major unit for the axis. + Null is automatic + + + + + Major time unit for the axis. + Null is automatic + + + + + Minor unit for the axis. + Null is automatic + + + + + Minor time unit for the axis. + Null is automatic + + + + + The base for a logaritmic scale + Null for a normal scale + + + + + + + + + + Datalabel on chart level. + This class is inherited by ExcelChartSerieDataLabel + + + + + Show the values + + + + + Show category names + + + + + Show series names + + + + + Show percent values + + + + + Show the leader lines + + + + + Bubble Size. + + + + + Separator string + + + + + Access fill properties + + + + + Access border properties + + + + + Access font properties + + + + + A chart serie + + + + + Default constructor + + Parent collection + Namespacemanager + Topnode + Is pivotchart + + + + Header for the serie. + + + + + Header address for the serie. + + + + + Set this to a valid address or the drawing will be invalid. + + + + + Set an address for the horisontal labels + + + + + Access to the trendline collection + + + + + Collection class for chart series + + + + + Returns the serie at the specified position. + + The position of the series. + + + + + Delete the chart at the specific position + + Zero based + + + + A reference to the chart object + + + + + Add a new serie to the chart. Do not apply to pivotcharts. + + The Y-Axis range + The X-Axis range + + + + + Add a new serie to the chart.Do not apply to pivotcharts. + + The Y-Axis range + The X-Axis range + + + + + Provides access to doughnut chart specific properties + + + + + Angle of the first slize + + + + + Size of the doubnut hole + + + + + Provides access to pie chart specific properties + + + + + Access to datalabel properties + + + + + Provides access to scatter chart specific properties + + + + + If the scatter has LineMarkers or SmoothMarkers + + + + + If the series has markers + + + + + Text anchoring + + + + + Vertical text type + + + + + How the drawing will be resized. + + + + + Specifies that the current start and end positions shall + be maintained with respect to the distances from the + absolute start point of the worksheet. + + + + + Specifies that the current drawing shall move with its + row and column (i.e. the object is anchored to the + actual from row and column), but that the size shall + remain absolute. + + + + + Specifies that the current drawing shall move and + resize to maintain its row and column anchors (i.e. the + object is anchored to the actual from and to row and column). + + + + + Base class for twoanchored drawings. + Drawings are Charts, shapes and Pictures. + + + + + Position of the a drawing. + + + + + Column Offset + + EMU units 1cm = 1/360000 + 1US inch = 1/914400 + 1pixel = 1/9525 + + + + + Row Offset + + EMU units 1cm = 1/360000 + 1US inch = 1/914400 + 1pixel = 1/9525 + + + + + The name of the drawing object + + + + + How Excel resize drawings when the column width is changed within Excel. + The width of drawings are currently NOT resized in EPPLus when the column width changes + + + + + Lock drawing + + + + + Print drawing with sheet + + + + + Top Left position + + + + + Bottom right position + + + + + Add new Drawing types here + + The drawing collection + Xml top node + The Drawing object + + + + Set the top left corner of a drawing. + Note that resizing columns / rows after using this function will effect the position of the drawing + + Top pixel + Left pixel + + + + Set the top left corner of a drawing. + Note that resizing columns / rows after using this function will effect the position of the drawing + + Start row - 0-based index. + Offset in pixels + Start Column - 0-based index. + Offset in pixels + + + + Set size in Percent + Note that resizing columns / rows after using this function will effect the size of the drawing + + + + + + Set size in pixels + Note that resizing columns / rows after using this function will effect the size of the drawing + + Width in pixels + Height in pixels + + + + Will adjust the position and size of the drawing according to chages in font of rows and to the Normal style. + This method will be called before save, so use it only if you need the coordinates of the drawing. + + + + + Properties for drawing line ends + + + + + HeaderEnd + + + + + HeaderEnd + + + + + TailEndSizeWidth + + + + + TailEndSizeHeight + + + + + TailEndSizeWidth + + + + + TailEndSizeHeight + + + + + An image object + + + + + The Image + + + + + Image format + If the picture is created from an Image this type is always Jpeg + + + + + Set the size of the image in percent from the orginal size + Note that resizing columns / rows after using this function will effect the size of the picture + + Percent + + + + Fill + + + + + Border + + + + + Hyperlink + + + + + Indexer + + Index + The VML Drawing Picture object + + + + returns the next drawing id. + + + + + + returns the next drawing id. + + + + + + Drawing object used for header and footer pictures + + + + + Position ID + + + + + The width in points + + + + + The height in points + + + + + Margin Left in points + + + + + Margin top in points + + + + + The Title of the image + + + + + The image + + + + + Determines whether an image will be displayed in black and white + + + + + Determines whether a picture will be displayed in grayscale mode + + + + + Defines the intensity of all colors in an image + Default value is 1 + + + + + Defines the amount of contrast for an image + Default value is 0; + + + + + Defines the intensity of black in an image + Default value is 0 + + + + + Horizontal Alingment + + + + + Vertical Alingment + + + + + Linestyle + + + + + Drawing object used for comments + + + + + Alternative text to be displayed instead of a graphic. + + + + + Drawing object used for comments + + + + + Address in the worksheet + + + + + Vertical alignment for text + + + + + Horizontal alignment for text + + + + + If the drawing object is visible. + + + + + Background color + + + + + Linestyle for border + + + + + Line color + + + + + Width of the border + + + + + Autofits the drawingobject + + + + + If the object is locked when the sheet is protected + + + + + Specifies that the object's text is locked + + + + + From position. For comments only when Visible=true. + + + + + To position. For comments only when Visible=true. + + + + + Row position for a comment + + + + + Column position for a comment + + + + + The position of a VML drawing. Used for comments + + + + + Row. Zero based + + + + + Row offset in pixels. Zero based + + + + + Column. Zero based + + + + + Column offset. Zero based + + + + + Collection for Drawing objects. + + + + + A reference to the drawing xml document + + + + + Creates the NamespaceManager. + + + + + Provides access to a namespace manager instance to allow XPath searching + + + + + Returns the drawing at the specified position. + + The position of the drawing. 0-base + + + + + Returns the drawing matching the specified name + + The name of the worksheet + + + + + Add a new chart to the worksheet. + Do not support Bubble-, Radar-, Stock- or Surface charts. + + + Type of chart + The pivottable source for a pivotchart + The chart + + + + Add a new chart to the worksheet. + Do not support Bubble-, Radar-, Stock- or Surface charts. + + + Type of chart + The chart + + + + Add a picure to the worksheet + + + An image. Allways saved in then JPeg format + + + + + Add a picure to the worksheet + + + An image. Allways saved in then JPeg format + Picture Hyperlink + + + + + Add a picure to the worksheet + + + The image file + + + + + Add a picure to the worksheet + + + The image file + Picture Hyperlink + + + + + Add a new shape to the worksheet + + Name + Shape style + The shape object + + + + Add a new shape to the worksheet + + Name + Source shape + The shape object + + + + Removes a drawing. + + The index of the drawing + + + + Removes a drawing. + + The drawing + + + + Removes a drawing. + + The name of the drawing + + + + Removes all drawings from the collection + + + + + An Excel shape. + + + + + Shape style + + + + + Fill + + + + + Border + + + + + Line Ends + + + + + Text inside the shape + + + + + Lock drawing + + + + + Richtext collection. Used to format specific parts of the text + + + + + Text Anchoring + + + + + Specifies the centering of the text box. + + + + + How the text is aligned + + + + + Indentation + + + + + Vertical text + + + + + Type of Line cap + + + + + Line style. + + + + + Border for drawings + + + + + Fill + + + + + Linestyle + + + + + Linecap + + + + + Width in pixels + + + + + Fill properties for drawing objects + + + + + Fill style + + + + + Fill color for solid fills + + + + + Transparancy in percent + + + + + 3D settings + + + + + Degree of perspective + + + + + Rotation X-axis + + + + + Rotation Y-axis + + + + + Right Angle Axes + + + + + Depth % of base + + + + + Height % of base + + + + + Handels encrypted Excel documents + + + + + Read the package from the OLE document and decrypt it using the supplied password + + The file + + + + + + Read the package from the OLE document and decrypt it using the supplied password + + The memory stream. + The encryption object from the Package + + + + + Encrypts a package + + The package as a byte array + The encryption info from the workbook + + + + + Create an EncryptionInfo object to encrypt a workbook + + The password + + The Encryption key + + + + + Decrypt a document + + The Encrypted data + Encryption Info object + The password + + + + + Validate the password + + The encryption key + The encryption info extracted from the ENCRYPTIOINFO stream inside the OLE document + + + + + Validate the password + + The hash algorithm + The encryption info extracted from the ENCRYPTIOINFO stream inside the OLE document + + + + + Create the hash. + This method is written with the help of Lyquidity library, many thanks for this nice sample + + The password + The encryption info extracted from the ENCRYPTIOINFO stream inside the OLE document + The hash to encrypt the document + + + + Create the hash. + This method is written with the help of Lyquidity library, many thanks for this nice sample + + The password + The encryption info extracted from the ENCRYPTIOINFO stream inside the OLE document + The block key appended to the hash to obtain the final hash + The hash to encrypt the document + + + + Encryption Header inside the EncryptionInfo stream + + + + + AES. MUST conform to the AES algorithm. + + + + + RC2. MUST conform to [RFC2268]. + + + + + RC4. + + + + + MUST conform to the DES algorithm. + + + + + MUST conform to the [DRAFT-DESX] algorithm. + + + + + 3DES. MUST conform to the [RFC1851] algorithm. + + + + 3DES_112 MUST conform to the [RFC1851] algorithm. + + + + Cipher block chaining (CBC). + + + + + Cipher feedback chaining (CFB), with 8-bit window. + + + + + Hashalgorithm + + + + + Sha 1-MUST conform to [RFC4634] + + + + + Sha 256-MUST conform to [RFC4634] + + + + + Sha 384-MUST conform to [RFC4634] + + + + + Sha 512-MUST conform to [RFC4634] + + + + + MD5 + + + + + MD4 + + + + + MD2 + + + + + RIPEMD-128 MUST conform to [ISO/IEC 10118] + + + + + RIPEMD-160 MUST conform to [ISO/IEC 10118] + + + + + WHIRLPOOL MUST conform to [ISO/IEC 10118] + + + + + Handels the agile encryption + + + + + Handles the EncryptionInfo stream + + + + + Encryption verifier inside the EncryptionInfo stream + + + + + An image that fills the background of the worksheet. + + + + + + + + The topnode of the worksheet + Worksheet reference + + + + The background image of the worksheet. + The image will be saved internally as a jpg. + + + + + Set the picture from an image file. + The image file will be saved as a blob, so make sure Excel supports the image format. + + The image file. + + + + Encryption Algorithm + + + + + 128-bit AES. Default + + + + + 192-bit AES. + + + + + 256-bit AES. + + + + + The major version of the Encryption + + + + + Standard Encryption. + Used in Excel 2007 and previous version with compatibility pack. + Default AES 128 with SHA-1 as the hash algorithm. Spincount is hardcoded to 50000 + + + + + Agile Encryption. + Used in Excel 2010- + Default. + + + + + How and if the workbook is encrypted + + + + + + + Constructor + Default AES 256 with SHA-512 as the hash algorithm. Spincount is set to 100000 + + + + + Constructor + + Algorithm used to encrypt the package. Default is AES128 + + + + Is the package encrypted + + + + + The password used to encrypt the workbook. + + + + + Algorithm used for encrypting the package. Default is AES 128-bit for standard and AES 256 for agile + + + + + The version of the encryption. + + + + + Algorithm for password hash + + + + + Specifies that the MD2 algorithm, as defined by RFC 1319, shall be used. + + + + + Specifies that the MD4 algorithm, as defined by RFC 1319, shall be used. + + + + + Specifies that the MD5 algorithm, as defined by RFC 1319, shall be used. + + + + + Specifies that the RIPEMD-128 algorithm, as defined by RFC 1319, shall be used. + + + + + Specifies that the RIPEMD-160 algorithm, as defined by ISO/IEC10118-3:2004 shall be used. + + + + + Specifies that the SHA-1 algorithm, as defined by ISO/IEC 10118-3:2004 shall be used. + + + + + Specifies that the SHA-256 algorithm, as defined by ISO/IEC10118-3:2004 shall be used. + + + + + Specifies that the SHA-384 algorithm, as defined by ISO/IEC 10118-3:2004 shall be used. + + + + + Specifies that the SHA-512 algorithm, as defined by ISO/IEC10118-3:2004 shall be used. + + + + + Specifies that the WHIRLPOOL algorithm, as defined by ISO/IEC 10118-3:2004 shall be used. + + + + + Sets the password for the range + + + + + + Flag enum, specify all flags that you want to exclude from the copy. + + + + + Exclude formulas from being copied + + + + + Base collection class for styles. + + The style type + + + + Finds the key + + the key to be found + The found object. + True if found + + + + Find Index + + + + + + + Represents one or more columns within the worksheet + + + + + Creates a new instance of the ExcelColumn class. + For internal use only! + + + + + + + Sets the first column the definition refers to. + + + + + Sets the last column the definition refers to. + + + + + Internal range id for the column + + + + + Allows the column to be hidden in the worksheet + + + + + Sets the width of the column in the worksheet + + + + + If set to true a column automaticlly resize(grow wider) when a user inputs numbers in a cell. + + + + + If the column is collapsed in outline mode + + + + + Outline level. Zero if no outline + + + + + Phonetic + + + + + The Style applied to the whole column. Only effects cells with no individual style set. + Use Range object if you want to set specific styles. + + + + + Sets the style for the entire column using a style name. + + + + + Sets the style for the entire column using the style ID. + + + + + Adds a manual page break after the column. + + + + + Returns the range of columns covered by the column definition. + + A string describing the range of columns covered by the column definition. + + + + Set the column width from the content of the range. The minimum width is the value of the ExcelWorksheet.defaultColumnWidth property. + Note: Cells containing formulas are ignored since EPPlus don't have a calculation engine. + Wrapped and merged cells are also ignored. + + + + + Set the column width from the content. + Note: Cells containing formulas are ignored since EPPlus don't have a calculation engine. + Wrapped and merged cells are also ignored. + + Minimum column width + + + + Set the column width from the content. + Note: Cells containing formulas are ignored since EPPlus don't have a calculation engine. + Wrapped and merged cells are also ignored. + + Minimum column width + Maximum column width + + + + Get the internal RangeID + + Sheet no + Column + + + + + Copies the current column to a new worksheet + + The worksheet where the copy will be created + + + + How a picture will be aligned in the header/footer + + + + + The picture will be added to the left aligned text + + + + + The picture will be added to the centered text + + + + + The picture will be added to the right aligned text + + + + + Print header and footer + + + + + Get/set the text to appear on the left hand side of the header (or footer) on the worksheet. + + + + + Get/set the text to appear in the center of the header (or footer) on the worksheet. + + + + + Get/set the text to appear on the right hand side of the header (or footer) on the worksheet. + + + + + Inserts a picture at the end of the text in the header or footer + + The image object containing the Picture + Alignment. The image object will be inserted at the end of the Text. + + + + Inserts a picture at the end of the text in the header or footer + + The image object containing the Picture + Alignment. The image object will be inserted at the end of the Text. + + + + Represents the Header and Footer on an Excel Worksheet + + + + + The code for "current page #" + + + + + The code for "total pages" + + + + + The code for "text font color" + RGB Color is specified as RRGGBB + Theme Color is specified as TTSNN where TT is the theme color Id, S is either "+" or "-" of the tint/shade value, NN is the tint/shade value. + + + + + The code for "sheet tab name" + + + + + The code for "this workbook's file path" + + + + + The code for "this workbook's file name" + + + + + The code for "date" + + + + + The code for "time" + + + + + The code for "picture as background" + + + + + The code for "outline style" + + + + + The code for "shadow style" + + + + + ExcelHeaderFooter Constructor + + + + The worksheet + + + + Gets/sets the alignWithMargins attribute + + + + + Gets/sets the flag that tells Excel to display different headers and footers on odd and even pages. + + + + + Gets/sets the flag that tells Excel to display different headers and footers on the first page of the worksheet. + + + + + Provides access to the header on odd numbered pages of the document. + If you want the same header on both odd and even pages, then only set values in this ExcelHeaderFooterText class. + + + + + Provides access to the footer on odd numbered pages of the document. + If you want the same footer on both odd and even pages, then only set values in this ExcelHeaderFooterText class. + + + + + Provides access to the header on even numbered pages of the document. + + + + + Provides access to the footer on even numbered pages of the document. + + + + + Provides access to the header on the first page of the document. + + + + + Provides access to the footer on the first page of the document. + + + + + Vml drawings. Underlaying object for Header footer images + + + + + Saves the header and footer information to the worksheet XML + + + + + Maps to DotNetZips CompressionLevel enum + + + + + Represents an Excel 2007/2010 XLSX file package. + This is the top-level object to access all parts of the document. + + FileInfo newFile = new FileInfo(outputDir.FullName + @"\sample1.xlsx"); + if (newFile.Exists) + { + newFile.Delete(); // ensures we create a new workbook + newFile = new FileInfo(outputDir.FullName + @"\sample1.xlsx"); + } + using (ExcelPackage package = new ExcelPackage(newFile)) + { + // add a new worksheet to the empty workbook + ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Inventory"); + //Add the headers + worksheet.Cells[1, 1].Value = "ID"; + worksheet.Cells[1, 2].Value = "Product"; + worksheet.Cells[1, 3].Value = "Quantity"; + worksheet.Cells[1, 4].Value = "Price"; + worksheet.Cells[1, 5].Value = "Value"; + + //Add some items... + worksheet.Cells["A2"].Value = "12001"; + worksheet.Cells["B2"].Value = "Nails"; + worksheet.Cells["C2"].Value = 37; + worksheet.Cells["D2"].Value = 3.99; + + worksheet.Cells["A3"].Value = "12002"; + worksheet.Cells["B3"].Value = "Hammer"; + worksheet.Cells["C3"].Value = 5; + worksheet.Cells["D3"].Value = 12.10; + + worksheet.Cells["A4"].Value = "12003"; + worksheet.Cells["B4"].Value = "Saw"; + worksheet.Cells["C4"].Value = 12; + worksheet.Cells["D4"].Value = 15.37; + + //Add a formula for the value-column + worksheet.Cells["E2:E4"].Formula = "C2*D2"; + + //Ok now format the values; + using (var range = worksheet.Cells[1, 1, 1, 5]) + { + range.Style.Font.Bold = true; + range.Style.Fill.PatternType = ExcelFillStyle.Solid; + range.Style.Fill.BackgroundColor.SetColor(Color.DarkBlue); + range.Style.Font.Color.SetColor(Color.White); + } + + worksheet.Cells["A5:E5"].Style.Border.Top.Style = ExcelBorderStyle.Thin; + worksheet.Cells["A5:E5"].Style.Font.Bold = true; + + worksheet.Cells[5, 3, 5, 5].Formula = string.Format("SUBTOTAL(9,{0})", new ExcelAddress(2,3,4,3).Address); + worksheet.Cells["C2:C5"].Style.Numberformat.Format = "#,##0"; + worksheet.Cells["D2:E5"].Style.Numberformat.Format = "#,##0.00"; + + //Create an autofilter for the range + worksheet.Cells["A1:E4"].AutoFilter = true; + + worksheet.Cells["A1:E5"].AutoFitColumns(0); + + // lets set the header text + worksheet.HeaderFooter.oddHeader.CenteredText = "&24&U&\"Arial,Regular Bold\" Inventory"; + // add the page number to the footer plus the total number of pages + worksheet.HeaderFooter.oddFooter.RightAlignedText = + string.Format("Page {0} of {1}", ExcelHeaderFooter.PageNumber, ExcelHeaderFooter.NumberOfPages); + // add the sheet name to the footer + worksheet.HeaderFooter.oddFooter.CenteredText = ExcelHeaderFooter.SheetName; + // add the file path to the footer + worksheet.HeaderFooter.oddFooter.LeftAlignedText = ExcelHeaderFooter.FilePath + ExcelHeaderFooter.FileName; + + worksheet.PrinterSettings.RepeatRows = worksheet.Cells["1:2"]; + worksheet.PrinterSettings.RepeatColumns = worksheet.Cells["A:G"]; + + // Change the sheet view to show it in page layout mode + worksheet.View.PageLayoutView = true; + + // set some document properties + package.Workbook.Properties.Title = "Invertory"; + package.Workbook.Properties.Author = "Jan Källman"; + package.Workbook.Properties.Comments = "This sample demonstrates how to create an Excel 2007 workbook using EPPlus"; + + // set some extended property values + package.Workbook.Properties.Company = "AdventureWorks Inc."; + + // set some custom property values + package.Workbook.Properties.SetCustomPropertyValue("Checked by", "Jan Källman"); + package.Workbook.Properties.SetCustomPropertyValue("AssemblyName", "EPPlus"); + + // save our new workbook and we are done! + package.Save(); + + } + + return newFile.FullName; + + More samples can be found at http://epplus.codeplex.com/ + + + + + Extention Schema types + + + + + Main Xml schema name + + + + + Relationship schema name + + + + + Maximum number of columns in a worksheet (16384). + + + + + Maximum number of rows in a worksheet (1048576). + + + + + Create a new instance of the ExcelPackage. Output is accessed through the Stream property. + + + + + Create a new instance of the ExcelPackage class based on a existing file or creates a new file. + + If newFile exists, it is opened. Otherwise it is created from scratch. + + + + Create a new instance of the ExcelPackage class based on a existing file or creates a new file. + + If newFile exists, it is opened. Otherwise it is created from scratch. + Password for an encrypted package + + + + Create a new instance of the ExcelPackage class based on a existing template. + If newFile exists, it will be overwritten when the Save method is called + + The name of the Excel file to be created + The name of the Excel template to use as the basis of the new Excel file + + + + Create a new instance of the ExcelPackage class based on a existing template. + If newFile exists, it will be overwritten when the Save method is called + + The name of the Excel file to be created + The name of the Excel template to use as the basis of the new Excel file + Password to decrypted the template + + + + Create a new instance of the ExcelPackage class based on a existing template. + + The name of the Excel template to use as the basis of the new Excel file + if true use a stream. If false create a file in the temp dir with a random name + + + + Create a new instance of the ExcelPackage class based on a existing template. + + The name of the Excel template to use as the basis of the new Excel file + if true use a stream. If false create a file in the temp dir with a random name + Password to decrypted the template + + + + Create a new instance of the ExcelPackage class based on a stream + + The stream object can be empty or contain a package. The stream must be Read/Write + + + + Create a new instance of the ExcelPackage class based on a stream + + The stream object can be empty or contain a package. The stream must be Read/Write + The password to decrypt the document + + + + Create a new instance of the ExcelPackage class based on a stream + + The output stream. Must be an empty read/write stream. + This stream is copied to the output stream at load + + + + Create a new instance of the ExcelPackage class based on a stream + + The output stream. Must be an empty read/write stream. + This stream is copied to the output stream at load + Password to decrypted the template + + + + Init values here + + + + + Create a new file from a template + + An existing xlsx file to use as a template + The password to decrypt the package. + + + + + Returns a reference to the package + + + + + Information how and if the package is encrypted + + + + + Returns a reference to the workbook component within the package. + All worksheets and cells can be accessed through the workbook. + + + + + Automaticlly adjust drawing size when column width/row height are adjusted, depending on the drawings editBy property. + Default True + + + + + Saves the XmlDocument into the package at the specified Uri. + + The Uri of the component + The XmlDocument to save + + + + Saves the XmlDocument into the package at the specified Uri. + + The Uri of the component + The XmlDocument to save + + + + Closes the package. + + + + + Saves all the components back into the package. + This method recursively calls the Save method on all sub-components. + We close the package after the save is done. + + + + + Saves all the components back into the package. + This method recursively calls the Save method on all sub-components. + The package is closed after it has ben saved + d to encrypt the workbook with. + + This parameter overrides the Workbook.Encryption.Password. + + + + Saves the workbook to a new file + The package is closed after it has been saved + + The file location + + + + Saves the workbook to a new file + The package is closed after it has been saved + + The file + The password to encrypt the workbook with. + This parameter overrides the Encryption.Password. + + + + Copies the Package to the Outstream + The package is closed after it has been saved + + The stream to copy the package to + + + + Copies the Package to the Outstream + The package is closed after it has been saved + + The stream to copy the package to + The password to encrypt the workbook with. + This parameter overrides the Encryption.Password. + + + + The output file. Null if no file is used + + + + + Close the internal stream + + + + + The output stream. This stream is the not the encrypted package. + To get the encrypted package use the SaveAs(stream) method. + + + + + Compression option for the package + + + + + Get the XmlDocument from an URI + + The Uri to the part + The XmlDocument + + + + Saves and returns the Excel files as a bytearray. + Note that the package is closed upon save + + + Example how to return a document from a Webserver... + + ExcelPackage package=new ExcelPackage(); + /**** ... Create the document ****/ + Byte[] bin = package.GetAsByteArray(); + Response.ContentType = "Application/vnd.ms-Excel"; + Response.AddHeader("content-disposition", "attachment; filename=TheFile.xlsx"); + Response.BinaryWrite(bin); + + + + + + + Saves and returns the Excel files as a bytearray + Note that the package is closed upon save + + + Example how to return a document from a Webserver... + + ExcelPackage package=new ExcelPackage(); + /**** ... Create the document ****/ + Byte[] bin = package.GetAsByteArray(); + Response.ContentType = "Application/vnd.ms-Excel"; + Response.AddHeader("content-disposition", "attachment; filename=TheFile.xlsx"); + Response.BinaryWrite(bin); + + + The password to encrypt the workbook with. + This parameter overrides the Encryption.Password. + + + + + Loads the specified package data from a stream. + + The input. + + + + Loads the specified package data from a stream. + + The input. + The password to decrypt the document + + + + + + + + + + + + Copies the input stream to the output stream. + + The input stream. + The output stream. + + + + A range of cells. + + + + + Access the range using an address + + The address + A range object + + + + Access a single cell + + The row + The column + A range object + + + + Access a range of cells + + Start row + Start column + End Row + End Column + + + + + Represents an individual row in the spreadsheet. + + + + + Internal RowID. + + + + + Creates a new instance of the ExcelRow class. + For internal use only! + + The parent worksheet + The row number + + + + Provides access to the node representing the row. + + + + + Allows the row to be hidden in the worksheet + + + + + Sets the height of the row + + + + + Set to true if You don't want the row to Autosize + + + + + Sets the style for the entire column using a style name. + + + + + Sets the style for the entire row using the style ID. + + + + + Rownumber + + + + + If outline level is set this tells that the row is collapsed + + + + + Outline level. + + + + + Show phonetic Information + + + + + The Style applied to the whole row. Only effekt cells with no individual style set. + Use ExcelRange object if you want to set specific styles. + + + + + Adds a manual page break after the row. + + + + + Copies the current row to a new worksheet + + The worksheet where the copy will be created + + + + Containts all shared cell styles for a workbook + + + + + Loads the style XML to memory + + + + + Handels changes of properties on the style objects + + + + + + + + Handles property changes on Named styles. + + + + + + + + Sets protection on the workbook level + + + + + + + Sets a password for the workbook. This does not encrypt the workbook. + + The password. + + + + Locks the structure,which prevents users from adding or deleting worksheets or from displaying hidden worksheets. + + + + + Locks the position of the workbook window. + + + + + Lock the workbook for revision + + + + + Discribes a column when reading a text using the ExcelRangeBase.LoadFromText method + + + + + Let the the import decide. + + + + + Always a string. + + + + + Try to convert it to a number. If it fails then add it as a string. + + + + + Try to convert it to a date. If it fails then add it as a string. + + + + + Try to convert it to a number and divide with 100. + Removes any tailing percent sign (%). If it fails then add it as a string. + + + + + Describes how to split a CSV text. Used by the ExcelRange.LoadFromText method + + + + + Describes how to split a CSV text + + Default values + + PropertyValue + Delimiter, + TextQualifierNone (\0) + EOLCRLF + CultureCultureInfo.InvariantCulture + DataTypesEnd of line default CRLF + SkipLinesBeginning0 + SkipLinesEnd0 + EncodingEncoding.ASCII + + + + + + Delimiter character + + + + + Text qualifier character + + + + + End of line characters. Default CRLF + + + + + Datatypes list for each column (if column is not present Unknown is assumed) + + + + + Culture used when parsing. Default CultureInfo.InvariantCulture + + + + + Number of lines skiped in the begining of the file. Default 0. + + + + + Number of lines skiped at the end of the file. Default 0. + + + + + Only used when reading files from disk using a FileInfo object. Default AscII + + + + + This method follows the calculation chain to get the order of the calculation + Goto (!) is used internally to prevent stackoverflow on extremly larget dependency trees (that is, many recursive formulas). + + The dependency chain object + The formula tokenizer + The workbook where the formula comes from + The worksheet where the formula comes from + The cell function object + Calcultaiton options + + + + This class should be implemented to be able to deliver excel data + to the formula parser. + + + + + A range of cells in a worksheet. + + + + + Information and help methods about a cell + + + + + Returns the names of all worksheet names + + + + + + Returns all defined names in a workbook + + + + + + Returns values from the required range. + + The name of the worksheet + Row + Column + The reference address + + + + + Returns a single cell value + + + + + + + + + Returns the address of the lowest rightmost cell on the worksheet. + + + + + + + Use this method to free unmanaged resources. + + + + + Max number of columns in a worksheet that the Excel data provider can handle. + + + + + Max number of rows in a worksheet that the Excel data provider can handle + + + + + Handles translations from Spreadsheet addresses to 0-based numeric index. + + + + + Translates an address in format "A1" to col- and rowindex. + + If the supplied address is a range, the address of the first part will be calculated. + + + + + + + + Translates an address in format "A1" to col- and rowindex. + + + + + + + + + Returns true if this range collides (full or partly) with the supplied range + + The range to check + + + + + + + will be used if no worksheet name is specified in + address of a range + + + + + Simple implementation of DateValue function, just using .NET built-in + function System.DateTime.TryParse, based on current culture + + + + + This implementation was found on http://stackoverflow.com/questions/1285191/get-week-of-date-from-linq-query + + + + + + + Simple implementation of TimeValue function, just using .NET built-in + function System.DateTime.TryParse, based on current culture + + + + + Base class for functions that handles an error that occurs during the + normal execution of the function. + If an exception occurs during the Execute-call that exception will be + caught by the compiler, then the HandleError-method will be called. + + + + + Indicates that the function is an ErrorHandlingFunction. + + + + + Method that should be implemented to handle the error. + + + + + + + Base class for Excel function implementations. + + + + + + + Arguments to the function, each argument can contain primitive types, lists or Excel ranges + The contains various data that can be useful in functions. + A containing the calculated value + + + + If overridden, this method is called before Execute is called. + + + + + + Used for some Lookupfunctions to indicate that function arguments should + not be compiled before the function is called. + + + + + This functions validates that the supplied contains at least + (the value of) elements. If one of the arguments is an + Excel range the number of cells in + that range will be counted as well. + + + + The of the that will be thrown if is not met. + + + + This functions validates that the supplied contains at least + (the value of) elements. If one of the arguments is an + Excel range the number of cells in + that range will be counted as well. + + + + + + + + Returns the value of the argument att the position of the 0-based + as an integer. + + + + Value of the argument as an integer. + + + + + Returns the value of the argument att the position of the 0-based + as a string. + + + + Value of the argument as a string. + + + + Returns the value of the argument att the position of the 0-based + + + Value of the argument as a double. + + + + + Returns the value of the argument att the position of the 0-based + as a . + + + + Value of the argument as an integer. + + + + + If the argument is a boolean value its value will be returned. + If the argument is an integer value, true will be returned if its + value is not 0, otherwise false. + + + + + + + + Throws an if evaluates to true. + + + + + + + + Throws an if evaluates to true. + + + + Formats to the message string. + + + + Throws an with the given set. + + + + + + Throws an if evaluates to true. + + + + + + + + Helper method for comparison of two doubles. + + + + + + + + Will return the arguments as an enumerable of doubles. + + + + + + + + Will return the arguments as an enumerable of doubles. + + If a cell is hidden and this value is true the value of that cell will be ignored + If a cell contains an error, that error will be ignored if this method is set to true + + + + + + + Will return the arguments as an enumerable of doubles. + + If a cell is hidden and this value is true the value of that cell will be ignored + + + + + + + Will return the arguments as an enumerable of objects. + + If a cell is hidden and this value is true the value of that cell will be ignored + + + + + + + Use this method to create a result to return from Excel functions. + + + + + + + + Use this method to apply a function on a collection of arguments. The + should be modifyed in the supplied and will contain the result + after this operation has been performed. + + + + + + + + + if the supplied argument contains an Excel error + an with that errorcode will be thrown + + + + + + + If the supplied contains an Excel error + an with that errorcode will be thrown + + + + + + This class provides methods for accessing/modifying VBA Functions. + + + + + Gets a of custom s. + + + + + Loads a module of s to the function repository. + + A that can be used for adding functions and custom function compilers. + + + + Removes all functions from the repository + + + + + Returns true if the the supplied exists in the repository. + + + + + + + Returns the names of all implemented functions. + + + + + Adds or replaces a function. + + Case-insensitive name of the function that should be added or replaced. + An implementation of an . + + + + Base class + + + + + Gets a dictionary of custom function implementations. + + + + + Gets a dictionary of custom function compilers. A function compiler is not + necessary for a custom function, unless the default expression evaluation is not + sufficient for the implementation of the custom function. When a FunctionCompiler instance + is created, it should be given a reference to the same function instance that exists + in the Functions collection of this module. + + + + + Base class for functions that needs to handle cells that is not visible. + + + + + Set to true or false to indicate whether the function should ignore hidden values. + + + + + Gets a dictionary of custom function implementations. + + + + + Gets a dictionary of custom function compilers. A function compiler is not + necessary for a custom function, unless the default expression evaluation is not + sufficient for the implementation of the custom function. When a FunctionCompiler instance + is created, it should be given a reference to the same function instance that exists + in the Functions collection of this module. + + + + + Thanks to the guys in this thread: http://stackoverflow.com/questions/2840798/c-sharp-math-class-question + + + + + This Exception represents an Excel error. When this exception is thrown + from an Excel function, the ErrorValue code will be set as the value of the + parsed cell. + + + + + + The error value + + + + + Gets or sets a value that indicates whether or not to resolve directly to an + + + + + Why do the If function require a compiler of its own you might ask;) + + It is because it only needs to evaluate one of the two last expressions. This + compiler handles this - it ignores the irrelevant expression. + + + + + Expression that handles execution of a function. + + + + + Constructor + + should be the of the function + + True if the numeric result of the function should be negated. + + + + Provides access to various functionality regarding + excel formula evaluation. + + + + + Loads a module containing custom functions to the formula parser. By using + this method you can add your own implementations of Excel functions, by + implementing a . + + A containing s. + + + + If the supplied does not exist, the supplied + implementation will be added to the formula parser. + If it exists, the existing function will be replaced by the supplied function implementation + + + + + + + Copies existing ´s from one workbook to another. + + The workbook containing the forumulas to be copied. + + + + Returns an enumeration of the names of all functions implemented, both the built in functions + and functions added using the LoadFunctionModule method of this class. + + Function names in lower case + + + + Returns an enumeration of all implemented functions, including the implementing instance. + + An enumeration of , where the key is the function name + + + + Parses the supplied and returns the result. + + + + + + + Attaches a logger to the . + + An instance of + + + + + Attaches a logger to the formula parser that produces output to the supplied logfile. + + + + + + Detaches any attached logger from the formula parser. + + + + + This class provides access to s - classes that exposes functionatlity + needed when parsing strings to tokens. + + + + + Handles a tokenseparator. + + + + + + Returns true if the tokenseparator was handled. + + + + Used for logging during FormulaParsing + + + + + Called each time an exception occurs during formula parsing. + + + + + + + Called each time information should be logged during formula parsing. + + + + + + + Called to log a message outside the parsing context. + + + + + + Called each time a cell within the calc chain is accessed during formula parsing. + + + + + Called each time a function is called during formula parsing. + + + + + + Some functions measure performance, if so this function will be called. + + + + + + + Create loggers that can be used for logging the formula parser. + + + + + Creates a logger that logs to a simple textfile. + + + + + + + Attaches a logger, errors and log entries will be written to the logger during the parsing process. + + + + + + + if a logger is attached it will be removed. + + + + + + Parsing context + + + + + The of the current context. + + + + + The is an abstraction on top of + Excel, in this case EPPlus. + + + + + Utility for handling addresses + + + + + of the current context + + + + + Configuration + + + + + Scopes, a scope represents the parsing of a cell or a value. + + + + + Returns true if a is attached to the parser. + + + + + Factory method. + + + + + + Represents a parsing of a single input or workbook addrses. + + + + + Id of the scope. + + + + + The calling scope. + + + + + The address of the cell currently beeing parsed. + + + + + True if the current scope is a Subtotal function beeing executed. + + + + + This class implements a stack on which instances of + are put. Each ParsingScope represents the parsing of an address in the workbook. + + + + + Creates a new and puts it on top of the stack. + + + + + + + The current parsing scope. + + + + + Removes the current scope, setting the calling scope to current. + + + + + + Represents the errortypes in excel + + + + + Division by zero + + + + + Not applicable + + + + + Name error + + + + + Null error + + + + + Num error + + + + + Reference error + + + + + Value error + + + + + Represents an Excel error. + + + + + + Handles the convertion between and the string values + used by Excel. + + + + + Returns true if the supplied is an excel error. + + + + + + + Returns true if the supplied is an excel error. + + + + + + + Converts a string to an + + + + Thrown if the supplied value is not an Excel error + + + + The error type + + + + + Returns the string representation of the error type + + + + + + This class exposes a set of COM-accessible wrappers for static + methods available on the ZipFile class. You don't need this + class unless you are using DotNetZip from a COM environment. + + + + + A wrapper for ZipFile.IsZipFile(string) + + The filename to of the zip file to check. + true if the file contains a valid zip file. + + + + A wrapper for ZipFile.IsZipFile(string, bool) + + + We cannot use "overloaded" Method names in COM interop. + So, here, we use a unique name. + + The filename to of the zip file to check. + true if the file contains a valid zip file. + + + + A wrapper for ZipFile.CheckZip(string) + + The filename to of the zip file to check. + + true if the named zip file checks OK. Otherwise, false. + + + + A COM-friendly wrapper for the static method . + + + The filename to of the zip file to check. + + The password to check. + + true if the named zip file checks OK. Otherwise, false. + + + + A wrapper for ZipFile.FixZipDirectory(string) + + The filename to of the zip file to fix. + + + + A wrapper for ZipFile.LibraryVersion + + + the version number on the DotNetZip assembly, formatted as a string. + + + + + An enum that provides the various encryption algorithms supported by this + library. + + + + + + PkzipWeak implies the use of Zip 2.0 encryption, which is known to be + weak and subvertible. + + + + A note on interoperability: Values of PkzipWeak and None are + specified in PKWARE's zip + specification, and are considered to be "standard". Zip archives + produced using these options will be interoperable with many other zip tools + and libraries, including Windows Explorer. + + + + Values of WinZipAes128 and WinZipAes256 are not part of the Zip + specification, but rather imply the use of a vendor-specific extension from + WinZip. If you want to produce interoperable Zip archives, do not use these + values. For example, if you produce a zip archive using WinZipAes256, you + will be able to open it in Windows Explorer on Windows XP and Vista, but you + will not be able to extract entries; trying this will lead to an "unspecified + error". For this reason, some people have said that a zip archive that uses + WinZip's AES encryption is not actually a zip archive at all. A zip archive + produced this way will be readable with the WinZip tool (Version 11 and + beyond). + + + + There are other third-party tools and libraries, both commercial and + otherwise, that support WinZip's AES encryption. These will be able to read + AES-encrypted zip archives produced by DotNetZip, and conversely applications + that use DotNetZip to read zip archives will be able to read AES-encrypted + archives produced by those tools or libraries. Consult the documentation for + those other tools and libraries to find out if WinZip's AES encryption is + supported. + + + + In case you care: According to the WinZip specification, the + actual AES key used is derived from the via an + algorithm that complies with RFC 2898, using an iteration + count of 1000. The algorithm is sometimes referred to as PBKDF2, which stands + for "Password Based Key Derivation Function #2". + + + + A word about password strength and length: The AES encryption technology is + very good, but any system is only as secure as the weakest link. If you want + to secure your data, be sure to use a password that is hard to guess. To make + it harder to guess (increase its "entropy"), you should make it longer. If + you use normal characters from an ASCII keyboard, a password of length 20 will + be strong enough that it will be impossible to guess. For more information on + that, I'd encourage you to read this + article. + + + + The WinZip AES algorithms are not supported with the version of DotNetZip that + runs on the .NET Compact Framework. This is because .NET CF lacks the + HMACSHA1 class that is required for producing the archive. + + + + + + No encryption at all. + + + + + Traditional or Classic pkzip encryption. + + + + + An encryption algorithm that is not supported by DotNetZip. + + + + + Delegate in which the application writes the ZipEntry content for the named entry. + + + The name of the entry that must be written. + The stream to which the entry data should be written. + + + When you add an entry and specify a WriteDelegate, via , the application + code provides the logic that writes the entry data directly into the zip file. + + + + + This example shows how to define a WriteDelegate that obtains a DataSet, and then + writes the XML for the DataSet into the zip archive. There's no need to + save the XML to a disk file first. + + + private void WriteEntry (String filename, Stream output) + { + DataSet ds1 = ObtainDataSet(); + ds1.WriteXml(output); + } + + private void Run() + { + using (var zip = new ZipFile()) + { + zip.AddEntry(zipEntryName, WriteEntry); + zip.Save(zipFileName); + } + } + + + + Private Sub WriteEntry (ByVal filename As String, ByVal output As Stream) + DataSet ds1 = ObtainDataSet() + ds1.WriteXml(stream) + End Sub + + Public Sub Run() + Using zip = New ZipFile + zip.AddEntry(zipEntryName, New WriteDelegate(AddressOf WriteEntry)) + zip.Save(zipFileName) + End Using + End Sub + + + + + + + Delegate in which the application opens the stream, just-in-time, for the named entry. + + + + The name of the ZipEntry that the application should open the stream for. + + + + When you add an entry via , the application code provides the logic that + opens and closes the stream for the given ZipEntry. + + + + + + + Delegate in which the application closes the stream, just-in-time, for the named entry. + + + + The name of the ZipEntry that the application should close the stream for. + + + The stream to be closed. + + + When you add an entry via , the application code provides the logic that + opens and closes the stream for the given ZipEntry. + + + + + + + Delegate for the callback by which the application tells the + library the CompressionLevel to use for a file. + + + + + Using this callback, the application can, for example, specify that + previously-compressed files (.mp3, .png, .docx, etc) should use a + CompressionLevel of None, or can set the compression level based + on any other factor. + + + + + + + In an EventArgs type, indicates which sort of progress event is being + reported. + + + There are events for reading, events for saving, and events for + extracting. This enumeration allows a single EventArgs type to be sued to + describe one of multiple subevents. For example, a SaveProgress event is + invoked before, after, and during the saving of a single entry. The value + of an enum with this type, specifies which event is being triggered. The + same applies to Extraction, Reading and Adding events. + + + + + Indicates that a Add() operation has started. + + + + + Indicates that an individual entry in the archive has been added. + + + + + Indicates that a Add() operation has completed. + + + + + Indicates that a Read() operation has started. + + + + + Indicates that an individual entry in the archive is about to be read. + + + + + Indicates that an individual entry in the archive has just been read. + + + + + Indicates that a Read() operation has completed. + + + + + The given event reports the number of bytes read so far + during a Read() operation. + + + + + Indicates that a Save() operation has started. + + + + + Indicates that an individual entry in the archive is about to be written. + + + + + Indicates that an individual entry in the archive has just been saved. + + + + + Indicates that a Save() operation has completed. + + + + + Indicates that the zip archive has been created in a + temporary location during a Save() operation. + + + + + Indicates that the temporary file is about to be renamed to the final archive + name during a Save() operation. + + + + + Indicates that the temporary file is has just been renamed to the final archive + name during a Save() operation. + + + + + Indicates that the self-extracting archive has been compiled + during a Save() operation. + + + + + The given event is reporting the number of source bytes that have run through the compressor so far + during a Save() operation. + + + + + Indicates that an entry is about to be extracted. + + + + + Indicates that an entry has just been extracted. + + + + + Indicates that extraction of an entry would overwrite an existing + filesystem file. You must use + + ExtractExistingFileAction.InvokeExtractProgressEvent in the call + to ZipEntry.Extract() in order to receive this event. + + + + + The given event is reporting the number of bytes written so far for + the current entry during an Extract() operation. + + + + + Indicates that an ExtractAll operation is about to begin. + + + + + Indicates that an ExtractAll operation has completed. + + + + + Indicates that an error has occurred while saving a zip file. + This generally means the file cannot be opened, because it has been + removed, or because it is locked by another process. It can also + mean that the file cannot be Read, because of a range lock conflict. + + + + + Provides information about the progress of a save, read, or extract operation. + This is a base class; you will probably use one of the classes derived from this one. + + + + + The total number of entries to be saved or extracted. + + + + + The name of the last entry saved or extracted. + + + + + In an event handler, set this to cancel the save or extract + operation that is in progress. + + + + + The type of event being reported. + + + + + Returns the archive name associated to this event. + + + + + The number of bytes read or written so far for this entry. + + + + + Total number of bytes that will be read or written for this entry. + This number will be -1 if the value cannot be determined. + + + + + Provides information about the progress of a Read operation. + + + + + Provides information about the progress of a Add operation. + + + + + Provides information about the progress of a save operation. + + + + + Constructor for the SaveProgressEventArgs. + + the name of the zip archive. + whether this is before saving the entry, or after + The total number of entries in the zip archive. + Number of entries that have been saved. + The entry involved in the event. + + + + Number of entries saved so far. + + + + + Provides information about the progress of the extract operation. + + + + + Constructor for the ExtractProgressEventArgs. + + the name of the zip archive. + whether this is before saving the entry, or after + The total number of entries in the zip archive. + Number of entries that have been extracted. + The entry involved in the event. + The location to which entries are extracted. + + + + Number of entries extracted so far. This is set only if the + EventType is Extracting_BeforeExtractEntry or Extracting_AfterExtractEntry, and + the Extract() is occurring witin the scope of a call to ExtractAll(). + + + + + Returns the extraction target location, a filesystem path. + + + + + Provides information about the an error that occurred while zipping. + + + + + Returns the exception that occurred, if any. + + + + + Returns the name of the file that caused the exception, if any. + + + + + Issued when an ZipEntry.ExtractWithPassword() method is invoked + with an incorrect password. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + The innerException for this exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Indicates that a read was attempted on a stream, and bad or incomplete data was + received. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + The innerException for this exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Issued when an CRC check fails upon extracting an entry from a zip archive. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Issued when errors occur saving a self-extracting archive. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Indicates that an operation was attempted on a ZipFile which was not possible + given the state of the instance. For example, if you call Save() on a ZipFile + which has no filename set, you can get this exception. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + The innerException for this exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Base class for all exceptions defined by and throw by the Zip library. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + The innerException for this exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + An enum for the options when extracting an entry would overwrite an existing file. + + + + + This enum describes the actions that the library can take when an + Extract() or ExtractWithPassword() method is called to extract an + entry to a filesystem, and the extraction would overwrite an existing filesystem + file. + + + + + + + Throw an exception when extraction would overwrite an existing file. (For + COM clients, this is a 0 (zero).) + + + + + When extraction would overwrite an existing file, overwrite the file silently. + The overwrite will happen even if the target file is marked as read-only. + (For COM clients, this is a 1.) + + + + + When extraction would overwrite an existing file, don't overwrite the file, silently. + (For COM clients, this is a 2.) + + + + + When extraction would overwrite an existing file, invoke the ExtractProgress + event, using an event type of . In + this way, the application can decide, just-in-time, whether to overwrite the + file. For example, a GUI application may wish to pop up a dialog to allow + the user to choose. You may want to examine the property before making + the decision. If, after your processing in the Extract progress event, you + want to NOT extract the file, set + on the ZipProgressEventArgs.CurrentEntry to DoNotOverwrite. + If you do want to extract the file, set ZipEntry.ExtractExistingFile + to OverwriteSilently. If you want to cancel the Extraction, set + ZipProgressEventArgs.Cancel to true. Cancelling differs from using + DoNotOverwrite in that a cancel will not extract any further entries, if + there are any. (For COM clients, the value of this enum is a 3.) + + + + + Collects general purpose utility methods. + + + + private null constructor + + + + Utility routine for transforming path names from filesystem format (on Windows that means backslashes) to + a format suitable for use within zipfiles. This means trimming the volume letter and colon (if any) And + swapping backslashes for forward slashes. + + source path. + transformed path + + + + Finds a signature in the zip stream. This is useful for finding + the end of a zip entry, for example, or the beginning of the next ZipEntry. + + + + + Scans through 64k at a time. + + + + If the method fails to find the requested signature, the stream Position + after completion of this method is unchanged. If the method succeeds in + finding the requested signature, the stream position after completion is + direct AFTER the signature found in the stream. + + + + The stream to search + The 4-byte signature to find + The number of bytes read + + + + Create a pseudo-random filename, suitable for use as a temporary + file, and open it. + + + + The System.IO.Path.GetRandomFileName() method is not available on + the Compact Framework, so this library provides its own substitute + on NETCF. + + + This method produces a filename of the form + DotNetZip-xxxxxxxx.tmp, where xxxxxxxx is replaced by randomly + chosen characters, and creates that file. + + + + + + Workitem 7889: handle ERROR_LOCK_VIOLATION during read + + + This could be gracefully handled with an extension attribute, but + This assembly is built for .NET 2.0, so I cannot use them. + + + + + A decorator stream. It wraps another stream, and performs bookkeeping + to keep track of the stream Position. + + + + In some cases, it is not possible to get the Position of a stream, let's + say, on a write-only output stream like ASP.NET's + Response.OutputStream, or on a different write-only stream + provided as the destination for the zip by the application. In this + case, programmers can use this counting stream to count the bytes read + or written. + + + Consider the scenario of an application that saves a self-extracting + archive (SFX), that uses a custom SFX stub. + + + Saving to a filesystem file, the application would open the + filesystem file (getting a FileStream), save the custom sfx stub + into it, and then call ZipFile.Save(), specifying the same + FileStream. ZipFile.Save() does the right thing for the zipentry + offsets, by inquiring the Position of the FileStream before writing + any data, and then adding that initial offset into any ZipEntry + offsets in the zip directory. Everything works fine. + + + Now suppose the application is an ASPNET application and it saves + directly to Response.OutputStream. It's not possible for DotNetZip to + inquire the Position, so the offsets for the SFX will be wrong. + + + The workaround is for the application to use this class to wrap + HttpResponse.OutputStream, then write the SFX stub and the ZipFile + into that wrapper stream. Because ZipFile.Save() can inquire the + Position, it will then do the right thing with the offsets. + + + + + + The constructor. + + The underlying stream + + + + Gets the wrapped stream. + + + + + The count of bytes written out to the stream. + + + + + the count of bytes that have been read from the stream. + + + + + Adjust the byte count on the stream. + + + + the number of bytes to subtract from the count. + + + + + Subtract delta from the count of bytes written to the stream. + This is necessary when seeking back, and writing additional data, + as happens in some cases when saving Zip files. + + + + + + The read method. + + The buffer to hold the data read from the stream. + the offset within the buffer to copy the first byte read. + the number of bytes to read. + the number of bytes read, after decryption and decompression. + + + + Write data into the stream. + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Whether the stream can be read. + + + + + Whether it is possible to call Seek() on the stream. + + + + + Whether it is possible to call Write() on the stream. + + + + + Flushes the underlying stream. + + + + + The length of the underlying stream. + + + + + Returns the sum of number of bytes written, plus the initial + offset before writing. + + + + + The Position of the stream. + + + + + Seek in the stream. + + the offset point to seek to + the reference point from which to seek + The new position + + + + Set the length of the underlying stream. Be careful with this! + + + the length to set on the underlying stream. + + + + This class implements the "traditional" or "classic" PKZip encryption, + which today is considered to be weak. On the other hand it is + ubiquitous. This class is intended for use only by the DotNetZip + library. + + + + Most uses of the DotNetZip library will not involve direct calls into + the ZipCrypto class. Instead, the ZipCrypto class is instantiated and + used by the ZipEntry() class when encryption or decryption on an entry + is employed. If for some reason you really wanted to use a weak + encryption algorithm in some other application, you might use this + library. But you would be much better off using one of the built-in + strong encryption libraries in the .NET Framework, like the AES + algorithm or SHA. + + + + + The default constructor for ZipCrypto. + + + + This class is intended for internal use by the library only. It's + probably not useful to you. Seriously. Stop reading this + documentation. It's a waste of your time. Go do something else. + Check the football scores. Go get an ice cream with a friend. + Seriously. + + + + + + From AppNote.txt: + unsigned char decrypt_byte() + local unsigned short temp + temp :=- Key(2) | 2 + decrypt_byte := (temp * (temp ^ 1)) bitshift-right 8 + end decrypt_byte + + + + + Call this method on a cipher text to render the plaintext. You must + first initialize the cipher with a call to InitCipher. + + + + + var cipher = new ZipCrypto(); + cipher.InitCipher(Password); + // Decrypt the header. This has a side effect of "further initializing the + // encryption keys" in the traditional zip encryption. + byte[] DecryptedMessage = cipher.DecryptMessage(EncryptedMessage); + + + + The encrypted buffer. + + The number of bytes to encrypt. + Should be less than or equal to CipherText.Length. + + + The plaintext. + + + + This is the converse of DecryptMessage. It encrypts the plaintext + and produces a ciphertext. + + + The plain text buffer. + + + The number of bytes to encrypt. + Should be less than or equal to plainText.Length. + + + The ciphertext. + + + + This initializes the cipher with the given password. + See AppNote.txt for details. + + + + The passphrase for encrypting or decrypting with this cipher. + + + + + Step 1 - Initializing the encryption keys + ----------------------------------------- + Start with these keys: + Key(0) := 305419896 (0x12345678) + Key(1) := 591751049 (0x23456789) + Key(2) := 878082192 (0x34567890) + + Then, initialize the keys with a password: + + loop for i from 0 to length(password)-1 + update_keys(password(i)) + end loop + + Where update_keys() is defined as: + + update_keys(char): + Key(0) := crc32(key(0),char) + Key(1) := Key(1) + (Key(0) bitwiseAND 000000ffH) + Key(1) := Key(1) * 134775813 + 1 + Key(2) := crc32(key(2),key(1) rightshift 24) + end update_keys + + Where crc32(old_crc,char) is a routine that given a CRC value and a + character, returns an updated CRC value after applying the CRC-32 + algorithm described elsewhere in this document. + + + + + After the keys are initialized, then you can use the cipher to + encrypt the plaintext. + + + + Essentially we encrypt the password with the keys, then discard the + ciphertext for the password. This initializes the keys for later use. + + + + + + + A Stream for reading and concurrently decrypting data from a zip file, + or for writing and concurrently encrypting data to a zip file. + + + + The constructor. + The underlying stream + To either encrypt or decrypt. + The pre-initialized ZipCrypto object. + + + + Represents a single entry in a ZipFile. Typically, applications get a ZipEntry + by enumerating the entries within a ZipFile, or by adding an entry to a ZipFile. + + + + + True if the referenced entry is a directory. + + + + + Provides a human-readable string with information about the ZipEntry. + + + + + Reads one entry from the zip directory structure in the zip file. + + + + The zipfile for which a directory entry will be read. From this param, the + method gets the ReadStream and the expected text encoding + (ProvisionalAlternateEncoding) which is used if the entry is not marked + UTF-8. + + + + a list of previously seen entry names; used to prevent duplicates. + + + the entry read from the archive. + + + + Returns true if the passed-in value is a valid signature for a ZipDirEntry. + + the candidate 4-byte signature value. + true, if the signature is valid according to the PKWare spec. + + + + Default constructor. + + + Applications should never need to call this directly. It is exposed to + support COM Automation environments. + + + + + The time and date at which the file indicated by the ZipEntry was + last modified. + + + + + The DotNetZip library sets the LastModified value for an entry, equal to + the Last Modified time of the file in the filesystem. If an entry is + added from a stream, the library uses System.DateTime.Now for this + value, for the given entry. + + + + This property allows the application to retrieve and possibly set the + LastModified value on an entry, to an arbitrary value. values with a + setting of DateTimeKind.Unspecified are taken to be expressed as + DateTimeKind.Local. + + + + Be aware that because of the way PKWare's + Zip specification describes how times are stored in the zip file, + the full precision of the System.DateTime datatype is not stored + for the last modified time when saving zip files. For more information on + how times are formatted, see the PKZip specification. + + + + The actual last modified time of a file can be stored in multiple ways in + the zip file, and they are not mutually exclusive: + + + + + In the so-called "DOS" format, which has a 2-second precision. Values + are rounded to the nearest even second. For example, if the time on the + file is 12:34:43, then it will be stored as 12:34:44. This first value + is accessible via the LastModified property. This value is always + present in the metadata for each zip entry. In some cases the value is + invalid, or zero. + + + + In the so-called "Windows" or "NTFS" format, as an 8-byte integer + quantity expressed as the number of 1/10 milliseconds (in other words + the number of 100 nanosecond units) since January 1, 1601 (UTC). This + format is how Windows represents file times. This time is accessible + via the ModifiedTime property. + + + + In the "Unix" format, a 4-byte quantity specifying the number of seconds since + January 1, 1970 UTC. + + + + In an older format, now deprecated but still used by some current + tools. This format is also a 4-byte quantity specifying the number of + seconds since January 1, 1970 UTC. + + + + + + Zip tools and libraries will always at least handle (read or write) the + DOS time, and may also handle the other time formats. Keep in mind that + while the names refer to particular operating systems, there is nothing in + the time formats themselves that prevents their use on other operating + systems. + + + + When reading ZIP files, the DotNetZip library reads the Windows-formatted + time, if it is stored in the entry, and sets both LastModified and + ModifiedTime to that value. When writing ZIP files, the DotNetZip + library by default will write both time quantities. It can also emit the + Unix-formatted time if desired (See .) + + + + The last modified time of the file created upon a call to + ZipEntry.Extract() may be adjusted during extraction to compensate + for differences in how the .NET Base Class Library deals with daylight + saving time (DST) versus how the Windows filesystem deals with daylight + saving time. Raymond Chen provides + some good context. + + + + In a nutshell: Daylight savings time rules change regularly. In 2007, for + example, the inception week of DST changed. In 1977, DST was in place all + year round. In 1945, likewise. And so on. Win32 does not attempt to + guess which time zone rules were in effect at the time in question. It + will render a time as "standard time" and allow the app to change to DST + as necessary. .NET makes a different choice. + + + + Compare the output of FileInfo.LastWriteTime.ToString("f") with what you + see in the Windows Explorer property sheet for a file that was last + written to on the other side of the DST transition. For example, suppose + the file was last modified on October 17, 2003, during DST but DST is not + currently in effect. Explorer's file properties reports Thursday, October + 17, 2003, 8:45:38 AM, but .NETs FileInfo reports Thursday, October 17, + 2003, 9:45 AM. + + + + Win32 says, "Thursday, October 17, 2002 8:45:38 AM PST". Note: Pacific + STANDARD Time. Even though October 17 of that year occurred during Pacific + Daylight Time, Win32 displays the time as standard time because that's + what time it is NOW. + + + + .NET BCL assumes that the current DST rules were in place at the time in + question. So, .NET says, "Well, if the rules in effect now were also in + effect on October 17, 2003, then that would be daylight time" so it + displays "Thursday, October 17, 2003, 9:45 AM PDT" - daylight time. + + + + So .NET gives a value which is more intuitively correct, but is also + potentially incorrect, and which is not invertible. Win32 gives a value + which is intuitively incorrect, but is strictly correct. + + + + Because of this funkiness, this library adds one hour to the LastModified + time on the extracted file, if necessary. That is to say, if the time in + question had occurred in what the .NET Base Class Library assumed to be + DST. This assumption may be wrong given the constantly changing DST rules, + but it is the best we can do. + + + + + + + + Last Modified time for the file represented by the entry. + + + + + + This value corresponds to the "last modified" time in the NTFS file times + as described in the Zip + specification. When getting this property, the value may be + different from . When setting the property, + the property also gets set, but with a lower + precision. + + + + Let me explain. It's going to take a while, so get + comfortable. Originally, waaaaay back in 1989 when the ZIP specification + was originally described by the esteemed Mr. Phil Katz, the dominant + operating system of the time was MS-DOS. MSDOS stored file times with a + 2-second precision, because, c'mon, who is ever going to need better + resolution than THAT? And so ZIP files, regardless of the platform on + which the zip file was created, store file times in exactly the same format that DOS used + in 1989. + + + + Since then, the ZIP spec has evolved, but the internal format for file + timestamps remains the same. Despite the fact that the way times are + stored in a zip file is rooted in DOS heritage, any program on any + operating system can format a time in this way, and most zip tools and + libraries DO - they round file times to the nearest even second and store + it just like DOS did 25+ years ago. + + + + PKWare extended the ZIP specification to allow a zip file to store what + are called "NTFS Times" and "Unix(tm) times" for a file. These are the + last write, last access, and file creation + times of a particular file. These metadata are not actually specific + to NTFS or Unix. They are tracked for each file by NTFS and by various + Unix filesystems, but they are also tracked by other filesystems, too. + The key point is that the times are formatted in the zip file + in the same way that NTFS formats the time (ticks since win32 epoch), + or in the same way that Unix formats the time (seconds since Unix + epoch). As with the DOS time, any tool or library running on any + operating system is capable of formatting a time in one of these ways + and embedding it into the zip file. + + + + These extended times are higher precision quantities than the DOS time. + As described above, the (DOS) LastModified has a precision of 2 seconds. + The Unix time is stored with a precision of 1 second. The NTFS time is + stored with a precision of 0.0000001 seconds. The quantities are easily + convertible, except for the loss of precision you may incur. + + + + A zip archive can store the {C,A,M} times in NTFS format, in Unix format, + or not at all. Often a tool running on Unix or Mac will embed the times + in Unix format (1 second precision), while WinZip running on Windows might + embed the times in NTFS format (precision of of 0.0000001 seconds). When + reading a zip file with these "extended" times, in either format, + DotNetZip represents the values with the + ModifiedTime, AccessedTime and CreationTime + properties on the ZipEntry. + + + + While any zip application or library, regardless of the platform it + runs on, could use any of the time formats allowed by the ZIP + specification, not all zip tools or libraries do support all these + formats. Storing the higher-precision times for each entry is + optional for zip files, and many tools and libraries don't use the + higher precision quantities at all. The old DOS time, represented by + , is guaranteed to be present, though it + sometimes unset. + + + + Ok, getting back to the question about how the LastModified + property relates to this ModifiedTime + property... LastModified is always set, while + ModifiedTime is not. (The other times stored in the NTFS + times extension, CreationTime and AccessedTime also + may not be set on an entry that is read from an existing zip file.) + When reading a zip file, then LastModified takes the DOS time + that is stored with the file. If the DOS time has been stored as zero + in the zipfile, then this library will use DateTime.Now for the + LastModified value. If the ZIP file was created by an evolved + tool, then there will also be higher precision NTFS or Unix times in + the zip file. In that case, this library will read those times, and + set LastModified and ModifiedTime to the same value, the + one corresponding to the last write time of the file. If there are no + higher precision times stored for the entry, then ModifiedTime + remains unset (likewise AccessedTime and CreationTime), + and LastModified keeps its DOS time. + + + + When creating zip files with this library, by default the extended time + properties (ModifiedTime, AccessedTime, and + CreationTime) are set on the ZipEntry instance, and these data are + stored in the zip archive for each entry, in NTFS format. If you add an + entry from an actual filesystem file, then the entry gets the actual file + times for that file, to NTFS-level precision. If you add an entry from a + stream, or a string, then the times get the value DateTime.Now. In + this case LastModified and ModifiedTime will be identical, + to 2 seconds of precision. You can explicitly set the + CreationTime, AccessedTime, and ModifiedTime of an + entry using the property setters. If you want to set all of those + quantities, it's more efficient to use the method. Those + changes are not made permanent in the zip file until you call or one of its cousins. + + + + When creating a zip file, you can override the default behavior of + this library for formatting times in the zip file, disabling the + embedding of file times in NTFS format or enabling the storage of file + times in Unix format, or both. You may want to do this, for example, + when creating a zip file on Windows, that will be consumed on a Mac, + by an application that is not hip to the "NTFS times" format. To do + this, use the and + properties. A valid zip + file may store the file times in both formats. But, there are no + guarantees that a program running on Mac or Linux will gracefully + handle the NTFS-formatted times when Unix times are present, or that a + non-DotNetZip-powered application running on Windows will be able to + handle file times in Unix format. DotNetZip will always do something + reasonable; other libraries or tools may not. When in doubt, test. + + + + I'll bet you didn't think one person could type so much about time, eh? + And reading it was so enjoyable, too! Well, in appreciation, maybe you + should donate? + + + + + + + + + + + Last Access time for the file represented by the entry. + + + This value may or may not be meaningful. If the ZipEntry was read from an existing + Zip archive, this information may not be available. For an explanation of why, see + . + + + + + + + + The file creation time for the file represented by the entry. + + + + This value may or may not be meaningful. If the ZipEntry was read + from an existing zip archive, and the creation time was not set on the entry + when the zip file was created, then this property may be meaningless. For an + explanation of why, see . + + + + + + + + Sets the NTFS Creation, Access, and Modified times for the given entry. + + + + + When adding an entry from a file or directory, the Creation, Access, and + Modified times for the given entry are automatically set from the + filesystem values. When adding an entry from a stream or string, the + values are implicitly set to DateTime.Now. The application may wish to + set these values to some arbitrary value, before saving the archive, and + can do so using the various setters. If you want to set all of the times, + this method is more efficient. + + + + The values you set here will be retrievable with the , and properties. + + + + When this method is called, if both and are false, then the + EmitTimesInWindowsFormatWhenSaving flag is automatically set. + + + + DateTime values provided here without a DateTimeKind are assumed to be Local Time. + + + + the creation time of the entry. + the last access time of the entry. + the last modified time of the entry. + + + + + + + + + + Specifies whether the Creation, Access, and Modified times for the given + entry will be emitted in "Windows format" when the zip archive is saved. + + + + + An application creating a zip archive can use this flag to explicitly + specify that the file times for the entry should or should not be stored + in the zip archive in the format used by Windows. The default value of + this property is true. + + + + When adding an entry from a file or directory, the Creation (), Access (), and Modified + () times for the given entry are automatically + set from the filesystem values. When adding an entry from a stream or + string, all three values are implicitly set to DateTime.Now. Applications + can also explicitly set those times by calling . + + + + PKWARE's + zip specification describes multiple ways to format these times in a + zip file. One is the format Windows applications normally use: 100ns ticks + since Jan 1, 1601 UTC. The other is a format Unix applications typically + use: seconds since January 1, 1970 UTC. Each format can be stored in an + "extra field" in the zip entry when saving the zip archive. The former + uses an extra field with a Header Id of 0x000A, while the latter uses a + header ID of 0x5455. + + + + Not all zip tools and libraries can interpret these fields. Windows + compressed folders is one that can read the Windows Format timestamps, + while I believe the Infozip + tools can read the Unix format timestamps. Although the time values are + easily convertible, subject to a loss of precision, some tools and + libraries may be able to read only one or the other. DotNetZip can read or + write times in either or both formats. + + + + The times stored are taken from , , and . + + + + This property is not mutually exclusive from the property. It is + possible that a zip entry can embed the timestamps in both forms, one + form, or neither. But, there are no guarantees that a program running on + Mac or Linux will gracefully handle NTFS Formatted times, or that a + non-DotNetZip-powered application running on Windows will be able to + handle file times in Unix format. When in doubt, test. + + + + Normally you will use the ZipFile.EmitTimesInWindowsFormatWhenSaving + property, to specify the behavior for all entries in a zip, rather than + the property on each individual entry. + + + + + + + + + + + + + Specifies whether the Creation, Access, and Modified times for the given + entry will be emitted in "Unix(tm) format" when the zip archive is saved. + + + + + An application creating a zip archive can use this flag to explicitly + specify that the file times for the entry should or should not be stored + in the zip archive in the format used by Unix. By default this flag is + false, meaning the Unix-format times are not stored in the zip + archive. + + + + When adding an entry from a file or directory, the Creation (), Access (), and Modified + () times for the given entry are automatically + set from the filesystem values. When adding an entry from a stream or + string, all three values are implicitly set to DateTime.Now. Applications + can also explicitly set those times by calling . + + + + PKWARE's + zip specification describes multiple ways to format these times in a + zip file. One is the format Windows applications normally use: 100ns ticks + since Jan 1, 1601 UTC. The other is a format Unix applications typically + use: seconds since Jan 1, 1970 UTC. Each format can be stored in an + "extra field" in the zip entry when saving the zip archive. The former + uses an extra field with a Header Id of 0x000A, while the latter uses a + header ID of 0x5455. + + + + Not all tools and libraries can interpret these fields. Windows + compressed folders is one that can read the Windows Format timestamps, + while I believe the Infozip + tools can read the Unix format timestamps. Although the time values are + easily convertible, subject to a loss of precision, some tools and + libraries may be able to read only one or the other. DotNetZip can read or + write times in either or both formats. + + + + The times stored are taken from , , and . + + + + This property is not mutually exclusive from the property. It is + possible that a zip entry can embed the timestamps in both forms, one + form, or neither. But, there are no guarantees that a program running on + Mac or Linux will gracefully handle NTFS Formatted times, or that a + non-DotNetZip-powered application running on Windows will be able to + handle file times in Unix format. When in doubt, test. + + + + Normally you will use the ZipFile.EmitTimesInUnixFormatWhenSaving + property, to specify the behavior for all entries, rather than the + property on each individual entry. + + + + + + + + + + + + + The type of timestamp attached to the ZipEntry. + + + + This property is valid only for a ZipEntry that was read from a zip archive. + It indicates the type of timestamp attached to the entry. + + + + + + + + The file attributes for the entry. + + + + + + The attributes in NTFS include + ReadOnly, Archive, Hidden, System, and Indexed. When adding a + ZipEntry to a ZipFile, these attributes are set implicitly when + adding an entry from the filesystem. When adding an entry from a stream + or string, the Attributes are not set implicitly. Regardless of the way + an entry was added to a ZipFile, you can set the attributes + explicitly if you like. + + + + When reading a ZipEntry from a ZipFile, the attributes are + set according to the data stored in the ZipFile. If you extract the + entry from the archive to a filesystem file, DotNetZip will set the + attributes on the resulting file accordingly. + + + + The attributes can be set explicitly by the application. For example the + application may wish to set the FileAttributes.ReadOnly bit for all + entries added to an archive, so that on unpack, this attribute will be set + on the extracted file. Any changes you make to this property are made + permanent only when you call a Save() method on the ZipFile + instance that contains the ZipEntry. + + + + For example, an application may wish to zip up a directory and set the + ReadOnly bit on every file in the archive, so that upon later extraction, + the resulting files will be marked as ReadOnly. Not every extraction tool + respects these attributes, but if you unpack with DotNetZip, as for + example in a self-extracting archive, then the attributes will be set as + they are stored in the ZipFile. + + + + These attributes may not be interesting or useful if the resulting archive + is extracted on a non-Windows platform. How these attributes get used + upon extraction depends on the platform and tool used. + + + + This property is only partially supported in the Silverlight version + of the library: applications can read attributes on entries within + ZipFiles. But extracting entries within Silverlight will not set the + attributes on the extracted files. + + + + + + + The name of the filesystem file, referred to by the ZipEntry. + + + + + This property specifies the thing-to-be-zipped on disk, and is set only + when the ZipEntry is being created from a filesystem file. If the + ZipFile is instantiated by reading an existing .zip archive, then + the LocalFileName will be null (Nothing in VB). + + + + When it is set, the value of this property may be different than , which is the path used in the archive itself. If you + call Zip.AddFile("foop.txt", AlternativeDirectory), then the path + used for the ZipEntry within the zip archive will be different + than this path. + + + + If the entry is being added from a stream, then this is null (Nothing in VB). + + + + + + + + The name of the file contained in the ZipEntry. + + + + + + This is the name of the entry in the ZipFile itself. When creating + a zip archive, if the ZipEntry has been created from a filesystem + file, via a call to or , or a related overload, the value + of this property is derived from the name of that file. The + FileName property does not include drive letters, and may include a + different directory path, depending on the value of the + directoryPathInArchive parameter used when adding the entry into + the ZipFile. + + + + In some cases there is no related filesystem file - for example when a + ZipEntry is created using or one of the similar overloads. In this case, the value of + this property is derived from the fileName and the directory path passed + to that method. + + + + When reading a zip file, this property takes the value of the entry name + as stored in the zip file. If you extract such an entry, the extracted + file will take the name given by this property. + + + + Applications can set this property when creating new zip archives or when + reading existing archives. When setting this property, the actual value + that is set will replace backslashes with forward slashes, in accordance + with the Zip + specification, for compatibility with Unix(tm) and ... get + this.... Amiga! + + + + If an application reads a ZipFile via or a related overload, and then explicitly + sets the FileName on an entry contained within the ZipFile, and + then calls , the application will effectively + rename the entry within the zip archive. + + + + If an application sets the value of FileName, then calls + Extract() on the entry, the entry is extracted to a file using the + newly set value as the filename. The FileName value is made + permanent in the zip archive only after a call to one of the + ZipFile.Save() methods on the ZipFile that contains the + ZipEntry. + + + + If an application attempts to set the FileName to a value that + would result in a duplicate entry in the ZipFile, an exception is + thrown. + + + + When a ZipEntry is contained within a ZipFile, applications + cannot rename the entry within the context of a foreach (For + Each in VB) loop, because of the way the ZipFile stores + entries. If you need to enumerate through all the entries and rename one + or more of them, use ZipFile.EntriesSorted as the + collection. See also, ZipFile.GetEnumerator(). + + + + + + + The stream that provides content for the ZipEntry. + + + + + + The application can use this property to set the input stream for an + entry on a just-in-time basis. Imagine a scenario where the application + creates a ZipFile comprised of content obtained from hundreds of + files, via calls to AddFile(). The DotNetZip library opens streams + on these files on a just-in-time basis, only when writing the entry out to + an external store within the scope of a ZipFile.Save() call. Only + one input stream is opened at a time, as each entry is being written out. + + + + Now imagine a different application that creates a ZipFile + with content obtained from hundreds of streams, added through . Normally the + application would supply an open stream to that call. But when large + numbers of streams are being added, this can mean many open streams at one + time, unnecessarily. + + + + To avoid this, call and specify delegates that open and close the stream at + the time of Save. + + + + + Setting the value of this property when the entry was not added from a + stream (for example, when the ZipEntry was added with or , or when the entry was added by + reading an existing zip archive) will throw an exception. + + + + + + + + A flag indicating whether the InputStream was provided Just-in-time. + + + + + + When creating a zip archive, an application can obtain content for one or + more of the ZipEntry instances from streams, using the method. At the time + of calling that method, the application can supply null as the value of + the stream parameter. By doing so, the application indicates to the + library that it will provide a stream for the entry on a just-in-time + basis, at the time one of the ZipFile.Save() methods is called and + the data for the various entries are being compressed and written out. + + + + In this case, the application can set the + property, typically within the SaveProgress event (event type: ) for that entry. + + + + The application will later want to call Close() and Dispose() on that + stream. In the SaveProgress event, when the event type is , the application can + do so. This flag indicates that the stream has been provided by the + application on a just-in-time basis and that it is the application's + responsibility to call Close/Dispose on that stream. + + + + + + + + An enum indicating the source of the ZipEntry. + + + + + The version of the zip engine needed to read the ZipEntry. + + + + + This is a readonly property, indicating the version of the Zip + specification that the extracting tool or library must support to + extract the given entry. Generally higher versions indicate newer + features. Older zip engines obviously won't know about new features, and + won't be able to extract entries that depend on those newer features. + + + + + value + Features + + + + 20 + a basic Zip Entry, potentially using PKZIP encryption. + + + + + 45 + The ZIP64 extension is used on the entry. + + + + + 46 + File is compressed using BZIP2 compression* + + + + 50 + File is encrypted using PkWare's DES, 3DES, (broken) RC2 or RC4 + + + + 51 + File is encrypted using PKWare's AES encryption or corrected RC2 encryption. + + + + 52 + File is encrypted using corrected RC2-64 encryption** + + + + 61 + File is encrypted using non-OAEP key wrapping*** + + + + 63 + File is compressed using LZMA, PPMd+, Blowfish, or Twofish + + + + + + There are other values possible, not listed here. DotNetZip supports + regular PKZip encryption, and ZIP64 extensions. DotNetZip cannot extract + entries that require a zip engine higher than 45. + + + + This value is set upon reading an existing zip file, or after saving a zip + archive. + + + + + + The comment attached to the ZipEntry. + + + + + Each entry in a zip file can optionally have a comment associated to + it. The comment might be displayed by a zip tool during extraction, for + example. + + + + By default, the Comment is encoded in IBM437 code page. You can + specify an alternative with and + . + + + + + + + + Indicates whether the entry requires ZIP64 extensions. + + + + + + This property is null (Nothing in VB) until a Save() method on the + containing instance has been called. The property is + non-null (HasValue is true) only after a Save() method has + been called. + + + + After the containing ZipFile has been saved, the Value of this + property is true if any of the following three conditions holds: the + uncompressed size of the entry is larger than 0xFFFFFFFF; the compressed + size of the entry is larger than 0xFFFFFFFF; the relative offset of the + entry within the zip archive is larger than 0xFFFFFFFF. These quantities + are not known until a Save() is attempted on the zip archive and + the compression is applied. + + + + If none of the three conditions holds, then the Value is false. + + + + A Value of false does not indicate that the entry, as saved in the + zip archive, does not use ZIP64. It merely indicates that ZIP64 is + not required. An entry may use ZIP64 even when not required if + the property on the containing + ZipFile instance is set to , or if + the property on the containing + ZipFile instance is set to + and the output stream was not seekable. + + + + + + + + Indicates whether the entry actually used ZIP64 extensions, as it was most + recently written to the output file or stream. + + + + + + This Nullable property is null (Nothing in VB) until a Save() + method on the containing instance has been + called. HasValue is true only after a Save() method has been + called. + + + + The value of this property for a particular ZipEntry may change + over successive calls to Save() methods on the containing ZipFile, + even if the file that corresponds to the ZipEntry does not. This + may happen if other entries contained in the ZipFile expand, + causing the offset for this particular entry to exceed 0xFFFFFFFF. + + + + + + + The bitfield for the entry as defined in the zip spec. You probably + never need to look at this. + + + + + You probably do not need to concern yourself with the contents of this + property, but in case you do: + + + + + bit + meaning + + + + 0 + set if encryption is used. + + + + 1-2 + + set to determine whether normal, max, fast deflation. DotNetZip library + always leaves these bits unset when writing (indicating "normal" + deflation"), but can read an entry with any value here. + + + + + 3 + + Indicates that the Crc32, Compressed and Uncompressed sizes are zero in the + local header. This bit gets set on an entry during writing a zip file, when + it is saved to a non-seekable output stream. + + + + + + 4 + reserved for "enhanced deflating". This library doesn't do enhanced deflating. + + + + 5 + set to indicate the zip is compressed patched data. This library doesn't do that. + + + + 6 + + set if PKWare's strong encryption is used (must also set bit 1 if bit 6 is + set). This bit is not set if WinZip's AES encryption is set. + + + + 7 + not used + + + + 8 + not used + + + + 9 + not used + + + + 10 + not used + + + + 11 + + Language encoding flag (EFS). If this bit is set, the filename and comment + fields for this file must be encoded using UTF-8. This library currently + does not support UTF-8. + + + + + 12 + Reserved by PKWARE for enhanced compression. + + + + 13 + + Used when encrypting the Central Directory to indicate selected data + values in the Local Header are masked to hide their actual values. See + the section in the Zip + specification describing the Strong Encryption Specification for + details. + + + + + 14 + Reserved by PKWARE. + + + + 15 + Reserved by PKWARE. + + + + + + + + + The compression method employed for this ZipEntry. + + + + + + The + Zip specification allows a variety of compression methods. This + library supports just two: 0x08 = Deflate. 0x00 = Store (no compression), + for reading or writing. + + + + When reading an entry from an existing zipfile, the value you retrieve + here indicates the compression method used on the entry by the original + creator of the zip. When writing a zipfile, you can specify either 0x08 + (Deflate) or 0x00 (None). If you try setting something else, you will get + an exception. + + + + You may wish to set CompressionMethod to CompressionMethod.None (0) + when zipping already-compressed data like a jpg, png, or mp3 file. + This can save time and cpu cycles. + + + + When setting this property on a ZipEntry that is read from an + existing zip file, calling ZipFile.Save() will cause the new + CompressionMethod to be used on the entry in the newly saved zip file. + + + + Setting this property may have the side effect of modifying the + CompressionLevel property. If you set the CompressionMethod to a + value other than None, and CompressionLevel is previously + set to None, then CompressionLevel will be set to + Default. + + + + + + + In this example, the first entry added to the zip archive uses the default + behavior - compression is used where it makes sense. The second entry, + the MP3 file, is added to the archive without being compressed. + + using (ZipFile zip = new ZipFile(ZipFileToCreate)) + { + ZipEntry e1= zip.AddFile(@"notes\Readme.txt"); + ZipEntry e2= zip.AddFile(@"music\StopThisTrain.mp3"); + e2.CompressionMethod = CompressionMethod.None; + zip.Save(); + } + + + + Using zip As New ZipFile(ZipFileToCreate) + zip.AddFile("notes\Readme.txt") + Dim e2 as ZipEntry = zip.AddFile("music\StopThisTrain.mp3") + e2.CompressionMethod = CompressionMethod.None + zip.Save + End Using + + + + + + Sets the compression level to be used for the entry when saving the zip + archive. This applies only for CompressionMethod = DEFLATE. + + + + + When using the DEFLATE compression method, Varying the compression + level used on entries can affect the size-vs-speed tradeoff when + compression and decompressing data streams or files. + + + + If you do not set this property, the default compression level is used, + which normally gives a good balance of compression efficiency and + compression speed. In some tests, using BestCompression can + double the time it takes to compress, while delivering just a small + increase in compression efficiency. This behavior will vary with the + type of data you compress. If you are in doubt, just leave this setting + alone, and accept the default. + + + + When setting this property on a ZipEntry that is read from an + existing zip file, calling ZipFile.Save() will cause the new + CompressionLevel to be used on the entry in the newly saved zip file. + + + + Setting this property may have the side effect of modifying the + CompressionMethod property. If you set the CompressionLevel + to a value other than None, CompressionMethod will be set + to Deflate, if it was previously None. + + + + Setting this property has no effect if the CompressionMethod is something + other than Deflate or None. + + + + + + + + The compressed size of the file, in bytes, within the zip archive. + + + + When reading a ZipFile, this value is read in from the existing + zip file. When creating or updating a ZipFile, the compressed + size is computed during compression. Therefore the value on a + ZipEntry is valid after a call to Save() (or one of its + overloads) in that case. + + + + + + + The size of the file, in bytes, before compression, or after extraction. + + + + When reading a ZipFile, this value is read in from the existing + zip file. When creating or updating a ZipFile, the uncompressed + size is computed during compression. Therefore the value on a + ZipEntry is valid after a call to Save() (or one of its + overloads) in that case. + + + + + + + The ratio of compressed size to uncompressed size of the ZipEntry. + + + + + This is a ratio of the compressed size to the uncompressed size of the + entry, expressed as a double in the range of 0 to 100+. A value of 100 + indicates no compression at all. It could be higher than 100 when the + compression algorithm actually inflates the data, as may occur for small + files, or uncompressible data that is encrypted. + + + + You could format it for presentation to a user via a format string of + "{3,5:F0}%" to see it as a percentage. + + + + If the size of the original uncompressed file is 0, implying a + denominator of 0, the return value will be zero. + + + + This property is valid after reading in an existing zip file, or after + saving the ZipFile that contains the ZipEntry. You cannot know the + effect of a compression transform until you try it. + + + + + + + The 32-bit CRC (Cyclic Redundancy Check) on the contents of the ZipEntry. + + + + + You probably don't need to concern yourself with this. It is used + internally by DotNetZip to verify files or streams upon extraction. + + The value is a 32-bit + CRC using 0xEDB88320 for the polynomial. This is the same CRC-32 used in + PNG, MPEG-2, and other protocols and formats. It is a read-only property; when + creating a Zip archive, the CRC for each entry is set only after a call to + Save() on the containing ZipFile. When reading an existing zip file, the value + of this property reflects the stored CRC for the entry. + + + + + + True if the entry is a directory (not a file). + This is a readonly property on the entry. + + + + + A derived property that is true if the entry uses encryption. + + + + + This is a readonly property on the entry. When reading a zip file, + the value for the ZipEntry is determined by the data read + from the zip file. After saving a ZipFile, the value of this + property for each ZipEntry indicates whether encryption was + actually used (which will have been true if the was set and the property + was something other than . + + + + + + Set this to specify which encryption algorithm to use for the entry when + saving it to a zip archive. + + + + + + Set this property in order to encrypt the entry when the ZipFile is + saved. When setting this property, you must also set a on the entry. If you set a value other than on this property and do not set a + Password then the entry will not be encrypted. The ZipEntry + data is encrypted as the ZipFile is saved, when you call or one of its cousins on the containing + ZipFile instance. You do not need to specify the Encryption + when extracting entries from an archive. + + + + The Zip specification from PKWare defines a set of encryption algorithms, + and the data formats for the zip archive that support them, and PKWare + supports those algorithms in the tools it produces. Other vendors of tools + and libraries, such as WinZip or Xceed, typically support a + subset of the algorithms specified by PKWare. These tools can + sometimes support additional different encryption algorithms and data + formats, not specified by PKWare. The AES Encryption specified and + supported by WinZip is the most popular example. This library supports a + subset of the complete set of algorithms specified by PKWare and other + vendors. + + + + There is no common, ubiquitous multi-vendor standard for strong encryption + within zip files. There is broad support for so-called "traditional" Zip + encryption, sometimes called Zip 2.0 encryption, as specified + by PKWare, but this encryption is considered weak and + breakable. This library currently supports the Zip 2.0 "weak" encryption, + and also a stronger WinZip-compatible AES encryption, using either 128-bit + or 256-bit key strength. If you want DotNetZip to support an algorithm + that is not currently supported, call the author of this library and maybe + we can talk business. + + + + The class also has a property. In most cases you will use + that property when setting encryption. This property takes + precedence over any Encryption set on the ZipFile itself. + Typically, you would use the per-entry Encryption when most entries in the + zip archive use one encryption algorithm, and a few entries use a + different one. If all entries in the zip file use the same Encryption, + then it is simpler to just set this property on the ZipFile itself, when + creating a zip archive. + + + + Some comments on updating archives: If you read a ZipFile, you can + modify the Encryption on an encrypted entry: you can remove encryption + from an entry that was encrypted; you can encrypt an entry that was not + encrypted previously; or, you can change the encryption algorithm. The + changes in encryption are not made permanent until you call Save() on the + ZipFile. To effect changes in encryption, the entry content is + streamed through several transformations, depending on the modification + the application has requested. For example if the entry is not encrypted + and the application sets Encryption to PkzipWeak, then at + the time of Save(), the original entry is read and decompressed, + then re-compressed and encrypted. Conversely, if the original entry is + encrypted with PkzipWeak encryption, and the application sets the + Encryption property to WinZipAes128, then at the time of + Save(), the original entry is decrypted via PKZIP encryption and + decompressed, then re-compressed and re-encrypted with AES. This all + happens automatically within the library, but it can be time-consuming for + large entries. + + + + Additionally, when updating archives, it is not possible to change the + password when changing the encryption algorithm. To change both the + algorithm and the password, you need to Save() the zipfile twice. First + set the Encryption to None, then call Save(). Then set the + Encryption to the new value (not "None"), then call Save() + once again. + + + + The WinZip AES encryption algorithms are not supported on the .NET Compact + Framework. + + + + + + This example creates a zip archive that uses encryption, and then extracts + entries from the archive. When creating the zip archive, the ReadMe.txt + file is zipped without using a password or encryption. The other file + uses encryption. + + + // Create a zip archive with AES Encryption. + using (ZipFile zip = new ZipFile()) + { + zip.AddFile("ReadMe.txt") + ZipEntry e1= zip.AddFile("2008-Regional-Sales-Report.pdf"); + e1.Encryption= EncryptionAlgorithm.WinZipAes256; + e1.Password= "Top.Secret.No.Peeking!"; + zip.Save("EncryptedArchive.zip"); + } + + // Extract a zip archive that uses AES Encryption. + // You do not need to specify the algorithm during extraction. + using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) + { + // Specify the password that is used during extraction, for + // all entries that require a password: + zip.Password= "Top.Secret.No.Peeking!"; + zip.ExtractAll("extractDirectory"); + } + + + + ' Create a zip that uses Encryption. + Using zip As New ZipFile() + zip.AddFile("ReadMe.txt") + Dim e1 as ZipEntry + e1= zip.AddFile("2008-Regional-Sales-Report.pdf") + e1.Encryption= EncryptionAlgorithm.WinZipAes256 + e1.Password= "Top.Secret.No.Peeking!" + zip.Save("EncryptedArchive.zip") + End Using + + ' Extract a zip archive that uses AES Encryption. + ' You do not need to specify the algorithm during extraction. + Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) + ' Specify the password that is used during extraction, for + ' all entries that require a password: + zip.Password= "Top.Secret.No.Peeking!" + zip.ExtractAll("extractDirectory") + End Using + + + + + + Thrown in the setter if EncryptionAlgorithm.Unsupported is specified. + + + ZipEntry.Password + ZipFile.Encryption + + + + The Password to be used when encrypting a ZipEntry upon + ZipFile.Save(), or when decrypting an entry upon Extract(). + + + + + This is a write-only property on the entry. Set this to request that the + entry be encrypted when writing the zip archive, or set it to specify the + password to be used when extracting an existing entry that is encrypted. + + + + The password set here is implicitly used to encrypt the entry during the + operation, or to decrypt during the or operation. If you set + the Password on a ZipEntry after calling Save(), there is no + effect. + + + + Consider setting the property when using a + password. Answering concerns that the standard password protection + supported by all zip tools is weak, WinZip has extended the ZIP + specification with a way to use AES Encryption to protect entries in the + Zip file. Unlike the "PKZIP 2.0" encryption specified in the PKZIP + specification, AES + Encryption uses a standard, strong, tested, encryption + algorithm. DotNetZip can create zip archives that use WinZip-compatible + AES encryption, if you set the property. But, + archives created that use AES encryption may not be readable by all other + tools and libraries. For example, Windows Explorer cannot read a + "compressed folder" (a zip file) that uses AES encryption, though it can + read a zip file that uses "PKZIP encryption." + + + + The class also has a + property. This property takes precedence over any password set on the + ZipFile itself. Typically, you would use the per-entry Password when most + entries in the zip archive use one password, and a few entries use a + different password. If all entries in the zip file use the same password, + then it is simpler to just set this property on the ZipFile itself, + whether creating a zip archive or extracting a zip archive. + + + + Some comments on updating archives: If you read a ZipFile, you + cannot modify the password on any encrypted entry, except by extracting + the entry with the original password (if any), removing the original entry + via , and then adding a new + entry with a new Password. + + + + For example, suppose you read a ZipFile, and there is an encrypted + entry. Setting the Password property on that ZipEntry and then + calling Save() on the ZipFile does not update the password + on that entry in the archive. Neither is an exception thrown. Instead, + what happens during the Save() is the existing entry is copied + through to the new zip archive, in its original encrypted form. Upon + re-reading that archive, the entry can be decrypted with its original + password. + + + + If you read a ZipFile, and there is an un-encrypted entry, you can set the + Password on the entry and then call Save() on the ZipFile, and get + encryption on that entry. + + + + + + + This example creates a zip file with two entries, and then extracts the + entries from the zip file. When creating the zip file, the two files are + added to the zip file using password protection. Each entry uses a + different password. During extraction, each file is extracted with the + appropriate password. + + + // create a file with encryption + using (ZipFile zip = new ZipFile()) + { + ZipEntry entry; + entry= zip.AddFile("Declaration.txt"); + entry.Password= "123456!"; + entry = zip.AddFile("Report.xls"); + entry.Password= "1Secret!"; + zip.Save("EncryptedArchive.zip"); + } + + // extract entries that use encryption + using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) + { + ZipEntry entry; + entry = zip["Declaration.txt"]; + entry.Password = "123456!"; + entry.Extract("extractDir"); + entry = zip["Report.xls"]; + entry.Password = "1Secret!"; + entry.Extract("extractDir"); + } + + + + + Using zip As New ZipFile + Dim entry as ZipEntry + entry= zip.AddFile("Declaration.txt") + entry.Password= "123456!" + entry = zip.AddFile("Report.xls") + entry.Password= "1Secret!" + zip.Save("EncryptedArchive.zip") + End Using + + + ' extract entries that use encryption + Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) + Dim entry as ZipEntry + entry = zip("Declaration.txt") + entry.Password = "123456!" + entry.Extract("extractDir") + entry = zip("Report.xls") + entry.Password = "1Secret!" + entry.Extract("extractDir") + End Using + + + + + + + ZipFile.Password + + + + The action the library should take when extracting a file that already exists. + + + + + This property affects the behavior of the Extract methods (one of the + Extract() or ExtractWithPassword() overloads), when + extraction would would overwrite an existing filesystem file. If you do + not set this property, the library throws an exception when extracting + an entry would overwrite an existing file. + + + + This property has no effect when extracting to a stream, or when the file to be + extracted does not already exist. + + + + + + + This example shows how to set the ExtractExistingFile property in + an ExtractProgress event, in response to user input. The + ExtractProgress event is invoked if and only if the + ExtractExistingFile property was previously set to + ExtractExistingFileAction.InvokeExtractProgressEvent. + + public static void ExtractProgress(object sender, ExtractProgressEventArgs e) + { + if (e.EventType == ZipProgressEventType.Extracting_BeforeExtractEntry) + Console.WriteLine("extract {0} ", e.CurrentEntry.FileName); + + else if (e.EventType == ZipProgressEventType.Extracting_ExtractEntryWouldOverwrite) + { + ZipEntry entry = e.CurrentEntry; + string response = null; + // Ask the user if he wants overwrite the file + do + { + Console.Write("Overwrite {0} in {1} ? (y/n/C) ", entry.FileName, e.ExtractLocation); + response = Console.ReadLine(); + Console.WriteLine(); + + } while (response != null && response[0]!='Y' && + response[0]!='N' && response[0]!='C'); + + if (response[0]=='C') + e.Cancel = true; + else if (response[0]=='Y') + entry.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently; + else + entry.ExtractExistingFile= ExtractExistingFileAction.DoNotOverwrite; + } + } + + + + + + The action to take when an error is encountered while + opening or reading files as they are saved into a zip archive. + + + + + Errors can occur within a call to ZipFile.Save, as the various files contained + in a ZipFile are being saved into the zip archive. During the + Save, DotNetZip will perform a File.Open on the file + associated to the ZipEntry, and then will read the entire contents of + the file as it is zipped. Either the open or the Read may fail, because + of lock conflicts or other reasons. Using this property, you can + specify the action to take when such errors occur. + + + + Typically you will NOT set this property on individual ZipEntry + instances. Instead, you will set the ZipFile.ZipErrorAction property on + the ZipFile instance, before adding any entries to the + ZipFile. If you do this, errors encountered on behalf of any of + the entries in the ZipFile will be handled the same way. + + + + But, if you use a handler, you will want + to set this property on the ZipEntry within the handler, to + communicate back to DotNetZip what you would like to do with the + particular error. + + + + + + + + + Indicates whether the entry was included in the most recent save. + + + An entry can be excluded or skipped from a save if there is an error + opening or reading the entry. + + + + + + A callback that allows the application to specify the compression to use + for a given entry that is about to be added to the zip archive. + + + + + See + + + + + + Set to indicate whether to use UTF-8 encoding for filenames and comments. + + + + + + If this flag is set, the comment and filename for the entry will be + encoded with UTF-8, as described in the Zip + specification, if necessary. "Necessary" means, the filename or + entry comment (if any) cannot be reflexively encoded and decoded using the + default code page, IBM437. + + + + Setting this flag to true is equivalent to setting to System.Text.Encoding.UTF8. + + + + This flag has no effect or relation to the text encoding used within the + file itself. + + + + + + + The text encoding to use for the FileName and Comment on this ZipEntry, + when the default encoding is insufficient. + + + + + + Don't use this property. See . + + + + + + + Specifies the alternate text encoding used by this ZipEntry + + + + The default text encoding used in Zip files for encoding filenames and + comments is IBM437, which is something like a superset of ASCII. In + cases where this is insufficient, applications can specify an + alternate encoding. + + + When creating a zip file, the usage of the alternate encoding is + governed by the property. + Typically you would set both properties to tell DotNetZip to employ an + encoding that is not IBM437 in the zipfile you are creating. + + + Keep in mind that because the ZIP specification states that the only + valid encodings to use are IBM437 and UTF-8, if you use something + other than that, then zip tools and libraries may not be able to + successfully read the zip archive you generate. + + + The zip specification states that applications should presume that + IBM437 is in use, except when a special bit is set, which indicates + UTF-8. There is no way to specify an arbitrary code page, within the + zip file itself. When you create a zip file encoded with gb2312 or + ibm861 or anything other than IBM437 or UTF-8, then the application + that reads the zip file needs to "know" which code page to use. In + some cases, the code page used when reading is chosen implicitly. For + example, WinRar uses the ambient code page for the host desktop + operating system. The pitfall here is that if you create a zip in + Copenhagen and send it to Tokyo, the reader of the zipfile may not be + able to decode successfully. + + + + This example shows how to create a zipfile encoded with a + language-specific encoding: + + using (var zip = new ZipFile()) + { + zip.AlternateEnoding = System.Text.Encoding.GetEncoding("ibm861"); + zip.AlternateEnodingUsage = ZipOption.Always; + zip.AddFileS(arrayOfFiles); + zip.Save("Myarchive-Encoded-in-IBM861.zip"); + } + + + + + + + Describes if and when this instance should apply + AlternateEncoding to encode the FileName and Comment, when + saving. + + + + + + Indicates whether an entry is marked as a text file. Be careful when + using on this property. Unless you have a good reason, you should + probably ignore this property. + + + + + The ZIP format includes a provision for specifying whether an entry in + the zip archive is a text or binary file. This property exposes that + metadata item. Be careful when using this property: It's not clear + that this property as a firm meaning, across tools and libraries. + + + + To be clear, when reading a zip file, the property value may or may + not be set, and its value may or may not be valid. Not all entries + that you may think of as "text" entries will be so marked, and entries + marked as "text" are not guaranteed in any way to be text entries. + Whether the value is set and set correctly depends entirely on the + application that produced the zip file. + + + + There are many zip tools available, and when creating zip files, some + of them "respect" the IsText metadata field, and some of them do not. + Unfortunately, even when an application tries to do "the right thing", + it's not always clear what "the right thing" is. + + + + There's no firm definition of just what it means to be "a text file", + and the zip specification does not help in this regard. Twenty years + ago, text was ASCII, each byte was less than 127. IsText meant, all + bytes in the file were less than 127. These days, it is not the case + that all text files have all bytes less than 127. Any unicode file + may have bytes that are above 0x7f. The zip specification has nothing + to say on this topic. Therefore, it's not clear what IsText really + means. + + + + This property merely tells a reading application what is stored in the + metadata for an entry, without guaranteeing its validity or its + meaning. + + + + When DotNetZip is used to create a zipfile, it attempts to set this + field "correctly." For example, if a file ends in ".txt", this field + will be set. Your application may override that default setting. When + writing a zip file, you must set the property before calling + Save() on the ZipFile. + + + + When reading a zip file, a more general way to decide just what kind + of file is contained in a particular entry is to use the file type + database stored in the operating system. The operating system stores + a table that says, a file with .jpg extension is a JPG image file, a + file with a .xml extension is an XML document, a file with a .txt is a + pure ASCII text document, and so on. To get this information on + Windows, you + need to read and parse the registry. + + + + + using (var zip = new ZipFile()) + { + var e = zip.UpdateFile("Descriptions.mme", ""); + e.IsText = true; + zip.Save(zipPath); + } + + + + Using zip As New ZipFile + Dim e2 as ZipEntry = zip.AddFile("Descriptions.mme", "") + e.IsText= True + zip.Save(zipPath) + End Using + + + + + Provides a string representation of the instance. + a string representation of the instance. + + + + Extract the entry to the filesystem, starting at the current + working directory. + + + + This method has a bunch of overloads! One of them is sure to + be the right one for you... If you don't like these, check + out the ExtractWithPassword() methods. + + + + + + + + + This method extracts an entry from a zip file into the current + working directory. The path of the entry as extracted is the full + path as specified in the zip archive, relative to the current + working directory. After the file is extracted successfully, the + file attributes and timestamps are set. + + + + The action taken when extraction an entry would overwrite an + existing file is determined by the property. + + + + Within the call to Extract(), the content for the entry is + written into a filesystem file, and then the last modified time of the + file is set according to the property on + the entry. See the remarks the property for + some details about the last modified time. + + + + + + + Extract the entry to a file in the filesystem, using the specified + behavior when extraction would overwrite an existing file. + + + + + See the remarks on the property, for some + details about how the last modified time of the file is set after + extraction. + + + + + The action to take if extraction would overwrite an existing file. + + + + + Extracts the entry to the specified stream. + + + + + The caller can specify any write-able stream, for example a , a , or ASP.NET's + Response.OutputStream. The content will be decrypted and + decompressed as necessary. If the entry is encrypted and no password + is provided, this method will throw. + + + The position on the stream is not reset by this method before it extracts. + You may want to call stream.Seek() before calling ZipEntry.Extract(). + + + + + the stream to which the entry should be extracted. + + + + + + Extract the entry to the filesystem, starting at the specified base + directory. + + + the pathname of the base directory + + + + + + This example extracts only the entries in a zip file that are .txt files, + into a directory called "textfiles". + + using (ZipFile zip = ZipFile.Read("PackedDocuments.zip")) + { + foreach (string s1 in zip.EntryFilenames) + { + if (s1.EndsWith(".txt")) + { + zip[s1].Extract("textfiles"); + } + } + } + + + Using zip As ZipFile = ZipFile.Read("PackedDocuments.zip") + Dim s1 As String + For Each s1 In zip.EntryFilenames + If s1.EndsWith(".txt") Then + zip(s1).Extract("textfiles") + End If + Next + End Using + + + + + + + Using this method, existing entries in the filesystem will not be + overwritten. If you would like to force the overwrite of existing + files, see the property, or call + . + + + + See the remarks on the property, for some + details about how the last modified time of the created file is set. + + + + + + Extract the entry to the filesystem, starting at the specified base + directory, and using the specified behavior when extraction would + overwrite an existing file. + + + + + See the remarks on the property, for some + details about how the last modified time of the created file is set. + + + + + + String sZipPath = "Airborne.zip"; + String sFilePath = "Readme.txt"; + String sRootFolder = "Digado"; + using (ZipFile zip = ZipFile.Read(sZipPath)) + { + if (zip.EntryFileNames.Contains(sFilePath)) + { + // use the string indexer on the zip file + zip[sFileName].Extract(sRootFolder, + ExtractExistingFileAction.OverwriteSilently); + } + } + + + + Dim sZipPath as String = "Airborne.zip" + Dim sFilePath As String = "Readme.txt" + Dim sRootFolder As String = "Digado" + Using zip As ZipFile = ZipFile.Read(sZipPath) + If zip.EntryFileNames.Contains(sFilePath) + ' use the string indexer on the zip file + zip(sFilePath).Extract(sRootFolder, _ + ExtractExistingFileAction.OverwriteSilently) + End If + End Using + + + + the pathname of the base directory + + The action to take if extraction would overwrite an existing file. + + + + + Extract the entry to the filesystem, using the current working directory + and the specified password. + + + + This method has a bunch of overloads! One of them is sure to be + the right one for you... + + + + + + + + + Existing entries in the filesystem will not be overwritten. If you + would like to force the overwrite of existing files, see the property, or call + . + + + + See the remarks on the property for some + details about how the "last modified" time of the created file is + set. + + + + + In this example, entries that use encryption are extracted using a + particular password. + + using (var zip = ZipFile.Read(FilePath)) + { + foreach (ZipEntry e in zip) + { + if (e.UsesEncryption) + e.ExtractWithPassword("Secret!"); + else + e.Extract(); + } + } + + + Using zip As ZipFile = ZipFile.Read(FilePath) + Dim e As ZipEntry + For Each e In zip + If (e.UsesEncryption) + e.ExtractWithPassword("Secret!") + Else + e.Extract + End If + Next + End Using + + + The Password to use for decrypting the entry. + + + + Extract the entry to the filesystem, starting at the specified base + directory, and using the specified password. + + + + + + + + Existing entries in the filesystem will not be overwritten. If you + would like to force the overwrite of existing files, see the property, or call + . + + + + See the remarks on the property, for some + details about how the last modified time of the created file is set. + + + + The pathname of the base directory. + The Password to use for decrypting the entry. + + + + Extract the entry to a file in the filesystem, relative to the + current directory, using the specified behavior when extraction + would overwrite an existing file. + + + + + See the remarks on the property, for some + details about how the last modified time of the created file is set. + + + + The Password to use for decrypting the entry. + + + The action to take if extraction would overwrite an existing file. + + + + + Extract the entry to the filesystem, starting at the specified base + directory, and using the specified behavior when extraction would + overwrite an existing file. + + + + See the remarks on the property, for some + details about how the last modified time of the created file is set. + + + the pathname of the base directory + + The action to take if extraction would + overwrite an existing file. + + The Password to use for decrypting the entry. + + + + Extracts the entry to the specified stream, using the specified + Password. For example, the caller could extract to Console.Out, or + to a MemoryStream. + + + + + The caller can specify any write-able stream, for example a , a , or ASP.NET's + Response.OutputStream. The content will be decrypted and + decompressed as necessary. If the entry is encrypted and no password + is provided, this method will throw. + + + The position on the stream is not reset by this method before it extracts. + You may want to call stream.Seek() before calling ZipEntry.Extract(). + + + + + + the stream to which the entry should be extracted. + + + The password to use for decrypting the entry. + + + + + Opens a readable stream corresponding to the zip entry in the + archive. The stream decompresses and decrypts as necessary, as it + is read. + + + + + + DotNetZip offers a variety of ways to extract entries from a zip + file. This method allows an application to extract an entry by + reading a . + + + + The return value is of type . Use it as you would any + stream for reading. When an application calls on that stream, it will + receive data from the zip entry that is decrypted and decompressed + as necessary. + + + + CrcCalculatorStream adds one additional feature: it keeps a + CRC32 checksum on the bytes of the stream as it is read. The CRC + value is available in the property on the + CrcCalculatorStream. When the read is complete, your + application + should check this CRC against the + property on the ZipEntry to validate the content of the + ZipEntry. You don't have to validate the entry using the CRC, but + you should, to verify integrity. Check the example for how to do + this. + + + + If the entry is protected with a password, then you need to provide + a password prior to calling , either by + setting the property on the entry, or the + property on the ZipFile + itself. Or, you can use , the + overload of OpenReader that accepts a password parameter. + + + + If you want to extract entry data into a write-able stream that is + already opened, like a , do not + use this method. Instead, use . + + + + Your application may use only one stream created by OpenReader() at + a time, and you should not call other Extract methods before + completing your reads on a stream obtained from OpenReader(). This + is because there is really only one source stream for the compressed + content. A call to OpenReader() seeks in the source stream, to the + beginning of the compressed content. A subsequent call to + OpenReader() on a different entry will seek to a different position + in the source stream, as will a call to Extract() or one of its + overloads. This will corrupt the state for the decompressing stream + from the original call to OpenReader(). + + + + The OpenReader() method works only when the ZipEntry is + obtained from an instance of ZipFile. This method will throw + an exception if the ZipEntry is obtained from a ZipInputStream. + + + + + This example shows how to open a zip archive, then read in a named + entry via a stream. After the read loop is complete, the code + compares the calculated during the read loop with the expected CRC + on the ZipEntry, to verify the extraction. + + using (ZipFile zip = new ZipFile(ZipFileToRead)) + { + ZipEntry e1= zip["Elevation.mp3"]; + using (Ionic.Zlib.CrcCalculatorStream s = e1.OpenReader()) + { + byte[] buffer = new byte[4096]; + int n, totalBytesRead= 0; + do { + n = s.Read(buffer,0, buffer.Length); + totalBytesRead+=n; + } while (n>0); + if (s.Crc32 != e1.Crc32) + throw new Exception(string.Format("The Zip Entry failed the CRC Check. (0x{0:X8}!=0x{1:X8})", s.Crc32, e1.Crc32)); + if (totalBytesRead != e1.UncompressedSize) + throw new Exception(string.Format("We read an unexpected number of bytes. ({0}!={1})", totalBytesRead, e1.UncompressedSize)); + } + } + + + Using zip As New ZipFile(ZipFileToRead) + Dim e1 As ZipEntry = zip.Item("Elevation.mp3") + Using s As Ionic.Zlib.CrcCalculatorStream = e1.OpenReader + Dim n As Integer + Dim buffer As Byte() = New Byte(4096) {} + Dim totalBytesRead As Integer = 0 + Do + n = s.Read(buffer, 0, buffer.Length) + totalBytesRead = (totalBytesRead + n) + Loop While (n > 0) + If (s.Crc32 <> e1.Crc32) Then + Throw New Exception(String.Format("The Zip Entry failed the CRC Check. (0x{0:X8}!=0x{1:X8})", s.Crc32, e1.Crc32)) + End If + If (totalBytesRead <> e1.UncompressedSize) Then + Throw New Exception(String.Format("We read an unexpected number of bytes. ({0}!={1})", totalBytesRead, e1.UncompressedSize)) + End If + End Using + End Using + + + + The Stream for reading. + + + + Opens a readable stream for an encrypted zip entry in the archive. + The stream decompresses and decrypts as necessary, as it is read. + + + + + See the documentation on the method for + full details. This overload allows the application to specify a + password for the ZipEntry to be read. + + + + The password to use for decrypting the entry. + The Stream for reading. + + + + Validates that the args are consistent. + + + Only one of {baseDir, outStream} can be non-null. + If baseDir is non-null, then the outputFile is created. + + + + + Reads one ZipEntry from the given stream. The content for + the entry does not get decompressed or decrypted. This method + basically reads metadata, and seeks. + + the ZipContainer this entry belongs to. + + true of this is the first entry being read from the stream. + + the ZipEntry read from the stream. + + + + Finds a particular segment in the given extra field. + This is used when modifying a previously-generated + extra field, in particular when removing the AES crypto + segment in the extra field. + + + + + At current cursor position in the stream, read the extra + field, and set the properties on the ZipEntry instance + appropriately. This can be called when processing the + Extra field in the Central Directory, or in the local + header. + + + + + generate and return a byte array that encodes the filename + for the entry. + + + + side effects: generate and store into _CommentBytes the + byte array for any comment attached to the entry. Also + sets _actualEncoding to indicate the actual encoding + used. The same encoding is used for both filename and + comment. + + + + + + Stores the position of the entry source stream, or, if the position is + already stored, seeks to that position. + + + + + This method is called in prep for reading the source stream. If PKZIP + encryption is used, then we need to calc the CRC32 before doing the + encryption, because the CRC is used in the 12th byte of the PKZIP + encryption header. So, we need to be able to seek backward in the source + when saving the ZipEntry. This method is called from the place that + calculates the CRC, and also from the method that does the encryption of + the file data. + + + + The first time through, this method sets the _sourceStreamOriginalPosition + field. Subsequent calls to this method seek to that position. + + + + + + Copy metadata that may have been changed by the app. We do this when + resetting the zipFile instance. If the app calls Save() on a ZipFile, then + tries to party on that file some more, we may need to Reset() it , which + means re-reading the entries and then copying the metadata. I think. + + + + + Set the input stream and get its length, if possible. The length is + used for progress updates, AND, to allow an optimization in case of + a stream/file of zero length. In that case we skip the Encrypt and + compression Stream. (like DeflateStream or BZip2OutputStream) + + + + + Prepare the given stream for output - wrap it in a CountingStream, and + then in a CRC stream, and an encryptor and deflator as appropriate. + + + + Previously this was used in ZipEntry.Write(), but in an effort to + introduce some efficiencies in that method I've refactored to put the + code inline. This method still gets called by ZipOutputStream. + + + + + + An enum that specifies the type of timestamp available on the ZipEntry. + + + + + + The last modified time of a file can be stored in multiple ways in + a zip file, and they are not mutually exclusive: + + + + + In the so-called "DOS" format, which has a 2-second precision. Values + are rounded to the nearest even second. For example, if the time on the + file is 12:34:43, then it will be stored as 12:34:44. This first value + is accessible via the LastModified property. This value is always + present in the metadata for each zip entry. In some cases the value is + invalid, or zero. + + + + In the so-called "Windows" or "NTFS" format, as an 8-byte integer + quantity expressed as the number of 1/10 milliseconds (in other words + the number of 100 nanosecond units) since January 1, 1601 (UTC). This + format is how Windows represents file times. This time is accessible + via the ModifiedTime property. + + + + In the "Unix" format, a 4-byte quantity specifying the number of seconds since + January 1, 1970 UTC. + + + + In an older format, now deprecated but still used by some current + tools. This format is also a 4-byte quantity specifying the number of + seconds since January 1, 1970 UTC. + + + + + + This bit field describes which of the formats were found in a ZipEntry that was read. + + + + + + + Default value. + + + + + A DOS timestamp with 2-second precision. + + + + + A Windows timestamp with 100-ns precision. + + + + + A Unix timestamp with 1-second precision. + + + + + A Unix timestamp with 1-second precision, stored in InfoZip v1 format. This + format is outdated and is supported for reading archives only. + + + + + The method of compression to use for a particular ZipEntry. + + + + PKWare's + ZIP Specification describes a number of distinct + cmopression methods that can be used within a zip + file. DotNetZip supports a subset of them. + + + + + No compression at all. For COM environments, the value is 0 (zero). + + + + + DEFLATE compression, as described in IETF RFC + 1951. This is the "normal" compression used in zip + files. For COM environments, the value is 8. + + + + + An enum that specifies the source of the ZipEntry. + + + + + Default value. Invalid on a bonafide ZipEntry. + + + + + The entry was instantiated by calling AddFile() or another method that + added an entry from the filesystem. + + + + + The entry was instantiated via or + . + + + + + The ZipEntry was instantiated by reading a zipfile. + + + + + The content for the ZipEntry will be or was provided by the WriteDelegate. + + + + + The content for the ZipEntry will be obtained from the stream dispensed by the OpenDelegate. + The entry was instantiated via . + + + + + The content for the ZipEntry will be or was obtained from a ZipOutputStream. + + + + + An enum providing the options when an error occurs during opening or reading + of a file or directory that is being saved to a zip file. + + + + + This enum describes the actions that the library can take when an error occurs + opening or reading a file, as it is being saved into a Zip archive. + + + + In some cases an error will occur when DotNetZip tries to open a file to be + added to the zip archive. In other cases, an error might occur after the + file has been successfully opened, while DotNetZip is reading the file. + + + + The first problem might occur when calling AddDirectory() on a directory + that contains a Clipper .dbf file; the file is locked by Clipper and + cannot be opened by another process. An example of the second problem is + the ERROR_LOCK_VIOLATION that results when a file is opened by another + process, but not locked, and a range lock has been taken on the file. + Microsoft Outlook takes range locks on .PST files. + + + + + + Throw an exception when an error occurs while zipping. This is the default + behavior. (For COM clients, this is a 0 (zero).) + + + + + When an error occurs during zipping, for example a file cannot be opened, + skip the file causing the error, and continue zipping. (For COM clients, + this is a 1.) + + + + + When an error occurs during zipping, for example a file cannot be opened, + retry the operation that caused the error. Be careful with this option. If + the error is not temporary, the library will retry forever. (For COM + clients, this is a 2.) + + + + + When an error occurs, invoke the zipError event. The event type used is + . A typical use of this option: + a GUI application may wish to pop up a dialog to allow the user to view the + error that occurred, and choose an appropriate action. After your + processing in the error event, if you want to skip the file, set on the + ZipProgressEventArgs.CurrentEntry to Skip. If you want the + exception to be thrown, set ZipErrorAction on the CurrentEntry + to Throw. If you want to cancel the zip, set + ZipProgressEventArgs.Cancel to true. Cancelling differs from using + Skip in that a cancel will not save any further entries, if there are any. + (For COM clients, the value of this enum is a 3.) + + + + + The ZipFile type represents a zip archive file. + + + + + This is the main type in the DotNetZip class library. This class reads and + writes zip files, as defined in the specification + for zip files described by PKWare. The compression for this + implementation is provided by a managed-code version of Zlib, included with + DotNetZip in the classes in the Ionic.Zlib namespace. + + + + This class provides a general purpose zip file capability. Use it to read, + create, or update zip files. When you want to create zip files using a + Stream type to write the zip file, you may want to consider the class. + + + + Both the ZipOutputStream class and the ZipFile class can + be used to create zip files. Both of them support many of the common zip + features, including Unicode, different compression methods and levels, + and ZIP64. They provide very similar performance when creating zip + files. + + + + The ZipFile class is generally easier to use than + ZipOutputStream and should be considered a higher-level interface. For + example, when creating a zip file via calls to the PutNextEntry() and + Write() methods on the ZipOutputStream class, the caller is + responsible for opening the file, reading the bytes from the file, writing + those bytes into the ZipOutputStream, setting the attributes on the + ZipEntry, and setting the created, last modified, and last accessed + timestamps on the zip entry. All of these things are done automatically by a + call to ZipFile.AddFile(). + For this reason, the ZipOutputStream is generally recommended for use + only when your application emits arbitrary data, not necessarily data from a + filesystem file, directly into a zip file, and does so using a Stream + metaphor. + + + + Aside from the differences in programming model, there are other + differences in capability between the two classes. + + + + + ZipFile can be used to read and extract zip files, in addition to + creating zip files. ZipOutputStream cannot read zip files. If you want + to use a stream to read zip files, check out the ZipInputStream class. + + + + ZipOutputStream does not support the creation of segmented or spanned + zip files. + + + + ZipOutputStream cannot produce a self-extracting archive. + + + + + Be aware that the ZipFile class implements the interface. In order for ZipFile to + produce a valid zip file, you use use it within a using clause (Using + in VB), or call the Dispose() method explicitly. See the examples + for how to employ a using clause. + + + + + + + Adds an item, either a file or a directory, to a zip file archive. + + + + + This method is handy if you are adding things to zip archive and don't + want to bother distinguishing between directories or files. Any files are + added as single entries. A directory added through this method is added + recursively: all files and subdirectories contained within the directory + are added to the ZipFile. + + + + The name of the item may be a relative path or a fully-qualified + path. Remember, the items contained in ZipFile instance get written + to the disk only when you call or a similar + save method. + + + + The directory name used for the file within the archive is the same + as the directory name (potentially a relative path) specified in the + . + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + + + This method has two overloads. + + the name of the file or directory to add. + + The ZipEntry added. + + + + Adds an item, either a file or a directory, to a zip file archive, + explicitly specifying the directory path to be used in the archive. + + + + + If adding a directory, the add is recursive on all files and + subdirectories contained within it. + + + The name of the item may be a relative path or a fully-qualified path. + The item added by this call to the ZipFile is not read from the + disk nor written to the zip file archive until the application calls + Save() on the ZipFile. + + + + This version of the method allows the caller to explicitly specify the + directory path to be used in the archive, which would override the + "natural" path of the filesystem file. + + + + Encryption will be used on the file data if the Password has + been set on the ZipFile object, prior to calling this method. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + Thrown if the file or directory passed in does not exist. + + + the name of the file or directory to add. + + + + The name of the directory path to use within the zip archive. This path + need not refer to an extant directory in the current filesystem. If the + files within the zip are later extracted, this is the path used for the + extracted file. Passing null (Nothing in VB) will use the + path on the fileOrDirectoryName. Passing the empty string ("") will + insert the item at the root path within the archive. + + + + + + + + This example shows how to zip up a set of files into a flat hierarchy, + regardless of where in the filesystem the files originated. The resulting + zip archive will contain a toplevel directory named "flat", which itself + will contain files Readme.txt, MyProposal.docx, and Image1.jpg. A + subdirectory under "flat" called SupportFiles will contain all the files + in the "c:\SupportFiles" directory on disk. + + + String[] itemnames= { + "c:\\fixedContent\\Readme.txt", + "MyProposal.docx", + "c:\\SupportFiles", // a directory + "images\\Image1.jpg" + }; + + try + { + using (ZipFile zip = new ZipFile()) + { + for (int i = 1; i < itemnames.Length; i++) + { + // will add Files or Dirs, recurses and flattens subdirectories + zip.AddItem(itemnames[i],"flat"); + } + zip.Save(ZipToCreate); + } + } + catch (System.Exception ex1) + { + System.Console.Error.WriteLine("exception: {0}", ex1); + } + + + + Dim itemnames As String() = _ + New String() { "c:\fixedContent\Readme.txt", _ + "MyProposal.docx", _ + "SupportFiles", _ + "images\Image1.jpg" } + Try + Using zip As New ZipFile + Dim i As Integer + For i = 1 To itemnames.Length - 1 + ' will add Files or Dirs, recursing and flattening subdirectories. + zip.AddItem(itemnames(i), "flat") + Next i + zip.Save(ZipToCreate) + End Using + Catch ex1 As Exception + Console.Error.WriteLine("exception: {0}", ex1.ToString()) + End Try + + + The ZipEntry added. + + + + Adds a File to a Zip file archive. + + + + + This call collects metadata for the named file in the filesystem, + including the file attributes and the timestamp, and inserts that metadata + into the resulting ZipEntry. Only when the application calls Save() on + the ZipFile, does DotNetZip read the file from the filesystem and + then write the content to the zip file archive. + + + + This method will throw an exception if an entry with the same name already + exists in the ZipFile. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + In this example, three files are added to a Zip archive. The ReadMe.txt + file will be placed in the root of the archive. The .png file will be + placed in a folder within the zip called photos\personal. The pdf file + will be included into a folder within the zip called Desktop. + + + try + { + using (ZipFile zip = new ZipFile()) + { + zip.AddFile("c:\\photos\\personal\\7440-N49th.png"); + zip.AddFile("c:\\Desktop\\2008-Regional-Sales-Report.pdf"); + zip.AddFile("ReadMe.txt"); + + zip.Save("Package.zip"); + } + } + catch (System.Exception ex1) + { + System.Console.Error.WriteLine("exception: " + ex1); + } + + + + Try + Using zip As ZipFile = New ZipFile + zip.AddFile("c:\photos\personal\7440-N49th.png") + zip.AddFile("c:\Desktop\2008-Regional-Sales-Report.pdf") + zip.AddFile("ReadMe.txt") + zip.Save("Package.zip") + End Using + Catch ex1 As Exception + Console.Error.WriteLine("exception: {0}", ex1.ToString) + End Try + + + + This method has two overloads. + + + + + + + The name of the file to add. It should refer to a file in the filesystem. + The name of the file may be a relative path or a fully-qualified path. + + The ZipEntry corresponding to the File added. + + + + Adds a File to a Zip file archive, potentially overriding the path to be + used within the zip archive. + + + + + The file added by this call to the ZipFile is not written to the + zip file archive until the application calls Save() on the ZipFile. + + + + This method will throw an exception if an entry with the same name already + exists in the ZipFile. + + + + This version of the method allows the caller to explicitly specify the + directory path to be used in the archive. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + In this example, three files are added to a Zip archive. The ReadMe.txt + file will be placed in the root of the archive. The .png file will be + placed in a folder within the zip called images. The pdf file will be + included into a folder within the zip called files\docs, and will be + encrypted with the given password. + + + try + { + using (ZipFile zip = new ZipFile()) + { + // the following entry will be inserted at the root in the archive. + zip.AddFile("c:\\datafiles\\ReadMe.txt", ""); + // this image file will be inserted into the "images" directory in the archive. + zip.AddFile("c:\\photos\\personal\\7440-N49th.png", "images"); + // the following will result in a password-protected file called + // files\\docs\\2008-Regional-Sales-Report.pdf in the archive. + zip.Password = "EncryptMe!"; + zip.AddFile("c:\\Desktop\\2008-Regional-Sales-Report.pdf", "files\\docs"); + zip.Save("Archive.zip"); + } + } + catch (System.Exception ex1) + { + System.Console.Error.WriteLine("exception: {0}", ex1); + } + + + + Try + Using zip As ZipFile = New ZipFile + ' the following entry will be inserted at the root in the archive. + zip.AddFile("c:\datafiles\ReadMe.txt", "") + ' this image file will be inserted into the "images" directory in the archive. + zip.AddFile("c:\photos\personal\7440-N49th.png", "images") + ' the following will result in a password-protected file called + ' files\\docs\\2008-Regional-Sales-Report.pdf in the archive. + zip.Password = "EncryptMe!" + zip.AddFile("c:\Desktop\2008-Regional-Sales-Report.pdf", "files\documents") + zip.Save("Archive.zip") + End Using + Catch ex1 As Exception + Console.Error.WriteLine("exception: {0}", ex1) + End Try + + + + + + + + + The name of the file to add. The name of the file may be a relative path + or a fully-qualified path. + + + + Specifies a directory path to use to override any path in the fileName. + This path may, or may not, correspond to a real directory in the current + filesystem. If the files within the zip are later extracted, this is the + path used for the extracted file. Passing null (Nothing in + VB) will use the path on the fileName, if any. Passing the empty string + ("") will insert the item at the root path within the archive. + + + The ZipEntry corresponding to the file added. + + + + This method removes a collection of entries from the ZipFile. + + + + A collection of ZipEntry instances from this zip file to be removed. For + example, you can pass in an array of ZipEntry instances; or you can call + SelectEntries(), and then add or remove entries from that + ICollection<ZipEntry> (ICollection(Of ZipEntry) in VB), and pass + that ICollection to this method. + + + + + + + + This method removes a collection of entries from the ZipFile, by name. + + + + A collection of strings that refer to names of entries to be removed + from the ZipFile. For example, you can pass in an array or a + List of Strings that provide the names of entries to be removed. + + + + + + + + This method adds a set of files to the ZipFile. + + + + + Use this method to add a set of files to the zip archive, in one call. + For example, a list of files received from + System.IO.Directory.GetFiles() can be added to a zip archive in one + call. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + The collection of names of the files to add. Each string should refer to a + file in the filesystem. The name of the file may be a relative path or a + fully-qualified path. + + + + This example shows how to create a zip file, and add a few files into it. + + String ZipFileToCreate = "archive1.zip"; + String DirectoryToZip = "c:\\reports"; + using (ZipFile zip = new ZipFile()) + { + // Store all files found in the top level directory, into the zip archive. + String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); + zip.AddFiles(filenames); + zip.Save(ZipFileToCreate); + } + + + + Dim ZipFileToCreate As String = "archive1.zip" + Dim DirectoryToZip As String = "c:\reports" + Using zip As ZipFile = New ZipFile + ' Store all files found in the top level directory, into the zip archive. + Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) + zip.AddFiles(filenames) + zip.Save(ZipFileToCreate) + End Using + + + + + + + + Adds or updates a set of files in the ZipFile. + + + + + Any files that already exist in the archive are updated. Any files that + don't yet exist in the archive are added. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + The collection of names of the files to update. Each string should refer to a file in + the filesystem. The name of the file may be a relative path or a fully-qualified path. + + + + + + Adds a set of files to the ZipFile, using the + specified directory path in the archive. + + + + + Any directory structure that may be present in the + filenames contained in the list is "flattened" in the + archive. Each file in the list is added to the archive in + the specified top-level directory. + + + + For ZipFile properties including , , , , , , and , their respective values at the + time of this call will be applied to each ZipEntry added. + + + + + The names of the files to add. Each string should refer to + a file in the filesystem. The name of the file may be a + relative path or a fully-qualified path. + + + + Specifies a directory path to use to override any path in the file name. + Th is path may, or may not, correspond to a real directory in the current + filesystem. If the files within the zip are later extracted, this is the + path used for the extracted file. Passing null (Nothing in + VB) will use the path on each of the fileNames, if any. Passing + the empty string ("") will insert the item at the root path within the + archive. + + + + + + + Adds a set of files to the ZipFile, using the specified directory + path in the archive, and preserving the full directory structure in the + filenames. + + + + + + Think of the as a "root" or + base directory used in the archive for the files that get added. when + is true, the hierarchy of files + found in the filesystem will be placed, with the hierarchy intact, + starting at that root in the archive. When preserveDirHierarchy + is false, the path hierarchy of files is flattned, and the flattened + set of files gets placed in the root within the archive as specified in + directoryPathInArchive. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + + The names of the files to add. Each string should refer to a file in the + filesystem. The name of the file may be a relative path or a + fully-qualified path. + + + + Specifies a directory path to use as a prefix for each entry name. + This path may, or may not, correspond to a real directory in the current + filesystem. If the files within the zip are later extracted, this is the + path used for the extracted file. Passing null (Nothing in + VB) will use the path on each of the fileNames, if any. Passing + the empty string ("") will insert the item at the root path within the + archive. + + + + whether the entries in the zip archive will reflect the directory + hierarchy that is present in the various filenames. For example, if + includes two paths, + \Animalia\Chordata\Mammalia\Info.txt and + \Plantae\Magnoliophyta\Dicotyledon\Info.txt, then calling this method + with = false will + result in an exception because of a duplicate entry name, while + calling this method with = + true will result in the full direcory paths being included in + the entries added to the ZipFile. + + + + + + Adds or updates a set of files to the ZipFile, using the specified + directory path in the archive. + + + + + + Any files that already exist in the archive are updated. Any files that + don't yet exist in the archive are added. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + The names of the files to add or update. Each string should refer to a + file in the filesystem. The name of the file may be a relative path or a + fully-qualified path. + + + + Specifies a directory path to use to override any path in the file name. + This path may, or may not, correspond to a real directory in the current + filesystem. If the files within the zip are later extracted, this is the + path used for the extracted file. Passing null (Nothing in + VB) will use the path on each of the fileNames, if any. Passing + the empty string ("") will insert the item at the root path within the + archive. + + + + + + + Adds or Updates a File in a Zip file archive. + + + + + This method adds a file to a zip archive, or, if the file already exists + in the zip archive, this method Updates the content of that given filename + in the zip archive. The UpdateFile method might more accurately be + called "AddOrUpdateFile". + + + + Upon success, there is no way for the application to learn whether the file + was added versus updated. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + This example shows how to Update an existing entry in a zipfile. The first + call to UpdateFile adds the file to the newly-created zip archive. The + second call to UpdateFile updates the content for that file in the zip + archive. + + + using (ZipFile zip1 = new ZipFile()) + { + // UpdateFile might more accurately be called "AddOrUpdateFile" + zip1.UpdateFile("MyDocuments\\Readme.txt"); + zip1.UpdateFile("CustomerList.csv"); + zip1.Comment = "This zip archive has been created."; + zip1.Save("Content.zip"); + } + + using (ZipFile zip2 = ZipFile.Read("Content.zip")) + { + zip2.UpdateFile("Updates\\Readme.txt"); + zip2.Comment = "This zip archive has been updated: The Readme.txt file has been changed."; + zip2.Save(); + } + + + + Using zip1 As New ZipFile + ' UpdateFile might more accurately be called "AddOrUpdateFile" + zip1.UpdateFile("MyDocuments\Readme.txt") + zip1.UpdateFile("CustomerList.csv") + zip1.Comment = "This zip archive has been created." + zip1.Save("Content.zip") + End Using + + Using zip2 As ZipFile = ZipFile.Read("Content.zip") + zip2.UpdateFile("Updates\Readme.txt") + zip2.Comment = "This zip archive has been updated: The Readme.txt file has been changed." + zip2.Save + End Using + + + + + + + + + The name of the file to add or update. It should refer to a file in the + filesystem. The name of the file may be a relative path or a + fully-qualified path. + + + + The ZipEntry corresponding to the File that was added or updated. + + + + + Adds or Updates a File in a Zip file archive. + + + + + This method adds a file to a zip archive, or, if the file already exists + in the zip archive, this method Updates the content of that given filename + in the zip archive. + + + + This version of the method allows the caller to explicitly specify the + directory path to be used in the archive. The entry to be added or + updated is found by using the specified directory path, combined with the + basename of the specified filename. + + + + Upon success, there is no way for the application to learn if the file was + added versus updated. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + + + The name of the file to add or update. It should refer to a file in the + filesystem. The name of the file may be a relative path or a + fully-qualified path. + + + + Specifies a directory path to use to override any path in the + fileName. This path may, or may not, correspond to a real + directory in the current filesystem. If the files within the zip are + later extracted, this is the path used for the extracted file. Passing + null (Nothing in VB) will use the path on the + fileName, if any. Passing the empty string ("") will insert the + item at the root path within the archive. + + + + The ZipEntry corresponding to the File that was added or updated. + + + + + Add or update a directory in a zip archive. + + + + If the specified directory does not exist in the archive, then this method + is equivalent to calling AddDirectory(). If the specified + directory already exists in the archive, then this method updates any + existing entries, and adds any new entries. Any entries that are in the + zip archive but not in the specified directory, are left alone. In other + words, the contents of the zip file will be a union of the previous + contents and the new files. + + + + + + + + The path to the directory to be added to the zip archive, or updated in + the zip archive. + + + + The ZipEntry corresponding to the Directory that was added or updated. + + + + + Add or update a directory in the zip archive at the specified root + directory in the archive. + + + + If the specified directory does not exist in the archive, then this method + is equivalent to calling AddDirectory(). If the specified + directory already exists in the archive, then this method updates any + existing entries, and adds any new entries. Any entries that are in the + zip archive but not in the specified directory, are left alone. In other + words, the contents of the zip file will be a union of the previous + contents and the new files. + + + + + + + + The path to the directory to be added to the zip archive, or updated + in the zip archive. + + + + Specifies a directory path to use to override any path in the + directoryName. This path may, or may not, correspond to a real + directory in the current filesystem. If the files within the zip are + later extracted, this is the path used for the extracted file. Passing + null (Nothing in VB) will use the path on the + directoryName, if any. Passing the empty string ("") will insert + the item at the root path within the archive. + + + + The ZipEntry corresponding to the Directory that was added or updated. + + + + + Add or update a file or directory in the zip archive. + + + + + This is useful when the application is not sure or does not care if the + item to be added is a file or directory, and does not know or does not + care if the item already exists in the ZipFile. Calling this method + is equivalent to calling RemoveEntry() if an entry by the same name + already exists, followed calling by AddItem(). + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + + + the path to the file or directory to be added or updated. + + + + + Add or update a file or directory. + + + + + This method is useful when the application is not sure or does not care if + the item to be added is a file or directory, and does not know or does not + care if the item already exists in the ZipFile. Calling this method + is equivalent to calling RemoveEntry(), if an entry by that name + exists, and then calling AddItem(). + + + + This version of the method allows the caller to explicitly specify the + directory path to be used for the item being added to the archive. The + entry or entries that are added or updated will use the specified + DirectoryPathInArchive. Extracting the entry from the archive will + result in a file stored in that directory path. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + + + The path for the File or Directory to be added or updated. + + + Specifies a directory path to use to override any path in the + itemName. This path may, or may not, correspond to a real + directory in the current filesystem. If the files within the zip are + later extracted, this is the path used for the extracted file. Passing + null (Nothing in VB) will use the path on the + itemName, if any. Passing the empty string ("") will insert the + item at the root path within the archive. + + + + + Adds a named entry into the zip archive, taking content for the entry + from a string. + + + + Calling this method creates an entry using the given fileName and + directory path within the archive. There is no need for a file by the + given name to exist in the filesystem; the name is used within the zip + archive only. The content for the entry is encoded using the default text + encoding for the machine, or on Silverlight, using UTF-8. + + + + The content of the file, should it be extracted from the zip. + + + + The name, including any path, to use for the entry within the archive. + + + The ZipEntry added. + + + + This example shows how to add an entry to the zipfile, using a string as + content for that entry. + + + string Content = "This string will be the content of the Readme.txt file in the zip archive."; + using (ZipFile zip1 = new ZipFile()) + { + zip1.AddFile("MyDocuments\\Resume.doc", "files"); + zip1.AddEntry("Readme.txt", Content); + zip1.Comment = "This zip file was created at " + System.DateTime.Now.ToString("G"); + zip1.Save("Content.zip"); + } + + + + Public Sub Run() + Dim Content As String = "This string will be the content of the Readme.txt file in the zip archive." + Using zip1 As ZipFile = New ZipFile + zip1.AddEntry("Readme.txt", Content) + zip1.AddFile("MyDocuments\Resume.doc", "files") + zip1.Comment = ("This zip file was created at " & DateTime.Now.ToString("G")) + zip1.Save("Content.zip") + End Using + End Sub + + + + + + Adds a named entry into the zip archive, taking content for the entry + from a string, and using the specified text encoding. + + + + + + Calling this method creates an entry using the given fileName and + directory path within the archive. There is no need for a file by the + given name to exist in the filesystem; the name is used within the zip + archive only. + + + + The content for the entry, a string value, is encoded using the given + text encoding. A BOM (byte-order-mark) is emitted into the file, if the + Encoding parameter is set for that. + + + + Most Encoding classes support a constructor that accepts a boolean, + indicating whether to emit a BOM or not. For example see . + + + + + + The name, including any path, to use within the archive for the entry. + + + + The content of the file, should it be extracted from the zip. + + + + The text encoding to use when encoding the string. Be aware: This is + distinct from the text encoding used to encode the fileName, as specified + in . + + + The ZipEntry added. + + + + + Create an entry in the ZipFile using the given Stream + as input. The entry will have the given filename. + + + + + + The application should provide an open, readable stream; in this case it + will be read during the call to or one of + its overloads. + + + + The passed stream will be read from its current position. If + necessary, callers should set the position in the stream before + calling AddEntry(). This might be appropriate when using this method + with a MemoryStream, for example. + + + + In cases where a large number of streams will be added to the + ZipFile, the application may wish to avoid maintaining all of the + streams open simultaneously. To handle this situation, the application + should use the + overload. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + This example adds a single entry to a ZipFile via a Stream. + + + + String zipToCreate = "Content.zip"; + String fileNameInArchive = "Content-From-Stream.bin"; + using (System.IO.Stream streamToRead = MyStreamOpener()) + { + using (ZipFile zip = new ZipFile()) + { + ZipEntry entry= zip.AddEntry(fileNameInArchive, streamToRead); + zip.AddFile("Readme.txt"); + zip.Save(zipToCreate); // the stream is read implicitly here + } + } + + + + Dim zipToCreate As String = "Content.zip" + Dim fileNameInArchive As String = "Content-From-Stream.bin" + Using streamToRead as System.IO.Stream = MyStreamOpener() + Using zip As ZipFile = New ZipFile() + Dim entry as ZipEntry = zip.AddEntry(fileNameInArchive, streamToRead) + zip.AddFile("Readme.txt") + zip.Save(zipToCreate) '' the stream is read implicitly, here + End Using + End Using + + + + + + + The name, including any path, which is shown in the zip file for the added + entry. + + + The input stream from which to grab content for the file + + The ZipEntry added. + + + + Add a ZipEntry for which content is written directly by the application. + + + + + When the application needs to write the zip entry data, use this + method to add the ZipEntry. For example, in the case that the + application wishes to write the XML representation of a DataSet into + a ZipEntry, the application can use this method to do so. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + About progress events: When using the WriteDelegate, DotNetZip does + not issue any SaveProgress events with EventType = + Saving_EntryBytesRead. (This is because it is the + application's code that runs in WriteDelegate - there's no way for + DotNetZip to know when to issue a EntryBytesRead event.) + Applications that want to update a progress bar or similar status + indicator should do so from within the WriteDelegate + itself. DotNetZip will issue the other SaveProgress events, + including + Saving_Started, + + Saving_BeforeWriteEntry, and + Saving_AfterWriteEntry. + + + + Note: When you use PKZip encryption, it's normally necessary to + compute the CRC of the content to be encrypted, before compressing or + encrypting it. Therefore, when using PKZip encryption with a + WriteDelegate, the WriteDelegate CAN BE called twice: once to compute + the CRC, and the second time to potentially compress and + encrypt. Surprising, but true. This is because PKWARE specified that + the encryption initialization data depends on the CRC. + If this happens, for each call of the delegate, your + application must stream the same entry data in its entirety. If your + application writes different data during the second call, it will + result in a corrupt zip file. + + + + The double-read behavior happens with all types of entries, not only + those that use WriteDelegate. It happens if you add an entry from a + filesystem file, or using a string, or a stream, or an opener/closer + pair. But in those cases, DotNetZip takes care of reading twice; in + the case of the WriteDelegate, the application code gets invoked + twice. Be aware. + + + + As you can imagine, this can cause performance problems for large + streams, and it can lead to correctness problems when you use a + WriteDelegate. This is a pretty big pitfall. There are two + ways to avoid it. First, and most preferred: don't use PKZIP + encryption. If you use the WinZip AES encryption, this problem + doesn't occur, because the encryption protocol doesn't require the CRC + up front. Second: if you do choose to use PKZIP encryption, write out + to a non-seekable stream (like standard output, or the + Response.OutputStream in an ASP.NET application). In this case, + DotNetZip will use an alternative encryption protocol that does not + rely on the CRC of the content. This also implies setting bit 3 in + the zip entry, which still presents problems for some zip tools. + + + + In the future I may modify DotNetZip to *always* use bit 3 when PKZIP + encryption is in use. This seems like a win overall, but there will + be some work involved. If you feel strongly about it, visit the + DotNetZip forums and vote up the Workitem + tracking this issue. + + + + + the name of the entry to add + the delegate which will write the entry content + the ZipEntry added + + + + This example shows an application filling a DataSet, then saving the + contents of that DataSet as XML, into a ZipEntry in a ZipFile, using an + anonymous delegate in C#. The DataSet XML is never saved to a disk file. + + + var c1= new System.Data.SqlClient.SqlConnection(connstring1); + var da = new System.Data.SqlClient.SqlDataAdapter() + { + SelectCommand= new System.Data.SqlClient.SqlCommand(strSelect, c1) + }; + + DataSet ds1 = new DataSet(); + da.Fill(ds1, "Invoices"); + + using(Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile()) + { + zip.AddEntry(zipEntryName, (name,stream) => ds1.WriteXml(stream) ); + zip.Save(zipFileName); + } + + + + + + This example uses an anonymous method in C# as the WriteDelegate to provide + the data for the ZipEntry. The example is a bit contrived - the + AddFile() method is a simpler way to insert the contents of a file + into an entry in a zip file. On the other hand, if there is some sort of + processing or transformation of the file contents required before writing, + the application could use the WriteDelegate to do it, in this way. + + + using (var input = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite )) + { + using(Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile()) + { + zip.AddEntry(zipEntryName, (name,output) => + { + byte[] buffer = new byte[BufferSize]; + int n; + while ((n = input.Read(buffer, 0, buffer.Length)) != 0) + { + // could transform the data here... + output.Write(buffer, 0, n); + // could update a progress bar here + } + }); + + zip.Save(zipFileName); + } + } + + + + + + This example uses a named delegate in VB to write data for the given + ZipEntry (VB9 does not have anonymous delegates). The example here is a bit + contrived - a simpler way to add the contents of a file to a ZipEntry is to + simply use the appropriate AddFile() method. The key scenario for + which the WriteDelegate makes sense is saving a DataSet, in XML + format, to the zip file. The DataSet can write XML to a stream, and the + WriteDelegate is the perfect place to write into the zip file. There may be + other data structures that can write to a stream, but cannot be read as a + stream. The WriteDelegate would be appropriate for those cases as + well. + + + Private Sub WriteEntry (ByVal name As String, ByVal output As Stream) + Using input As FileStream = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) + Dim n As Integer = -1 + Dim buffer As Byte() = New Byte(BufferSize){} + Do While n <> 0 + n = input.Read(buffer, 0, buffer.Length) + output.Write(buffer, 0, n) + Loop + End Using + End Sub + + Public Sub Run() + Using zip = New ZipFile + zip.AddEntry(zipEntryName, New WriteDelegate(AddressOf WriteEntry)) + zip.Save(zipFileName) + End Using + End Sub + + + + + + Add an entry, for which the application will provide a stream + containing the entry data, on a just-in-time basis. + + + + + In cases where the application wishes to open the stream that + holds the content for the ZipEntry, on a just-in-time basis, the + application can use this method. The application provides an + opener delegate that will be called by the DotNetZip library to + obtain a readable stream that can be read to get the bytes for + the given entry. Typically, this delegate opens a stream. + Optionally, the application can provide a closer delegate as + well, which will be called by DotNetZip when all bytes have been + read from the entry. + + + + These delegates are called from within the scope of the call to + ZipFile.Save(). + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + This example uses anonymous methods in C# to open and close the + source stream for the content for a zip entry. + + + using(Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile()) + { + zip.AddEntry(zipEntryName, + (name) => File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite ), + (name, stream) => stream.Close() + ); + + zip.Save(zipFileName); + } + + + + + + + This example uses delegates in VB.NET to open and close the + the source stream for the content for a zip entry. VB 9.0 lacks + support for "Sub" lambda expressions, and so the CloseDelegate must + be an actual, named Sub. + + + + Function MyStreamOpener(ByVal entryName As String) As Stream + '' This simply opens a file. You probably want to do somethinig + '' more involved here: open a stream to read from a database, + '' open a stream on an HTTP connection, and so on. + Return File.OpenRead(entryName) + End Function + + Sub MyStreamCloser(entryName As String, stream As Stream) + stream.Close() + End Sub + + Public Sub Run() + Dim dirToZip As String = "fodder" + Dim zipFileToCreate As String = "Archive.zip" + Dim opener As OpenDelegate = AddressOf MyStreamOpener + Dim closer As CloseDelegate = AddressOf MyStreamCloser + Dim numFilestoAdd As Int32 = 4 + Using zip As ZipFile = New ZipFile + Dim i As Integer + For i = 0 To numFilesToAdd - 1 + zip.AddEntry(String.Format("content-{0:000}.txt"), opener, closer) + Next i + zip.Save(zipFileToCreate) + End Using + End Sub + + + + + the name of the entry to add + + the delegate that will be invoked by ZipFile.Save() to get the + readable stream for the given entry. ZipFile.Save() will call + read on this stream to obtain the data for the entry. This data + will then be compressed and written to the newly created zip + file. + + + the delegate that will be invoked to close the stream. This may + be null (Nothing in VB), in which case no call is makde to close + the stream. + + the ZipEntry added + + + + + Updates the given entry in the ZipFile, using the given + string as content for the ZipEntry. + + + + + + Calling this method is equivalent to removing the ZipEntry for + the given file name and directory path, if it exists, and then calling + . See the documentation for + that method for further explanation. The string content is encoded + using the default encoding for the machine, or on Silverlight, using + UTF-8. This encoding is distinct from the encoding used for the + filename itself. See . + + + + + + The name, including any path, to use within the archive for the entry. + + + + The content of the file, should it be extracted from the zip. + + + The ZipEntry added. + + + + + Updates the given entry in the ZipFile, using the given string as + content for the ZipEntry. + + + + Calling this method is equivalent to removing the ZipEntry for the + given file name and directory path, if it exists, and then calling . See the + documentation for that method for further explanation. + + + + The name, including any path, to use within the archive for the entry. + + + + The content of the file, should it be extracted from the zip. + + + + The text encoding to use when encoding the string. Be aware: This is + distinct from the text encoding used to encode the filename. See . + + + The ZipEntry added. + + + + + Updates the given entry in the ZipFile, using the given delegate + as the source for content for the ZipEntry. + + + + Calling this method is equivalent to removing the ZipEntry for the + given file name and directory path, if it exists, and then calling . See the + documentation for that method for further explanation. + + + + The name, including any path, to use within the archive for the entry. + + + the delegate which will write the entry content. + + The ZipEntry added. + + + + + Updates the given entry in the ZipFile, using the given delegates + to open and close the stream that provides the content for the ZipEntry. + + + + Calling this method is equivalent to removing the ZipEntry for the + given file name and directory path, if it exists, and then calling . See the + documentation for that method for further explanation. + + + + The name, including any path, to use within the archive for the entry. + + + + the delegate that will be invoked to open the stream + + + the delegate that will be invoked to close the stream + + + The ZipEntry added or updated. + + + + + Updates the given entry in the ZipFile, using the given stream as + input, and the given filename and given directory Path. + + + + + Calling the method is equivalent to calling RemoveEntry() if an + entry by the same name already exists, and then calling AddEntry() + with the given fileName and stream. + + + + The stream must be open and readable during the call to + ZipFile.Save. You can dispense the stream on a just-in-time basis + using the property. Check the + documentation of that property for more information. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + + + The name, including any path, to use within the archive for the entry. + + + The input stream from which to read file data. + The ZipEntry added. + + + + Add an entry into the zip archive using the given filename and + directory path within the archive, and the given content for the + file. No file is created in the filesystem. + + + The data to use for the entry. + + + The name, including any path, to use within the archive for the entry. + + + The ZipEntry added. + + + + Updates the given entry in the ZipFile, using the given byte + array as content for the entry. + + + + Calling this method is equivalent to removing the ZipEntry + for the given filename and directory path, if it exists, and then + calling . See the + documentation for that method for further explanation. + + + + The name, including any path, to use within the archive for the entry. + + + The content to use for the ZipEntry. + + The ZipEntry added. + + + + + Adds the contents of a filesystem directory to a Zip file archive. + + + + + + The name of the directory may be a relative path or a fully-qualified + path. Any files within the named directory are added to the archive. Any + subdirectories within the named directory are also added to the archive, + recursively. + + + + Top-level entries in the named directory will appear as top-level entries + in the zip archive. Entries in subdirectories in the named directory will + result in entries in subdirectories in the zip archive. + + + + If you want the entries to appear in a containing directory in the zip + archive itself, then you should call the AddDirectory() overload that + allows you to explicitly specify a directory path for use in the archive. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + + + + + + This method has 2 overloads. + + The name of the directory to add. + The ZipEntry added. + + + + Adds the contents of a filesystem directory to a Zip file archive, + overriding the path to be used for entries in the archive. + + + + + The name of the directory may be a relative path or a fully-qualified + path. The add operation is recursive, so that any files or subdirectories + within the name directory are also added to the archive. + + + + Top-level entries in the named directory will appear as top-level entries + in the zip archive. Entries in subdirectories in the named directory will + result in entries in subdirectories in the zip archive. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + + + In this code, calling the ZipUp() method with a value of "c:\reports" for + the directory parameter will result in a zip file structure in which all + entries are contained in a toplevel "reports" directory. + + + + public void ZipUp(string targetZip, string directory) + { + using (var zip = new ZipFile()) + { + zip.AddDirectory(directory, System.IO.Path.GetFileName(directory)); + zip.Save(targetZip); + } + } + + + + + + + + The name of the directory to add. + + + Specifies a directory path to use to override any path in the + DirectoryName. This path may, or may not, correspond to a real directory + in the current filesystem. If the zip is later extracted, this is the + path used for the extracted file or directory. Passing null + (Nothing in VB) or the empty string ("") will insert the items at + the root path within the archive. + + + The ZipEntry added. + + + + Creates a directory in the zip archive. + + + + + + Use this when you want to create a directory in the archive but there is + no corresponding filesystem representation for that directory. + + + + You will probably not need to do this in your code. One of the only times + you will want to do this is if you want an empty directory in the zip + archive. The reason: if you add a file to a zip archive that is stored + within a multi-level directory, all of the directory tree is implicitly + created in the zip archive. + + + + + + The name of the directory to create in the archive. + + The ZipEntry added. + + + + Checks a zip file to see if its directory is consistent. + + + + + + In cases of data error, the directory within a zip file can get out + of synch with the entries in the zip file. This method checks the + given zip file and returns true if this has occurred. + + + This method may take a long time to run for large zip files. + + + This method is not supported in the Reduced or Compact Framework + versions of DotNetZip. + + + + Developers using COM can use the ComHelper.CheckZip(String) + method. + + + + + The filename to of the zip file to check. + + true if the named zip file checks OK. Otherwise, false. + + + + + + + Checks a zip file to see if its directory is consistent, + and optionally fixes the directory if necessary. + + + + + + In cases of data error, the directory within a zip file can get out of + synch with the entries in the zip file. This method checks the given + zip file, and returns true if this has occurred. It also optionally + fixes the zipfile, saving the fixed copy in Name_Fixed.zip. + + + + This method may take a long time to run for large zip files. It + will take even longer if the file actually needs to be fixed, and if + fixIfNecessary is true. + + + + This method is not supported in the Reduced or Compact + Framework versions of DotNetZip. + + + + + The filename to of the zip file to check. + + If true, the method will fix the zip file if + necessary. + + + a TextWriter in which messages generated while checking will be written. + + + true if the named zip is OK; false if the file needs to be fixed. + + + + + + + Rewrite the directory within a zipfile. + + + + + + In cases of data error, the directory in a zip file can get out of + synch with the entries in the zip file. This method attempts to fix + the zip file if this has occurred. + + + This can take a long time for large zip files. + + This won't work if the zip file uses a non-standard + code page - neither IBM437 nor UTF-8. + + + This method is not supported in the Reduced or Compact Framework + versions of DotNetZip. + + + + Developers using COM can use the ComHelper.FixZipDirectory(String) + method. + + + + + The filename to of the zip file to fix. + + + + + + + Verify the password on a zip file. + + + + + Keep in mind that passwords in zipfiles are applied to + zip entries, not to the entire zip file. So testing a + zipfile for a particular password doesn't work in the + general case. On the other hand, it's often the case + that a single password will be used on all entries in a + zip file. This method works for that case. + + + There is no way to check a password without doing the + decryption. So this code decrypts and extracts the given + zipfile into + + + + The filename to of the zip file to fix. + + The password to check. + + a bool indicating whether the password matches. + + + + Provides a human-readable string with information about the ZipFile. + + + + + The information string contains 10 lines or so, about each ZipEntry, + describing whether encryption is in use, the compressed and uncompressed + length of the entry, the offset of the entry, and so on. As a result the + information string can be very long for zip files that contain many + entries. + + + This information is mostly useful for diagnostic purposes. + + + + + + Indicates whether to perform a full scan of the zip file when reading it. + + + + + + You almost never want to use this property. + + + + When reading a zip file, if this flag is true (True in + VB), the entire zip archive will be scanned and searched for entries. + For large archives, this can take a very, long time. The much more + efficient default behavior is to read the zip directory, which is + stored at the end of the zip file. But, in some cases the directory is + corrupted and you need to perform a full scan of the zip file to + determine the contents of the zip file. This property lets you do + that, when necessary. + + + + This flag is effective only when calling . Normally you would read a ZipFile with the + static ZipFile.Read + method. But you can't set the FullScan property on the + ZipFile instance when you use a static factory method like + ZipFile.Read. + + + + + + + This example shows how to read a zip file using the full scan approach, + and then save it, thereby producing a corrected zip file. + + + using (var zip = new ZipFile()) + { + zip.FullScan = true; + zip.Initialize(zipFileName); + zip.Save(newName); + } + + + + Using zip As New ZipFile + zip.FullScan = True + zip.Initialize(zipFileName) + zip.Save(newName) + End Using + + + + + + + Whether to sort the ZipEntries before saving the file. + + + + The default is false. If you have a large number of zip entries, the sort + alone can consume significant time. + + + + + using (var zip = new ZipFile()) + { + zip.AddFiles(filesToAdd); + zip.SortEntriesBeforeSaving = true; + zip.Save(name); + } + + + + Using zip As New ZipFile + zip.AddFiles(filesToAdd) + zip.SortEntriesBeforeSaving = True + zip.Save(name) + End Using + + + + + + + Indicates whether NTFS Reparse Points, like junctions, should be + traversed during calls to AddDirectory(). + + + + By default, calls to AddDirectory() will traverse NTFS reparse + points, like mounted volumes, and directory junctions. An example + of a junction is the "My Music" directory in Windows Vista. In some + cases you may not want DotNetZip to traverse those directories. In + that case, set this property to false. + + + + + using (var zip = new ZipFile()) + { + zip.AddDirectoryWillTraverseReparsePoints = false; + zip.AddDirectory(dirToZip,"fodder"); + zip.Save(zipFileToCreate); + } + + + + + + Size of the IO buffer used while saving. + + + + + + First, let me say that you really don't need to bother with this. It is + here to allow for optimizations that you probably won't make! It will work + fine if you don't set or get this property at all. Ok? + + + + Now that we have that out of the way, the fine print: This + property affects the size of the buffer that is used for I/O for each + entry contained in the zip file. When a file is read in to be compressed, + it uses a buffer given by the size here. When you update a zip file, the + data for unmodified entries is copied from the first zip file to the + other, through a buffer given by the size here. + + + + Changing the buffer size affects a few things: first, for larger buffer + sizes, the memory used by the ZipFile, obviously, will be larger + during I/O operations. This may make operations faster for very much + larger files. Last, for any given entry, when you use a larger buffer + there will be fewer progress events during I/O operations, because there's + one progress event generated for each time the buffer is filled and then + emptied. + + + + The default buffer size is 8k. Increasing the buffer size may speed + things up as you compress larger files. But there are no hard-and-fast + rules here, eh? You won't know til you test it. And there will be a + limit where ever larger buffers actually slow things down. So as I said + in the beginning, it's probably best if you don't set or get this property + at all. + + + + + + This example shows how you might set a large buffer size for efficiency when + dealing with zip entries that are larger than 1gb. + + using (ZipFile zip = new ZipFile()) + { + zip.SaveProgress += this.zip1_SaveProgress; + zip.AddDirectory(directoryToZip, ""); + zip.UseZip64WhenSaving = Zip64Option.Always; + zip.BufferSize = 65536*8; // 65536 * 8 = 512k + zip.Save(ZipFileToCreate); + } + + + + + + Size of the work buffer to use for the ZLIB codec during compression. + + + + + When doing ZLIB or Deflate compression, the library fills a buffer, + then passes it to the compressor for compression. Then the library + reads out the compressed bytes. This happens repeatedly until there + is no more uncompressed data to compress. This property sets the + size of the buffer that will be used for chunk-wise compression. In + order for the setting to take effect, your application needs to set + this property before calling one of the ZipFile.Save() + overloads. + + + Setting this affects the performance and memory efficiency of + compression and decompression. For larger files, setting this to a + larger size may improve compression performance, but the exact + numbers vary depending on available memory, the size of the streams + you are compressing, and a bunch of other variables. I don't have + good firm recommendations on how to set it. You'll have to test it + yourself. Or just leave it alone and accept the default. + + + + + + Indicates whether extracted files should keep their paths as + stored in the zip archive. + + + + + This property affects Extraction. It is not used when creating zip + archives. + + + + With this property set to false, the default, extracting entries + from a zip file will create files in the filesystem that have the full + path associated to the entry within the zip file. With this property set + to true, extracting entries from the zip file results in files + with no path: the folders are "flattened." + + + + An example: suppose the zip file contains entries /directory1/file1.txt and + /directory2/file2.txt. With FlattenFoldersOnExtract set to false, + the files created will be \directory1\file1.txt and \directory2\file2.txt. + With the property set to true, the files created are file1.txt and file2.txt. + + + + + + + The compression strategy to use for all entries. + + + + Set the Strategy used by the ZLIB-compatible compressor, when + compressing entries using the DEFLATE method. Different compression + strategies work better on different sorts of data. The strategy + parameter can affect the compression ratio and the speed of + compression but not the correctness of the compresssion. For more + information see Ionic.Zlib.CompressionStrategy. + + + + + The name of the ZipFile, on disk. + + + + + + When the ZipFile instance was created by reading an archive using + one of the ZipFile.Read methods, this property represents the name + of the zip file that was read. When the ZipFile instance was + created by using the no-argument constructor, this value is null + (Nothing in VB). + + + + If you use the no-argument constructor, and you then explicitly set this + property, when you call , this name will + specify the name of the zip file created. Doing so is equivalent to + calling . When instantiating a + ZipFile by reading from a stream or byte array, the Name + property remains null. When saving to a stream, the Name + property is implicitly set to null. + + + + + + Sets the compression level to be used for entries subsequently added to + the zip archive. + + + + + Varying the compression level used on entries can affect the + size-vs-speed tradeoff when compression and decompressing data streams + or files. + + + + As with some other properties on the ZipFile class, like , , and , setting this property on a ZipFile + instance will cause the specified CompressionLevel to be used on all + items that are subsequently added to the + ZipFile instance. If you set this property after you have added + items to the ZipFile, but before you have called Save(), + those items will not use the specified compression level. + + + + If you do not set this property, the default compression level is used, + which normally gives a good balance of compression efficiency and + compression speed. In some tests, using BestCompression can + double the time it takes to compress, while delivering just a small + increase in compression efficiency. This behavior will vary with the + type of data you compress. If you are in doubt, just leave this setting + alone, and accept the default. + + + + + + The compression method for the zipfile. + + + + By default, the compression method is CompressionMethod.Deflate. + + + + + + + A comment attached to the zip archive. + + + + + + This property is read/write. It allows the application to specify a + comment for the ZipFile, or read the comment for the + ZipFile. After setting this property, changes are only made + permanent when you call a Save() method. + + + + According to PKWARE's + zip specification, the comment is not encrypted, even if there is a + password set on the zip file. + + + + The specification does not describe how to indicate the encoding used + on a comment string. Many "compliant" zip tools and libraries use + IBM437 as the code page for comments; DotNetZip, too, follows that + practice. On the other hand, there are situations where you want a + Comment to be encoded with something else, for example using code page + 950 "Big-5 Chinese". To fill that need, DotNetZip will encode the + comment following the same procedure it follows for encoding + filenames: (a) if is + Never, it uses the default encoding (IBM437). (b) if is Always, it always uses the + alternate encoding (). (c) if is AsNecessary, it uses the + alternate encoding only if the default encoding is not sufficient for + encoding the comment - in other words if decoding the result does not + produce the original string. This decision is taken at the time of + the call to ZipFile.Save(). + + + + When creating a zip archive using this library, it is possible to change + the value of between each + entry you add, and between adding entries and the call to + Save(). Don't do this. It will likely result in a zip file that is + not readable by any tool or application. For best interoperability, leave + alone, or specify it only + once, before adding any entries to the ZipFile instance. + + + + + + + Specifies whether the Creation, Access, and Modified times for entries + added to the zip file will be emitted in “Windows format” + when the zip archive is saved. + + + + + An application creating a zip archive can use this flag to explicitly + specify that the file times for the entries should or should not be stored + in the zip archive in the format used by Windows. By default this flag is + true, meaning the Windows-format times are stored in the zip + archive. + + + + When adding an entry from a file or directory, the Creation (), Access (), and Modified () times for the given entry are + automatically set from the filesystem values. When adding an entry from a + stream or string, all three values are implicitly set to + DateTime.Now. Applications can also explicitly set those times by + calling . + + + + PKWARE's + zip specification describes multiple ways to format these times in a + zip file. One is the format Windows applications normally use: 100ns ticks + since January 1, 1601 UTC. The other is a format Unix applications typically + use: seconds since January 1, 1970 UTC. Each format can be stored in an + "extra field" in the zip entry when saving the zip archive. The former + uses an extra field with a Header Id of 0x000A, while the latter uses a + header ID of 0x5455, although you probably don't need to know that. + + + + Not all tools and libraries can interpret these fields. Windows + compressed folders is one that can read the Windows Format timestamps, + while I believe the Infozip + tools can read the Unix format timestamps. Some tools and libraries + may be able to read only one or the other. DotNetZip can read or write + times in either or both formats. + + + + The times stored are taken from , , and . + + + + The value set here applies to all entries subsequently added to the + ZipFile. + + + + This property is not mutually exclusive of the property. It is possible and + legal and valid to produce a zip file that contains timestamps encoded in + the Unix format as well as in the Windows format, in addition to the LastModified time attached to each + entry in the archive, a time that is always stored in "DOS format". And, + notwithstanding the names PKWare uses for these time formats, any of them + can be read and written by any computer, on any operating system. But, + there are no guarantees that a program running on Mac or Linux will + gracefully handle a zip file with "Windows" formatted times, or that an + application that does not use DotNetZip but runs on Windows will be able to + handle file times in Unix format. + + + + When in doubt, test. Sorry, I haven't got a complete list of tools and + which sort of timestamps they can use and will tolerate. If you get any + good information and would like to pass it on, please do so and I will + include that information in this documentation. + + + + + This example shows how to save a zip file that contains file timestamps + in a format normally used by Unix. + + using (var zip = new ZipFile()) + { + // produce a zip file the Mac will like + zip.EmitTimesInWindowsFormatWhenSaving = false; + zip.EmitTimesInUnixFormatWhenSaving = true; + zip.AddDirectory(directoryToZip, "files"); + zip.Save(outputFile); + } + + + + Using zip As New ZipFile + '' produce a zip file the Mac will like + zip.EmitTimesInWindowsFormatWhenSaving = False + zip.EmitTimesInUnixFormatWhenSaving = True + zip.AddDirectory(directoryToZip, "files") + zip.Save(outputFile) + End Using + + + + + + + + + Specifies whether the Creation, Access, and Modified times + for entries added to the zip file will be emitted in "Unix(tm) + format" when the zip archive is saved. + + + + + An application creating a zip archive can use this flag to explicitly + specify that the file times for the entries should or should not be stored + in the zip archive in the format used by Unix. By default this flag is + false, meaning the Unix-format times are not stored in the zip + archive. + + + + When adding an entry from a file or directory, the Creation (), Access (), and Modified () times for the given entry are + automatically set from the filesystem values. When adding an entry from a + stream or string, all three values are implicitly set to DateTime.Now. + Applications can also explicitly set those times by calling . + + + + PKWARE's + zip specification describes multiple ways to format these times in a + zip file. One is the format Windows applications normally use: 100ns ticks + since January 1, 1601 UTC. The other is a format Unix applications + typically use: seconds since January 1, 1970 UTC. Each format can be + stored in an "extra field" in the zip entry when saving the zip + archive. The former uses an extra field with a Header Id of 0x000A, while + the latter uses a header ID of 0x5455, although you probably don't need to + know that. + + + + Not all tools and libraries can interpret these fields. Windows + compressed folders is one that can read the Windows Format timestamps, + while I believe the Infozip + tools can read the Unix format timestamps. Some tools and libraries may be + able to read only one or the other. DotNetZip can read or write times in + either or both formats. + + + + The times stored are taken from , , and . + + + + This property is not mutually exclusive of the property. It is possible and + legal and valid to produce a zip file that contains timestamps encoded in + the Unix format as well as in the Windows format, in addition to the LastModified time attached to each + entry in the zip archive, a time that is always stored in "DOS + format". And, notwithstanding the names PKWare uses for these time + formats, any of them can be read and written by any computer, on any + operating system. But, there are no guarantees that a program running on + Mac or Linux will gracefully handle a zip file with "Windows" formatted + times, or that an application that does not use DotNetZip but runs on + Windows will be able to handle file times in Unix format. + + + + When in doubt, test. Sorry, I haven't got a complete list of tools and + which sort of timestamps they can use and will tolerate. If you get any + good information and would like to pass it on, please do so and I will + include that information in this documentation. + + + + + + + + + Indicates whether verbose output is sent to the during AddXxx() and + ReadXxx() operations. + + + + This is a synthetic property. It returns true if the is non-null. + + + + + Returns true if an entry by the given name exists in the ZipFile. + + + the name of the entry to find + true if an entry with the given name exists; otherwise false. + + + + + Indicates whether to perform case-sensitive matching on the filename when + retrieving entries in the zipfile via the string-based indexer. + + + + The default value is false, which means don't do case-sensitive + matching. In other words, retrieving zip["ReadMe.Txt"] is the same as + zip["readme.txt"]. It really makes sense to set this to true only + if you are not running on Windows, which has case-insensitive + filenames. But since this library is not built for non-Windows platforms, + in most cases you should just leave this property alone. + + + + + Indicates whether to encode entry filenames and entry comments using Unicode + (UTF-8). + + + + + The + PKWare zip specification provides for encoding file names and file + comments in either the IBM437 code page, or in UTF-8. This flag selects + the encoding according to that specification. By default, this flag is + false, and filenames and comments are encoded into the zip file in the + IBM437 codepage. Setting this flag to true will specify that filenames + and comments that cannot be encoded with IBM437 will be encoded with + UTF-8. + + + + Zip files created with strict adherence to the PKWare specification with + respect to UTF-8 encoding can contain entries with filenames containing + any combination of Unicode characters, including the full range of + characters from Chinese, Latin, Hebrew, Greek, Cyrillic, and many other + alphabets. However, because at this time, the UTF-8 portion of the PKWare + specification is not broadly supported by other zip libraries and + utilities, such zip files may not be readable by your favorite zip tool or + archiver. In other words, interoperability will decrease if you set this + flag to true. + + + + In particular, Zip files created with strict adherence to the PKWare + specification with respect to UTF-8 encoding will not work well with + Explorer in Windows XP or Windows Vista, because Windows compressed + folders, as far as I know, do not support UTF-8 in zip files. Vista can + read the zip files, but shows the filenames incorrectly. Unpacking from + Windows Vista Explorer will result in filenames that have rubbish + characters in place of the high-order UTF-8 bytes. + + + + Also, zip files that use UTF-8 encoding will not work well with Java + applications that use the java.util.zip classes, as of v5.0 of the Java + runtime. The Java runtime does not correctly implement the PKWare + specification in this regard. + + + + As a result, we have the unfortunate situation that "correct" behavior by + the DotNetZip library with regard to Unicode encoding of filenames during + zip creation will result in zip files that are readable by strictly + compliant and current tools (for example the most recent release of the + commercial WinZip tool); but these zip files will not be readable by + various other tools or libraries, including Windows Explorer. + + + + The DotNetZip library can read and write zip files with UTF8-encoded + entries, according to the PKware spec. If you use DotNetZip for both + creating and reading the zip file, and you use UTF-8, there will be no + loss of information in the filenames. For example, using a self-extractor + created by this library will allow you to unpack files correctly with no + loss of information in the filenames. + + + + If you do not set this flag, it will remain false. If this flag is false, + your ZipFile will encode all filenames and comments using the + IBM437 codepage. This can cause "loss of information" on some filenames, + but the resulting zipfile will be more interoperable with other + utilities. As an example of the loss of information, diacritics can be + lost. The o-tilde character will be down-coded to plain o. The c with a + cedilla (Unicode 0xE7) used in Portugese will be downcoded to a c. + Likewise, the O-stroke character (Unicode 248), used in Danish and + Norwegian, will be down-coded to plain o. Chinese characters cannot be + represented in codepage IBM437; when using the default encoding, Chinese + characters in filenames will be represented as ?. These are all examples + of "information loss". + + + + The loss of information associated to the use of the IBM437 encoding is + inconvenient, and can also lead to runtime errors. For example, using + IBM437, any sequence of 4 Chinese characters will be encoded as ????. If + your application creates a ZipFile, then adds two files, each with + names of four Chinese characters each, this will result in a duplicate + filename exception. In the case where you add a single file with a name + containing four Chinese characters, calling Extract() on the entry that + has question marks in the filename will result in an exception, because + the question mark is not legal for use within filenames on Windows. These + are just a few examples of the problems associated to loss of information. + + + + This flag is independent of the encoding of the content within the entries + in the zip file. Think of the zip file as a container - it supports an + encoding. Within the container are other "containers" - the file entries + themselves. The encoding within those entries is independent of the + encoding of the zip archive container for those entries. + + + + Rather than specify the encoding in a binary fashion using this flag, an + application can specify an arbitrary encoding via the property. Setting the encoding + explicitly when creating zip archives will result in non-compliant zip + files that, curiously, are fairly interoperable. The challenge is, the + PKWare specification does not provide for a way to specify that an entry + in a zip archive uses a code page that is neither IBM437 nor UTF-8. + Therefore if you set the encoding explicitly when creating a zip archive, + you must take care upon reading the zip archive to use the same code page. + If you get it wrong, the behavior is undefined and may result in incorrect + filenames, exceptions, stomach upset, hair loss, and acne. + + + + + + + Specify whether to use ZIP64 extensions when saving a zip archive. + + + + + + When creating a zip file, the default value for the property is . is + safest, in the sense that you will not get an Exception if a pre-ZIP64 + limit is exceeded. + + + + You may set the property at any time before calling Save(). + + + + When reading a zip file via the Zipfile.Read() method, DotNetZip + will properly read ZIP64-endowed zip archives, regardless of the value of + this property. DotNetZip will always read ZIP64 archives. This property + governs only whether DotNetZip will write them. Therefore, when updating + archives, be careful about setting this property after reading an archive + that may use ZIP64 extensions. + + + + An interesting question is, if you have set this property to + AsNecessary, and then successfully saved, does the resulting + archive use ZIP64 extensions or not? To learn this, check the property, after calling Save(). + + + + Have you thought about + donating? + + + + + + + + Indicates whether the archive requires ZIP64 extensions. + + + + + + This property is null (or Nothing in VB) if the archive has + not been saved, and there are fewer than 65334 ZipEntry items + contained in the archive. + + + + The Value is true if any of the following four conditions holds: + the uncompressed size of any entry is larger than 0xFFFFFFFF; the + compressed size of any entry is larger than 0xFFFFFFFF; the relative + offset of any entry within the zip archive is larger than 0xFFFFFFFF; or + there are more than 65534 entries in the archive. (0xFFFFFFFF = + 4,294,967,295). The result may not be known until a Save() is attempted + on the zip archive. The Value of this + property may be set only AFTER one of the Save() methods has been called. + + + + If none of the four conditions holds, and the archive has been saved, then + the Value is false. + + + + A Value of false does not indicate that the zip archive, as saved, + does not use ZIP64. It merely indicates that ZIP64 is not required. An + archive may use ZIP64 even when not required if the property is set to , or if the property is set to and the output stream was not + seekable. Use the property to determine if + the most recent Save() method resulted in an archive that utilized + the ZIP64 extensions. + + + + + + + + + Indicates whether the most recent Save() operation used ZIP64 extensions. + + + + + The use of ZIP64 extensions within an archive is not always necessary, and + for interoperability concerns, it may be desired to NOT use ZIP64 if + possible. The property can be + set to use ZIP64 extensions only when necessary. In those cases, + Sometimes applications want to know whether a Save() actually used ZIP64 + extensions. Applications can query this read-only property to learn + whether ZIP64 has been used in a just-saved ZipFile. + + + + The value is null (or Nothing in VB) if the archive has not + been saved. + + + + Non-null values (HasValue is true) indicate whether ZIP64 + extensions were used during the most recent Save() operation. The + ZIP64 extensions may have been used as required by any particular entry + because of its uncompressed or compressed size, or because the archive is + larger than 4294967295 bytes, or because there are more than 65534 entries + in the archive, or because the UseZip64WhenSaving property was set + to , or because the + UseZip64WhenSaving property was set to and the output stream was not seekable. + The value of this property does not indicate the reason the ZIP64 + extensions were used. + + + + + + + + + Indicates whether the most recent Read() operation read a zip file that uses + ZIP64 extensions. + + + + This property will return null (Nothing in VB) if you've added an entry after reading + the zip file. + + + + + The text encoding to use when writing new entries to the ZipFile, + for those entries that cannot be encoded with the default (IBM437) + encoding; or, the text encoding that was used when reading the entries + from the ZipFile. + + + + + In its + zip specification, PKWare describes two options for encoding + filenames and comments: using IBM437 or UTF-8. But, some archiving tools + or libraries do not follow the specification, and instead encode + characters using the system default code page. For example, WinRAR when + run on a machine in Shanghai may encode filenames with the Big-5 Chinese + (950) code page. This behavior is contrary to the Zip specification, but + it occurs anyway. + + + + When using DotNetZip to write zip archives that will be read by one of + these other archivers, set this property to specify the code page to use + when encoding the and for each ZipEntry in the zip file, for + values that cannot be encoded with the default codepage for zip files, + IBM437. This is why this property is "provisional". In all cases, IBM437 + is used where possible, in other words, where no loss of data would + result. It is possible, therefore, to have a given entry with a + Comment encoded in IBM437 and a FileName encoded with the + specified "provisional" codepage. + + + + Be aware that a zip file created after you've explicitly set the property to a value other than + IBM437 may not be compliant to the PKWare specification, and may not be + readable by compliant archivers. On the other hand, many (most?) + archivers are non-compliant and can read zip files created in arbitrary + code pages. The trick is to use or specify the proper codepage when + reading the zip. + + + + When creating a zip archive using this library, it is possible to change + the value of between each + entry you add, and between adding entries and the call to + Save(). Don't do this. It will likely result in a zipfile that is + not readable. For best interoperability, either leave alone, or specify it only once, + before adding any entries to the ZipFile instance. There is one + exception to this recommendation, described later. + + + + When using an arbitrary, non-UTF8 code page for encoding, there is no + standard way for the creator application - whether DotNetZip, WinZip, + WinRar, or something else - to formally specify in the zip file which + codepage has been used for the entries. As a result, readers of zip files + are not able to inspect the zip file and determine the codepage that was + used for the entries contained within it. It is left to the application + or user to determine the necessary codepage when reading zip files encoded + this way. In other words, if you explicitly specify the codepage when you + create the zipfile, you must explicitly specify the same codepage when + reading the zipfile. + + + + The way you specify the code page to use when reading a zip file varies + depending on the tool or library you use to read the zip. In DotNetZip, + you use a ZipFile.Read() method that accepts an encoding parameter. It + isn't possible with Windows Explorer, as far as I know, to specify an + explicit codepage to use when reading a zip. If you use an incorrect + codepage when reading a zipfile, you will get entries with filenames that + are incorrect, and the incorrect filenames may even contain characters + that are not legal for use within filenames in Windows. Extracting entries + with illegal characters in the filenames will lead to exceptions. It's too + bad, but this is just the way things are with code pages in zip + files. Caveat Emptor. + + + + Example: Suppose you create a zipfile that contains entries with + filenames that have Danish characters. If you use equal to "iso-8859-1" (cp 28591), + the filenames will be correctly encoded in the zip. But, to read that + zipfile correctly, you have to specify the same codepage at the time you + read it. If try to read that zip file with Windows Explorer or another + application that is not flexible with respect to the codepage used to + decode filenames in zipfiles, you will get a filename like "Inf�.txt". + + + + When using DotNetZip to read a zip archive, and the zip archive uses an + arbitrary code page, you must specify the encoding to use before or when + the Zipfile is READ. This means you must use a ZipFile.Read() + method that allows you to specify a System.Text.Encoding parameter. Setting + the ProvisionalAlternateEncoding property after your application has read in + the zip archive will not affect the entry names of entries that have already + been read in. + + + + And now, the exception to the rule described above. One strategy for + specifying the code page for a given zip file is to describe the code page + in a human-readable form in the Zip comment. For example, the comment may + read "Entries in this archive are encoded in the Big5 code page". For + maximum interoperability, the zip comment in this case should be encoded + in the default, IBM437 code page. In this case, the zip comment is + encoded using a different page than the filenames. To do this, Specify + ProvisionalAlternateEncoding to your desired region-specific code + page, once before adding any entries, and then reset + ProvisionalAlternateEncoding to IBM437 before setting the property and calling Save(). + + + + + This example shows how to read a zip file using the Big-5 Chinese code page + (950), and extract each entry in the zip file. For this code to work as + desired, the Zipfile must have been created using the big5 code page + (CP950). This is typical, for example, when using WinRar on a machine with + CP950 set as the default code page. In that case, the names of entries + within the Zip archive will be stored in that code page, and reading the zip + archive must be done using that code page. If the application did not use + the correct code page in ZipFile.Read(), then names of entries within the + zip archive would not be correctly retrieved. + + using (var zip = ZipFile.Read(zipFileName, System.Text.Encoding.GetEncoding("big5"))) + { + // retrieve and extract an entry using a name encoded with CP950 + zip[MyDesiredEntry].Extract("unpack"); + } + + + + Using zip As ZipFile = ZipFile.Read(ZipToExtract, System.Text.Encoding.GetEncoding("big5")) + ' retrieve and extract an entry using a name encoded with CP950 + zip(MyDesiredEntry).Extract("unpack") + End Using + + + + DefaultEncoding + + + + A Text Encoding to use when encoding the filenames and comments for + all the ZipEntry items, during a ZipFile.Save() operation. + + + + Whether the encoding specified here is used during the save depends + on . + + + + + + A flag that tells if and when this instance should apply + AlternateEncoding to encode the filenames and comments associated to + of ZipEntry objects contained within this instance. + + + + + The default text encoding used in zip archives. It is numeric 437, also + known as IBM437. + + + + + + Gets or sets the TextWriter to which status messages are delivered + for the instance. + + + + If the TextWriter is set to a non-null value, then verbose output is sent + to the TextWriter during Add, Read, Save and + Extract operations. Typically, console applications might use + Console.Out and graphical or headless applications might use a + System.IO.StringWriter. The output of this is suitable for viewing + by humans. + + + + + In this example, a console application instantiates a ZipFile, then + sets the StatusMessageTextWriter to Console.Out. At that + point, all verbose status messages for that ZipFile are sent to the + console. + + + + using (ZipFile zip= ZipFile.Read(FilePath)) + { + zip.StatusMessageTextWriter= System.Console.Out; + // messages are sent to the console during extraction + zip.ExtractAll(); + } + + + + Using zip As ZipFile = ZipFile.Read(FilePath) + zip.StatusMessageTextWriter= System.Console.Out + 'Status Messages will be sent to the console during extraction + zip.ExtractAll() + End Using + + + + In this example, a Windows Forms application instantiates a + ZipFile, then sets the StatusMessageTextWriter to a + StringWriter. At that point, all verbose status messages for that + ZipFile are sent to the StringWriter. + + + + var sw = new System.IO.StringWriter(); + using (ZipFile zip= ZipFile.Read(FilePath)) + { + zip.StatusMessageTextWriter= sw; + zip.ExtractAll(); + } + Console.WriteLine("{0}", sw.ToString()); + + + + Dim sw as New System.IO.StringWriter + Using zip As ZipFile = ZipFile.Read(FilePath) + zip.StatusMessageTextWriter= sw + zip.ExtractAll() + End Using + 'Status Messages are now available in sw + + + + + + + Gets or sets the name for the folder to store the temporary file + this library writes when saving a zip archive. + + + + + This library will create a temporary file when saving a Zip archive to a + file. This file is written when calling one of the Save() methods + that does not save to a stream, or one of the SaveSelfExtractor() + methods. + + + + By default, the library will create the temporary file in the directory + specified for the file itself, via the property or via + the method. + + + + Setting this property allows applications to override this default + behavior, so that the library will create the temporary file in the + specified folder. For example, to have the library create the temporary + file in the current working directory, regardless where the ZipFile + is saved, specfy ".". To revert to the default behavior, set this + property to null (Nothing in VB). + + + + When setting the property to a non-null value, the folder specified must + exist; if it does not an exception is thrown. The application should have + write and delete permissions on the folder. The permissions are not + explicitly checked ahead of time; if the application does not have the + appropriate rights, an exception will be thrown at the time Save() + is called. + + + + There is no temporary file created when reading a zip archive. When + saving to a Stream, there is no temporary file created. For example, if + the application is an ASP.NET application and calls Save() + specifying the Response.OutputStream as the output stream, there is + no temporary file created. + + + + + Thrown when setting the property if the directory does not exist. + + + + + + Sets the password to be used on the ZipFile instance. + + + + + + When writing a zip archive, this password is applied to the entries, not + to the zip archive itself. It applies to any ZipEntry subsequently + added to the ZipFile, using one of the AddFile, + AddDirectory, AddEntry, or AddItem methods, etc. + When reading a zip archive, this property applies to any entry + subsequently extracted from the ZipFile using one of the Extract + methods on the ZipFile class. + + + + When writing a zip archive, keep this in mind: though the password is set + on the ZipFile object, according to the Zip spec, the "directory" of the + archive - in other words the list of entries or files contained in the archive - is + not encrypted with the password, or protected in any way. If you set the + Password property, the password actually applies to individual entries + that are added to the archive, subsequent to the setting of this property. + The list of filenames in the archive that is eventually created will + appear in clear text, but the contents of the individual files are + encrypted. This is how Zip encryption works. + + + + One simple way around this limitation is to simply double-wrap sensitive + filenames: Store the files in a zip file, and then store that zip file + within a second, "outer" zip file. If you apply a password to the outer + zip file, then readers will be able to see that the outer zip file + contains an inner zip file. But readers will not be able to read the + directory or file list of the inner zip file. + + + + If you set the password on the ZipFile, and then add a set of files + to the archive, then each entry is encrypted with that password. You may + also want to change the password between adding different entries. If you + set the password, add an entry, then set the password to null + (Nothing in VB), and add another entry, the first entry is + encrypted and the second is not. If you call AddFile(), then set + the Password property, then call ZipFile.Save, the file + added will not be password-protected, and no warning will be generated. + + + + When setting the Password, you may also want to explicitly set the property, to specify how to encrypt the entries added + to the ZipFile. If you set the Password to a non-null value and do not + set , then PKZip 2.0 ("Weak") encryption is used. + This encryption is relatively weak but is very interoperable. If you set + the password to a null value (Nothing in VB), Encryption is + reset to None. + + + + All of the preceding applies to writing zip archives, in other words when + you use one of the Save methods. To use this property when reading or an + existing ZipFile, do the following: set the Password property on the + ZipFile, then call one of the Extract() overloads on the . In this case, the entry is extracted using the + Password that is specified on the ZipFile instance. If you + have not set the Password property, then the password is + null, and the entry is extracted with no password. + + + + If you set the Password property on the ZipFile, then call + Extract() an entry that has not been encrypted with a password, the + password is not used for that entry, and the ZipEntry is extracted + as normal. In other words, the password is used only if necessary. + + + + The class also has a Password property. It takes precedence + over this property on the ZipFile. Typically, you would use the + per-entry Password when most entries in the zip archive use one password, + and a few entries use a different password. If all entries in the zip + file use the same password, then it is simpler to just set this property + on the ZipFile itself, whether creating a zip archive or extracting + a zip archive. + + + + + + + This example creates a zip file, using password protection for the + entries, and then extracts the entries from the zip file. When creating + the zip file, the Readme.txt file is not protected with a password, but + the other two are password-protected as they are saved. During extraction, + each file is extracted with the appropriate password. + + + // create a file with encryption + using (ZipFile zip = new ZipFile()) + { + zip.AddFile("ReadMe.txt"); + zip.Password= "!Secret1"; + zip.AddFile("MapToTheSite-7440-N49th.png"); + zip.AddFile("2008-Regional-Sales-Report.pdf"); + zip.Save("EncryptedArchive.zip"); + } + + // extract entries that use encryption + using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) + { + zip.Password= "!Secret1"; + zip.ExtractAll("extractDir"); + } + + + + + Using zip As New ZipFile + zip.AddFile("ReadMe.txt") + zip.Password = "123456!" + zip.AddFile("MapToTheSite-7440-N49th.png") + zip.Password= "!Secret1"; + zip.AddFile("2008-Regional-Sales-Report.pdf") + zip.Save("EncryptedArchive.zip") + End Using + + + ' extract entries that use encryption + Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) + zip.Password= "!Secret1" + zip.ExtractAll("extractDir") + End Using + + + + + + ZipFile.Encryption + ZipEntry.Password + + + + The action the library should take when extracting a file that already + exists. + + + + + This property affects the behavior of the Extract methods (one of the + Extract() or ExtractWithPassword() overloads), when + extraction would would overwrite an existing filesystem file. If you do + not set this property, the library throws an exception when extracting an + entry would overwrite an existing file. + + + + This property has no effect when extracting to a stream, or when the file + to be extracted does not already exist. + + + + + + + The action the library should take when an error is encountered while + opening or reading files as they are saved into a zip archive. + + + + + Errors can occur as a file is being saved to the zip archive. For + example, the File.Open may fail, or a File.Read may fail, because of + lock conflicts or other reasons. + + + + The first problem might occur after having called AddDirectory() on a + directory that contains a Clipper .dbf file; the file is locked by + Clipper and cannot be opened for read by another process. An example of + the second problem might occur when trying to zip a .pst file that is in + use by Microsoft Outlook. Outlook locks a range on the file, which allows + other processes to open the file, but not read it in its entirety. + + + + This property tells DotNetZip what you would like to do in the case of + these errors. The primary options are: ZipErrorAction.Throw to + throw an exception (this is the default behavior if you don't set this + property); ZipErrorAction.Skip to Skip the file for which there + was an error and continue saving; ZipErrorAction.Retry to Retry + the entry that caused the problem; or + ZipErrorAction.InvokeErrorEvent to invoke an event handler. + + + + This property is implicitly set to ZipErrorAction.InvokeErrorEvent + if you add a handler to the event. If you set + this property to something other than + ZipErrorAction.InvokeErrorEvent, then the ZipError + event is implicitly cleared. What it means is you can set one or the + other (or neither), depending on what you want, but you never need to set + both. + + + + As with some other properties on the ZipFile class, like , , and , setting this property on a ZipFile + instance will cause the specified ZipErrorAction to be used on all + items that are subsequently added to the + ZipFile instance. If you set this property after you have added + items to the ZipFile, but before you have called Save(), + those items will not use the specified error handling action. + + + + If you want to handle any errors that occur with any entry in the zip + file in the same way, then set this property once, before adding any + entries to the zip archive. + + + + If you set this property to ZipErrorAction.Skip and you'd like to + learn which files may have been skipped after a Save(), you can + set the on the ZipFile before + calling Save(). A message will be emitted into that writer for + each skipped file, if any. + + + + + + This example shows how to tell DotNetZip to skip any files for which an + error is generated during the Save(). + + Public Sub SaveZipFile() + Dim SourceFolder As String = "fodder" + Dim DestFile As String = "eHandler.zip" + Dim sw as New StringWriter + Using zipArchive As ZipFile = New ZipFile + ' Tell DotNetZip to skip any files for which it encounters an error + zipArchive.ZipErrorAction = ZipErrorAction.Skip + zipArchive.StatusMessageTextWriter = sw + zipArchive.AddDirectory(SourceFolder) + zipArchive.Save(DestFile) + End Using + ' examine sw here to see any messages + End Sub + + + + + + + + + + The Encryption to use for entries added to the ZipFile. + + + + + Set this when creating a zip archive, or when updating a zip archive. The + specified Encryption is applied to the entries subsequently added to the + ZipFile instance. Applications do not need to set the + Encryption property when reading or extracting a zip archive. + + + + If you set this to something other than EncryptionAlgorithm.None, you + will also need to set the . + + + + As with some other properties on the ZipFile class, like and , setting this + property on a ZipFile instance will cause the specified + EncryptionAlgorithm to be used on all items + that are subsequently added to the ZipFile instance. In other + words, if you set this property after you have added items to the + ZipFile, but before you have called Save(), those items will + not be encrypted or protected with a password in the resulting zip + archive. To get a zip archive with encrypted entries, set this property, + along with the property, before calling + AddFile, AddItem, or AddDirectory (etc.) on the + ZipFile instance. + + + + If you read a ZipFile, you can modify the Encryption on an + encrypted entry, only by setting the Encryption property on the + ZipEntry itself. Setting the Encryption property on the + ZipFile, once it has been created via a call to + ZipFile.Read(), does not affect entries that were previously read. + + + + For example, suppose you read a ZipFile, and there is an encrypted + entry. Setting the Encryption property on that ZipFile and + then calling Save() on the ZipFile does not update the + Encryption used for the entries in the archive. Neither is an + exception thrown. Instead, what happens during the Save() is that + all previously existing entries are copied through to the new zip archive, + with whatever encryption and password that was used when originally + creating the zip archive. Upon re-reading that archive, to extract + entries, applications should use the original password or passwords, if + any. + + + + Suppose an application reads a ZipFile, and there is an encrypted + entry. Setting the Encryption property on that ZipFile and + then adding new entries (via AddFile(), AddEntry(), etc) + and then calling Save() on the ZipFile does not update the + Encryption on any of the entries that had previously been in the + ZipFile. The Encryption property applies only to the + newly-added entries. + + + + + + + This example creates a zip archive that uses encryption, and then extracts + entries from the archive. When creating the zip archive, the ReadMe.txt + file is zipped without using a password or encryption. The other files + use encryption. + + + + // Create a zip archive with AES Encryption. + using (ZipFile zip = new ZipFile()) + { + zip.AddFile("ReadMe.txt"); + zip.Encryption= EncryptionAlgorithm.WinZipAes256; + zip.Password= "Top.Secret.No.Peeking!"; + zip.AddFile("7440-N49th.png"); + zip.AddFile("2008-Regional-Sales-Report.pdf"); + zip.Save("EncryptedArchive.zip"); + } + + // Extract a zip archive that uses AES Encryption. + // You do not need to specify the algorithm during extraction. + using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) + { + zip.Password= "Top.Secret.No.Peeking!"; + zip.ExtractAll("extractDirectory"); + } + + + + ' Create a zip that uses Encryption. + Using zip As New ZipFile() + zip.Encryption= EncryptionAlgorithm.WinZipAes256 + zip.Password= "Top.Secret.No.Peeking!" + zip.AddFile("ReadMe.txt") + zip.AddFile("7440-N49th.png") + zip.AddFile("2008-Regional-Sales-Report.pdf") + zip.Save("EncryptedArchive.zip") + End Using + + ' Extract a zip archive that uses AES Encryption. + ' You do not need to specify the algorithm during extraction. + Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) + zip.Password= "Top.Secret.No.Peeking!" + zip.ExtractAll("extractDirectory") + End Using + + + + + ZipFile.Password + ZipEntry.Encryption + + + + A callback that allows the application to specify the compression level + to use for entries subsequently added to the zip archive. + + + + + + With this callback, the DotNetZip library allows the application to + determine whether compression will be used, at the time of the + Save. This may be useful if the application wants to favor + speed over size, and wants to defer the decision until the time of + Save. + + + + Typically applications set the property on + the ZipFile or on each ZipEntry to determine the level of + compression used. This is done at the time the entry is added to the + ZipFile. Setting the property to + Ionic.Zlib.CompressionLevel.None means no compression will be used. + + + + This callback allows the application to defer the decision on the + CompressionLevel to use, until the time of the call to + ZipFile.Save(). The callback is invoked once per ZipEntry, + at the time the data for the entry is being written out as part of a + Save() operation. The application can use whatever criteria it + likes in determining the level to return. For example, an application may + wish that no .mp3 files should be compressed, because they are already + compressed and the extra compression is not worth the CPU time incurred, + and so can return None for all .mp3 entries. + + + + The library determines whether compression will be attempted for an entry + this way: If the entry is a zero length file, or a directory, no + compression is used. Otherwise, if this callback is set, it is invoked + and the CompressionLevel is set to the return value. If this + callback has not been set, then the previously set value for + CompressionLevel is used. + + + + + + + The maximum size of an output segment, when saving a split Zip file. + + + + Set this to a non-zero value before calling or to specify that the ZipFile should be saved as a + split archive, also sometimes called a spanned archive. Some also + call them multi-file archives. + + + + A split zip archive is saved in a set of discrete filesystem files, + rather than in a single file. This is handy when transmitting the + archive in email or some other mechanism that has a limit to the size of + each file. The first file in a split archive will be named + basename.z01, the second will be named basename.z02, and + so on. The final file is named basename.zip. According to the zip + specification from PKWare, the minimum value is 65536, for a 64k segment + size. The maximum number of segments allows in a split archive is 99. + + + + The value of this property determines the maximum size of a split + segment when writing a split archive. For example, suppose you have a + ZipFile that would save to a single file of 200k. If you set the + MaxOutputSegmentSize to 65536 before calling Save(), you + will get four distinct output files. On the other hand if you set this + property to 256k, then you will get a single-file archive for that + ZipFile. + + + + The size of each split output file will be as large as possible, up to + the maximum size set here. The zip specification requires that some data + fields in a zip archive may not span a split boundary, and an output + segment may be smaller than the maximum if necessary to avoid that + problem. Also, obviously the final segment of the archive may be smaller + than the maximum segment size. Segments will never be larger than the + value set with this property. + + + + You can save a split Zip file only when saving to a regular filesystem + file. It's not possible to save a split zip file as a self-extracting + archive, nor is it possible to save a split zip file to a stream. When + saving to a SFX or to a Stream, this property is ignored. + + + + About interoperability: Split or spanned zip files produced by DotNetZip + can be read by WinZip or PKZip, and vice-versa. Segmented zip files may + not be readable by other tools, if those other tools don't support zip + spanning or splitting. When in doubt, test. I don't believe Windows + Explorer can extract a split archive. + + + + This property has no effect when reading a split archive. You can read + a split archive in the normal way with DotNetZip. + + + + When saving a zip file, if you want a regular zip file rather than a + split zip file, don't set this property, or set it to Zero. + + + + If you read a split archive, with and + then subsequently call ZipFile.Save(), unless you set this + property before calling Save(), you will get a normal, + single-file archive. + + + + + + + + Returns the number of segments used in the most recent Save() operation. + + + + This is normally zero, unless you have set the property. If you have set , and then you save a file, after the call to + Save() completes, you can read this value to learn the number of segments that + were created. + + + If you call Save("Archive.zip"), and it creates 5 segments, then you + will have filesystem files named Archive.z01, Archive.z02, Archive.z03, + Archive.z04, and Archive.zip, and the value of this property will be 5. + + + + + + + The size threshold for an entry, above which a parallel deflate is used. + + + + + + DotNetZip will use multiple threads to compress any ZipEntry, + if the entry is larger than the given size. Zero means "always + use parallel deflate", while -1 means "never use parallel + deflate". The default value for this property is 512k. Aside + from the special values of 0 and 1, the minimum value is 65536. + + + + If the entry size cannot be known before compression, as with a + read-forward stream, then Parallel deflate will never be + performed, unless the value of this property is zero. + + + + A parallel deflate operations will speed up the compression of + large files, on computers with multiple CPUs or multiple CPU + cores. For files above 1mb, on a dual core or dual-cpu (2p) + machine, the time required to compress the file can be 70% of the + single-threaded deflate. For very large files on 4p machines the + compression can be done in 30% of the normal time. The downside + is that parallel deflate consumes extra memory during the deflate, + and the deflation is not as effective. + + + + Parallel deflate tends to yield slightly less compression when + compared to as single-threaded deflate; this is because the original + data stream is split into multiple independent buffers, each of which + is compressed in parallel. But because they are treated + independently, there is no opportunity to share compression + dictionaries. For that reason, a deflated stream may be slightly + larger when compressed using parallel deflate, as compared to a + traditional single-threaded deflate. Sometimes the increase over the + normal deflate is as much as 5% of the total compressed size. For + larger files it can be as small as 0.1%. + + + + Multi-threaded compression does not give as much an advantage when + using Encryption. This is primarily because encryption tends to slow + down the entire pipeline. Also, multi-threaded compression gives less + of an advantage when using lower compression levels, for example . You may have to + perform some tests to determine the best approach for your situation. + + + + + + + + + + The maximum number of buffer pairs to use when performing + parallel compression. + + + + + This property sets an upper limit on the number of memory + buffer pairs to create when performing parallel + compression. The implementation of the parallel + compression stream allocates multiple buffers to + facilitate parallel compression. As each buffer fills up, + the stream uses + ThreadPool.QueueUserWorkItem() to compress those + buffers in a background threadpool thread. After a buffer + is compressed, it is re-ordered and written to the output + stream. + + + + A higher number of buffer pairs enables a higher degree of + parallelism, which tends to increase the speed of compression on + multi-cpu computers. On the other hand, a higher number of buffer + pairs also implies a larger memory consumption, more active worker + threads, and a higher cpu utilization for any compression. This + property enables the application to limit its memory consumption and + CPU utilization behavior depending on requirements. + + + + For each compression "task" that occurs in parallel, there are 2 + buffers allocated: one for input and one for output. This property + sets a limit for the number of pairs. The total amount of storage + space allocated for buffering will then be (N*S*2), where N is the + number of buffer pairs, S is the size of each buffer (). By default, DotNetZip allocates 4 buffer + pairs per CPU core, so if your machine has 4 cores, and you retain + the default buffer size of 128k, then the + ParallelDeflateOutputStream will use 4 * 4 * 2 * 128kb of buffer + memory in total, or 4mb, in blocks of 128kb. If you then set this + property to 8, then the number will be 8 * 2 * 128kb of buffer + memory, or 2mb. + + + + CPU utilization will also go up with additional buffers, because a + larger number of buffer pairs allows a larger number of background + threads to compress in parallel. If you find that parallel + compression is consuming too much memory or CPU, you can adjust this + value downward. + + + + The default value is 16. Different values may deliver better or + worse results, depending on your priorities and the dynamic + performance characteristics of your storage and compute resources. + + + + This property is not the number of buffer pairs to use; it is an + upper limit. An illustration: Suppose you have an application that + uses the default value of this property (which is 16), and it runs + on a machine with 2 CPU cores. In that case, DotNetZip will allocate + 4 buffer pairs per CPU core, for a total of 8 pairs. The upper + limit specified by this property has no effect. + + + + The application can set this value at any time + before calling ZipFile.Save(). + + + + + + + + Provides a string representation of the instance. + a string representation of the instance. + + + + Returns the version number on the DotNetZip assembly. + + + + + This property is exposed as a convenience. Callers could also get the + version value by retrieving GetName().Version on the + System.Reflection.Assembly object pointing to the DotNetZip + assembly. But sometimes it is not clear which assembly is being loaded. + This property makes it clear. + + + This static property is primarily useful for diagnostic purposes. + + + + + + Creates a new ZipFile instance, using the specified filename. + + + + + Applications can use this constructor to create a new ZipFile for writing, + or to slurp in an existing zip archive for read and update purposes. + + + + To create a new zip archive, an application can call this constructor, + passing the name of a file that does not exist. The name may be a fully + qualified path. Then the application can add directories or files to the + ZipFile via AddDirectory(), AddFile(), AddItem() + and then write the zip archive to the disk by calling Save(). The + zip file is not actually opened and written to the disk until the + application calls ZipFile.Save(). At that point the new zip file + with the given name is created. + + + + If you won't know the name of the Zipfile until the time you call + ZipFile.Save(), or if you plan to save to a stream (which has no + name), then you should use the no-argument constructor. + + + + The application can also call this constructor to read an existing zip + archive. passing the name of a valid zip file that does exist. But, it's + better form to use the static method, + passing the name of the zip file, because using ZipFile.Read() in + your code communicates very clearly what you are doing. In either case, + the file is then read into the ZipFile instance. The app can then + enumerate the entries or can modify the zip file, for example adding + entries, removing entries, changing comments, and so on. + + + + One advantage to this parameterized constructor: it allows applications to + use the same code to add items to a zip archive, regardless of whether the + zip file exists. + + + + Instances of the ZipFile class are not multi-thread safe. You may + not party on a single instance with multiple threads. You may have + multiple threads that each use a distinct ZipFile instance, or you + can synchronize multi-thread access to a single instance. + + + + By the way, since DotNetZip is so easy to use, don't you think you should + donate $5 or $10? + + + + + + Thrown if name refers to an existing file that is not a valid zip file. + + + + This example shows how to create a zipfile, and add a few files into it. + + String ZipFileToCreate = "archive1.zip"; + String DirectoryToZip = "c:\\reports"; + using (ZipFile zip = new ZipFile()) + { + // Store all files found in the top level directory, into the zip archive. + String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); + zip.AddFiles(filenames, "files"); + zip.Save(ZipFileToCreate); + } + + + + Dim ZipFileToCreate As String = "archive1.zip" + Dim DirectoryToZip As String = "c:\reports" + Using zip As ZipFile = New ZipFile() + Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) + zip.AddFiles(filenames, "files") + zip.Save(ZipFileToCreate) + End Using + + + + The filename to use for the new zip archive. + + + + + Creates a new ZipFile instance, using the specified name for the + filename, and the specified Encoding. + + + + + See the documentation on the ZipFile + constructor that accepts a single string argument for basic + information on all the ZipFile constructors. + + + + The Encoding is used as the default alternate encoding for entries with + filenames or comments that cannot be encoded with the IBM437 code page. + This is equivalent to setting the property on the ZipFile + instance after construction. + + + + Instances of the ZipFile class are not multi-thread safe. You may + not party on a single instance with multiple threads. You may have + multiple threads that each use a distinct ZipFile instance, or you + can synchronize multi-thread access to a single instance. + + + + + + Thrown if name refers to an existing file that is not a valid zip file. + + + The filename to use for the new zip archive. + The Encoding is used as the default alternate + encoding for entries with filenames or comments that cannot be encoded + with the IBM437 code page. + + + + Create a zip file, without specifying a target filename or stream to save to. + + + + + See the documentation on the ZipFile + constructor that accepts a single string argument for basic + information on all the ZipFile constructors. + + + + After instantiating with this constructor and adding entries to the + archive, the application should call or + to save to a file or a + stream, respectively. The application can also set the + property and then call the no-argument method. (This + is the preferred approach for applications that use the library through + COM interop.) If you call the no-argument method + without having set the Name of the ZipFile, either through + the parameterized constructor or through the explicit property , the + Save() will throw, because there is no place to save the file. + + + Instances of the ZipFile class are not multi-thread safe. You may + have multiple threads that each use a distinct ZipFile instance, or + you can synchronize multi-thread access to a single instance. + + + + + This example creates a Zip archive called Backup.zip, containing all the files + in the directory DirectoryToZip. Files within subdirectories are not zipped up. + + using (ZipFile zip = new ZipFile()) + { + // Store all files found in the top level directory, into the zip archive. + // note: this code does not recurse subdirectories! + String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); + zip.AddFiles(filenames, "files"); + zip.Save("Backup.zip"); + } + + + + Using zip As New ZipFile + ' Store all files found in the top level directory, into the zip archive. + ' note: this code does not recurse subdirectories! + Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) + zip.AddFiles(filenames, "files") + zip.Save("Backup.zip") + End Using + + + + + + Create a zip file, specifying a text Encoding, but without specifying a + target filename or stream to save to. + + + + + See the documentation on the ZipFile + constructor that accepts a single string argument for basic + information on all the ZipFile constructors. + + + + + + The Encoding is used as the default alternate encoding for entries with + filenames or comments that cannot be encoded with the IBM437 code page. + + + + + Creates a new ZipFile instance, using the specified name for the + filename, and the specified status message writer. + + + + + See the documentation on the ZipFile + constructor that accepts a single string argument for basic + information on all the ZipFile constructors. + + + + This version of the constructor allows the caller to pass in a TextWriter, + to which verbose messages will be written during extraction or creation of + the zip archive. A console application may wish to pass + System.Console.Out to get messages on the Console. A graphical or headless + application may wish to capture the messages in a different + TextWriter, for example, a StringWriter, and then display + the messages in a TextBox, or generate an audit log of ZipFile operations. + + + + To encrypt the data for the files added to the ZipFile instance, + set the Password property after creating the ZipFile instance. + + + + Instances of the ZipFile class are not multi-thread safe. You may + not party on a single instance with multiple threads. You may have + multiple threads that each use a distinct ZipFile instance, or you + can synchronize multi-thread access to a single instance. + + + + + + Thrown if name refers to an existing file that is not a valid zip file. + + + + + using (ZipFile zip = new ZipFile("Backup.zip", Console.Out)) + { + // Store all files found in the top level directory, into the zip archive. + // note: this code does not recurse subdirectories! + // Status messages will be written to Console.Out + String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); + zip.AddFiles(filenames); + zip.Save(); + } + + + + Using zip As New ZipFile("Backup.zip", Console.Out) + ' Store all files found in the top level directory, into the zip archive. + ' note: this code does not recurse subdirectories! + ' Status messages will be written to Console.Out + Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) + zip.AddFiles(filenames) + zip.Save() + End Using + + + + The filename to use for the new zip archive. + A TextWriter to use for writing + verbose status messages. + + + + Creates a new ZipFile instance, using the specified name for the + filename, the specified status message writer, and the specified Encoding. + + + + + This constructor works like the ZipFile + constructor that accepts a single string argument. See that + reference for detail on what this constructor does. + + + + This version of the constructor allows the caller to pass in a + TextWriter, and an Encoding. The TextWriter will collect + verbose messages that are generated by the library during extraction or + creation of the zip archive. A console application may wish to pass + System.Console.Out to get messages on the Console. A graphical or + headless application may wish to capture the messages in a different + TextWriter, for example, a StringWriter, and then display + the messages in a TextBox, or generate an audit log of + ZipFile operations. + + + + The Encoding is used as the default alternate encoding for entries + with filenames or comments that cannot be encoded with the IBM437 code + page. This is a equivalent to setting the property on the ZipFile + instance after construction. + + + + To encrypt the data for the files added to the ZipFile instance, + set the Password property after creating the ZipFile + instance. + + + + Instances of the ZipFile class are not multi-thread safe. You may + not party on a single instance with multiple threads. You may have + multiple threads that each use a distinct ZipFile instance, or you + can synchronize multi-thread access to a single instance. + + + + + + Thrown if fileName refers to an existing file that is not a valid zip file. + + + The filename to use for the new zip archive. + A TextWriter to use for writing verbose + status messages. + + The Encoding is used as the default alternate encoding for entries with + filenames or comments that cannot be encoded with the IBM437 code page. + + + + + Initialize a ZipFile instance by reading in a zip file. + + + + + + This method is primarily useful from COM Automation environments, when + reading or extracting zip files. In COM, it is not possible to invoke + parameterized constructors for a class. A COM Automation application can + update a zip file by using the default (no argument) + constructor, then calling Initialize() to read the contents + of an on-disk zip archive into the ZipFile instance. + + + + .NET applications are encouraged to use the ZipFile.Read() methods + for better clarity. + + + + the name of the existing zip file to read in. + + + + This is an integer indexer into the Zip archive. + + + + + This property is read-only. + + + + Internally, the ZipEntry instances that belong to the + ZipFile are stored in a Dictionary. When you use this + indexer the first time, it creates a read-only + List<ZipEntry> from the Dictionary.Values Collection. + If at any time you modify the set of entries in the ZipFile, + either by adding an entry, removing an entry, or renaming an + entry, a new List will be created, and the numeric indexes for the + remaining entries may be different. + + + + This means you cannot rename any ZipEntry from + inside an enumeration of the zip file. + + + + The index value. + + + + + + The ZipEntry within the Zip archive at the specified index. If the + entry does not exist in the archive, this indexer throws. + + + + + + This is a name-based indexer into the Zip archive. + + + + + This property is read-only. + + + + The property on the ZipFile + determines whether retrieval via this indexer is done via case-sensitive + comparisons. By default, retrieval is not case sensitive. This makes + sense on Windows, in which filesystems are not case sensitive. + + + + Regardless of case-sensitivity, it is not always the case that + this[value].FileName == value. In other words, the FileName + property of the ZipEntry retrieved with this indexer, may or may + not be equal to the index value. + + + + This is because DotNetZip performs a normalization of filenames passed to + this indexer, before attempting to retrieve the item. That normalization + includes: removal of a volume letter and colon, swapping backward slashes + for forward slashes. So, zip["dir1\\entry1.txt"].FileName == + "dir1/entry.txt". + + + + Directory entries in the zip file may be retrieved via this indexer only + with names that have a trailing slash. DotNetZip automatically appends a + trailing slash to the names of any directory entries added to a zip. + + + + + + This example extracts only the entries in a zip file that are .txt files. + + using (ZipFile zip = ZipFile.Read("PackedDocuments.zip")) + { + foreach (string s1 in zip.EntryFilenames) + { + if (s1.EndsWith(".txt")) + zip[s1].Extract("textfiles"); + } + } + + + Using zip As ZipFile = ZipFile.Read("PackedDocuments.zip") + Dim s1 As String + For Each s1 In zip.EntryFilenames + If s1.EndsWith(".txt") Then + zip(s1).Extract("textfiles") + End If + Next + End Using + + + + + + Thrown if the caller attempts to assign a non-null value to the indexer. + + + + The name of the file, including any directory path, to retrieve from the + zip. The filename match is not case-sensitive by default; you can use the + property to change this behavior. The + pathname can use forward-slashes or backward slashes. + + + + The ZipEntry within the Zip archive, given by the specified + filename. If the named entry does not exist in the archive, this indexer + returns null (Nothing in VB). + + + + + + The list of filenames for the entries contained within the zip archive. + + + + According to the ZIP specification, the names of the entries use forward + slashes in pathnames. If you are scanning through the list, you may have + to swap forward slashes for backslashes. + + + + + + This example shows one way to test if a filename is already contained + within a zip archive. + + String zipFileToRead= "PackedDocuments.zip"; + string candidate = "DatedMaterial.xps"; + using (ZipFile zip = new ZipFile(zipFileToRead)) + { + if (zip.EntryFilenames.Contains(candidate)) + Console.WriteLine("The file '{0}' exists in the zip archive '{1}'", + candidate, + zipFileName); + else + Console.WriteLine("The file, '{0}', does not exist in the zip archive '{1}'", + candidate, + zipFileName); + Console.WriteLine(); + } + + + Dim zipFileToRead As String = "PackedDocuments.zip" + Dim candidate As String = "DatedMaterial.xps" + Using zip As ZipFile.Read(ZipFileToRead) + If zip.EntryFilenames.Contains(candidate) Then + Console.WriteLine("The file '{0}' exists in the zip archive '{1}'", _ + candidate, _ + zipFileName) + Else + Console.WriteLine("The file, '{0}', does not exist in the zip archive '{1}'", _ + candidate, _ + zipFileName) + End If + Console.WriteLine + End Using + + + + + The list of strings for the filenames contained within the Zip archive. + + + + + + Returns the readonly collection of entries in the Zip archive. + + + + + + If there are no entries in the current ZipFile, the value returned is a + non-null zero-element collection. If there are entries in the zip file, + the elements are returned in no particular order. + + + This is the implied enumerator on the ZipFile class. If you use a + ZipFile instance in a context that expects an enumerator, you will + get this collection. + + + + + + + Returns a readonly collection of entries in the Zip archive, sorted by FileName. + + + + If there are no entries in the current ZipFile, the value returned + is a non-null zero-element collection. If there are entries in the zip + file, the elements are returned sorted by the name of the entry. + + + + + This example fills a Windows Forms ListView with the entries in a zip file. + + + using (ZipFile zip = ZipFile.Read(zipFile)) + { + foreach (ZipEntry entry in zip.EntriesSorted) + { + ListViewItem item = new ListViewItem(n.ToString()); + n++; + string[] subitems = new string[] { + entry.FileName.Replace("/","\\"), + entry.LastModified.ToString("yyyy-MM-dd HH:mm:ss"), + entry.UncompressedSize.ToString(), + String.Format("{0,5:F0}%", entry.CompressionRatio), + entry.CompressedSize.ToString(), + (entry.UsesEncryption) ? "Y" : "N", + String.Format("{0:X8}", entry.Crc)}; + + foreach (String s in subitems) + { + ListViewItem.ListViewSubItem subitem = new ListViewItem.ListViewSubItem(); + subitem.Text = s; + item.SubItems.Add(subitem); + } + + this.listView1.Items.Add(item); + } + } + + + + + + + + Returns the number of entries in the Zip archive. + + + + + Removes the given ZipEntry from the zip archive. + + + + + After calling RemoveEntry, the application must call Save to + make the changes permanent. + + + + + Thrown if the specified ZipEntry does not exist in the ZipFile. + + + + In this example, all entries in the zip archive dating from before + December 31st, 2007, are removed from the archive. This is actually much + easier if you use the RemoveSelectedEntries method. But I needed an + example for RemoveEntry, so here it is. + + String ZipFileToRead = "ArchiveToModify.zip"; + System.DateTime Threshold = new System.DateTime(2007,12,31); + using (ZipFile zip = ZipFile.Read(ZipFileToRead)) + { + var EntriesToRemove = new System.Collections.Generic.List<ZipEntry>(); + foreach (ZipEntry e in zip) + { + if (e.LastModified < Threshold) + { + // We cannot remove the entry from the list, within the context of + // an enumeration of said list. + // So we add the doomed entry to a list to be removed later. + EntriesToRemove.Add(e); + } + } + + // actually remove the doomed entries. + foreach (ZipEntry zombie in EntriesToRemove) + zip.RemoveEntry(zombie); + + zip.Comment= String.Format("This zip archive was updated at {0}.", + System.DateTime.Now.ToString("G")); + + // save with a different name + zip.Save("Archive-Updated.zip"); + } + + + + Dim ZipFileToRead As String = "ArchiveToModify.zip" + Dim Threshold As New DateTime(2007, 12, 31) + Using zip As ZipFile = ZipFile.Read(ZipFileToRead) + Dim EntriesToRemove As New System.Collections.Generic.List(Of ZipEntry) + Dim e As ZipEntry + For Each e In zip + If (e.LastModified < Threshold) Then + ' We cannot remove the entry from the list, within the context of + ' an enumeration of said list. + ' So we add the doomed entry to a list to be removed later. + EntriesToRemove.Add(e) + End If + Next + + ' actually remove the doomed entries. + Dim zombie As ZipEntry + For Each zombie In EntriesToRemove + zip.RemoveEntry(zombie) + Next + zip.Comment = String.Format("This zip archive was updated at {0}.", DateTime.Now.ToString("G")) + 'save as a different name + zip.Save("Archive-Updated.zip") + End Using + + + + + The ZipEntry to remove from the zip. + + + + + + + + Removes the ZipEntry with the given filename from the zip archive. + + + + + After calling RemoveEntry, the application must call Save to + make the changes permanent. + + + + + + Thrown if the ZipFile is not updatable. + + + + Thrown if a ZipEntry with the specified filename does not exist in + the ZipFile. + + + + + This example shows one way to remove an entry with a given filename from + an existing zip archive. + + + String zipFileToRead= "PackedDocuments.zip"; + string candidate = "DatedMaterial.xps"; + using (ZipFile zip = ZipFile.Read(zipFileToRead)) + { + if (zip.EntryFilenames.Contains(candidate)) + { + zip.RemoveEntry(candidate); + zip.Comment= String.Format("The file '{0}' has been removed from this archive.", + Candidate); + zip.Save(); + } + } + + + Dim zipFileToRead As String = "PackedDocuments.zip" + Dim candidate As String = "DatedMaterial.xps" + Using zip As ZipFile = ZipFile.Read(zipFileToRead) + If zip.EntryFilenames.Contains(candidate) Then + zip.RemoveEntry(candidate) + zip.Comment = String.Format("The file '{0}' has been removed from this archive.", Candidate) + zip.Save + End If + End Using + + + + + The name of the file, including any directory path, to remove from the zip. + The filename match is not case-sensitive by default; you can use the + CaseSensitiveRetrieval property to change this behavior. The + pathname can use forward-slashes or backward slashes. + + + + + + Closes the read and write streams associated + to the ZipFile, if necessary. + + + + The Dispose() method is generally employed implicitly, via a using(..) {..} + statement. (Using...End Using in VB) If you do not employ a using + statement, insure that your application calls Dispose() explicitly. For + example, in a Powershell application, or an application that uses the COM + interop interface, you must call Dispose() explicitly. + + + + This example extracts an entry selected by name, from the Zip file to the + Console. + + using (ZipFile zip = ZipFile.Read(zipfile)) + { + foreach (ZipEntry e in zip) + { + if (WantThisEntry(e.FileName)) + zip.Extract(e.FileName, Console.OpenStandardOutput()); + } + } // Dispose() is called implicitly here. + + + + Using zip As ZipFile = ZipFile.Read(zipfile) + Dim e As ZipEntry + For Each e In zip + If WantThisEntry(e.FileName) Then + zip.Extract(e.FileName, Console.OpenStandardOutput()) + End If + Next + End Using ' Dispose is implicity called here + + + + + + Disposes any managed resources, if the flag is set, then marks the + instance disposed. This method is typically not called explicitly from + application code. + + + + Applications should call the no-arg Dispose method. + + + + indicates whether the method should dispose streams or not. + + + + + Default size of the buffer used for IO. + + + + + An event handler invoked when a Save() starts, before and after each + entry has been written to the archive, when a Save() completes, and + during other Save events. + + + + + Depending on the particular event, different properties on the parameter are set. The following + table summarizes the available EventTypes and the conditions under + which this event handler is invoked with a + SaveProgressEventArgs with the given EventType. + + + + + value of EntryType + Meaning and conditions + + + + ZipProgressEventType.Saving_Started + Fired when ZipFile.Save() begins. + + + + + ZipProgressEventType.Saving_BeforeSaveEntry + + Fired within ZipFile.Save(), just before writing data for each + particular entry. + + + + + ZipProgressEventType.Saving_AfterSaveEntry + + Fired within ZipFile.Save(), just after having finished writing data + for each particular entry. + + + + + ZipProgressEventType.Saving_Completed + Fired when ZipFile.Save() has completed. + + + + + ZipProgressEventType.Saving_AfterSaveTempArchive + + Fired after the temporary file has been created. This happens only + when saving to a disk file. This event will not be invoked when + saving to a stream. + + + + + ZipProgressEventType.Saving_BeforeRenameTempArchive + + Fired just before renaming the temporary file to the permanent + location. This happens only when saving to a disk file. This event + will not be invoked when saving to a stream. + + + + + ZipProgressEventType.Saving_AfterRenameTempArchive + + Fired just after renaming the temporary file to the permanent + location. This happens only when saving to a disk file. This event + will not be invoked when saving to a stream. + + + + + ZipProgressEventType.Saving_AfterCompileSelfExtractor + + Fired after a self-extracting archive has finished compiling. This + EventType is used only within SaveSelfExtractor(). + + + + + ZipProgressEventType.Saving_BytesRead + + Set during the save of a particular entry, to update progress of the + Save(). When this EventType is set, the BytesTransferred is the + number of bytes that have been read from the source stream. The + TotalBytesToTransfer is the number of bytes in the uncompressed + file. + + + + + + + + + This example uses an anonymous method to handle the + SaveProgress event, by updating a progress bar. + + + progressBar1.Value = 0; + progressBar1.Max = listbox1.Items.Count; + using (ZipFile zip = new ZipFile()) + { + // listbox1 contains a list of filenames + zip.AddFiles(listbox1.Items); + + // do the progress bar: + zip.SaveProgress += (sender, e) => { + if (e.EventType == ZipProgressEventType.Saving_BeforeWriteEntry) { + progressBar1.PerformStep(); + } + }; + + zip.Save(fs); + } + + + + + This example uses a named method as the + SaveProgress event handler, to update the user, in a + console-based application. + + + static bool justHadByteUpdate= false; + public static void SaveProgress(object sender, SaveProgressEventArgs e) + { + if (e.EventType == ZipProgressEventType.Saving_Started) + Console.WriteLine("Saving: {0}", e.ArchiveName); + + else if (e.EventType == ZipProgressEventType.Saving_Completed) + { + justHadByteUpdate= false; + Console.WriteLine(); + Console.WriteLine("Done: {0}", e.ArchiveName); + } + + else if (e.EventType == ZipProgressEventType.Saving_BeforeWriteEntry) + { + if (justHadByteUpdate) + Console.WriteLine(); + Console.WriteLine(" Writing: {0} ({1}/{2})", + e.CurrentEntry.FileName, e.EntriesSaved, e.EntriesTotal); + justHadByteUpdate= false; + } + + else if (e.EventType == ZipProgressEventType.Saving_EntryBytesRead) + { + if (justHadByteUpdate) + Console.SetCursorPosition(0, Console.CursorTop); + Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, e.TotalBytesToTransfer, + e.BytesTransferred / (0.01 * e.TotalBytesToTransfer )); + justHadByteUpdate= true; + } + } + + public static ZipUp(string targetZip, string directory) + { + using (var zip = new ZipFile()) { + zip.SaveProgress += SaveProgress; + zip.AddDirectory(directory); + zip.Save(targetZip); + } + } + + + + + Public Sub ZipUp(ByVal targetZip As String, ByVal directory As String) + Using zip As ZipFile = New ZipFile + AddHandler zip.SaveProgress, AddressOf MySaveProgress + zip.AddDirectory(directory) + zip.Save(targetZip) + End Using + End Sub + + Private Shared justHadByteUpdate As Boolean = False + + Public Shared Sub MySaveProgress(ByVal sender As Object, ByVal e As SaveProgressEventArgs) + If (e.EventType Is ZipProgressEventType.Saving_Started) Then + Console.WriteLine("Saving: {0}", e.ArchiveName) + + ElseIf (e.EventType Is ZipProgressEventType.Saving_Completed) Then + justHadByteUpdate = False + Console.WriteLine + Console.WriteLine("Done: {0}", e.ArchiveName) + + ElseIf (e.EventType Is ZipProgressEventType.Saving_BeforeWriteEntry) Then + If justHadByteUpdate Then + Console.WriteLine + End If + Console.WriteLine(" Writing: {0} ({1}/{2})", e.CurrentEntry.FileName, e.EntriesSaved, e.EntriesTotal) + justHadByteUpdate = False + + ElseIf (e.EventType Is ZipProgressEventType.Saving_EntryBytesRead) Then + If justHadByteUpdate Then + Console.SetCursorPosition(0, Console.CursorTop) + End If + Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, _ + e.TotalBytesToTransfer, _ + (CDbl(e.BytesTransferred) / (0.01 * e.TotalBytesToTransfer))) + justHadByteUpdate = True + End If + End Sub + + + + + + This is a more complete example of using the SaveProgress + events in a Windows Forms application, with a + Thread object. + + + delegate void SaveEntryProgress(SaveProgressEventArgs e); + delegate void ButtonClick(object sender, EventArgs e); + + internal class WorkerOptions + { + public string ZipName; + public string Folder; + public string Encoding; + public string Comment; + public int ZipFlavor; + public Zip64Option Zip64; + } + + private int _progress2MaxFactor; + private bool _saveCanceled; + private long _totalBytesBeforeCompress; + private long _totalBytesAfterCompress; + private Thread _workerThread; + + + private void btnZipup_Click(object sender, EventArgs e) + { + KickoffZipup(); + } + + private void btnCancel_Click(object sender, EventArgs e) + { + if (this.lblStatus.InvokeRequired) + { + this.lblStatus.Invoke(new ButtonClick(this.btnCancel_Click), new object[] { sender, e }); + } + else + { + _saveCanceled = true; + lblStatus.Text = "Canceled..."; + ResetState(); + } + } + + private void KickoffZipup() + { + _folderName = tbDirName.Text; + + if (_folderName == null || _folderName == "") return; + if (this.tbZipName.Text == null || this.tbZipName.Text == "") return; + + // check for existence of the zip file: + if (System.IO.File.Exists(this.tbZipName.Text)) + { + var dlgResult = MessageBox.Show(String.Format("The file you have specified ({0}) already exists." + + " Do you want to overwrite this file?", this.tbZipName.Text), + "Confirmation is Required", MessageBoxButtons.YesNo, MessageBoxIcon.Question); + if (dlgResult != DialogResult.Yes) return; + System.IO.File.Delete(this.tbZipName.Text); + } + + _saveCanceled = false; + _nFilesCompleted = 0; + _totalBytesAfterCompress = 0; + _totalBytesBeforeCompress = 0; + this.btnOk.Enabled = false; + this.btnOk.Text = "Zipping..."; + this.btnCancel.Enabled = true; + lblStatus.Text = "Zipping..."; + + var options = new WorkerOptions + { + ZipName = this.tbZipName.Text, + Folder = _folderName, + Encoding = "ibm437" + }; + + if (this.comboBox1.SelectedIndex != 0) + { + options.Encoding = this.comboBox1.SelectedItem.ToString(); + } + + if (this.radioFlavorSfxCmd.Checked) + options.ZipFlavor = 2; + else if (this.radioFlavorSfxGui.Checked) + options.ZipFlavor = 1; + else options.ZipFlavor = 0; + + if (this.radioZip64AsNecessary.Checked) + options.Zip64 = Zip64Option.AsNecessary; + else if (this.radioZip64Always.Checked) + options.Zip64 = Zip64Option.Always; + else options.Zip64 = Zip64Option.Never; + + options.Comment = String.Format("Encoding:{0} || Flavor:{1} || ZIP64:{2}\r\nCreated at {3} || {4}\r\n", + options.Encoding, + FlavorToString(options.ZipFlavor), + options.Zip64.ToString(), + System.DateTime.Now.ToString("yyyy-MMM-dd HH:mm:ss"), + this.Text); + + if (this.tbComment.Text != TB_COMMENT_NOTE) + options.Comment += this.tbComment.Text; + + _workerThread = new Thread(this.DoSave); + _workerThread.Name = "Zip Saver thread"; + _workerThread.Start(options); + this.Cursor = Cursors.WaitCursor; + } + + + private void DoSave(Object p) + { + WorkerOptions options = p as WorkerOptions; + try + { + using (var zip1 = new ZipFile()) + { + zip1.ProvisionalAlternateEncoding = System.Text.Encoding.GetEncoding(options.Encoding); + zip1.Comment = options.Comment; + zip1.AddDirectory(options.Folder); + _entriesToZip = zip1.EntryFileNames.Count; + SetProgressBars(); + zip1.SaveProgress += this.zip1_SaveProgress; + + zip1.UseZip64WhenSaving = options.Zip64; + + if (options.ZipFlavor == 1) + zip1.SaveSelfExtractor(options.ZipName, SelfExtractorFlavor.WinFormsApplication); + else if (options.ZipFlavor == 2) + zip1.SaveSelfExtractor(options.ZipName, SelfExtractorFlavor.ConsoleApplication); + else + zip1.Save(options.ZipName); + } + } + catch (System.Exception exc1) + { + MessageBox.Show(String.Format("Exception while zipping: {0}", exc1.Message)); + btnCancel_Click(null, null); + } + } + + + + void zip1_SaveProgress(object sender, SaveProgressEventArgs e) + { + switch (e.EventType) + { + case ZipProgressEventType.Saving_AfterWriteEntry: + StepArchiveProgress(e); + break; + case ZipProgressEventType.Saving_EntryBytesRead: + StepEntryProgress(e); + break; + case ZipProgressEventType.Saving_Completed: + SaveCompleted(); + break; + case ZipProgressEventType.Saving_AfterSaveTempArchive: + // this event only occurs when saving an SFX file + TempArchiveSaved(); + break; + } + if (_saveCanceled) + e.Cancel = true; + } + + + + private void StepArchiveProgress(SaveProgressEventArgs e) + { + if (this.progressBar1.InvokeRequired) + { + this.progressBar1.Invoke(new SaveEntryProgress(this.StepArchiveProgress), new object[] { e }); + } + else + { + if (!_saveCanceled) + { + _nFilesCompleted++; + this.progressBar1.PerformStep(); + _totalBytesAfterCompress += e.CurrentEntry.CompressedSize; + _totalBytesBeforeCompress += e.CurrentEntry.UncompressedSize; + + // reset the progress bar for the entry: + this.progressBar2.Value = this.progressBar2.Maximum = 1; + + this.Update(); + } + } + } + + + private void StepEntryProgress(SaveProgressEventArgs e) + { + if (this.progressBar2.InvokeRequired) + { + this.progressBar2.Invoke(new SaveEntryProgress(this.StepEntryProgress), new object[] { e }); + } + else + { + if (!_saveCanceled) + { + if (this.progressBar2.Maximum == 1) + { + // reset + Int64 max = e.TotalBytesToTransfer; + _progress2MaxFactor = 0; + while (max > System.Int32.MaxValue) + { + max /= 2; + _progress2MaxFactor++; + } + this.progressBar2.Maximum = (int)max; + lblStatus.Text = String.Format("{0} of {1} files...({2})", + _nFilesCompleted + 1, _entriesToZip, e.CurrentEntry.FileName); + } + + int xferred = e.BytesTransferred >> _progress2MaxFactor; + + this.progressBar2.Value = (xferred >= this.progressBar2.Maximum) + ? this.progressBar2.Maximum + : xferred; + + this.Update(); + } + } + } + + private void SaveCompleted() + { + if (this.lblStatus.InvokeRequired) + { + this.lblStatus.Invoke(new MethodInvoker(this.SaveCompleted)); + } + else + { + lblStatus.Text = String.Format("Done, Compressed {0} files, {1:N0}% of original.", + _nFilesCompleted, (100.00 * _totalBytesAfterCompress) / _totalBytesBeforeCompress); + ResetState(); + } + } + + private void ResetState() + { + this.btnCancel.Enabled = false; + this.btnOk.Enabled = true; + this.btnOk.Text = "Zip it!"; + this.progressBar1.Value = 0; + this.progressBar2.Value = 0; + this.Cursor = Cursors.Default; + if (!_workerThread.IsAlive) + _workerThread.Join(); + } + + + + + + + + + + + An event handler invoked before, during, and after the reading of a zip archive. + + + + + Depending on the particular event being signaled, different properties on the + parameter are set. The following table + summarizes the available EventTypes and the conditions under which this + event handler is invoked with a ReadProgressEventArgs with the given EventType. + + + + + value of EntryType + Meaning and conditions + + + + ZipProgressEventType.Reading_Started + Fired just as ZipFile.Read() begins. Meaningful properties: ArchiveName. + + + + + ZipProgressEventType.Reading_Completed + Fired when ZipFile.Read() has completed. Meaningful properties: ArchiveName. + + + + + ZipProgressEventType.Reading_ArchiveBytesRead + Fired while reading, updates the number of bytes read for the entire archive. + Meaningful properties: ArchiveName, CurrentEntry, BytesTransferred, TotalBytesToTransfer. + + + + + ZipProgressEventType.Reading_BeforeReadEntry + Indicates an entry is about to be read from the archive. + Meaningful properties: ArchiveName, EntriesTotal. + + + + + ZipProgressEventType.Reading_AfterReadEntry + Indicates an entry has just been read from the archive. + Meaningful properties: ArchiveName, EntriesTotal, CurrentEntry. + + + + + + + + + + + + + An event handler invoked before, during, and after extraction of + entries in the zip archive. + + + + + Depending on the particular event, different properties on the parameter are set. The following + table summarizes the available EventTypes and the conditions under + which this event handler is invoked with a + ExtractProgressEventArgs with the given EventType. + + + + + value of EntryType + Meaning and conditions + + + + ZipProgressEventType.Extracting_BeforeExtractAll + + Set when ExtractAll() begins. The ArchiveName, Overwrite, and + ExtractLocation properties are meaningful. + + + + ZipProgressEventType.Extracting_AfterExtractAll + + Set when ExtractAll() has completed. The ArchiveName, Overwrite, + and ExtractLocation properties are meaningful. + + + + + ZipProgressEventType.Extracting_BeforeExtractEntry + + Set when an Extract() on an entry in the ZipFile has begun. + Properties that are meaningful: ArchiveName, EntriesTotal, + CurrentEntry, Overwrite, ExtractLocation, EntriesExtracted. + + + + + ZipProgressEventType.Extracting_AfterExtractEntry + + Set when an Extract() on an entry in the ZipFile has completed. + Properties that are meaningful: ArchiveName, EntriesTotal, + CurrentEntry, Overwrite, ExtractLocation, EntriesExtracted. + + + + + ZipProgressEventType.Extracting_EntryBytesWritten + + Set within a call to Extract() on an entry in the ZipFile, as data + is extracted for the entry. Properties that are meaningful: + ArchiveName, CurrentEntry, BytesTransferred, TotalBytesToTransfer. + + + + + ZipProgressEventType.Extracting_ExtractEntryWouldOverwrite + + Set within a call to Extract() on an entry in the ZipFile, when the + extraction would overwrite an existing file. This event type is used + only when ExtractExistingFileAction on the ZipFile or + ZipEntry is set to InvokeExtractProgressEvent. + + + + + + + + + + private static bool justHadByteUpdate = false; + public static void ExtractProgress(object sender, ExtractProgressEventArgs e) + { + if(e.EventType == ZipProgressEventType.Extracting_EntryBytesWritten) + { + if (justHadByteUpdate) + Console.SetCursorPosition(0, Console.CursorTop); + + Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, e.TotalBytesToTransfer, + e.BytesTransferred / (0.01 * e.TotalBytesToTransfer )); + justHadByteUpdate = true; + } + else if(e.EventType == ZipProgressEventType.Extracting_BeforeExtractEntry) + { + if (justHadByteUpdate) + Console.WriteLine(); + Console.WriteLine("Extracting: {0}", e.CurrentEntry.FileName); + justHadByteUpdate= false; + } + } + + public static ExtractZip(string zipToExtract, string directory) + { + string TargetDirectory= "extract"; + using (var zip = ZipFile.Read(zipToExtract)) { + zip.ExtractProgress += ExtractProgress; + foreach (var e in zip1) + { + e.Extract(TargetDirectory, true); + } + } + } + + + + Public Shared Sub Main(ByVal args As String()) + Dim ZipToUnpack As String = "C1P3SML.zip" + Dim TargetDir As String = "ExtractTest_Extract" + Console.WriteLine("Extracting file {0} to {1}", ZipToUnpack, TargetDir) + Using zip1 As ZipFile = ZipFile.Read(ZipToUnpack) + AddHandler zip1.ExtractProgress, AddressOf MyExtractProgress + Dim e As ZipEntry + For Each e In zip1 + e.Extract(TargetDir, True) + Next + End Using + End Sub + + Private Shared justHadByteUpdate As Boolean = False + + Public Shared Sub MyExtractProgress(ByVal sender As Object, ByVal e As ExtractProgressEventArgs) + If (e.EventType = ZipProgressEventType.Extracting_EntryBytesWritten) Then + If ExtractTest.justHadByteUpdate Then + Console.SetCursorPosition(0, Console.CursorTop) + End If + Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, e.TotalBytesToTransfer, (CDbl(e.BytesTransferred) / (0.01 * e.TotalBytesToTransfer))) + ExtractTest.justHadByteUpdate = True + ElseIf (e.EventType = ZipProgressEventType.Extracting_BeforeExtractEntry) Then + If ExtractTest.justHadByteUpdate Then + Console.WriteLine + End If + Console.WriteLine("Extracting: {0}", e.CurrentEntry.FileName) + ExtractTest.justHadByteUpdate = False + End If + End Sub + + + + + + + + + + An event handler invoked before, during, and after Adding entries to a zip archive. + + + + Adding a large number of entries to a zip file can take a long + time. For example, when calling on a + directory that contains 50,000 files, it could take 3 minutes or so. + This event handler allws an application to track the progress of the Add + operation, and to optionally cancel a lengthy Add operation. + + + + + + int _numEntriesToAdd= 0; + int _numEntriesAdded= 0; + void AddProgressHandler(object sender, AddProgressEventArgs e) + { + switch (e.EventType) + { + case ZipProgressEventType.Adding_Started: + Console.WriteLine("Adding files to the zip..."); + break; + case ZipProgressEventType.Adding_AfterAddEntry: + _numEntriesAdded++; + Console.WriteLine(String.Format("Adding file {0}/{1} :: {2}", + _numEntriesAdded, _numEntriesToAdd, e.CurrentEntry.FileName)); + break; + case ZipProgressEventType.Adding_Completed: + Console.WriteLine("Added all files"); + break; + } + } + + void CreateTheZip() + { + using (ZipFile zip = new ZipFile()) + { + zip.AddProgress += AddProgressHandler; + zip.AddDirectory(System.IO.Path.GetFileName(DirToZip)); + zip.Save(ZipFileToCreate); + } + } + + + + + + Private Sub AddProgressHandler(ByVal sender As Object, ByVal e As AddProgressEventArgs) + Select Case e.EventType + Case ZipProgressEventType.Adding_Started + Console.WriteLine("Adding files to the zip...") + Exit Select + Case ZipProgressEventType.Adding_AfterAddEntry + Console.WriteLine(String.Format("Adding file {0}", e.CurrentEntry.FileName)) + Exit Select + Case ZipProgressEventType.Adding_Completed + Console.WriteLine("Added all files") + Exit Select + End Select + End Sub + + Sub CreateTheZip() + Using zip as ZipFile = New ZipFile + AddHandler zip.AddProgress, AddressOf AddProgressHandler + zip.AddDirectory(System.IO.Path.GetFileName(DirToZip)) + zip.Save(ZipFileToCreate); + End Using + End Sub + + + + + + + + + + + + An event that is raised when an error occurs during open or read of files + while saving a zip archive. + + + + + Errors can occur as a file is being saved to the zip archive. For + example, the File.Open may fail, or a File.Read may fail, because of + lock conflicts or other reasons. If you add a handler to this event, + you can handle such errors in your own code. If you don't add a + handler, the library will throw an exception if it encounters an I/O + error during a call to Save(). + + + + Setting a handler implicitly sets to + ZipErrorAction.InvokeErrorEvent. + + + + The handler you add applies to all items that are + subsequently added to the ZipFile instance. If you set this + property after you have added items to the ZipFile, but before you + have called Save(), errors that occur while saving those items + will not cause the error handler to be invoked. + + + + If you want to handle any errors that occur with any entry in the zip + file using the same error handler, then add your error handler once, + before adding any entries to the zip archive. + + + + In the error handler method, you need to set the property on the + ZipErrorEventArgs.CurrentEntry. This communicates back to + DotNetZip what you would like to do with this particular error. Within + an error handler, if you set the ZipEntry.ZipErrorAction property + on the ZipEntry to ZipErrorAction.InvokeErrorEvent or if + you don't set it at all, the library will throw the exception. (It is the + same as if you had set the ZipEntry.ZipErrorAction property on the + ZipEntry to ZipErrorAction.Throw.) If you set the + ZipErrorEventArgs.Cancel to true, the entire Save() will be + canceled. + + + + In the case that you use ZipErrorAction.Skip, implying that + you want to skip the entry for which there's been an error, DotNetZip + tries to seek backwards in the output stream, and truncate all bytes + written on behalf of that particular entry. This works only if the + output stream is seekable. It will not work, for example, when using + ASPNET's Response.OutputStream. + + + + + + + This example shows how to use an event handler to handle + errors during save of the zip file. + + + public static void MyZipError(object sender, ZipErrorEventArgs e) + { + Console.WriteLine("Error saving {0}...", e.FileName); + Console.WriteLine(" Exception: {0}", e.exception); + ZipEntry entry = e.CurrentEntry; + string response = null; + // Ask the user whether he wants to skip this error or not + do + { + Console.Write("Retry, Skip, Throw, or Cancel ? (R/S/T/C) "); + response = Console.ReadLine(); + Console.WriteLine(); + + } while (response != null && + response[0]!='S' && response[0]!='s' && + response[0]!='R' && response[0]!='r' && + response[0]!='T' && response[0]!='t' && + response[0]!='C' && response[0]!='c'); + + e.Cancel = (response[0]=='C' || response[0]=='c'); + + if (response[0]=='S' || response[0]=='s') + entry.ZipErrorAction = ZipErrorAction.Skip; + else if (response[0]=='R' || response[0]=='r') + entry.ZipErrorAction = ZipErrorAction.Retry; + else if (response[0]=='T' || response[0]=='t') + entry.ZipErrorAction = ZipErrorAction.Throw; + } + + public void SaveTheFile() + { + string directoryToZip = "fodder"; + string directoryInArchive = "files"; + string zipFileToCreate = "Archive.zip"; + using (var zip = new ZipFile()) + { + // set the event handler before adding any entries + zip.ZipError += MyZipError; + zip.AddDirectory(directoryToZip, directoryInArchive); + zip.Save(zipFileToCreate); + } + } + + + + Private Sub MyZipError(ByVal sender As Object, ByVal e As Ionic.Zip.ZipErrorEventArgs) + ' At this point, the application could prompt the user for an action to take. + ' But in this case, this application will simply automatically skip the file, in case of error. + Console.WriteLine("Zip Error, entry {0}", e.CurrentEntry.FileName) + Console.WriteLine(" Exception: {0}", e.exception) + ' set the desired ZipErrorAction on the CurrentEntry to communicate that to DotNetZip + e.CurrentEntry.ZipErrorAction = Zip.ZipErrorAction.Skip + End Sub + + Public Sub SaveTheFile() + Dim directoryToZip As String = "fodder" + Dim directoryInArchive As String = "files" + Dim zipFileToCreate as String = "Archive.zip" + Using zipArchive As ZipFile = New ZipFile + ' set the event handler before adding any entries + AddHandler zipArchive.ZipError, AddressOf MyZipError + zipArchive.AddDirectory(directoryToZip, directoryInArchive) + zipArchive.Save(zipFileToCreate) + End Using + End Sub + + + + + + + + + Extracts all of the items in the zip archive, to the specified path in the + filesystem. The path can be relative or fully-qualified. + + + + + This method will extract all entries in the ZipFile to the + specified path. + + + + If an extraction of a file from the zip archive would overwrite an + existing file in the filesystem, the action taken is dictated by the + ExtractExistingFile property, which overrides any setting you may have + made on individual ZipEntry instances. By default, if you have not + set that property on the ZipFile instance, the entry will not + be extracted, the existing file will not be overwritten and an + exception will be thrown. To change this, set the property, or use the + overload that allows you to + specify an ExtractExistingFileAction parameter. + + + + The action to take when an extract would overwrite an existing file + applies to all entries. If you want to set this on a per-entry basis, + then you must use one of the ZipEntry.Extract methods. + + + + This method will send verbose output messages to the , if it is set on the ZipFile + instance. + + + + You may wish to take advantage of the ExtractProgress event. + + + + About timestamps: When extracting a file entry from a zip archive, the + extracted file gets the last modified time of the entry as stored in + the archive. The archive may also store extended file timestamp + information, including last accessed and created times. If these are + present in the ZipEntry, then the extracted file will also get + these times. + + + + A Directory entry is somewhat different. It will get the times as + described for a file entry, but, if there are file entries in the zip + archive that, when extracted, appear in the just-created directory, + then when those file entries are extracted, the last modified and last + accessed times of the directory will change, as a side effect. The + result is that after an extraction of a directory and a number of + files within the directory, the last modified and last accessed + timestamps on the directory will reflect the time that the last file + was extracted into the directory, rather than the time stored in the + zip archive for the directory. + + + + To compensate, when extracting an archive with ExtractAll, + DotNetZip will extract all the file and directory entries as described + above, but it will then make a second pass on the directories, and + reset the times on the directories to reflect what is stored in the + zip archive. + + + + This compensation is performed only within the context of an + ExtractAll. If you call ZipEntry.Extract on a directory + entry, the timestamps on directory in the filesystem will reflect the + times stored in the zip. If you then call ZipEntry.Extract on + a file entry, which is extracted into the directory, the timestamps on + the directory will be updated to the current time. + + + + + This example extracts all the entries in a zip archive file, to the + specified target directory. The extraction will overwrite any + existing files silently. + + + String TargetDirectory= "unpack"; + using(ZipFile zip= ZipFile.Read(ZipFileToExtract)) + { + zip.ExtractExistingFile= ExtractExistingFileAction.OverwriteSilently; + zip.ExtractAll(TargetDirectory); + } + + + + Dim TargetDirectory As String = "unpack" + Using zip As ZipFile = ZipFile.Read(ZipFileToExtract) + zip.ExtractExistingFile= ExtractExistingFileAction.OverwriteSilently + zip.ExtractAll(TargetDirectory) + End Using + + + + + + + + The path to which the contents of the zipfile will be extracted. + The path can be relative or fully-qualified. + + + + + + Extracts all of the items in the zip archive, to the specified path in the + filesystem, using the specified behavior when extraction would overwrite an + existing file. + + + + + + This method will extract all entries in the ZipFile to the specified + path. For an extraction that would overwrite an existing file, the behavior + is dictated by , which overrides any + setting you may have made on individual ZipEntry instances. + + + + The action to take when an extract would overwrite an existing file + applies to all entries. If you want to set this on a per-entry basis, + then you must use or one of the similar methods. + + + + Calling this method is equivalent to setting the property and then calling . + + + + This method will send verbose output messages to the + , if it is set on the ZipFile instance. + + + + + This example extracts all the entries in a zip archive file, to the + specified target directory. It does not overwrite any existing files. + + String TargetDirectory= "c:\\unpack"; + using(ZipFile zip= ZipFile.Read(ZipFileToExtract)) + { + zip.ExtractAll(TargetDirectory, ExtractExistingFileAction.DontOverwrite); + } + + + + Dim TargetDirectory As String = "c:\unpack" + Using zip As ZipFile = ZipFile.Read(ZipFileToExtract) + zip.ExtractAll(TargetDirectory, ExtractExistingFileAction.DontOverwrite) + End Using + + + + + The path to which the contents of the zipfile will be extracted. + The path can be relative or fully-qualified. + + + + The action to take if extraction would overwrite an existing file. + + + + + + Reads a zip file archive and returns the instance. + + + + + The stream is read using the default System.Text.Encoding, which is the + IBM437 codepage. + + + + + Thrown if the ZipFile cannot be read. The implementation of this method + relies on System.IO.File.OpenRead, which can throw a variety of exceptions, + including specific exceptions if a file is not found, an unauthorized access + exception, exceptions for poorly formatted filenames, and so on. + + + + The name of the zip archive to open. This can be a fully-qualified or relative + pathname. + + + . + + The instance read from the zip archive. + + + + + Reads a zip file archive from the named filesystem file using the + specified options. + + + + + This version of the Read() method allows the caller to pass + in a TextWriter an Encoding, via an instance of the + ReadOptions class. The ZipFile is read in using the + specified encoding for entries where UTF-8 encoding is not + explicitly specified. + + + + + + + This example shows how to read a zip file using the Big-5 Chinese + code page (950), and extract each entry in the zip file, while + sending status messages out to the Console. + + + + For this code to work as intended, the zipfile must have been + created using the big5 code page (CP950). This is typical, for + example, when using WinRar on a machine with CP950 set as the + default code page. In that case, the names of entries within the + Zip archive will be stored in that code page, and reading the zip + archive must be done using that code page. If the application did + not use the correct code page in ZipFile.Read(), then names of + entries within the zip archive would not be correctly retrieved. + + + + string zipToExtract = "MyArchive.zip"; + string extractDirectory = "extract"; + var options = new ReadOptions + { + StatusMessageWriter = System.Console.Out, + Encoding = System.Text.Encoding.GetEncoding(950) + }; + using (ZipFile zip = ZipFile.Read(zipToExtract, options)) + { + foreach (ZipEntry e in zip) + { + e.Extract(extractDirectory); + } + } + + + + + Dim zipToExtract as String = "MyArchive.zip" + Dim extractDirectory as String = "extract" + Dim options as New ReadOptions + options.Encoding = System.Text.Encoding.GetEncoding(950) + options.StatusMessageWriter = System.Console.Out + Using zip As ZipFile = ZipFile.Read(zipToExtract, options) + Dim e As ZipEntry + For Each e In zip + e.Extract(extractDirectory) + Next + End Using + + + + + + + + This example shows how to read a zip file using the default + code page, to remove entries that have a modified date before a given threshold, + sending status messages out to a StringWriter. + + + + var options = new ReadOptions + { + StatusMessageWriter = new System.IO.StringWriter() + }; + using (ZipFile zip = ZipFile.Read("PackedDocuments.zip", options)) + { + var Threshold = new DateTime(2007,7,4); + // We cannot remove the entry from the list, within the context of + // an enumeration of said list. + // So we add the doomed entry to a list to be removed later. + // pass 1: mark the entries for removal + var MarkedEntries = new System.Collections.Generic.List<ZipEntry>(); + foreach (ZipEntry e in zip) + { + if (e.LastModified < Threshold) + MarkedEntries.Add(e); + } + // pass 2: actually remove the entry. + foreach (ZipEntry zombie in MarkedEntries) + zip.RemoveEntry(zombie); + zip.Comment = "This archive has been updated."; + zip.Save(); + } + // can now use contents of sw, eg store in an audit log + + + + Dim options as New ReadOptions + options.StatusMessageWriter = New System.IO.StringWriter + Using zip As ZipFile = ZipFile.Read("PackedDocuments.zip", options) + Dim Threshold As New DateTime(2007, 7, 4) + ' We cannot remove the entry from the list, within the context of + ' an enumeration of said list. + ' So we add the doomed entry to a list to be removed later. + ' pass 1: mark the entries for removal + Dim MarkedEntries As New System.Collections.Generic.List(Of ZipEntry) + Dim e As ZipEntry + For Each e In zip + If (e.LastModified < Threshold) Then + MarkedEntries.Add(e) + End If + Next + ' pass 2: actually remove the entry. + Dim zombie As ZipEntry + For Each zombie In MarkedEntries + zip.RemoveEntry(zombie) + Next + zip.Comment = "This archive has been updated." + zip.Save + End Using + ' can now use contents of sw, eg store in an audit log + + + + + Thrown if the zipfile cannot be read. The implementation of + this method relies on System.IO.File.OpenRead, which + can throw a variety of exceptions, including specific + exceptions if a file is not found, an unauthorized access + exception, exceptions for poorly formatted filenames, and so + on. + + + + The name of the zip archive to open. + This can be a fully-qualified or relative pathname. + + + + The set of options to use when reading the zip file. + + + The ZipFile instance read from the zip archive. + + + + + + + Reads a zip file archive using the specified text encoding, the specified + TextWriter for status messages, and the specified ReadProgress event handler, + and returns the instance. + + + + The name of the zip archive to open. + This can be a fully-qualified or relative pathname. + + + + An event handler for Read operations. + + + + The System.IO.TextWriter to use for writing verbose status messages + during operations on the zip archive. A console application may wish to + pass System.Console.Out to get messages on the Console. A graphical + or headless application may wish to capture the messages in a different + TextWriter, such as a System.IO.StringWriter. + + + + The System.Text.Encoding to use when reading in the zip archive. Be + careful specifying the encoding. If the value you use here is not the same + as the Encoding used when the zip archive was created (possibly by a + different archiver) you will get unexpected results and possibly exceptions. + + + The instance read from the zip archive. + + + + + Reads a zip archive from a stream. + + + + + + When reading from a file, it's probably easier to just use + ZipFile.Read(String, ReadOptions). This + overload is useful when when the zip archive content is + available from an already-open stream. The stream must be + open and readable and seekable when calling this method. The + stream is left open when the reading is completed. + + + + Using this overload, the stream is read using the default + System.Text.Encoding, which is the IBM437 + codepage. If you want to specify the encoding to use when + reading the zipfile content, see + ZipFile.Read(Stream, ReadOptions). This + + + + Reading of zip content begins at the current position in the + stream. This means if you have a stream that concatenates + regular data and zip data, if you position the open, readable + stream at the start of the zip data, you will be able to read + the zip archive using this constructor, or any of the ZipFile + constructors that accept a as + input. Some examples of where this might be useful: the zip + content is concatenated at the end of a regular EXE file, as + some self-extracting archives do. (Note: SFX files produced + by DotNetZip do not work this way; they can be read as normal + ZIP files). Another example might be a stream being read from + a database, where the zip content is embedded within an + aggregate stream of data. + + + + + + + This example shows how to Read zip content from a stream, and + extract one entry into a different stream. In this example, + the filename "NameOfEntryInArchive.doc", refers only to the + name of the entry within the zip archive. A file by that + name is not created in the filesystem. The I/O is done + strictly with the given streams. + + + + using (ZipFile zip = ZipFile.Read(InputStream)) + { + zip.Extract("NameOfEntryInArchive.doc", OutputStream); + } + + + + Using zip as ZipFile = ZipFile.Read(InputStream) + zip.Extract("NameOfEntryInArchive.doc", OutputStream) + End Using + + + + the stream containing the zip data. + + The ZipFile instance read from the stream + + + + + Reads a zip file archive from the given stream using the + specified options. + + + + + + When reading from a file, it's probably easier to just use + ZipFile.Read(String, ReadOptions). This + overload is useful when when the zip archive content is + available from an already-open stream. The stream must be + open and readable and seekable when calling this method. The + stream is left open when the reading is completed. + + + + Reading of zip content begins at the current position in the + stream. This means if you have a stream that concatenates + regular data and zip data, if you position the open, readable + stream at the start of the zip data, you will be able to read + the zip archive using this constructor, or any of the ZipFile + constructors that accept a as + input. Some examples of where this might be useful: the zip + content is concatenated at the end of a regular EXE file, as + some self-extracting archives do. (Note: SFX files produced + by DotNetZip do not work this way; they can be read as normal + ZIP files). Another example might be a stream being read from + a database, where the zip content is embedded within an + aggregate stream of data. + + + + the stream containing the zip data. + + + The set of options to use when reading the zip file. + + + + Thrown if the zip archive cannot be read. + + + The ZipFile instance read from the stream. + + + + + + + Reads a zip archive from a stream, using the specified text Encoding, the + specified TextWriter for status messages, + and the specified ReadProgress event handler. + + + + + Reading of zip content begins at the current position in the stream. This + means if you have a stream that concatenates regular data and zip data, if + you position the open, readable stream at the start of the zip data, you + will be able to read the zip archive using this constructor, or any of the + ZipFile constructors that accept a as + input. Some examples of where this might be useful: the zip content is + concatenated at the end of a regular EXE file, as some self-extracting + archives do. (Note: SFX files produced by DotNetZip do not work this + way). Another example might be a stream being read from a database, where + the zip content is embedded within an aggregate stream of data. + + + + the stream containing the zip data. + + + The System.IO.TextWriter to which verbose status messages are written + during operations on the ZipFile. For example, in a console + application, System.Console.Out works, and will get a message for each entry + added to the ZipFile. If the TextWriter is null, no verbose messages + are written. + + + + The text encoding to use when reading entries that do not have the UTF-8 + encoding bit set. Be careful specifying the encoding. If the value you use + here is not the same as the Encoding used when the zip archive was created + (possibly by a different archiver) you will get unexpected results and + possibly exceptions. See the + property for more information. + + + + An event handler for Read operations. + + + an instance of ZipFile + + + + Checks the given file to see if it appears to be a valid zip file. + + + + + Calling this method is equivalent to calling with the testExtract parameter set to false. + + + + The file to check. + true if the file appears to be a zip file. + + + + Checks a file to see if it is a valid zip file. + + + + + This method opens the specified zip file, reads in the zip archive, + verifying the ZIP metadata as it reads. + + + + If everything succeeds, then the method returns true. If anything fails - + for example if an incorrect signature or CRC is found, indicating a + corrupt file, the the method returns false. This method also returns + false for a file that does not exist. + + + + If is true, as part of its check, this + method reads in the content for each entry, expands it, and checks CRCs. + This provides an additional check beyond verifying the zip header and + directory data. + + + + If is true, and if any of the zip entries + are protected with a password, this method will return false. If you want + to verify a ZipFile that has entries which are protected with a + password, you will need to do that manually. + + + + + The zip file to check. + true if the caller wants to extract each entry. + true if the file contains a valid zip file. + + + + Checks a stream to see if it contains a valid zip archive. + + + + + This method reads the zip archive contained in the specified stream, verifying + the ZIP metadata as it reads. If testExtract is true, this method also extracts + each entry in the archive, dumping all the bits into . + + + + If everything succeeds, then the method returns true. If anything fails - + for example if an incorrect signature or CRC is found, indicating a corrupt + file, the the method returns false. This method also returns false for a + file that does not exist. + + + + If testExtract is true, this method reads in the content for each + entry, expands it, and checks CRCs. This provides an additional check + beyond verifying the zip header data. + + + + If testExtract is true, and if any of the zip entries are protected + with a password, this method will return false. If you want to verify a + ZipFile that has entries which are protected with a password, you will need + to do that manually. + + + + + + The stream to check. + true if the caller wants to extract each entry. + true if the stream contains a valid zip archive. + + + + Delete file with retry on UnauthorizedAccessException. + + + + + When calling File.Delete() on a file that has been "recently" + created, the call sometimes fails with + UnauthorizedAccessException. This method simply retries the Delete 3 + times with a sleep between tries. + + + + the name of the file to be deleted + + + + Saves the Zip archive to a file, specified by the Name property of the + ZipFile. + + + + + The ZipFile instance is written to storage, typically a zip file + in a filesystem, only when the caller calls Save. In the typical + case, the Save operation writes the zip content to a temporary file, and + then renames the temporary file to the desired name. If necessary, this + method will delete a pre-existing file before the rename. + + + + The property is specified either explicitly, + or implicitly using one of the parameterized ZipFile constructors. For + COM Automation clients, the Name property must be set explicitly, + because COM Automation clients cannot call parameterized constructors. + + + + When using a filesystem file for the Zip output, it is possible to call + Save multiple times on the ZipFile instance. With each + call the zip content is re-written to the same output file. + + + + Data for entries that have been added to the ZipFile instance is + written to the output when the Save method is called. This means + that the input streams for those entries must be available at the time + the application calls Save. If, for example, the application + adds entries with AddEntry using a dynamically-allocated + MemoryStream, the memory stream must not have been disposed + before the call to Save. See the property for more discussion of the + availability requirements of the input stream for an entry, and an + approach for providing just-in-time stream lifecycle management. + + + + + + + + Thrown if you haven't specified a location or stream for saving the zip, + either in the constructor or by setting the Name property, or if you try + to save a regular zip archive to a filename with a .exe extension. + + + + Thrown if is non-zero, and the number + of segments that would be generated for the spanned zip file during the + save operation exceeds 99. If this happens, you need to increase the + segment size. + + + + + + Save the file to a new zipfile, with the given name. + + + + + This method allows the application to explicitly specify the name of the zip + file when saving. Use this when creating a new zip file, or when + updating a zip archive. + + + + An application can also save a zip archive in several places by calling this + method multiple times in succession, with different filenames. + + + + The ZipFile instance is written to storage, typically a zip file in a + filesystem, only when the caller calls Save. The Save operation writes + the zip content to a temporary file, and then renames the temporary file + to the desired name. If necessary, this method will delete a pre-existing file + before the rename. + + + + + + Thrown if you specify a directory for the filename. + + + + The name of the zip archive to save to. Existing files will + be overwritten with great prejudice. + + + + This example shows how to create and Save a zip file. + + using (ZipFile zip = new ZipFile()) + { + zip.AddDirectory(@"c:\reports\January"); + zip.Save("January.zip"); + } + + + + Using zip As New ZipFile() + zip.AddDirectory("c:\reports\January") + zip.Save("January.zip") + End Using + + + + + + This example shows how to update a zip file. + + using (ZipFile zip = ZipFile.Read("ExistingArchive.zip")) + { + zip.AddFile("NewData.csv"); + zip.Save("UpdatedArchive.zip"); + } + + + + Using zip As ZipFile = ZipFile.Read("ExistingArchive.zip") + zip.AddFile("NewData.csv") + zip.Save("UpdatedArchive.zip") + End Using + + + + + + + Save the zip archive to the specified stream. + + + + + The ZipFile instance is written to storage - typically a zip file + in a filesystem, but using this overload, the storage can be anything + accessible via a writable stream - only when the caller calls Save. + + + + Use this method to save the zip content to a stream directly. A common + scenario is an ASP.NET application that dynamically generates a zip file + and allows the browser to download it. The application can call + Save(Response.OutputStream) to write a zipfile directly to the + output stream, without creating a zip file on the disk on the ASP.NET + server. + + + + Be careful when saving a file to a non-seekable stream, including + Response.OutputStream. When DotNetZip writes to a non-seekable + stream, the zip archive is formatted in such a way that may not be + compatible with all zip tools on all platforms. It's a perfectly legal + and compliant zip file, but some people have reported problems opening + files produced this way using the Mac OS archive utility. + + + + + + + This example saves the zipfile content into a MemoryStream, and + then gets the array of bytes from that MemoryStream. + + + using (var zip = new Ionic.Zip.ZipFile()) + { + zip.CompressionLevel= Ionic.Zlib.CompressionLevel.BestCompression; + zip.Password = "VerySecret."; + zip.Encryption = EncryptionAlgorithm.WinZipAes128; + zip.AddFile(sourceFileName); + MemoryStream output = new MemoryStream(); + zip.Save(output); + + byte[] zipbytes = output.ToArray(); + } + + + + + + This example shows a pitfall you should avoid. DO NOT read + from a stream, then try to save to the same stream. DO + NOT DO THIS: + + + + using (var fs = new FileSteeam(filename, FileMode.Open)) + { + using (var zip = Ionic.Zip.ZipFile.Read(inputStream)) + { + zip.AddEntry("Name1.txt", "this is the content"); + zip.Save(inputStream); // NO NO NO!! + } + } + + + + Better like this: + + + + using (var zip = Ionic.Zip.ZipFile.Read(filename)) + { + zip.AddEntry("Name1.txt", "this is the content"); + zip.Save(); // YES! + } + + + + + + The System.IO.Stream to write to. It must be + writable. If you created the ZipFile instanct by calling + ZipFile.Read(), this stream must not be the same stream + you passed to ZipFile.Read(). + + + + + Saves the ZipFile instance to a self-extracting zip archive. + + + + + + The generated exe image will execute on any machine that has the .NET + Framework 2.0 installed on it. The generated exe image is also a + valid ZIP file, readable with DotNetZip or another Zip library or tool + such as WinZip. + + + + There are two "flavors" of self-extracting archive. The + WinFormsApplication version will pop up a GUI and allow the + user to select a target directory into which to extract. There's also + a checkbox allowing the user to specify to overwrite existing files, + and another checkbox to allow the user to request that Explorer be + opened to see the extracted files after extraction. The other flavor + is ConsoleApplication. A self-extractor generated with that + flavor setting will run from the command line. It accepts command-line + options to set the overwrite behavior, and to specify the target + extraction directory. + + + + There are a few temporary files created during the saving to a + self-extracting zip. These files are created in the directory pointed + to by , which defaults to . These temporary files are + removed upon successful completion of this method. + + + + When a user runs the WinForms SFX, the user's personal directory (Environment.SpecialFolder.Personal) + will be used as the default extract location. If you want to set the + default extract location, you should use the other overload of + SaveSelfExtractor()/ The user who runs the SFX will have the + opportunity to change the extract directory before extracting. When + the user runs the Command-Line SFX, the user must explicitly specify + the directory to which to extract. The .NET Framework 2.0 is required + on the computer when the self-extracting archive is run. + + + + NB: This method is not available in the version of DotNetZip build for + the .NET Compact Framework, nor in the "Reduced" DotNetZip library. + + + + + + + string DirectoryPath = "c:\\Documents\\Project7"; + using (ZipFile zip = new ZipFile()) + { + zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)); + zip.Comment = "This will be embedded into a self-extracting console-based exe"; + zip.SaveSelfExtractor("archive.exe", SelfExtractorFlavor.ConsoleApplication); + } + + + Dim DirectoryPath As String = "c:\Documents\Project7" + Using zip As New ZipFile() + zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)) + zip.Comment = "This will be embedded into a self-extracting console-based exe" + zip.SaveSelfExtractor("archive.exe", SelfExtractorFlavor.ConsoleApplication) + End Using + + + + + a pathname, possibly fully qualified, to be created. Typically it + will end in an .exe extension. + + Indicates whether a Winforms or Console self-extractor is + desired. + + + + Saves the ZipFile instance to a self-extracting zip archive, using + the specified save options. + + + + + This method saves a self extracting archive, using the specified save + options. These options include the flavor of the SFX, the default extract + directory, the icon file, and so on. See the documentation + for for more + details. + + + + The user who runs the SFX will have the opportunity to change the extract + directory before extracting. If at the time of extraction, the specified + directory does not exist, the SFX will create the directory before + extracting the files. + + + + + + This example saves a WinForms-based self-extracting archive EXE that + will use c:\ExtractHere as the default extract location. The C# code + shows syntax for .NET 3.0, which uses an object initializer for + the SelfExtractorOptions object. + + string DirectoryPath = "c:\\Documents\\Project7"; + using (ZipFile zip = new ZipFile()) + { + zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)); + zip.Comment = "This will be embedded into a self-extracting WinForms-based exe"; + var options = new SelfExtractorOptions + { + Flavor = SelfExtractorFlavor.WinFormsApplication, + DefaultExtractDirectory = "%USERPROFILE%\\ExtractHere", + PostExtractCommandLine = ExeToRunAfterExtract, + SfxExeWindowTitle = "My Custom Window Title", + RemoveUnpackedFilesAfterExecute = true + }; + zip.SaveSelfExtractor("archive.exe", options); + } + + + Dim DirectoryPath As String = "c:\Documents\Project7" + Using zip As New ZipFile() + zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)) + zip.Comment = "This will be embedded into a self-extracting console-based exe" + Dim options As New SelfExtractorOptions() + options.Flavor = SelfExtractorFlavor.WinFormsApplication + options.DefaultExtractDirectory = "%USERPROFILE%\\ExtractHere" + options.PostExtractCommandLine = ExeToRunAfterExtract + options.SfxExeWindowTitle = "My Custom Window Title" + options.RemoveUnpackedFilesAfterExecute = True + zip.SaveSelfExtractor("archive.exe", options) + End Using + + + + The name of the EXE to generate. + provides the options for creating the + Self-extracting archive. + + + + Adds to the ZipFile a set of files from the current working directory on + disk, that conform to the specified criteria. + + + + + This method selects files from the the current working directory matching + the specified criteria, and adds them to the ZipFile. + + + + Specify the criteria in statements of 3 elements: a noun, an operator, and + a value. Consider the string "name != *.doc" . The noun is "name". The + operator is "!=", implying "Not Equal". The value is "*.doc". That + criterion, in English, says "all files with a name that does not end in + the .doc extension." + + + + Supported nouns include "name" (or "filename") for the filename; "atime", + "mtime", and "ctime" for last access time, last modfied time, and created + time of the file, respectively; "attributes" (or "attrs") for the file + attributes; "size" (or "length") for the file length (uncompressed), and + "type" for the type of object, either a file or a directory. The + "attributes", "name" and "type" nouns both support = and != as operators. + The "size", "atime", "mtime", and "ctime" nouns support = and !=, and + >, >=, <, <= as well. The times are taken to be expressed in + local time. + + + + Specify values for the file attributes as a string with one or more of the + characters H,R,S,A,I,L in any order, implying file attributes of Hidden, + ReadOnly, System, Archive, NotContextIndexed, and ReparsePoint (symbolic + link) respectively. + + + + To specify a time, use YYYY-MM-DD-HH:mm:ss or YYYY/MM/DD-HH:mm:ss as the + format. If you omit the HH:mm:ss portion, it is assumed to be 00:00:00 + (midnight). + + + + The value for a size criterion is expressed in integer quantities of bytes, + kilobytes (use k or kb after the number), megabytes (m or mb), or gigabytes + (g or gb). + + + + The value for a name is a pattern to match against the filename, potentially + including wildcards. The pattern follows CMD.exe glob rules: * implies one + or more of any character, while ? implies one character. If the name + pattern contains any slashes, it is matched to the entire filename, + including the path; otherwise, it is matched against only the filename + without the path. This means a pattern of "*\*.*" matches all files one + directory level deep, while a pattern of "*.*" matches all files in all + directories. + + + + To specify a name pattern that includes spaces, use single quotes around the + pattern. A pattern of "'* *.*'" will match all files that have spaces in + the filename. The full criteria string for that would be "name = '* *.*'" . + + + + The value for a type criterion is either F (implying a file) or D (implying + a directory). + + + + Some examples: + + + + + criteria + Files retrieved + + + + name != *.xls + any file with an extension that is not .xls + + + + + name = *.mp3 + any file with a .mp3 extension. + + + + + *.mp3 + (same as above) any file with a .mp3 extension. + + + + + attributes = A + all files whose attributes include the Archive bit. + + + + + attributes != H + all files whose attributes do not include the Hidden bit. + + + + + mtime > 2009-01-01 + all files with a last modified time after January 1st, 2009. + + + + + size > 2gb + all files whose uncompressed size is greater than 2gb. + + + + + type = D + all directories in the filesystem. + + + + + + You can combine criteria with the conjunctions AND or OR. Using a string + like "name = *.txt AND size >= 100k" for the selectionCriteria retrieves + entries whose names end in .txt, and whose uncompressed size is greater than + or equal to 100 kilobytes. + + + + For more complex combinations of criteria, you can use parenthesis to group + clauses in the boolean logic. Without parenthesis, the precedence of the + criterion atoms is determined by order of appearance. Unlike the C# + language, the AND conjunction does not take precendence over the logical OR. + This is important only in strings that contain 3 or more criterion atoms. + In other words, "name = *.txt and size > 1000 or attributes = H" implies + "((name = *.txt AND size > 1000) OR attributes = H)" while "attributes = + H OR name = *.txt and size > 1000" evaluates to "((attributes = H OR name + = *.txt) AND size > 1000)". When in doubt, use parenthesis. + + + + Using time properties requires some extra care. If you want to retrieve all + entries that were last updated on 2009 February 14, specify a time range + like so:"mtime >= 2009-02-14 AND mtime < 2009-02-15". Read this to + say: all files updated after 12:00am on February 14th, until 12:00am on + February 15th. You can use the same bracketing approach to specify any time + period - a year, a month, a week, and so on. + + + + The syntax allows one special case: if you provide a string with no spaces, it is + treated as a pattern to match for the filename. Therefore a string like "*.xls" + will be equivalent to specifying "name = *.xls". + + + + There is no logic in this method that insures that the file inclusion + criteria are internally consistent. For example, it's possible to specify + criteria that says the file must have a size of less than 100 bytes, as well + as a size that is greater than 1000 bytes. Obviously no file will ever + satisfy such criteria, but this method does not detect such logical + inconsistencies. The caller is responsible for insuring the criteria are + sensible. + + + + Using this method, the file selection does not recurse into + subdirectories, and the full path of the selected files is included in the + entries added into the zip archive. If you don't like these behaviors, + see the other overloads of this method. + + + + + This example zips up all *.csv files in the current working directory. + + using (ZipFile zip = new ZipFile()) + { + // To just match on filename wildcards, + // use the shorthand form of the selectionCriteria string. + zip.AddSelectedFiles("*.csv"); + zip.Save(PathToZipArchive); + } + + + Using zip As ZipFile = New ZipFile() + zip.AddSelectedFiles("*.csv") + zip.Save(PathToZipArchive) + End Using + + + + The criteria for file selection + + + + Adds to the ZipFile a set of files from the disk that conform to the + specified criteria, optionally recursing into subdirectories. + + + + + This method selects files from the the current working directory matching + the specified criteria, and adds them to the ZipFile. If + recurseDirectories is true, files are also selected from + subdirectories, and the directory structure in the filesystem is + reproduced in the zip archive, rooted at the current working directory. + + + + Using this method, the full path of the selected files is included in the + entries added into the zip archive. If you don't want this behavior, use + one of the overloads of this method that allows the specification of a + directoryInArchive. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + + + + This example zips up all *.xml files in the current working directory, or any + subdirectory, that are larger than 1mb. + + + using (ZipFile zip = new ZipFile()) + { + // Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.xml and size > 1024kb", true); + zip.Save(PathToZipArchive); + } + + + Using zip As ZipFile = New ZipFile() + ' Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.xml and size > 1024kb", true) + zip.Save(PathToZipArchive) + End Using + + + + The criteria for file selection + + + If true, the file selection will recurse into subdirectories. + + + + + Adds to the ZipFile a set of files from a specified directory in the + filesystem, that conform to the specified criteria. + + + + + This method selects files that conform to the specified criteria, from the + the specified directory on disk, and adds them to the ZipFile. The search + does not recurse into subdirectores. + + + + Using this method, the full filesystem path of the files on disk is + reproduced on the entries added to the zip file. If you don't want this + behavior, use one of the other overloads of this method. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + + + + This example zips up all *.xml files larger than 1mb in the directory + given by "d:\rawdata". + + + using (ZipFile zip = new ZipFile()) + { + // Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.xml and size > 1024kb", "d:\\rawdata"); + zip.Save(PathToZipArchive); + } + + + + Using zip As ZipFile = New ZipFile() + ' Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.xml and size > 1024kb", "d:\rawdata) + zip.Save(PathToZipArchive) + End Using + + + + The criteria for file selection + + + The name of the directory on the disk from which to select files. + + + + + Adds to the ZipFile a set of files from the specified directory on disk, + that conform to the specified criteria. + + + + + + This method selects files from the the specified disk directory matching + the specified selection criteria, and adds them to the ZipFile. If + recurseDirectories is true, files are also selected from + subdirectories. + + + + The full directory structure in the filesystem is reproduced on the + entries added to the zip archive. If you don't want this behavior, use + one of the overloads of this method that allows the specification of a + directoryInArchive. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + + + This example zips up all *.csv files in the "files" directory, or any + subdirectory, that have been saved since 2009 February 14th. + + + using (ZipFile zip = new ZipFile()) + { + // Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.csv and mtime > 2009-02-14", "files", true); + zip.Save(PathToZipArchive); + } + + + Using zip As ZipFile = New ZipFile() + ' Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.csv and mtime > 2009-02-14", "files", true) + zip.Save(PathToZipArchive) + End Using + + + + + This example zips up all files in the current working + directory, and all its child directories, except those in + the excludethis subdirectory. + + Using Zip As ZipFile = New ZipFile(zipfile) + Zip.AddSelectedFfiles("name != 'excludethis\*.*'", datapath, True) + Zip.Save() + End Using + + + + The criteria for file selection + + + The filesystem path from which to select files. + + + + If true, the file selection will recurse into subdirectories. + + + + + Adds to the ZipFile a selection of files from the specified directory on + disk, that conform to the specified criteria, and using a specified root + path for entries added to the zip archive. + + + + + This method selects files from the specified disk directory matching the + specified selection criteria, and adds those files to the ZipFile, using + the specified directory path in the archive. The search does not recurse + into subdirectories. For details on the syntax for the selectionCriteria + parameter, see . + + + + + + + This example zips up all *.psd files in the "photos" directory that have + been saved since 2009 February 14th, and puts them all in a zip file, + using the directory name of "content" in the zip archive itself. When the + zip archive is unzipped, the folder containing the .psd files will be + named "content". + + + using (ZipFile zip = new ZipFile()) + { + // Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.psd and mtime > 2009-02-14", "photos", "content"); + zip.Save(PathToZipArchive); + } + + + Using zip As ZipFile = New ZipFile + zip.AddSelectedFiles("name = *.psd and mtime > 2009-02-14", "photos", "content") + zip.Save(PathToZipArchive) + End Using + + + + + The criteria for selection of files to add to the ZipFile. + + + + The path to the directory in the filesystem from which to select files. + + + + Specifies a directory path to use to in place of the + directoryOnDisk. This path may, or may not, correspond to a real + directory in the current filesystem. If the files within the zip are + later extracted, this is the path used for the extracted file. Passing + null (nothing in VB) will use the path on the file name, if any; in other + words it would use directoryOnDisk, plus any subdirectory. Passing + the empty string ("") will insert the item at the root path within the + archive. + + + + + Adds to the ZipFile a selection of files from the specified directory on + disk, that conform to the specified criteria, optionally recursing through + subdirectories, and using a specified root path for entries added to the + zip archive. + + + + This method selects files from the specified disk directory that match the + specified selection criteria, and adds those files to the ZipFile, using + the specified directory path in the archive. If recurseDirectories + is true, files are also selected from subdirectories, and the directory + structure in the filesystem is reproduced in the zip archive, rooted at + the directory specified by directoryOnDisk. For details on the + syntax for the selectionCriteria parameter, see . + + + + + This example zips up all files that are NOT *.pst files, in the current + working directory and any subdirectories. + + + using (ZipFile zip = new ZipFile()) + { + zip.AddSelectedFiles("name != *.pst", SourceDirectory, "backup", true); + zip.Save(PathToZipArchive); + } + + + Using zip As ZipFile = New ZipFile + zip.AddSelectedFiles("name != *.pst", SourceDirectory, "backup", true) + zip.Save(PathToZipArchive) + End Using + + + + + The criteria for selection of files to add to the ZipFile. + + + + The path to the directory in the filesystem from which to select files. + + + + Specifies a directory path to use to in place of the + directoryOnDisk. This path may, or may not, correspond to a real + directory in the current filesystem. If the files within the zip are + later extracted, this is the path used for the extracted file. Passing + null (nothing in VB) will use the path on the file name, if any; in other + words it would use directoryOnDisk, plus any subdirectory. Passing + the empty string ("") will insert the item at the root path within the + archive. + + + + If true, the method also scans subdirectories for files matching the + criteria. + + + + + Updates the ZipFile with a selection of files from the disk that conform + to the specified criteria. + + + + This method selects files from the specified disk directory that match the + specified selection criteria, and Updates the ZipFile with those + files, using the specified directory path in the archive. If + recurseDirectories is true, files are also selected from + subdirectories, and the directory structure in the filesystem is + reproduced in the zip archive, rooted at the directory specified by + directoryOnDisk. For details on the syntax for the + selectionCriteria parameter, see . + + + + The criteria for selection of files to add to the ZipFile. + + + + The path to the directory in the filesystem from which to select files. + + + + Specifies a directory path to use to in place of the + directoryOnDisk. This path may, or may not, correspond to a + real directory in the current filesystem. If the files within the zip + are later extracted, this is the path used for the extracted file. + Passing null (nothing in VB) will use the path on the file name, if + any; in other words it would use directoryOnDisk, plus any + subdirectory. Passing the empty string ("") will insert the item at + the root path within the archive. + + + + If true, the method also scans subdirectories for files matching the criteria. + + + + + + + Retrieve entries from the zipfile by specified criteria. + + + + + This method allows callers to retrieve the collection of entries from the zipfile + that fit the specified criteria. The criteria are described in a string format, and + can include patterns for the filename; constraints on the size of the entry; + constraints on the last modified, created, or last accessed time for the file + described by the entry; or the attributes of the entry. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + This method is intended for use with a ZipFile that has been read from storage. + When creating a new ZipFile, this method will work only after the ZipArchive has + been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip + archive from storage.) Calling SelectEntries on a ZipFile that has not yet been + saved will deliver undefined results. + + + + + Thrown if selectionCriteria has an invalid syntax. + + + + This example selects all the PhotoShop files from within an archive, and extracts them + to the current working directory. + + using (ZipFile zip1 = ZipFile.Read(ZipFileName)) + { + var PhotoShopFiles = zip1.SelectEntries("*.psd"); + foreach (ZipEntry psd in PhotoShopFiles) + { + psd.Extract(); + } + } + + + Using zip1 As ZipFile = ZipFile.Read(ZipFileName) + Dim PhotoShopFiles as ICollection(Of ZipEntry) + PhotoShopFiles = zip1.SelectEntries("*.psd") + Dim psd As ZipEntry + For Each psd In PhotoShopFiles + psd.Extract + Next + End Using + + + the string that specifies which entries to select + a collection of ZipEntry objects that conform to the inclusion spec + + + + Retrieve entries from the zipfile by specified criteria. + + + + + This method allows callers to retrieve the collection of entries from the zipfile + that fit the specified criteria. The criteria are described in a string format, and + can include patterns for the filename; constraints on the size of the entry; + constraints on the last modified, created, or last accessed time for the file + described by the entry; or the attributes of the entry. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + This method is intended for use with a ZipFile that has been read from storage. + When creating a new ZipFile, this method will work only after the ZipArchive has + been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip + archive from storage.) Calling SelectEntries on a ZipFile that has not yet been + saved will deliver undefined results. + + + + + Thrown if selectionCriteria has an invalid syntax. + + + + + using (ZipFile zip1 = ZipFile.Read(ZipFileName)) + { + var UpdatedPhotoShopFiles = zip1.SelectEntries("*.psd", "UpdatedFiles"); + foreach (ZipEntry e in UpdatedPhotoShopFiles) + { + // prompt for extract here + if (WantExtract(e.FileName)) + e.Extract(); + } + } + + + Using zip1 As ZipFile = ZipFile.Read(ZipFileName) + Dim UpdatedPhotoShopFiles As ICollection(Of ZipEntry) = zip1.SelectEntries("*.psd", "UpdatedFiles") + Dim e As ZipEntry + For Each e In UpdatedPhotoShopFiles + ' prompt for extract here + If Me.WantExtract(e.FileName) Then + e.Extract + End If + Next + End Using + + + the string that specifies which entries to select + + + the directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + + a collection of ZipEntry objects that conform to the inclusion spec + + + + Remove entries from the zipfile by specified criteria. + + + + + This method allows callers to remove the collection of entries from the zipfile + that fit the specified criteria. The criteria are described in a string format, and + can include patterns for the filename; constraints on the size of the entry; + constraints on the last modified, created, or last accessed time for the file + described by the entry; or the attributes of the entry. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + This method is intended for use with a ZipFile that has been read from storage. + When creating a new ZipFile, this method will work only after the ZipArchive has + been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip + archive from storage.) Calling SelectEntries on a ZipFile that has not yet been + saved will deliver undefined results. + + + + + Thrown if selectionCriteria has an invalid syntax. + + + + This example removes all entries in a zip file that were modified prior to January 1st, 2008. + + using (ZipFile zip1 = ZipFile.Read(ZipFileName)) + { + // remove all entries from prior to Jan 1, 2008 + zip1.RemoveEntries("mtime < 2008-01-01"); + // don't forget to save the archive! + zip1.Save(); + } + + + Using zip As ZipFile = ZipFile.Read(ZipFileName) + ' remove all entries from prior to Jan 1, 2008 + zip1.RemoveEntries("mtime < 2008-01-01") + ' do not forget to save the archive! + zip1.Save + End Using + + + the string that specifies which entries to select + the number of entries removed + + + + Remove entries from the zipfile by specified criteria, and within the specified + path in the archive. + + + + + This method allows callers to remove the collection of entries from the zipfile + that fit the specified criteria. The criteria are described in a string format, and + can include patterns for the filename; constraints on the size of the entry; + constraints on the last modified, created, or last accessed time for the file + described by the entry; or the attributes of the entry. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + This method is intended for use with a ZipFile that has been read from storage. + When creating a new ZipFile, this method will work only after the ZipArchive has + been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip + archive from storage.) Calling SelectEntries on a ZipFile that has not yet been + saved will deliver undefined results. + + + + + Thrown if selectionCriteria has an invalid syntax. + + + + + using (ZipFile zip1 = ZipFile.Read(ZipFileName)) + { + // remove all entries from prior to Jan 1, 2008 + zip1.RemoveEntries("mtime < 2008-01-01", "documents"); + // a call to ZipFile.Save will make the modifications permanent + zip1.Save(); + } + + + Using zip As ZipFile = ZipFile.Read(ZipFileName) + ' remove all entries from prior to Jan 1, 2008 + zip1.RemoveEntries("mtime < 2008-01-01", "documents") + ' a call to ZipFile.Save will make the modifications permanent + zip1.Save + End Using + + + + the string that specifies which entries to select + + the directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + the number of entries removed + + + + Selects and Extracts a set of Entries from the ZipFile. + + + + + The entries are extracted into the current working directory. + + + + If any of the files to be extracted already exist, then the action taken is as + specified in the property on the + corresponding ZipEntry instance. By default, the action taken in this case is to + throw an exception. + + + + For information on the syntax of the selectionCriteria string, + see . + + + + + This example shows how extract all XML files modified after 15 January 2009. + + using (ZipFile zip = ZipFile.Read(zipArchiveName)) + { + zip.ExtractSelectedEntries("name = *.xml and mtime > 2009-01-15"); + } + + + the selection criteria for entries to extract. + + + + + + Selects and Extracts a set of Entries from the ZipFile. + + + + + The entries are extracted into the current working directory. When extraction would would + overwrite an existing filesystem file, the action taken is as specified in the + parameter. + + + + For information on the syntax of the string describing the entry selection criteria, + see . + + + + + This example shows how extract all XML files modified after 15 January 2009, + overwriting any existing files. + + using (ZipFile zip = ZipFile.Read(zipArchiveName)) + { + zip.ExtractSelectedEntries("name = *.xml and mtime > 2009-01-15", + ExtractExistingFileAction.OverwriteSilently); + } + + + + the selection criteria for entries to extract. + + + The action to take if extraction would overwrite an existing file. + + + + + Selects and Extracts a set of Entries from the ZipFile. + + + + + The entries are selected from the specified directory within the archive, and then + extracted into the current working directory. + + + + If any of the files to be extracted already exist, then the action taken is as + specified in the property on the + corresponding ZipEntry instance. By default, the action taken in this case is to + throw an exception. + + + + For information on the syntax of the string describing the entry selection criteria, + see . + + + + + This example shows how extract all XML files modified after 15 January 2009, + and writes them to the "unpack" directory. + + using (ZipFile zip = ZipFile.Read(zipArchiveName)) + { + zip.ExtractSelectedEntries("name = *.xml and mtime > 2009-01-15","unpack"); + } + + + + the selection criteria for entries to extract. + + + the directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + + + + + + Selects and Extracts a set of Entries from the ZipFile. + + + + + The entries are extracted into the specified directory. If any of the files to be + extracted already exist, an exception will be thrown. + + + For information on the syntax of the string describing the entry selection criteria, + see . + + + + the selection criteria for entries to extract. + + + the directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + + + the directory on the disk into which to extract. It will be created + if it does not exist. + + + + + Selects and Extracts a set of Entries from the ZipFile. + + + + + The entries are extracted into the specified directory. When extraction would would + overwrite an existing filesystem file, the action taken is as specified in the + parameter. + + + + For information on the syntax of the string describing the entry selection criteria, + see . + + + + + This example shows how extract all files with an XML extension or with a size larger than 100,000 bytes, + and puts them in the unpack directory. For any files that already exist in + that destination directory, they will not be overwritten. + + using (ZipFile zip = ZipFile.Read(zipArchiveName)) + { + zip.ExtractSelectedEntries("name = *.xml or size > 100000", + null, + "unpack", + ExtractExistingFileAction.DontOverwrite); + } + + + + the selection criteria for entries to extract. + + + The directory on the disk into which to extract. It will be created if it does not exist. + + + + The directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + + + The action to take if extraction would overwrite an existing file. + + + + + + Generic IEnumerator support, for use of a ZipFile in an enumeration. + + + + You probably do not want to call GetEnumerator explicitly. Instead + it is implicitly called when you use a loop in C#, or a + For Each loop in VB.NET. + + + + This example reads a zipfile of a given name, then enumerates the + entries in that zip file, and displays the information about each + entry on the Console. + + using (ZipFile zip = ZipFile.Read(zipfile)) + { + bool header = true; + foreach (ZipEntry e in zip) + { + if (header) + { + System.Console.WriteLine("Zipfile: {0}", zip.Name); + System.Console.WriteLine("Version Needed: 0x{0:X2}", e.VersionNeeded); + System.Console.WriteLine("BitField: 0x{0:X2}", e.BitField); + System.Console.WriteLine("Compression Method: 0x{0:X2}", e.CompressionMethod); + System.Console.WriteLine("\n{1,-22} {2,-6} {3,4} {4,-8} {0}", + "Filename", "Modified", "Size", "Ratio", "Packed"); + System.Console.WriteLine(new System.String('-', 72)); + header = false; + } + + System.Console.WriteLine("{1,-22} {2,-6} {3,4:F0}% {4,-8} {0}", + e.FileName, + e.LastModified.ToString("yyyy-MM-dd HH:mm:ss"), + e.UncompressedSize, + e.CompressionRatio, + e.CompressedSize); + + e.Extract(); + } + } + + + + Dim ZipFileToExtract As String = "c:\foo.zip" + Using zip As ZipFile = ZipFile.Read(ZipFileToExtract) + Dim header As Boolean = True + Dim e As ZipEntry + For Each e In zip + If header Then + Console.WriteLine("Zipfile: {0}", zip.Name) + Console.WriteLine("Version Needed: 0x{0:X2}", e.VersionNeeded) + Console.WriteLine("BitField: 0x{0:X2}", e.BitField) + Console.WriteLine("Compression Method: 0x{0:X2}", e.CompressionMethod) + Console.WriteLine(ChrW(10) & "{1,-22} {2,-6} {3,4} {4,-8} {0}", _ + "Filename", "Modified", "Size", "Ratio", "Packed" ) + Console.WriteLine(New String("-"c, 72)) + header = False + End If + Console.WriteLine("{1,-22} {2,-6} {3,4:F0}% {4,-8} {0}", _ + e.FileName, _ + e.LastModified.ToString("yyyy-MM-dd HH:mm:ss"), _ + e.UncompressedSize, _ + e.CompressionRatio, _ + e.CompressedSize ) + e.Extract + Next + End Using + + + + A generic enumerator suitable for use within a foreach loop. + + + + An IEnumerator, for use of a ZipFile in a foreach construct. + + + + This method is included for COM support. An application generally does not call + this method directly. It is called implicitly by COM clients when enumerating + the entries in the ZipFile instance. In VBScript, this is done with a For Each + statement. In Javascript, this is done with new Enumerator(zipfile). + + + + The IEnumerator over the entries in the ZipFile. + + + + + Options for using ZIP64 extensions when saving zip archives. + + + + + + Designed many years ago, the original zip + specification from PKWARE allowed for 32-bit quantities for the + compressed and uncompressed sizes of zip entries, as well as a 32-bit quantity + for specifying the length of the zip archive itself, and a maximum of 65535 + entries. These limits are now regularly exceeded in many backup and archival + scenarios. Recently, PKWare added extensions to the original zip spec, called + "ZIP64 extensions", to raise those limitations. This property governs whether + DotNetZip will use those extensions when writing zip archives. The use of + these extensions is optional and explicit in DotNetZip because, despite the + status of ZIP64 as a bona fide standard, many other zip tools and libraries do + not support ZIP64, and therefore a zip file with ZIP64 extensions may be + unreadable by some of those other tools. + + + + Set this property to to always use ZIP64 + extensions when saving, regardless of whether your zip archive needs it. + Suppose you add 5 files, each under 100k, to a ZipFile. If you specify Always + for this flag, you will get a ZIP64 archive, though the archive does not need + to use ZIP64 because none of the original zip limits had been exceeded. + + + + Set this property to to tell the DotNetZip + library to never use ZIP64 extensions. This is useful for maximum + compatibility and interoperability, at the expense of the capability of + handling large files or large archives. NB: Windows Explorer in Windows XP + and Windows Vista cannot currently extract files from a zip64 archive, so if + you want to guarantee that a zip archive produced by this library will work in + Windows Explorer, use Never. If you set this property to , and your application creates a zip that would + exceed one of the Zip limits, the library will throw an exception while saving + the zip file. + + + + Set this property to to tell the + DotNetZip library to use the ZIP64 extensions when required by the + entry. After the file is compressed, the original and compressed sizes are + checked, and if they exceed the limits described above, then zip64 can be + used. That is the general idea, but there is an additional wrinkle when saving + to a non-seekable device, like the ASP.NET Response.OutputStream, or + Console.Out. When using non-seekable streams for output, the entry + header - which indicates whether zip64 is in use - is emitted before it is + known if zip64 is necessary. It is only after all entries have been saved + that it can be known if ZIP64 will be required. On seekable output streams, + after saving all entries, the library can seek backward and re-emit the zip + file header to be consistent with the actual ZIP64 requirement. But using a + non-seekable output stream, the library cannot seek backward, so the header + can never be changed. In other words, the archive's use of ZIP64 extensions is + not alterable after the header is emitted. Therefore, when saving to + non-seekable streams, using is the same + as using : it will always produce a zip + archive that uses ZIP64 extensions. + + + + + + + The default behavior, which is "Never". + (For COM clients, this is a 0 (zero).) + + + + + Do not use ZIP64 extensions when writing zip archives. + (For COM clients, this is a 0 (zero).) + + + + + Use ZIP64 extensions when writing zip archives, as necessary. + For example, when a single entry exceeds 0xFFFFFFFF in size, or when the archive as a whole + exceeds 0xFFFFFFFF in size, or when there are more than 65535 entries in an archive. + (For COM clients, this is a 1.) + + + + + Always use ZIP64 extensions when writing zip archives, even when unnecessary. + (For COM clients, this is a 2.) + + + + + An enum representing the values on a three-way toggle switch + for various options in the library. This might be used to + specify whether to employ a particular text encoding, or to use + ZIP64 extensions, or some other option. + + + + + The default behavior. This is the same as "Never". + (For COM clients, this is a 0 (zero).) + + + + + Never use the associated option. + (For COM clients, this is a 0 (zero).) + + + + + Use the associated behavior "as necessary." + (For COM clients, this is a 1.) + + + + + Use the associated behavior Always, whether necessary or not. + (For COM clients, this is a 2.) + + + + + A class for collecting the various options that can be used when + Reading zip files for extraction or update. + + + + + When reading a zip file, there are several options an + application can set, to modify how the file is read, or what + the library does while reading. This class collects those + options into one container. + + + + Pass an instance of the ReadOptions class into the + ZipFile.Read() method. + + + . + . + + + + + An event handler for Read operations. When opening large zip + archives, you may want to display a progress bar or other + indicator of status progress while reading. This parameter + allows you to specify a ReadProgress Event Handler directly. + When you call Read(), the progress event is invoked as + necessary. + + + + + The System.IO.TextWriter to use for writing verbose status messages + during operations on the zip archive. A console application may wish to + pass System.Console.Out to get messages on the Console. A graphical + or headless application may wish to capture the messages in a different + TextWriter, such as a System.IO.StringWriter. + + + + + The System.Text.Encoding to use when reading in the zip archive. Be + careful specifying the encoding. If the value you use here is not the same + as the Encoding used when the zip archive was created (possibly by a + different archiver) you will get unexpected results and possibly exceptions. + + + + + + + + An enum that provides the different self-extractor flavors + + + + + A self-extracting zip archive that runs from the console or + command line. + + + + + A self-extracting zip archive that presents a graphical user + interface when it is executed. + + + + + The options for generating a self-extracting archive. + + + + + The type of SFX to create. + + + + + The command to run after extraction. + + + + + This is optional. Leave it empty (null in C# or Nothing in + VB) to run no command after extraction. + + + + If it is non-empty, the SFX will execute the command specified in this + string on the user's machine, and using the extract directory as the + working directory for the process, after unpacking the archive. The + program to execute can include a path, if you like. If you want to execute + a program that accepts arguments, specify the program name, followed by a + space, and then the arguments for the program, each separated by a space, + just as you would on a normal command line. Example: program.exe arg1 + arg2. The string prior to the first space will be taken as the + program name, and the string following the first space specifies the + arguments to the program. + + + + If you want to execute a program that has a space in the name or path of + the file, surround the program name in double-quotes. The first character + of the command line should be a double-quote character, and there must be + a matching double-quote following the end of the program file name. Any + optional arguments to the program follow that, separated by + spaces. Example: "c:\project files\program name.exe" arg1 arg2. + + + + If the flavor of the SFX is SelfExtractorFlavor.ConsoleApplication, + then the SFX starts a new process, using this string as the post-extract + command line. The SFX waits for the process to exit. The exit code of + the post-extract command line is returned as the exit code of the + command-line self-extractor exe. A non-zero exit code is typically used to + indicated a failure by the program. In the case of an SFX, a non-zero exit + code may indicate a failure during extraction, OR, it may indicate a + failure of the run-after-extract program if specified, OR, it may indicate + the run-after-extract program could not be fuond. There is no way to + distinguish these conditions from the calling shell, aside from parsing + the output of the SFX. If you have Quiet set to true, you may not + see error messages, if a problem occurs. + + + + If the flavor of the SFX is + SelfExtractorFlavor.WinFormsApplication, then the SFX starts a new + process, using this string as the post-extract command line, and using the + extract directory as the working directory for the process. The SFX does + not wait for the command to complete, and does not check the exit code of + the program. If the run-after-extract program cannot be fuond, a message + box is displayed indicating that fact. + + + + You can specify environment variables within this string, with a format like + %NAME%. The value of these variables will be expanded at the time + the SFX is run. Example: %WINDIR%\system32\xcopy.exe may expand at + runtime to c:\Windows\System32\xcopy.exe. + + + + By combining this with the RemoveUnpackedFilesAfterExecute + flag, you can create an SFX that extracts itself, runs a file that + was extracted, then deletes all the files that were extracted. If + you want it to run "invisibly" then set Flavor to + SelfExtractorFlavor.ConsoleApplication, and set Quiet + to true. The user running such an EXE will see a console window + appear, then disappear quickly. You may also want to specify the + default extract location, with DefaultExtractDirectory. + + + + If you set Flavor to + SelfExtractorFlavor.WinFormsApplication, and set Quiet to + true, then a GUI with progressbars is displayed, but it is + "non-interactive" - it accepts no input from the user. Instead the SFX + just automatically unpacks and exits. + + + + + + + The default extract directory the user will see when + running the self-extracting archive. + + + + + Passing null (or Nothing in VB) here will cause the Self Extractor to use + the the user's personal directory () for the default extract + location. + + + + This is only a default location. The actual extract location will be + settable on the command line when the SFX is executed. + + + + You can specify environment variables within this string, + with %NAME%. The value of these variables will be + expanded at the time the SFX is run. Example: + %USERPROFILE%\Documents\unpack may expand at runtime to + c:\users\melvin\Documents\unpack. + + + + + + The name of an .ico file in the filesystem to use for the application icon + for the generated SFX. + + + + + Normally, DotNetZip will embed an "zipped folder" icon into the generated + SFX. If you prefer to use a different icon, you can specify it here. It + should be a .ico file. This file is passed as the /win32icon + option to the csc.exe compiler when constructing the SFX file. + + + + + + + Whether the ConsoleApplication SFX will be quiet during extraction. + + + + + This option affects the way the generated SFX runs. By default it is + false. When you set it to true,... + + + + + Flavor + Behavior + + + + ConsoleApplication + no messages will be emitted during successful + operation. Double-clicking the SFX in Windows + Explorer or as an attachment in an email will cause a console + window to appear briefly, before it disappears. If you run the + ConsoleApplication SFX from the cmd.exe prompt, it runs as a + normal console app; by default, because it is quiet, it displays + no messages to the console. If you pass the -v+ command line + argument to the Console SFX when you run it, you will get verbose + messages to the console. + + + + + WinFormsApplication + the SFX extracts automatically when the application + is launched, with no additional user input. + + + + + + + When you set it to false,... + + + + + Flavor + Behavior + + + + ConsoleApplication + the extractor will emit a + message to the console for each entry extracted. + + When double-clicking to launch the SFX, the console window will + remain, and the SFX will emit a message for each file as it + extracts. The messages fly by quickly, they won't be easily + readable, unless the extracted files are fairly large. + + + + + + WinFormsApplication + the SFX presents a forms UI and allows the user to select + options before extracting. + + + + + + + + + + Specify what the self-extractor will do when extracting an entry + would overwrite an existing file. + + + + The default behavvior is to Throw. + + + + + + Whether to remove the files that have been unpacked, after executing the + PostExtractCommandLine. + + + + + If true, and if there is a + PostExtractCommandLine, and if the command runs successfully, + then the files that the SFX unpacked will be removed, afterwards. If + the command does not complete successfully (non-zero return code), + that is interpreted as a failure, and the extracted files will not be + removed. + + + + Setting this flag, and setting Flavor to + SelfExtractorFlavor.ConsoleApplication, and setting Quiet to + true, results in an SFX that extracts itself, runs a file that was + extracted, then deletes all the files that were extracted, with no + intervention by the user. You may also want to specify the default + extract location, with DefaultExtractDirectory. + + + + + + + The file version number to embed into the generated EXE. It will show up, for + example, during a mouseover in Windows Explorer. + + + + + + The product version to embed into the generated EXE. It will show up, for + example, during a mouseover in Windows Explorer. + + + + You can use any arbitrary string, but a human-readable version number is + recommended. For example "v1.2 alpha" or "v4.2 RC2". If you specify nothing, + then there is no product version embedded into the EXE. + + + + + + The copyright notice, if any, to embed into the generated EXE. + + + + It will show up, for example, while viewing properties of the file in + Windows Explorer. You can use any arbitrary string, but typically you + want something like "Copyright � Dino Chiesa 2011". + + + + + + The description to embed into the generated EXE. + + + + Use any arbitrary string. This text will be displayed during a + mouseover in Windows Explorer. If you specify nothing, then the string + "DotNetZip SFX Archive" is embedded into the EXE as the description. + + + + + + The product name to embed into the generated EXE. + + + + Use any arbitrary string. This text will be displayed + while viewing properties of the EXE file in + Windows Explorer. + + + + + + The title to display in the Window of a GUI SFX, while it extracts. + + + + + By default the title show in the GUI window of a self-extractor + is "DotNetZip Self-extractor (http://DotNetZip.codeplex.com/)". + You can change that by setting this property before saving the SFX. + + + + This property has an effect only when producing a Self-extractor + of flavor SelfExtractorFlavor.WinFormsApplication. + + + + + + + Additional options for the csc.exe compiler, when producing the SFX + EXE. + + + + + + Provides a stream metaphor for generating zip files. + + + + + This class writes zip files, as defined in the specification + for zip files described by PKWare. The compression for this + implementation is provided by a managed-code version of Zlib, included with + DotNetZip in the classes in the Ionic.Zlib namespace. + + + + This class provides an alternative programming model to the one enabled by the + class. Use this when creating zip files, as an + alternative to the class, when you would like to use a + Stream type to write the zip file. + + + + Both the ZipOutputStream class and the ZipFile class can be used + to create zip files. Both of them support many of the common zip features, + including Unicode, different compression levels, and ZIP64. They provide + very similar performance when creating zip files. + + + + The ZipFile class is generally easier to use than + ZipOutputStream and should be considered a higher-level interface. For + example, when creating a zip file via calls to the PutNextEntry() and + Write() methods on the ZipOutputStream class, the caller is + responsible for opening the file, reading the bytes from the file, writing + those bytes into the ZipOutputStream, setting the attributes on the + ZipEntry, and setting the created, last modified, and last accessed + timestamps on the zip entry. All of these things are done automatically by a + call to ZipFile.AddFile(). + For this reason, the ZipOutputStream is generally recommended for use + only when your application emits arbitrary data, not necessarily data from a + filesystem file, directly into a zip file, and does so using a Stream + metaphor. + + + + Aside from the differences in programming model, there are other + differences in capability between the two classes. + + + + + ZipFile can be used to read and extract zip files, in addition to + creating zip files. ZipOutputStream cannot read zip files. If you want + to use a stream to read zip files, check out the class. + + + + ZipOutputStream does not support the creation of segmented or spanned + zip files. + + + + ZipOutputStream cannot produce a self-extracting archive. + + + + + Be aware that the ZipOutputStream class implements the interface. In order for + ZipOutputStream to produce a valid zip file, you use use it within + a using clause (Using in VB), or call the Dispose() method + explicitly. See the examples for how to employ a using clause. + + + + Also, a note regarding compression performance: On the desktop .NET + Framework, DotNetZip can use a multi-threaded compression implementation + that provides significant speed increases on large files, over 300k or so, + at the cost of increased memory use at runtime. (The output of the + compression is almost exactly the same size). But, the multi-threaded + approach incurs a performance hit on smaller files. There's no way for the + ZipOutputStream to know whether parallel compression will be beneficial, + because the ZipOutputStream does not know how much data you will write + through the stream. You may wish to set the property to zero, if you are compressing + large files through ZipOutputStream. This will cause parallel + compression to be used, always. + + + + + + Create a ZipOutputStream, wrapping an existing stream. + + + + + The class is generally easier to use when creating + zip files. The ZipOutputStream offers a different metaphor for creating a + zip file, based on the class. + + + + + + The stream to wrap. It must be writable. This stream will be closed at + the time the ZipOutputStream is closed. + + + + + This example shows how to create a zip file, using the + ZipOutputStream class. + + + private void Zipup() + { + if (filesToZip.Count == 0) + { + System.Console.WriteLine("Nothing to do."); + return; + } + + using (var raw = File.Open(_outputFileName, FileMode.Create, FileAccess.ReadWrite )) + { + using (var output= new ZipOutputStream(raw)) + { + output.Password = "VerySecret!"; + output.Encryption = EncryptionAlgorithm.WinZipAes256; + + foreach (string inputFileName in filesToZip) + { + System.Console.WriteLine("file: {0}", inputFileName); + + output.PutNextEntry(inputFileName); + using (var input = File.Open(inputFileName, FileMode.Open, FileAccess.Read, FileShare.Read | FileShare.Write )) + { + byte[] buffer= new byte[2048]; + int n; + while ((n= input.Read(buffer,0,buffer.Length)) > 0) + { + output.Write(buffer,0,n); + } + } + } + } + } + } + + + + Private Sub Zipup() + Dim outputFileName As String = "XmlData.zip" + Dim filesToZip As String() = Directory.GetFiles(".", "*.xml") + If (filesToZip.Length = 0) Then + Console.WriteLine("Nothing to do.") + Else + Using raw As FileStream = File.Open(outputFileName, FileMode.Create, FileAccess.ReadWrite) + Using output As ZipOutputStream = New ZipOutputStream(raw) + output.Password = "VerySecret!" + output.Encryption = EncryptionAlgorithm.WinZipAes256 + Dim inputFileName As String + For Each inputFileName In filesToZip + Console.WriteLine("file: {0}", inputFileName) + output.PutNextEntry(inputFileName) + Using input As FileStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) + Dim n As Integer + Dim buffer As Byte() = New Byte(2048) {} + Do While (n = input.Read(buffer, 0, buffer.Length) > 0) + output.Write(buffer, 0, n) + Loop + End Using + Next + End Using + End Using + End If + End Sub + + + + + + Create a ZipOutputStream that writes to a filesystem file. + + + + The class is generally easier to use when creating + zip files. The ZipOutputStream offers a different metaphor for creating a + zip file, based on the class. + + + + The name of the zip file to create. + + + + + This example shows how to create a zip file, using the + ZipOutputStream class. + + + private void Zipup() + { + if (filesToZip.Count == 0) + { + System.Console.WriteLine("Nothing to do."); + return; + } + + using (var output= new ZipOutputStream(outputFileName)) + { + output.Password = "VerySecret!"; + output.Encryption = EncryptionAlgorithm.WinZipAes256; + + foreach (string inputFileName in filesToZip) + { + System.Console.WriteLine("file: {0}", inputFileName); + + output.PutNextEntry(inputFileName); + using (var input = File.Open(inputFileName, FileMode.Open, FileAccess.Read, + FileShare.Read | FileShare.Write )) + { + byte[] buffer= new byte[2048]; + int n; + while ((n= input.Read(buffer,0,buffer.Length)) > 0) + { + output.Write(buffer,0,n); + } + } + } + } + } + + + + Private Sub Zipup() + Dim outputFileName As String = "XmlData.zip" + Dim filesToZip As String() = Directory.GetFiles(".", "*.xml") + If (filesToZip.Length = 0) Then + Console.WriteLine("Nothing to do.") + Else + Using output As ZipOutputStream = New ZipOutputStream(outputFileName) + output.Password = "VerySecret!" + output.Encryption = EncryptionAlgorithm.WinZipAes256 + Dim inputFileName As String + For Each inputFileName In filesToZip + Console.WriteLine("file: {0}", inputFileName) + output.PutNextEntry(inputFileName) + Using input As FileStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) + Dim n As Integer + Dim buffer As Byte() = New Byte(2048) {} + Do While (n = input.Read(buffer, 0, buffer.Length) > 0) + output.Write(buffer, 0, n) + Loop + End Using + Next + End Using + End If + End Sub + + + + + + Create a ZipOutputStream. + + + + See the documentation for the ZipOutputStream(Stream) + constructor for an example. + + + + The stream to wrap. It must be writable. + + + + true if the application would like the stream + to remain open after the ZipOutputStream has been closed. + + + + Provides a string representation of the instance. + + + This can be useful for debugging purposes. + + + a string representation of the instance. + + + + Sets the password to be used on the ZipOutputStream instance. + + + + + + When writing a zip archive, this password is applied to the entries, not + to the zip archive itself. It applies to any ZipEntry subsequently + written to the ZipOutputStream. + + + + Using a password does not encrypt or protect the "directory" of the + archive - the list of entries contained in the archive. If you set the + Password property, the password actually applies to individual + entries that are added to the archive, subsequent to the setting of this + property. The list of filenames in the archive that is eventually created + will appear in clear text, but the contents of the individual files are + encrypted. This is how Zip encryption works. + + + + If you set this property, and then add a set of entries to the archive via + calls to PutNextEntry, then each entry is encrypted with that + password. You may also want to change the password between adding + different entries. If you set the password, add an entry, then set the + password to null (Nothing in VB), and add another entry, the + first entry is encrypted and the second is not. + + + + When setting the Password, you may also want to explicitly set the property, to specify how to encrypt the entries added + to the ZipFile. If you set the Password to a non-null value and do not + set , then PKZip 2.0 ("Weak") encryption is used. + This encryption is relatively weak but is very interoperable. If + you set the password to a null value (Nothing in VB), + Encryption is reset to None. + + + + Special case: if you wrap a ZipOutputStream around a non-seekable stream, + and use encryption, and emit an entry of zero bytes, the Close() or + PutNextEntry() following the entry will throw an exception. + + + + + + + The Encryption to use for entries added to the ZipOutputStream. + + + + + The specified Encryption is applied to the entries subsequently + written to the ZipOutputStream instance. + + + + If you set this to something other than + EncryptionAlgorithm.None, you will also need to set the + to a non-null, non-empty value in + order to actually get encryption on the entry. + + + + + ZipOutputStream.Password + ZipEntry.Encryption + + + + Size of the work buffer to use for the ZLIB codec during compression. + + + + Setting this may affect performance. For larger files, setting this to a + larger size may improve performance, but I'm not sure. Sorry, I don't + currently have good recommendations on how to set it. You can test it if + you like. + + + + + The compression strategy to use for all entries. + + + + Set the Strategy used by the ZLIB-compatible compressor, when compressing + data for the entries in the zip archive. Different compression strategies + work better on different sorts of data. The strategy parameter can affect + the compression ratio and the speed of compression but not the correctness + of the compresssion. For more information see . + + + + + The type of timestamp attached to the ZipEntry. + + + + Set this in order to specify the kind of timestamp that should be emitted + into the zip file for each entry. + + + + + Sets the compression level to be used for entries subsequently added to + the zip archive. + + + + + Varying the compression level used on entries can affect the + size-vs-speed tradeoff when compression and decompressing data streams + or files. + + + + As with some other properties on the ZipOutputStream class, like , and , + setting this property on a ZipOutputStream + instance will cause the specified CompressionLevel to be used on all + items that are subsequently added to the + ZipOutputStream instance. + + + + If you do not set this property, the default compression level is used, + which normally gives a good balance of compression efficiency and + compression speed. In some tests, using BestCompression can + double the time it takes to compress, while delivering just a small + increase in compression efficiency. This behavior will vary with the + type of data you compress. If you are in doubt, just leave this setting + alone, and accept the default. + + + + + + The compression method used on each entry added to the ZipOutputStream. + + + + + A comment attached to the zip archive. + + + + + + The application sets this property to specify a comment to be embedded + into the generated zip archive. + + + + According to PKWARE's + zip specification, the comment is not encrypted, even if there is a + password set on the zip file. + + + + The specification does not describe how to indicate the encoding used + on a comment string. Many "compliant" zip tools and libraries use + IBM437 as the code page for comments; DotNetZip, too, follows that + practice. On the other hand, there are situations where you want a + Comment to be encoded with something else, for example using code page + 950 "Big-5 Chinese". To fill that need, DotNetZip will encode the + comment following the same procedure it follows for encoding + filenames: (a) if is + Never, it uses the default encoding (IBM437). (b) if is Always, it always uses the + alternate encoding (). (c) if is AsNecessary, it uses the + alternate encoding only if the default encoding is not sufficient for + encoding the comment - in other words if decoding the result does not + produce the original string. This decision is taken at the time of + the call to ZipFile.Save(). + + + + + + + Specify whether to use ZIP64 extensions when saving a zip archive. + + + + + The default value for the property is . is + safest, in the sense that you will not get an Exception if a + pre-ZIP64 limit is exceeded. + + + + You must set this property before calling Write(). + + + + + + + Indicates whether ZIP64 extensions were used when saving the zip archive. + + + + The value is defined only after the ZipOutputStream has been closed. + + + + + Whether the ZipOutputStream should use case-insensitive comparisons when + checking for uniqueness of zip entries. + + + + + Though the zip specification doesn't prohibit zipfiles with duplicate + entries, Sane zip files have no duplicates, and the DotNetZip library + cannot create zip files with duplicate entries. If an application attempts + to call with a name that duplicates one + already used within the archive, the library will throw an Exception. + + + This property allows the application to specify whether the + ZipOutputStream instance considers ordinal case when checking for + uniqueness of zip entries. + + + + + + Indicates whether to encode entry filenames and entry comments using + Unicode (UTF-8). + + + + + The + PKWare zip specification provides for encoding file names and file + comments in either the IBM437 code page, or in UTF-8. This flag selects + the encoding according to that specification. By default, this flag is + false, and filenames and comments are encoded into the zip file in the + IBM437 codepage. Setting this flag to true will specify that filenames + and comments that cannot be encoded with IBM437 will be encoded with + UTF-8. + + + + Zip files created with strict adherence to the PKWare specification with + respect to UTF-8 encoding can contain entries with filenames containing + any combination of Unicode characters, including the full range of + characters from Chinese, Latin, Hebrew, Greek, Cyrillic, and many other + alphabets. However, because at this time, the UTF-8 portion of the PKWare + specification is not broadly supported by other zip libraries and + utilities, such zip files may not be readable by your favorite zip tool or + archiver. In other words, interoperability will decrease if you set this + flag to true. + + + + In particular, Zip files created with strict adherence to the PKWare + specification with respect to UTF-8 encoding will not work well with + Explorer in Windows XP or Windows Vista, because Windows compressed + folders, as far as I know, do not support UTF-8 in zip files. Vista can + read the zip files, but shows the filenames incorrectly. Unpacking from + Windows Vista Explorer will result in filenames that have rubbish + characters in place of the high-order UTF-8 bytes. + + + + Also, zip files that use UTF-8 encoding will not work well with Java + applications that use the java.util.zip classes, as of v5.0 of the Java + runtime. The Java runtime does not correctly implement the PKWare + specification in this regard. + + + + As a result, we have the unfortunate situation that "correct" behavior by + the DotNetZip library with regard to Unicode encoding of filenames during + zip creation will result in zip files that are readable by strictly + compliant and current tools (for example the most recent release of the + commercial WinZip tool); but these zip files will not be readable by + various other tools or libraries, including Windows Explorer. + + + + The DotNetZip library can read and write zip files with UTF8-encoded + entries, according to the PKware spec. If you use DotNetZip for both + creating and reading the zip file, and you use UTF-8, there will be no + loss of information in the filenames. For example, using a self-extractor + created by this library will allow you to unpack files correctly with no + loss of information in the filenames. + + + + If you do not set this flag, it will remain false. If this flag is false, + the ZipOutputStream will encode all filenames and comments using + the IBM437 codepage. This can cause "loss of information" on some + filenames, but the resulting zipfile will be more interoperable with other + utilities. As an example of the loss of information, diacritics can be + lost. The o-tilde character will be down-coded to plain o. The c with a + cedilla (Unicode 0xE7) used in Portugese will be downcoded to a c. + Likewise, the O-stroke character (Unicode 248), used in Danish and + Norwegian, will be down-coded to plain o. Chinese characters cannot be + represented in codepage IBM437; when using the default encoding, Chinese + characters in filenames will be represented as ?. These are all examples + of "information loss". + + + + The loss of information associated to the use of the IBM437 encoding is + inconvenient, and can also lead to runtime errors. For example, using + IBM437, any sequence of 4 Chinese characters will be encoded as ????. If + your application creates a ZipOutputStream, does not set the + encoding, then adds two files, each with names of four Chinese characters + each, this will result in a duplicate filename exception. In the case + where you add a single file with a name containing four Chinese + characters, the zipfile will save properly, but extracting that file + later, with any zip tool, will result in an error, because the question + mark is not legal for use within filenames on Windows. These are just a + few examples of the problems associated to loss of information. + + + + This flag is independent of the encoding of the content within the entries + in the zip file. Think of the zip file as a container - it supports an + encoding. Within the container are other "containers" - the file entries + themselves. The encoding within those entries is independent of the + encoding of the zip archive container for those entries. + + + + Rather than specify the encoding in a binary fashion using this flag, an + application can specify an arbitrary encoding via the property. Setting the encoding + explicitly when creating zip archives will result in non-compliant zip + files that, curiously, are fairly interoperable. The challenge is, the + PKWare specification does not provide for a way to specify that an entry + in a zip archive uses a code page that is neither IBM437 nor UTF-8. + Therefore if you set the encoding explicitly when creating a zip archive, + you must take care upon reading the zip archive to use the same code page. + If you get it wrong, the behavior is undefined and may result in incorrect + filenames, exceptions, stomach upset, hair loss, and acne. + + + + + + + The text encoding to use when emitting entries into the zip archive, for + those entries whose filenames or comments cannot be encoded with the + default (IBM437) encoding. + + + + + In its + zip specification, PKWare describes two options for encoding + filenames and comments: using IBM437 or UTF-8. But, some archiving tools + or libraries do not follow the specification, and instead encode + characters using the system default code page. For example, WinRAR when + run on a machine in Shanghai may encode filenames with the Big-5 Chinese + (950) code page. This behavior is contrary to the Zip specification, but + it occurs anyway. + + + + When using DotNetZip to write zip archives that will be read by one of + these other archivers, set this property to specify the code page to use + when encoding the and for each ZipEntry in the zip file, for + values that cannot be encoded with the default codepage for zip files, + IBM437. This is why this property is "provisional". In all cases, IBM437 + is used where possible, in other words, where no loss of data would + result. It is possible, therefore, to have a given entry with a + Comment encoded in IBM437 and a FileName encoded with the + specified "provisional" codepage. + + + + Be aware that a zip file created after you've explicitly set the + ProvisionalAlternateEncoding property to a value other than + IBM437 may not be compliant to the PKWare specification, and may not be + readable by compliant archivers. On the other hand, many (most?) + archivers are non-compliant and can read zip files created in arbitrary + code pages. The trick is to use or specify the proper codepage when + reading the zip. + + + + When creating a zip archive using this library, it is possible to change + the value of ProvisionalAlternateEncoding between each entry you + add, and between adding entries and the call to Close(). Don't do + this. It will likely result in a zipfile that is not readable. For best + interoperability, either leave ProvisionalAlternateEncoding + alone, or specify it only once, before adding any entries to the + ZipOutputStream instance. There is one exception to this + recommendation, described later. + + + + When using an arbitrary, non-UTF8 code page for encoding, there is no + standard way for the creator application - whether DotNetZip, WinZip, + WinRar, or something else - to formally specify in the zip file which + codepage has been used for the entries. As a result, readers of zip files + are not able to inspect the zip file and determine the codepage that was + used for the entries contained within it. It is left to the application + or user to determine the necessary codepage when reading zip files encoded + this way. If you use an incorrect codepage when reading a zipfile, you + will get entries with filenames that are incorrect, and the incorrect + filenames may even contain characters that are not legal for use within + filenames in Windows. Extracting entries with illegal characters in the + filenames will lead to exceptions. It's too bad, but this is just the way + things are with code pages in zip files. Caveat Emptor. + + + + One possible approach for specifying the code page for a given zip file is + to describe the code page in a human-readable form in the Zip comment. For + example, the comment may read "Entries in this archive are encoded in the + Big5 code page". For maximum interoperability, the zip comment in this + case should be encoded in the default, IBM437 code page. In this case, + the zip comment is encoded using a different page than the filenames. To + do this, Specify ProvisionalAlternateEncoding to your desired + region-specific code page, once before adding any entries, and then set + the property and reset + ProvisionalAlternateEncoding to IBM437 before calling Close(). + + + + + + A Text Encoding to use when encoding the filenames and comments for + all the ZipEntry items, during a ZipFile.Save() operation. + + + + Whether the encoding specified here is used during the save depends + on . + + + + + + A flag that tells if and when this instance should apply + AlternateEncoding to encode the filenames and comments associated to + of ZipEntry objects contained within this instance. + + + + + The default text encoding used in zip archives. It is numeric 437, also + known as IBM437. + + + + + + The size threshold for an entry, above which a parallel deflate is used. + + + + + + DotNetZip will use multiple threads to compress any ZipEntry, when + the CompressionMethod is Deflate, and if the entry is + larger than the given size. Zero means "always use parallel + deflate", while -1 means "never use parallel deflate". + + + + If the entry size cannot be known before compression, as with any entry + added via a ZipOutputStream, then Parallel deflate will never be + performed, unless the value of this property is zero. + + + + A parallel deflate operations will speed up the compression of + large files, on computers with multiple CPUs or multiple CPU + cores. For files above 1mb, on a dual core or dual-cpu (2p) + machine, the time required to compress the file can be 70% of the + single-threaded deflate. For very large files on 4p machines the + compression can be done in 30% of the normal time. The downside + is that parallel deflate consumes extra memory during the deflate, + and the deflation is slightly less effective. + + + + Parallel deflate tends to not be as effective as single-threaded deflate + because the original data stream is split into multiple independent + buffers, each of which is compressed in parallel. But because they are + treated independently, there is no opportunity to share compression + dictionaries, and additional framing bytes must be added to the output + stream. For that reason, a deflated stream may be slightly larger when + compressed using parallel deflate, as compared to a traditional + single-threaded deflate. For files of about 512k, the increase over the + normal deflate is as much as 5% of the total compressed size. For larger + files, the difference can be as small as 0.1%. + + + + Multi-threaded compression does not give as much an advantage when using + Encryption. This is primarily because encryption tends to slow down + the entire pipeline. Also, multi-threaded compression gives less of an + advantage when using lower compression levels, for example . You may have to perform + some tests to determine the best approach for your situation. + + + + The default value for this property is -1, which means parallel + compression will not be performed unless you set it to zero. + + + + + + + The maximum number of buffer pairs to use when performing + parallel compression. + + + + + This property sets an upper limit on the number of memory + buffer pairs to create when performing parallel + compression. The implementation of the parallel + compression stream allocates multiple buffers to + facilitate parallel compression. As each buffer fills up, + the stream uses + ThreadPool.QueueUserWorkItem() to compress those + buffers in a background threadpool thread. After a buffer + is compressed, it is re-ordered and written to the output + stream. + + + + A higher number of buffer pairs enables a higher degree of + parallelism, which tends to increase the speed of compression on + multi-cpu computers. On the other hand, a higher number of buffer + pairs also implies a larger memory consumption, more active worker + threads, and a higher cpu utilization for any compression. This + property enables the application to limit its memory consumption and + CPU utilization behavior depending on requirements. + + + + For each compression "task" that occurs in parallel, there are 2 + buffers allocated: one for input and one for output. This property + sets a limit for the number of pairs. The total amount of storage + space allocated for buffering will then be (N*S*2), where N is the + number of buffer pairs, S is the size of each buffer (). By default, DotNetZip allocates 4 buffer + pairs per CPU core, so if your machine has 4 cores, and you retain + the default buffer size of 128k, then the + ParallelDeflateOutputStream will use 4 * 4 * 2 * 128kb of buffer + memory in total, or 4mb, in blocks of 128kb. If you then set this + property to 8, then the number will be 8 * 2 * 128kb of buffer + memory, or 2mb. + + + + CPU utilization will also go up with additional buffers, because a + larger number of buffer pairs allows a larger number of background + threads to compress in parallel. If you find that parallel + compression is consuming too much memory or CPU, you can adjust this + value downward. + + + + The default value is 16. Different values may deliver better or + worse results, depending on your priorities and the dynamic + performance characteristics of your storage and compute resources. + + + + This property is not the number of buffer pairs to use; it is an + upper limit. An illustration: Suppose you have an application that + uses the default value of this property (which is 16), and it runs + on a machine with 2 CPU cores. In that case, DotNetZip will allocate + 4 buffer pairs per CPU core, for a total of 8 pairs. The upper + limit specified by this property has no effect. + + + + The application can set this value at any time, but it is + effective only if set before calling + ZipOutputStream.Write() for the first time. + + + + + + + + + Returns true if an entry by the given name has already been written + to the ZipOutputStream. + + + + The name of the entry to scan for. + + + + true if an entry by the given name has already been written. + + + + + Write the data from the buffer to the stream. + + + + As the application writes data into this stream, the data may be + compressed and encrypted before being written out to the underlying + stream, depending on the settings of the + and the properties. + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Specify the name of the next entry that will be written to the zip file. + + + + + Call this method just before calling , to + specify the name of the entry that the next set of bytes written to + the ZipOutputStream belongs to. All subsequent calls to Write, + until the next call to PutNextEntry, + will be inserted into the named entry in the zip file. + + + + If the used in PutNextEntry() ends in + a slash, then the entry added is marked as a directory. Because directory + entries do not contain data, a call to Write(), before an + intervening additional call to PutNextEntry(), will throw an + exception. + + + + If you don't call Write() between two calls to + PutNextEntry(), the first entry is inserted into the zip file as a + file of zero size. This may be what you want. + + + + Because PutNextEntry() closes out the prior entry, if any, this + method may throw if there is a problem with the prior entry. + + + + This method returns the ZipEntry. You can modify public properties + on the ZipEntry, such as , , and so on, until the first call to + ZipOutputStream.Write(), or until the next call to + PutNextEntry(). If you modify the ZipEntry after + having called Write(), you may get a runtime exception, or you may + silently get an invalid zip archive. + + + + + + + This example shows how to create a zip file, using the + ZipOutputStream class. + + + private void Zipup() + { + using (FileStream fs raw = File.Open(_outputFileName, FileMode.Create, FileAccess.ReadWrite )) + { + using (var output= new ZipOutputStream(fs)) + { + output.Password = "VerySecret!"; + output.Encryption = EncryptionAlgorithm.WinZipAes256; + output.PutNextEntry("entry1.txt"); + byte[] buffer= System.Text.Encoding.ASCII.GetBytes("This is the content for entry #1."); + output.Write(buffer,0,buffer.Length); + output.PutNextEntry("entry2.txt"); // this will be zero length + output.PutNextEntry("entry3.txt"); + buffer= System.Text.Encoding.ASCII.GetBytes("This is the content for entry #3."); + output.Write(buffer,0,buffer.Length); + } + } + } + + + + + The name of the entry to be added, including any path to be used + within the zip file. + + + + The ZipEntry created. + + + + + + Dispose the stream + + + + + This method writes the Zip Central directory, then closes the stream. The + application must call Dispose() (or Close) in order to produce a valid zip file. + + + + Typically the application will call Dispose() implicitly, via a using + statement in C#, or a Using statement in VB. + + + + + set this to true, always. + + + + Always returns false. + + + + + Always returns false. + + + + + Always returns true. + + + + + Always returns a NotSupportedException. + + + + + Setting this property always returns a NotSupportedException. Getting it + returns the value of the Position on the underlying stream. + + + + + This is a no-op. + + + + + This method always throws a NotSupportedException. + + ignored + ignored + ignored + nothing + + + + This method always throws a NotSupportedException. + + ignored + ignored + nothing + + + + This method always throws a NotSupportedException. + + ignored + + + + Sort-of like a factory method, ForUpdate is used only when + the application needs to update the zip entry metadata for + a segmented zip file, when the starting segment is earlier + than the ending segment, for a particular entry. + + + + The update is always contiguous, never rolls over. As a + result, this method doesn't need to return a ZSS; it can + simply return a FileStream. That's why it's "sort of" + like a Factory method. + + + Caller must Close/Dispose the stream object returned by + this method. + + + + + + Name of the filesystem file corresponding to the current segment. + + + + The name is not always the name currently being used in the + filesystem. When rwMode is RwMode.Write, the filesystem file has a + temporary name until the stream is closed or until the next segment is + started. + + + + + + Read from the stream + + the buffer to read + the offset at which to start + the number of bytes to read + the number of bytes actually read + + + + Write to the stream. + + the buffer from which to write + the offset at which to start writing + the number of bytes to write + + + + Computes a CRC-32. The CRC-32 algorithm is parameterized - you + can set the polynomial and enable or disable bit + reversal. This can be used for GZIP, BZip2, or ZIP. + + + This type is used internally by DotNetZip; it is generally not used + directly by applications wishing to create, read, or manipulate zip + archive files. + + + + + Indicates the total number of bytes applied to the CRC. + + + + + Indicates the current CRC for all blocks slurped in. + + + + + Returns the CRC32 for the specified stream. + + The stream over which to calculate the CRC32 + the CRC32 calculation + + + + Returns the CRC32 for the specified stream, and writes the input into the + output stream. + + The stream over which to calculate the CRC32 + The stream into which to deflate the input + the CRC32 calculation + + + + Get the CRC32 for the given (word,byte) combo. This is a + computation defined by PKzip for PKZIP 2.0 (weak) encryption. + + The word to start with. + The byte to combine it with. + The CRC-ized result. + + + + Update the value for the running CRC32 using the given block of bytes. + This is useful when using the CRC32() class in a Stream. + + block of bytes to slurp + starting point in the block + how many bytes within the block to slurp + + + + Process one byte in the CRC. + + the byte to include into the CRC . + + + + Process a run of N identical bytes into the CRC. + + + + This method serves as an optimization for updating the CRC when a + run of identical bytes is found. Rather than passing in a buffer of + length n, containing all identical bytes b, this method accepts the + byte value and the length of the (virtual) buffer - the length of + the run. + + + the byte to include into the CRC. + the number of times that byte should be repeated. + + + + Combines the given CRC32 value with the current running total. + + + This is useful when using a divide-and-conquer approach to + calculating a CRC. Multiple threads can each calculate a + CRC32 on a segment of the data, and then combine the + individual CRC32 values at the end. + + the crc value to be combined with this one + the length of data the CRC value was calculated on + + + + Create an instance of the CRC32 class using the default settings: no + bit reversal, and a polynomial of 0xEDB88320. + + + + + Create an instance of the CRC32 class, specifying whether to reverse + data bits or not. + + + specify true if the instance should reverse data bits. + + + + In the CRC-32 used by BZip2, the bits are reversed. Therefore if you + want a CRC32 with compatibility with BZip2, you should pass true + here. In the CRC-32 used by GZIP and PKZIP, the bits are not + reversed; Therefore if you want a CRC32 with compatibility with + those, you should pass false. + + + + + + Create an instance of the CRC32 class, specifying the polynomial and + whether to reverse data bits or not. + + + The polynomial to use for the CRC, expressed in the reversed (LSB) + format: the highest ordered bit in the polynomial value is the + coefficient of the 0th power; the second-highest order bit is the + coefficient of the 1 power, and so on. Expressed this way, the + polynomial for the CRC-32C used in IEEE 802.3, is 0xEDB88320. + + + specify true if the instance should reverse data bits. + + + + + In the CRC-32 used by BZip2, the bits are reversed. Therefore if you + want a CRC32 with compatibility with BZip2, you should pass true + here for the reverseBits parameter. In the CRC-32 used by + GZIP and PKZIP, the bits are not reversed; Therefore if you want a + CRC32 with compatibility with those, you should pass false for the + reverseBits parameter. + + + + + + Reset the CRC-32 class - clear the CRC "remainder register." + + + + Use this when employing a single instance of this class to compute + multiple, distinct CRCs on multiple, distinct data blocks. + + + + + + A Stream that calculates a CRC32 (a checksum) on all bytes read, + or on all bytes written. + + + + + This class can be used to verify the CRC of a ZipEntry when + reading from a stream, or to calculate a CRC when writing to a + stream. The stream should be used to either read, or write, but + not both. If you intermix reads and writes, the results are not + defined. + + + + This class is intended primarily for use internally by the + DotNetZip library. + + + + + + The default constructor. + + + + Instances returned from this constructor will leave the underlying + stream open upon Close(). The stream uses the default CRC32 + algorithm, which implies a polynomial of 0xEDB88320. + + + The underlying stream + + + + The constructor allows the caller to specify how to handle the + underlying stream at close. + + + + The stream uses the default CRC32 algorithm, which implies a + polynomial of 0xEDB88320. + + + The underlying stream + true to leave the underlying stream + open upon close of the CrcCalculatorStream; false otherwise. + + + + A constructor allowing the specification of the length of the stream + to read. + + + + The stream uses the default CRC32 algorithm, which implies a + polynomial of 0xEDB88320. + + + Instances returned from this constructor will leave the underlying + stream open upon Close(). + + + The underlying stream + The length of the stream to slurp + + + + A constructor allowing the specification of the length of the stream + to read, as well as whether to keep the underlying stream open upon + Close(). + + + + The stream uses the default CRC32 algorithm, which implies a + polynomial of 0xEDB88320. + + + The underlying stream + The length of the stream to slurp + true to leave the underlying stream + open upon close of the CrcCalculatorStream; false otherwise. + + + + A constructor allowing the specification of the length of the stream + to read, as well as whether to keep the underlying stream open upon + Close(), and the CRC32 instance to use. + + + + The stream uses the specified CRC32 instance, which allows the + application to specify how the CRC gets calculated. + + + The underlying stream + The length of the stream to slurp + true to leave the underlying stream + open upon close of the CrcCalculatorStream; false otherwise. + the CRC32 instance to use to calculate the CRC32 + + + + Gets the total number of bytes run through the CRC32 calculator. + + + + This is either the total number of bytes read, or the total number of + bytes written, depending on the direction of this stream. + + + + + Provides the current CRC for all blocks slurped in. + + + + The running total of the CRC is kept as data is written or read + through the stream. read this property after all reads or writes to + get an accurate CRC for the entire stream. + + + + + + Indicates whether the underlying stream will be left open when the + CrcCalculatorStream is Closed. + + + + Set this at any point before calling . + + + + + + Read from the stream + + the buffer to read + the offset at which to start + the number of bytes to read + the number of bytes actually read + + + + Write to the stream. + + the buffer from which to write + the offset at which to start writing + the number of bytes to write + + + + Indicates whether the stream supports reading. + + + + + Indicates whether the stream supports seeking. + + + + Always returns false. + + + + + + Indicates whether the stream supports writing. + + + + + Flush the stream. + + + + + Returns the length of the underlying stream. + + + + + The getter for this property returns the total bytes read. + If you use the setter, it will throw + . + + + + + Seeking is not supported on this stream. This method always throws + + + N/A + N/A + N/A + + + + This method always throws + + + N/A + + + + Closes the stream. + + + + + Enumerates the options for a logical conjunction. This enum is intended for use + internally by the FileSelector class. + + + + + FileSelector encapsulates logic that selects files from a source - a zip file + or the filesystem - based on a set of criteria. This class is used internally + by the DotNetZip library, in particular for the AddSelectedFiles() methods. + This class can also be used independently of the zip capability in DotNetZip. + + + + + + The FileSelector class is used internally by the ZipFile class for selecting + files for inclusion into the ZipFile, when the method, or one of + its overloads, is called. It's also used for the methods. Typically, an + application that creates or manipulates Zip archives will not directly + interact with the FileSelector class. + + + + Some applications may wish to use the FileSelector class directly, to + select files from disk volumes based on a set of criteria, without creating or + querying Zip archives. The file selection criteria include: a pattern to + match the filename; the last modified, created, or last accessed time of the + file; the size of the file; and the attributes of the file. + + + + Consult the documentation for + for more information on specifying the selection criteria. + + + + + + + Constructor that allows the caller to specify file selection criteria. + + + + + This constructor allows the caller to specify a set of criteria for + selection of files. + + + + See for a description of + the syntax of the selectionCriteria string. + + + + By default the FileSelector will traverse NTFS Reparse Points. To + change this, use FileSelector(String, bool). + + + + The criteria for file selection. + + + + Constructor that allows the caller to specify file selection criteria. + + + + + This constructor allows the caller to specify a set of criteria for + selection of files. + + + + See for a description of + the syntax of the selectionCriteria string. + + + + The criteria for file selection. + + whether to traverse NTFS reparse points (junctions). + + + + + The string specifying which files to include when retrieving. + + + + + Specify the criteria in statements of 3 elements: a noun, an operator, + and a value. Consider the string "name != *.doc" . The noun is + "name". The operator is "!=", implying "Not Equal". The value is + "*.doc". That criterion, in English, says "all files with a name that + does not end in the .doc extension." + + + + Supported nouns include "name" (or "filename") for the filename; + "atime", "mtime", and "ctime" for last access time, last modfied time, + and created time of the file, respectively; "attributes" (or "attrs") + for the file attributes; "size" (or "length") for the file length + (uncompressed); and "type" for the type of object, either a file or a + directory. The "attributes", "type", and "name" nouns all support = + and != as operators. The "size", "atime", "mtime", and "ctime" nouns + support = and !=, and >, >=, <, <= as well. The times are + taken to be expressed in local time. + + + + Specify values for the file attributes as a string with one or more of + the characters H,R,S,A,I,L in any order, implying file attributes of + Hidden, ReadOnly, System, Archive, NotContextIndexed, and ReparsePoint + (symbolic link) respectively. + + + + To specify a time, use YYYY-MM-DD-HH:mm:ss or YYYY/MM/DD-HH:mm:ss as + the format. If you omit the HH:mm:ss portion, it is assumed to be + 00:00:00 (midnight). + + + + The value for a size criterion is expressed in integer quantities of + bytes, kilobytes (use k or kb after the number), megabytes (m or mb), + or gigabytes (g or gb). + + + + The value for a name is a pattern to match against the filename, + potentially including wildcards. The pattern follows CMD.exe glob + rules: * implies one or more of any character, while ? implies one + character. If the name pattern contains any slashes, it is matched to + the entire filename, including the path; otherwise, it is matched + against only the filename without the path. This means a pattern of + "*\*.*" matches all files one directory level deep, while a pattern of + "*.*" matches all files in all directories. + + + + To specify a name pattern that includes spaces, use single quotes + around the pattern. A pattern of "'* *.*'" will match all files that + have spaces in the filename. The full criteria string for that would + be "name = '* *.*'" . + + + + The value for a type criterion is either F (implying a file) or D + (implying a directory). + + + + Some examples: + + + + + criteria + Files retrieved + + + + name != *.xls + any file with an extension that is not .xls + + + + + name = *.mp3 + any file with a .mp3 extension. + + + + + *.mp3 + (same as above) any file with a .mp3 extension. + + + + + attributes = A + all files whose attributes include the Archive bit. + + + + + attributes != H + all files whose attributes do not include the Hidden bit. + + + + + mtime > 2009-01-01 + all files with a last modified time after January 1st, 2009. + + + + + ctime > 2009/01/01-03:00:00 + all files with a created time after 3am (local time), + on January 1st, 2009. + + + + + size > 2gb + all files whose uncompressed size is greater than 2gb. + + + + + type = D + all directories in the filesystem. + + + + + + You can combine criteria with the conjunctions AND, OR, and XOR. Using + a string like "name = *.txt AND size >= 100k" for the + selectionCriteria retrieves entries whose names end in .txt, and whose + uncompressed size is greater than or equal to 100 kilobytes. + + + + For more complex combinations of criteria, you can use parenthesis to + group clauses in the boolean logic. Absent parenthesis, the + precedence of the criterion atoms is determined by order of + appearance. Unlike the C# language, the AND conjunction does not take + precendence over the logical OR. This is important only in strings + that contain 3 or more criterion atoms. In other words, "name = *.txt + and size > 1000 or attributes = H" implies "((name = *.txt AND size + > 1000) OR attributes = H)" while "attributes = H OR name = *.txt + and size > 1000" evaluates to "((attributes = H OR name = *.txt) + AND size > 1000)". When in doubt, use parenthesis. + + + + Using time properties requires some extra care. If you want to + retrieve all entries that were last updated on 2009 February 14, + specify "mtime >= 2009-02-14 AND mtime < 2009-02-15". Read this + to say: all files updated after 12:00am on February 14th, until + 12:00am on February 15th. You can use the same bracketing approach to + specify any time period - a year, a month, a week, and so on. + + + + The syntax allows one special case: if you provide a string with no + spaces, it is treated as a pattern to match for the filename. + Therefore a string like "*.xls" will be equivalent to specifying "name + = *.xls". This "shorthand" notation does not work with compound + criteria. + + + + There is no logic in this class that insures that the inclusion + criteria are internally consistent. For example, it's possible to + specify criteria that says the file must have a size of less than 100 + bytes, as well as a size that is greater than 1000 bytes. Obviously + no file will ever satisfy such criteria, but this class does not check + for or detect such inconsistencies. + + + + + + Thrown in the setter if the value has an invalid syntax. + + + + + Indicates whether searches will traverse NTFS reparse points, like Junctions. + + + + + Returns a string representation of the FileSelector object. + + The string representation of the boolean logic statement of the file + selection criteria for this instance. + + + + Returns the names of the files in the specified directory + that fit the selection criteria specified in the FileSelector. + + + + This is equivalent to calling + with recurseDirectories = false. + + + + The name of the directory over which to apply the FileSelector + criteria. + + + + A collection of strings containing fully-qualified pathnames of files + that match the criteria specified in the FileSelector instance. + + + + + Returns the names of the files in the specified directory that fit the + selection criteria specified in the FileSelector, optionally recursing + through subdirectories. + + + + This method applies the file selection criteria contained in the + FileSelector to the files contained in the given directory, and + returns the names of files that conform to the criteria. + + + + The name of the directory over which to apply the FileSelector + criteria. + + + + Whether to recurse through subdirectories when applying the file + selection criteria. + + + + A collection of strings containing fully-qualified pathnames of files + that match the criteria specified in the FileSelector instance. + + + + + Retrieve the ZipEntry items in the ZipFile that conform to the specified criteria. + + + + + This method applies the criteria set in the FileSelector instance (as described in + the ) to the specified ZipFile. Using this + method, for example, you can retrieve all entries from the given ZipFile that + have filenames ending in .txt. + + + + Normally, applications would not call this method directly. This method is used + by the ZipFile class. + + + + Using the appropriate SelectionCriteria, you can retrieve entries based on size, + time, and attributes. See for a + description of the syntax of the SelectionCriteria string. + + + + + The ZipFile from which to retrieve entries. + + a collection of ZipEntry objects that conform to the criteria. + + + + Retrieve the ZipEntry items in the ZipFile that conform to the specified criteria. + + + + + This method applies the criteria set in the FileSelector instance (as described in + the ) to the specified ZipFile. Using this + method, for example, you can retrieve all entries from the given ZipFile that + have filenames ending in .txt. + + + + Normally, applications would not call this method directly. This method is used + by the ZipFile class. + + + + This overload allows the selection of ZipEntry instances from the ZipFile to be restricted + to entries contained within a particular directory in the ZipFile. + + + + Using the appropriate SelectionCriteria, you can retrieve entries based on size, + time, and attributes. See for a + description of the syntax of the SelectionCriteria string. + + + + + The ZipFile from which to retrieve entries. + + + the directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + + a collection of ZipEntry objects that conform to the criteria. + + + + Summary description for EnumUtil. + + + + + Returns the value of the DescriptionAttribute if the specified Enum + value has one. If not, returns the ToString() representation of the + Enum value. + + The Enum to get the description for + + + + + Converts the string representation of the name or numeric value of one + or more enumerated constants to an equivalent enumerated object. + Note: use the DescriptionAttribute on enum values to enable this. + + The System.Type of the enumeration. + + A string containing the name or value to convert. + + + + + + Converts the string representation of the name or numeric value of one + or more enumerated constants to an equivalent enumerated object. A + parameter specified whether the operation is case-sensitive. Note: + use the DescriptionAttribute on enum values to enable this. + + The System.Type of the enumeration. + + A string containing the name or value to convert. + + + Whether the operation is case-sensitive or not. + + + + + A class for compressing and decompressing streams using the Deflate algorithm. + + + + + + The DeflateStream is a Decorator on a . It adds DEFLATE compression or decompression to any + stream. + + + + Using this stream, applications can compress or decompress data via stream + Read and Write operations. Either compresssion or decompression + can occur through either reading or writing. The compression format used is + DEFLATE, which is documented in IETF RFC 1951, "DEFLATE + Compressed Data Format Specification version 1.3.". + + + + This class is similar to , except that + ZlibStream adds the RFC + 1950 - ZLIB framing bytes to a compressed stream when compressing, or + expects the RFC1950 framing bytes when decompressing. The DeflateStream + does not. + + + + + + + + + + Create a DeflateStream using the specified CompressionMode. + + + + When mode is CompressionMode.Compress, the DeflateStream will use + the default compression level. The "captive" stream will be closed when + the DeflateStream is closed. + + + + This example uses a DeflateStream to compress data from a file, and writes + the compressed data to another file. + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(fileToCompress + ".deflated")) + { + using (Stream compressor = new DeflateStream(raw, CompressionMode.Compress)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(fileToCompress & ".deflated") + Using compressor As Stream = New DeflateStream(raw, CompressionMode.Compress) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + The stream which will be read or written. + Indicates whether the DeflateStream will compress or decompress. + + + + Create a DeflateStream using the specified CompressionMode and the specified CompressionLevel. + + + + + + When mode is CompressionMode.Decompress, the level parameter is + ignored. The "captive" stream will be closed when the DeflateStream is + closed. + + + + + + + This example uses a DeflateStream to compress data from a file, and writes + the compressed data to another file. + + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(fileToCompress + ".deflated")) + { + using (Stream compressor = new DeflateStream(raw, + CompressionMode.Compress, + CompressionLevel.BestCompression)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n= -1; + while (n != 0) + { + if (n > 0) + compressor.Write(buffer, 0, n); + n= input.Read(buffer, 0, buffer.Length); + } + } + } + } + + + + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(fileToCompress & ".deflated") + Using compressor As Stream = New DeflateStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + The stream to be read or written while deflating or inflating. + Indicates whether the DeflateStream will compress or decompress. + A tuning knob to trade speed for effectiveness. + + + + Create a DeflateStream using the specified + CompressionMode, and explicitly specify whether the + stream should be left open after Deflation or Inflation. + + + + + + This constructor allows the application to request that the captive stream + remain open after the deflation or inflation occurs. By default, after + Close() is called on the stream, the captive stream is also + closed. In some cases this is not desired, for example if the stream is a + memory stream that will be re-read after compression. Specify true for + the parameter to leave the stream open. + + + + The DeflateStream will use the default compression level. + + + + See the other overloads of this constructor for example code. + + + + + The stream which will be read or written. This is called the + "captive" stream in other places in this documentation. + + + + Indicates whether the DeflateStream will compress or decompress. + + + true if the application would like the stream to + remain open after inflation/deflation. + + + + Create a DeflateStream using the specified CompressionMode + and the specified CompressionLevel, and explicitly specify whether + the stream should be left open after Deflation or Inflation. + + + + + + When mode is CompressionMode.Decompress, the level parameter is ignored. + + + + This constructor allows the application to request that the captive stream + remain open after the deflation or inflation occurs. By default, after + Close() is called on the stream, the captive stream is also + closed. In some cases this is not desired, for example if the stream is a + that will be re-read after + compression. Specify true for the parameter + to leave the stream open. + + + + + + + This example shows how to use a DeflateStream to compress data from + a file, and store the compressed data into another file. + + + using (var output = System.IO.File.Create(fileToCompress + ".deflated")) + { + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (Stream compressor = new DeflateStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, true)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n= -1; + while (n != 0) + { + if (n > 0) + compressor.Write(buffer, 0, n); + n= input.Read(buffer, 0, buffer.Length); + } + } + } + // can write additional data to the output stream here + } + + + + Using output As FileStream = File.Create(fileToCompress & ".deflated") + Using input As Stream = File.OpenRead(fileToCompress) + Using compressor As Stream = New DeflateStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, True) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + ' can write additional data to the output stream here. + End Using + + + The stream which will be read or written. + Indicates whether the DeflateStream will compress or decompress. + true if the application would like the stream to remain open after inflation/deflation. + A tuning knob to trade speed for effectiveness. + + + + This property sets the flush behavior on the stream. + + See the ZLIB documentation for the meaning of the flush behavior. + + + + + The size of the working buffer for the compression codec. + + + + + The working buffer is used for all stream operations. The default size is + 1024 bytes. The minimum size is 128 bytes. You may get better performance + with a larger buffer. Then again, you might not. You would have to test + it. + + + + Set this before the first call to Read() or Write() on the + stream. If you try to set it afterwards, it will throw. + + + + + + The ZLIB strategy to be used during compression. + + + + By tweaking this parameter, you may be able to optimize the compression for + data with particular characteristics. + + + + Returns the total number of bytes input so far. + + + Returns the total number of bytes output so far. + + + + Dispose the stream. + + + + This may or may not result in a Close() call on the captive + stream. See the constructors that have a leaveOpen parameter + for more information. + + + Application code won't call this code directly. This method may be + invoked in two distinct scenarios. If disposing == true, the method + has been called directly or indirectly by a user's code, for example + via the public Dispose() method. In this case, both managed and + unmanaged resources can be referenced and disposed. If disposing == + false, the method has been called by the runtime from inside the + object finalizer and this method should not reference other objects; + in that case only unmanaged resources must be referenced or + disposed. + + + + true if the Dispose method was invoked by user code. + + + + + Indicates whether the stream can be read. + + + The return value depends on whether the captive stream supports reading. + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream can be written. + + + The return value depends on whether the captive stream supports writing. + + + + + Flush the stream. + + + + + Reading this property always throws a . + + + + + The position of the stream pointer. + + + + Setting this property always throws a . Reading will return the total bytes + written out, if used in writing, or the total bytes read in, if used in + reading. The count may refer to compressed bytes or uncompressed bytes, + depending on how you've used the stream. + + + + + Read data from the stream. + + + + + If you wish to use the DeflateStream to compress data while + reading, you can create a DeflateStream with + CompressionMode.Compress, providing an uncompressed data stream. + Then call Read() on that DeflateStream, and the data read will be + compressed as you read. If you wish to use the DeflateStream to + decompress data while reading, you can create a DeflateStream with + CompressionMode.Decompress, providing a readable compressed data + stream. Then call Read() on that DeflateStream, and the data read + will be decompressed as you read. + + + + A DeflateStream can be used for Read() or Write(), but not both. + + + + The buffer into which the read data should be placed. + the offset within that data array to put the first byte read. + the number of bytes to read. + the number of bytes actually read + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + this is irrelevant, since it will always throw! + irrelevant! + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + + + + Write data to the stream. + + + + + If you wish to use the DeflateStream to compress data while + writing, you can create a DeflateStream with + CompressionMode.Compress, and a writable output stream. Then call + Write() on that DeflateStream, providing uncompressed data + as input. The data sent to the output stream will be the compressed form + of the data written. If you wish to use the DeflateStream to + decompress data while writing, you can create a DeflateStream with + CompressionMode.Decompress, and a writable output stream. Then + call Write() on that stream, providing previously compressed + data. The data sent to the output stream will be the decompressed form of + the data written. + + + + A DeflateStream can be used for Read() or Write(), + but not both. + + + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Compress a string into a byte array using DEFLATE (RFC 1951). + + + + Uncompress it with . + + + DeflateStream.UncompressString(byte[]) + DeflateStream.CompressBuffer(byte[]) + GZipStream.CompressString(string) + ZlibStream.CompressString(string) + + + A string to compress. The string will first be encoded + using UTF8, then compressed. + + + The string in compressed form + + + + Compress a byte array into a new byte array using DEFLATE. + + + + Uncompress it with . + + + DeflateStream.CompressString(string) + DeflateStream.UncompressBuffer(byte[]) + GZipStream.CompressBuffer(byte[]) + ZlibStream.CompressBuffer(byte[]) + + + A buffer to compress. + + + The data in compressed form + + + + Uncompress a DEFLATE'd byte array into a single string. + + + DeflateStream.CompressString(String) + DeflateStream.UncompressBuffer(byte[]) + GZipStream.UncompressString(byte[]) + ZlibStream.UncompressString(byte[]) + + + A buffer containing DEFLATE-compressed data. + + + The uncompressed string + + + + Uncompress a DEFLATE'd byte array into a byte array. + + + DeflateStream.CompressBuffer(byte[]) + DeflateStream.UncompressString(byte[]) + GZipStream.UncompressBuffer(byte[]) + ZlibStream.UncompressBuffer(byte[]) + + + A buffer containing data that has been compressed with DEFLATE. + + + The data in uncompressed form + + + + A class for compressing and decompressing GZIP streams. + + + + + The GZipStream is a Decorator on a + . It adds GZIP compression or decompression to any + stream. + + + + Like the System.IO.Compression.GZipStream in the .NET Base Class Library, the + Ionic.Zlib.GZipStream can compress while writing, or decompress while + reading, but not vice versa. The compression method used is GZIP, which is + documented in IETF RFC + 1952, "GZIP file format specification version 4.3". + + + A GZipStream can be used to decompress data (through Read()) or + to compress data (through Write()), but not both. + + + + If you wish to use the GZipStream to compress data, you must wrap it + around a write-able stream. As you call Write() on the GZipStream, the + data will be compressed into the GZIP format. If you want to decompress data, + you must wrap the GZipStream around a readable stream that contains an + IETF RFC 1952-compliant stream. The data will be decompressed as you call + Read() on the GZipStream. + + + + Though the GZIP format allows data from multiple files to be concatenated + together, this stream handles only a single segment of GZIP format, typically + representing a single file. + + + + This class is similar to and . + ZlibStream handles RFC1950-compliant streams. + handles RFC1951-compliant streams. This class handles RFC1952-compliant streams. + + + + + + + + + + The comment on the GZIP stream. + + + + + The GZIP format allows for each file to optionally have an associated + comment stored with the file. The comment is encoded with the ISO-8859-1 + code page. To include a comment in a GZIP stream you create, set this + property before calling Write() for the first time on the + GZipStream. + + + + When using GZipStream to decompress, you can retrieve this property + after the first call to Read(). If no comment has been set in the + GZIP bytestream, the Comment property will return null + (Nothing in VB). + + + + + + The FileName for the GZIP stream. + + + + + + The GZIP format optionally allows each file to have an associated + filename. When compressing data (through Write()), set this + FileName before calling Write() the first time on the GZipStream. + The actual filename is encoded into the GZIP bytestream with the + ISO-8859-1 code page, according to RFC 1952. It is the application's + responsibility to insure that the FileName can be encoded and decoded + correctly with this code page. + + + + When decompressing (through Read()), you can retrieve this value + any time after the first Read(). In the case where there was no filename + encoded into the GZIP bytestream, the property will return null (Nothing + in VB). + + + + + + The last modified time for the GZIP stream. + + + + GZIP allows the storage of a last modified time with each GZIP entry. + When compressing data, you can set this before the first call to + Write(). When decompressing, you can retrieve this value any time + after the first call to Read(). + + + + + The CRC on the GZIP stream. + + + This is used for internal error checking. You probably don't need to look at this property. + + + + + Create a GZipStream using the specified CompressionMode. + + + + + When mode is CompressionMode.Compress, the GZipStream will use the + default compression level. + + + + As noted in the class documentation, the CompressionMode (Compress + or Decompress) also establishes the "direction" of the stream. A + GZipStream with CompressionMode.Compress works only through + Write(). A GZipStream with + CompressionMode.Decompress works only through Read(). + + + + + + This example shows how to use a GZipStream to compress data. + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(outputFile)) + { + using (Stream compressor = new GZipStream(raw, CompressionMode.Compress)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + Dim outputFile As String = (fileToCompress & ".compressed") + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(outputFile) + Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + + + This example shows how to use a GZipStream to uncompress a file. + + private void GunZipFile(string filename) + { + if (!filename.EndsWith(".gz)) + throw new ArgumentException("filename"); + var DecompressedFile = filename.Substring(0,filename.Length-3); + byte[] working = new byte[WORKING_BUFFER_SIZE]; + int n= 1; + using (System.IO.Stream input = System.IO.File.OpenRead(filename)) + { + using (Stream decompressor= new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, true)) + { + using (var output = System.IO.File.Create(DecompressedFile)) + { + while (n !=0) + { + n= decompressor.Read(working, 0, working.Length); + if (n > 0) + { + output.Write(working, 0, n); + } + } + } + } + } + } + + + + Private Sub GunZipFile(ByVal filename as String) + If Not (filename.EndsWith(".gz)) Then + Throw New ArgumentException("filename") + End If + Dim DecompressedFile as String = filename.Substring(0,filename.Length-3) + Dim working(WORKING_BUFFER_SIZE) as Byte + Dim n As Integer = 1 + Using input As Stream = File.OpenRead(filename) + Using decompressor As Stream = new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, True) + Using output As Stream = File.Create(UncompressedFile) + Do + n= decompressor.Read(working, 0, working.Length) + If n > 0 Then + output.Write(working, 0, n) + End IF + Loop While (n > 0) + End Using + End Using + End Using + End Sub + + + + The stream which will be read or written. + Indicates whether the GZipStream will compress or decompress. + + + + Create a GZipStream using the specified CompressionMode and + the specified CompressionLevel. + + + + + The CompressionMode (Compress or Decompress) also establishes the + "direction" of the stream. A GZipStream with + CompressionMode.Compress works only through Write(). A + GZipStream with CompressionMode.Decompress works only + through Read(). + + + + + + + This example shows how to use a GZipStream to compress a file into a .gz file. + + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(fileToCompress + ".gz")) + { + using (Stream compressor = new GZipStream(raw, + CompressionMode.Compress, + CompressionLevel.BestCompression)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(fileToCompress & ".gz") + Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + The stream to be read or written while deflating or inflating. + Indicates whether the GZipStream will compress or decompress. + A tuning knob to trade speed for effectiveness. + + + + Create a GZipStream using the specified CompressionMode, and + explicitly specify whether the stream should be left open after Deflation + or Inflation. + + + + + This constructor allows the application to request that the captive stream + remain open after the deflation or inflation occurs. By default, after + Close() is called on the stream, the captive stream is also + closed. In some cases this is not desired, for example if the stream is a + memory stream that will be re-read after compressed data has been written + to it. Specify true for the parameter to leave + the stream open. + + + + The (Compress or Decompress) also + establishes the "direction" of the stream. A GZipStream with + CompressionMode.Compress works only through Write(). A GZipStream + with CompressionMode.Decompress works only through Read(). + + + + The GZipStream will use the default compression level. If you want + to specify the compression level, see . + + + + See the other overloads of this constructor for example code. + + + + + + The stream which will be read or written. This is called the "captive" + stream in other places in this documentation. + + + Indicates whether the GZipStream will compress or decompress. + + + + true if the application would like the base stream to remain open after + inflation/deflation. + + + + + Create a GZipStream using the specified CompressionMode and the + specified CompressionLevel, and explicitly specify whether the + stream should be left open after Deflation or Inflation. + + + + + + This constructor allows the application to request that the captive stream + remain open after the deflation or inflation occurs. By default, after + Close() is called on the stream, the captive stream is also + closed. In some cases this is not desired, for example if the stream is a + memory stream that will be re-read after compressed data has been written + to it. Specify true for the parameter to + leave the stream open. + + + + As noted in the class documentation, the CompressionMode (Compress + or Decompress) also establishes the "direction" of the stream. A + GZipStream with CompressionMode.Compress works only through + Write(). A GZipStream with CompressionMode.Decompress works only + through Read(). + + + + + + This example shows how to use a GZipStream to compress data. + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(outputFile)) + { + using (Stream compressor = new GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression, true)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + Dim outputFile As String = (fileToCompress & ".compressed") + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(outputFile) + Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression, True) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + The stream which will be read or written. + Indicates whether the GZipStream will compress or decompress. + true if the application would like the stream to remain open after inflation/deflation. + A tuning knob to trade speed for effectiveness. + + + + This property sets the flush behavior on the stream. + + + + + The size of the working buffer for the compression codec. + + + + + The working buffer is used for all stream operations. The default size is + 1024 bytes. The minimum size is 128 bytes. You may get better performance + with a larger buffer. Then again, you might not. You would have to test + it. + + + + Set this before the first call to Read() or Write() on the + stream. If you try to set it afterwards, it will throw. + + + + + Returns the total number of bytes input so far. + + + Returns the total number of bytes output so far. + + + + Dispose the stream. + + + + This may or may not result in a Close() call on the captive + stream. See the constructors that have a leaveOpen parameter + for more information. + + + This method may be invoked in two distinct scenarios. If disposing + == true, the method has been called directly or indirectly by a + user's code, for example via the public Dispose() method. In this + case, both managed and unmanaged resources can be referenced and + disposed. If disposing == false, the method has been called by the + runtime from inside the object finalizer and this method should not + reference other objects; in that case only unmanaged resources must + be referenced or disposed. + + + + indicates whether the Dispose method was invoked by user code. + + + + + Indicates whether the stream can be read. + + + The return value depends on whether the captive stream supports reading. + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream can be written. + + + The return value depends on whether the captive stream supports writing. + + + + + Flush the stream. + + + + + Reading this property always throws a . + + + + + The position of the stream pointer. + + + + Setting this property always throws a . Reading will return the total bytes + written out, if used in writing, or the total bytes read in, if used in + reading. The count may refer to compressed bytes or uncompressed bytes, + depending on how you've used the stream. + + + + + Read and decompress data from the source stream. + + + + With a GZipStream, decompression is done through reading. + + + + + byte[] working = new byte[WORKING_BUFFER_SIZE]; + using (System.IO.Stream input = System.IO.File.OpenRead(_CompressedFile)) + { + using (Stream decompressor= new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, true)) + { + using (var output = System.IO.File.Create(_DecompressedFile)) + { + int n; + while ((n= decompressor.Read(working, 0, working.Length)) !=0) + { + output.Write(working, 0, n); + } + } + } + } + + + The buffer into which the decompressed data should be placed. + the offset within that data array to put the first byte read. + the number of bytes to read. + the number of bytes actually read + + + + Calling this method always throws a . + + irrelevant; it will always throw! + irrelevant; it will always throw! + irrelevant! + + + + Calling this method always throws a . + + irrelevant; this method will always throw! + + + + Write data to the stream. + + + + + If you wish to use the GZipStream to compress data while writing, + you can create a GZipStream with CompressionMode.Compress, and a + writable output stream. Then call Write() on that GZipStream, + providing uncompressed data as input. The data sent to the output stream + will be the compressed form of the data written. + + + + A GZipStream can be used for Read() or Write(), but not + both. Writing implies compression. Reading implies decompression. + + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Compress a string into a byte array using GZip. + + + + Uncompress it with . + + + + + + + A string to compress. The string will first be encoded + using UTF8, then compressed. + + + The string in compressed form + + + + Compress a byte array into a new byte array using GZip. + + + + Uncompress it with . + + + + + + + A buffer to compress. + + + The data in compressed form + + + + Uncompress a GZip'ed byte array into a single string. + + + + + + + A buffer containing GZIP-compressed data. + + + The uncompressed string + + + + Uncompress a GZip'ed byte array into a byte array. + + + + + + + A buffer containing data that has been compressed with GZip. + + + The data in uncompressed form + + + + A class for compressing streams using the + Deflate algorithm with multiple threads. + + + + + This class performs DEFLATE compression through writing. For + more information on the Deflate algorithm, see IETF RFC 1951, + "DEFLATE Compressed Data Format Specification version 1.3." + + + + This class is similar to , except + that this class is for compression only, and this implementation uses an + approach that employs multiple worker threads to perform the DEFLATE. On + a multi-cpu or multi-core computer, the performance of this class can be + significantly higher than the single-threaded DeflateStream, particularly + for larger streams. How large? Anything over 10mb is a good candidate + for parallel compression. + + + + The tradeoff is that this class uses more memory and more CPU than the + vanilla DeflateStream, and also is less efficient as a compressor. For + large files the size of the compressed data stream can be less than 1% + larger than the size of a compressed data stream from the vanialla + DeflateStream. For smaller files the difference can be larger. The + difference will also be larger if you set the BufferSize to be lower than + the default value. Your mileage may vary. Finally, for small files, the + ParallelDeflateOutputStream can be much slower than the vanilla + DeflateStream, because of the overhead associated to using the thread + pool. + + + + + + + + Create a ParallelDeflateOutputStream. + + + + + This stream compresses data written into it via the DEFLATE + algorithm (see RFC 1951), and writes out the compressed byte stream. + + + + The instance will use the default compression level, the default + buffer sizes and the default number of threads and buffers per + thread. + + + + This class is similar to , + except that this implementation uses an approach that employs + multiple worker threads to perform the DEFLATE. On a multi-cpu or + multi-core computer, the performance of this class can be + significantly higher than the single-threaded DeflateStream, + particularly for larger streams. How large? Anything over 10mb is + a good candidate for parallel compression. + + + + + + + This example shows how to use a ParallelDeflateOutputStream to compress + data. It reads a file, compresses it, and writes the compressed data to + a second, output file. + + + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n= -1; + String outputFile = fileToCompress + ".compressed"; + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(outputFile)) + { + using (Stream compressor = new ParallelDeflateOutputStream(raw)) + { + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Dim outputFile As String = (fileToCompress & ".compressed") + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(outputFile) + Using compressor As Stream = New ParallelDeflateOutputStream(raw) + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + The stream to which compressed data will be written. + + + + Create a ParallelDeflateOutputStream using the specified CompressionLevel. + + + See the + constructor for example code. + + The stream to which compressed data will be written. + A tuning knob to trade speed for effectiveness. + + + + Create a ParallelDeflateOutputStream and specify whether to leave the captive stream open + when the ParallelDeflateOutputStream is closed. + + + See the + constructor for example code. + + The stream to which compressed data will be written. + + true if the application would like the stream to remain open after inflation/deflation. + + + + + Create a ParallelDeflateOutputStream and specify whether to leave the captive stream open + when the ParallelDeflateOutputStream is closed. + + + See the + constructor for example code. + + The stream to which compressed data will be written. + A tuning knob to trade speed for effectiveness. + + true if the application would like the stream to remain open after inflation/deflation. + + + + + Create a ParallelDeflateOutputStream using the specified + CompressionLevel and CompressionStrategy, and specifying whether to + leave the captive stream open when the ParallelDeflateOutputStream is + closed. + + + See the + constructor for example code. + + The stream to which compressed data will be written. + A tuning knob to trade speed for effectiveness. + + By tweaking this parameter, you may be able to optimize the compression for + data with particular characteristics. + + + true if the application would like the stream to remain open after inflation/deflation. + + + + + The ZLIB strategy to be used during compression. + + + + + + The maximum number of buffer pairs to use. + + + + + This property sets an upper limit on the number of memory buffer + pairs to create. The implementation of this stream allocates + multiple buffers to facilitate parallel compression. As each buffer + fills up, this stream uses + ThreadPool.QueueUserWorkItem() + to compress those buffers in a background threadpool thread. After a + buffer is compressed, it is re-ordered and written to the output + stream. + + + + A higher number of buffer pairs enables a higher degree of + parallelism, which tends to increase the speed of compression on + multi-cpu computers. On the other hand, a higher number of buffer + pairs also implies a larger memory consumption, more active worker + threads, and a higher cpu utilization for any compression. This + property enables the application to limit its memory consumption and + CPU utilization behavior depending on requirements. + + + + For each compression "task" that occurs in parallel, there are 2 + buffers allocated: one for input and one for output. This property + sets a limit for the number of pairs. The total amount of storage + space allocated for buffering will then be (N*S*2), where N is the + number of buffer pairs, S is the size of each buffer (). By default, DotNetZip allocates 4 buffer + pairs per CPU core, so if your machine has 4 cores, and you retain + the default buffer size of 128k, then the + ParallelDeflateOutputStream will use 4 * 4 * 2 * 128kb of buffer + memory in total, or 4mb, in blocks of 128kb. If you then set this + property to 8, then the number will be 8 * 2 * 128kb of buffer + memory, or 2mb. + + + + CPU utilization will also go up with additional buffers, because a + larger number of buffer pairs allows a larger number of background + threads to compress in parallel. If you find that parallel + compression is consuming too much memory or CPU, you can adjust this + value downward. + + + + The default value is 16. Different values may deliver better or + worse results, depending on your priorities and the dynamic + performance characteristics of your storage and compute resources. + + + + This property is not the number of buffer pairs to use; it is an + upper limit. An illustration: Suppose you have an application that + uses the default value of this property (which is 16), and it runs + on a machine with 2 CPU cores. In that case, DotNetZip will allocate + 4 buffer pairs per CPU core, for a total of 8 pairs. The upper + limit specified by this property has no effect. + + + + The application can set this value at any time, but it is effective + only before the first call to Write(), which is when the buffers are + allocated. + + + + + + The size of the buffers used by the compressor threads. + + + + + The default buffer size is 128k. The application can set this value + at any time, but it is effective only before the first Write(). + + + + Larger buffer sizes implies larger memory consumption but allows + more efficient compression. Using smaller buffer sizes consumes less + memory but may result in less effective compression. For example, + using the default buffer size of 128k, the compression delivered is + within 1% of the compression delivered by the single-threaded . On the other hand, using a + BufferSize of 8k can result in a compressed data stream that is 5% + larger than that delivered by the single-threaded + DeflateStream. Excessively small buffer sizes can also cause + the speed of the ParallelDeflateOutputStream to drop, because of + larger thread scheduling overhead dealing with many many small + buffers. + + + + The total amount of storage space allocated for buffering will be + (N*S*2), where N is the number of buffer pairs, and S is the size of + each buffer (this property). There are 2 buffers used by the + compressor, one for input and one for output. By default, DotNetZip + allocates 4 buffer pairs per CPU core, so if your machine has 4 + cores, then the number of buffer pairs used will be 16. If you + accept the default value of this property, 128k, then the + ParallelDeflateOutputStream will use 16 * 2 * 128kb of buffer memory + in total, or 4mb, in blocks of 128kb. If you set this property to + 64kb, then the number will be 16 * 2 * 64kb of buffer memory, or + 2mb. + + + + + + + The CRC32 for the data that was written out, prior to compression. + + + This value is meaningful only after a call to Close(). + + + + + The total number of uncompressed bytes processed by the ParallelDeflateOutputStream. + + + This value is meaningful only after a call to Close(). + + + + + Write data to the stream. + + + + + + To use the ParallelDeflateOutputStream to compress data, create a + ParallelDeflateOutputStream with CompressionMode.Compress, passing a + writable output stream. Then call Write() on that + ParallelDeflateOutputStream, providing uncompressed data as input. The + data sent to the output stream will be the compressed form of the data + written. + + + + To decompress data, use the class. + + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Flush the stream. + + + + + Close the stream. + + + You must call Close on the stream to guarantee that all of the data written in has + been compressed, and the compressed data has been written out. + + + + Dispose the object + + + Because ParallelDeflateOutputStream is IDisposable, the + application must call this method when finished using the instance. + + + This method is generally called implicitly upon exit from + a using scope in C# (Using in VB). + + + + + The Dispose method + + indicates whether the Dispose method was invoked by user code. + + + + + Resets the stream for use with another stream. + + + Because the ParallelDeflateOutputStream is expensive to create, it + has been designed so that it can be recycled and re-used. You have + to call Close() on the stream first, then you can call Reset() on + it, to use it again on another stream. + + + + The new output stream for this era. + + + + + ParallelDeflateOutputStream deflater = null; + foreach (var inputFile in listOfFiles) + { + string outputFile = inputFile + ".compressed"; + using (System.IO.Stream input = System.IO.File.OpenRead(inputFile)) + { + using (var outStream = System.IO.File.Create(outputFile)) + { + if (deflater == null) + deflater = new ParallelDeflateOutputStream(outStream, + CompressionLevel.Best, + CompressionStrategy.Default, + true); + deflater.Reset(outStream); + + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + deflater.Write(buffer, 0, n); + } + } + } + } + + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream supports Read operations. + + + Always returns false. + + + + + Indicates whether the stream supports Write operations. + + + Returns true if the provided stream is writable. + + + + + Reading this property always throws a NotSupportedException. + + + + + Returns the current position of the output stream. + + + + Because the output gets written by a background thread, + the value may change asynchronously. Setting this + property always throws a NotSupportedException. + + + + + + This method always throws a NotSupportedException. + + + The buffer into which data would be read, IF THIS METHOD + ACTUALLY DID ANYTHING. + + + The offset within that data array at which to insert the + data that is read, IF THIS METHOD ACTUALLY DID + ANYTHING. + + + The number of bytes to write, IF THIS METHOD ACTUALLY DID + ANYTHING. + + nothing. + + + + This method always throws a NotSupportedException. + + + The offset to seek to.... + IF THIS METHOD ACTUALLY DID ANYTHING. + + + The reference specifying how to apply the offset.... IF + THIS METHOD ACTUALLY DID ANYTHING. + + nothing. It always throws. + + + + This method always throws a NotSupportedException. + + + The new value for the stream length.... IF + THIS METHOD ACTUALLY DID ANYTHING. + + + + + Map from a distance to a distance code. + + + No side effects. _dist_code[256] and _dist_code[257] are never used. + + + + + Describes how to flush the current deflate operation. + + + The different FlushType values are useful when using a Deflate in a streaming application. + + + + No flush at all. + + + Closes the current block, but doesn't flush it to + the output. Used internally only in hypothetical + scenarios. This was supposed to be removed by Zlib, but it is + still in use in some edge cases. + + + + + Use this during compression to specify that all pending output should be + flushed to the output buffer and the output should be aligned on a byte + boundary. You might use this in a streaming communication scenario, so that + the decompressor can get all input data available so far. When using this + with a ZlibCodec, AvailableBytesIn will be zero after the call if + enough output space has been provided before the call. Flushing will + degrade compression and so it should be used only when necessary. + + + + + Use this during compression to specify that all output should be flushed, as + with FlushType.Sync, but also, the compression state should be reset + so that decompression can restart from this point if previous compressed + data has been damaged or if random access is desired. Using + FlushType.Full too often can significantly degrade the compression. + + + + Signals the end of the compression/decompression stream. + + + + The compression level to be used when using a DeflateStream or ZlibStream with CompressionMode.Compress. + + + + + None means that the data will be simply stored, with no change at all. + If you are producing ZIPs for use on Mac OSX, be aware that archives produced with CompressionLevel.None + cannot be opened with the default zip reader. Use a different CompressionLevel. + + + + + Same as None. + + + + + The fastest but least effective compression. + + + + + A synonym for BestSpeed. + + + + + A little slower, but better, than level 1. + + + + + A little slower, but better, than level 2. + + + + + A little slower, but better, than level 3. + + + + + A little slower than level 4, but with better compression. + + + + + The default compression level, with a good balance of speed and compression efficiency. + + + + + A synonym for Default. + + + + + Pretty good compression! + + + + + Better compression than Level7! + + + + + The "best" compression, where best means greatest reduction in size of the input data stream. + This is also the slowest compression. + + + + + A synonym for BestCompression. + + + + + Describes options for how the compression algorithm is executed. Different strategies + work better on different sorts of data. The strategy parameter can affect the compression + ratio and the speed of compression but not the correctness of the compresssion. + + + + + The default strategy is probably the best for normal data. + + + + + The Filtered strategy is intended to be used most effectively with data produced by a + filter or predictor. By this definition, filtered data consists mostly of small + values with a somewhat random distribution. In this case, the compression algorithm + is tuned to compress them better. The effect of Filtered is to force more Huffman + coding and less string matching; it is a half-step between Default and HuffmanOnly. + + + + + Using HuffmanOnly will force the compressor to do Huffman encoding only, with no + string matching. + + + + + An enum to specify the direction of transcoding - whether to compress or decompress. + + + + + Used to specify that the stream should compress the data. + + + + + Used to specify that the stream should decompress the data. + + + + + A general purpose exception class for exceptions in the Zlib library. + + + + + The ZlibException class captures exception information generated + by the Zlib library. + + + + + This ctor collects a message attached to the exception. + + the message for the exception. + + + + Performs an unsigned bitwise right shift with the specified number + + Number to operate on + Ammount of bits to shift + The resulting number from the shift operation + + + + Reads a number of characters from the current source TextReader and writes + the data to the target array at the specified index. + + + The source TextReader to read from + Contains the array of characteres read from the source TextReader. + The starting index of the target array. + The maximum number of characters to read from the source TextReader. + + + The number of characters read. The number will be less than or equal to + count depending on the data available in the source TextReader. Returns -1 + if the end of the stream is reached. + + + + + Computes an Adler-32 checksum. + + + The Adler checksum is similar to a CRC checksum, but faster to compute, though less + reliable. It is used in producing RFC1950 compressed streams. The Adler checksum + is a required part of the "ZLIB" standard. Applications will almost never need to + use this class directly. + + + + + + + Calculates the Adler32 checksum. + + + + This is used within ZLIB. You probably don't need to use this directly. + + + + To compute an Adler32 checksum on a byte array: + + var adler = Adler.Adler32(0, null, 0, 0); + adler = Adler.Adler32(adler, buffer, index, length); + + + + + + Encoder and Decoder for ZLIB and DEFLATE (IETF RFC1950 and RFC1951). + + + + This class compresses and decompresses data according to the Deflate algorithm + and optionally, the ZLIB format, as documented in RFC 1950 - ZLIB and RFC 1951 - DEFLATE. + + + + + The buffer from which data is taken. + + + + + An index into the InputBuffer array, indicating where to start reading. + + + + + The number of bytes available in the InputBuffer, starting at NextIn. + + + Generally you should set this to InputBuffer.Length before the first Inflate() or Deflate() call. + The class will update this number as calls to Inflate/Deflate are made. + + + + + Total number of bytes read so far, through all calls to Inflate()/Deflate(). + + + + + Buffer to store output data. + + + + + An index into the OutputBuffer array, indicating where to start writing. + + + + + The number of bytes available in the OutputBuffer, starting at NextOut. + + + Generally you should set this to OutputBuffer.Length before the first Inflate() or Deflate() call. + The class will update this number as calls to Inflate/Deflate are made. + + + + + Total number of bytes written to the output so far, through all calls to Inflate()/Deflate(). + + + + + used for diagnostics, when something goes wrong! + + + + + The compression level to use in this codec. Useful only in compression mode. + + + + + The number of Window Bits to use. + + + This gauges the size of the sliding window, and hence the + compression effectiveness as well as memory consumption. It's best to just leave this + setting alone if you don't know what it is. The maximum value is 15 bits, which implies + a 32k window. + + + + + The compression strategy to use. + + + This is only effective in compression. The theory offered by ZLIB is that different + strategies could potentially produce significant differences in compression behavior + for different data sets. Unfortunately I don't have any good recommendations for how + to set it differently. When I tested changing the strategy I got minimally different + compression performance. It's best to leave this property alone if you don't have a + good feel for it. Or, you may want to produce a test harness that runs through the + different strategy options and evaluates them on different file types. If you do that, + let me know your results. + + + + + The Adler32 checksum on the data transferred through the codec so far. You probably don't need to look at this. + + + + + Create a ZlibCodec. + + + If you use this default constructor, you will later have to explicitly call + InitializeInflate() or InitializeDeflate() before using the ZlibCodec to compress + or decompress. + + + + + Create a ZlibCodec that either compresses or decompresses. + + + Indicates whether the codec should compress (deflate) or decompress (inflate). + + + + + Initialize the inflation state. + + + It is not necessary to call this before using the ZlibCodec to inflate data; + It is implicitly called when you call the constructor. + + Z_OK if everything goes well. + + + + Initialize the inflation state with an explicit flag to + govern the handling of RFC1950 header bytes. + + + + By default, the ZLIB header defined in RFC 1950 is expected. If + you want to read a zlib stream you should specify true for + expectRfc1950Header. If you have a deflate stream, you will want to specify + false. It is only necessary to invoke this initializer explicitly if you + want to specify false. + + + whether to expect an RFC1950 header byte + pair when reading the stream of data to be inflated. + + Z_OK if everything goes well. + + + + Initialize the ZlibCodec for inflation, with the specified number of window bits. + + The number of window bits to use. If you need to ask what that is, + then you shouldn't be calling this initializer. + Z_OK if all goes well. + + + + Initialize the inflation state with an explicit flag to govern the handling of + RFC1950 header bytes. + + + + If you want to read a zlib stream you should specify true for + expectRfc1950Header. In this case, the library will expect to find a ZLIB + header, as defined in RFC + 1950, in the compressed stream. If you will be reading a DEFLATE or + GZIP stream, which does not have such a header, you will want to specify + false. + + + whether to expect an RFC1950 header byte pair when reading + the stream of data to be inflated. + The number of window bits to use. If you need to ask what that is, + then you shouldn't be calling this initializer. + Z_OK if everything goes well. + + + + Inflate the data in the InputBuffer, placing the result in the OutputBuffer. + + + You must have set InputBuffer and OutputBuffer, NextIn and NextOut, and AvailableBytesIn and + AvailableBytesOut before calling this method. + + + + private void InflateBuffer() + { + int bufferSize = 1024; + byte[] buffer = new byte[bufferSize]; + ZlibCodec decompressor = new ZlibCodec(); + + Console.WriteLine("\n============================================"); + Console.WriteLine("Size of Buffer to Inflate: {0} bytes.", CompressedBytes.Length); + MemoryStream ms = new MemoryStream(DecompressedBytes); + + int rc = decompressor.InitializeInflate(); + + decompressor.InputBuffer = CompressedBytes; + decompressor.NextIn = 0; + decompressor.AvailableBytesIn = CompressedBytes.Length; + + decompressor.OutputBuffer = buffer; + + // pass 1: inflate + do + { + decompressor.NextOut = 0; + decompressor.AvailableBytesOut = buffer.Length; + rc = decompressor.Inflate(FlushType.None); + + if (rc != ZlibConstants.Z_OK && rc != ZlibConstants.Z_STREAM_END) + throw new Exception("inflating: " + decompressor.Message); + + ms.Write(decompressor.OutputBuffer, 0, buffer.Length - decompressor.AvailableBytesOut); + } + while (decompressor.AvailableBytesIn > 0 || decompressor.AvailableBytesOut == 0); + + // pass 2: finish and flush + do + { + decompressor.NextOut = 0; + decompressor.AvailableBytesOut = buffer.Length; + rc = decompressor.Inflate(FlushType.Finish); + + if (rc != ZlibConstants.Z_STREAM_END && rc != ZlibConstants.Z_OK) + throw new Exception("inflating: " + decompressor.Message); + + if (buffer.Length - decompressor.AvailableBytesOut > 0) + ms.Write(buffer, 0, buffer.Length - decompressor.AvailableBytesOut); + } + while (decompressor.AvailableBytesIn > 0 || decompressor.AvailableBytesOut == 0); + + decompressor.EndInflate(); + } + + + + The flush to use when inflating. + Z_OK if everything goes well. + + + + Ends an inflation session. + + + Call this after successively calling Inflate(). This will cause all buffers to be flushed. + After calling this you cannot call Inflate() without a intervening call to one of the + InitializeInflate() overloads. + + Z_OK if everything goes well. + + + + I don't know what this does! + + Z_OK if everything goes well. + + + + Initialize the ZlibCodec for deflation operation. + + + The codec will use the MAX window bits and the default level of compression. + + + + int bufferSize = 40000; + byte[] CompressedBytes = new byte[bufferSize]; + byte[] DecompressedBytes = new byte[bufferSize]; + + ZlibCodec compressor = new ZlibCodec(); + + compressor.InitializeDeflate(CompressionLevel.Default); + + compressor.InputBuffer = System.Text.ASCIIEncoding.ASCII.GetBytes(TextToCompress); + compressor.NextIn = 0; + compressor.AvailableBytesIn = compressor.InputBuffer.Length; + + compressor.OutputBuffer = CompressedBytes; + compressor.NextOut = 0; + compressor.AvailableBytesOut = CompressedBytes.Length; + + while (compressor.TotalBytesIn != TextToCompress.Length && compressor.TotalBytesOut < bufferSize) + { + compressor.Deflate(FlushType.None); + } + + while (true) + { + int rc= compressor.Deflate(FlushType.Finish); + if (rc == ZlibConstants.Z_STREAM_END) break; + } + + compressor.EndDeflate(); + + + + Z_OK if all goes well. You generally don't need to check the return code. + + + + Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel. + + + The codec will use the maximum window bits (15) and the specified + CompressionLevel. It will emit a ZLIB stream as it compresses. + + The compression level for the codec. + Z_OK if all goes well. + + + + Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, + and the explicit flag governing whether to emit an RFC1950 header byte pair. + + + The codec will use the maximum window bits (15) and the specified CompressionLevel. + If you want to generate a zlib stream, you should specify true for + wantRfc1950Header. In this case, the library will emit a ZLIB + header, as defined in RFC + 1950, in the compressed stream. + + The compression level for the codec. + whether to emit an initial RFC1950 byte pair in the compressed stream. + Z_OK if all goes well. + + + + Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, + and the specified number of window bits. + + + The codec will use the specified number of window bits and the specified CompressionLevel. + + The compression level for the codec. + the number of window bits to use. If you don't know what this means, don't use this method. + Z_OK if all goes well. + + + + Initialize the ZlibCodec for deflation operation, using the specified + CompressionLevel, the specified number of window bits, and the explicit flag + governing whether to emit an RFC1950 header byte pair. + + + The compression level for the codec. + whether to emit an initial RFC1950 byte pair in the compressed stream. + the number of window bits to use. If you don't know what this means, don't use this method. + Z_OK if all goes well. + + + + Deflate one batch of data. + + + You must have set InputBuffer and OutputBuffer before calling this method. + + + + private void DeflateBuffer(CompressionLevel level) + { + int bufferSize = 1024; + byte[] buffer = new byte[bufferSize]; + ZlibCodec compressor = new ZlibCodec(); + + Console.WriteLine("\n============================================"); + Console.WriteLine("Size of Buffer to Deflate: {0} bytes.", UncompressedBytes.Length); + MemoryStream ms = new MemoryStream(); + + int rc = compressor.InitializeDeflate(level); + + compressor.InputBuffer = UncompressedBytes; + compressor.NextIn = 0; + compressor.AvailableBytesIn = UncompressedBytes.Length; + + compressor.OutputBuffer = buffer; + + // pass 1: deflate + do + { + compressor.NextOut = 0; + compressor.AvailableBytesOut = buffer.Length; + rc = compressor.Deflate(FlushType.None); + + if (rc != ZlibConstants.Z_OK && rc != ZlibConstants.Z_STREAM_END) + throw new Exception("deflating: " + compressor.Message); + + ms.Write(compressor.OutputBuffer, 0, buffer.Length - compressor.AvailableBytesOut); + } + while (compressor.AvailableBytesIn > 0 || compressor.AvailableBytesOut == 0); + + // pass 2: finish and flush + do + { + compressor.NextOut = 0; + compressor.AvailableBytesOut = buffer.Length; + rc = compressor.Deflate(FlushType.Finish); + + if (rc != ZlibConstants.Z_STREAM_END && rc != ZlibConstants.Z_OK) + throw new Exception("deflating: " + compressor.Message); + + if (buffer.Length - compressor.AvailableBytesOut > 0) + ms.Write(buffer, 0, buffer.Length - compressor.AvailableBytesOut); + } + while (compressor.AvailableBytesIn > 0 || compressor.AvailableBytesOut == 0); + + compressor.EndDeflate(); + + ms.Seek(0, SeekOrigin.Begin); + CompressedBytes = new byte[compressor.TotalBytesOut]; + ms.Read(CompressedBytes, 0, CompressedBytes.Length); + } + + + whether to flush all data as you deflate. Generally you will want to + use Z_NO_FLUSH here, in a series of calls to Deflate(), and then call EndDeflate() to + flush everything. + + Z_OK if all goes well. + + + + End a deflation session. + + + Call this after making a series of one or more calls to Deflate(). All buffers are flushed. + + Z_OK if all goes well. + + + + Reset a codec for another deflation session. + + + Call this to reset the deflation state. For example if a thread is deflating + non-consecutive blocks, you can call Reset() after the Deflate(Sync) of the first + block and before the next Deflate(None) of the second block. + + Z_OK if all goes well. + + + + Set the CompressionStrategy and CompressionLevel for a deflation session. + + the level of compression to use. + the strategy to use for compression. + Z_OK if all goes well. + + + + Set the dictionary to be used for either Inflation or Deflation. + + The dictionary bytes to use. + Z_OK if all goes well. + + + + A bunch of constants used in the Zlib interface. + + + + + The maximum number of window bits for the Deflate algorithm. + + + + + The default number of window bits for the Deflate algorithm. + + + + + indicates everything is A-OK + + + + + Indicates that the last operation reached the end of the stream. + + + + + The operation ended in need of a dictionary. + + + + + There was an error with the stream - not enough data, not open and readable, etc. + + + + + There was an error with the data - not enough data, bad data, etc. + + + + + There was an error with the working buffer. + + + + + The size of the working buffer used in the ZlibCodec class. Defaults to 8192 bytes. + + + + + The minimum size of the working buffer used in the ZlibCodec class. Currently it is 128 bytes. + + + + + Represents a Zlib stream for compression or decompression. + + + + + The ZlibStream is a Decorator on a . It adds ZLIB compression or decompression to any + stream. + + + Using this stream, applications can compress or decompress data via + stream Read() and Write() operations. Either compresssion or + decompression can occur through either reading or writing. The compression + format used is ZLIB, which is documented in IETF RFC 1950, "ZLIB Compressed + Data Format Specification version 3.3". This implementation of ZLIB always uses + DEFLATE as the compression method. (see IETF RFC 1951, "DEFLATE + Compressed Data Format Specification version 1.3.") + + + The ZLIB format allows for varying compression methods, window sizes, and dictionaries. + This implementation always uses the DEFLATE compression method, a preset dictionary, + and 15 window bits by default. + + + + This class is similar to , except that it adds the + RFC1950 header and trailer bytes to a compressed stream when compressing, or expects + the RFC1950 header and trailer bytes when decompressing. It is also similar to the + . + + + + + + + + Create a ZlibStream using the specified CompressionMode. + + + + + When mode is CompressionMode.Compress, the ZlibStream + will use the default compression level. The "captive" stream will be + closed when the ZlibStream is closed. + + + + + + This example uses a ZlibStream to compress a file, and writes the + compressed data to another file. + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(fileToCompress + ".zlib")) + { + using (Stream compressor = new ZlibStream(raw, CompressionMode.Compress)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(fileToCompress & ".zlib") + Using compressor As Stream = New ZlibStream(raw, CompressionMode.Compress) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + + The stream which will be read or written. + Indicates whether the ZlibStream will compress or decompress. + + + + Create a ZlibStream using the specified CompressionMode and + the specified CompressionLevel. + + + + + + When mode is CompressionMode.Decompress, the level parameter is ignored. + The "captive" stream will be closed when the ZlibStream is closed. + + + + + + This example uses a ZlibStream to compress data from a file, and writes the + compressed data to another file. + + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(fileToCompress + ".zlib")) + { + using (Stream compressor = new ZlibStream(raw, + CompressionMode.Compress, + CompressionLevel.BestCompression)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(fileToCompress & ".zlib") + Using compressor As Stream = New ZlibStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + + The stream to be read or written while deflating or inflating. + Indicates whether the ZlibStream will compress or decompress. + A tuning knob to trade speed for effectiveness. + + + + Create a ZlibStream using the specified CompressionMode, and + explicitly specify whether the captive stream should be left open after + Deflation or Inflation. + + + + + + When mode is CompressionMode.Compress, the ZlibStream will use + the default compression level. + + + + This constructor allows the application to request that the captive stream + remain open after the deflation or inflation occurs. By default, after + Close() is called on the stream, the captive stream is also + closed. In some cases this is not desired, for example if the stream is a + that will be re-read after + compression. Specify true for the parameter to leave the stream + open. + + + + See the other overloads of this constructor for example code. + + + + + The stream which will be read or written. This is called the + "captive" stream in other places in this documentation. + Indicates whether the ZlibStream will compress or decompress. + true if the application would like the stream to remain + open after inflation/deflation. + + + + Create a ZlibStream using the specified CompressionMode + and the specified CompressionLevel, and explicitly specify + whether the stream should be left open after Deflation or Inflation. + + + + + + This constructor allows the application to request that the captive + stream remain open after the deflation or inflation occurs. By + default, after Close() is called on the stream, the captive + stream is also closed. In some cases this is not desired, for example + if the stream is a that will be + re-read after compression. Specify true for the parameter to leave the stream open. + + + + When mode is CompressionMode.Decompress, the level parameter is + ignored. + + + + + + + This example shows how to use a ZlibStream to compress the data from a file, + and store the result into another file. The filestream remains open to allow + additional data to be written to it. + + + using (var output = System.IO.File.Create(fileToCompress + ".zlib")) + { + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (Stream compressor = new ZlibStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, true)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + // can write additional data to the output stream here + } + + + Using output As FileStream = File.Create(fileToCompress & ".zlib") + Using input As Stream = File.OpenRead(fileToCompress) + Using compressor As Stream = New ZlibStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, True) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + ' can write additional data to the output stream here. + End Using + + + + The stream which will be read or written. + + Indicates whether the ZlibStream will compress or decompress. + + + true if the application would like the stream to remain open after + inflation/deflation. + + + + A tuning knob to trade speed for effectiveness. This parameter is + effective only when mode is CompressionMode.Compress. + + + + + This property sets the flush behavior on the stream. + Sorry, though, not sure exactly how to describe all the various settings. + + + + + The size of the working buffer for the compression codec. + + + + + The working buffer is used for all stream operations. The default size is + 1024 bytes. The minimum size is 128 bytes. You may get better performance + with a larger buffer. Then again, you might not. You would have to test + it. + + + + Set this before the first call to Read() or Write() on the + stream. If you try to set it afterwards, it will throw. + + + + + Returns the total number of bytes input so far. + + + Returns the total number of bytes output so far. + + + + Dispose the stream. + + + + This may or may not result in a Close() call on the captive + stream. See the constructors that have a leaveOpen parameter + for more information. + + + This method may be invoked in two distinct scenarios. If disposing + == true, the method has been called directly or indirectly by a + user's code, for example via the public Dispose() method. In this + case, both managed and unmanaged resources can be referenced and + disposed. If disposing == false, the method has been called by the + runtime from inside the object finalizer and this method should not + reference other objects; in that case only unmanaged resources must + be referenced or disposed. + + + + indicates whether the Dispose method was invoked by user code. + + + + + Indicates whether the stream can be read. + + + The return value depends on whether the captive stream supports reading. + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream can be written. + + + The return value depends on whether the captive stream supports writing. + + + + + Flush the stream. + + + + + Reading this property always throws a . + + + + + The position of the stream pointer. + + + + Setting this property always throws a . Reading will return the total bytes + written out, if used in writing, or the total bytes read in, if used in + reading. The count may refer to compressed bytes or uncompressed bytes, + depending on how you've used the stream. + + + + + Read data from the stream. + + + + + + If you wish to use the ZlibStream to compress data while reading, + you can create a ZlibStream with CompressionMode.Compress, + providing an uncompressed data stream. Then call Read() on that + ZlibStream, and the data read will be compressed. If you wish to + use the ZlibStream to decompress data while reading, you can create + a ZlibStream with CompressionMode.Decompress, providing a + readable compressed data stream. Then call Read() on that + ZlibStream, and the data will be decompressed as it is read. + + + + A ZlibStream can be used for Read() or Write(), but + not both. + + + + + + The buffer into which the read data should be placed. + + + the offset within that data array to put the first byte read. + + the number of bytes to read. + + the number of bytes read + + + + Calling this method always throws a . + + + The offset to seek to.... + IF THIS METHOD ACTUALLY DID ANYTHING. + + + The reference specifying how to apply the offset.... IF + THIS METHOD ACTUALLY DID ANYTHING. + + + nothing. This method always throws. + + + + Calling this method always throws a . + + + The new value for the stream length.... IF + THIS METHOD ACTUALLY DID ANYTHING. + + + + + Write data to the stream. + + + + + + If you wish to use the ZlibStream to compress data while writing, + you can create a ZlibStream with CompressionMode.Compress, + and a writable output stream. Then call Write() on that + ZlibStream, providing uncompressed data as input. The data sent to + the output stream will be the compressed form of the data written. If you + wish to use the ZlibStream to decompress data while writing, you + can create a ZlibStream with CompressionMode.Decompress, and a + writable output stream. Then call Write() on that stream, + providing previously compressed data. The data sent to the output stream + will be the decompressed form of the data written. + + + + A ZlibStream can be used for Read() or Write(), but not both. + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Compress a string into a byte array using ZLIB. + + + + Uncompress it with . + + + + + + + + A string to compress. The string will first be encoded + using UTF8, then compressed. + + + The string in compressed form + + + + Compress a byte array into a new byte array using ZLIB. + + + + Uncompress it with . + + + + + + + A buffer to compress. + + + The data in compressed form + + + + Uncompress a ZLIB-compressed byte array into a single string. + + + + + + + A buffer containing ZLIB-compressed data. + + + The uncompressed string + + + + Uncompress a ZLIB-compressed byte array into a byte array. + + + + + + + A buffer containing ZLIB-compressed data. + + + The data in uncompressed form + + + + Specifies whether the target is inside or outside the System.IO.Packaging.Package. + + + + + The relationship references a part that is inside the package. + + + + + The relationship references a resource that is external to the package. + + + + + Represent an OOXML Zip package. + + + + + This is the store for all Rows, Columns and Cells. + It is a Dictionary implementation that allows you to change the Key (the RowID, ColumnID or CellID ) + + + + + Compares an IndexItem + + + + + Creates a new collection + + The Cells. This list must be sorted + + + + Return the item with the RangeID + + + + + + + Return specified index from the sorted list + + + + + + + Insert a number of rows in the collecion but dont update the cell only the index + + + + Index of first rangeItem + + + + Insert a number of rows in the collecion + + + + Index of first rangeItem + + + + Delete rows from the collecion + + + + Update range id's on cells + + + + Init the size starting from 128 items. Double the size until the list fits. + + + + + + Check the size and double the size if out of bound + + + + + Tries to parse a double from the specified which is expected to be a string value. + + The string value. + The double value parsed from the specified . + True if could be parsed to a double; otherwise, false. + + + + Tries to parse a boolean value from the specificed . + + The value to check for boolean-ness. + The boolean value parsed from the specified . + True if could be parsed + + + + Tries to parse a from the specified which is expected to be a string value. + + The string value. + The double value parsed from the specified . + True if could be parsed to a double; otherwise, false. + + + + Convert an object value to a double + + + + Return NaN if invalid double otherwise 0 + + + + + OOXML requires that "," , and & be escaped, but ' and " should *not* be escaped, nor should + any extended Unicode characters. This function only encodes the required characters. + System.Security.SecurityElement.Escape() escapes ' and " as ' and ", so it cannot + be used reliably. System.Web.HttpUtility.HtmlEncode overreaches as well and uses the numeric + escape equivalent. + + + + + + + Return true if preserve space attribute is set. + + + + + + + + Return true if preserve space attribute is set. + + + + + + + + + Return true if preserve space attribute is set. + + + + + + + Extension methods for guarding + + + + + Throws an ArgumentNullException if argument is null + + Argument type + Argument to check + parameter/argument name + + + + + Throws an if the string argument is null or empty + + Argument to check + parameter/argument name + + + + + Throws an ArgumentOutOfRangeException if the value of the argument is out of the supplied range + + Type implementing + The argument to check + Min value of the supplied range + Max value of the supplied range + parameter/argument name + + + + + Compression using a run length encoding algorithm. + See MS-OVBA Section 2.4 + + Byte array to decompress + + + + + Decompression using a run length encoding algorithm. + See MS-OVBA Section 2.4 + + Byte array to decompress + + + + + + Read the stream and return it as a byte-array + + + + + + + + An argument + + Argument Type + + + + Utility for validation + + + + + Class for handling translation between ExcelAddresses and sqref addresses. + + + + + Transforms an address to a valid sqRef address. + + The address to transform + A valid SqRef address + + + + Transforms an sqRef address into a excel address + + The address to transform + A valid excel address + + + + Type of VBA module + + + + + A Workbook or Worksheet objects + + + + + A Module + + + + + A Class + + + + + Designer, typically a user form + + + + + A VBA code module. + + + + + The name of the module + + + + + A description of the module + + + + + The code without any module level attributes. + Can contain function level attributes. + + + + + A reference to the helpfile + + + + + Module level attributes. + + + + + Type of module + + + + + If the module is readonly + + + + + If the module is private + + + + + To determine if the attribute uses double quotes around the value + + + + + A string + + + + + Not a string + + + + + The name of the attribute + + + + + The datatype. Determine if the attribute uses double quotes around the value. + + + + + The value of the attribute without any double quotes. + + + + + Base class for VBA collections + + + + + + Indexer + + Name + + + + + Indexer + + Position + + + + + Number of items in the collection + + + + + If a specific name exists in the collection + + The name + True if the name exists + + + + Removes the item + + + + + + Removes the item at the specified index + + THe index + + + + Collection class for VBA modules + + + + + Adds a new VBA Module + + The name of the module + The module object + + + + Adds a new VBA class + + The name of the class + Private or Public not createble + The class object + + + + A collection of the vba projects references + + + + + Adds a new reference + + The reference object + + + + A collection of the module level attributes + + + + + Represents the VBA project part of the package + + + + + Type of system where the VBA project was created. + + + + + System kind. Default Win32. + + + + + Name of the project + + + + + A description of the project + + + + + A helpfile + + + + + Secondary helpfile + + + + + Context if refering the helpfile + + + + + Conditional compilation constants + + + + + Codepage for encoding. Default is current regional setting. + + + + + Project references + + + + + Code Modules (Modules, classes, designer code) + + + + + The digital signature + + + + + VBA protection + + + + + 2.4.3.3 Decryption + + Byte hex string + The decrypted value + + + + 2.4.3.2 Encryption + + + Byte hex string + + + + MS-OVBA 2.3.4.1 + + + + + + MS-OVBA 2.3.4.1 + + + + + + Create a new VBA Project + + + + + Remove the project from the package + + + + + Vba security properties + + + + + Specifies whether access to the VBA project was restricted by the user + + + + + Specifies whether access to the VBA project was restricted by the VBA host application + + + + + Specifies whether access to the VBA project was restricted by the VBA project editor + + + + + Specifies whether the VBA project is visible. + + + + + Password protect the VBA project. + An empty string or null will remove the password protection + + The password + + + + A VBA reference + + + + + Constructor. + Defaults ReferenceRecordID to 0xD + + + + + The reference record ID. See MS-OVBA documentation for more info. + + + + + The name of the reference + + + + + LibID + For more info check MS-OVBA 2.1.1.8 LibidReference and 2.3.4.2.2 PROJECTREFERENCES + + + + + A string representation of the object (the Name) + + + + + + A reference to a twiddled type library + + + + + Constructor. + Sets ReferenceRecordID to 0x2F + + + + + LibIdExternal + For more info check MS-OVBA 2.1.1.8 LibidReference and 2.3.4.2.2 PROJECTREFERENCES + + + + + LibIdTwiddled + For more info check MS-OVBA 2.1.1.8 LibidReference and 2.3.4.2.2 PROJECTREFERENCES + + + + + A GUID that specifies the Automation type library the extended type library was generated from. + + + + + A reference to an external VBA project + + + + + Constructor. + Sets ReferenceRecordID to 0x0E + + + + + LibIdRelative + For more info check MS-OVBA 2.1.1.8 LibidReference and 2.3.4.2.2 PROJECTREFERENCES + + + + + Major version of the referenced VBA project + + + + + Minor version of the referenced VBA project + + + + + The code signature properties of the project + + + + + The certificate to sign the VBA project. + + This certificate must have a private key. + There is no validation that the certificate is valid for codesigning, so make sure it's valid to sign Excel files (Excel 2010 is more strict that prior versions). + + + + + + The verifier + + + + + Access to workbook view properties + + + + + Creates a new ExcelWorkbookView which provides access to all the + view states of the worksheet. + + + + + + + + Position of the upper left corner of the workbook window. In twips. + + + + + Position of the upper left corner of the workbook window. In twips. + + + + + Width of the workbook window. In twips. + + + + + Height of the workbook window. In twips. + + + + + If true the the workbook window is minimized. + + + + + Show the vertical scrollbar + + + + + Show the horizontal scrollbar + + + + + Show the sheet tabs + + + + + Set the window position in twips + + + + + + + + + Represents the different view states of the worksheet + + + + + The worksheet panes after a freeze or split. + + + + + Set the active cell. Must be set within the SelectedRange. + + + + + Selected Cells.Used in combination with ActiveCell + + + + + Creates a new ExcelWorksheetView which provides access to all the view states of the worksheet. + + + + + + + + Returns a reference to the sheetView element + + + + + The active cell. Single Cell address. + This cell must be inside the selected range. If not, the selected range is set to the active cell address + + + + + Selected Cells in the worksheet. Used in combination with ActiveCell. + If the active cell is not inside the selected range, the active cell will be set to the first cell in the selected range. + If the selected range has multiple adresses, these are separated with space. If the active cell is not within the first address in this list, the attribute ActiveCellId must be set (not supported, so it must be set via the XML). + + + + + Indicates if the worksheet is selected within the workbook + + + + + Sets the view mode of the worksheet to pagelayout + + + + + Sets the view mode of the worksheet to pagebreak + + + + + Show gridlines in the worksheet + + + + + Show the Column/Row headers (containg column letters and row numbers) + + + + + Window zoom magnification for current view representing percent values. + + + + + Flag indicating whether the sheet is in 'right to left' display mode. When in this mode,Column A is on the far right, Column B ;is one column left of Column A, and so on. Also,information in cells is displayed in the Right to Left format. + + + + + Reference to the panes + + + + + Freeze the columns/rows to left and above the cell + + + + + + + Unlock all rows and columns to scroll freely + /// + + + + Same as SetValue but will set first char to lower case. + + + + + + + + Is this value allowed to be changed? + + + + + Left border style + + + + + Right border style + + + + + Top border style + + + + + Bottom border style + + + + + The color of the pattern + + + + + The background color + + + + + Font bold + + + + + Font Italic + + + + + Font-Strikeout + + + + + Id for number format + + Build in ID's + + 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 @ + + + + + The background fill of a cell + + + + + Angle of the linear gradient + + + + + Linear or Path gradient + + + + + Specifies in percentage format(from the top to the bottom) the position of the top edge of the inner rectangle (color 1). For top, 0 means the top edge of the inner rectangle is on the top edge of the cell, and 1 means it is on the bottom edge of the cell. (applies to From Corner and From Center gradients). + + + + + Specifies in percentage format (from the top to the bottom) the position of the bottom edge of the inner rectangle (color 1). For bottom, 0 means the bottom edge of the inner rectangle is on the top edge of the cell, and 1 means it is on the bottom edge of the cell. + + + + + Specifies in percentage format (from the left to the right) the position of the left edge of the inner rectangle (color 1). For left, 0 means the left edge of the inner rectangle is on the left edge of the cell, and 1 means it is on the right edge of the cell. (applies to From Corner and From Center gradients). + + + + + Specifies in percentage format (from the left to the right) the position of the right edge of the inner rectangle (color 1). For right, 0 means the right edge of the inner rectangle is on the left edge of the cell, and 1 means it is on the right edge of the cell. (applies to From Corner and From Center gradients). + + + + + Gradient Color 1 + + + + + Gradient Color 2 + + + + + Xml access class for gradient fillsde + + + + + Type of gradient fill. + + + + + Angle of the linear gradient + + + + + Gradient color 1 + + + + + Gradient color 2 + + + + + Percentage format bottom + + + + + Percentage format top + + + + + Percentage format left + + + + + Percentage format right + + + + + Xml access class for border top level + + + + + Left border style properties + + + + + Right border style properties + + + + + Top border style properties + + + + + Bottom border style properties + + + + + Diagonal border style properties + + + + + Diagonal up border + + + + + Diagonal down border + + + + + Xml access class for border items + + + + + Cell Border style + + + + + Border style + + + + + Xml access class xfs records. This is the top level style object. + + + + + Style index + + + + + Numberformat properties + + + + + Font properties + + + + + Fill properties + + + + + Border style properties + + + + + Horizontal alignment + + + + + Vertical alignment + + + + + Wraped text + + + + + Text rotation angle + + + + + Locked when sheet is protected + + + + + Hide formulas when sheet is protected + + + + + Prefix the formula with a quote. + + + + + Readingorder + + + + + Shrink to fit + + + + + Indentation + + + + + Xml access class for named styles + + + + + Named style index + + + + + Style index + + + + + Name of the style + + + + + The style object + + + + + Xml access class for color + + + + + Theme color value + + + + + Tint + + + + + RGB value + + + + + Indexed color value + + + + + Xml access class for fills + + + + + Cell fill pattern style + + + + + Pattern color + + + + + Cell background color + + + + + Xml access class for fonts + + + + + The name of the font + + + + + Font size + + + + + Font family + + + + + Text color + + + + + Font Scheme + + + + + If the font is bold + + + + + If the font is italic + + + + + If the font is striked out + + + + + If the font is underlined. + When set to true a the text is underlined with a single line + + + + + If the font is underlined + + + + + Vertical aligned + + + + + Xml access class for number formats + + + + + Id for number format + + Build in ID's + + 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 @ + + + + + Xml helper class for cell style classes + + + + + Handels paragraph text + + + + + Text + + + + + A collection of Paragraph objects + + + + + Add a rich text string + + The text to add + + + + + Cell Border style + + + + + Left border style + + + + + Right border style + + + + + Top border style + + + + + Bottom border style + + + + + 0Diagonal border style + + + + + A diagonal from the bottom left to top right of the cell + + + + + A diagonal from the top left to bottom right of the cell + + + + + Set the border style around the range. + + The border style + + + + Set the border style around the range. + + The border style + The color of the border + + + + Cell border style + + + + + The line style of the border + + + + + The color of the border + + + + + Color for cellstyling + + + + + The theme color + + + + + The tint value + + + + + The RGB value + + + + + The indexed color number. + + + + + Set the color of the object + + The color + + + + Return the RGB value for the Indexed or Tint property + + The RGB color starting with a # + + + + Return the RGB value for the color object that uses the Indexed or Tint property + + The color object + The RGB color starting with a # + + + + The background fill of a cell + + + + + The pattern for solid fills. + + + + + The color of the pattern + + + + + The background color + + + + + Access to properties for gradient fill. + + + + + A richtext part + + + + + The text + + + + + Preserves whitespace. Default true + + + + + Bold text + + + + + Italic text + + + + + Strike-out text + + + + + Underlined text + + + + + Vertical Alignment + + + + + Font size + + + + + Name of the font + + + + + Text color + + + + + Collection of Richtext objects + + + + + Collection containing the richtext objects + + + + + + + Items in the list + + + + + Add a rich text string + + The text to add + + + + + Insert a rich text string at the specified index. + + The zero-based index at which rich text should be inserted. + The text to insert. + + + + + Clear the collection + + + + + Removes an item at the specific index + + + + + + Removes an item + + + + + + The text + + + + + Toplevel class for cell styling + + + + + Numberformat + + + + + Font styling + + + + + Fill Styling + + + + + Border + + + + + The horizontal alignment in the cell + + + + + The vertical alignment in the cell + + + + + Wrap the text + + + + + Readingorder + + + + + Shrink the text to fit + + + + + The margin between the border and the text + + + + + Text orientation in degrees. Values range from 0 to 180. + + + + + If true the cell is locked for editing when the sheet is protected + + + + + + If true the formula is hidden when the sheet is protected. + + + + + + If true the cell has a quote prefix, which indicates the value of the cell is prefixed with a single quote. + + + + + The index in the style collection + + + + + Cell style Font + + + + + The name of the font + + + + + The Size of the font + + + + + Font family + + + + + Cell color + + + + + Scheme + + + + + Font-bold + + + + + Font-italic + + + + + Font-Strikeout + + + + + Font-Underline + + + + + Font-Vertical Align + + + + + Set the font from a Font object + + + + + + The numberformat of the cell + + + + + The numeric index fror the format + + + + + The numberformat + + + + + If the numeric format is a build-in from. + + + + + Border line style + + + + + Horizontal text alignment + + + + + Vertical text alignment + + + + + Font-Vertical Align + + + + + Font-Underlinestyle for + + + + + Fill pattern + + + + + Type of gradient fill + + + + + No gradient fill. + + + + + This gradient fill is of linear gradient type. Linear gradient type means that the transition from one color to the next is along a line (e.g., horizontal, vertical,diagonal, etc.) + + + + + This gradient fill is of path gradient type. Path gradient type means the that the boundary of transition from one color to the next is a rectangle, defined by top,bottom, left, and right attributes on the gradientFill element. + + + + + The reading order + + + + + Reading order is determined by scanning the text for the first non-whitespace character: if it is a strong right-to-left character, the reading order is right-to-left; otherwise, the reading order left-to-right. + + + + + Left to Right + + + + + Right to Left + + + + + Linestyle + + + + + Type of font strike + + + + + Used by Rich-text and Paragraphs. + + + + + Set the font style from a font object + + + + + + Base class for pivot table field groups + + + + + A date group + + + + + How to group the date field + + + + + Auto detect start date + + + + + Auto detect end date + + + + + A pivot table field numeric grouping + + + + + Start value + + + + + End value + + + + + Interval + + + + + A field Item. Used for grouping + + + + + The text. Unique values only + + + + + A page / report filter field + + + + + The Name of the field + + + + + A pivo table data field + + + + + The field + + + + + The index of the datafield + + + + + The name of the datafield + + + + + Field index. Reference to the field collection + + + + + Specifies the index to the base item when the ShowDataAs calculation is in use + + + + + Number format id. + + + + + Number format for the data column + + + + + Type of aggregate function + + + + + Base collection class for pivottable fields + + + + + + Indexer by name + + + + + + + Returns the date group field. + + The type of grouping + The matching field. If none is found null is returned + + + + Returns the numeric group field. + + The matching field. If none is found null is returned + + + + Collection class for Row and column fields in a Pivottable + + + + + Add a new row/column field + + The field + The new field + + + + Insert a new row/column field + + The field + The position to insert the field + The new field + + + + Remove a field + + + + + + Remove a field at a specific position + + + + + + Collection class for data fields in a Pivottable + + + + + Add a new datafield + + The field + The new datafield + + + + Remove a datafield + + + + + + Indicates that the cache contains data that consolidates ranges. + + + + + Indicates that the cache contains data from an external data source. + + + + + Indicates that the cache contains a scenario summary report + + + + + Indicates that the cache contains worksheet data + + + + + Cache definition. This class defines the source data. Note that one cache definition can be shared between many pivot tables. + + + + + Reference to the internal package part + + + + + Provides access to the XML data representing the cache definition in the package. + + + + + The package internal URI to the pivottable cache definition Xml Document. + + + + + Referece to the PivoTable object + + + + + The source data range when the pivottable has a worksheet datasource. + The number of columns in the range must be intact if this property is changed. + The range must be in the same workbook as the pivottable. + + + + + Type of source data + + + + + Defines the axis for a PivotTable + + + + + None + + + + + Column axis + + + + + Page axis (Include Count Filter) + + + + + + Row axis + + + + + Values axis + + + + + Build-in table row functions + + + + + Defines the data formats for a field in the PivotTable + + + + + Indicates the field is shown as the "difference from" a value. + + + + + Indicates the field is shown as the "index. + + + + + Indicates that the field is shown as its normal datatype. + + + + + /Indicates the field is show as the "percentage of" a value + + + + + Indicates the field is shown as the "percentage difference from" a value. + + + + + Indicates the field is shown as the percentage of column. + + + + + Indicates the field is shown as the percentage of row + + + + + Indicates the field is shown as percentage of total. + + + + + Indicates the field is shown as running total in the table. + + + + + Built-in subtotal functions + + + + + Data grouping + + + + + Sorting + + + + + A pivot table field. + + + + + Name of the field + + + + + Compact mode + + + + + A boolean that indicates whether the items in this field should be shown in Outline form + + + + + The custom text that is displayed for the subtotals label + + + + + A boolean that indicates whether to show all items for this field + + + + + The type of sort that is applied to this field + + + + + A boolean that indicates whether manual filter is in inclusive mode + + + + + Enumeration of the different subtotal operations that can be applied to page, row or column fields + + + + + Type of axis + + + + + If the field is a row field + + + + + If the field is a column field + + + + + If the field is a datafield + + + + + If the field is a page field. + + + + + Grouping settings. + Null if the field has no grouping otherwise ExcelPivotTableFieldNumericGroup or ExcelPivotTableFieldNumericGroup. + + + + + Pivottable field Items. Used for grouping. + + + + + Add numberic grouping to the field + + Start value + End value + Interval + + + + Add a date grouping on this field. + + Group by + + + + Add a date grouping on this field. + + Group by + Fixed start date. Use DateTime.MinValue for auto + Fixed end date. Use DateTime.MaxValue for auto + + + + Add a date grouping on this field. + + Number of days when grouping on days + Fixed start date. Use DateTime.MinValue for auto + Fixed end date. Use DateTime.MaxValue for auto + + + + A collection of pivottable objects + + + + + Create a pivottable on the supplied range + + The range address including header and total row + The Source data range address + The name of the table. Must be unique + The pivottable object + + + + The pivottable Index. Base 0. + + + + + + + Pivottabes accesed by name + + The name of the pivottable + The Pivotable. Null if the no match is found + + + + An Excel Pivottable + + + + + Add a new pivottable + + The worksheet + the address of the pivottable + The address of the Source data + + + + + + Provides access to the XML data representing the pivottable in the package. + + + + + The package internal URI to the pivottable Xml Document. + + + + + Name of the pivottable object in Excel + + + + + Reference to the pivot table cache definition object + + + + + The worksheet where the pivottable is located + + + + + The location of the pivot table + + + + + If multiple datafields are displayed in the row area or the column area + + + + + if true apply legacy table autoformat number format properties. + + + + + If true apply legacy table autoformat border properties + + + + + If true apply legacy table autoformat font properties + + + + + If true apply legacy table autoformat pattern properties + + + + + If true apply legacy table autoformat width/height properties. + + + + + Show member property information + + + + + Show the drill indicators + + + + + If the user is prevented from drilling down on a PivotItem or aggregate value + + + + + Show the drill down buttons + + + + + If the tooltips should be displayed for PivotTable data cells. + + + + + If the row and column titles from the PivotTable should be printed. + + + + + If the row and column titles from the PivotTable should be printed. + + + + + If the grand totals should be displayed for the PivotTable columns + + + + + If the grand totals should be displayed for the PivotTable rows + + + + + If the drill indicators expand collapse buttons should be printed. + + + + + Indicates whether to show error messages in cells. + + + + + The string to be displayed in cells that contain errors. + + + + + Specifies the name of the value area field header in the PivotTable. + This caption is shown when the PivotTable when two or more fields are in the values area. + + + + + Show field headers + + + + + The number of page fields to display before starting another row or column + + + + + A boolean that indicates whether legacy auto formatting has been applied to the PivotTable view + + + + + A boolean that indicates whether the in-grid drop zones should be displayed at runtime, and whether classic layout is applied + + + + + Specifies the indentation increment for compact axis and can be used to set the Report Layout to Compact Form + + + + + A boolean that indicates whether data fields in the PivotTable should be displayed in outline form + + + + + a boolean that indicates whether new fields should have their outline flag set to true + + + + + A boolean that indicates whether the fields of a PivotTable can have multiple filters set on them + + + + + A boolean that indicates whether new fields should have their compact flag set to true + + + + + A boolean that indicates whether the field next to the data field in the PivotTable should be displayed in the same column of the spreadsheet + + + + + Specifies the string to be displayed for grand totals. + + + + + Specifies the string to be displayed in row header in compact mode. + + + + + Specifies the string to be displayed in cells with no value + + + + + Specifies the first row of the PivotTable header, relative to the top left cell in the ref value + + + + + Specifies the first column of the PivotTable data, relative to the top left cell in the ref value + + + + + Specifies the first column of the PivotTable data, relative to the top left cell in the ref value + + + + + The fields in the table + + + + + Row label fields + + + + + Column label fields + + + + + Value fields + + + + + Report filter fields + + + + + Pivot style name. Used for custom styles + + + + + The table style. If this property is cusom the style from the StyleName propery is used. + + + + + A collection of table columns + + + + + A reference to the table object + + + + + Number of items in the collection + + + + + The column Index. Base 0. + + + + + + + Indexer + + The name of the table + The table column. Null if the table name is not found in the collection + + + + Table style Enum + + + + + An Excel Table + + + + + Provides access to the XML data representing the table in the package. + + + + + The package internal URI to the Table Xml Document. + + + + + The name of the table object in Excel + + + + + The worksheet of the table + + + + + The address of the table + + + + + Collection of the columns in the table + + + + + The table style. If this property is cusom, the style from the StyleName propery is used. + + + + + If the header row is visible or not + + + + + If the header row has an autofilter + + + + + If the total row is visible or not + + + + + The style name for custum styles + + + + + Display special formatting for the first row + + + + + Display special formatting for the last row + + + + + Display banded rows + + + + + Display banded columns + + + + + Named style used for the total row + + + + + Named style used for the data cells + + + + + Named style used for the header row + + + + + A collection of table objects + + + + + Create a table on the supplied range + + The range address including header and total row + The name of the table. Must be unique + The table object + + + + Number of items in the collection + + + + + Get the table object from a range. + + The range + The table. Null if no range matches + + + + The table Index. Base 0. + + + + + + + Indexer + + The name of the table + The table. Null if the table name is not found in the collection + + + + Build-in table row functions + + + + + A table column + + + + + The column id + + + + + The position of the column + + + + + The name of the column + + + + + A string text in the total row + + + + + Build-in total row functions. + To set a custom Total row formula use the TotalsRowFormula property + + + + + + Sets a custom Totals row Formula. + Be carefull with this property since it is not validated. + + tbl.Columns[9].TotalsRowFormula = string.Format("SUM([{0}])",tbl.Columns[9].Name); + + + + + + The named style for datacells in the column + + + + + Sets a calculated column Formula. + Be carefull with this property since it is not validated. + + tbl.Columns[9].CalculatedColumnFormula = string.Format("SUM(MyDataTable[[#This Row],[{0}]])",tbl.Columns[9].Name); + + + + + + Provides access to the properties bag of the package + + + + + Provides access to all the office document properties. + + + + + + + Provides access to the XML document that holds all the code + document properties. + + + + + Gets/sets the title property of the document (core property) + + + + + Gets/sets the subject property of the document (core property) + + + + + Gets/sets the author property of the document (core property) + + + + + Gets/sets the comments property of the document (core property) + + + + + Gets/sets the keywords property of the document (core property) + + + + + Gets/sets the lastModifiedBy property of the document (core property) + + + + + Gets/sets the lastPrinted property of the document (core property) + + + + + Gets/sets the created property of the document (core property) + + + + + Gets/sets the category property of the document (core property) + + + + + Gets/sets the status property of the document (core property) + + + + + Provides access to the XML document that holds the extended properties of the document (app.xml) + + + + + Gets/Set the Application property of the document (extended property) + + + + + Gets/sets the HyperlinkBase property of the document (extended property) + + + + + Gets/Set the AppVersion property of the document (extended property) + + + + + Gets/sets the Company property of the document (extended property) + + + + + Gets/sets the Manager property of the document (extended property) + + + + + Gets/sets the modified property of the document (core property) + + + + + Get the value of an extended property + + The name of the property + The value + + + + Set the value for an extended property + + The name of the property + The value + + + + Provides access to the XML document which holds the document's custom properties + + + + + Gets the value of a custom property + + The name of the property + The current value of the property + + + + Allows you to set the value of a current custom property or create your own custom property. + + The name of the property + The value of the property + + + + Saves the document properties back to the package. + + + + + How the application should calculate formulas in the workbook + + + + + Indicates that calculations in the workbook are performed automatically when cell values change. + The application recalculates those cells that are dependent on other cells that contain changed values. + This mode of calculation helps to avoid unnecessary calculations. + + + + + Indicates tables be excluded during automatic calculation + + + + + Indicates that calculations in the workbook be triggered manually by the user. + + + + + Represents the Excel workbook and provides access to all the + document properties and worksheets within the workbook. + + + + + Creates a new instance of the ExcelWorkbook class. + + The parent package + NamespaceManager + + + + Read shared strings to list + + + + + Provides access to all the worksheets in the workbook. + + + + + Provides access to named ranges + + + + + Max font width for the workbook + This method uses GDI. If you use Asure or another environment that does not support GDI, you have to set this value manually if you don't use the standard Calibri font + + + + + Access properties to protect or unprotect a workbook + + + + + Access to workbook view properties + + + + + A reference to the VBA project. + Null if no project exists. + Use Workbook.CreateVBAProject to create a new VBA-Project + + + + + Create an empty VBA project. + + + + + URI to the workbook inside the package + + + + + URI to the styles inside the package + + + + + URI to the shared strings inside the package + + + + + Returns a reference to the workbook's part within the package + + + + + Provides access to the XML data representing the workbook in the package. + + + + + The date systems used by Microsoft Excel can be based on one of two different dates. By default, a serial number of 1 in Microsoft Excel represents January 1, 1900. + The default for the serial number 1 can be changed to represent January 2, 1904. + This option was included in Microsoft Excel for Windows to make it compatible with Excel for the Macintosh, which defaults to January 2, 1904. + + + + + Create or read the XML for the workbook. + + + + + Provides access to the XML data representing the styles in the package. + + + + + Package styles collection. Used internally to access style data. + + + + + The office document properties + + + + + Calculation mode for the workbook. + + + + + Should Excel do a full calculation after the workbook has been loaded? + This property is always true for both new workbooks and loaded templates(on load). If this is not the wanted behavior set this property to false. + + + + + Saves the workbook and all its components to the package. + For internal use only! + + + + + Is their any names in the workbook or in the sheets. + + ? + + + + Worksheet hidden enumeration + + + + + The worksheet is visible + + + + + The worksheet is hidden but can be shown by the user via the user interface + + + + + The worksheet is hidden and cannot be shown by the user via the user interface + + + + + For Cell value structure (for memory optimization of huge sheet) + + + + + Represents an Excel Chartsheet and provides access to its properties and methods + + + + + Represents an Excel worksheet and provides access to its properties and methods + + + + + Collection containing merged cell addresses + + + + + A worksheet + + Namespacemanager + Package + Relationship ID + URI + Name of the sheet + Sheet id + Position + hide + + + + The Uri to the worksheet within the package + + + + + The Zip.ZipPackagePart for the worksheet within the package + + + + + The ID for the worksheet's relationship with the workbook in the package + + + + + The unique identifier for the worksheet. + + + + + The position of the worksheet. + + + + + The index in the worksheets collection + + + + + Address for autofilter + + + + + + Returns a ExcelWorksheetView object that allows you to set the view state properties of the worksheet + + + + + The worksheet's display name as it appears on the tab + + + + + Provides access to named ranges + + + + + Indicates if the worksheet is hidden in the workbook + + + + + Get/set the default height of all rows in the worksheet + + + + + 'True' if defaultRowHeight value has been manually set, or is different from the default value. + Is automaticlly set to 'True' when assigning the DefaultRowHeight property + + + + + Get/set the default width of all columns in the worksheet + + + + * + + + + Summary rows below details + + + + + Summary rows to right of details + + + + + Automatic styles + + + + + Color of the sheet tab + + + + + The XML document holding the worksheet data. + All column, row, cell, pagebreak, merged cell and hyperlink-data are loaded into memory and removed from the document when loading the document. + + + + + Vml drawings. underlaying object for comments + + + + + Collection of comments + + + + + Get the lenth of the attributes + Conditional formatting attributes can be extremly long som get length of the attributes to finetune position. + + + + + + + Extracts the workbook XML without the sheetData-element (containing all cell data). + Xml-Cell data can be extreemly large (GB), so we find the sheetdata element in the streem (position start) and + then tries to find the </sheetData> element from the end-parameter. + This approach is to avoid out of memory exceptions reading large packages + + the worksheet stream + Position from previous reading where we found the sheetData element + End position, where </sheetData> or <sheetData/> is found + Encoding + The worksheet xml, with an empty sheetdata. (Sheetdata is in memory in the worksheet) + + + + Read until the node is found. If not found the xmlreader is reseted. + + The reader + Text to search for + Alternative text to search for + + + + + Load Hyperlinks + + The reader + + + + Load cells + + The reader + + + + Load merged cells + + + + + + Update merged cells + + The writer + + + + Reads a row from the XML reader + + The reader + The row number + + + + + A reference to the header and footer class which allows you to + set the header and footer for all odd, even and first pages of the worksheet + + + To format the text you can use the following format + + PrefixDescription + &UUnderlined + &EDouble Underline + &K:xxxxxxColor. ex &K:FF0000 for red + &"Font,Regular Bold Italic"Changes the font. Regular or Bold or Italic or Bold Italic can be used. ex &"Arial,Bold Italic" + &nnChange font size. nn is an integer. ex &24 + &GPlaceholder for images. Images can not be added by the library, but its possible to use in a template. + + + + + + Printer settings + + + + + Provides access to a range of cells + + + + + Provides access to the selected range of cells + + + + + Addresses to merged ranges + + + + + Provides access to an individual row within the worksheet so you can set its properties. + + The row number in the worksheet + + + + + Provides access to an individual column within the worksheet so you can set its properties. + + The column number in the worksheet + + + + + Returns the name of the worksheet + + The name of the worksheet + + + + Make the current worksheet active. + + + + + Selects a range in the worksheet. The active cell is the topmost cell. + Make the current worksheet active. + + An address range + + + + Selects a range in the worksheet. The actice cell is the topmost cell. + + A range of cells + Make the sheet active + + + + Selects a range in the worksheet. The active cell is the topmost cell of the first address. + Make the current worksheet active. + + An address range + + + + Selects a range in the worksheet. The active cell is the topmost cell of the first address. + + A range of cells + Make the sheet active + + + + Inserts a new row into the spreadsheet. Existing rows below the position are + shifted down. All formula are updated to take account of the new row. + + The position of the new row + Number of rows to insert + + + + Inserts a new row into the spreadsheet. Existing rows below the position are + shifted down. All formula are updated to take account of the new row. + + The position of the new row + Number of rows to insert. + Copy Styles from this row. Applied to all inserted rows + + + + Inserts a new column into the spreadsheet. Existing columns below the position are + shifted down. All formula are updated to take account of the new column. + + The position of the new column + Number of columns to insert + + + + Inserts a new column into the spreadsheet. Existing column to the left are + shifted. All formula are updated to take account of the new column. + + The position of the new column + Number of columns to insert. + Copy Styles from this column. Applied to all inserted columns + + + + Adds a value to the row of merged cells to fix for inserts or deletes + + + + + + + + Adds a value to the row of merged cells to fix for inserts or deletes + + + + + + + + Delete the specified row from the worksheet. + + A row to be deleted + + + + Delete the specified row from the worksheet. + + The start row + Number of rows to delete + + + + Delete the specified column from the worksheet. + + The column to be deleted + + + + Delete the specified column from the worksheet. + + The start column + Number of columns to delete + + + + Deletes the specified row from the worksheet. + + The number of the start row to be deleted + Number of rows to delete + Not used. Rows are always shifted + + + + Get the cell value from thw worksheet + + The row number + The row number + The value + + + + Get a strongly typed cell value from the worksheet + + The type + The row number + The row number + The value. If the value can't be converted to the specified type, the default value will be returned + + + + Set the value of a cell + + The row number + The column number + The value + + + + Set the value of a cell + + The Excel address + The value + + + + Get MergeCell Index No + + + + + + + + Delete the printersettings relationship and part. + + + + + Save all table data + + + + + Inserts the cols collection into the XML document + + + + + Insert row and cells into the XML document + + + + + Update xml with hyperlinks + + The stream + + + + Create the hyperlinks node in the XML + + + + + + Dimension address for the worksheet. + Top left cell to Bottom right. + If the worksheet has no cells, null is returned + + + + + Access to sheet protection properties + + + + + Collection of drawing-objects like shapes, images and charts + + + + + Tables defined in the worksheet. + + + + + Pivottables defined in the worksheet. + + + + + ConditionalFormatting defined in the worksheet. Use the Add methods to create ConditionalFormatting and add them to the worksheet. Then + set the properties on the instance returned. + + + + + + DataValidation defined in the worksheet. Use the Add methods to create DataValidations and add them to the worksheet. Then + set the properties on the instance returned. + + + + + + An image displayed as the background of the worksheet. + + + + + Returns the style ID given a style name. + The style ID will be created if not found, but only if the style name exists! + + + + + + + The workbook object + + + + + Get the next ID from a shared formula or an Array formula + Sharedforumlas will have an id from 0-x. Array formula ids start from 0x4000001-. + + If the formula is an array formula + + + + + Get the ExcelColumn for column (span ColumnMin and ColumnMax) + + + + + + + Get accessor of sheet value + + row + column + cell value + + + + Get accessor of sheet styleId + + row + column + cell styleId + + + + Set accessor of sheet value + + row + column + value + + + + Set accessor of sheet styleId + + row + column + styleId + + + + Bulk(Range) set accessor of sheet value, for value array + + start row + start column + end row + end column + set values + + + + Existance check of sheet value + + row + column + is exists + + + + Existance check of sheet styleId + + row + column + is exists + + + + Existance check of sheet value + + row + column + + is exists + + + + Existance check of sheet styleId + + row + column + + is exists + + + + The collection of worksheets for the workbook + + + + + Returns the number of worksheets in the workbook + + + + + Foreach support + + An enumerator + + + + Adds a new blank worksheet. + + The name of the workbook + + + + Adds a copy of a worksheet + + The name of the workbook + The worksheet to be copied + + + + Adds a chartsheet to the workbook. + + + + + + + + Validate the sheetname + + The Name + True if valid + + + + Creates the XML document representing a new empty worksheet + + + + + + Deletes a worksheet from the collection + + The position of the worksheet in the workbook + + + + Deletes a worksheet from the collection + + The name of the worksheet in the workbook + + + + Delete a worksheet from the collection + + The worksheet to delete + + + + Returns the worksheet at the specified position. + + The position of the worksheet. 1-base + + + + + Returns the worksheet matching the specified name + + The name of the worksheet + + + + + Copies the named worksheet and creates a new worksheet in the same workbook + + The name of the existing worksheet + The name of the new worksheet to create + The new copy added to the end of the worksheets collection + + + + Moves the source worksheet to the position before the target worksheet + + The name of the source worksheet + The name of the target worksheet + + + + Moves the source worksheet to the position before the target worksheet + + The id of the source worksheet + The id of the target worksheet + + + + Moves the source worksheet to the position after the target worksheet + + The name of the source worksheet + The name of the target worksheet + + + + Moves the source worksheet to the position after the target worksheet + + The id of the source worksheet + The id of the target worksheet + + + + + + + + + + + + + + + + + + + + + + + + + + + + Help class containing XML functions. + Can be Inherited + + + + + Schema order list + + + + + Options to insert a node in the XmlDocument + + + + + Insert as first node of "topNode" + + + + + Insert as the last child of "topNode" + + + + + Insert after the "referenceNode" + + + + + Insert before the "referenceNode" + + + + + Use the Schema List to insert in the right order. If the Schema list + is null or empty, consider "Last" as the selected option + + + + + Create a complex node. Insert the node according to SchemaOrder + using the TopNode as the parent + + + + + + + Create a complex node. Insert the node according to the + using the as the parent + + + + + + + + Creates complex XML nodes + + + 1. "d:conditionalFormatting" + 1.1. Creates/find the first "conditionalFormatting" node + + 2. "d:conditionalFormatting/@sqref" + 2.1. Creates/find the first "conditionalFormatting" node + 2.2. Creates (if not exists) the @sqref attribute + + 3. "d:conditionalFormatting/@id='7'/@sqref='A9:B99'" + 3.1. Creates/find the first "conditionalFormatting" node + 3.2. Creates/update its @id attribute to "7" + 3.3. Creates/update its @sqref attribute to "A9:B99" + + 4. "d:conditionalFormatting[@id='7']/@sqref='X1:X5'" + 4.1. Creates/find the first "conditionalFormatting" node with @id=7 + 4.2. Creates/update its @sqref attribute to "X1:X5" + + 5. "d:conditionalFormatting[@id='7']/@id='8'/@sqref='X1:X5'/d:cfRule/@id='AB'" + 5.1. Creates/find the first "conditionalFormatting" node with @id=7 + 5.2. Set its @id attribute to "8" + 5.2. Creates/update its @sqref attribute and set it to "X1:X5" + 5.3. Creates/find the first "cfRule" node (inside the node) + 5.4. Creates/update its @id attribute to "AB" + + 6. "d:cfRule/@id=''" + 6.1. Creates/find the first "cfRule" node + 6.1. Remove the @id attribute + + + + + + The last node creates/found + + + + return Prepend node + + name of the node to check + Topnode to check children + + + + + Insert the new node before any of the nodes in the comma separeted list + + Parent node + comma separated list containing nodes to insert after. Left to right order + The new node to be inserterd + + + + A range address + + Examples of addresses are "A1" "B1:C2" "A:A" "1:1" "A1:E2,G3:G5" + + + + Creates an Address object + + start row + start column + End row + End column + + + + Creates an Address object + + start row + start column + End row + End column + start row fixed + start column fixed + End row fixed + End column fixed + + + + Creates an Address object + + Examples of addresses are "A1" "B1:C2" "A:A" "1:1" "A1:E2,G3:G5" + The Excel Address + + + + Creates an Address object + + Examples of addresses are "A1" "B1:C2" "A:A" "1:1" "A1:E2,G3:G5" + The Excel Address + Reference to the package to find information about tables and names + The address + + + + Address is an defined name + + the name + Should always be true + + + + Gets the row and column of the top left cell. + + The start row column. + + + + Gets the row and column of the bottom right cell. + + The end row column. + + + + The address for the range + + + + + If the address is a defined name + + + + + Returns the address text + + + + + + returns the first address if the address is a multi address. + A1:A2,B1:B2 returns A1:A2 + + + + + Validate the address + + + + + Range address with the address property readonly + + + + + The address for the range + + Examples of addresses are "A1" "B1:C2" "A:A" "1:1" "A1:E2,G3:G5" + + + + The address for the range + + Examples of addresses are "A1" "B1:C2" "A:A" "1:1" "A1:E2,G3:G5" + + + + A single cell address + + + + + Initializes a new instance of the ExcelCellAddress class. + + The row. + The column. + + + + Initializes a new instance of the ExcelCellAddress class. + + The address + + + + Row + + + + + Column + + + + + Celladdress + + + + + If the address is an invalid reference (#REF!) + + + + + Returns the letter corresponding to the supplied 1-based column index. + + Index of the column (1-based) + The corresponding letter, like A for 1. + + + + An Excel Cell Comment + + + + + Author + + + + + The comment text + + + + + Sets the font of the first richtext item. + + + + + Richtext collection + + + + + Reference + + + + + Collection of Excelcomment objects + + + + + Access to the comment xml document + + + + + A reference to the worksheet object + + + + + Number of comments in the collection + + + + + Indexer for the comments collection + + The index + The comment + + + + Indexer for the comments collection + + The cell + The comment + + + + Adds a comment to the top left cell of the range + + The cell + The comment text + Author + The comment + + + + Removes the comment + + The comment to remove + + + + Shifts all comments based on their address and the location of inserted rows and columns. + + The start row. + The start column. + The number of rows to insert. + The number of columns to insert. + + + + Shifts all comments based on their address and the location of inserted rows and columns. + + The start row. + The start column. + The number of rows to insert. + The number of columns to insert. + + + + Removes the comment at the specified position + + The index + + + + Sheet protection + + + + + + + If the worksheet is protected. + + + + + Allow users to select locked cells + + + + + Allow users to select unlocked cells + + + + + Allow users to edit objects + + + + + Allow users to edit senarios + + + + + Allow users to format cells + + + + + Allow users to Format columns + + + + + Allow users to Format rows + + + + + Allow users to insert columns + + + + + Allow users to Format rows + + + + + Allow users to insert hyperlinks + + + + + Allow users to delete columns + + + + + Allow users to delete rows + + + + + Allow users to sort a range + + + + + Allow users to use autofilters + + + + + Allow users to use pivottables + + + + + Sets a password for the sheet. + + + + + + Base class containing cell address manipulating methods. + + + + + Get the sheet, row and column from the CellID + + + + + + + + + Get the cellID for the cell. + + + + + + + + + Translates a R1C1 to an absolut address/Formula + + Address + Current row + Current column + The RC address + + + + Translates a absolut address to R1C1 Format + + R1C1 Address + Current row + Current column + The absolut address/Formula + + + + Translates betweein R1C1 or absolut addresses + + The addresss/function + The translating function + + + + + + + + + Translate to R1C1 + + the value to be translated + + + + + + + + + Translates to absolute address + + + + + + + + + + + Adds or subtracts a row or column to an address + + + + + + + + + + + Returns with brackets if the value is negative + + The value + + + + + Get the offset value for RC format + + + + + + + + + Returns the character representation of the numbered column + + The number of the column + The letter representing the column + + + + Get the row/columns for a Cell-address + + The address + Returns the to column + Returns the from column + Returns the to row + Returns the from row + Is the from row fixed? + Is the from column fixed? + Is the to row fixed? + Is the to column fixed? + + + + + Get the row/column for n Cell-address + + The address + Returns Tthe row + Returns the column + true if valid + + + + Get the row/column for a Cell-address + + the address + returns the row + returns the column + throw exception if invalid, otherwise returns false + + + + + Returns the AlphaNumeric representation that Excel expects for a Cell Address + + The number of the row + The number of the column in the worksheet + The cell address in the format A1 + + + + Returns the AlphaNumeric representation that Excel expects for a Cell Address + + The number of the row + The number of the column in the worksheet + Absolute row + Absolute column + The cell address in the format A1 + + + + Returns the AlphaNumeric representation that Excel expects for a Cell Address + + The number of the row + The number of the column in the worksheet + Get an absolute address ($A$1) + The cell address in the format A1 + + + + Returns the AlphaNumeric representation that Excel expects for a Cell Address + + From row number + From column number + To row number + From column number + The cell address in the format A1 + + + + Returns the AlphaNumeric representation that Excel expects for a Cell Address + + From row number + From column number + To row number + From column number + if true address is absolute (like $A$1) + The cell address in the format A1 + + + + Returns the AlphaNumeric representation that Excel expects for a Cell Address + + From row number + From column number + To row number + From column number + + + + + The cell address in the format A1 + + + + Get the full address including the worksheet name + + The name of the worksheet + The address + The full address + + + + Checks that a cell address (e.g. A5) is valid. + + The alphanumeric cell address + True if the cell address is valid + + + + Updates the Excel formula so that all the cellAddresses are incremented by the row and column increments + if they fall after the afterRow and afterColumn. + Supports inserting rows and columns into existing templates. + + The Excel formula + The amount to increment the cell reference by + The amount to increment the cell reference by + Only change rows after this row + Only change columns after this column + The sheet that contains the formula currently being processed. + The sheet where cells are being inserted or deleted. + Fixed address + The updated version of the . + + + + Updates all the references to a renamed sheet in a formula. + + The formula to updated. + The old sheet name. + The new sheet name. + The formula with all cross-sheet references updated. + + + + HyperlinkClass + + + + + A new hyperlink with the specified URI + + The URI + + + + A new hyperlink with the specified URI. This syntax is obsolete + + The URI + + + + + A new hyperlink with the specified URI and kind + + The URI + Kind (absolute/relative or indeterminate) + + + + Sheet internal reference + + Address + Displayed text + + + + The Excel address for internal links. + + + + + Displayed text + + + + + Tooltip + + + + + If the hyperlink spans multiple columns + + + + + If the hyperlink spans multiple rows + + + + + Used to handle non absolute URI's. + Is used if IsAblsoluteUri is true. The base URI will have a dummy value of xl://nonAbsolute. + + + + + A named range. + + + + + A named range + + The name + The sheet containing the name. null if its a global name + Sheet where the address points + The address + The index in the collection + + + + Name of the range + + + + + Is the named range local for the sheet + + + + + Is the name hidden + + + + + A comment for the Name + + + + + Collection for named ranges + + + + + Add a new named range + + The name + The range + + + + + Add a defined name referencing value + + + + + + + + Add a defined name referencing a formula -- the method name contains a typo. + This method is obsolete and will be removed in the future. + Use + + + + + + + + Add a defined name referencing a formula + + + + + + + + Remove a defined name from the collection + + The name + + + + Checks collection for the presence of a key + + key to search for + true if the key is in the collection + + + + The current number of items in the collection + + + + + Name indexer + + The name (key) for a Named range + a reference to the range + + Throws a KeyNotFoundException if the key is not in the collection. + + + + + Implement interface method IEnumerator<ExcelNamedRange> GetEnumerator() + + + + + + Implement interface method IEnumeratable GetEnumerator() + + + + + + Printer orientation + + + + + Portrait orientation + + + + + Landscape orientation + + + + + Papersize + + + + + Letter paper (8.5 in. by 11 in.) + + + + + Letter small paper (8.5 in. by 11 in.) + + + + + // Tabloid paper (11 in. by 17 in.) + + + + + Ledger paper (17 in. by 11 in.) + + + + + Legal paper (8.5 in. by 14 in.) + + + + + Statement paper (5.5 in. by 8.5 in.) + + + + + Executive paper (7.25 in. by 10.5 in.) + + + + + A3 paper (297 mm by 420 mm) + + + + + A4 paper (210 mm by 297 mm) + + + + + A4 small paper (210 mm by 297 mm) + + + + + A5 paper (148 mm by 210 mm) + + + + + B4 paper (250 mm by 353 mm) + + + + + B5 paper (176 mm by 250 mm) + + + + + Folio paper (8.5 in. by 13 in.) + + + + + Quarto paper (215 mm by 275 mm) + + + + + Standard paper (10 in. by 14 in.) + + + + + Standard paper (11 in. by 17 in.) + + + + + Note paper (8.5 in. by 11 in.) + + + + + #9 envelope (3.875 in. by 8.875 in.) + + + + + #10 envelope (4.125 in. by 9.5 in.) + + + + + #11 envelope (4.5 in. by 10.375 in.) + + + + + #12 envelope (4.75 in. by 11 in.) + + + + + #14 envelope (5 in. by 11.5 in.) + + + + + C paper (17 in. by 22 in.) + + + + + D paper (22 in. by 34 in.) + + + + + E paper (34 in. by 44 in.) + + + + + DL envelope (110 mm by 220 mm) + + + + + C5 envelope (162 mm by 229 mm) + + + + + C3 envelope (324 mm by 458 mm) + + + + + C4 envelope (229 mm by 324 mm) + + + + + C6 envelope (114 mm by 162 mm) + + + + + C65 envelope (114 mm by 229 mm) + + + + + B4 envelope (250 mm by 353 mm) + + + + + B5 envelope (176 mm by 250 mm) + + + + + B6 envelope (176 mm by 125 mm) + + + + + Italy envelope (110 mm by 230 mm) + + + + + Monarch envelope (3.875 in. by 7.5 in.). + + + + + 6 3/4 envelope (3.625 in. by 6.5 in.) + + + + + US standard fanfold (14.875 in. by 11 in.) + + + + + German standard fanfold (8.5 in. by 12 in.) + + + + + German legal fanfold (8.5 in. by 13 in.) + + + + + ISO B4 (250 mm by 353 mm) + + + + + Japanese double postcard (200 mm by 148 mm) + + + + + Standard paper (9 in. by 11 in.) + + + + + Standard paper (10 in. by 11 in.) + + + + + Standard paper (15 in. by 11 in.) + + + + + Invite envelope (220 mm by 220 mm) + + + + + Letter extra paper (9.275 in. by 12 in.) + + + + + Legal extra paper (9.275 in. by 15 in.) + + + + + Tabloid extra paper (11.69 in. by 18 in.) + + + + + A4 extra paper (236 mm by 322 mm) + + + + + Letter transverse paper (8.275 in. by 11 in.) + + + + + A4 transverse paper (210 mm by 297 mm) + + + + + Letter extra transverse paper (9.275 in. by 12 in.) + + + + + SuperA/SuperA/A4 paper (227 mm by 356 mm) + + + + + SuperB/SuperB/A3 paper (305 mm by 487 mm) + + + + + Letter plus paper (8.5 in. by 12.69 in.) + + + + + A4 plus paper (210 mm by 330 mm) + + + + + A5 transverse paper (148 mm by 210 mm) + + + + + JIS B5 transverse paper (182 mm by 257 mm) + + + + + A3 extra paper (322 mm by 445 mm) + + + + + A5 extra paper (174 mm by 235 mm) + + + + + ISO B5 extra paper (201 mm by 276 mm) + + + + + A2 paper (420 mm by 594 mm) + + + + + A3 transverse paper (297 mm by 420 mm) + + + + + A3 extra transverse paper (322 mm by 445 mm*/ + + + + + Specifies printed page order + + + + + Order pages vertically first, then move horizontally. + + + + + Order pages horizontally first, then move vertically + + + + + Printer settings + + + + + Left margin in inches + + + + + Right margin in inches + + + + + Top margin in inches + + + + + Bottom margin in inches + + + + + Header margin in inches + + + + + Footer margin in inches + + + + + Orientation + Portrait or Landscape + + + + + Fit to Width in pages. + Set FitToPage to true when using this one. + 0 is automatic + + + + + Fit to height in pages. + Set FitToPage to true when using this one. + 0 is automatic + + + + + Print scale + + + + + Fit To Page. + + + + + Print headings (column letter and row numbers) + + + + + Print titles + Rows to be repeated after each pagebreak. + The address must be a full row address (ex. 1:1) + + + + + Print titles + Columns to be repeated after each pagebreak. + The address must be a full column address (ex. A:A) + + + + + The printarea. + Null if no print area is set. + + + + + Print gridlines + + + + + Horizontal centered when printing + w + + + + Vertical centered when printing + + + + + Specifies printed page order + + + + + Print black and white + + + + + Print a draft + + + + + Paper size + + + + + All or none of the margin attributes must exist. Create all att ones. + + + + + A range of cells + + + + + Reference to the worksheet + + + + + On change address handler + + + + + We dont know the address yet. Set the delegate first time a property is set. + + + + + + + + Set a single cell + + + + + + + + Set a range + + + + + + + + Set a multirange (A1:A2,C1:C2) + + + + + + + + Set the property for an address + + + + + + + + Handles shared formulas + + The range + The formula + The address of the formula + If the forumla is an array formula. + + + + The styleobject for the range. + + + + + The named style + + + + + The style ID. + It is not recomended to use this one. Use Named styles as an alternative. + If you do, make sure that you use the Style.UpdateXml() method to update any new styles added to the workbook. + + + + + Set the range to a specific value + + + + + Returns the formatted value. + + + + + Set the column width from the content of the range. The minimum width is the value of the ExcelWorksheet.defaultColumnWidth property. + Note: Cells containing formulas are ignored since EPPlus don't have a calculation engine. + Wrapped and merged cells are also ignored. + + + + + Set the column width from the content of the range. + Note: Cells containing formulas are ignored if no calculation is made. + Wrapped and merged cells are also ignored. + + This method will not work if you run in an environment that does not support GDI + Minimum column width + + + + Set the column width from the content of the range. + Note: Cells containing formulas are ignored if no calculation is made. + Wrapped and merged cells are also ignored. + Hidden columns are left hidden. + + Minimum column width + Maximum column width + + + + Gets or sets a formula for a range. + + + + + Gets or Set a formula in R1C1 format. + + + + + Set the hyperlink property for a range of cells + + + + + If the cells in the range are merged. + + + + + Set an autofilter for the range + + + + + If the value is in richtext format. + + + + + Is the range a part of an Arrayformula + + + + + Cell value is richtext formatted. + Richtext-property only apply to the left-top cell of the range. + + + + + returns the comment object of the first cell in the range + + + + + WorkSheet object + + + + + Address including sheetname + + + + + Address including sheetname + + + + + Address including sheetname + + + + + Set the value without altering the richtext property + + the value + + + + Conditional Formatting for this range. + + + + + Data validation for this range. + + + + + Load the data from the datareader starting from the top left cell of the range + + The datareader to loadfrom + Print the column caption property (if set) or the columnname property if not, on first row + The name of the table + The table style to apply to the data + The filled range + + + + Load the data from the datareader starting from the top left cell of the range + + The datareader to load from + Print the caption property (if set) or the columnname property if not, on first row + The filled range + + + + Load the data from the datatable starting from the top left cell of the range + + The datatable to load + Print the column caption property (if set) or the columnname property if not, on first row + The table style to apply to the data + The filled range + + + + Load the data from the datatable starting from the top left cell of the range + + The datatable to load + Print the caption property (if set) or the columnname property if not, on first row + The filled range + + + + Loads data from the collection of arrays of objects into the range, starting from + the top-left cell. + + The data. + + + + Load a collection into a the worksheet starting from the top left row of the range. + + The datatype in the collection + The collection to load + The filled range + + + + Load a collection of T into the worksheet starting from the top left row of the range. + Default option will load all public instance properties of T + + The datatype in the collection + The collection to load + Print the property names on the first row. If the property is decorated with a or a that attribute will be used instead of the reflected member name. + The filled range + + + + Load a collection of T into the worksheet starting from the top left row of the range. + Default option will load all public instance properties of T + + The datatype in the collection + The collection to load + Print the property names on the first row. If the property is decorated with a or a that attribute will be used instead of the reflected member name. + Will create a table with this style. If set to TableStyles.None no table will be created + The filled range + + + + Load a collection into the worksheet starting from the top left row of the range. + + The datatype in the collection + The collection to load + Print the property names on the first row. Any underscore in the property name will be converted to a space. If the property is decorated with a or a that attribute will be used instead of the reflected member name. + Will create a table with this style. If set to TableStyles.None no table will be created + Property flags to use + The properties to output. Must be of type T + The filled range + + + + Loads a CSV text into a range starting from the top left cell. + Default settings is Comma separation + + The Text + The range containing the data + + + + Loads a CSV text into a range starting from the top left cell. + + The Text + Information how to load the text + The range containing the data + + + + Loads a CSV text into a range starting from the top left cell. + + The Text + Information how to load the text + Create a table with this style + Use the first row as header + + + + + Loads a CSV file into a range starting from the top left cell. + + The Textfile + + + + + Loads a CSV file into a range starting from the top left cell. + + The Textfile + Information how to load the text + + + + + Loads a CSV file into a range starting from the top left cell. + + The Textfile + Information how to load the text + Create a table with this style + Use the first row as header + + + + + Get the strongly typed value of the cell. + + The type + The value. If the value can't be converted to the specified type, the default value will be returned + + + + Get a range with an offset from the top left cell. + The new range has the same dimensions as the current range + + Row Offset + Column Offset + + + + + Get a range with an offset from the top left cell. + + Row Offset + Column Offset + Number of rows. Minimum 1 + Number of colums. Minimum 1 + + + + + Adds a new comment for the range. + If this range contains more than one cell, the top left comment is returned by the method. + + + + A reference comment of the top left cell + + + + Copies the range of cells to an other range + + The start cell where the range will be copied. + + + + Copies the range of cells to an other range + + The start cell where the range will be copied. + Cell parts that will not be copied. If Formulas are specified, the formulas will NOT be copied. + + + + Clear all cells + + + + + Creates an array-formula. + + The formula + + + + The current range when enumerating + + + + + The current range when enumerating + + + + + Id from a cell, column or row. + + + + + This is the id for a cell, row or column. + The id is a composit of the SheetID, the row number and the column number. + Bit 1-14 SheetID, Bit 15-28 Column number (0 if entire column), Bit 29- Row number (0 if entire row). + + + + + Line end style. + + + + + No end + + + + + Triangle arrow head + + + + + Stealth arrow head + + + + + Diamond + + + + + Oval + + + + + Line arrow head + + + + + Lend end size. + + + + + Smal + + + + + Medium + + + + + Large + + + + + Shape style + + + + + Text alignment + + + + + Fillstyle. + + + + + Provides a stream metaphor for reading zip files. + + + + + This class provides an alternative programming model for reading zip files to + the one enabled by the class. Use this when reading zip + files, as an alternative to the class, when you would + like to use a Stream class to read the file. + + + + Some application designs require a readable stream for input. This stream can + be used to read a zip file, and extract entries. + + + + Both the ZipInputStream class and the ZipFile class can be used + to read and extract zip files. Both of them support many of the common zip + features, including Unicode, different compression levels, and ZIP64. The + programming models differ. For example, when extracting entries via calls to + the GetNextEntry() and Read() methods on the + ZipInputStream class, the caller is responsible for creating the file, + writing the bytes into the file, setting the attributes on the file, and + setting the created, last modified, and last accessed timestamps on the + file. All of these things are done automatically by a call to ZipEntry.Extract(). For this reason, the + ZipInputStream is generally recommended for when your application wants + to extract the data, without storing that data into a file. + + + + Aside from the obvious differences in programming model, there are some + differences in capability between the ZipFile class and the + ZipInputStream class. + + + + + ZipFile can be used to create or update zip files, or read and + extract zip files. ZipInputStream can be used only to read and + extract zip files. If you want to use a stream to create zip files, check + out the . + + + + ZipInputStream cannot read segmented or spanned + zip files. + + + + ZipInputStream will not read Zip file comments. + + + + When reading larger files, ZipInputStream will always underperform + ZipFile. This is because the ZipInputStream does a full scan on the + zip file, while the ZipFile class reads the central directory of the + zip file. + + + + + + + + + Create a ZipInputStream, wrapping it around an existing stream. + + + + + + While the class is generally easier + to use, this class provides an alternative to those + applications that want to read from a zipfile directly, + using a . + + + + Both the ZipInputStream class and the ZipFile class can be used + to read and extract zip files. Both of them support many of the common zip + features, including Unicode, different compression levels, and ZIP64. The + programming models differ. For example, when extracting entries via calls to + the GetNextEntry() and Read() methods on the + ZipInputStream class, the caller is responsible for creating the file, + writing the bytes into the file, setting the attributes on the file, and + setting the created, last modified, and last accessed timestamps on the + file. All of these things are done automatically by a call to ZipEntry.Extract(). For this reason, the + ZipInputStream is generally recommended for when your application wants + to extract the data, without storing that data into a file. + + + + Aside from the obvious differences in programming model, there are some + differences in capability between the ZipFile class and the + ZipInputStream class. + + + + + ZipFile can be used to create or update zip files, or read and extract + zip files. ZipInputStream can be used only to read and extract zip + files. If you want to use a stream to create zip files, check out the . + + + + ZipInputStream cannot read segmented or spanned + zip files. + + + + ZipInputStream will not read Zip file comments. + + + + When reading larger files, ZipInputStream will always underperform + ZipFile. This is because the ZipInputStream does a full scan on the + zip file, while the ZipFile class reads the central directory of the + zip file. + + + + + + + + The stream to read. It must be readable. This stream will be closed at + the time the ZipInputStream is closed. + + + + + This example shows how to read a zip file, and extract entries, using the + ZipInputStream class. + + + private void Unzip() + { + byte[] buffer= new byte[2048]; + int n; + using (var raw = File.Open(inputFileName, FileMode.Open, FileAccess.Read)) + { + using (var input= new ZipInputStream(raw)) + { + ZipEntry e; + while (( e = input.GetNextEntry()) != null) + { + if (e.IsDirectory) continue; + string outputPath = Path.Combine(extractDir, e.FileName); + using (var output = File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite)) + { + while ((n= input.Read(buffer, 0, buffer.Length)) > 0) + { + output.Write(buffer,0,n); + } + } + } + } + } + } + + + + Private Sub UnZip() + Dim inputFileName As String = "MyArchive.zip" + Dim extractDir As String = "extract" + Dim buffer As Byte() = New Byte(2048) {} + Using raw As FileStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read) + Using input As ZipInputStream = New ZipInputStream(raw) + Dim e As ZipEntry + Do While (Not e = input.GetNextEntry Is Nothing) + If Not e.IsDirectory Then + Using output As FileStream = File.Open(Path.Combine(extractDir, e.FileName), _ + FileMode.Create, FileAccess.ReadWrite) + Dim n As Integer + Do While (n = input.Read(buffer, 0, buffer.Length) > 0) + output.Write(buffer, 0, n) + Loop + End Using + End If + Loop + End Using + End Using + End Sub + + + + + + Create a ZipInputStream, given the name of an existing zip file. + + + + + + This constructor opens a FileStream for the given zipfile, and + wraps a ZipInputStream around that. See the documentation for the + constructor for full details. + + + + While the class is generally easier + to use, this class provides an alternative to those + applications that want to read from a zipfile directly, + using a . + + + + + + The name of the filesystem file to read. + + + + + This example shows how to read a zip file, and extract entries, using the + ZipInputStream class. + + + private void Unzip() + { + byte[] buffer= new byte[2048]; + int n; + using (var input= new ZipInputStream(inputFileName)) + { + ZipEntry e; + while (( e = input.GetNextEntry()) != null) + { + if (e.IsDirectory) continue; + string outputPath = Path.Combine(extractDir, e.FileName); + using (var output = File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite)) + { + while ((n= input.Read(buffer, 0, buffer.Length)) > 0) + { + output.Write(buffer,0,n); + } + } + } + } + } + + + + Private Sub UnZip() + Dim inputFileName As String = "MyArchive.zip" + Dim extractDir As String = "extract" + Dim buffer As Byte() = New Byte(2048) {} + Using input As ZipInputStream = New ZipInputStream(inputFileName) + Dim e As ZipEntry + Do While (Not e = input.GetNextEntry Is Nothing) + If Not e.IsDirectory Then + Using output As FileStream = File.Open(Path.Combine(extractDir, e.FileName), _ + FileMode.Create, FileAccess.ReadWrite) + Dim n As Integer + Do While (n = input.Read(buffer, 0, buffer.Length) > 0) + output.Write(buffer, 0, n) + Loop + End Using + End If + Loop + End Using + End Sub + + + + + + Create a ZipInputStream, explicitly specifying whether to + keep the underlying stream open. + + + + See the documentation for the ZipInputStream(Stream) + constructor for a discussion of the class, and an example of how to use the class. + + + + The stream to read from. It must be readable. + + + + true if the application would like the stream + to remain open after the ZipInputStream has been closed. + + + + Provides a string representation of the instance. + + + This can be useful for debugging purposes. + + + a string representation of the instance. + + + + The text encoding to use when reading entries into the zip archive, for + those entries whose filenames or comments cannot be encoded with the + default (IBM437) encoding. + + + + + In its + zip specification, PKWare describes two options for encoding + filenames and comments: using IBM437 or UTF-8. But, some archiving tools + or libraries do not follow the specification, and instead encode + characters using the system default code page. For example, WinRAR when + run on a machine in Shanghai may encode filenames with the Big-5 Chinese + (950) code page. This behavior is contrary to the Zip specification, but + it occurs anyway. + + + + When using DotNetZip to read zip archives that use something other than + UTF-8 or IBM437, set this property to specify the code page to use when + reading encoded filenames and comments for each ZipEntry in the zip + file. + + + + This property is "provisional". When the entry in the zip archive is not + explicitly marked as using UTF-8, then IBM437 is used to decode filenames + and comments. If a loss of data would result from using IBM436 - + specifically when encoding and decoding is not reflexive - the codepage + specified here is used. It is possible, therefore, to have a given entry + with a Comment encoded in IBM437 and a FileName encoded with + the specified "provisional" codepage. + + + + When a zip file uses an arbitrary, non-UTF8 code page for encoding, there + is no standard way for the reader application - whether DotNetZip, WinZip, + WinRar, or something else - to know which codepage has been used for the + entries. Readers of zip files are not able to inspect the zip file and + determine the codepage that was used for the entries contained within it. + It is left to the application or user to determine the necessary codepage + when reading zip files encoded this way. If you use an incorrect codepage + when reading a zipfile, you will get entries with filenames that are + incorrect, and the incorrect filenames may even contain characters that + are not legal for use within filenames in Windows. Extracting entries with + illegal characters in the filenames will lead to exceptions. It's too bad, + but this is just the way things are with code pages in zip files. Caveat + Emptor. + + + + + + + Size of the work buffer to use for the ZLIB codec during decompression. + + + + Setting this affects the performance and memory efficiency of compression + and decompression. For larger files, setting this to a larger size may + improve performance, but the exact numbers vary depending on available + memory, and a bunch of other variables. I don't have good firm + recommendations on how to set it. You'll have to test it yourself. Or + just leave it alone and accept the default. + + + + + Sets the password to be used on the ZipInputStream instance. + + + + + + When reading a zip archive, this password is used to read and decrypt the + entries that are encrypted within the zip file. When entries within a zip + file use different passwords, set the appropriate password for the entry + before the first call to Read() for each entry. + + + + When reading an entry that is not encrypted, the value of this property is + ignored. + + + + + + + This example uses the ZipInputStream to read and extract entries from a + zip file, using a potentially different password for each entry. + + + byte[] buffer= new byte[2048]; + int n; + using (var raw = File.Open(_inputFileName, FileMode.Open, FileAccess.Read )) + { + using (var input= new ZipInputStream(raw)) + { + ZipEntry e; + while (( e = input.GetNextEntry()) != null) + { + input.Password = PasswordForEntry(e.FileName); + if (e.IsDirectory) continue; + string outputPath = Path.Combine(_extractDir, e.FileName); + using (var output = File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite)) + { + while ((n= input.Read(buffer,0,buffer.Length)) > 0) + { + output.Write(buffer,0,n); + } + } + } + } + } + + + + + + + Read the data from the stream into the buffer. + + + + + The data for the zipentry will be decrypted and uncompressed, as + necessary, before being copied into the buffer. + + + + You must set the property before calling + Read() the first time for an encrypted entry. To determine if an + entry is encrypted and requires a password, check the ZipEntry.Encryption property. + + + + The buffer to hold the data read from the stream. + the offset within the buffer to copy the first byte read. + the number of bytes to read. + the number of bytes read, after decryption and decompression. + + + + Read the next entry from the zip file. + + + + + Call this method just before calling , + to position the pointer in the zip file to the next entry that can be + read. Subsequent calls to Read(), will decrypt and decompress the + data in the zip file, until Read() returns 0. + + + + Each time you call GetNextEntry(), the pointer in the wrapped + stream is moved to the next entry in the zip file. If you call , and thus re-position the pointer within + the file, you will need to call GetNextEntry() again, to insure + that the file pointer is positioned at the beginning of a zip entry. + + + + This method returns the ZipEntry. Using a stream approach, you will + read the raw bytes for an entry in a zip file via calls to Read(). + Alternatively, you can extract an entry into a file, or a stream, by + calling , or one of its siblings. + + + + + + The ZipEntry read. Returns null (or Nothing in VB) if there are no more + entries in the zip file. + + + + + + Dispose the stream. + + + + + This method disposes the ZipInputStream. It may also close the + underlying stream, depending on which constructor was used. + + + + Typically the application will call Dispose() implicitly, via + a using statement in C#, or a Using statement in VB. + + + + Application code won't call this code directly. This method may + be invoked in two distinct scenarios. If disposing == true, the + method has been called directly or indirectly by a user's code, + for example via the public Dispose() method. In this case, both + managed and unmanaged resources can be referenced and disposed. + If disposing == false, the method has been called by the runtime + from inside the object finalizer and this method should not + reference other objects; in that case only unmanaged resources + must be referenced or disposed. + + + + + true if the Dispose method was invoked by user code. + + + + + Always returns true. + + + + + Returns the value of CanSeek for the underlying (wrapped) stream. + + + + + Always returns false. + + + + + Returns the length of the underlying stream. + + + + + Gets or sets the position of the underlying stream. + + + Setting the position is equivalent to calling Seek(value, SeekOrigin.Begin). + + + + + This is a no-op. + + + + + This method always throws a NotSupportedException. + + ignored + ignored + ignored + + + + This method seeks in the underlying stream. + + + + + Call this method if you want to seek around within the zip file for random access. + + + + Applications can intermix calls to Seek() with calls to . After a call to Seek(), + GetNextEntry() will get the next ZipEntry that falls after + the current position in the input stream. You're on your own for finding + out just where to seek in the stream, to get to the various entries. + + + + + the offset point to seek to + the reference point from which to seek + The new position + + + + This method always throws a NotSupportedException. + + ignored + + + diff --git a/packages/EPPlus.4.1.0/lib/net40/EPPlus.dll b/packages/EPPlus.4.1.0/lib/net40/EPPlus.dll new file mode 100644 index 0000000000000000000000000000000000000000..46a1a486470bf3121a10da168073a47141a50c04 GIT binary patch literal 1250304 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
      )HEqjrpqG}I?Rq8Jm)}Wn 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
      r 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%0A-`Z@qS!n7^~qS6CW`2p!m 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 literal 0 HcmV?d00001 diff --git a/packages/EPPlus.4.1.0/lib/readme.txt b/packages/EPPlus.4.1.0/lib/readme.txt new file mode 100644 index 0000000..b1575b9 --- /dev/null +++ b/packages/EPPlus.4.1.0/lib/readme.txt @@ -0,0 +1,122 @@ +EPPlus 4.1 + +Visit epplus.codeplex.com for the latest information + +EPPlus-Create Advanced Excel spreadsheet. + +New features 4.0 + +Replaced Packaging API with DotNetZip +* This will remove any problems with Isolated Storage and enable multithreading + + +New Cell store +* Less memory consumption +* Insert columns (not on the range level) +* Faster row inserts, + +Formula Parser +* Calculates all formulas in a workbook, a worksheet or in a specified range +* 100+ functions implemented +* Access via Calculate methods on Workbook, Worksheet and Range objects. +* Add custom/missing Excel functions via Workbook. FormulaParserManager. +* Samples added to the EPPlusSamples project. + +The formula parser does not support Array Formulas +* Intersect operator (Space) +* References to external workbooks +* And probably a whole lot of other stuff as well :) + +Performance +*Of course the performance of the formula parser is nowhere near Excels. Our focus has been functionality. + +Agile Encryption (Office 2012-) +* Support for newer type of encryption. + +Minor new features +* Chart worksheets +* New Chart Types Bubblecharts +* Radar Charts +* Area Charts +* And lots of bug fixes... + +Beta 2 Changes +* Fixed bug when using RepeatColumns & RepeatRows at the same time. +* VBA project will be left untouched if its not accessed. +* Fixed problem with strings on save. +* Added locks to the cell store for access by multiple threads. +* Implemented Indirect function +* Used DisplayNameAttribute to generate column headers from LoadFromCollection +* Rewrote ExcelRangeBase.Copy function. +* Added caching to Save ZipStream for Cells and shared strings to speed up the Save method. +* Added Missing InsertColumn and DeleteColumn +* Added pull request to support Date1904 +* Added pull request ExcelWorksheet. LoadFromDataReader + +Release Candidate changes +* Fixed some problems with Range.Copy Function +* InsertColumn and Delete column didn't work in some cases +* Chart.DisplayBlankAs had the wrong default type in Excel 2010+ +* Datavalidation list overflow caused corruption of the package +* Fixed a few Calculation when referring ranges (for example If function) +* Added ChartAxis.DisplayUnit +* Fixed a bug related to shared formulas +* Named styles failed in some cases. +* Style.Indent got an invalid value in some cases. +* Fixed a problem with AutofitColumns method. +* Performance fix. +* A whole lot of other small fixes. + +4.0.1 Fixes +* VBA unreadable content +* Fixed a few issues with InsertRow and DeleteRow +* Fixed bug in Average and AverageA +* Handling of Div/0 in functions +* Fixed VBA CodeModule error when copying a worksheet. +* Value decoding when reading str element for cell value. +* Better exception when accessing a worksheet out of range in the Excelworksheets indexer. +* Added Small and Large function to formula parser. Performance fix when encountering an unknown function. +* Fixed handling strings in formulas +* Calculate hangs if formula start with a parenthes. +* Worksheet.Dimension returned an invalid range in some cases. +* Rowheight was wrong in some cases. +* ExcelSeries.Header had an incorrect validation check. + +4.0.2 Fixes +* Fixes a whole bunch of bugs related to the cell store (Worksheet.InsertColumn, Worksheet.InsertRow, Worksheet.DeleteColumn, Worksheet.DeleteRow, Range.Copy, Range.Clear) +* Added functions Acos, Acosh, Asinh, Atanh, Atan, CountBlank, CountIfs, Mina, Offset, Median, Hyperlink, Rept +* Fix for reading Excel comment content from the t-element. +* Fix to make Range.LoadFromCollection work better with inheritence +* And alot of other small fixes + +4.0.3 Fixes +* Added compilation directive for MONO (Thanks Danny) +* Added functions IfError, Char, Error.Type, Degrees, Fixed, IsNonText, IfNa and SumIfs +* And fixed a lot of issues. See http://epplus.codeplex.com/SourceControl/list/changesets for more details + +4.0.4 Fixes +* Added functions Daverage, Dvar Dvarp, DMax, DMin DSum, DGet, DCount and DCountA +* Exposed the formula parser logging functionality via FormulaParserManager. +* And fixed a lot of issues. See http://epplus.codeplex.com/SourceControl/list/changesets for more details + +4.0.5 Fixes +* Switched to Visual Studio 2015 for code and sample projects. +* Added LineColor, MarkerSize, LineWidth and MarkerLineColor properties to line charts +* Added LineEnd properties to shapes +* Added functions Value, DateValue, TimeValue +* Removed WPF depedency. +* And fixed a lot of issues. See http://epplus.codeplex.com/SourceControl/list/changesets for more details + +4.1 +* Added functions Rank, Rank.eq, Rank.avg and Search +* Custom function compilers can now be added via FormulaParserManager +* Applied a whole bunch of pull requests... + * Performance and memory usage tweeks + * Ability to set and retrieve 'custom' extended application propeties. + * Added style QuotePrefix + * Added support for MajorTimeUnit and MinorTimeUnit to chart axes + * Added GapWidth Property to BarChart and Gapwidth. + * Added Fill and Border properties to ChartSerie. + * Added support for MajorTimeUnit and MinorTimeUnit to chart axes + * Insert/delete row/column now shifts named ranges, comments, tables and pivottables. +* And fixed a lot of issues. See http://epplus.codeplex.com/SourceControl/list/changesets for more details

    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%0AQG4gNOnb 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෿(*f-$n5pGYM|A&OXnkJ0X$*1X;yc zEnuKR*s#H=9B^!6v>D3)jMLw?H1;D3bQaun&O(w6z@Bld3{6KsLanHw-+UX{5wMC^ zx@Oh08U_U2u#4P9DlNY2!>s@}=Th^EZy9C zh{$4}();TOPLNiI=6s4NnjKZfYr$)g!T3SF9%!FrAKs^d4o;$v|#;RcZF4*lmn0 z0rHIuzHf~=kY=9o?pSQEuceh?4WQskXKvb2>*Z}+Zz*dvx->OYiXQH!wWVll$R$%s?_Dzh7(1HWg}FQUtIpDbs~n8aLMr8X)dfrT7mVX z^-MO=odd*Sxt}4X^E~ef@clCE2+fv~R!!x9SYg8qw@Cjw8qz36zo@13LV&vtgj9TS1q#z5y(Iy?YnpegcT=fS=7YTxcyLz{GMYUDu_(Oq`|XR{^1^ zFOnb*aGiB-Yql!>Q2X>dIc^jyF z(AlTwBb4L)_s^3d%IyRp&wW(z?IsY|ro0a=D_&RLMnaEpSIg$`;G!?XN6@+Bfuez< z!>!bzt$?HRfvuo^j;##mjg!Om(1)&9#(1AvoBQQR9qrGp!A<2dbqkis`S}OBbuBg6 z7iWq&&m}RGX%|UHr%v98nFAdPNw&vX&TuQitqb|=c2DirzPeV+(lmFGY?zrgW~|x$ z^=pb|Tpmma;kaCCJuq-}xCP1kV^FyRY*#q;0PwX8%j){JD0GX?1?vWk1Z+;E4Xr51 zY-TB96%T)+xmC_v`&Mm9Tf@LPs_c@nQq-da-C@sd0yu!AFZgTPO<6xL2lCqs$Per& z$4bggLG#xDi|qhhW@u)Idu5KO9N|7c1|l*5`k2 z#(^$*(Q=D@^dVzrgaIOm?VN{X^3e{bE}2?)+s1eoWLYmYK+RGdNmJ{e?=t(As!BFI zuKf0X8J%MEqxkchUFGL?DFj&#nAO4kN#L#EdRMw`UeSk^&fP5*bnMkb`c7$-P4A5q zBB7Yu&y!q>>v?CHf+ZPX_{@O~ya_j3 z6JWxKk_+C-pTM8mYsnv$d?SMx2G%E9g}A<$7x1r_?Z~dAI~I;0ik} zjJT3O%c`8?9A3e=uoD-zt1563Q)c#c$-&7E&6cCwPemDd{m_|+*jf9YEmAgGc zmbY3jZ0WyPv6gOEyj$LG>71bn@;jH0?EMULzew8n2-xx^kRRS@i^!Swo*Q;;dT(av z)`r`bz4Hvg>5ueVHujC&(!;6K?6vLjx~6dXn$4{!%MBMcar`~3f{6`Qa*^2XRqZH; zZvq57s0}2O0p8VoBJb9#KSYhLs`!+SPy%@ervr9C2sTG-d&Lg%P~h9Wv>#h;KRmPb zs%yy(Yj6WHvtK$D^3BicqGx^J5{g)hoZ#&)4lvSpa{6Yx@btYxT^L}SA+BoqmI(gw zv7QU`8T>iqmsMe-g37(^OQzYH*+a31QoELi2fr^}Hx51EE3zp;JC+f_Y~Vt9*BxaK zcz7jK4RuNn&7tqp0#dfqn5p#9!>XqRel%Y1r`ubS?-SEU?(|tNi^GGP??6nOE!Z)A z(W-5&LpY102%=yI35e+n3VdrZ~F8K)y}(q&GDW zxp%x1V3ri}F$^pH+8FtqZRHqrYKCObfrwzKOpj6>>UCfV%vx*VSn<3OQMdK|5Xhxg zg)nWMULhDTQTB~lrblrgI)dLMuWwogoW#KM12iOM!&4m(2e{NcHh(za(;bVb4nAeH z>+uwDocNw6(ry_9?|2#y4*%R7OsMh>pyq+fn{RR61DpIGUvC}{)&Kp0Cm{);NcN>9 zq?8b5vW0{s*C!cVg~Q| z#Af1XLB!H#;_gP0ywquMMG%)Fg?qcg$x$8H49m*cI$rU#d0OxHr>(xcJV2p%Q$?pA zGTSyf+{}+b{j%btRkdtKvBt*_{_GQM5ijL@If2p)%JlWMAe_3|3?55WyXtfD?kk8W)U+CQxzxD- z!4yu$w|Ko#txXqWDjVfmy;=H{E#Bio%IPgRY3xQvrF7(-U8%KfwuE~d>~+}&5FOq! z1xaZ@DgX%}479)u;X7zl5k=XE_eb8o0y3&QKFma>8k;rCjT znIK4!Q(&{K*-x1sgNFJ-;RVt&+S2+Po$St!6%6%0bhhycrfC>F*oq3*dR*~J&&4TJ zD#P6(%~q}KDKc%YzpoCHvGVk(va^%*K&jI=dH2s_fJz2Vyp*?DujAvdcxY2{t>)>S z_l!vy{X7C8jZlLzr6BE_oZ5sXNtYWAY>|_ zNL=pg&m1GQ!HO+?Z3fzD|3l6D|FG%n$wJ}Pi5hWPzVGI|?3f!3Pr3i$MD^EasHQrA z1txT;l(XvEq@UK7wzA)CLDNSr1(s|CY1Zv#{?S*G>%U1{4Iwta>hi}KZQzii;%>K} zXCKwv8Qi#BS8UKV>JF?BkPhIyh+kT-8(@`#9Z}L@^sWM)E1=9X*0xZI`%W;CVOzokor$%e&HYN&i0JTe~=?!n0lh`R5Yh` z&y;!ti>uwhrovK^--WHeJ;Qtpg7N6BKWSsEkC~l&zs}f8kM4N-T5QRty=5lT7^^pL z;XdfDd~dGr5@()j4trkuHna8mpu-RFolI=KxJ4?s&rrg|&8^zttIy*!n9U52bdjno zs;|d}5PI*-$EO|@*U}vGo?wcT_!CxS#f99~6f@wtDD4sFH_Q{xq zcjpVvJt5_ERSVHWYeJj{1X%AfWcKh%d1z{K$qn^~5Y)O!RdX%AT*kf9Q=j-AyK?Jy za`ZxsYk7utO@jOHCWT)1sAskBt6UuhR9$(+{Z+ol2mTh{`J768n^?rOqCdwu*WQP< zSz^7x`fL7YIIEe^&;G+xcveW^XWeYw!-@}zwfk4iIh-R_XTq-T>3Qtna@@(BN}1s| zqN=6ld^tR%c*Pq0-oi3-en^x*-Ix1ZQA^qlnqAL&XzT9Ena!TcOq!mGnSGP4tCW+> zAzmQS)R5=+DfN7dp3<$9Vgw_nPa3z(IWl|S;jS)RGW(KNCh`92hWG-~rQ(9;sb$=t z*_Y}-o3i^>-}DQ+XIwKLm8?Am*fixI*eFP2RGXYqOoiI57BV?D{fBd;)c(nz<8JyL zvWG%)B6R_82f6fP>pqV2I0fGKpEX^HzKjy7>qVVaP2JrlcmHX$EWTq|RJx@*e_>C1RIU z@X=^>1EFZ$Z+Ll+q*UIO%?HVvh__28D@XOkTv2UzWBLGFr( z$tzc7&EHRC9fmf=Aq#Oqj?kp9qxX!RhHo z6}xlk?%(urYrFp~>i?A7$gbqJpo)4?L)OhU_d2QHzl9H$ik{~`MSeC6-Knj2sfg-* zWD@A6Y5Pg>opV!IT~*4k^|rl-ByT><@R@tT9p+8lS4)l-%3A!N9=@v+{{ga1Qo@(B zWK(AteVm3xE*Dbj@T@mm?O4U2un9Jh%T3QF*HKVLzwV5dBcF^+-Q9|I6Axf9#K!%U zQfdKNf;ei!kuJEwoPEoNEnN`%PgYI%ZUEiXW_rsCCg0Vknj_0CT%>FfCFB1?FNR+E zzQzji+4zSQqA1+qPjjhVjf>{kwpA_M4K>rNxfoN@kP)UGE#q$6BqL2Y|5~mzV{o*( zA}@0(-czm=v)jeWvq(D9T%H+#RBc;N+aLG_pdt@SOj}4QTGz$1!_FRero$hLI40lx zTx!EMDx`6gE6%C@L3G*GWZ|H8>xBKYwv9RT--)E`cVqBugQX-U!)3KMj*~ZgQ7xj*GDUZ+s$V3|W27reLuFE$W)tv#R1NXuvxYGX z_mqNXq}1Z2i%J#KtfaFwq*68PogLVr&hkH;8HulPk&e6aT4_M00!y{Njp>M$4teou z4N9u?Aj^s-N>CaxeQ$v@r#qrC(GAXXBxz_94xC=42*bY&-Fq;1B5ib8=dqxZZ-|l< z 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