-/* ====================================================================\r
- Licensed to the Apache Software Foundation (ASF) under one or more\r
- contributor license agreements. See the NOTICE file distributed with\r
- this work for additional information regarding copyright ownership.\r
- The ASF licenses this file to You under the Apache License, Version 2.0\r
- (the "License"); you may not use this file except in compliance with\r
- the License. You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
- Unless required by applicable law or agreed to in writing, software\r
- distributed under the License is distributed on an "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- See the License for the specific language governing permissions and\r
- limitations under the License.\r
-==================================================================== */\r
-\r
-package org.apache.poi.hssf.usermodel.examples;\r
-\r
-import org.apache.poi.hssf.usermodel.*;\r
-import org.apache.poi.hssf.util.HSSFColor;\r
-\r
-import java.io.IOException;\r
-import java.io.FileOutputStream;\r
-\r
-/**\r
- * Demonstrates how to create hyperlinks.\r
- *\r
- * @author Yegor Kozlov (yegor at apach.org)\r
- */\r
-public class Hyperlinks {\r
-\r
- public static void main(String[] args) throws IOException {\r
- HSSFWorkbook wb = new HSSFWorkbook();\r
-\r
- //cell style for hyperlinks\r
- //by default hyperlinks are blue and underlined\r
- HSSFCellStyle hlink_style = wb.createCellStyle();\r
- HSSFFont hlink_font = wb.createFont();\r
- hlink_font.setUnderline(HSSFFont.U_SINGLE);\r
- hlink_font.setColor(HSSFColor.BLUE.index);\r
- hlink_style.setFont(hlink_font);\r
-\r
- HSSFCell cell;\r
- HSSFSheet sheet = wb.createSheet("Hyperlinks");\r
-\r
- //URL\r
- cell = sheet.createRow(0).createCell(0);\r
- cell.setCellValue("URL Link");\r
- HSSFHyperlink link = new HSSFHyperlink(HSSFHyperlink.LINK_URL);\r
- link.setAddress("http://poi.apache.org/");\r
- cell.setHyperlink(link);\r
- cell.setCellStyle(hlink_style);\r
-\r
- //link to a file in the current directory\r
- cell = sheet.createRow(1).createCell(0);\r
- cell.setCellValue("File Link");\r
- link = new HSSFHyperlink(HSSFHyperlink.LINK_FILE);\r
- link.setAddress("link1.xls");\r
- cell.setHyperlink(link);\r
- cell.setCellStyle(hlink_style);\r
-\r
- //e-mail link\r
- cell = sheet.createRow(2).createCell(0);\r
- cell.setCellValue("Email Link");\r
- link = new HSSFHyperlink(HSSFHyperlink.LINK_EMAIL);\r
- //note, if subject contains white spaces, make sure they are url-encoded\r
- link.setAddress("mailto:poi@apache.org?subject=Hyperlinks");\r
- cell.setHyperlink(link);\r
- cell.setCellStyle(hlink_style);\r
-\r
- //link to a place in this workbook\r
-\r
- //create a target sheet and cell\r
- HSSFSheet sheet2 = wb.createSheet("Target Sheet");\r
- sheet2.createRow(0).createCell(0).setCellValue("Target Cell");\r
-\r
- cell = sheet.createRow(3).createCell(0);\r
- cell.setCellValue("Worksheet Link");\r
- link = new HSSFHyperlink(HSSFHyperlink.LINK_DOCUMENT);\r
- link.setAddress("'Target Sheet'!A1");\r
- cell.setHyperlink(link);\r
- cell.setCellStyle(hlink_style);\r
-\r
- FileOutputStream out = new FileOutputStream("hssf-links.xls");\r
- wb.write(out);\r
- out.close();\r
- }\r
-}\r
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+
+package org.apache.poi.hssf.usermodel.examples;
+
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.hssf.util.HSSFColor;
+
+import java.io.IOException;
+import java.io.FileOutputStream;
+
+/**
+ * Demonstrates how to create hyperlinks.
+ *
+ * @author Yegor Kozlov (yegor at apach.org)
+ */
+public class Hyperlinks {
+
+ public static void main(String[] args) throws IOException {
+ HSSFWorkbook wb = new HSSFWorkbook();
+
+ //cell style for hyperlinks
+ //by default hyperlinks are blue and underlined
+ HSSFCellStyle hlink_style = wb.createCellStyle();
+ HSSFFont hlink_font = wb.createFont();
+ hlink_font.setUnderline(HSSFFont.U_SINGLE);
+ hlink_font.setColor(HSSFColor.BLUE.index);
+ hlink_style.setFont(hlink_font);
+
+ HSSFCell cell;
+ HSSFSheet sheet = wb.createSheet("Hyperlinks");
+
+ //URL
+ cell = sheet.createRow(0).createCell(0);
+ cell.setCellValue("URL Link");
+ HSSFHyperlink link = new HSSFHyperlink(HSSFHyperlink.LINK_URL);
+ link.setAddress("http://poi.apache.org/");
+ cell.setHyperlink(link);
+ cell.setCellStyle(hlink_style);
+
+ //link to a file in the current directory
+ cell = sheet.createRow(1).createCell(0);
+ cell.setCellValue("File Link");
+ link = new HSSFHyperlink(HSSFHyperlink.LINK_FILE);
+ link.setAddress("link1.xls");
+ cell.setHyperlink(link);
+ cell.setCellStyle(hlink_style);
+
+ //e-mail link
+ cell = sheet.createRow(2).createCell(0);
+ cell.setCellValue("Email Link");
+ link = new HSSFHyperlink(HSSFHyperlink.LINK_EMAIL);
+ //note, if subject contains white spaces, make sure they are url-encoded
+ link.setAddress("mailto:poi@apache.org?subject=Hyperlinks");
+ cell.setHyperlink(link);
+ cell.setCellStyle(hlink_style);
+
+ //link to a place in this workbook
+
+ //create a target sheet and cell
+ HSSFSheet sheet2 = wb.createSheet("Target Sheet");
+ sheet2.createRow(0).createCell(0).setCellValue("Target Cell");
+
+ cell = sheet.createRow(3).createCell(0);
+ cell.setCellValue("Worksheet Link");
+ link = new HSSFHyperlink(HSSFHyperlink.LINK_DOCUMENT);
+ link.setAddress("'Target Sheet'!A1");
+ cell.setHyperlink(link);
+ cell.setCellStyle(hlink_style);
+
+ FileOutputStream out = new FileOutputStream("hssf-links.xls");
+ wb.write(out);
+ out.close();
+ }
+}
-/* ====================================================================\r
- Licensed to the Apache Software Foundation (ASF) under one or more\r
- contributor license agreements. See the NOTICE file distributed with\r
- this work for additional information regarding copyright ownership.\r
- The ASF licenses this file to You under the Apache License, Version 2.0\r
- (the "License"); you may not use this file except in compliance with\r
- the License. You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
- Unless required by applicable law or agreed to in writing, software\r
- distributed under the License is distributed on an "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- See the License for the specific language governing permissions and\r
- limitations under the License.\r
-==================================================================== */\r
-package org.apache.poi.ss.examples;\r
-\r
-import org.apache.poi.xssf.usermodel.*;\r
-import org.apache.poi.ss.usermodel.*;\r
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;\r
-\r
-import java.util.Map;\r
-import java.util.HashMap;\r
-import java.util.Calendar;\r
-import java.io.FileOutputStream;\r
-import java.text.SimpleDateFormat;\r
-\r
-/**\r
- * A business plan demo\r
- * Usage:\r
- * BusinessPlan -xls|xlsx\r
- *\r
- * @author Yegor Kozlov\r
- */\r
-public class BusinessPlan {\r
-\r
- private static SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM");\r
-\r
- private static final String[] titles = {\r
- "ID", "Project Name", "Owner", "Days", "Start", "End"};\r
-\r
- //sample data to fill the sheet.\r
- private static final String[][] data = {\r
- {"1.0", "Marketing Research Tactical Plan", "J. Dow", "70", "9-Jul", null,\r
- "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x"},\r
- null,\r
- {"1.1", "Scope Definition Phase", "J. Dow", "10", "9-Jul", null,\r
- "x", "x", null, null, null, null, null, null, null, null, null},\r
- {"1.1.1", "Define research objectives", "J. Dow", "3", "9-Jul", null,\r
- "x", null, null, null, null, null, null, null, null, null, null},\r
- {"1.1.2", "Define research requirements", "S. Jones", "7", "10-Jul", null,\r
- "x", "x", null, null, null, null, null, null, null, null, null},\r
- {"1.1.3", "Determine in-house resource or hire vendor", "J. Dow", "2", "15-Jul", null,\r
- "x", "x", null, null, null, null, null, null, null, null, null},\r
- null,\r
- {"1.2", "Vendor Selection Phase", "J. Dow", "19", "19-Jul", null,\r
- null, "x", "x", "x", "x", null, null, null, null, null, null},\r
- {"1.2.1", "Define vendor selection criteria", "J. Dow", "3", "19-Jul", null,\r
- null, "x", null, null, null, null, null, null, null, null, null},\r
- {"1.2.2", "Develop vendor selection questionnaire", "S. Jones, T. Wates", "2", "22-Jul", null,\r
- null, "x", "x", null, null, null, null, null, null, null, null},\r
- {"1.2.3", "Develop Statement of Work", "S. Jones", "4", "26-Jul", null,\r
- null, null, "x", "x", null, null, null, null, null, null, null},\r
- {"1.2.4", "Evaluate proposal", "J. Dow, S. Jones", "4", "2-Aug", null,\r
- null, null, null, "x", "x", null, null, null, null, null, null},\r
- {"1.2.5", "Select vendor", "J. Dow", "1", "6-Aug", null,\r
- null, null, null, null, "x", null, null, null, null, null, null},\r
- null,\r
- {"1.3", "Research Phase", "G. Lee", "47", "9-Aug", null,\r
- null, null, null, null, "x", "x", "x", "x", "x", "x", "x"},\r
- {"1.3.1", "Develop market research information needs questionnaire", "G. Lee", "2", "9-Aug", null,\r
- null, null, null, null, "x", null, null, null, null, null, null},\r
- {"1.3.2", "Interview marketing group for market research needs", "G. Lee", "2", "11-Aug", null,\r
- null, null, null, null, "x", "x", null, null, null, null, null},\r
- {"1.3.3", "Document information needs", "G. Lee, S. Jones", "1", "13-Aug", null,\r
- null, null, null, null, null, "x", null, null, null, null, null},\r
- };\r
-\r
- public static void main(String[] args) throws Exception {\r
- Workbook wb;\r
-\r
- if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();\r
- else wb = new XSSFWorkbook();\r
-\r
- Map<String, CellStyle> styles = createStyles(wb);\r
-\r
- Sheet sheet = wb.createSheet("Business Plan");\r
-\r
- //turn off gridlines\r
- sheet.setDisplayGridlines(false);\r
- sheet.setPrintGridlines(false);\r
- sheet.setFitToPage(true);\r
- sheet.setHorizontallyCenter(true);\r
- PrintSetup printSetup = sheet.getPrintSetup();\r
- printSetup.setLandscape(true);\r
-\r
- //the following three statements are required only for HSSF\r
- sheet.setAutobreaks(true);\r
- printSetup.setFitHeight((short)1);\r
- printSetup.setFitWidth((short)1);\r
-\r
- //the header row: centered text in 48pt font\r
- Row headerRow = sheet.createRow(0);\r
- headerRow.setHeightInPoints(12.75f);\r
- for (int i = 0; i < titles.length; i++) {\r
- Cell cell = headerRow.createCell(i);\r
- cell.setCellValue(titles[i]);\r
- cell.setCellStyle(styles.get("header"));\r
- }\r
- //columns for 11 weeks starting from 9-Jul\r
- Calendar calendar = Calendar.getInstance();\r
- int year = calendar.get(Calendar.YEAR);\r
-\r
- calendar.setTime(fmt.parse("9-Jul"));\r
- calendar.set(Calendar.YEAR, year);\r
- for (int i = 0; i < 11; i++) {\r
- Cell cell = headerRow.createCell(titles.length + i);\r
- cell.setCellValue(calendar);\r
- cell.setCellStyle(styles.get("header_date"));\r
- calendar.roll(Calendar.WEEK_OF_YEAR, true);\r
- }\r
- //freeze the first row\r
- sheet.createFreezePane(0, 1);\r
-\r
- Row row;\r
- Cell cell;\r
- int rownum = 1;\r
- for (int i = 0; i < data.length; i++, rownum++) {\r
- row = sheet.createRow(rownum);\r
- if(data[i] == null) continue;\r
-\r
- for (int j = 0; j < data[i].length; j++) {\r
- cell = row.createCell(j);\r
- String styleName;\r
- boolean isHeader = i == 0 || data[i-1] == null;\r
- switch(j){\r
- case 0:\r
- if(isHeader) {\r
- styleName = "cell_b";\r
- cell.setCellValue(Double.parseDouble(data[i][j]));\r
- } else {\r
- styleName = "cell_normal";\r
- cell.setCellValue(data[i][j]);\r
- }\r
- break;\r
- case 1:\r
- if(isHeader) {\r
- styleName = i == 0 ? "cell_h" : "cell_bb";\r
- } else {\r
- styleName = "cell_indented";\r
- }\r
- cell.setCellValue(data[i][j]);\r
- break;\r
- case 2:\r
- styleName = isHeader ? "cell_b" : "cell_normal";\r
- cell.setCellValue(data[i][j]);\r
- break;\r
- case 3:\r
- styleName = isHeader ? "cell_b_centered" : "cell_normal_centered";\r
- cell.setCellValue(Integer.parseInt(data[i][j]));\r
- break;\r
- case 4: {\r
- calendar.setTime(fmt.parse(data[i][j]));\r
- calendar.set(Calendar.YEAR, year);\r
- cell.setCellValue(calendar);\r
- styleName = isHeader ? "cell_b_date" : "cell_normal_date";\r
- break;\r
- }\r
- case 5: {\r
- int r = rownum + 1;\r
- String fmla = "IF(AND(D"+r+",E"+r+"),E"+r+"+D"+r+",\"\")";\r
- cell.setCellFormula(fmla);\r
- styleName = isHeader ? "cell_bg" : "cell_g";\r
- break;\r
- }\r
- default:\r
- styleName = data[i][j] != null ? "cell_blue" : "cell_normal";\r
- }\r
-\r
- cell.setCellStyle(styles.get(styleName));\r
- }\r
- }\r
-\r
- //group rows for each phase, row numbers are 0-based\r
- sheet.groupRow(4, 6);\r
- sheet.groupRow(9, 13);\r
- sheet.groupRow(16, 18);\r
-\r
- //set column widths, the width is measured in units of 1/256th of a character width\r
- sheet.setColumnWidth(0, 256*6);\r
- sheet.setColumnWidth(1, 256*33);\r
- sheet.setColumnWidth(2, 256*20);\r
- sheet.setZoom(3, 4);\r
-\r
-\r
- // Write the output to a file\r
- String file = "businessplan.xls";\r
- if(wb instanceof XSSFWorkbook) file += "x";\r
- FileOutputStream out = new FileOutputStream(file);\r
- wb.write(out);\r
- out.close();\r
- }\r
-\r
- /**\r
- * create a library of cell styles\r
- */\r
- private static Map<String, CellStyle> createStyles(Workbook wb){\r
- Map<String, CellStyle> styles = new HashMap<String, CellStyle>();\r
- DataFormat df = wb.createDataFormat();\r
-\r
- CellStyle style;\r
- Font headerFont = wb.createFont();\r
- headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD);\r
- style = createBorderedStyle(wb);\r
- style.setAlignment(CellStyle.ALIGN_CENTER);\r
- style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- style.setFont(headerFont);\r
- styles.put("header", style);\r
-\r
- style = createBorderedStyle(wb);\r
- style.setAlignment(CellStyle.ALIGN_CENTER);\r
- style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- style.setFont(headerFont);\r
- style.setDataFormat(df.getFormat("d-mmm"));\r
- styles.put("header_date", style);\r
-\r
- Font font1 = wb.createFont();\r
- font1.setBoldweight(Font.BOLDWEIGHT_BOLD);\r
- style = createBorderedStyle(wb);\r
- style.setAlignment(CellStyle.ALIGN_LEFT);\r
- style.setFont(font1);\r
- styles.put("cell_b", style);\r
-\r
- style = createBorderedStyle(wb);\r
- style.setAlignment(CellStyle.ALIGN_CENTER);\r
- style.setFont(font1);\r
- styles.put("cell_b_centered", style);\r
-\r
- style = createBorderedStyle(wb);\r
- style.setAlignment(CellStyle.ALIGN_RIGHT);\r
- style.setFont(font1);\r
- style.setDataFormat(df.getFormat("d-mmm"));\r
- styles.put("cell_b_date", style);\r
-\r
- style = createBorderedStyle(wb);\r
- style.setAlignment(CellStyle.ALIGN_RIGHT);\r
- style.setFont(font1);\r
- style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- style.setDataFormat(df.getFormat("d-mmm"));\r
- styles.put("cell_g", style);\r
-\r
- Font font2 = wb.createFont();\r
- font2.setColor(IndexedColors.BLUE.getIndex());\r
- font2.setBoldweight(Font.BOLDWEIGHT_BOLD);\r
- style = createBorderedStyle(wb);\r
- style.setAlignment(CellStyle.ALIGN_LEFT);\r
- style.setFont(font2);\r
- styles.put("cell_bb", style);\r
-\r
- style = createBorderedStyle(wb);\r
- style.setAlignment(CellStyle.ALIGN_RIGHT);\r
- style.setFont(font1);\r
- style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- style.setDataFormat(df.getFormat("d-mmm"));\r
- styles.put("cell_bg", style);\r
-\r
- Font font3 = wb.createFont();\r
- font3.setFontHeightInPoints((short)14);\r
- font3.setColor(IndexedColors.DARK_BLUE.getIndex());\r
- font3.setBoldweight(Font.BOLDWEIGHT_BOLD);\r
- style = createBorderedStyle(wb);\r
- style.setAlignment(CellStyle.ALIGN_LEFT);\r
- style.setFont(font3);\r
- style.setWrapText(true);\r
- styles.put("cell_h", style);\r
-\r
- style = createBorderedStyle(wb);\r
- style.setAlignment(CellStyle.ALIGN_LEFT);\r
- style.setWrapText(true);\r
- styles.put("cell_normal", style);\r
-\r
- style = createBorderedStyle(wb);\r
- style.setAlignment(CellStyle.ALIGN_CENTER);\r
- style.setWrapText(true);\r
- styles.put("cell_normal_centered", style);\r
-\r
- style = createBorderedStyle(wb);\r
- style.setAlignment(CellStyle.ALIGN_RIGHT);\r
- style.setWrapText(true);\r
- style.setDataFormat(df.getFormat("d-mmm"));\r
- styles.put("cell_normal_date", style);\r
-\r
- style = createBorderedStyle(wb);\r
- style.setAlignment(CellStyle.ALIGN_LEFT);\r
- style.setIndention((short)1);\r
- style.setWrapText(true);\r
- styles.put("cell_indented", style);\r
-\r
- style = createBorderedStyle(wb);\r
- style.setFillForegroundColor(IndexedColors.BLUE.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- styles.put("cell_blue", style);\r
-\r
- return styles;\r
- }\r
-\r
- private static CellStyle createBorderedStyle(Workbook wb){\r
- CellStyle style = wb.createCellStyle();\r
- style.setBorderRight(CellStyle.BORDER_THIN);\r
- style.setRightBorderColor(IndexedColors.BLACK.getIndex());\r
- style.setBorderBottom(CellStyle.BORDER_THIN);\r
- style.setBottomBorderColor(IndexedColors.BLACK.getIndex());\r
- style.setBorderLeft(CellStyle.BORDER_THIN);\r
- style.setLeftBorderColor(IndexedColors.BLACK.getIndex());\r
- style.setBorderTop(CellStyle.BORDER_THIN);\r
- style.setTopBorderColor(IndexedColors.BLACK.getIndex());\r
- return style;\r
- }\r
-}\r
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+
+package org.apache.poi.ss.examples;
+
+import org.apache.poi.xssf.usermodel.*;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Calendar;
+import java.io.FileOutputStream;
+import java.text.SimpleDateFormat;
+
+/**
+ * A business plan demo
+ * Usage:
+ * BusinessPlan -xls|xlsx
+ *
+ * @author Yegor Kozlov
+ */
+public class BusinessPlan {
+
+ private static SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM");
+
+ private static final String[] titles = {
+ "ID", "Project Name", "Owner", "Days", "Start", "End"};
+
+ //sample data to fill the sheet.
+ private static final String[][] data = {
+ {"1.0", "Marketing Research Tactical Plan", "J. Dow", "70", "9-Jul", null,
+ "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x"},
+ null,
+ {"1.1", "Scope Definition Phase", "J. Dow", "10", "9-Jul", null,
+ "x", "x", null, null, null, null, null, null, null, null, null},
+ {"1.1.1", "Define research objectives", "J. Dow", "3", "9-Jul", null,
+ "x", null, null, null, null, null, null, null, null, null, null},
+ {"1.1.2", "Define research requirements", "S. Jones", "7", "10-Jul", null,
+ "x", "x", null, null, null, null, null, null, null, null, null},
+ {"1.1.3", "Determine in-house resource or hire vendor", "J. Dow", "2", "15-Jul", null,
+ "x", "x", null, null, null, null, null, null, null, null, null},
+ null,
+ {"1.2", "Vendor Selection Phase", "J. Dow", "19", "19-Jul", null,
+ null, "x", "x", "x", "x", null, null, null, null, null, null},
+ {"1.2.1", "Define vendor selection criteria", "J. Dow", "3", "19-Jul", null,
+ null, "x", null, null, null, null, null, null, null, null, null},
+ {"1.2.2", "Develop vendor selection questionnaire", "S. Jones, T. Wates", "2", "22-Jul", null,
+ null, "x", "x", null, null, null, null, null, null, null, null},
+ {"1.2.3", "Develop Statement of Work", "S. Jones", "4", "26-Jul", null,
+ null, null, "x", "x", null, null, null, null, null, null, null},
+ {"1.2.4", "Evaluate proposal", "J. Dow, S. Jones", "4", "2-Aug", null,
+ null, null, null, "x", "x", null, null, null, null, null, null},
+ {"1.2.5", "Select vendor", "J. Dow", "1", "6-Aug", null,
+ null, null, null, null, "x", null, null, null, null, null, null},
+ null,
+ {"1.3", "Research Phase", "G. Lee", "47", "9-Aug", null,
+ null, null, null, null, "x", "x", "x", "x", "x", "x", "x"},
+ {"1.3.1", "Develop market research information needs questionnaire", "G. Lee", "2", "9-Aug", null,
+ null, null, null, null, "x", null, null, null, null, null, null},
+ {"1.3.2", "Interview marketing group for market research needs", "G. Lee", "2", "11-Aug", null,
+ null, null, null, null, "x", "x", null, null, null, null, null},
+ {"1.3.3", "Document information needs", "G. Lee, S. Jones", "1", "13-Aug", null,
+ null, null, null, null, null, "x", null, null, null, null, null},
+ };
+
+ public static void main(String[] args) throws Exception {
+ Workbook wb;
+
+ if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();
+ else wb = new XSSFWorkbook();
+
+ Map<String, CellStyle> styles = createStyles(wb);
+
+ Sheet sheet = wb.createSheet("Business Plan");
+
+ //turn off gridlines
+ sheet.setDisplayGridlines(false);
+ sheet.setPrintGridlines(false);
+ sheet.setFitToPage(true);
+ sheet.setHorizontallyCenter(true);
+ PrintSetup printSetup = sheet.getPrintSetup();
+ printSetup.setLandscape(true);
+
+ //the following three statements are required only for HSSF
+ sheet.setAutobreaks(true);
+ printSetup.setFitHeight((short)1);
+ printSetup.setFitWidth((short)1);
+
+ //the header row: centered text in 48pt font
+ Row headerRow = sheet.createRow(0);
+ headerRow.setHeightInPoints(12.75f);
+ for (int i = 0; i < titles.length; i++) {
+ Cell cell = headerRow.createCell(i);
+ cell.setCellValue(titles[i]);
+ cell.setCellStyle(styles.get("header"));
+ }
+ //columns for 11 weeks starting from 9-Jul
+ Calendar calendar = Calendar.getInstance();
+ int year = calendar.get(Calendar.YEAR);
+
+ calendar.setTime(fmt.parse("9-Jul"));
+ calendar.set(Calendar.YEAR, year);
+ for (int i = 0; i < 11; i++) {
+ Cell cell = headerRow.createCell(titles.length + i);
+ cell.setCellValue(calendar);
+ cell.setCellStyle(styles.get("header_date"));
+ calendar.roll(Calendar.WEEK_OF_YEAR, true);
+ }
+ //freeze the first row
+ sheet.createFreezePane(0, 1);
+
+ Row row;
+ Cell cell;
+ int rownum = 1;
+ for (int i = 0; i < data.length; i++, rownum++) {
+ row = sheet.createRow(rownum);
+ if(data[i] == null) continue;
+
+ for (int j = 0; j < data[i].length; j++) {
+ cell = row.createCell(j);
+ String styleName;
+ boolean isHeader = i == 0 || data[i-1] == null;
+ switch(j){
+ case 0:
+ if(isHeader) {
+ styleName = "cell_b";
+ cell.setCellValue(Double.parseDouble(data[i][j]));
+ } else {
+ styleName = "cell_normal";
+ cell.setCellValue(data[i][j]);
+ }
+ break;
+ case 1:
+ if(isHeader) {
+ styleName = i == 0 ? "cell_h" : "cell_bb";
+ } else {
+ styleName = "cell_indented";
+ }
+ cell.setCellValue(data[i][j]);
+ break;
+ case 2:
+ styleName = isHeader ? "cell_b" : "cell_normal";
+ cell.setCellValue(data[i][j]);
+ break;
+ case 3:
+ styleName = isHeader ? "cell_b_centered" : "cell_normal_centered";
+ cell.setCellValue(Integer.parseInt(data[i][j]));
+ break;
+ case 4: {
+ calendar.setTime(fmt.parse(data[i][j]));
+ calendar.set(Calendar.YEAR, year);
+ cell.setCellValue(calendar);
+ styleName = isHeader ? "cell_b_date" : "cell_normal_date";
+ break;
+ }
+ case 5: {
+ int r = rownum + 1;
+ String fmla = "IF(AND(D"+r+",E"+r+"),E"+r+"+D"+r+",\"\")";
+ cell.setCellFormula(fmla);
+ styleName = isHeader ? "cell_bg" : "cell_g";
+ break;
+ }
+ default:
+ styleName = data[i][j] != null ? "cell_blue" : "cell_normal";
+ }
+
+ cell.setCellStyle(styles.get(styleName));
+ }
+ }
+
+ //group rows for each phase, row numbers are 0-based
+ sheet.groupRow(4, 6);
+ sheet.groupRow(9, 13);
+ sheet.groupRow(16, 18);
+
+ //set column widths, the width is measured in units of 1/256th of a character width
+ sheet.setColumnWidth(0, 256*6);
+ sheet.setColumnWidth(1, 256*33);
+ sheet.setColumnWidth(2, 256*20);
+ sheet.setZoom(3, 4);
+
+
+ // Write the output to a file
+ String file = "businessplan.xls";
+ if(wb instanceof XSSFWorkbook) file += "x";
+ FileOutputStream out = new FileOutputStream(file);
+ wb.write(out);
+ out.close();
+ }
+
+ /**
+ * create a library of cell styles
+ */
+ private static Map<String, CellStyle> createStyles(Workbook wb){
+ Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
+ DataFormat df = wb.createDataFormat();
+
+ CellStyle style;
+ Font headerFont = wb.createFont();
+ headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
+ style = createBorderedStyle(wb);
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setFont(headerFont);
+ styles.put("header", style);
+
+ style = createBorderedStyle(wb);
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setFont(headerFont);
+ style.setDataFormat(df.getFormat("d-mmm"));
+ styles.put("header_date", style);
+
+ Font font1 = wb.createFont();
+ font1.setBoldweight(Font.BOLDWEIGHT_BOLD);
+ style = createBorderedStyle(wb);
+ style.setAlignment(CellStyle.ALIGN_LEFT);
+ style.setFont(font1);
+ styles.put("cell_b", style);
+
+ style = createBorderedStyle(wb);
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setFont(font1);
+ styles.put("cell_b_centered", style);
+
+ style = createBorderedStyle(wb);
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
+ style.setFont(font1);
+ style.setDataFormat(df.getFormat("d-mmm"));
+ styles.put("cell_b_date", style);
+
+ style = createBorderedStyle(wb);
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
+ style.setFont(font1);
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setDataFormat(df.getFormat("d-mmm"));
+ styles.put("cell_g", style);
+
+ Font font2 = wb.createFont();
+ font2.setColor(IndexedColors.BLUE.getIndex());
+ font2.setBoldweight(Font.BOLDWEIGHT_BOLD);
+ style = createBorderedStyle(wb);
+ style.setAlignment(CellStyle.ALIGN_LEFT);
+ style.setFont(font2);
+ styles.put("cell_bb", style);
+
+ style = createBorderedStyle(wb);
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
+ style.setFont(font1);
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setDataFormat(df.getFormat("d-mmm"));
+ styles.put("cell_bg", style);
+
+ Font font3 = wb.createFont();
+ font3.setFontHeightInPoints((short)14);
+ font3.setColor(IndexedColors.DARK_BLUE.getIndex());
+ font3.setBoldweight(Font.BOLDWEIGHT_BOLD);
+ style = createBorderedStyle(wb);
+ style.setAlignment(CellStyle.ALIGN_LEFT);
+ style.setFont(font3);
+ style.setWrapText(true);
+ styles.put("cell_h", style);
+
+ style = createBorderedStyle(wb);
+ style.setAlignment(CellStyle.ALIGN_LEFT);
+ style.setWrapText(true);
+ styles.put("cell_normal", style);
+
+ style = createBorderedStyle(wb);
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setWrapText(true);
+ styles.put("cell_normal_centered", style);
+
+ style = createBorderedStyle(wb);
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
+ style.setWrapText(true);
+ style.setDataFormat(df.getFormat("d-mmm"));
+ styles.put("cell_normal_date", style);
+
+ style = createBorderedStyle(wb);
+ style.setAlignment(CellStyle.ALIGN_LEFT);
+ style.setIndention((short)1);
+ style.setWrapText(true);
+ styles.put("cell_indented", style);
+
+ style = createBorderedStyle(wb);
+ style.setFillForegroundColor(IndexedColors.BLUE.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ styles.put("cell_blue", style);
+
+ return styles;
+ }
+
+ private static CellStyle createBorderedStyle(Workbook wb){
+ CellStyle style = wb.createCellStyle();
+ style.setBorderRight(CellStyle.BORDER_THIN);
+ style.setRightBorderColor(IndexedColors.BLACK.getIndex());
+ style.setBorderBottom(CellStyle.BORDER_THIN);
+ style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
+ style.setBorderLeft(CellStyle.BORDER_THIN);
+ style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
+ style.setBorderTop(CellStyle.BORDER_THIN);
+ style.setTopBorderColor(IndexedColors.BLACK.getIndex());
+ return style;
+ }
+}
-/* ====================================================================\r
- Licensed to the Apache Software Foundation (ASF) under one or more\r
- contributor license agreements. See the NOTICE file distributed with\r
- this work for additional information regarding copyright ownership.\r
- The ASF licenses this file to You under the Apache License, Version 2.0\r
- (the "License"); you may not use this file except in compliance with\r
- the License. You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
- Unless required by applicable law or agreed to in writing, software\r
- distributed under the License is distributed on an "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- See the License for the specific language governing permissions and\r
- limitations under the License.\r
-==================================================================== */\r
-package org.apache.poi.ss.examples;\r
-\r
-import org.apache.poi.xssf.usermodel.*;\r
-import org.apache.poi.ss.util.CellRangeAddress;\r
-import org.apache.poi.ss.usermodel.*;\r
-import org.apache.poi.ss.usermodel.Font;\r
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;\r
-\r
-import java.io.FileOutputStream;\r
-import java.util.Calendar;\r
-import java.util.Map;\r
-import java.util.HashMap;\r
-\r
-/**\r
- * A monthly calendar created using Apache POI. Each month is on a separate sheet.\r
- * <pre>\r
- * Usage:\r
- * CalendarDemo -xls|xlsx <year>\r
- * </pre>\r
- *\r
- * @author Yegor Kozlov\r
- */\r
-public class CalendarDemo {\r
-\r
- private static final String[] days = {\r
- "Sunday", "Monday", "Tuesday",\r
- "Wednesday", "Thursday", "Friday", "Saturday"};\r
-\r
- private static final String[] months = {\r
- "January", "February", "March","April", "May", "June","July", "August",\r
- "September","October", "November", "December"};\r
-\r
- public static void main(String[] args) throws Exception {\r
-\r
- Calendar calendar = Calendar.getInstance();\r
- boolean xlsx = true;\r
- for (int i = 0; i < args.length; i++) {\r
- if(args[i].charAt(0) == '-'){\r
- xlsx = args[i].equals("-xlsx");\r
- } else {\r
- calendar.set(Calendar.YEAR, Integer.parseInt(args[i]));\r
- }\r
- }\r
- int year = calendar.get(Calendar.YEAR);\r
-\r
- Workbook wb = xlsx ? new XSSFWorkbook() : new HSSFWorkbook();\r
-\r
- Map<String, CellStyle> styles = createStyles(wb);\r
-\r
- for (int month = 0; month < 12; month++) {\r
- calendar.set(Calendar.MONTH, month);\r
- calendar.set(Calendar.DAY_OF_MONTH, 1);\r
- //create a sheet for each month\r
- Sheet sheet = wb.createSheet(months[month]);\r
-\r
- //turn off gridlines\r
- sheet.setDisplayGridlines(false);\r
- sheet.setPrintGridlines(false);\r
- sheet.setFitToPage(true);\r
- sheet.setHorizontallyCenter(true);\r
- PrintSetup printSetup = sheet.getPrintSetup();\r
- printSetup.setLandscape(true);\r
-\r
- //the following three statements are required only for HSSF\r
- sheet.setAutobreaks(true);\r
- printSetup.setFitHeight((short)1);\r
- printSetup.setFitWidth((short)1);\r
-\r
- //the header row: centered text in 48pt font\r
- Row headerRow = sheet.createRow(0);\r
- headerRow.setHeightInPoints(80);\r
- Cell titleCell = headerRow.createCell(0);\r
- titleCell.setCellValue(months[month] + " " + year);\r
- titleCell.setCellStyle(styles.get("title"));\r
- sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$N$1"));\r
-\r
- //header with month titles\r
- Row monthRow = sheet.createRow(1);\r
- for (int i = 0; i < days.length; i++) {\r
- //set column widths, the width is measured in units of 1/256th of a character width\r
- sheet.setColumnWidth(i*2, 5*256); //the column is 5 characters wide\r
- sheet.setColumnWidth(i*2 + 1, 13*256); //the column is 13 characters wide\r
- sheet.addMergedRegion(new CellRangeAddress(1, 1, i*2, i*2+1));\r
- Cell monthCell = monthRow.createCell(i*2);\r
- monthCell.setCellValue(days[i]);\r
- monthCell.setCellStyle(styles.get("month"));\r
- }\r
-\r
- int cnt = 1, day=1;\r
- int rownum = 2;\r
- for (int j = 0; j < 6; j++) {\r
- Row row = sheet.createRow(rownum++);\r
- row.setHeightInPoints(100);\r
- for (int i = 0; i < days.length; i++) {\r
- Cell dayCell_1 = row.createCell(i*2);\r
- Cell dayCell_2 = row.createCell(i*2 + 1);\r
-\r
- int day_of_week = calendar.get(Calendar.DAY_OF_WEEK);\r
- if(cnt >= day_of_week && calendar.get(Calendar.MONTH) == month) {\r
- dayCell_1.setCellValue(day);\r
- calendar.set(Calendar.DAY_OF_MONTH, ++day);\r
-\r
- if(i == 0 || i == days.length-1) {\r
- dayCell_1.setCellStyle(styles.get("weekend_left"));\r
- dayCell_2.setCellStyle(styles.get("weekend_right"));\r
- } else {\r
- dayCell_1.setCellStyle(styles.get("workday_left"));\r
- dayCell_2.setCellStyle(styles.get("workday_right"));\r
- }\r
- } else {\r
- dayCell_1.setCellStyle(styles.get("grey_left"));\r
- dayCell_2.setCellStyle(styles.get("grey_right"));\r
- }\r
- cnt++;\r
- }\r
- if(calendar.get(Calendar.MONTH) > month) break;\r
- }\r
- }\r
-\r
- // Write the output to a file\r
- String file = "calendar.xls";\r
- if(wb instanceof XSSFWorkbook) file += "x";\r
- FileOutputStream out = new FileOutputStream(file);\r
- wb.write(out);\r
- out.close();\r
- }\r
-\r
- /**\r
- * cell styles used for formatting calendar sheets\r
- */\r
- private static Map<String, CellStyle> createStyles(Workbook wb){\r
- Map<String, CellStyle> styles = new HashMap<String, CellStyle>();\r
-\r
- short borderColor = IndexedColors.GREY_50_PERCENT.getIndex();\r
-\r
- CellStyle style;\r
- Font titleFont = wb.createFont();\r
- titleFont.setFontHeightInPoints((short)48);\r
- titleFont.setColor(IndexedColors.DARK_BLUE.getIndex());\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_CENTER);\r
- style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);\r
- style.setFont(titleFont);\r
- styles.put("title", style);\r
-\r
- Font monthFont = wb.createFont();\r
- monthFont.setFontHeightInPoints((short)12);\r
- monthFont.setColor(IndexedColors.WHITE.getIndex());\r
- monthFont.setBoldweight(Font.BOLDWEIGHT_BOLD);\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_CENTER);\r
- style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);\r
- style.setFillForegroundColor(IndexedColors.DARK_BLUE.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- style.setFont(monthFont);\r
- styles.put("month", style);\r
-\r
- Font dayFont = wb.createFont();\r
- dayFont.setFontHeightInPoints((short)14);\r
- dayFont.setBoldweight(Font.BOLDWEIGHT_BOLD);\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_LEFT);\r
- style.setVerticalAlignment(CellStyle.VERTICAL_TOP);\r
- style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- style.setBorderLeft(CellStyle.BORDER_THIN);\r
- style.setLeftBorderColor(borderColor);\r
- style.setBorderBottom(CellStyle.BORDER_THIN);\r
- style.setBottomBorderColor(borderColor);\r
- style.setFont(dayFont);\r
- styles.put("weekend_left", style);\r
-\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_CENTER);\r
- style.setVerticalAlignment(CellStyle.VERTICAL_TOP);\r
- style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- style.setBorderRight(CellStyle.BORDER_THIN);\r
- style.setRightBorderColor(borderColor);\r
- style.setBorderBottom(CellStyle.BORDER_THIN);\r
- style.setBottomBorderColor(borderColor);\r
- styles.put("weekend_right", style);\r
-\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_LEFT);\r
- style.setVerticalAlignment(CellStyle.VERTICAL_TOP);\r
- style.setBorderLeft(CellStyle.BORDER_THIN);\r
- style.setFillForegroundColor(IndexedColors.WHITE.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- style.setLeftBorderColor(borderColor);\r
- style.setBorderBottom(CellStyle.BORDER_THIN);\r
- style.setBottomBorderColor(borderColor);\r
- style.setFont(dayFont);\r
- styles.put("workday_left", style);\r
-\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_CENTER);\r
- style.setVerticalAlignment(CellStyle.VERTICAL_TOP);\r
- style.setFillForegroundColor(IndexedColors.WHITE.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- style.setBorderRight(CellStyle.BORDER_THIN);\r
- style.setRightBorderColor(borderColor);\r
- style.setBorderBottom(CellStyle.BORDER_THIN);\r
- style.setBottomBorderColor(borderColor);\r
- styles.put("workday_right", style);\r
-\r
- style = wb.createCellStyle();\r
- style.setBorderLeft(CellStyle.BORDER_THIN);\r
- style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- style.setBorderBottom(CellStyle.BORDER_THIN);\r
- style.setBottomBorderColor(borderColor);\r
- styles.put("grey_left", style);\r
-\r
- style = wb.createCellStyle();\r
- style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- style.setBorderRight(CellStyle.BORDER_THIN);\r
- style.setRightBorderColor(borderColor);\r
- style.setBorderBottom(CellStyle.BORDER_THIN);\r
- style.setBottomBorderColor(borderColor);\r
- styles.put("grey_right", style);\r
-\r
- return styles;\r
- }\r
-}\r
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+
+package org.apache.poi.ss.examples;
+
+import org.apache.poi.xssf.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.usermodel.Font;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+
+import java.io.FileOutputStream;
+import java.util.Calendar;
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * A monthly calendar created using Apache POI. Each month is on a separate sheet.
+ * <pre>
+ * Usage:
+ * CalendarDemo -xls|xlsx <year>
+ * </pre>
+ *
+ * @author Yegor Kozlov
+ */
+public class CalendarDemo {
+
+ private static final String[] days = {
+ "Sunday", "Monday", "Tuesday",
+ "Wednesday", "Thursday", "Friday", "Saturday"};
+
+ private static final String[] months = {
+ "January", "February", "March","April", "May", "June","July", "August",
+ "September","October", "November", "December"};
+
+ public static void main(String[] args) throws Exception {
+
+ Calendar calendar = Calendar.getInstance();
+ boolean xlsx = true;
+ for (int i = 0; i < args.length; i++) {
+ if(args[i].charAt(0) == '-'){
+ xlsx = args[i].equals("-xlsx");
+ } else {
+ calendar.set(Calendar.YEAR, Integer.parseInt(args[i]));
+ }
+ }
+ int year = calendar.get(Calendar.YEAR);
+
+ Workbook wb = xlsx ? new XSSFWorkbook() : new HSSFWorkbook();
+
+ Map<String, CellStyle> styles = createStyles(wb);
+
+ for (int month = 0; month < 12; month++) {
+ calendar.set(Calendar.MONTH, month);
+ calendar.set(Calendar.DAY_OF_MONTH, 1);
+ //create a sheet for each month
+ Sheet sheet = wb.createSheet(months[month]);
+
+ //turn off gridlines
+ sheet.setDisplayGridlines(false);
+ sheet.setPrintGridlines(false);
+ sheet.setFitToPage(true);
+ sheet.setHorizontallyCenter(true);
+ PrintSetup printSetup = sheet.getPrintSetup();
+ printSetup.setLandscape(true);
+
+ //the following three statements are required only for HSSF
+ sheet.setAutobreaks(true);
+ printSetup.setFitHeight((short)1);
+ printSetup.setFitWidth((short)1);
+
+ //the header row: centered text in 48pt font
+ Row headerRow = sheet.createRow(0);
+ headerRow.setHeightInPoints(80);
+ Cell titleCell = headerRow.createCell(0);
+ titleCell.setCellValue(months[month] + " " + year);
+ titleCell.setCellStyle(styles.get("title"));
+ sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$N$1"));
+
+ //header with month titles
+ Row monthRow = sheet.createRow(1);
+ for (int i = 0; i < days.length; i++) {
+ //set column widths, the width is measured in units of 1/256th of a character width
+ sheet.setColumnWidth(i*2, 5*256); //the column is 5 characters wide
+ sheet.setColumnWidth(i*2 + 1, 13*256); //the column is 13 characters wide
+ sheet.addMergedRegion(new CellRangeAddress(1, 1, i*2, i*2+1));
+ Cell monthCell = monthRow.createCell(i*2);
+ monthCell.setCellValue(days[i]);
+ monthCell.setCellStyle(styles.get("month"));
+ }
+
+ int cnt = 1, day=1;
+ int rownum = 2;
+ for (int j = 0; j < 6; j++) {
+ Row row = sheet.createRow(rownum++);
+ row.setHeightInPoints(100);
+ for (int i = 0; i < days.length; i++) {
+ Cell dayCell_1 = row.createCell(i*2);
+ Cell dayCell_2 = row.createCell(i*2 + 1);
+
+ int day_of_week = calendar.get(Calendar.DAY_OF_WEEK);
+ if(cnt >= day_of_week && calendar.get(Calendar.MONTH) == month) {
+ dayCell_1.setCellValue(day);
+ calendar.set(Calendar.DAY_OF_MONTH, ++day);
+
+ if(i == 0 || i == days.length-1) {
+ dayCell_1.setCellStyle(styles.get("weekend_left"));
+ dayCell_2.setCellStyle(styles.get("weekend_right"));
+ } else {
+ dayCell_1.setCellStyle(styles.get("workday_left"));
+ dayCell_2.setCellStyle(styles.get("workday_right"));
+ }
+ } else {
+ dayCell_1.setCellStyle(styles.get("grey_left"));
+ dayCell_2.setCellStyle(styles.get("grey_right"));
+ }
+ cnt++;
+ }
+ if(calendar.get(Calendar.MONTH) > month) break;
+ }
+ }
+
+ // Write the output to a file
+ String file = "calendar.xls";
+ if(wb instanceof XSSFWorkbook) file += "x";
+ FileOutputStream out = new FileOutputStream(file);
+ wb.write(out);
+ out.close();
+ }
+
+ /**
+ * cell styles used for formatting calendar sheets
+ */
+ private static Map<String, CellStyle> createStyles(Workbook wb){
+ Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
+
+ short borderColor = IndexedColors.GREY_50_PERCENT.getIndex();
+
+ CellStyle style;
+ Font titleFont = wb.createFont();
+ titleFont.setFontHeightInPoints((short)48);
+ titleFont.setColor(IndexedColors.DARK_BLUE.getIndex());
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+ style.setFont(titleFont);
+ styles.put("title", style);
+
+ Font monthFont = wb.createFont();
+ monthFont.setFontHeightInPoints((short)12);
+ monthFont.setColor(IndexedColors.WHITE.getIndex());
+ monthFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+ style.setFillForegroundColor(IndexedColors.DARK_BLUE.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setFont(monthFont);
+ styles.put("month", style);
+
+ Font dayFont = wb.createFont();
+ dayFont.setFontHeightInPoints((short)14);
+ dayFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_LEFT);
+ style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
+ style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setBorderLeft(CellStyle.BORDER_THIN);
+ style.setLeftBorderColor(borderColor);
+ style.setBorderBottom(CellStyle.BORDER_THIN);
+ style.setBottomBorderColor(borderColor);
+ style.setFont(dayFont);
+ styles.put("weekend_left", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
+ style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setBorderRight(CellStyle.BORDER_THIN);
+ style.setRightBorderColor(borderColor);
+ style.setBorderBottom(CellStyle.BORDER_THIN);
+ style.setBottomBorderColor(borderColor);
+ styles.put("weekend_right", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_LEFT);
+ style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
+ style.setBorderLeft(CellStyle.BORDER_THIN);
+ style.setFillForegroundColor(IndexedColors.WHITE.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setLeftBorderColor(borderColor);
+ style.setBorderBottom(CellStyle.BORDER_THIN);
+ style.setBottomBorderColor(borderColor);
+ style.setFont(dayFont);
+ styles.put("workday_left", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
+ style.setFillForegroundColor(IndexedColors.WHITE.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setBorderRight(CellStyle.BORDER_THIN);
+ style.setRightBorderColor(borderColor);
+ style.setBorderBottom(CellStyle.BORDER_THIN);
+ style.setBottomBorderColor(borderColor);
+ styles.put("workday_right", style);
+
+ style = wb.createCellStyle();
+ style.setBorderLeft(CellStyle.BORDER_THIN);
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setBorderBottom(CellStyle.BORDER_THIN);
+ style.setBottomBorderColor(borderColor);
+ styles.put("grey_left", style);
+
+ style = wb.createCellStyle();
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setBorderRight(CellStyle.BORDER_THIN);
+ style.setRightBorderColor(borderColor);
+ style.setBorderBottom(CellStyle.BORDER_THIN);
+ style.setBottomBorderColor(borderColor);
+ styles.put("grey_right", style);
+
+ return styles;
+ }
+}
-/* ====================================================================\r
- Licensed to the Apache Software Foundation (ASF) under one or more\r
- contributor license agreements. See the NOTICE file distributed with\r
- this work for additional information regarding copyright ownership.\r
- The ASF licenses this file to You under the Apache License, Version 2.0\r
- (the "License"); you may not use this file except in compliance with\r
- the License. You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
- Unless required by applicable law or agreed to in writing, software\r
- distributed under the License is distributed on an "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- See the License for the specific language governing permissions and\r
- limitations under the License.\r
-==================================================================== */\r
-package org.apache.poi.ss.examples;\r
-\r
-import org.apache.poi.xssf.usermodel.*;\r
-import org.apache.poi.ss.usermodel.*;\r
-import org.apache.poi.ss.util.CellRangeAddress;\r
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;\r
-\r
-import java.util.Map;\r
-import java.util.HashMap;\r
-import java.io.FileOutputStream;\r
-\r
-/**\r
- * Simple Loan Calculator. Demonstrates advance usage of cell formulas and named ranges.\r
- *\r
- * Usage:\r
- * LoanCalculator -xls|xlsx\r
- *\r
- * @author Yegor Kozlov\r
- */\r
-public class LoanCalculator {\r
-\r
- public static void main(String[] args) throws Exception {\r
- Workbook wb;\r
-\r
- if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();\r
- else wb = new XSSFWorkbook();\r
-\r
- Map<String, CellStyle> styles = createStyles(wb);\r
- Sheet sheet = wb.createSheet("Loan Calculator");\r
- sheet.setPrintGridlines(false);\r
- sheet.setDisplayGridlines(false);\r
-\r
- PrintSetup printSetup = sheet.getPrintSetup();\r
- printSetup.setLandscape(true);\r
- sheet.setFitToPage(true);\r
- sheet.setHorizontallyCenter(true);\r
-\r
- sheet.setColumnWidth(0, 3*256);\r
- sheet.setColumnWidth(1, 3*256);\r
- sheet.setColumnWidth(2, 11*256);\r
- sheet.setColumnWidth(3, 14*256);\r
- sheet.setColumnWidth(4, 14*256);\r
- sheet.setColumnWidth(5, 14*256);\r
- sheet.setColumnWidth(6, 14*256);\r
-\r
- createNames(wb);\r
-\r
- Row titleRow = sheet.createRow(0);\r
- titleRow.setHeightInPoints(35);\r
- for (int i = 1; i <= 7; i++) {\r
- titleRow.createCell(i).setCellStyle(styles.get("title"));\r
- }\r
- Cell titleCell = titleRow.getCell(2);\r
- titleCell.setCellValue("Simple Loan Calculator");\r
- sheet.addMergedRegion(CellRangeAddress.valueOf("$C$1:$H$1"));\r
-\r
- Row row = sheet.createRow(2);\r
- Cell cell = row.createCell(4);\r
- cell.setCellValue("Enter values");\r
- cell.setCellStyle(styles.get("item_right"));\r
-\r
- row = sheet.createRow(3);\r
- cell = row.createCell(2);\r
- cell.setCellValue("Loan amount");\r
- cell.setCellStyle(styles.get("item_left"));\r
- cell = row.createCell(4);\r
- cell.setCellStyle(styles.get("input_$"));\r
- cell.setAsActiveCell();\r
-\r
- row = sheet.createRow(4);\r
- cell = row.createCell(2);\r
- cell.setCellValue("Annual interest rate");\r
- cell.setCellStyle(styles.get("item_left"));\r
- cell = row.createCell(4);\r
- cell.setCellStyle(styles.get("input_%"));\r
-\r
- row = sheet.createRow(5);\r
- cell = row.createCell(2);\r
- cell.setCellValue("Loan period in years");\r
- cell.setCellStyle(styles.get("item_left"));\r
- cell = row.createCell(4);\r
- cell.setCellStyle(styles.get("input_i"));\r
-\r
- row = sheet.createRow(6);\r
- cell = row.createCell(2);\r
- cell.setCellValue("Start date of loan");\r
- cell.setCellStyle(styles.get("item_left"));\r
- cell = row.createCell(4);\r
- cell.setCellStyle(styles.get("input_d"));\r
-\r
- row = sheet.createRow(8);\r
- cell = row.createCell(2);\r
- cell.setCellValue("Monthly payment");\r
- cell.setCellStyle(styles.get("item_left"));\r
- cell = row.createCell(4);\r
- cell.setCellFormula("IF(Values_Entered,Monthly_Payment,\"\")");\r
- cell.setCellStyle(styles.get("formula_$"));\r
-\r
- row = sheet.createRow(9);\r
- cell = row.createCell(2);\r
- cell.setCellValue("Number of payments");\r
- cell.setCellStyle(styles.get("item_left"));\r
- cell = row.createCell(4);\r
- cell.setCellFormula("IF(Values_Entered,Loan_Years*12,\"\")");\r
- cell.setCellStyle(styles.get("formula_i"));\r
-\r
- row = sheet.createRow(10);\r
- cell = row.createCell(2);\r
- cell.setCellValue("Total interest");\r
- cell.setCellStyle(styles.get("item_left"));\r
- cell = row.createCell(4);\r
- cell.setCellFormula("IF(Values_Entered,Total_Cost-Loan_Amount,\"\")");\r
- cell.setCellStyle(styles.get("formula_$"));\r
-\r
- row = sheet.createRow(11);\r
- cell = row.createCell(2);\r
- cell.setCellValue("Total cost of loan");\r
- cell.setCellStyle(styles.get("item_left"));\r
- cell = row.createCell(4);\r
- cell.setCellFormula("IF(Values_Entered,Monthly_Payment*Number_of_Payments,\"\")");\r
- cell.setCellStyle(styles.get("formula_$"));\r
-\r
-\r
- // Write the output to a file\r
- String file = "loan-calculator.xls";\r
- if(wb instanceof XSSFWorkbook) file += "x";\r
- FileOutputStream out = new FileOutputStream(file);\r
- wb.write(out);\r
- out.close();\r
- }\r
-\r
- /**\r
- * cell styles used for formatting calendar sheets\r
- */\r
- private static Map<String, CellStyle> createStyles(Workbook wb){\r
- Map<String, CellStyle> styles = new HashMap<String, CellStyle>();\r
-\r
- CellStyle style;\r
- Font titleFont = wb.createFont();\r
- titleFont.setFontHeightInPoints((short)14);\r
- titleFont.setFontName("Trebuchet MS");\r
- style = wb.createCellStyle();\r
- style.setFont(titleFont);\r
- style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
- style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- styles.put("title", style);\r
-\r
- Font itemFont = wb.createFont();\r
- itemFont.setFontHeightInPoints((short)9);\r
- itemFont.setFontName("Trebuchet MS");\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_LEFT);\r
- style.setFont(itemFont);\r
- styles.put("item_left", style);\r
-\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_RIGHT);\r
- style.setFont(itemFont);\r
- styles.put("item_right", style);\r
-\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_RIGHT);\r
- style.setFont(itemFont);\r
- style.setBorderRight(CellStyle.BORDER_DOTTED);\r
- style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
- style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setBorderLeft(CellStyle.BORDER_DOTTED);\r
- style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setBorderTop(CellStyle.BORDER_DOTTED);\r
- style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setDataFormat(wb.createDataFormat().getFormat("_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)"));\r
- styles.put("input_$", style);\r
-\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_RIGHT);\r
- style.setFont(itemFont);\r
- style.setBorderRight(CellStyle.BORDER_DOTTED);\r
- style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
- style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setBorderLeft(CellStyle.BORDER_DOTTED);\r
- style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setBorderTop(CellStyle.BORDER_DOTTED);\r
- style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setDataFormat(wb.createDataFormat().getFormat("0.000%"));\r
- styles.put("input_%", style);\r
-\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_RIGHT);\r
- style.setFont(itemFont);\r
- style.setBorderRight(CellStyle.BORDER_DOTTED);\r
- style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
- style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setBorderLeft(CellStyle.BORDER_DOTTED);\r
- style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setBorderTop(CellStyle.BORDER_DOTTED);\r
- style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setDataFormat(wb.createDataFormat().getFormat("0"));\r
- styles.put("input_i", style);\r
-\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_CENTER);\r
- style.setFont(itemFont);\r
- style.setDataFormat(wb.createDataFormat().getFormat("m/d/yy"));\r
- styles.put("input_d", style);\r
-\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_RIGHT);\r
- style.setFont(itemFont);\r
- style.setBorderRight(CellStyle.BORDER_DOTTED);\r
- style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
- style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setBorderLeft(CellStyle.BORDER_DOTTED);\r
- style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setBorderTop(CellStyle.BORDER_DOTTED);\r
- style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setDataFormat(wb.createDataFormat().getFormat("$##,##0.00"));\r
- style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
- style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- styles.put("formula_$", style);\r
-\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_RIGHT);\r
- style.setFont(itemFont);\r
- style.setBorderRight(CellStyle.BORDER_DOTTED);\r
- style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
- style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setBorderLeft(CellStyle.BORDER_DOTTED);\r
- style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setBorderTop(CellStyle.BORDER_DOTTED);\r
- style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setDataFormat(wb.createDataFormat().getFormat("0"));\r
- style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
- style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- styles.put("formula_i", style);\r
-\r
- return styles;\r
- }\r
-\r
- //define named ranges for the inputs and formulas\r
- public static void createNames(Workbook wb){\r
- Name name;\r
-\r
- name = wb.createName();\r
- name.setNameName("Interest_Rate");\r
- name.setRefersToFormula("'Loan Calculator'!$E$5");\r
-\r
- name = wb.createName();\r
- name.setNameName("Loan_Amount");\r
- name.setRefersToFormula("'Loan Calculator'!$E$4");\r
-\r
- name = wb.createName();\r
- name.setNameName("Loan_Start");\r
- name.setRefersToFormula("'Loan Calculator'!$E$7");\r
-\r
- name = wb.createName();\r
- name.setNameName("Loan_Years");\r
- name.setRefersToFormula("'Loan Calculator'!$E$6");\r
-\r
- name = wb.createName();\r
- name.setNameName("Number_of_Payments");\r
- name.setRefersToFormula("'Loan Calculator'!$E$10");\r
-\r
- name = wb.createName();\r
- name.setNameName("Monthly_Payment");\r
- name.setRefersToFormula("-PMT(Interest_Rate/12,Number_of_Payments,Loan_Amount)");\r
-\r
- name = wb.createName();\r
- name.setNameName("Total_Cost");\r
- name.setRefersToFormula("'Loan Calculator'!$E$12");\r
-\r
- name = wb.createName();\r
- name.setNameName("Total_Interest");\r
- name.setRefersToFormula("'Loan Calculator'!$E$11");\r
-\r
- name = wb.createName();\r
- name.setNameName("Values_Entered");\r
- name.setRefersToFormula("IF(Loan_Amount*Interest_Rate*Loan_Years*Loan_Start>0,1,0)");\r
- }\r
-}\r
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+
+package org.apache.poi.ss.examples;
+
+import org.apache.poi.xssf.usermodel.*;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.io.FileOutputStream;
+
+/**
+ * Simple Loan Calculator. Demonstrates advance usage of cell formulas and named ranges.
+ *
+ * Usage:
+ * LoanCalculator -xls|xlsx
+ *
+ * @author Yegor Kozlov
+ */
+public class LoanCalculator {
+
+ public static void main(String[] args) throws Exception {
+ Workbook wb;
+
+ if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();
+ else wb = new XSSFWorkbook();
+
+ Map<String, CellStyle> styles = createStyles(wb);
+ Sheet sheet = wb.createSheet("Loan Calculator");
+ sheet.setPrintGridlines(false);
+ sheet.setDisplayGridlines(false);
+
+ PrintSetup printSetup = sheet.getPrintSetup();
+ printSetup.setLandscape(true);
+ sheet.setFitToPage(true);
+ sheet.setHorizontallyCenter(true);
+
+ sheet.setColumnWidth(0, 3*256);
+ sheet.setColumnWidth(1, 3*256);
+ sheet.setColumnWidth(2, 11*256);
+ sheet.setColumnWidth(3, 14*256);
+ sheet.setColumnWidth(4, 14*256);
+ sheet.setColumnWidth(5, 14*256);
+ sheet.setColumnWidth(6, 14*256);
+
+ createNames(wb);
+
+ Row titleRow = sheet.createRow(0);
+ titleRow.setHeightInPoints(35);
+ for (int i = 1; i <= 7; i++) {
+ titleRow.createCell(i).setCellStyle(styles.get("title"));
+ }
+ Cell titleCell = titleRow.getCell(2);
+ titleCell.setCellValue("Simple Loan Calculator");
+ sheet.addMergedRegion(CellRangeAddress.valueOf("$C$1:$H$1"));
+
+ Row row = sheet.createRow(2);
+ Cell cell = row.createCell(4);
+ cell.setCellValue("Enter values");
+ cell.setCellStyle(styles.get("item_right"));
+
+ row = sheet.createRow(3);
+ cell = row.createCell(2);
+ cell.setCellValue("Loan amount");
+ cell.setCellStyle(styles.get("item_left"));
+ cell = row.createCell(4);
+ cell.setCellStyle(styles.get("input_$"));
+ cell.setAsActiveCell();
+
+ row = sheet.createRow(4);
+ cell = row.createCell(2);
+ cell.setCellValue("Annual interest rate");
+ cell.setCellStyle(styles.get("item_left"));
+ cell = row.createCell(4);
+ cell.setCellStyle(styles.get("input_%"));
+
+ row = sheet.createRow(5);
+ cell = row.createCell(2);
+ cell.setCellValue("Loan period in years");
+ cell.setCellStyle(styles.get("item_left"));
+ cell = row.createCell(4);
+ cell.setCellStyle(styles.get("input_i"));
+
+ row = sheet.createRow(6);
+ cell = row.createCell(2);
+ cell.setCellValue("Start date of loan");
+ cell.setCellStyle(styles.get("item_left"));
+ cell = row.createCell(4);
+ cell.setCellStyle(styles.get("input_d"));
+
+ row = sheet.createRow(8);
+ cell = row.createCell(2);
+ cell.setCellValue("Monthly payment");
+ cell.setCellStyle(styles.get("item_left"));
+ cell = row.createCell(4);
+ cell.setCellFormula("IF(Values_Entered,Monthly_Payment,\"\")");
+ cell.setCellStyle(styles.get("formula_$"));
+
+ row = sheet.createRow(9);
+ cell = row.createCell(2);
+ cell.setCellValue("Number of payments");
+ cell.setCellStyle(styles.get("item_left"));
+ cell = row.createCell(4);
+ cell.setCellFormula("IF(Values_Entered,Loan_Years*12,\"\")");
+ cell.setCellStyle(styles.get("formula_i"));
+
+ row = sheet.createRow(10);
+ cell = row.createCell(2);
+ cell.setCellValue("Total interest");
+ cell.setCellStyle(styles.get("item_left"));
+ cell = row.createCell(4);
+ cell.setCellFormula("IF(Values_Entered,Total_Cost-Loan_Amount,\"\")");
+ cell.setCellStyle(styles.get("formula_$"));
+
+ row = sheet.createRow(11);
+ cell = row.createCell(2);
+ cell.setCellValue("Total cost of loan");
+ cell.setCellStyle(styles.get("item_left"));
+ cell = row.createCell(4);
+ cell.setCellFormula("IF(Values_Entered,Monthly_Payment*Number_of_Payments,\"\")");
+ cell.setCellStyle(styles.get("formula_$"));
+
+
+ // Write the output to a file
+ String file = "loan-calculator.xls";
+ if(wb instanceof XSSFWorkbook) file += "x";
+ FileOutputStream out = new FileOutputStream(file);
+ wb.write(out);
+ out.close();
+ }
+
+ /**
+ * cell styles used for formatting calendar sheets
+ */
+ private static Map<String, CellStyle> createStyles(Workbook wb){
+ Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
+
+ CellStyle style;
+ Font titleFont = wb.createFont();
+ titleFont.setFontHeightInPoints((short)14);
+ titleFont.setFontName("Trebuchet MS");
+ style = wb.createCellStyle();
+ style.setFont(titleFont);
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
+ style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ styles.put("title", style);
+
+ Font itemFont = wb.createFont();
+ itemFont.setFontHeightInPoints((short)9);
+ itemFont.setFontName("Trebuchet MS");
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_LEFT);
+ style.setFont(itemFont);
+ styles.put("item_left", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
+ style.setFont(itemFont);
+ styles.put("item_right", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
+ style.setFont(itemFont);
+ style.setBorderRight(CellStyle.BORDER_DOTTED);
+ style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
+ style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setBorderLeft(CellStyle.BORDER_DOTTED);
+ style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setBorderTop(CellStyle.BORDER_DOTTED);
+ style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setDataFormat(wb.createDataFormat().getFormat("_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)"));
+ styles.put("input_$", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
+ style.setFont(itemFont);
+ style.setBorderRight(CellStyle.BORDER_DOTTED);
+ style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
+ style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setBorderLeft(CellStyle.BORDER_DOTTED);
+ style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setBorderTop(CellStyle.BORDER_DOTTED);
+ style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setDataFormat(wb.createDataFormat().getFormat("0.000%"));
+ styles.put("input_%", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
+ style.setFont(itemFont);
+ style.setBorderRight(CellStyle.BORDER_DOTTED);
+ style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
+ style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setBorderLeft(CellStyle.BORDER_DOTTED);
+ style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setBorderTop(CellStyle.BORDER_DOTTED);
+ style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setDataFormat(wb.createDataFormat().getFormat("0"));
+ styles.put("input_i", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setFont(itemFont);
+ style.setDataFormat(wb.createDataFormat().getFormat("m/d/yy"));
+ styles.put("input_d", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
+ style.setFont(itemFont);
+ style.setBorderRight(CellStyle.BORDER_DOTTED);
+ style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
+ style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setBorderLeft(CellStyle.BORDER_DOTTED);
+ style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setBorderTop(CellStyle.BORDER_DOTTED);
+ style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setDataFormat(wb.createDataFormat().getFormat("$##,##0.00"));
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
+ style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ styles.put("formula_$", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
+ style.setFont(itemFont);
+ style.setBorderRight(CellStyle.BORDER_DOTTED);
+ style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
+ style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setBorderLeft(CellStyle.BORDER_DOTTED);
+ style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setBorderTop(CellStyle.BORDER_DOTTED);
+ style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setDataFormat(wb.createDataFormat().getFormat("0"));
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
+ style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ styles.put("formula_i", style);
+
+ return styles;
+ }
+
+ //define named ranges for the inputs and formulas
+ public static void createNames(Workbook wb){
+ Name name;
+
+ name = wb.createName();
+ name.setNameName("Interest_Rate");
+ name.setRefersToFormula("'Loan Calculator'!$E$5");
+
+ name = wb.createName();
+ name.setNameName("Loan_Amount");
+ name.setRefersToFormula("'Loan Calculator'!$E$4");
+
+ name = wb.createName();
+ name.setNameName("Loan_Start");
+ name.setRefersToFormula("'Loan Calculator'!$E$7");
+
+ name = wb.createName();
+ name.setNameName("Loan_Years");
+ name.setRefersToFormula("'Loan Calculator'!$E$6");
+
+ name = wb.createName();
+ name.setNameName("Number_of_Payments");
+ name.setRefersToFormula("'Loan Calculator'!$E$10");
+
+ name = wb.createName();
+ name.setNameName("Monthly_Payment");
+ name.setRefersToFormula("-PMT(Interest_Rate/12,Number_of_Payments,Loan_Amount)");
+
+ name = wb.createName();
+ name.setNameName("Total_Cost");
+ name.setRefersToFormula("'Loan Calculator'!$E$12");
+
+ name = wb.createName();
+ name.setNameName("Total_Interest");
+ name.setRefersToFormula("'Loan Calculator'!$E$11");
+
+ name = wb.createName();
+ name.setNameName("Values_Entered");
+ name.setRefersToFormula("IF(Loan_Amount*Interest_Rate*Loan_Years*Loan_Start>0,1,0)");
+ }
+}
-/* ====================================================================\r
- Licensed to the Apache Software Foundation (ASF) under one or more\r
- contributor license agreements. See the NOTICE file distributed with\r
- this work for additional information regarding copyright ownership.\r
- The ASF licenses this file to You under the Apache License, Version 2.0\r
- (the "License"); you may not use this file except in compliance with\r
- the License. You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
- Unless required by applicable law or agreed to in writing, software\r
- distributed under the License is distributed on an "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- See the License for the specific language governing permissions and\r
- limitations under the License.\r
-==================================================================== */\r
-package org.apache.poi.ss.examples;\r
-\r
-import org.apache.poi.xssf.usermodel.*;\r
-import org.apache.poi.ss.util.CellRangeAddress;\r
-import org.apache.poi.ss.usermodel.*;\r
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;\r
-\r
-import java.util.Map;\r
-import java.util.HashMap;\r
-import java.io.FileOutputStream;\r
-\r
-/**\r
- * A weekly timesheet created using Apache POI.\r
- * Usage:\r
- * TimesheetDemo -xls|xlsx\r
- *\r
- * @author Yegor Kozlov\r
- */\r
-public class TimesheetDemo {\r
- private static final String[] titles = {\r
- "Person", "ID", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun",\r
- "Total\nHrs", "Overtime\nHrs", "Regular\nHrs"\r
- };\r
-\r
- private static Object[][] sample_data = {\r
- {"Yegor Kozlov", "YK", 5.0, 8.0, 10.0, 5.0, 5.0, 7.0, 6.0},\r
- {"Gisella Bronzetti", "GB", 4.0, 3.0, 1.0, 3.5, null, null, 4.0},\r
- };\r
-\r
- public static void main(String[] args) throws Exception {\r
- Workbook wb;\r
-\r
- if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();\r
- else wb = new XSSFWorkbook();\r
-\r
- Map<String, CellStyle> styles = createStyles(wb);\r
-\r
- Sheet sheet = wb.createSheet("Timesheet");\r
- PrintSetup printSetup = sheet.getPrintSetup();\r
- printSetup.setLandscape(true);\r
- sheet.setFitToPage(true);\r
- sheet.setHorizontallyCenter(true);\r
-\r
- //title row\r
- Row titleRow = sheet.createRow(0);\r
- titleRow.setHeightInPoints(45);\r
- Cell titleCell = titleRow.createCell(0);\r
- titleCell.setCellValue("Weekly Timesheet");\r
- titleCell.setCellStyle(styles.get("title"));\r
- sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$L$1"));\r
-\r
- //header row\r
- Row headerRow = sheet.createRow(1);\r
- headerRow.setHeightInPoints(40);\r
- Cell headerCell;\r
- for (int i = 0; i < titles.length; i++) {\r
- headerCell = headerRow.createCell(i);\r
- headerCell.setCellValue(titles[i]);\r
- headerCell.setCellStyle(styles.get("header"));\r
- }\r
-\r
- int rownum = 2;\r
- for (int i = 0; i < 10; i++) {\r
- Row row = sheet.createRow(rownum++);\r
- for (int j = 0; j < titles.length; j++) {\r
- Cell cell = row.createCell(j);\r
- if(j == 9){\r
- //the 10th cell contains sum over week days, e.g. SUM(C3:I3)\r
- String ref = "C" +rownum+ ":I" + rownum;\r
- cell.setCellFormula("SUM("+ref+")");\r
- cell.setCellStyle(styles.get("formula"));\r
- } else if (j == 11){\r
- cell.setCellFormula("J" +rownum+ "-K" + rownum);\r
- cell.setCellStyle(styles.get("formula"));\r
- } else {\r
- cell.setCellStyle(styles.get("cell"));\r
- }\r
- }\r
- }\r
-\r
- //row with totals below\r
- Row sumRow = sheet.createRow(rownum++);\r
- sumRow.setHeightInPoints(35);\r
- Cell cell;\r
- cell = sumRow.createCell(0);\r
- cell.setCellStyle(styles.get("formula"));\r
- cell = sumRow.createCell(1);\r
- cell.setCellValue("Total Hrs:");\r
- cell.setCellStyle(styles.get("formula"));\r
-\r
- for (int j = 2; j < 12; j++) {\r
- cell = sumRow.createCell(j);\r
- String ref = (char)('A' + j) + "3:" + (char)('A' + j) + "12";\r
- cell.setCellFormula("SUM(" + ref + ")");\r
- if(j >= 9) cell.setCellStyle(styles.get("formula_2"));\r
- else cell.setCellStyle(styles.get("formula"));\r
- }\r
- rownum++;\r
- sumRow = sheet.createRow(rownum++);\r
- sumRow.setHeightInPoints(25);\r
- cell = sumRow.createCell(0);\r
- cell.setCellValue("Total Regular Hours");\r
- cell.setCellStyle(styles.get("formula"));\r
- cell = sumRow.createCell(1);\r
- cell.setCellFormula("L13");\r
- cell.setCellStyle(styles.get("formula_2"));\r
- sumRow = sheet.createRow(rownum++);\r
- sumRow.setHeightInPoints(25);\r
- cell = sumRow.createCell(0);\r
- cell.setCellValue("Total Overtime Hours");\r
- cell.setCellStyle(styles.get("formula"));\r
- cell = sumRow.createCell(1);\r
- cell.setCellFormula("K13");\r
- cell.setCellStyle(styles.get("formula_2"));\r
-\r
- //set sample data\r
- for (int i = 0; i < sample_data.length; i++) {\r
- Row row = sheet.getRow(2 + i);\r
- for (int j = 0; j < sample_data[i].length; j++) {\r
- if(sample_data[i][j] == null) continue;\r
-\r
- if(sample_data[i][j] instanceof String) {\r
- row.getCell(j).setCellValue((String)sample_data[i][j]);\r
- } else {\r
- row.getCell(j).setCellValue((Double)sample_data[i][j]);\r
- }\r
- }\r
- }\r
-\r
- //finally set column widths, the width is measured in units of 1/256th of a character width\r
- sheet.setColumnWidth(0, 30*256); //30 characters wide\r
- for (int i = 2; i < 9; i++) {\r
- sheet.setColumnWidth(i, 6*256); //6 characters wide\r
- }\r
- sheet.setColumnWidth(10, 10*256); //10 characters wide\r
-\r
- // Write the output to a file\r
- String file = "timesheet.xls";\r
- if(wb instanceof XSSFWorkbook) file += "x";\r
- FileOutputStream out = new FileOutputStream(file);\r
- wb.write(out);\r
- out.close();\r
- }\r
-\r
- /**\r
- * Create a library of cell styles\r
- */\r
- private static Map<String, CellStyle> createStyles(Workbook wb){\r
- Map<String, CellStyle> styles = new HashMap<String, CellStyle>();\r
- CellStyle style;\r
- Font titleFont = wb.createFont();\r
- titleFont.setFontHeightInPoints((short)18);\r
- titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD);\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_CENTER);\r
- style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);\r
- style.setFont(titleFont);\r
- styles.put("title", style);\r
-\r
- Font monthFont = wb.createFont();\r
- monthFont.setFontHeightInPoints((short)11);\r
- monthFont.setColor(IndexedColors.WHITE.getIndex());\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_CENTER);\r
- style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);\r
- style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- style.setFont(monthFont);\r
- style.setWrapText(true);\r
- styles.put("header", style);\r
-\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_CENTER);\r
- style.setWrapText(true);\r
- style.setBorderRight(CellStyle.BORDER_THIN);\r
- style.setRightBorderColor(IndexedColors.BLACK.getIndex());\r
- style.setBorderLeft(CellStyle.BORDER_THIN);\r
- style.setLeftBorderColor(IndexedColors.BLACK.getIndex());\r
- style.setBorderTop(CellStyle.BORDER_THIN);\r
- style.setTopBorderColor(IndexedColors.BLACK.getIndex());\r
- style.setBorderBottom(CellStyle.BORDER_THIN);\r
- style.setBottomBorderColor(IndexedColors.BLACK.getIndex());\r
- styles.put("cell", style);\r
-\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_CENTER);\r
- style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);\r
- style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- style.setDataFormat(wb.createDataFormat().getFormat("0.00"));\r
- styles.put("formula", style);\r
-\r
- style = wb.createCellStyle();\r
- style.setAlignment(CellStyle.ALIGN_CENTER);\r
- style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);\r
- style.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
- style.setDataFormat(wb.createDataFormat().getFormat("0.00"));\r
- styles.put("formula_2", style);\r
-\r
- return styles;\r
- }\r
-}\r
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+
+package org.apache.poi.ss.examples;
+
+import org.apache.poi.xssf.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.io.FileOutputStream;
+
+/**
+ * A weekly timesheet created using Apache POI.
+ * Usage:
+ * TimesheetDemo -xls|xlsx
+ *
+ * @author Yegor Kozlov
+ */
+public class TimesheetDemo {
+ private static final String[] titles = {
+ "Person", "ID", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun",
+ "Total\nHrs", "Overtime\nHrs", "Regular\nHrs"
+ };
+
+ private static Object[][] sample_data = {
+ {"Yegor Kozlov", "YK", 5.0, 8.0, 10.0, 5.0, 5.0, 7.0, 6.0},
+ {"Gisella Bronzetti", "GB", 4.0, 3.0, 1.0, 3.5, null, null, 4.0},
+ };
+
+ public static void main(String[] args) throws Exception {
+ Workbook wb;
+
+ if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();
+ else wb = new XSSFWorkbook();
+
+ Map<String, CellStyle> styles = createStyles(wb);
+
+ Sheet sheet = wb.createSheet("Timesheet");
+ PrintSetup printSetup = sheet.getPrintSetup();
+ printSetup.setLandscape(true);
+ sheet.setFitToPage(true);
+ sheet.setHorizontallyCenter(true);
+
+ //title row
+ Row titleRow = sheet.createRow(0);
+ titleRow.setHeightInPoints(45);
+ Cell titleCell = titleRow.createCell(0);
+ titleCell.setCellValue("Weekly Timesheet");
+ titleCell.setCellStyle(styles.get("title"));
+ sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$L$1"));
+
+ //header row
+ Row headerRow = sheet.createRow(1);
+ headerRow.setHeightInPoints(40);
+ Cell headerCell;
+ for (int i = 0; i < titles.length; i++) {
+ headerCell = headerRow.createCell(i);
+ headerCell.setCellValue(titles[i]);
+ headerCell.setCellStyle(styles.get("header"));
+ }
+
+ int rownum = 2;
+ for (int i = 0; i < 10; i++) {
+ Row row = sheet.createRow(rownum++);
+ for (int j = 0; j < titles.length; j++) {
+ Cell cell = row.createCell(j);
+ if(j == 9){
+ //the 10th cell contains sum over week days, e.g. SUM(C3:I3)
+ String ref = "C" +rownum+ ":I" + rownum;
+ cell.setCellFormula("SUM("+ref+")");
+ cell.setCellStyle(styles.get("formula"));
+ } else if (j == 11){
+ cell.setCellFormula("J" +rownum+ "-K" + rownum);
+ cell.setCellStyle(styles.get("formula"));
+ } else {
+ cell.setCellStyle(styles.get("cell"));
+ }
+ }
+ }
+
+ //row with totals below
+ Row sumRow = sheet.createRow(rownum++);
+ sumRow.setHeightInPoints(35);
+ Cell cell;
+ cell = sumRow.createCell(0);
+ cell.setCellStyle(styles.get("formula"));
+ cell = sumRow.createCell(1);
+ cell.setCellValue("Total Hrs:");
+ cell.setCellStyle(styles.get("formula"));
+
+ for (int j = 2; j < 12; j++) {
+ cell = sumRow.createCell(j);
+ String ref = (char)('A' + j) + "3:" + (char)('A' + j) + "12";
+ cell.setCellFormula("SUM(" + ref + ")");
+ if(j >= 9) cell.setCellStyle(styles.get("formula_2"));
+ else cell.setCellStyle(styles.get("formula"));
+ }
+ rownum++;
+ sumRow = sheet.createRow(rownum++);
+ sumRow.setHeightInPoints(25);
+ cell = sumRow.createCell(0);
+ cell.setCellValue("Total Regular Hours");
+ cell.setCellStyle(styles.get("formula"));
+ cell = sumRow.createCell(1);
+ cell.setCellFormula("L13");
+ cell.setCellStyle(styles.get("formula_2"));
+ sumRow = sheet.createRow(rownum++);
+ sumRow.setHeightInPoints(25);
+ cell = sumRow.createCell(0);
+ cell.setCellValue("Total Overtime Hours");
+ cell.setCellStyle(styles.get("formula"));
+ cell = sumRow.createCell(1);
+ cell.setCellFormula("K13");
+ cell.setCellStyle(styles.get("formula_2"));
+
+ //set sample data
+ for (int i = 0; i < sample_data.length; i++) {
+ Row row = sheet.getRow(2 + i);
+ for (int j = 0; j < sample_data[i].length; j++) {
+ if(sample_data[i][j] == null) continue;
+
+ if(sample_data[i][j] instanceof String) {
+ row.getCell(j).setCellValue((String)sample_data[i][j]);
+ } else {
+ row.getCell(j).setCellValue((Double)sample_data[i][j]);
+ }
+ }
+ }
+
+ //finally set column widths, the width is measured in units of 1/256th of a character width
+ sheet.setColumnWidth(0, 30*256); //30 characters wide
+ for (int i = 2; i < 9; i++) {
+ sheet.setColumnWidth(i, 6*256); //6 characters wide
+ }
+ sheet.setColumnWidth(10, 10*256); //10 characters wide
+
+ // Write the output to a file
+ String file = "timesheet.xls";
+ if(wb instanceof XSSFWorkbook) file += "x";
+ FileOutputStream out = new FileOutputStream(file);
+ wb.write(out);
+ out.close();
+ }
+
+ /**
+ * Create a library of cell styles
+ */
+ private static Map<String, CellStyle> createStyles(Workbook wb){
+ Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
+ CellStyle style;
+ Font titleFont = wb.createFont();
+ titleFont.setFontHeightInPoints((short)18);
+ titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+ style.setFont(titleFont);
+ styles.put("title", style);
+
+ Font monthFont = wb.createFont();
+ monthFont.setFontHeightInPoints((short)11);
+ monthFont.setColor(IndexedColors.WHITE.getIndex());
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+ style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setFont(monthFont);
+ style.setWrapText(true);
+ styles.put("header", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setWrapText(true);
+ style.setBorderRight(CellStyle.BORDER_THIN);
+ style.setRightBorderColor(IndexedColors.BLACK.getIndex());
+ style.setBorderLeft(CellStyle.BORDER_THIN);
+ style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
+ style.setBorderTop(CellStyle.BORDER_THIN);
+ style.setTopBorderColor(IndexedColors.BLACK.getIndex());
+ style.setBorderBottom(CellStyle.BORDER_THIN);
+ style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
+ styles.put("cell", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setDataFormat(wb.createDataFormat().getFormat("0.00"));
+ styles.put("formula", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+ style.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setDataFormat(wb.createDataFormat().getFormat("0.00"));
+ styles.put("formula_2", style);
+
+ return styles;
+ }
+}
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">\r
-<!--\r
- ====================================================================\r
- Licensed to the Apache Software Foundation (ASF) under one or more\r
- contributor license agreements. See the NOTICE file distributed with\r
- this work for additional information regarding copyright ownership.\r
- The ASF licenses this file to You under the Apache License, Version 2.0\r
- (the "License"); you may not use this file except in compliance with\r
- the License. You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
- Unless required by applicable law or agreed to in writing, software\r
- distributed under the License is distributed on an "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- See the License for the specific language governing permissions and\r
- limitations under the License.\r
- ====================================================================\r
--->\r
-<html>\r
-<head>\r
-</head>\r
-<body bgcolor="white">\r
-\r
-This package contains common internal POI code for manipulating formulas.\r
-Client applications should not refer to these classes directly.\r
-\r
-</body>\r
-</html>\r
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!--
+ ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ====================================================================
+-->
+<html>
+<head>
+</head>
+<body bgcolor="white">
+
+This package contains common internal POI code for manipulating formulas.
+Client applications should not refer to these classes directly.
+
+</body>
+</html>
-# Licensed to the Apache Software Foundation (ASF) under one or more\r
-# contributor license agreements. See the NOTICE file distributed with\r
-# this work for additional information regarding copyright ownership.\r
-# The ASF licenses this file to You under the Apache License, Version 2.0\r
-# (the "License"); you may not use this file except in compliance with\r
-# the License. You may obtain a copy of the License at\r
-# \r
-# http://www.apache.org/licenses/LICENSE-2.0\r
-# \r
-# Unless required by applicable law or agreed to in writing, software\r
-# distributed under the License is distributed on an "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-# See the License for the specific language governing permissions and\r
-# limitations under the License.\r
-\r
-# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor)\r
-# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4)\r
-#\r
-#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote )\r
-\r
-# Built-In Sheet Functions in BIFF2\r
-0 COUNT 0 30 V R \r
-1 IF 2 3 R V R R \r
-2 ISNA 1 1 V V \r
-3 ISERROR 1 1 V V \r
-4 SUM 0 30 V R \r
-5 AVERAGE 1 30 V R \r
-6 MIN 1 30 V R \r
-7 MAX 1 30 V R \r
-8 ROW 0 1 V R \r
-9 COLUMN 0 1 V R \r
-10 NA 0 0 V - \r
-11 NPV 2 30 V V R \r
-12 STDEV 1 30 V R \r
-13 DOLLAR 1 2 V V V \r
-14 FIXED 2 2 V V V x\r
-15 SIN 1 1 V V \r
-16 COS 1 1 V V \r
-17 TAN 1 1 V V \r
-18 ATAN 1 1 V V \r
-19 PI 0 0 V - \r
-20 SQRT 1 1 V V \r
-21 EXP 1 1 V V \r
-22 LN 1 1 V V \r
-23 LOG10 1 1 V V \r
-24 ABS 1 1 V V \r
-25 INT 1 1 V V \r
-26 SIGN 1 1 V V \r
-27 ROUND 2 2 V V V \r
-28 LOOKUP 2 3 V V R R \r
-29 INDEX 2 4 R R V V V \r
-30 REPT 2 2 V V V \r
-31 MID 3 3 V V V V \r
-32 LEN 1 1 V V \r
-33 VALUE 1 1 V V \r
-34 TRUE 0 0 V - \r
-35 FALSE 0 0 V - \r
-36 AND 1 30 V R \r
-37 OR 1 30 V R \r
-38 NOT 1 1 V V \r
-39 MOD 2 2 V V V \r
-40 DCOUNT 3 3 V R R R \r
-41 DSUM 3 3 V R R R \r
-42 DAVERAGE 3 3 V R R R \r
-43 DMIN 3 3 V R R R \r
-44 DMAX 3 3 V R R R \r
-45 DSTDEV 3 3 V R R R \r
-46 VAR 1 30 V R \r
-47 DVAR 3 3 V R R R \r
-48 TEXT 2 2 V V V \r
-49 LINEST 1 2 A R R x\r
-50 TREND 1 3 A R R R x\r
-51 LOGEST 1 2 A R R x\r
-52 GROWTH 1 3 A R R R x\r
-56 PV 3 5 V V V V V V \r
-# Built-In Sheet Functions in BIFF2\r
-57 FV 3 5 V V V V V V \r
-58 NPER 3 5 V V V V V V \r
-59 PMT 3 5 V V V V V V \r
-60 RATE 3 6 V V V V V V V \r
-61 MIRR 3 3 V R V V \r
-62 IRR 1 2 V R V \r
-63 RAND 0 0 V - x \r
-64 MATCH 2 3 V V R R \r
-65 DATE 3 3 V V V V \r
-66 TIME 3 3 V V V V \r
-67 DAY 1 1 V V \r
-68 MONTH 1 1 V V \r
-69 YEAR 1 1 V V \r
-70 WEEKDAY 1 1 V V x\r
-71 HOUR 1 1 V V \r
-72 MINUTE 1 1 V V \r
-73 SECOND 1 1 V V \r
-74 NOW 0 0 V - x \r
-75 AREAS 1 1 V R \r
-76 ROWS 1 1 V R \r
-77 COLUMNS 1 1 V R \r
-78 OFFSET 3 5 R R V V V V x \r
-82 SEARCH 2 3 V V V V \r
-83 TRANSPOSE 1 1 A A \r
-86 TYPE 1 1 V V \r
-97 ATAN2 2 2 V V V \r
-98 ASIN 1 1 V V \r
-99 ACOS 1 1 V V \r
-100 CHOOSE 2 30 R V R \r
-101 HLOOKUP 3 3 V V R R x\r
-102 VLOOKUP 3 3 V V R R x\r
-105 ISREF 1 1 V R \r
-109 LOG 1 2 V V V \r
-111 CHAR 1 1 V V \r
-112 LOWER 1 1 V V \r
-113 UPPER 1 1 V V \r
-114 PROPER 1 1 V V \r
-115 LEFT 1 2 V V V \r
-116 RIGHT 1 2 V V V \r
-117 EXACT 2 2 V V V \r
-118 TRIM 1 1 V V \r
-119 REPLACE 4 4 V V V V V \r
-120 SUBSTITUTE 3 4 V V V V V \r
-121 CODE 1 1 V V \r
-124 FIND 2 3 V V V V \r
-125 CELL 1 2 V V R x \r
-126 ISERR 1 1 V V \r
-127 ISTEXT 1 1 V V \r
-128 ISNUMBER 1 1 V V \r
-129 ISBLANK 1 1 V V \r
-130 T 1 1 V R \r
-131 N 1 1 V R \r
-140 DATEVALUE 1 1 V V \r
-141 TIMEVALUE 1 1 V V \r
-142 SLN 3 3 V V V V \r
-143 SYD 4 4 V V V V V \r
-144 DDB 4 5 V V V V V V \r
-148 INDIRECT 1 2 R V V x \r
-162 CLEAN 1 1 V V \r
-163 MDETERM 1 1 V A \r
-164 MINVERSE 1 1 A A \r
-165 MMULT 2 2 A A A \r
-167 IPMT 4 6 V V V V V V V \r
-168 PPMT 4 6 V V V V V V V \r
-169 COUNTA 0 30 V R \r
-183 PRODUCT 0 30 V R \r
-184 FACT 1 1 V V \r
-189 DPRODUCT 3 3 V R R R \r
-190 ISNONTEXT 1 1 V V \r
-193 STDEVP 1 30 V R \r
-194 VARP 1 30 V R \r
-195 DSTDEVP 3 3 V R R R \r
-196 DVARP 3 3 V R R R \r
-197 TRUNC 1 1 V V x\r
-198 ISLOGICAL 1 1 V V \r
-199 DCOUNTA 3 3 V R R R \r
-# New Built-In Sheet Functions in BIFF3\r
-49 LINEST 1 4 A R R V V x\r
-50 TREND 1 4 A R R R V x\r
-51 LOGEST 1 4 A R R V V x\r
-52 GROWTH 1 4 A R R R V x\r
-197 TRUNC 1 2 V V V x\r
-204 YEN 1 2 V V V x\r
-205 FINDB 2 3 V V V V \r
-206 SEARCHB 2 3 V V V V \r
-207 REPLACEB 4 4 V V V V V \r
-208 LEFTB 1 2 V V V \r
-209 RIGHTB 1 2 V V V \r
-210 MIDB 3 3 V V V V \r
-211 LENB 1 1 V V \r
-212 ROUNDUP 2 2 V V V \r
-213 ROUNDDOWN 2 2 V V V \r
-214 ASC 1 1 V V \r
-215 JIS 1 1 V V x\r
-219 ADDRESS 2 5 V V V V V V \r
-220 DAYS360 2 2 V V V x\r
-221 TODAY 0 0 V - x \r
-222 VDB 5 7 V V V V V V V V \r
-227 MEDIAN 1 30 V R ... \r
-228 SUMPRODUCT 1 30 V A ... \r
-229 SINH 1 1 V V \r
-230 COSH 1 1 V V \r
-231 TANH 1 1 V V \r
-232 ASINH 1 1 V V \r
-233 ACOSH 1 1 V V \r
-234 ATANH 1 1 V V \r
-235 DGET 3 3 V R R R \r
-244 INFO 1 1 V V \r
-# New Built-In Sheet Functions in BIFF4\r
-14 FIXED 2 3 V V V V x\r
-204 USDOLLAR 1 2 V V V x\r
-215 DBCS 1 1 V V x\r
-216 RANK 2 3 V V R V \r
-247 DB 4 5 V V V V V V \r
-252 FREQUENCY 2 2 A R R \r
-261 ERROR.TYPE 1 1 V V \r
-269 AVEDEV 1 30 V R ... \r
-270 BETADIST 3 5 V V V V V V \r
-271 GAMMALN 1 1 V V \r
-272 BETAINV 3 5 V V V V V V \r
-273 BINOMDIST 4 4 V V V V V \r
-274 CHIDIST 2 2 V V V \r
-275 CHIINV 2 2 V V V \r
-276 COMBIN 2 2 V V V \r
-277 CONFIDENCE 3 3 V V V V \r
-278 CRITBINOM 3 3 V V V V \r
-279 EVEN 1 1 V V \r
-280 EXPONDIST 3 3 V V V V \r
-281 FDIST 3 3 V V V V \r
-282 FINV 3 3 V V V V \r
-283 FISHER 1 1 V V \r
-284 FISHERINV 1 1 V V \r
-285 FLOOR 2 2 V V V \r
-286 GAMMADIST 4 4 V V V V V \r
-287 GAMMAINV 3 3 V V V V \r
-288 CEILING 2 2 V V V \r
-289 HYPGEOMDIST 4 4 V V V V V \r
-290 LOGNORMDIST 3 3 V V V V \r
-291 LOGINV 3 3 V V V V \r
-292 NEGBINOMDIST 3 3 V V V V \r
-293 NORMDIST 4 4 V V V V V \r
-294 NORMSDIST 1 1 V V \r
-295 NORMINV 3 3 V V V V \r
-296 NORMSINV 1 1 V V \r
-297 STANDARDIZE 3 3 V V V V \r
-298 ODD 1 1 V V \r
-299 PERMUT 2 2 V V V \r
-300 POISSON 3 3 V V V V \r
-301 TDIST 3 3 V V V V \r
-302 WEIBULL 4 4 V V V V V \r
-303 SUMXMY2 2 2 V A A \r
-304 SUMX2MY2 2 2 V A A \r
-305 SUMX2PY2 2 2 V A A \r
-306 CHITEST 2 2 V A A \r
-307 CORREL 2 2 V A A \r
-308 COVAR 2 2 V A A \r
-309 FORECAST 3 3 V V A A \r
-310 FTEST 2 2 V A A \r
-311 INTERCEPT 2 2 V A A \r
-312 PEARSON 2 2 V A A \r
-313 RSQ 2 2 V A A \r
-314 STEYX 2 2 V A A \r
-315 SLOPE 2 2 V A A \r
-316 TTEST 4 4 V A A V V \r
-317 PROB 3 4 V A A V V \r
-318 DEVSQ 1 30 V R ... \r
-319 GEOMEAN 1 30 V R ... \r
-320 HARMEAN 1 30 V R ... \r
-321 SUMSQ 0 30 V R ... \r
-322 KURT 1 30 V R ... \r
-323 SKEW 1 30 V R ... \r
-324 ZTEST 2 3 V R V V \r
-325 LARGE 2 2 V R V \r
-326 SMALL 2 2 V R V \r
-327 QUARTILE 2 2 V R V \r
-328 PERCENTILE 2 2 V R V \r
-329 PERCENTRANK 2 3 V R V V \r
-330 MODE 1 30 V A \r
-331 TRIMMEAN 2 2 V R V \r
-332 TINV 2 2 V V V \r
-# New Built-In Sheet Functions in BIFF5\r
-70 WEEKDAY 1 2 V V V x\r
-101 HLOOKUP 3 4 V V R R V x\r
-102 VLOOKUP 3 4 V V R R V x\r
-220 DAYS360 2 3 V V V V x\r
-336 CONCATENATE 0 30 V V \r
-337 POWER 2 2 V V V \r
-342 RADIANS 1 1 V V \r
-343 DEGREES 1 1 V V \r
-344 SUBTOTAL 2 30 V V R \r
-345 SUMIF 2 3 V R V R \r
-346 COUNTIF 2 2 V R V \r
-347 COUNTBLANK 1 1 V R \r
-350 ISPMT 4 4 V V V V V \r
-351 DATEDIF 3 3 V V V V \r
-352 DATESTRING 1 1 V V \r
-353 NUMBERSTRING 2 2 V V V \r
-354 ROMAN 1 2 V V V \r
-# New Built-In Sheet Functions in BIFF8\r
-358 GETPIVOTDATA 2 30 \r
-359 HYPERLINK 1 2 V V V \r
-360 PHONETIC 1 1 V R \r
-361 AVERAGEA 1 30 V R ... \r
-362 MAXA 1 30 V R ... \r
-363 MINA 1 30 V R ... \r
-364 STDEVPA 1 30 V R ... \r
-365 VARPA 1 30 V R ... \r
-366 STDEVA 1 30 V R ... \r
-367 VARA 1 30 V R ... \r
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor)
+# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4)
+#
+#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote )
+
+# Built-In Sheet Functions in BIFF2
+0 COUNT 0 30 V R
+1 IF 2 3 R V R R
+2 ISNA 1 1 V V
+3 ISERROR 1 1 V V
+4 SUM 0 30 V R
+5 AVERAGE 1 30 V R
+6 MIN 1 30 V R
+7 MAX 1 30 V R
+8 ROW 0 1 V R
+9 COLUMN 0 1 V R
+10 NA 0 0 V -
+11 NPV 2 30 V V R
+12 STDEV 1 30 V R
+13 DOLLAR 1 2 V V V
+14 FIXED 2 2 V V V x
+15 SIN 1 1 V V
+16 COS 1 1 V V
+17 TAN 1 1 V V
+18 ATAN 1 1 V V
+19 PI 0 0 V -
+20 SQRT 1 1 V V
+21 EXP 1 1 V V
+22 LN 1 1 V V
+23 LOG10 1 1 V V
+24 ABS 1 1 V V
+25 INT 1 1 V V
+26 SIGN 1 1 V V
+27 ROUND 2 2 V V V
+28 LOOKUP 2 3 V V R R
+29 INDEX 2 4 R R V V V
+30 REPT 2 2 V V V
+31 MID 3 3 V V V V
+32 LEN 1 1 V V
+33 VALUE 1 1 V V
+34 TRUE 0 0 V -
+35 FALSE 0 0 V -
+36 AND 1 30 V R
+37 OR 1 30 V R
+38 NOT 1 1 V V
+39 MOD 2 2 V V V
+40 DCOUNT 3 3 V R R R
+41 DSUM 3 3 V R R R
+42 DAVERAGE 3 3 V R R R
+43 DMIN 3 3 V R R R
+44 DMAX 3 3 V R R R
+45 DSTDEV 3 3 V R R R
+46 VAR 1 30 V R
+47 DVAR 3 3 V R R R
+48 TEXT 2 2 V V V
+49 LINEST 1 2 A R R x
+50 TREND 1 3 A R R R x
+51 LOGEST 1 2 A R R x
+52 GROWTH 1 3 A R R R x
+56 PV 3 5 V V V V V V
+# Built-In Sheet Functions in BIFF2
+57 FV 3 5 V V V V V V
+58 NPER 3 5 V V V V V V
+59 PMT 3 5 V V V V V V
+60 RATE 3 6 V V V V V V V
+61 MIRR 3 3 V R V V
+62 IRR 1 2 V R V
+63 RAND 0 0 V - x
+64 MATCH 2 3 V V R R
+65 DATE 3 3 V V V V
+66 TIME 3 3 V V V V
+67 DAY 1 1 V V
+68 MONTH 1 1 V V
+69 YEAR 1 1 V V
+70 WEEKDAY 1 1 V V x
+71 HOUR 1 1 V V
+72 MINUTE 1 1 V V
+73 SECOND 1 1 V V
+74 NOW 0 0 V - x
+75 AREAS 1 1 V R
+76 ROWS 1 1 V R
+77 COLUMNS 1 1 V R
+78 OFFSET 3 5 R R V V V V x
+82 SEARCH 2 3 V V V V
+83 TRANSPOSE 1 1 A A
+86 TYPE 1 1 V V
+97 ATAN2 2 2 V V V
+98 ASIN 1 1 V V
+99 ACOS 1 1 V V
+100 CHOOSE 2 30 R V R
+101 HLOOKUP 3 3 V V R R x
+102 VLOOKUP 3 3 V V R R x
+105 ISREF 1 1 V R
+109 LOG 1 2 V V V
+111 CHAR 1 1 V V
+112 LOWER 1 1 V V
+113 UPPER 1 1 V V
+114 PROPER 1 1 V V
+115 LEFT 1 2 V V V
+116 RIGHT 1 2 V V V
+117 EXACT 2 2 V V V
+118 TRIM 1 1 V V
+119 REPLACE 4 4 V V V V V
+120 SUBSTITUTE 3 4 V V V V V
+121 CODE 1 1 V V
+124 FIND 2 3 V V V V
+125 CELL 1 2 V V R x
+126 ISERR 1 1 V V
+127 ISTEXT 1 1 V V
+128 ISNUMBER 1 1 V V
+129 ISBLANK 1 1 V V
+130 T 1 1 V R
+131 N 1 1 V R
+140 DATEVALUE 1 1 V V
+141 TIMEVALUE 1 1 V V
+142 SLN 3 3 V V V V
+143 SYD 4 4 V V V V V
+144 DDB 4 5 V V V V V V
+148 INDIRECT 1 2 R V V x
+162 CLEAN 1 1 V V
+163 MDETERM 1 1 V A
+164 MINVERSE 1 1 A A
+165 MMULT 2 2 A A A
+167 IPMT 4 6 V V V V V V V
+168 PPMT 4 6 V V V V V V V
+169 COUNTA 0 30 V R
+183 PRODUCT 0 30 V R
+184 FACT 1 1 V V
+189 DPRODUCT 3 3 V R R R
+190 ISNONTEXT 1 1 V V
+193 STDEVP 1 30 V R
+194 VARP 1 30 V R
+195 DSTDEVP 3 3 V R R R
+196 DVARP 3 3 V R R R
+197 TRUNC 1 1 V V x
+198 ISLOGICAL 1 1 V V
+199 DCOUNTA 3 3 V R R R
+# New Built-In Sheet Functions in BIFF3
+49 LINEST 1 4 A R R V V x
+50 TREND 1 4 A R R R V x
+51 LOGEST 1 4 A R R V V x
+52 GROWTH 1 4 A R R R V x
+197 TRUNC 1 2 V V V x
+204 YEN 1 2 V V V x
+205 FINDB 2 3 V V V V
+206 SEARCHB 2 3 V V V V
+207 REPLACEB 4 4 V V V V V
+208 LEFTB 1 2 V V V
+209 RIGHTB 1 2 V V V
+210 MIDB 3 3 V V V V
+211 LENB 1 1 V V
+212 ROUNDUP 2 2 V V V
+213 ROUNDDOWN 2 2 V V V
+214 ASC 1 1 V V
+215 JIS 1 1 V V x
+219 ADDRESS 2 5 V V V V V V
+220 DAYS360 2 2 V V V x
+221 TODAY 0 0 V - x
+222 VDB 5 7 V V V V V V V V
+227 MEDIAN 1 30 V R ...
+228 SUMPRODUCT 1 30 V A ...
+229 SINH 1 1 V V
+230 COSH 1 1 V V
+231 TANH 1 1 V V
+232 ASINH 1 1 V V
+233 ACOSH 1 1 V V
+234 ATANH 1 1 V V
+235 DGET 3 3 V R R R
+244 INFO 1 1 V V
+# New Built-In Sheet Functions in BIFF4
+14 FIXED 2 3 V V V V x
+204 USDOLLAR 1 2 V V V x
+215 DBCS 1 1 V V x
+216 RANK 2 3 V V R V
+247 DB 4 5 V V V V V V
+252 FREQUENCY 2 2 A R R
+261 ERROR.TYPE 1 1 V V
+269 AVEDEV 1 30 V R ...
+270 BETADIST 3 5 V V V V V V
+271 GAMMALN 1 1 V V
+272 BETAINV 3 5 V V V V V V
+273 BINOMDIST 4 4 V V V V V
+274 CHIDIST 2 2 V V V
+275 CHIINV 2 2 V V V
+276 COMBIN 2 2 V V V
+277 CONFIDENCE 3 3 V V V V
+278 CRITBINOM 3 3 V V V V
+279 EVEN 1 1 V V
+280 EXPONDIST 3 3 V V V V
+281 FDIST 3 3 V V V V
+282 FINV 3 3 V V V V
+283 FISHER 1 1 V V
+284 FISHERINV 1 1 V V
+285 FLOOR 2 2 V V V
+286 GAMMADIST 4 4 V V V V V
+287 GAMMAINV 3 3 V V V V
+288 CEILING 2 2 V V V
+289 HYPGEOMDIST 4 4 V V V V V
+290 LOGNORMDIST 3 3 V V V V
+291 LOGINV 3 3 V V V V
+292 NEGBINOMDIST 3 3 V V V V
+293 NORMDIST 4 4 V V V V V
+294 NORMSDIST 1 1 V V
+295 NORMINV 3 3 V V V V
+296 NORMSINV 1 1 V V
+297 STANDARDIZE 3 3 V V V V
+298 ODD 1 1 V V
+299 PERMUT 2 2 V V V
+300 POISSON 3 3 V V V V
+301 TDIST 3 3 V V V V
+302 WEIBULL 4 4 V V V V V
+303 SUMXMY2 2 2 V A A
+304 SUMX2MY2 2 2 V A A
+305 SUMX2PY2 2 2 V A A
+306 CHITEST 2 2 V A A
+307 CORREL 2 2 V A A
+308 COVAR 2 2 V A A
+309 FORECAST 3 3 V V A A
+310 FTEST 2 2 V A A
+311 INTERCEPT 2 2 V A A
+312 PEARSON 2 2 V A A
+313 RSQ 2 2 V A A
+314 STEYX 2 2 V A A
+315 SLOPE 2 2 V A A
+316 TTEST 4 4 V A A V V
+317 PROB 3 4 V A A V V
+318 DEVSQ 1 30 V R ...
+319 GEOMEAN 1 30 V R ...
+320 HARMEAN 1 30 V R ...
+321 SUMSQ 0 30 V R ...
+322 KURT 1 30 V R ...
+323 SKEW 1 30 V R ...
+324 ZTEST 2 3 V R V V
+325 LARGE 2 2 V R V
+326 SMALL 2 2 V R V
+327 QUARTILE 2 2 V R V
+328 PERCENTILE 2 2 V R V
+329 PERCENTRANK 2 3 V R V V
+330 MODE 1 30 V A
+331 TRIMMEAN 2 2 V R V
+332 TINV 2 2 V V V
+# New Built-In Sheet Functions in BIFF5
+70 WEEKDAY 1 2 V V V x
+101 HLOOKUP 3 4 V V R R V x
+102 VLOOKUP 3 4 V V R R V x
+220 DAYS360 2 3 V V V V x
+336 CONCATENATE 0 30 V V
+337 POWER 2 2 V V V
+342 RADIANS 1 1 V V
+343 DEGREES 1 1 V V
+344 SUBTOTAL 2 30 V V R
+345 SUMIF 2 3 V R V R
+346 COUNTIF 2 2 V R V
+347 COUNTBLANK 1 1 V R
+350 ISPMT 4 4 V V V V V
+351 DATEDIF 3 3 V V V V
+352 DATESTRING 1 1 V V
+353 NUMBERSTRING 2 2 V V V
+354 ROMAN 1 2 V V V
+# New Built-In Sheet Functions in BIFF8
+358 GETPIVOTDATA 2 30
+359 HYPERLINK 1 2 V V V
+360 PHONETIC 1 1 V R
+361 AVERAGEA 1 30 V R ...
+362 MAXA 1 30 V R ...
+363 MINA 1 30 V R ...
+364 STDEVPA 1 30 V R ...
+365 VARPA 1 30 V R ...
+366 STDEVA 1 30 V R ...
+367 VARA 1 30 V R ...
-# Licensed to the Apache Software Foundation (ASF) under one or more\r
-# contributor license agreements. See the NOTICE file distributed with\r
-# this work for additional information regarding copyright ownership.\r
-# The ASF licenses this file to You under the Apache License, Version 2.0\r
-# (the "License"); you may not use this file except in compliance with\r
-# the License. You may obtain a copy of the License at\r
-# \r
-# http://www.apache.org/licenses/LICENSE-2.0\r
-# \r
-# Unless required by applicable law or agreed to in writing, software\r
-# distributed under the License is distributed on an "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-# See the License for the specific language governing permissions and\r
-# limitations under the License.\r
-\r
-# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor)\r
-# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4)\r
-# ! + some manual edits !\r
-#\r
-#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote )\r
-\r
-# Built-In Sheet Functions in BIFF2\r
-0 COUNT 0 30 V R \r
-1 IF 2 3 R V R R \r
-2 ISNA 1 1 V V \r
-3 ISERROR 1 1 V V \r
-4 SUM 0 30 V R \r
-5 AVERAGE 1 30 V R \r
-6 MIN 1 30 V R \r
-7 MAX 1 30 V R \r
-8 ROW 0 1 V R \r
-9 COLUMN 0 1 V R \r
-10 NA 0 0 V - \r
-11 NPV 2 30 V V R \r
-12 STDEV 1 30 V R \r
-13 DOLLAR 1 2 V V V \r
-14 FIXED 2 2 V V V x\r
-15 SIN 1 1 V V \r
-16 COS 1 1 V V \r
-17 TAN 1 1 V V \r
-18 ATAN 1 1 V V \r
-19 PI 0 0 V - \r
-20 SQRT 1 1 V V \r
-21 EXP 1 1 V V \r
-22 LN 1 1 V V \r
-23 LOG10 1 1 V V \r
-24 ABS 1 1 V V \r
-25 INT 1 1 V V \r
-26 SIGN 1 1 V V \r
-27 ROUND 2 2 V V V \r
-28 LOOKUP 2 3 V V R R \r
-29 INDEX 2 4 R R V V V \r
-30 REPT 2 2 V V V \r
-31 MID 3 3 V V V V \r
-32 LEN 1 1 V V \r
-33 VALUE 1 1 V V \r
-34 TRUE 0 0 V - \r
-35 FALSE 0 0 V - \r
-36 AND 1 30 V R \r
-37 OR 1 30 V R \r
-38 NOT 1 1 V V \r
-39 MOD 2 2 V V V \r
-40 DCOUNT 3 3 V R R R \r
-41 DSUM 3 3 V R R R \r
-42 DAVERAGE 3 3 V R R R \r
-43 DMIN 3 3 V R R R \r
-44 DMAX 3 3 V R R R \r
-45 DSTDEV 3 3 V R R R \r
-46 VAR 1 30 V R \r
-47 DVAR 3 3 V R R R \r
-48 TEXT 2 2 V V V \r
-49 LINEST 1 2 A R R x\r
-50 TREND 1 3 A R R R x\r
-51 LOGEST 1 2 A R R x\r
-52 GROWTH 1 3 A R R R x\r
-56 PV 3 5 V V V V V V \r
-# Built-In Sheet Functions in BIFF2\r
-57 FV 3 5 V V V V V V \r
-58 NPER 3 5 V V V V V V \r
-59 PMT 3 5 V V V V V V \r
-60 RATE 3 6 V V V V V V V \r
-61 MIRR 3 3 V A V V \r
-62 IRR 1 2 V A V \r
-63 RAND 0 0 V - x \r
-64 MATCH 2 3 V V R R \r
-65 DATE 3 3 V V V V \r
-66 TIME 3 3 V V V V \r
-67 DAY 1 1 V V \r
-68 MONTH 1 1 V V \r
-69 YEAR 1 1 V V \r
-70 WEEKDAY 1 1 V V x\r
-71 HOUR 1 1 V V \r
-72 MINUTE 1 1 V V \r
-73 SECOND 1 1 V V \r
-74 NOW 0 0 V - x \r
-75 AREAS 1 1 V R \r
-76 ROWS 1 1 V A \r
-77 COLUMNS 1 1 V A \r
-78 OFFSET 3 5 R R V V V V x \r
-82 SEARCH 2 3 V V V V \r
-83 TRANSPOSE 1 1 A A \r
-86 TYPE 1 1 V V \r
-97 ATAN2 2 2 V V V \r
-98 ASIN 1 1 V V \r
-99 ACOS 1 1 V V \r
-100 CHOOSE 2 30 R V R \r
-101 HLOOKUP 3 3 V V R R x\r
-102 VLOOKUP 3 3 V V R R x\r
-105 ISREF 1 1 V R \r
-109 LOG 1 2 V V V \r
-111 CHAR 1 1 V V \r
-112 LOWER 1 1 V V \r
-113 UPPER 1 1 V V \r
-114 PROPER 1 1 V V \r
-115 LEFT 1 2 V V V \r
-116 RIGHT 1 2 V V V \r
-117 EXACT 2 2 V V V \r
-118 TRIM 1 1 V V \r
-119 REPLACE 4 4 V V V V V \r
-120 SUBSTITUTE 3 4 V V V V V \r
-121 CODE 1 1 V V \r
-124 FIND 2 3 V V V V \r
-125 CELL 1 2 V V R x \r
-126 ISERR 1 1 V V \r
-127 ISTEXT 1 1 V V \r
-128 ISNUMBER 1 1 V V \r
-129 ISBLANK 1 1 V V \r
-130 T 1 1 V R \r
-131 N 1 1 V R \r
-140 DATEVALUE 1 1 V V \r
-141 TIMEVALUE 1 1 V V \r
-142 SLN 3 3 V V V V \r
-143 SYD 4 4 V V V V V \r
-144 DDB 4 5 V V V V V V \r
-148 INDIRECT 1 2 R V V x \r
-162 CLEAN 1 1 V V \r
-163 MDETERM 1 1 V A \r
-164 MINVERSE 1 1 A A \r
-165 MMULT 2 2 A A A \r
-167 IPMT 4 6 V V V V V V V \r
-168 PPMT 4 6 V V V V V V V \r
-169 COUNTA 0 30 V R \r
-183 PRODUCT 0 30 V R \r
-184 FACT 1 1 V V \r
-189 DPRODUCT 3 3 V R R R \r
-190 ISNONTEXT 1 1 V V \r
-193 STDEVP 1 30 V R \r
-194 VARP 1 30 V R \r
-195 DSTDEVP 3 3 V R R R \r
-196 DVARP 3 3 V R R R \r
-197 TRUNC 1 1 V V x\r
-198 ISLOGICAL 1 1 V V \r
-199 DCOUNTA 3 3 V R R R \r
-# New Built-In Sheet Functions in BIFF3\r
-49 LINEST 1 4 A R R V V x\r
-50 TREND 1 4 A R R R V x\r
-51 LOGEST 1 4 A R R V V x\r
-52 GROWTH 1 4 A R R R V x\r
-197 TRUNC 1 2 V V V x\r
-204 YEN 1 2 V V V x\r
-205 FINDB 2 3 V V V V \r
-206 SEARCHB 2 3 V V V V \r
-207 REPLACEB 4 4 V V V V V \r
-208 LEFTB 1 2 V V V \r
-209 RIGHTB 1 2 V V V \r
-210 MIDB 3 3 V V V V \r
-211 LENB 1 1 V V \r
-212 ROUNDUP 2 2 V V V \r
-213 ROUNDDOWN 2 2 V V V \r
-214 ASC 1 1 V V \r
-215 JIS 1 1 V V x\r
-219 ADDRESS 2 5 V V V V V V \r
-220 DAYS360 2 2 V V V x\r
-221 TODAY 0 0 V - x \r
-222 VDB 5 7 V V V V V V V V \r
-227 MEDIAN 1 30 V R ... \r
-228 SUMPRODUCT 1 30 V A ... \r
-229 SINH 1 1 V V \r
-230 COSH 1 1 V V \r
-231 TANH 1 1 V V \r
-232 ASINH 1 1 V V \r
-233 ACOSH 1 1 V V \r
-234 ATANH 1 1 V V \r
-235 DGET 3 3 V R R R \r
-244 INFO 1 1 V V \r
-# New Built-In Sheet Functions in BIFF4\r
-14 FIXED 2 3 V V V V x\r
-204 USDOLLAR 1 2 V V V x\r
-215 DBCS 1 1 V V x\r
-216 RANK 2 3 V V R V \r
-247 DB 4 5 V V V V V V \r
-252 FREQUENCY 2 2 A R R \r
-261 ERROR.TYPE 1 1 V V \r
-269 AVEDEV 1 30 V R ... \r
-270 BETADIST 3 5 V V V V V V \r
-271 GAMMALN 1 1 V V \r
-272 BETAINV 3 5 V V V V V V \r
-273 BINOMDIST 4 4 V V V V V \r
-274 CHIDIST 2 2 V V V \r
-275 CHIINV 2 2 V V V \r
-276 COMBIN 2 2 V V V \r
-277 CONFIDENCE 3 3 V V V V \r
-278 CRITBINOM 3 3 V V V V \r
-279 EVEN 1 1 V V \r
-280 EXPONDIST 3 3 V V V V \r
-281 FDIST 3 3 V V V V \r
-282 FINV 3 3 V V V V \r
-283 FISHER 1 1 V V \r
-284 FISHERINV 1 1 V V \r
-285 FLOOR 2 2 V V V \r
-286 GAMMADIST 4 4 V V V V V \r
-287 GAMMAINV 3 3 V V V V \r
-288 CEILING 2 2 V V V \r
-289 HYPGEOMDIST 4 4 V V V V V \r
-290 LOGNORMDIST 3 3 V V V V \r
-291 LOGINV 3 3 V V V V \r
-292 NEGBINOMDIST 3 3 V V V V \r
-293 NORMDIST 4 4 V V V V V \r
-294 NORMSDIST 1 1 V V \r
-295 NORMINV 3 3 V V V V \r
-296 NORMSINV 1 1 V V \r
-297 STANDARDIZE 3 3 V V V V \r
-298 ODD 1 1 V V \r
-299 PERMUT 2 2 V V V \r
-300 POISSON 3 3 V V V V \r
-301 TDIST 3 3 V V V V \r
-302 WEIBULL 4 4 V V V V V \r
-303 SUMXMY2 2 2 V A A \r
-304 SUMX2MY2 2 2 V A A \r
-305 SUMX2PY2 2 2 V A A \r
-306 CHITEST 2 2 V A A \r
-307 CORREL 2 2 V A A \r
-308 COVAR 2 2 V A A \r
-309 FORECAST 3 3 V V A A \r
-310 FTEST 2 2 V A A \r
-311 INTERCEPT 2 2 V A A \r
-312 PEARSON 2 2 V A A \r
-313 RSQ 2 2 V A A \r
-314 STEYX 2 2 V A A \r
-315 SLOPE 2 2 V A A \r
-316 TTEST 4 4 V A A V V \r
-317 PROB 3 4 V A A V V \r
-318 DEVSQ 1 30 V R ... \r
-319 GEOMEAN 1 30 V R ... \r
-320 HARMEAN 1 30 V R ... \r
-321 SUMSQ 0 30 V R ... \r
-322 KURT 1 30 V R ... \r
-323 SKEW 1 30 V R ... \r
-324 ZTEST 2 3 V R V V \r
-325 LARGE 2 2 V R V \r
-326 SMALL 2 2 V R V \r
-327 QUARTILE 2 2 V R V \r
-328 PERCENTILE 2 2 V R V \r
-329 PERCENTRANK 2 3 V R V V \r
-330 MODE 1 30 V A \r
-331 TRIMMEAN 2 2 V R V \r
-332 TINV 2 2 V V V \r
-# New Built-In Sheet Functions in BIFF5\r
-70 WEEKDAY 1 2 V V V x\r
-101 HLOOKUP 3 4 V V R R V x\r
-102 VLOOKUP 3 4 V V R R V x\r
-220 DAYS360 2 3 V V V V x\r
-336 CONCATENATE 0 30 V V \r
-337 POWER 2 2 V V V \r
-342 RADIANS 1 1 V V \r
-343 DEGREES 1 1 V V \r
-344 SUBTOTAL 2 30 V V R \r
-345 SUMIF 2 3 V R V R \r
-346 COUNTIF 2 2 V R V \r
-347 COUNTBLANK 1 1 V R \r
-350 ISPMT 4 4 V V V V V \r
-351 DATEDIF 3 3 V V V V \r
-352 DATESTRING 1 1 V V \r
-353 NUMBERSTRING 2 2 V V V \r
-354 ROMAN 1 2 V V V \r
-# New Built-In Sheet Functions in BIFF8\r
-358 GETPIVOTDATA 2 30 \r
-359 HYPERLINK 1 2 V V V \r
-360 PHONETIC 1 1 V R \r
-361 AVERAGEA 1 30 V R ... \r
-362 MAXA 1 30 V R ... \r
-363 MINA 1 30 V R ... \r
-364 STDEVPA 1 30 V R ... \r
-365 VARPA 1 30 V R ... \r
-366 STDEVA 1 30 V R ... \r
-367 VARA 1 30 V R ... \r
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor)
+# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4)
+# ! + some manual edits !
+#
+#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote )
+
+# Built-In Sheet Functions in BIFF2
+0 COUNT 0 30 V R
+1 IF 2 3 R V R R
+2 ISNA 1 1 V V
+3 ISERROR 1 1 V V
+4 SUM 0 30 V R
+5 AVERAGE 1 30 V R
+6 MIN 1 30 V R
+7 MAX 1 30 V R
+8 ROW 0 1 V R
+9 COLUMN 0 1 V R
+10 NA 0 0 V -
+11 NPV 2 30 V V R
+12 STDEV 1 30 V R
+13 DOLLAR 1 2 V V V
+14 FIXED 2 2 V V V x
+15 SIN 1 1 V V
+16 COS 1 1 V V
+17 TAN 1 1 V V
+18 ATAN 1 1 V V
+19 PI 0 0 V -
+20 SQRT 1 1 V V
+21 EXP 1 1 V V
+22 LN 1 1 V V
+23 LOG10 1 1 V V
+24 ABS 1 1 V V
+25 INT 1 1 V V
+26 SIGN 1 1 V V
+27 ROUND 2 2 V V V
+28 LOOKUP 2 3 V V R R
+29 INDEX 2 4 R R V V V
+30 REPT 2 2 V V V
+31 MID 3 3 V V V V
+32 LEN 1 1 V V
+33 VALUE 1 1 V V
+34 TRUE 0 0 V -
+35 FALSE 0 0 V -
+36 AND 1 30 V R
+37 OR 1 30 V R
+38 NOT 1 1 V V
+39 MOD 2 2 V V V
+40 DCOUNT 3 3 V R R R
+41 DSUM 3 3 V R R R
+42 DAVERAGE 3 3 V R R R
+43 DMIN 3 3 V R R R
+44 DMAX 3 3 V R R R
+45 DSTDEV 3 3 V R R R
+46 VAR 1 30 V R
+47 DVAR 3 3 V R R R
+48 TEXT 2 2 V V V
+49 LINEST 1 2 A R R x
+50 TREND 1 3 A R R R x
+51 LOGEST 1 2 A R R x
+52 GROWTH 1 3 A R R R x
+56 PV 3 5 V V V V V V
+# Built-In Sheet Functions in BIFF2
+57 FV 3 5 V V V V V V
+58 NPER 3 5 V V V V V V
+59 PMT 3 5 V V V V V V
+60 RATE 3 6 V V V V V V V
+61 MIRR 3 3 V A V V
+62 IRR 1 2 V A V
+63 RAND 0 0 V - x
+64 MATCH 2 3 V V R R
+65 DATE 3 3 V V V V
+66 TIME 3 3 V V V V
+67 DAY 1 1 V V
+68 MONTH 1 1 V V
+69 YEAR 1 1 V V
+70 WEEKDAY 1 1 V V x
+71 HOUR 1 1 V V
+72 MINUTE 1 1 V V
+73 SECOND 1 1 V V
+74 NOW 0 0 V - x
+75 AREAS 1 1 V R
+76 ROWS 1 1 V A
+77 COLUMNS 1 1 V A
+78 OFFSET 3 5 R R V V V V x
+82 SEARCH 2 3 V V V V
+83 TRANSPOSE 1 1 A A
+86 TYPE 1 1 V V
+97 ATAN2 2 2 V V V
+98 ASIN 1 1 V V
+99 ACOS 1 1 V V
+100 CHOOSE 2 30 R V R
+101 HLOOKUP 3 3 V V R R x
+102 VLOOKUP 3 3 V V R R x
+105 ISREF 1 1 V R
+109 LOG 1 2 V V V
+111 CHAR 1 1 V V
+112 LOWER 1 1 V V
+113 UPPER 1 1 V V
+114 PROPER 1 1 V V
+115 LEFT 1 2 V V V
+116 RIGHT 1 2 V V V
+117 EXACT 2 2 V V V
+118 TRIM 1 1 V V
+119 REPLACE 4 4 V V V V V
+120 SUBSTITUTE 3 4 V V V V V
+121 CODE 1 1 V V
+124 FIND 2 3 V V V V
+125 CELL 1 2 V V R x
+126 ISERR 1 1 V V
+127 ISTEXT 1 1 V V
+128 ISNUMBER 1 1 V V
+129 ISBLANK 1 1 V V
+130 T 1 1 V R
+131 N 1 1 V R
+140 DATEVALUE 1 1 V V
+141 TIMEVALUE 1 1 V V
+142 SLN 3 3 V V V V
+143 SYD 4 4 V V V V V
+144 DDB 4 5 V V V V V V
+148 INDIRECT 1 2 R V V x
+162 CLEAN 1 1 V V
+163 MDETERM 1 1 V A
+164 MINVERSE 1 1 A A
+165 MMULT 2 2 A A A
+167 IPMT 4 6 V V V V V V V
+168 PPMT 4 6 V V V V V V V
+169 COUNTA 0 30 V R
+183 PRODUCT 0 30 V R
+184 FACT 1 1 V V
+189 DPRODUCT 3 3 V R R R
+190 ISNONTEXT 1 1 V V
+193 STDEVP 1 30 V R
+194 VARP 1 30 V R
+195 DSTDEVP 3 3 V R R R
+196 DVARP 3 3 V R R R
+197 TRUNC 1 1 V V x
+198 ISLOGICAL 1 1 V V
+199 DCOUNTA 3 3 V R R R
+# New Built-In Sheet Functions in BIFF3
+49 LINEST 1 4 A R R V V x
+50 TREND 1 4 A R R R V x
+51 LOGEST 1 4 A R R V V x
+52 GROWTH 1 4 A R R R V x
+197 TRUNC 1 2 V V V x
+204 YEN 1 2 V V V x
+205 FINDB 2 3 V V V V
+206 SEARCHB 2 3 V V V V
+207 REPLACEB 4 4 V V V V V
+208 LEFTB 1 2 V V V
+209 RIGHTB 1 2 V V V
+210 MIDB 3 3 V V V V
+211 LENB 1 1 V V
+212 ROUNDUP 2 2 V V V
+213 ROUNDDOWN 2 2 V V V
+214 ASC 1 1 V V
+215 JIS 1 1 V V x
+219 ADDRESS 2 5 V V V V V V
+220 DAYS360 2 2 V V V x
+221 TODAY 0 0 V - x
+222 VDB 5 7 V V V V V V V V
+227 MEDIAN 1 30 V R ...
+228 SUMPRODUCT 1 30 V A ...
+229 SINH 1 1 V V
+230 COSH 1 1 V V
+231 TANH 1 1 V V
+232 ASINH 1 1 V V
+233 ACOSH 1 1 V V
+234 ATANH 1 1 V V
+235 DGET 3 3 V R R R
+244 INFO 1 1 V V
+# New Built-In Sheet Functions in BIFF4
+14 FIXED 2 3 V V V V x
+204 USDOLLAR 1 2 V V V x
+215 DBCS 1 1 V V x
+216 RANK 2 3 V V R V
+247 DB 4 5 V V V V V V
+252 FREQUENCY 2 2 A R R
+261 ERROR.TYPE 1 1 V V
+269 AVEDEV 1 30 V R ...
+270 BETADIST 3 5 V V V V V V
+271 GAMMALN 1 1 V V
+272 BETAINV 3 5 V V V V V V
+273 BINOMDIST 4 4 V V V V V
+274 CHIDIST 2 2 V V V
+275 CHIINV 2 2 V V V
+276 COMBIN 2 2 V V V
+277 CONFIDENCE 3 3 V V V V
+278 CRITBINOM 3 3 V V V V
+279 EVEN 1 1 V V
+280 EXPONDIST 3 3 V V V V
+281 FDIST 3 3 V V V V
+282 FINV 3 3 V V V V
+283 FISHER 1 1 V V
+284 FISHERINV 1 1 V V
+285 FLOOR 2 2 V V V
+286 GAMMADIST 4 4 V V V V V
+287 GAMMAINV 3 3 V V V V
+288 CEILING 2 2 V V V
+289 HYPGEOMDIST 4 4 V V V V V
+290 LOGNORMDIST 3 3 V V V V
+291 LOGINV 3 3 V V V V
+292 NEGBINOMDIST 3 3 V V V V
+293 NORMDIST 4 4 V V V V V
+294 NORMSDIST 1 1 V V
+295 NORMINV 3 3 V V V V
+296 NORMSINV 1 1 V V
+297 STANDARDIZE 3 3 V V V V
+298 ODD 1 1 V V
+299 PERMUT 2 2 V V V
+300 POISSON 3 3 V V V V
+301 TDIST 3 3 V V V V
+302 WEIBULL 4 4 V V V V V
+303 SUMXMY2 2 2 V A A
+304 SUMX2MY2 2 2 V A A
+305 SUMX2PY2 2 2 V A A
+306 CHITEST 2 2 V A A
+307 CORREL 2 2 V A A
+308 COVAR 2 2 V A A
+309 FORECAST 3 3 V V A A
+310 FTEST 2 2 V A A
+311 INTERCEPT 2 2 V A A
+312 PEARSON 2 2 V A A
+313 RSQ 2 2 V A A
+314 STEYX 2 2 V A A
+315 SLOPE 2 2 V A A
+316 TTEST 4 4 V A A V V
+317 PROB 3 4 V A A V V
+318 DEVSQ 1 30 V R ...
+319 GEOMEAN 1 30 V R ...
+320 HARMEAN 1 30 V R ...
+321 SUMSQ 0 30 V R ...
+322 KURT 1 30 V R ...
+323 SKEW 1 30 V R ...
+324 ZTEST 2 3 V R V V
+325 LARGE 2 2 V R V
+326 SMALL 2 2 V R V
+327 QUARTILE 2 2 V R V
+328 PERCENTILE 2 2 V R V
+329 PERCENTRANK 2 3 V R V V
+330 MODE 1 30 V A
+331 TRIMMEAN 2 2 V R V
+332 TINV 2 2 V V V
+# New Built-In Sheet Functions in BIFF5
+70 WEEKDAY 1 2 V V V x
+101 HLOOKUP 3 4 V V R R V x
+102 VLOOKUP 3 4 V V R R V x
+220 DAYS360 2 3 V V V V x
+336 CONCATENATE 0 30 V V
+337 POWER 2 2 V V V
+342 RADIANS 1 1 V V
+343 DEGREES 1 1 V V
+344 SUBTOTAL 2 30 V V R
+345 SUMIF 2 3 V R V R
+346 COUNTIF 2 2 V R V
+347 COUNTBLANK 1 1 V R
+350 ISPMT 4 4 V V V V V
+351 DATEDIF 3 3 V V V V
+352 DATESTRING 1 1 V V
+353 NUMBERSTRING 2 2 V V V
+354 ROMAN 1 2 V V V
+# New Built-In Sheet Functions in BIFF8
+358 GETPIVOTDATA 2 30
+359 HYPERLINK 1 2 V V V
+360 PHONETIC 1 1 V R
+361 AVERAGEA 1 30 V R ...
+362 MAXA 1 30 V R ...
+363 MINA 1 30 V R ...
+364 STDEVPA 1 30 V R ...
+365 VARPA 1 30 V R ...
+366 STDEVA 1 30 V R ...
+367 VARA 1 30 V R ...
-FC 00 20\r
-20 B8 05 00 00 B0 02 00 00 0C 00 00 4D 61 6E 75\r
-66 61 63 74 75 72 65 72 0B 00 00 50 61 72 74 20\r
-4E 75 6D 62 65 72 05 00 00 53 63 61 6C 65 04 00\r
-00 54 79 70 65 04 00 00 4E 61 6D 65 08 00 00 43\r
-6F 6D 6D 65 6E 74 73 08 00 00 41 4D 54 2D 45 52\r
-54 4C 07 00 00 48 6F 74 20 52 6F 64 10 00 00 33\r
-32 20 46 6F 72 64 20 52 6F 61 64 73 74 65 72 08\r
-00 00 4D 6F 6E 6F 67 72 61 6D 08 00 00 53 68 6F\r
-77 20 52 6F 64 07 00 00 48 61 6E 67 6D 61 6E 11\r
-00 00 50 65 74 65 72 62 69 6C 74 20 57 72 65 63\r
-6B 65 72 15 00 00 45 61 73 74 65 72 6E 20 41 69\r
-72 6C 69 6E 65 73 20 44 43 2D 33 11 00 00 4D 61\r
-73 65 72 61 74 69 20 4D 65 72 61 6B 20 53 53 1A\r
-00 00 44 6F 75 67 6C 61 73 20 50 2D 37 30 20 4E\r
-69 67 68 74 20 46 69 67 68 74 65 72 17 00 00 35\r
-35 20 43 68 65 76 79 20 53 74 72 65 65 74 20 4D\r
-61 63 68 69 6E 65 0C 00 00 54 77 65 65 64 79 20\r
-50 69 65 20 32 13 00 00 48 75 65 79 20 52 65 73\r
-63 75 65 20 43 68 6F 70 70 65 72 10 00 00 4D 61\r
-7A 64 61 20 4D 58 2D 35 20 4D 69 61 74 61 0A 00\r
-00 53 70 6F 72 74 73 20 43 61 72 05 00 00 54 72\r
-75 63 6B 06 00 00 52 6F 63 6B 65 74 09 00 00 50\r
-61 72 74 73 20 4B 69 74 0E 00 00 43 69 76 69 6C\r
-69 61 6E 20 50 6C 61 6E 65 0E 00 00 4D 69 6C 69\r
-74 61 72 79 20 50 6C 61 6E 65 0F 00 00 53 63 69\r
-65 6E 63 65 20 46 69 63 74 69 6F 6E 1A 00 00 44\r
-6F 6E 20 47 61 72 6C 69 74 73 20 57 79 6E 6E 27\r
-73 20 43 68 61 72 67 65 72 19 00 00 44 6F 6E 20\r
-47 61 72 6C 69 74 73 20 57 79 6E 6E 27 73 20 4A\r
-61 6D 6D 65 72 1A 00 00 50 61 63 6B 61 72 64 20\r
-42 6F 61 74 74 61 69 6C 20 53 70 65 65 64 73 74\r
-65 72 0E 00 00 52 65 76 65 6C 6C 20 47 65 72 6D\r
-61 6E 79 05 00 00 30 34 31 34 36 04 00 00 31 2F\r
-32 34 04 00 00 31 2F 37 32 0E 00 00 4D 65 20 32\r
-36 32 20 41 2D 31 61 2F 55 33 09 00 00 53 54 43\r
-20 53 74 61 72 74 04 00 00 34 63 2D 39 05 00 00\r
-31 2F 32 38 38 0C 00 00 50 72 6F 74 6F 6E 2D 4B\r
-20 4D 69 72 04 00 00 34 63 2D 37 0E 00 00 50 72\r
-6F 74 6F 6E 2D 4B 20 41 73 74 72 61 05 00 00 34\r
-63 2D 31 37 0E 00 00 50 72 6F 74 6F 6E 2D 4B 20\r
-5A 61 72 79 61 13 00 00 41 63 63 75 72 61 74 65\r
-20 4D 69 6E 69 61 74 75 72 65 73 04 00 00 33 34\r
-32 30 04 00 00 31 2F 34 38 0F 00 00 53 42 44 2D\r
-31 20 44 61 75 6E 74 6C 65 73 73 1B 00 00 77 2F\r
-56 65 72 6C 69 6E 64 65 6E 20 31 33 37 38 20 44\r
-65 74 61 69 6C 20 53 65 74 04 00 00 38 32 38 33\r
-0C 00 00 54 72 6F 75 62 6C 65 6D 61 6B 65 72 04\r
-00 00 32 37 33 37 0E 00 00 44 61 79 74 6F 6E 61\r
-20 53 70 69 64 65 72 04 00 00 38 31 32 36 04 00\r
-00 31 2F 32 35 06 00 00 48 65 6C 6C 65 72 05 00\r
-00 38 30 34 34 33 05 00 00 31 2F 31 34 34 12 00\r
-00 42 72 65 69 74 6C 69 6E 20 4F 72 62 69 74 65\r
-72 20 33 0F 00 00 53 68 61 6E 67 68 61 69 20 44\r
-72 61 67 6F 6E 04 00 00 31 39 39 38 04 00 00 31\r
-2F 39 36 0F 00 00 41 72 69 61 6E 65 20 35 20 52\r
-6F 63 6B 65 74 0F 00 00 52 65 76 65 6C 6C 2D 4D\r
-6F 6E 6F 67 72 61 6D 07 00 00 38 35 2D 35 39 33\r
-34 0F 00 00 50 42 59 2D 35 41 20 43 61 74 61 6C\r
-69 6E 61 0A 00 00 50 72 6F 4D 6F 64 65 6C 65 72\r
-07 00 00 47 6C 65 6E 63 6F 65 05 00 00 30 35 32\r
-30 32 04 00 00 31 2F 33 35 16 00 00 50 69 61 73\r
-65 63 6B 69 20 5A 56 2D 38 50 20 41 69 72 67 65\r
-65 70 08 00 00 48 61 73 65 67 61 77 61 05 00 00\r
-30 39 31 36 39 20 00 00 53 42 44 2D 33 20 44 61\r
-75 6E 74 6C 65 73 73 20 27 55 53 53 20 45 6E 74\r
-65 72 70 72 69 73 65 27 0C 00 00 53 69 6C 76 65\r
-72 20 43 6C 6F 75 64 06 00 00 53 43 34 38 30 31\r
-19 00 00 53 75 70 65 72 6D 61 72 69 6E 65 20 53\r
-70 69 74 65 66 75 6C 20 46 2E 31 34 06 00 00 52\r
-65 76 65 6C 6C 07 00 00 38 35 2D 31 36 35 34 0D\r
-00 00 50 2D 35 31 42 20 4D 75 73 74 61 6E 67 09\r
-00 00 50 72 6F 46 69 6E 69 73 68 06 00 00 44 72\r
-61 67 6F 6E 04 00 00 35 39 30 31 0B 00 00 46 6F\r
-6B 6B 65 72 20 44 72 2E 31 07 00 00 49 74 61 6C\r
-65 72 69 03 00 00 38 34 36 25 00 00 43 2D 31 33\r
-30 4A 20 48 65 72 63 75 6C 65 73 20 48 65 61 76\r
-79 20 54 72 61 6E 73 70 6F 72 74 20 50 6C 61 6E\r
-65 04 00 00 37 36 31 30 15 00 00 46 65 72 72 61\r
-72 69 20 46 35 30 20 42 61 72 63 68 65 74 74 61\r
-03 00 00 41 4D 54 08 00 00 54 33 37 34 2D 32 32\r
-35 0D 00 00 43 6F 72 76 61 69 72 20 4D 6F 6E 7A\r
-61 04 00 00 35 30 30 33 0B 00 00 4D 63 4C 61 72\r
-65 6E 20 4D 38 42 0D 00 00 52 65 76 65 6C 6C 20\r
-4C 6F 64 65 6C 61 05 00 00 48 2D 32 36 33 03 00\r
-00 75 6E 6B 23 00 00 42 6F 65 69 6E 67 20 53 53\r
-54 20 50 61 6E 41 6D 20 43 6C 69 70 70 65 72 20\r
-53 75 70 65 72 73 6F 6E 69 63 05 00 00 30 35 39\r
-30 39 05 00 00 31 2F 33 30 30 1D 00 00 4E 75 63\r
-6C 65 61 72 20 50 6F 77 65 72 65 64 20 53 70 61\r
-63 65 20 53 74 61 74 69 6F 6E 04 00 00 38 37 36\r
-34 06 00 00 31 2F 32 35 30 30 19 00 00 53 74 61\r
-72 20 54 72 65 6B 20 44 65 65 70 20 53 70 61 63\r
-65 20 4E 69 6E 65 23 00 00 46 69 62 65 72 2D 6F\r
-70 74 69 63 20 4C 69 67 68 74 69 6E 67 2C 20 73\r
-6B 69 6C 6C 20 6C 65 76 65 6C 20 33 0D 00 00 53\r
-6B 69 6C 6C 20 6C 65 76 65 6C 20 33 04 00 00 38\r
-31 35 38 16 00 00 42 6C 75 65 70 72 69 6E 74 65\r
-72 20 50 61 72 74 73 20 50 61 63 6B 13 00 00 45\r
-6E 67 69 6E 65 73 20 61 6E 64 20 67 72 69 6C 6C\r
-65 73 05 00 00 33 30 30 33 37 05 00 00 31 2F 32\r
-30 30 1E 00 00 4D 61 6E 20 49 6E 20 53 70 61 63\r
-65 20 52 6F 63 6B 65 74 20 43 6F 6C 6C 65 63 74\r
-69 6F 6E 53 00 00 4D 65 72 63 75 72 79 20 41 74\r
-6C 61 73 2C 20 4D 65 72 63 75 72 79 20 52 65 64\r
-73 74 6F 6E 65 2C 20 47 65 6D 69 6E 69 20 54 69\r
-74 61 6E 20 49 49 2C 20 53 61 74 75 72 6E 20 31\r
-42 20 41 70 6F 6C 6C 6F 2C 20 53 61 74 75 72 6E\r
-20 56 20 41 70 6F 6C 6C 6F 04 00 00 35 30 38 33\r
-04 00 00 31 2F 33 32 11 00 00 41 70 6F 6C 6C 6F\r
-20 53 70 61 63 65 63 72 61 66 74 09 00 00 4D 69\r
-6E 69 63 72 61 66 74 05 00 00 31 31 32 32 30 04\r
-00 00 31 2F 31 36 24 00 00 31 39 35 35 20 4D 65\r
-72 63 65 64 65 73 20 33 30 30 53 4C 20 22 47 75\r
-6C 6C 77 69 6E 67 22 20 43 6F 75 70 65 07 00 00\r
-38 35 2D 36 38 35 39 24 00 00 4D 75 73 74 61 6E\r
-67 20 4D 75 73 63 6C 65 20 54 72 69 6F 20 27 36\r
-30 73 2C 20 27 37 30 73 2C 20 27 38 30 73 35 00\r
-00 31 39 36 34 20 31 2F 32 20 43 6F 6E 76 65 72\r
-74 69 62 6C 65 2C 20 31 39 37 30 20 42 6F 73 73\r
-20 33 30 32 2C 20 31 39 38 39 20 43 6F 6E 76 65\r
-72 74 69 62 6C 65 06 00 00 54 61 6D 69 79 61 05\r
-00 00 32 34 31 37 30 0A 00 00 4D 6F 72 67 61 6E\r
-20 34 2F 34 07 00 00 38 35 2D 32 34 39 31 11 00\r
-00 36 37 20 43 6F 72 76 65 74 74 65 20 43 6F 75\r
-70 65 07 00 00 38 35 2D 32 35 33 34 0F 00 00 53\r
-68 65 6C 62 79 20 53 65 72 69 65 73 20 31 03 00\r
-00 35 36 32 11 00 00 41 73 74 6F 6E 20 4D 61 72\r
-74 69 6E 20 44 42 20 34 05 00 00 30 37 33 32 30\r
-13 00 00 50 6F 72 73 63 68 65 20 39 31 31 20 43\r
-61 72 72 65 72 61 07 00 00 54 65 73 74 6F 72 73\r
-03 00 00 33 38 36 04 00 00 32 39 37 32 16 00 00\r
-4D 65 72 63 65 64 65 73 20 33 30 30 20 53 4C 52\r
-20 22 37 32 32 22 08 00 00 4C 69 6E 64 62 65 72\r
-67 05 00 00 37 30 39 35 36 19 00 00 48 65 6C 6C\r
-63 61 74 73 20 76 73 2E 20 42 65 74 74 79 20 42\r
-6F 6D 62 65 72 0C 00 00 48 65 6C 6C 63 61 74 20\r
-6F 6E 6C 79 05 00 00 30 34 36 30 39 18 00 00 45\r
-6B 72 61 6E 6F 70 6C 61 6E 20 41 2D 39 30 20 4F\r
-72 6C 6A 6F 6E 6F 6B 05 00 00 31 31 36 32 36 18\r
-00 00 47 72 75 6D 6D 61 6E 20 58 46 35 46 2D 31\r
-20 53 6B 79 72 6F 63 6B 65 74 04 00 00 35 34 32\r
-30 0E 00 00 48 61 77 6B 65 72 20 48 61 72 72 69\r
-65 72 05 00 00 41 56 2D 38 41 06 00 00 65 64 75\r
-61 72 64 04 00 00 38 30 36 31 0F 00 00 50 2D 34\r
-30 30 20 41 69 72 61 63 6F 62 72 61 0B 00 00 43\r
-7A 65 63 68 20 4D 6F 64 65 6C 04 00 00 34 38 30\r
-36 16 00 00 43 75 72 74 69 73 73 20 58 50 2D 35\r
-35 20 41 73 63 65 6E 64 65 72 05 00 00 36 31 30\r
-37 34 14 00 00 44 6F 72 6E 69 65 72 20 44 6F 33\r
-33 35 41 20 50 66 69 65 6C 13 00 00 4B 79 75 73\r
-68 75 20 4A 37 57 31 20 53 68 69 6E 64 65 6E 0D\r
-00 00 50 6C 61 6E 65 74 20 4D 6F 64 65 6C 73 03\r
-00 00 30 34 33 0F 00 00 48 65 6E 73 63 68 65 6C\r
-20 48 73 20 50 38 37 05 00 00 52 65 73 69 6E 0D\r
-00 00 53 70 65 63 69 61 6C 20 48 6F 62 62 79 08\r
-00 00 53 48 20 34 38 30 30 33 16 00 00 4D 63 44\r
-6F 6E 6E 65 6C 6C 20 58 46 2D 38 35 20 47 6F 62\r
-6C 69 6E 2A 00 00 4D 65 73 73 65 72 73 63 68 6D\r
-69 74 74 20 42 66 31 30 39 45 20 27 42 75 6C 67\r
-61 72 69 61 6E 20 41 69 72 20 46 6F 72 63 65 27\r
-05 00 00 30 34 32 30 36 2D 00 00 41 69 72 62 75\r
-73 20 53 75 70 65 72 20 54 72 61 6E 73 70 6F 72\r
-74 65 72 20 41 33 30 30 2D 36 30 30 20 53 54 20\r
-22 42 65 6C 75 67 61 22 05 00 00 33 30 30 38 37\r
-0C 00 00 33 39 20 57 61 67 6F 6E 20 52 6F 64 04\r
-00 00 37 31 32 31 1A 00 00 31 39 33 32 20 46 6F\r
-72 64 20 48 69 67 68 62 6F 79 20 52 6F 61 64 73\r
-74 65 72 2E 00 00 4C 69 6E 63 6F 6C 6E 20 4D 69\r
-6E 74 20 55 6C 74 72 61 20 4D 65 74 61 6C 20 53\r
-65 72 69 65 73 2C 20 53 6B 69 6C 6C 20 6C 65 76\r
-65 6C 20 33 0C 00 00 50 6F 6C 61 72 20 4C 69 67\r
-68 74 73 04 00 00 35 30 31 34 21 00 00 43 61 72\r
-6C 20 43 61 73 70 65 72 27 73 20 55 6E 64 65 72\r
-74 61 6B 65 72 20 44 72 61 67 73 74 65 72 07 00\r
-00 38 35 2D 32 35 39 32 20 00 00 33 39 20 43 68\r
-65 76 79 20 53 65 64 61 6E 20 44 65 6C 69 76 65\r
-72 79 20 4C 6F 77 72 69 64 65 72 07 00 00 38 35\r
-2D 35 39 30 34 12 00 00 4E 41 53 41 20 53 70 61\r
-63 65 20 53 68 75 74 74 6C 65 04 00 00 32 34 30\r
-30 1C 00 00 31 39 32 36 20 4D 61 63 6B 20 42 75\r
-6C 6C 64 6F 67 20 44 75 6D 70 20 54 72 75 63 6B\r
-05 00 00 43 31 31 32 38 13 00 00 32 33 20 54 20\r
-52 6F 61 64 73 74 65 72 20 46 72 61 6D 65 05 00\r
-00 33 31 32 31 36 11 00 00 44 6F 64 67 65 20 56\r
-69 70 65 72 20 52 54 2D 31 30 07 00 00 50 72 6F\r
-53 68 6F 70 04 00 00 32 33 30 31 05 00 00 31 31\r
-32 31 32 26 00 00 31 39 33 35 20 4D 6F 72 67 61\r
-6E 20 53 75 70 65 72 20 53 70 6F 72 74 73 20 54\r
-68 72 65 65 20 57 68 65 65 6C 65 72 0C 00 00 47\r
-75 6E 7A 65 20 53 61 6E 67 79 6F 13 00 00 54 72\r
-69 75 6D 70 68 20 54 52 32 20 4C 65 20 4D 61 6E\r
-73 07 00 00 38 35 2D 31 39 31 31 0F 00 00 33 34\r
-20 46 6F 72 64 20 48 69 67 68 62 6F 79 17 00 00\r
-57 68 65 65 6C 73 20 6F 66 20 46 69 72 65 20 53\r
-6E 61 70 54 69 74 65 06 00 00 4A 6F 2D 48 61 6E\r
-06 00 00 47 43 2D 33 30 30 20 00 00 43 68 72 79\r
-73 6C 65 72 20 43 6F 72 70 6F 72 61 74 69 6F 6E\r
-20 54 75 72 62 69 6E 65 20 43 61 72 09 00 00 48\r
-31 32 38 35 3A 31 39 38 2B 00 00 54 6F 6D 6D 79\r
-20 49 76 6F 27 73 20 46 6F 75 72 20 45 6E 67 69\r
-6E 65 20 44 72 61 67 73 74 65 72 20 22 53 68 6F\r
-77 62 6F 61 74 22 09 00 00 48 31 32 32 34 3A 32\r
-30 30 17 00 00 32 32 20 4A 52 20 52 6F 61 64 73\r
-74 65 72 20 44 72 61 67 73 74 65 72 0F 00 00 32\r
-20 63 6F 6D 70 6C 65 74 65 20 63 61 72 73 04 00\r
-00 36 34 33 35 04 00 00 36 34 33 38 07 00 00 38\r
-35 2D 37 36 36 38 0F 00 00 34 31 20 43 68 65 76\r
-79 20 50 69 63 6B 75 70 04 00 00 36 35 38 35 17\r
-00 00 42 61 62 79 6C 6F 6E 20 35 20 53 74 61 72\r
-66 75 72 79 20 4D 6B 2E 31 1C 00 00 4D 65 73 73\r
-65 72 73 63 68 6D 69 74 74 20 42 66 31 30 39 45\r
-20 47 61 6C 6C 61 6E 64 05 00 00 36 31 30 36 37\r
-1B 00 00 42 72 69 73 74 6F 6C 20 42 65 61 75 66\r
-69 67 68 74 65 72 20 54 46 2E 4D 6B 2E 58 12 00\r
-00 48 65 6E 73 63 68 65 6C 20 48 73 20 31 32 39\r
-42 2D 32 04 00 00 33 34 31 39 0D 00 00 50 2D 35\r
-31 43 20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D\r
-35 35 30 39 1B 00 00 48 65 69 6E 6B 65 6C 20 48\r
-65 31 31 31 20 47 65 72 6D 61 6E 20 42 6F 6D 62\r
-65 72 11 00 00 41 63 61 64 65 6D 79 20 4D 69 6E\r
-69 63 72 61 66 74 04 00 00 32 31 34 35 1E 00 00\r
-4C 6F 63 6B 68 65 65 64 20 50 2D 33 38 4D 20 4E\r
-69 67 68 74 20 4C 69 67 68 74 6E 69 6E 67 07 00\r
-00 38 35 2D 30 31 33 35 11 00 00 4F 53 32 55 2D\r
-33 20 4B 69 6E 67 66 69 73 68 65 72 3B 00 00 41\r
-69 63 68 69 20 42 37 41 32 20 41 74 74 61 63 6B\r
-20 42 6F 6D 62 65 72 20 20 52 79 75 73 65 69 20\r
-4B 61 69 20 28 47 72 61 63 65 29 20 27 46 6F 6C\r
-64 69 6E 67 20 57 69 6E 67 27 15 00 00 58 46 35\r
-55 2D 31 20 46 6C 79 69 6E 67 20 50 61 6E 63 61\r
-6B 65 04 00 00 36 37 35 37 07 00 00 49 63 65 20\r
-27 54 27 07 00 00 38 35 2D 35 31 30 32 04 00 00\r
-53 68 69 70 15 00 00 55 2E 53 2E 53 2E 20 4E 6F\r
-72 74 68 20 43 61 72 6F 6C 69 6E 61 0E 00 00 50\r
-61 72 74 73 20 62 79 20 50 61 72 6B 73 04 00 00\r
-31 30 30 34 0F 00 00 44 69 73 74 72 69 62 75 74\r
-6F 72 20 4B 69 74 12 00 00 50 53 46 20 4D 6F 64\r
-65 6C 20 53 75 70 70 6C 69 65 73 07 00 00 45 4B\r
-44 31 30 30 30 1B 00 00 4D 6F 64 65 6C 20 43 61\r
-72 20 45 6E 67 69 6E 65 20 44 65 74 61 69 6C 20\r
-4B 69 74 04 00 00 38 34 33 35 1F 00 00 43 75 73\r
-74 6F 6D 20 26 20 43 6F 6D 70 65 74 69 74 69 6F\r
-6E 20 50 61 72 74 73 20 50 61 63 6B 04 00 00 54\r
-36 34 32 27 00 00 22 57 69 6E 6E 69 65 20 4D 61\r
-65 22 20 57 69 6C 65 79 20 50 6F 73 74 27 73 20\r
-4C 6F 63 6B 68 65 65 64 20 56 65 67 61 06 00 00\r
-41 69 72 66 69 78 05 00 00 30 34 31 37 36 0C 00\r
-00 44 48 20 43 6F 6D 65 74 20 34 20 42 07 00 00\r
-38 35 2D 34 31 36 32 1B 00 00 4F 72 61 6E 67 65\r
-20 43 72 61 74 65 20 27 33 32 20 46 6F 72 64 20\r
-53 65 64 61 6E 06 00 00 38 36 30 35 50 4F 14 00\r
-00 46 69 61 74 20 44 6F 75 62 6C 65 20 44 72 61\r
-67 73 74 65 72 0B 00 00 42 6C 75 65 70 72 69 6E\r
-74 65 72 06 00 00 48 2D 31 33 32 31 0C 00 00 47\r
-72 61 6E 20 54 75 72 69 73 6D 6F 07 00 00 38 35\r
-2D 37 36 33 37 15 00 00 33 31 20 46 6F 72 64 20\r
-4D 6F 64 65 6C 20 41 20 57 6F 6F 64 79 03 00 00\r
-4D 50 43 07 00 00 32 30 30 2D 32 30 30 16 00 00\r
-47 61 6E 67 62 75 73 74 65 72 73 20 32 38 20 4C\r
-69 6E 63 6F 6C 6E 07 00 00 38 35 2D 32 35 36 39\r
-19 00 00 43 68 65 76 79 20 53 2D 31 30 20 4C 6F\r
-77 72 69 64 65 72 20 33 27 6E 20 31 04 00 00 32\r
-32 31 31 04 00 00 35 35 30 35 1C 00 00 48 6F 72\r
-74 65 6E 20 48 6F 20 32 32 39 41 2D 31 20 46 6C\r
-79 69 6E 67 20 57 69 6E 67 05 00 00 30 35 32 30\r
-31 1C 00 00 4D 63 44 6F 6E 6E 65 6C 6C 20 58 56\r
-2D 31 20 43 6F 6E 76 65 72 74 69 70 6C 61 6E 65\r
-07 00 00 38 35 2D 35 38 31 30 0F 00 00 53 52 2D\r
-37 31 20 42 6C 61 63 6B 62 69 72 64 04 00 00 34\r
-35 32 32 19 00 00 4D 65 73 73 65 72 73 63 68 6D\r
-69 74 74 20 42 66 2D 31 30 39 20 47 2D 31 30 16\r
-00 00 50 72 65 6D 69 75 6D 2C 20 73 6B 69 6C 6C\r
-20 6C 65 76 65 6C 20 34 04 00 00 38 36 34 36 0B\r
-00 00 48 6F 62 62 79 20 43 72 61 66 74 06 00 00\r
-48 43 31 35 34 39 16 00 00 56 61 6D 70 69 72 65\r
-20 46 33 20 4A 65 74 20 46 69 67 68 74 65 72 04\r
-00 00 33 34 30 31 0B 00 00 41 2D 33 36 20 41 70\r
-61 63 68 65 05 00 00 30 34 33 33 35 15 00 00 42\r
-6C 6F 68 6D 20 26 20 56 6F 73 73 20 42 56 20 50\r
-2D 31 39 34 09 00 00 30 31 33 30 4D 30 31 30 30\r
-34 00 00 43 6F 72 64 20 50 68 61 65 74 6F 6E 20\r
-53 65 64 61 6E 20 31 39 33 37 20 38 31 32 20 53\r
-75 70 65 72 63 68 61 72 67 65 64 20 43 6F 6E 76\r
-65 72 74 69 62 6C 65 07 00 00 38 35 2D 32 35 37\r
-39 15 00 00 56 57 20 42 65 65 74 6C 65 20 43 6F\r
-6E 76 65 72 74 69 62 6C 65 04 00 00 37 34 33 38\r
-10 00 00 42 4D 57 20 5A 2D 31 20 52 6F 61 64 73\r
-74 65 72 04 00 00 36 31 34 38 0B 00 00 44 69 61\r
-62 6C 6F 20 41 65 72 6F 0B 00 00 55 6E 69 6F 6E\r
-20 4D 6F 64 65 6C 2B 00 00 50 65 74 65 20 42 72\r
-6F 63 6B 27 73 20 53 43 43 41 20 43 68 61 6D 70\r
-69 6F 6E 20 42 52 45 2F 44 61 74 73 75 6E 20 32\r
-34 30 2D 5A 05 00 00 32 34 31 32 39 0D 00 00 4A\r
-61 67 75 61 72 20 58 4A 20 32 32 30 05 00 00 30\r
-33 31 30 31 13 00 00 53 70 69 72 69 74 20 6F 66\r
-20 53 74 2E 20 4C 6F 75 69 73 05 00 00 30 36 31\r
-37 31 15 00 00 4F 72 69 6F 6E 20 32 30 30 31 20\r
-53 70 61 63 65 63 72 61 66 74 04 00 00 38 37 36\r
-36 05 00 00 31 2F 36 35 30 18 00 00 53 74 61 72\r
-20 54 72 65 6B 20 55 2E 53 2E 53 2E 20 52 65 6C\r
-69 61 6E 74 07 00 00 38 35 2D 31 38 33 35 15 00\r
-00 4E 41 53 41 2F 4D 63 44 6F 6E 6E 65 6C 6C 20\r
-47 65 6D 69 6E 69 04 00 00 31 39 39 37 24 00 00\r
-43 68 61 6E 67 20 5A 68 65 6E 67 20 32 20 28 43\r
-5A 2D 32 45 29 20 4C 61 75 6E 63 68 20 56 65 68\r
-69 63 6C 65 05 00 00 31 31 32 31 30 04 00 00 31\r
-2F 32 30 13 00 00 4D 61 6B 6F 20 53 68 61 72 6B\r
-20 53 68 6F 77 20 43 61 72 08 00 00 44 72 61 67\r
-73 74 65 72 08 00 00 4C 6F 77 72 69 64 65 72 04\r
-00 00 36 30 36 36 2F 00 00 57 69 6C 64 20 57 69\r
-6C 6C 69 65 20 42 6F 72 73 63 68 20 22 57 69 6E\r
-67 65 64 20 45 78 70 72 65 73 73 22 20 41 6C 74\r
-65 72 65 64 20 52 6F 64 04 00 00 36 31 38 32 0F\r
-00 00 31 39 33 33 20 57 69 6C 6C 79 73 20 56 61\r
-6E 07 00 00 38 35 2D 30 35 34 30 34 00 00 49 6E\r
-61 75 67 75 72 61 6C 20 4D 41 54 43 4F 20 54 6F\r
-6F 6C 73 20 53 75 70 65 72 6E 61 74 69 6F 6E 61\r
-6C 73 20 4E 69 74 72 6F 20 46 75 6E 6E 79 20 43\r
-61 72 04 00 00 36 33 35 35 1E 00 00 31 39 35 37\r
-20 43 68 65 76 72 6F 6C 65 74 20 43 6F 72 76 65\r
-74 74 65 20 47 61 73 73 65 72 07 00 00 38 35 2D\r
-37 36 37 35 04 00 00 50 43 36 31 2A 00 00 47 72\r
-65 65 6E 20 48 6F 72 6E 65 74 20 46 6F 72 64 20\r
-22 54 22 20 53 68 6F 77 20 61 6E 64 20 47 6F 20\r
-52 6F 61 64 73 74 65 72 04 00 00 38 32 31 35 18\r
-00 00 31 39 34 30 20 46 6F 72 64 20 53 65 64 61\r
-6E 20 44 65 6C 69 76 65 72 79 07 00 00 38 35 2D\r
-37 36 32 38 16 00 00 33 37 20 46 6F 72 64 20 50\r
-61 6E 65 6C 20 44 65 6C 69 76 65 72 79 04 00 00\r
-31 32 39 34 10 00 00 47 79 70 73 79 20 44 75 6E\r
-65 20 42 75 67 67 79 06 00 00 48 2D 31 32 33 31\r
-23 00 00 43 68 72 79 73 6C 65 72 20 4E 65 77 20\r
-59 6F 72 6B 65 72 20 43 75 73 74 6F 6D 69 7A 69\r
-6E 67 20 4B 69 74 05 00 00 33 30 30 38 31 0E 00\r
-00 36 32 20 54 68 75 6E 64 65 72 62 69 72 64 04\r
-00 00 36 38 39 39 11 00 00 31 39 33 32 20 46 6F\r
-72 64 20 50 68 61 65 74 6F 6E 05 00 00 33 30 32\r
-37 30 0D 00 00 31 39 36 38 20 50 6C 79 6D 6F 75\r
-74 68 04 00 00 38 38 34 32 17 00 00 47 72 75 6D\r
-6D 61 6E 20 46 37 46 2D 33 4E 20 54 69 67 65 72\r
-63 61 74 04 00 00 48 32 34 34 14 00 00 4D 61 72\r
-74 69 6E 20 50 36 4D 20 53 65 61 6D 61 73 74 65\r
-72 04 00 00 35 35 30 30 0E 00 00 42 2D 32 35 48\r
-20 4D 69 74 63 68 65 6C 6C 04 00 00 33 34 30 32\r
-0D 00 00 50 2D 35 31 41 20 4D 75 73 74 61 6E 67\r
-04 00 00 36 34 32 31 3E 00 00 44 61 6D 62 75 73\r
-74 65 72 20 47 72 61 6E 64 20 53 6C 61 6D 20 42\r
-6F 6D 62 65 72 20 4C 61 6E 63 61 73 74 65 72 20\r
-42 49 20 53 70 65 63 69 61 6C 20 32 32 30 30 30\r
-6C 62 2E 20 42 6F 6D 62 05 00 00 31 34 34 34 33\r
-1E 00 00 4C 6F 63 6B 68 65 65 64 20 53 75 70 65\r
-72 2D 47 20 43 6F 6E 73 74 65 6C 6C 61 74 69 6F\r
-6E 04 00 00 35 36 31 30 13 00 00 57 69 6C 6C 69\r
-61 6D 73 20 42 72 6F 73 2E 20 49 6E 63 2E 07 00\r
-00 34 38 2D 33 31 39 31 10 00 00 43 6F 72 62 65\r
-6E 20 53 75 70 65 72 2D 41 63 65 05 00 00 30 35\r
-30 30 32 10 00 00 52 65 74 72 69 65 76 65 72 20\r
-52 6F 63 6B 65 74 03 00 00 43 61 72 04 00 00 38\r
-35 38 38 1D 00 00 50 6C 79 6D 6F 75 74 68 20 50\r
-72 6F 77 6C 65 72 20 77 69 74 68 20 54 72 61 69\r
-6C 65 72 04 00 00 35 30 30 31 14 00 00 43 6F 72\r
-76 65 74 74 65 20 47 72 61 6E 64 20 53 70 6F 72\r
-74 04 00 00 37 31 30 38 1D 00 00 43 6F 72 76 65\r
-74 74 65 20 49 6E 64 79 20 22 44 72 65 61 6D 20\r
-4D 61 63 68 69 6E 65 22 04 00 00 38 30 35 39 0C\r
-00 00 54 68 65 20 4D 75 6E 73 74 65 72 73 20 00\r
-00 42 6C 75 65 70 72 69 6E 74 65 72 3B 20 4D 75\r
-6E 73 74 65 72 73 20 4B 6F 61 63 68 20 6F 6E 6C\r
-79 07 00 00 38 35 2D 34 31 36 36 05 00 00 43 6F\r
-75 6E 74 3C 00 00 77 2F 43 75 74 74 69 6E 67 20\r
-45 64 67 65 20 43 45 43 34 38 30 38 36 20 48 65\r
-31 31 31 5A 20 22 5A 77 69 6C 6C 69 6E 67 22 20\r
-6B 69 74 2C 20 73 6B 69 6C 6C 20 6C 65 76 65 6C\r
-20 33 07 00 00 38 35 2D 37 36 36 36 23 00 00 43\r
-75 73 74 6F 6D 20 53 69 6C 76 65 72 61 64 6F 20\r
-61 6E 64 20 57 61 76 65 72 69 64 65 72 20 42 6F\r
-61 74 07 00 00 38 35 2D 36 38 35 38 16 00 00 53\r
-6E 61 6B 65 20 26 20 4D 6F 6E 67 6F 6F 73 65 20\r
-43 6F 6D 62 6F 07 00 00 38 35 2D 34 31 35 39 24\r
-00 00 4A 6F 65 20 41 6D 61 74 6F 20 53 75 70 65\r
-72 6D 61 6E 20 54 6F 70 20 46 75 65 6C 20 44 72\r
-61 67 73 74 65 72 04 00 00 37 35 34 31 0D 00 00\r
-53 6B 69 6C 6C 20 6C 65 76 65 6C 20 35 09 00 00\r
-48 38 32 35 2D 31 30 44 30 28 00 00 43 6F 63 61\r
-20 43 6F 6C 61 20 46 6F 72 64 20 4C 6F 75 69 73\r
-76 69 6C 6C 65 20 44 65 6C 69 76 65 72 79 20 54\r
-72 75 63 6B 07 00 00 38 35 2D 32 31 35 36 04 00\r
-00 32 39 35 34 0B 00 00 50 6F 72 73 63 68 65 20\r
-39 30 34 04 00 00 32 39 33 35 25 00 00 4C 61 6D\r
-62 6F 72 67 68 69 6E 69 20 43 6F 75 6E 74 61 63\r
-68 20 32 35 74 68 20 41 6E 6E 69 76 65 72 73 61\r
-72 79 07 00 00 38 35 2D 37 36 31 36 1F 00 00 41\r
-6D 65 72 69 63 61 6E 20 49 6E 74 65 72 6E 61 74\r
-69 6F 6E 61 6C 20 44 72 61 67 73 74 65 72 07 00\r
-00 38 35 2D 35 32 34 31 0D 00 00 50 2D 35 31 44\r
-20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D 35 37\r
-31 30 11 00 00 52 42 2D 33 36 48 20 50 65 61 63\r
-65 6D 61 6B 65 72 05 00 00 30 35 31 30 34 14 00\r
-00 52 65 70 75 62 6C 69 63 20 52 43 2E 33 20 53\r
-65 61 62 65 65 05 00 00 50 41 31 35 32 05 00 00\r
-36 31 30 36 36 25 00 00 44 65 48 61 76 69 6C 6C\r
-61 6E 64 20 4D 6F 73 71 75 69 74 6F 20 42 20 4D\r
-6B 2E 49 56 2F 50 52 20 4D 6B 2E 49 56 07 00 00\r
-38 35 2D 37 35 34 36 10 00 00 50 2D 36 31 20 42\r
-6C 61 63 6B 20 57 69 64 6F 77 07 00 00 38 35 2D\r
-36 36 35 32 25 00 00 42 2D 31 37 46 20 46 6C 79\r
-69 6E 67 20 46 6F 72 74 72 65 73 73 20 22 4D 65\r
-6D 70 68 69 73 20 42 65 6C 6C 65 22 04 00 00 37\r
-35 30 30 0D 00 00 47 61 74 65 73 20 4C 65 61 72\r
-6A 65 74 03 00 00 35 31 39 15 00 00 47 72 75 6D\r
-6D 61 6E 20 46 38 46 2D 32 20 42 65 61 72 63 61\r
-74 04 00 00 37 35 32 33 12 00 00 46 2D 31 30 34\r
-43 20 53 74 61 72 66 69 67 68 74 65 72 05 00 00\r
-36 31 30 37 30 15 00 00 56 6F 75 67 68 74 20 46\r
-34 55 2D 31 41 20 43 6F 72 73 61 69 72 07 00 00\r
-38 35 2D 37 36 36 34 19 00 00 42 61 6C 64 77 69\r
-6E 2D 4D 6F 74 69 6F 6E 20 44 72 61 67 20 43 6F\r
-62 72 61 04 00 00 38 34 35 35 14 00 00 35 37 20\r
-43 68 65 76 72 6F 6C 65 74 20 42 65 6C 20 41 69\r
-72 16 00 00 50 72 6F 53 68 6F 70 2C 20 73 6B 69\r
-6C 6C 20 6C 65 76 65 6C 20 33 05 00 00 33 30 30\r
-35 32 0D 00 00 34 31 20 46 6F 72 64 20 57 6F 6F\r
-64 79 07 00 00 38 35 2D 32 35 35 37 19 00 00 36\r
-30 20 43 68 65 76 79 20 48 61 72 64 74 6F 70 20\r
-4C 6F 77 72 69 64 65 72 07 00 00 38 35 2D 37 36\r
-33 38 09 00 00 41 65 72 6F 76 65 74 74 65 07 00\r
-00 38 35 2D 30 30 39 34 1B 00 00 4C 69 27 6C 20\r
-43 6F 66 66 69 6E 20 43 75 73 74 6F 6D 20 53 68\r
-6F 77 20 52 6F 64 04 00 00 38 32 39 30 0A 00 00\r
-53 27 43 6F 6F 6C 20 42 75 73 07 00 00 38 35 2D\r
-32 35 39 37 12 00 00 53 74 72 65 65 74 20 46 69\r
-67 68 74 65 72 20 54 77 6F 04 00 00 37 36 30 39\r
-12 00 00 54 68 61 6D 65 73 20 50 61 6E 65 6C 20\r
-54 72 75 63 6B 07 00 00 38 35 2D 37 36 30 36 15\r
-00 00 44 61 6E 20 46 69 6E 6B 27 73 20 53 70 65\r
-65 64 77 61 67 6F 6E 05 00 00 30 35 35 30 35 1A\r
-00 00 4D 61 72 74 69 6E 20 4D 2D 31 33 30 20 43\r
-68 69 6E 61 20 43 6C 69 70 70 65 72 07 00 00 38\r
-35 2D 30 30 31 35 0E 00 00 46 6F 72 64 20 54 72\r
-69 2D 4D 6F 74 6F 72 04 00 00 50 41 33 30 1A 00\r
-00 57 72 69 67 68 74 20 42 72 6F 74 68 65 72 73\r
-20 4B 69 74 74 79 20 48 61 77 6B 07 00 00 38 35\r
-2D 35 30 38 31 13 00 00 46 69 72 73 74 20 4C 75\r
-6E 61 72 20 4C 61 6E 64 69 6E 67 07 00 00 38 35\r
-2D 35 38 33 39 18 00 00 4D 65 73 73 65 72 73 63\r
-68 6D 69 74 74 20 42 66 20 31 31 30 20 47 2D 32\r
-04 00 00 43 48 34 31 04 00 00 4A 30 30 34 05 00\r
-00 4A 54 31 32 33 04 00 00 4A 54 32 32 04 00 00\r
-4A 54 37 31 04 00 00 53 50 36 33 04 00 00 42 54\r
-31 36 0C 00 00 4F 56 2D 31 42 20 4D 6F 68 61 77\r
-6B 03 00 00 30 36 38 0B 00 00 56 2D 32 32 20 4F\r
-73 70 72 65 79 04 00 00 38 36 31 35 13 00 00 58\r
-2F 59 42 2D 33 35 20 46 6C 79 69 6E 67 20 57 69\r
-6E 67 05 00 00 31 31 32 30 38 1B 00 00 31 39 33\r
-33 20 43 61 64 69 6C 6C 61 63 20 56 2D 31 36 20\r
-54 6F 77 6E 20 43 61 72 04 00 00 36 36 31 38 27\r
-00 00 53 74 61 72 20 54 72 65 6B 20 33 20 50 69\r
-65 63 65 20 55 2E 53 2E 53 2E 20 45 6E 74 65 72\r
-70 72 69 73 65 20 53 65 74 12 00 00 4D 69 73 73\r
-69 6E 67 20 54 56 20 76 65 72 73 69 6F 6E 04 00\r
-00 38 39 31 35 0E 00 00 53 74 61 72 20 44 65 73\r
-74 72 6F 79 65 72 04 00 00 38 31 39 33 0A 00 00\r
-44 65 61 74 68 20 53 74 61 72 08 00 00 53 6E 61\r
-70 54 69 74 65 07 00 00 38 35 2D 33 36 32 31 07\r
-00 00 38 35 2D 33 36 32 32 17 00 00 42 61 62 79\r
-6C 6F 6E 20 35 20 53 70 61 63 65 20 53 74 61 74\r
-69 6F 6E 04 00 00 36 38 35 38 1F 00 00 53 74 61\r
-72 20 54 72 65 6B 20 33 20 50 69 65 63 65 20 41\r
-64 76 65 72 73 61 72 79 20 53 65 74 04 00 00 38\r
-37 36 32 06 00 00 31 2F 31 30 30 30 29 00 00 53\r
-74 61 72 20 54 72 65 6B 20 47 65 6E 65 72 61 74\r
-69 6F 6E 73 20 55 2E 53 2E 53 2E 20 45 6E 74 65\r
-72 70 72 69 73 65 20 42 04 00 00 38 38 38 33 03\r
-00 00 31 2F 34 05 00 00 4F 74 68 65 72 12 00 00\r
-56 69 73 69 62 6C 65 20 56 2D 38 20 45 6E 67 69\r
-6E 65 04 00 00 37 31 32 30 1C 00 00 31 39 36 39\r
-20 50 6F 6E 74 69 61 63 20 47 54 4F 20 22 54 68\r
-65 20 4A 75 64 67 65 22 09 00 00 31 2F 32 34 2D\r
-31 2F 32 35 05 00 00 31 2F 31 33 30 05 00 00 31\r
-2F 35 37 30 05 00 00 54 6F 20 64 6F 33 00 00 47\r
-75 73 20 47 72 69 73 73 6F 6D 20 4D 65 6D 6F 72\r
-69 61 6C 20 43 6F 6D 62 6F 20 77 2F 54 77 6F 20\r
-43 6F 6C 6C 65 63 74 6F 72 73 20 50 61 74 63 68\r
-65 73 09 00 00 46 69 72 65 20 49 72 6F 6E 0C 00\r
-00 77 2F 64 65 74 61 69 6C 20 73 65 74 2C 00 00\r
-77 2F 64 65 74 61 69 6C 20 73 65 74 20 61 6E 64\r
-20 69 6E 74 65 72 69 6F 72 20 73 65 74 2C 20 72\r
-65 73 69 6E 20 65 6E 67 69 6E 65 73 03 00 00 49\r
-43 4D 0E 00 00 53 70 69 74 66 69 72 65 20 4D 6B\r
-2E 49 58 1A 00 00 4D 65 73 73 65 72 73 63 68 6D\r
-69 74 74 20 4D 65 20 34 31 30 42 2D 32 2F 55 34\r
-0A 00 00 4D 6F 64 65 6C 63 72 61 66 74 12 00 00\r
-46 2D 38 32 42 20 54 77 69 6E 20 4D 75 73 74 61\r
-6E 67 1F 00 00 31 39 35 33 20 53 74 75 64 65 62\r
-61 6B 65 72 20 53 74 61 72 6C 69 6E 65 72 20 43\r
-6F 75 70 65 04 00 00 32 34 33 36 0E 00 00 42 75\r
-67 61 74 74 69 20 45 42 20 31 31 30 2D 00 00 53\r
-74 61 72 20 54 72 65 6B 20 4B 6C 69 6E 67 6F 6E\r
-20 42 69 72 64 20 6F 66 20 50 72 65 79 20 46 6C\r
-69 67 68 74 20 44 69 73 70 6C 61 79 16 00 00 50\r
-6F 72 73 63 68 65 20 39 31 31 20 53 6C 61 6E 74\r
-20 4E 6F 73 65 05 00 00 36 31 30 37 33 25 00 00\r
-44 6F 75 67 6C 61 73 20 41 2D 31 4A 20 53 6B 79\r
-72 61 69 64 65 72 20 55 2E 53 2E 20 41 69 72 20\r
-46 6F 72 63 65 04 00 00 36 33 33 39 04 00 00 36\r
-39 35 35 04 00 00 37 35 33 30 06 00 00 34 38 2D\r
-30 32 30 05 00 00 31 2F 34 35 30 0F 00 00 55 2E\r
-53 2E 53 2E 20 4D 69 73 73 6F 75 72 69 05 00 00\r
-36 31 30 35 37 15 00 00 48 65 69 6E 6B 65 6C 20\r
-48 65 32 31 39 20 41 2D 37 20 55 48 55 05 00 00\r
-36 31 30 34 31 05 00 00 31 31 36 32 34 32 00 00\r
-43 6F 6E 73 6F 6C 69 64 61 74 65 64 20 42 2D 32\r
-34 4A 20 4C 69 62 65 72 61 74 6F 72 20 54 68 65\r
-20 44 72 61 67 6F 6E 20 26 20 48 69 73 20 54 61\r
-69\r
+FC 00 20
+20 B8 05 00 00 B0 02 00 00 0C 00 00 4D 61 6E 75
+66 61 63 74 75 72 65 72 0B 00 00 50 61 72 74 20
+4E 75 6D 62 65 72 05 00 00 53 63 61 6C 65 04 00
+00 54 79 70 65 04 00 00 4E 61 6D 65 08 00 00 43
+6F 6D 6D 65 6E 74 73 08 00 00 41 4D 54 2D 45 52
+54 4C 07 00 00 48 6F 74 20 52 6F 64 10 00 00 33
+32 20 46 6F 72 64 20 52 6F 61 64 73 74 65 72 08
+00 00 4D 6F 6E 6F 67 72 61 6D 08 00 00 53 68 6F
+77 20 52 6F 64 07 00 00 48 61 6E 67 6D 61 6E 11
+00 00 50 65 74 65 72 62 69 6C 74 20 57 72 65 63
+6B 65 72 15 00 00 45 61 73 74 65 72 6E 20 41 69
+72 6C 69 6E 65 73 20 44 43 2D 33 11 00 00 4D 61
+73 65 72 61 74 69 20 4D 65 72 61 6B 20 53 53 1A
+00 00 44 6F 75 67 6C 61 73 20 50 2D 37 30 20 4E
+69 67 68 74 20 46 69 67 68 74 65 72 17 00 00 35
+35 20 43 68 65 76 79 20 53 74 72 65 65 74 20 4D
+61 63 68 69 6E 65 0C 00 00 54 77 65 65 64 79 20
+50 69 65 20 32 13 00 00 48 75 65 79 20 52 65 73
+63 75 65 20 43 68 6F 70 70 65 72 10 00 00 4D 61
+7A 64 61 20 4D 58 2D 35 20 4D 69 61 74 61 0A 00
+00 53 70 6F 72 74 73 20 43 61 72 05 00 00 54 72
+75 63 6B 06 00 00 52 6F 63 6B 65 74 09 00 00 50
+61 72 74 73 20 4B 69 74 0E 00 00 43 69 76 69 6C
+69 61 6E 20 50 6C 61 6E 65 0E 00 00 4D 69 6C 69
+74 61 72 79 20 50 6C 61 6E 65 0F 00 00 53 63 69
+65 6E 63 65 20 46 69 63 74 69 6F 6E 1A 00 00 44
+6F 6E 20 47 61 72 6C 69 74 73 20 57 79 6E 6E 27
+73 20 43 68 61 72 67 65 72 19 00 00 44 6F 6E 20
+47 61 72 6C 69 74 73 20 57 79 6E 6E 27 73 20 4A
+61 6D 6D 65 72 1A 00 00 50 61 63 6B 61 72 64 20
+42 6F 61 74 74 61 69 6C 20 53 70 65 65 64 73 74
+65 72 0E 00 00 52 65 76 65 6C 6C 20 47 65 72 6D
+61 6E 79 05 00 00 30 34 31 34 36 04 00 00 31 2F
+32 34 04 00 00 31 2F 37 32 0E 00 00 4D 65 20 32
+36 32 20 41 2D 31 61 2F 55 33 09 00 00 53 54 43
+20 53 74 61 72 74 04 00 00 34 63 2D 39 05 00 00
+31 2F 32 38 38 0C 00 00 50 72 6F 74 6F 6E 2D 4B
+20 4D 69 72 04 00 00 34 63 2D 37 0E 00 00 50 72
+6F 74 6F 6E 2D 4B 20 41 73 74 72 61 05 00 00 34
+63 2D 31 37 0E 00 00 50 72 6F 74 6F 6E 2D 4B 20
+5A 61 72 79 61 13 00 00 41 63 63 75 72 61 74 65
+20 4D 69 6E 69 61 74 75 72 65 73 04 00 00 33 34
+32 30 04 00 00 31 2F 34 38 0F 00 00 53 42 44 2D
+31 20 44 61 75 6E 74 6C 65 73 73 1B 00 00 77 2F
+56 65 72 6C 69 6E 64 65 6E 20 31 33 37 38 20 44
+65 74 61 69 6C 20 53 65 74 04 00 00 38 32 38 33
+0C 00 00 54 72 6F 75 62 6C 65 6D 61 6B 65 72 04
+00 00 32 37 33 37 0E 00 00 44 61 79 74 6F 6E 61
+20 53 70 69 64 65 72 04 00 00 38 31 32 36 04 00
+00 31 2F 32 35 06 00 00 48 65 6C 6C 65 72 05 00
+00 38 30 34 34 33 05 00 00 31 2F 31 34 34 12 00
+00 42 72 65 69 74 6C 69 6E 20 4F 72 62 69 74 65
+72 20 33 0F 00 00 53 68 61 6E 67 68 61 69 20 44
+72 61 67 6F 6E 04 00 00 31 39 39 38 04 00 00 31
+2F 39 36 0F 00 00 41 72 69 61 6E 65 20 35 20 52
+6F 63 6B 65 74 0F 00 00 52 65 76 65 6C 6C 2D 4D
+6F 6E 6F 67 72 61 6D 07 00 00 38 35 2D 35 39 33
+34 0F 00 00 50 42 59 2D 35 41 20 43 61 74 61 6C
+69 6E 61 0A 00 00 50 72 6F 4D 6F 64 65 6C 65 72
+07 00 00 47 6C 65 6E 63 6F 65 05 00 00 30 35 32
+30 32 04 00 00 31 2F 33 35 16 00 00 50 69 61 73
+65 63 6B 69 20 5A 56 2D 38 50 20 41 69 72 67 65
+65 70 08 00 00 48 61 73 65 67 61 77 61 05 00 00
+30 39 31 36 39 20 00 00 53 42 44 2D 33 20 44 61
+75 6E 74 6C 65 73 73 20 27 55 53 53 20 45 6E 74
+65 72 70 72 69 73 65 27 0C 00 00 53 69 6C 76 65
+72 20 43 6C 6F 75 64 06 00 00 53 43 34 38 30 31
+19 00 00 53 75 70 65 72 6D 61 72 69 6E 65 20 53
+70 69 74 65 66 75 6C 20 46 2E 31 34 06 00 00 52
+65 76 65 6C 6C 07 00 00 38 35 2D 31 36 35 34 0D
+00 00 50 2D 35 31 42 20 4D 75 73 74 61 6E 67 09
+00 00 50 72 6F 46 69 6E 69 73 68 06 00 00 44 72
+61 67 6F 6E 04 00 00 35 39 30 31 0B 00 00 46 6F
+6B 6B 65 72 20 44 72 2E 31 07 00 00 49 74 61 6C
+65 72 69 03 00 00 38 34 36 25 00 00 43 2D 31 33
+30 4A 20 48 65 72 63 75 6C 65 73 20 48 65 61 76
+79 20 54 72 61 6E 73 70 6F 72 74 20 50 6C 61 6E
+65 04 00 00 37 36 31 30 15 00 00 46 65 72 72 61
+72 69 20 46 35 30 20 42 61 72 63 68 65 74 74 61
+03 00 00 41 4D 54 08 00 00 54 33 37 34 2D 32 32
+35 0D 00 00 43 6F 72 76 61 69 72 20 4D 6F 6E 7A
+61 04 00 00 35 30 30 33 0B 00 00 4D 63 4C 61 72
+65 6E 20 4D 38 42 0D 00 00 52 65 76 65 6C 6C 20
+4C 6F 64 65 6C 61 05 00 00 48 2D 32 36 33 03 00
+00 75 6E 6B 23 00 00 42 6F 65 69 6E 67 20 53 53
+54 20 50 61 6E 41 6D 20 43 6C 69 70 70 65 72 20
+53 75 70 65 72 73 6F 6E 69 63 05 00 00 30 35 39
+30 39 05 00 00 31 2F 33 30 30 1D 00 00 4E 75 63
+6C 65 61 72 20 50 6F 77 65 72 65 64 20 53 70 61
+63 65 20 53 74 61 74 69 6F 6E 04 00 00 38 37 36
+34 06 00 00 31 2F 32 35 30 30 19 00 00 53 74 61
+72 20 54 72 65 6B 20 44 65 65 70 20 53 70 61 63
+65 20 4E 69 6E 65 23 00 00 46 69 62 65 72 2D 6F
+70 74 69 63 20 4C 69 67 68 74 69 6E 67 2C 20 73
+6B 69 6C 6C 20 6C 65 76 65 6C 20 33 0D 00 00 53
+6B 69 6C 6C 20 6C 65 76 65 6C 20 33 04 00 00 38
+31 35 38 16 00 00 42 6C 75 65 70 72 69 6E 74 65
+72 20 50 61 72 74 73 20 50 61 63 6B 13 00 00 45
+6E 67 69 6E 65 73 20 61 6E 64 20 67 72 69 6C 6C
+65 73 05 00 00 33 30 30 33 37 05 00 00 31 2F 32
+30 30 1E 00 00 4D 61 6E 20 49 6E 20 53 70 61 63
+65 20 52 6F 63 6B 65 74 20 43 6F 6C 6C 65 63 74
+69 6F 6E 53 00 00 4D 65 72 63 75 72 79 20 41 74
+6C 61 73 2C 20 4D 65 72 63 75 72 79 20 52 65 64
+73 74 6F 6E 65 2C 20 47 65 6D 69 6E 69 20 54 69
+74 61 6E 20 49 49 2C 20 53 61 74 75 72 6E 20 31
+42 20 41 70 6F 6C 6C 6F 2C 20 53 61 74 75 72 6E
+20 56 20 41 70 6F 6C 6C 6F 04 00 00 35 30 38 33
+04 00 00 31 2F 33 32 11 00 00 41 70 6F 6C 6C 6F
+20 53 70 61 63 65 63 72 61 66 74 09 00 00 4D 69
+6E 69 63 72 61 66 74 05 00 00 31 31 32 32 30 04
+00 00 31 2F 31 36 24 00 00 31 39 35 35 20 4D 65
+72 63 65 64 65 73 20 33 30 30 53 4C 20 22 47 75
+6C 6C 77 69 6E 67 22 20 43 6F 75 70 65 07 00 00
+38 35 2D 36 38 35 39 24 00 00 4D 75 73 74 61 6E
+67 20 4D 75 73 63 6C 65 20 54 72 69 6F 20 27 36
+30 73 2C 20 27 37 30 73 2C 20 27 38 30 73 35 00
+00 31 39 36 34 20 31 2F 32 20 43 6F 6E 76 65 72
+74 69 62 6C 65 2C 20 31 39 37 30 20 42 6F 73 73
+20 33 30 32 2C 20 31 39 38 39 20 43 6F 6E 76 65
+72 74 69 62 6C 65 06 00 00 54 61 6D 69 79 61 05
+00 00 32 34 31 37 30 0A 00 00 4D 6F 72 67 61 6E
+20 34 2F 34 07 00 00 38 35 2D 32 34 39 31 11 00
+00 36 37 20 43 6F 72 76 65 74 74 65 20 43 6F 75
+70 65 07 00 00 38 35 2D 32 35 33 34 0F 00 00 53
+68 65 6C 62 79 20 53 65 72 69 65 73 20 31 03 00
+00 35 36 32 11 00 00 41 73 74 6F 6E 20 4D 61 72
+74 69 6E 20 44 42 20 34 05 00 00 30 37 33 32 30
+13 00 00 50 6F 72 73 63 68 65 20 39 31 31 20 43
+61 72 72 65 72 61 07 00 00 54 65 73 74 6F 72 73
+03 00 00 33 38 36 04 00 00 32 39 37 32 16 00 00
+4D 65 72 63 65 64 65 73 20 33 30 30 20 53 4C 52
+20 22 37 32 32 22 08 00 00 4C 69 6E 64 62 65 72
+67 05 00 00 37 30 39 35 36 19 00 00 48 65 6C 6C
+63 61 74 73 20 76 73 2E 20 42 65 74 74 79 20 42
+6F 6D 62 65 72 0C 00 00 48 65 6C 6C 63 61 74 20
+6F 6E 6C 79 05 00 00 30 34 36 30 39 18 00 00 45
+6B 72 61 6E 6F 70 6C 61 6E 20 41 2D 39 30 20 4F
+72 6C 6A 6F 6E 6F 6B 05 00 00 31 31 36 32 36 18
+00 00 47 72 75 6D 6D 61 6E 20 58 46 35 46 2D 31
+20 53 6B 79 72 6F 63 6B 65 74 04 00 00 35 34 32
+30 0E 00 00 48 61 77 6B 65 72 20 48 61 72 72 69
+65 72 05 00 00 41 56 2D 38 41 06 00 00 65 64 75
+61 72 64 04 00 00 38 30 36 31 0F 00 00 50 2D 34
+30 30 20 41 69 72 61 63 6F 62 72 61 0B 00 00 43
+7A 65 63 68 20 4D 6F 64 65 6C 04 00 00 34 38 30
+36 16 00 00 43 75 72 74 69 73 73 20 58 50 2D 35
+35 20 41 73 63 65 6E 64 65 72 05 00 00 36 31 30
+37 34 14 00 00 44 6F 72 6E 69 65 72 20 44 6F 33
+33 35 41 20 50 66 69 65 6C 13 00 00 4B 79 75 73
+68 75 20 4A 37 57 31 20 53 68 69 6E 64 65 6E 0D
+00 00 50 6C 61 6E 65 74 20 4D 6F 64 65 6C 73 03
+00 00 30 34 33 0F 00 00 48 65 6E 73 63 68 65 6C
+20 48 73 20 50 38 37 05 00 00 52 65 73 69 6E 0D
+00 00 53 70 65 63 69 61 6C 20 48 6F 62 62 79 08
+00 00 53 48 20 34 38 30 30 33 16 00 00 4D 63 44
+6F 6E 6E 65 6C 6C 20 58 46 2D 38 35 20 47 6F 62
+6C 69 6E 2A 00 00 4D 65 73 73 65 72 73 63 68 6D
+69 74 74 20 42 66 31 30 39 45 20 27 42 75 6C 67
+61 72 69 61 6E 20 41 69 72 20 46 6F 72 63 65 27
+05 00 00 30 34 32 30 36 2D 00 00 41 69 72 62 75
+73 20 53 75 70 65 72 20 54 72 61 6E 73 70 6F 72
+74 65 72 20 41 33 30 30 2D 36 30 30 20 53 54 20
+22 42 65 6C 75 67 61 22 05 00 00 33 30 30 38 37
+0C 00 00 33 39 20 57 61 67 6F 6E 20 52 6F 64 04
+00 00 37 31 32 31 1A 00 00 31 39 33 32 20 46 6F
+72 64 20 48 69 67 68 62 6F 79 20 52 6F 61 64 73
+74 65 72 2E 00 00 4C 69 6E 63 6F 6C 6E 20 4D 69
+6E 74 20 55 6C 74 72 61 20 4D 65 74 61 6C 20 53
+65 72 69 65 73 2C 20 53 6B 69 6C 6C 20 6C 65 76
+65 6C 20 33 0C 00 00 50 6F 6C 61 72 20 4C 69 67
+68 74 73 04 00 00 35 30 31 34 21 00 00 43 61 72
+6C 20 43 61 73 70 65 72 27 73 20 55 6E 64 65 72
+74 61 6B 65 72 20 44 72 61 67 73 74 65 72 07 00
+00 38 35 2D 32 35 39 32 20 00 00 33 39 20 43 68
+65 76 79 20 53 65 64 61 6E 20 44 65 6C 69 76 65
+72 79 20 4C 6F 77 72 69 64 65 72 07 00 00 38 35
+2D 35 39 30 34 12 00 00 4E 41 53 41 20 53 70 61
+63 65 20 53 68 75 74 74 6C 65 04 00 00 32 34 30
+30 1C 00 00 31 39 32 36 20 4D 61 63 6B 20 42 75
+6C 6C 64 6F 67 20 44 75 6D 70 20 54 72 75 63 6B
+05 00 00 43 31 31 32 38 13 00 00 32 33 20 54 20
+52 6F 61 64 73 74 65 72 20 46 72 61 6D 65 05 00
+00 33 31 32 31 36 11 00 00 44 6F 64 67 65 20 56
+69 70 65 72 20 52 54 2D 31 30 07 00 00 50 72 6F
+53 68 6F 70 04 00 00 32 33 30 31 05 00 00 31 31
+32 31 32 26 00 00 31 39 33 35 20 4D 6F 72 67 61
+6E 20 53 75 70 65 72 20 53 70 6F 72 74 73 20 54
+68 72 65 65 20 57 68 65 65 6C 65 72 0C 00 00 47
+75 6E 7A 65 20 53 61 6E 67 79 6F 13 00 00 54 72
+69 75 6D 70 68 20 54 52 32 20 4C 65 20 4D 61 6E
+73 07 00 00 38 35 2D 31 39 31 31 0F 00 00 33 34
+20 46 6F 72 64 20 48 69 67 68 62 6F 79 17 00 00
+57 68 65 65 6C 73 20 6F 66 20 46 69 72 65 20 53
+6E 61 70 54 69 74 65 06 00 00 4A 6F 2D 48 61 6E
+06 00 00 47 43 2D 33 30 30 20 00 00 43 68 72 79
+73 6C 65 72 20 43 6F 72 70 6F 72 61 74 69 6F 6E
+20 54 75 72 62 69 6E 65 20 43 61 72 09 00 00 48
+31 32 38 35 3A 31 39 38 2B 00 00 54 6F 6D 6D 79
+20 49 76 6F 27 73 20 46 6F 75 72 20 45 6E 67 69
+6E 65 20 44 72 61 67 73 74 65 72 20 22 53 68 6F
+77 62 6F 61 74 22 09 00 00 48 31 32 32 34 3A 32
+30 30 17 00 00 32 32 20 4A 52 20 52 6F 61 64 73
+74 65 72 20 44 72 61 67 73 74 65 72 0F 00 00 32
+20 63 6F 6D 70 6C 65 74 65 20 63 61 72 73 04 00
+00 36 34 33 35 04 00 00 36 34 33 38 07 00 00 38
+35 2D 37 36 36 38 0F 00 00 34 31 20 43 68 65 76
+79 20 50 69 63 6B 75 70 04 00 00 36 35 38 35 17
+00 00 42 61 62 79 6C 6F 6E 20 35 20 53 74 61 72
+66 75 72 79 20 4D 6B 2E 31 1C 00 00 4D 65 73 73
+65 72 73 63 68 6D 69 74 74 20 42 66 31 30 39 45
+20 47 61 6C 6C 61 6E 64 05 00 00 36 31 30 36 37
+1B 00 00 42 72 69 73 74 6F 6C 20 42 65 61 75 66
+69 67 68 74 65 72 20 54 46 2E 4D 6B 2E 58 12 00
+00 48 65 6E 73 63 68 65 6C 20 48 73 20 31 32 39
+42 2D 32 04 00 00 33 34 31 39 0D 00 00 50 2D 35
+31 43 20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D
+35 35 30 39 1B 00 00 48 65 69 6E 6B 65 6C 20 48
+65 31 31 31 20 47 65 72 6D 61 6E 20 42 6F 6D 62
+65 72 11 00 00 41 63 61 64 65 6D 79 20 4D 69 6E
+69 63 72 61 66 74 04 00 00 32 31 34 35 1E 00 00
+4C 6F 63 6B 68 65 65 64 20 50 2D 33 38 4D 20 4E
+69 67 68 74 20 4C 69 67 68 74 6E 69 6E 67 07 00
+00 38 35 2D 30 31 33 35 11 00 00 4F 53 32 55 2D
+33 20 4B 69 6E 67 66 69 73 68 65 72 3B 00 00 41
+69 63 68 69 20 42 37 41 32 20 41 74 74 61 63 6B
+20 42 6F 6D 62 65 72 20 20 52 79 75 73 65 69 20
+4B 61 69 20 28 47 72 61 63 65 29 20 27 46 6F 6C
+64 69 6E 67 20 57 69 6E 67 27 15 00 00 58 46 35
+55 2D 31 20 46 6C 79 69 6E 67 20 50 61 6E 63 61
+6B 65 04 00 00 36 37 35 37 07 00 00 49 63 65 20
+27 54 27 07 00 00 38 35 2D 35 31 30 32 04 00 00
+53 68 69 70 15 00 00 55 2E 53 2E 53 2E 20 4E 6F
+72 74 68 20 43 61 72 6F 6C 69 6E 61 0E 00 00 50
+61 72 74 73 20 62 79 20 50 61 72 6B 73 04 00 00
+31 30 30 34 0F 00 00 44 69 73 74 72 69 62 75 74
+6F 72 20 4B 69 74 12 00 00 50 53 46 20 4D 6F 64
+65 6C 20 53 75 70 70 6C 69 65 73 07 00 00 45 4B
+44 31 30 30 30 1B 00 00 4D 6F 64 65 6C 20 43 61
+72 20 45 6E 67 69 6E 65 20 44 65 74 61 69 6C 20
+4B 69 74 04 00 00 38 34 33 35 1F 00 00 43 75 73
+74 6F 6D 20 26 20 43 6F 6D 70 65 74 69 74 69 6F
+6E 20 50 61 72 74 73 20 50 61 63 6B 04 00 00 54
+36 34 32 27 00 00 22 57 69 6E 6E 69 65 20 4D 61
+65 22 20 57 69 6C 65 79 20 50 6F 73 74 27 73 20
+4C 6F 63 6B 68 65 65 64 20 56 65 67 61 06 00 00
+41 69 72 66 69 78 05 00 00 30 34 31 37 36 0C 00
+00 44 48 20 43 6F 6D 65 74 20 34 20 42 07 00 00
+38 35 2D 34 31 36 32 1B 00 00 4F 72 61 6E 67 65
+20 43 72 61 74 65 20 27 33 32 20 46 6F 72 64 20
+53 65 64 61 6E 06 00 00 38 36 30 35 50 4F 14 00
+00 46 69 61 74 20 44 6F 75 62 6C 65 20 44 72 61
+67 73 74 65 72 0B 00 00 42 6C 75 65 70 72 69 6E
+74 65 72 06 00 00 48 2D 31 33 32 31 0C 00 00 47
+72 61 6E 20 54 75 72 69 73 6D 6F 07 00 00 38 35
+2D 37 36 33 37 15 00 00 33 31 20 46 6F 72 64 20
+4D 6F 64 65 6C 20 41 20 57 6F 6F 64 79 03 00 00
+4D 50 43 07 00 00 32 30 30 2D 32 30 30 16 00 00
+47 61 6E 67 62 75 73 74 65 72 73 20 32 38 20 4C
+69 6E 63 6F 6C 6E 07 00 00 38 35 2D 32 35 36 39
+19 00 00 43 68 65 76 79 20 53 2D 31 30 20 4C 6F
+77 72 69 64 65 72 20 33 27 6E 20 31 04 00 00 32
+32 31 31 04 00 00 35 35 30 35 1C 00 00 48 6F 72
+74 65 6E 20 48 6F 20 32 32 39 41 2D 31 20 46 6C
+79 69 6E 67 20 57 69 6E 67 05 00 00 30 35 32 30
+31 1C 00 00 4D 63 44 6F 6E 6E 65 6C 6C 20 58 56
+2D 31 20 43 6F 6E 76 65 72 74 69 70 6C 61 6E 65
+07 00 00 38 35 2D 35 38 31 30 0F 00 00 53 52 2D
+37 31 20 42 6C 61 63 6B 62 69 72 64 04 00 00 34
+35 32 32 19 00 00 4D 65 73 73 65 72 73 63 68 6D
+69 74 74 20 42 66 2D 31 30 39 20 47 2D 31 30 16
+00 00 50 72 65 6D 69 75 6D 2C 20 73 6B 69 6C 6C
+20 6C 65 76 65 6C 20 34 04 00 00 38 36 34 36 0B
+00 00 48 6F 62 62 79 20 43 72 61 66 74 06 00 00
+48 43 31 35 34 39 16 00 00 56 61 6D 70 69 72 65
+20 46 33 20 4A 65 74 20 46 69 67 68 74 65 72 04
+00 00 33 34 30 31 0B 00 00 41 2D 33 36 20 41 70
+61 63 68 65 05 00 00 30 34 33 33 35 15 00 00 42
+6C 6F 68 6D 20 26 20 56 6F 73 73 20 42 56 20 50
+2D 31 39 34 09 00 00 30 31 33 30 4D 30 31 30 30
+34 00 00 43 6F 72 64 20 50 68 61 65 74 6F 6E 20
+53 65 64 61 6E 20 31 39 33 37 20 38 31 32 20 53
+75 70 65 72 63 68 61 72 67 65 64 20 43 6F 6E 76
+65 72 74 69 62 6C 65 07 00 00 38 35 2D 32 35 37
+39 15 00 00 56 57 20 42 65 65 74 6C 65 20 43 6F
+6E 76 65 72 74 69 62 6C 65 04 00 00 37 34 33 38
+10 00 00 42 4D 57 20 5A 2D 31 20 52 6F 61 64 73
+74 65 72 04 00 00 36 31 34 38 0B 00 00 44 69 61
+62 6C 6F 20 41 65 72 6F 0B 00 00 55 6E 69 6F 6E
+20 4D 6F 64 65 6C 2B 00 00 50 65 74 65 20 42 72
+6F 63 6B 27 73 20 53 43 43 41 20 43 68 61 6D 70
+69 6F 6E 20 42 52 45 2F 44 61 74 73 75 6E 20 32
+34 30 2D 5A 05 00 00 32 34 31 32 39 0D 00 00 4A
+61 67 75 61 72 20 58 4A 20 32 32 30 05 00 00 30
+33 31 30 31 13 00 00 53 70 69 72 69 74 20 6F 66
+20 53 74 2E 20 4C 6F 75 69 73 05 00 00 30 36 31
+37 31 15 00 00 4F 72 69 6F 6E 20 32 30 30 31 20
+53 70 61 63 65 63 72 61 66 74 04 00 00 38 37 36
+36 05 00 00 31 2F 36 35 30 18 00 00 53 74 61 72
+20 54 72 65 6B 20 55 2E 53 2E 53 2E 20 52 65 6C
+69 61 6E 74 07 00 00 38 35 2D 31 38 33 35 15 00
+00 4E 41 53 41 2F 4D 63 44 6F 6E 6E 65 6C 6C 20
+47 65 6D 69 6E 69 04 00 00 31 39 39 37 24 00 00
+43 68 61 6E 67 20 5A 68 65 6E 67 20 32 20 28 43
+5A 2D 32 45 29 20 4C 61 75 6E 63 68 20 56 65 68
+69 63 6C 65 05 00 00 31 31 32 31 30 04 00 00 31
+2F 32 30 13 00 00 4D 61 6B 6F 20 53 68 61 72 6B
+20 53 68 6F 77 20 43 61 72 08 00 00 44 72 61 67
+73 74 65 72 08 00 00 4C 6F 77 72 69 64 65 72 04
+00 00 36 30 36 36 2F 00 00 57 69 6C 64 20 57 69
+6C 6C 69 65 20 42 6F 72 73 63 68 20 22 57 69 6E
+67 65 64 20 45 78 70 72 65 73 73 22 20 41 6C 74
+65 72 65 64 20 52 6F 64 04 00 00 36 31 38 32 0F
+00 00 31 39 33 33 20 57 69 6C 6C 79 73 20 56 61
+6E 07 00 00 38 35 2D 30 35 34 30 34 00 00 49 6E
+61 75 67 75 72 61 6C 20 4D 41 54 43 4F 20 54 6F
+6F 6C 73 20 53 75 70 65 72 6E 61 74 69 6F 6E 61
+6C 73 20 4E 69 74 72 6F 20 46 75 6E 6E 79 20 43
+61 72 04 00 00 36 33 35 35 1E 00 00 31 39 35 37
+20 43 68 65 76 72 6F 6C 65 74 20 43 6F 72 76 65
+74 74 65 20 47 61 73 73 65 72 07 00 00 38 35 2D
+37 36 37 35 04 00 00 50 43 36 31 2A 00 00 47 72
+65 65 6E 20 48 6F 72 6E 65 74 20 46 6F 72 64 20
+22 54 22 20 53 68 6F 77 20 61 6E 64 20 47 6F 20
+52 6F 61 64 73 74 65 72 04 00 00 38 32 31 35 18
+00 00 31 39 34 30 20 46 6F 72 64 20 53 65 64 61
+6E 20 44 65 6C 69 76 65 72 79 07 00 00 38 35 2D
+37 36 32 38 16 00 00 33 37 20 46 6F 72 64 20 50
+61 6E 65 6C 20 44 65 6C 69 76 65 72 79 04 00 00
+31 32 39 34 10 00 00 47 79 70 73 79 20 44 75 6E
+65 20 42 75 67 67 79 06 00 00 48 2D 31 32 33 31
+23 00 00 43 68 72 79 73 6C 65 72 20 4E 65 77 20
+59 6F 72 6B 65 72 20 43 75 73 74 6F 6D 69 7A 69
+6E 67 20 4B 69 74 05 00 00 33 30 30 38 31 0E 00
+00 36 32 20 54 68 75 6E 64 65 72 62 69 72 64 04
+00 00 36 38 39 39 11 00 00 31 39 33 32 20 46 6F
+72 64 20 50 68 61 65 74 6F 6E 05 00 00 33 30 32
+37 30 0D 00 00 31 39 36 38 20 50 6C 79 6D 6F 75
+74 68 04 00 00 38 38 34 32 17 00 00 47 72 75 6D
+6D 61 6E 20 46 37 46 2D 33 4E 20 54 69 67 65 72
+63 61 74 04 00 00 48 32 34 34 14 00 00 4D 61 72
+74 69 6E 20 50 36 4D 20 53 65 61 6D 61 73 74 65
+72 04 00 00 35 35 30 30 0E 00 00 42 2D 32 35 48
+20 4D 69 74 63 68 65 6C 6C 04 00 00 33 34 30 32
+0D 00 00 50 2D 35 31 41 20 4D 75 73 74 61 6E 67
+04 00 00 36 34 32 31 3E 00 00 44 61 6D 62 75 73
+74 65 72 20 47 72 61 6E 64 20 53 6C 61 6D 20 42
+6F 6D 62 65 72 20 4C 61 6E 63 61 73 74 65 72 20
+42 49 20 53 70 65 63 69 61 6C 20 32 32 30 30 30
+6C 62 2E 20 42 6F 6D 62 05 00 00 31 34 34 34 33
+1E 00 00 4C 6F 63 6B 68 65 65 64 20 53 75 70 65
+72 2D 47 20 43 6F 6E 73 74 65 6C 6C 61 74 69 6F
+6E 04 00 00 35 36 31 30 13 00 00 57 69 6C 6C 69
+61 6D 73 20 42 72 6F 73 2E 20 49 6E 63 2E 07 00
+00 34 38 2D 33 31 39 31 10 00 00 43 6F 72 62 65
+6E 20 53 75 70 65 72 2D 41 63 65 05 00 00 30 35
+30 30 32 10 00 00 52 65 74 72 69 65 76 65 72 20
+52 6F 63 6B 65 74 03 00 00 43 61 72 04 00 00 38
+35 38 38 1D 00 00 50 6C 79 6D 6F 75 74 68 20 50
+72 6F 77 6C 65 72 20 77 69 74 68 20 54 72 61 69
+6C 65 72 04 00 00 35 30 30 31 14 00 00 43 6F 72
+76 65 74 74 65 20 47 72 61 6E 64 20 53 70 6F 72
+74 04 00 00 37 31 30 38 1D 00 00 43 6F 72 76 65
+74 74 65 20 49 6E 64 79 20 22 44 72 65 61 6D 20
+4D 61 63 68 69 6E 65 22 04 00 00 38 30 35 39 0C
+00 00 54 68 65 20 4D 75 6E 73 74 65 72 73 20 00
+00 42 6C 75 65 70 72 69 6E 74 65 72 3B 20 4D 75
+6E 73 74 65 72 73 20 4B 6F 61 63 68 20 6F 6E 6C
+79 07 00 00 38 35 2D 34 31 36 36 05 00 00 43 6F
+75 6E 74 3C 00 00 77 2F 43 75 74 74 69 6E 67 20
+45 64 67 65 20 43 45 43 34 38 30 38 36 20 48 65
+31 31 31 5A 20 22 5A 77 69 6C 6C 69 6E 67 22 20
+6B 69 74 2C 20 73 6B 69 6C 6C 20 6C 65 76 65 6C
+20 33 07 00 00 38 35 2D 37 36 36 36 23 00 00 43
+75 73 74 6F 6D 20 53 69 6C 76 65 72 61 64 6F 20
+61 6E 64 20 57 61 76 65 72 69 64 65 72 20 42 6F
+61 74 07 00 00 38 35 2D 36 38 35 38 16 00 00 53
+6E 61 6B 65 20 26 20 4D 6F 6E 67 6F 6F 73 65 20
+43 6F 6D 62 6F 07 00 00 38 35 2D 34 31 35 39 24
+00 00 4A 6F 65 20 41 6D 61 74 6F 20 53 75 70 65
+72 6D 61 6E 20 54 6F 70 20 46 75 65 6C 20 44 72
+61 67 73 74 65 72 04 00 00 37 35 34 31 0D 00 00
+53 6B 69 6C 6C 20 6C 65 76 65 6C 20 35 09 00 00
+48 38 32 35 2D 31 30 44 30 28 00 00 43 6F 63 61
+20 43 6F 6C 61 20 46 6F 72 64 20 4C 6F 75 69 73
+76 69 6C 6C 65 20 44 65 6C 69 76 65 72 79 20 54
+72 75 63 6B 07 00 00 38 35 2D 32 31 35 36 04 00
+00 32 39 35 34 0B 00 00 50 6F 72 73 63 68 65 20
+39 30 34 04 00 00 32 39 33 35 25 00 00 4C 61 6D
+62 6F 72 67 68 69 6E 69 20 43 6F 75 6E 74 61 63
+68 20 32 35 74 68 20 41 6E 6E 69 76 65 72 73 61
+72 79 07 00 00 38 35 2D 37 36 31 36 1F 00 00 41
+6D 65 72 69 63 61 6E 20 49 6E 74 65 72 6E 61 74
+69 6F 6E 61 6C 20 44 72 61 67 73 74 65 72 07 00
+00 38 35 2D 35 32 34 31 0D 00 00 50 2D 35 31 44
+20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D 35 37
+31 30 11 00 00 52 42 2D 33 36 48 20 50 65 61 63
+65 6D 61 6B 65 72 05 00 00 30 35 31 30 34 14 00
+00 52 65 70 75 62 6C 69 63 20 52 43 2E 33 20 53
+65 61 62 65 65 05 00 00 50 41 31 35 32 05 00 00
+36 31 30 36 36 25 00 00 44 65 48 61 76 69 6C 6C
+61 6E 64 20 4D 6F 73 71 75 69 74 6F 20 42 20 4D
+6B 2E 49 56 2F 50 52 20 4D 6B 2E 49 56 07 00 00
+38 35 2D 37 35 34 36 10 00 00 50 2D 36 31 20 42
+6C 61 63 6B 20 57 69 64 6F 77 07 00 00 38 35 2D
+36 36 35 32 25 00 00 42 2D 31 37 46 20 46 6C 79
+69 6E 67 20 46 6F 72 74 72 65 73 73 20 22 4D 65
+6D 70 68 69 73 20 42 65 6C 6C 65 22 04 00 00 37
+35 30 30 0D 00 00 47 61 74 65 73 20 4C 65 61 72
+6A 65 74 03 00 00 35 31 39 15 00 00 47 72 75 6D
+6D 61 6E 20 46 38 46 2D 32 20 42 65 61 72 63 61
+74 04 00 00 37 35 32 33 12 00 00 46 2D 31 30 34
+43 20 53 74 61 72 66 69 67 68 74 65 72 05 00 00
+36 31 30 37 30 15 00 00 56 6F 75 67 68 74 20 46
+34 55 2D 31 41 20 43 6F 72 73 61 69 72 07 00 00
+38 35 2D 37 36 36 34 19 00 00 42 61 6C 64 77 69
+6E 2D 4D 6F 74 69 6F 6E 20 44 72 61 67 20 43 6F
+62 72 61 04 00 00 38 34 35 35 14 00 00 35 37 20
+43 68 65 76 72 6F 6C 65 74 20 42 65 6C 20 41 69
+72 16 00 00 50 72 6F 53 68 6F 70 2C 20 73 6B 69
+6C 6C 20 6C 65 76 65 6C 20 33 05 00 00 33 30 30
+35 32 0D 00 00 34 31 20 46 6F 72 64 20 57 6F 6F
+64 79 07 00 00 38 35 2D 32 35 35 37 19 00 00 36
+30 20 43 68 65 76 79 20 48 61 72 64 74 6F 70 20
+4C 6F 77 72 69 64 65 72 07 00 00 38 35 2D 37 36
+33 38 09 00 00 41 65 72 6F 76 65 74 74 65 07 00
+00 38 35 2D 30 30 39 34 1B 00 00 4C 69 27 6C 20
+43 6F 66 66 69 6E 20 43 75 73 74 6F 6D 20 53 68
+6F 77 20 52 6F 64 04 00 00 38 32 39 30 0A 00 00
+53 27 43 6F 6F 6C 20 42 75 73 07 00 00 38 35 2D
+32 35 39 37 12 00 00 53 74 72 65 65 74 20 46 69
+67 68 74 65 72 20 54 77 6F 04 00 00 37 36 30 39
+12 00 00 54 68 61 6D 65 73 20 50 61 6E 65 6C 20
+54 72 75 63 6B 07 00 00 38 35 2D 37 36 30 36 15
+00 00 44 61 6E 20 46 69 6E 6B 27 73 20 53 70 65
+65 64 77 61 67 6F 6E 05 00 00 30 35 35 30 35 1A
+00 00 4D 61 72 74 69 6E 20 4D 2D 31 33 30 20 43
+68 69 6E 61 20 43 6C 69 70 70 65 72 07 00 00 38
+35 2D 30 30 31 35 0E 00 00 46 6F 72 64 20 54 72
+69 2D 4D 6F 74 6F 72 04 00 00 50 41 33 30 1A 00
+00 57 72 69 67 68 74 20 42 72 6F 74 68 65 72 73
+20 4B 69 74 74 79 20 48 61 77 6B 07 00 00 38 35
+2D 35 30 38 31 13 00 00 46 69 72 73 74 20 4C 75
+6E 61 72 20 4C 61 6E 64 69 6E 67 07 00 00 38 35
+2D 35 38 33 39 18 00 00 4D 65 73 73 65 72 73 63
+68 6D 69 74 74 20 42 66 20 31 31 30 20 47 2D 32
+04 00 00 43 48 34 31 04 00 00 4A 30 30 34 05 00
+00 4A 54 31 32 33 04 00 00 4A 54 32 32 04 00 00
+4A 54 37 31 04 00 00 53 50 36 33 04 00 00 42 54
+31 36 0C 00 00 4F 56 2D 31 42 20 4D 6F 68 61 77
+6B 03 00 00 30 36 38 0B 00 00 56 2D 32 32 20 4F
+73 70 72 65 79 04 00 00 38 36 31 35 13 00 00 58
+2F 59 42 2D 33 35 20 46 6C 79 69 6E 67 20 57 69
+6E 67 05 00 00 31 31 32 30 38 1B 00 00 31 39 33
+33 20 43 61 64 69 6C 6C 61 63 20 56 2D 31 36 20
+54 6F 77 6E 20 43 61 72 04 00 00 36 36 31 38 27
+00 00 53 74 61 72 20 54 72 65 6B 20 33 20 50 69
+65 63 65 20 55 2E 53 2E 53 2E 20 45 6E 74 65 72
+70 72 69 73 65 20 53 65 74 12 00 00 4D 69 73 73
+69 6E 67 20 54 56 20 76 65 72 73 69 6F 6E 04 00
+00 38 39 31 35 0E 00 00 53 74 61 72 20 44 65 73
+74 72 6F 79 65 72 04 00 00 38 31 39 33 0A 00 00
+44 65 61 74 68 20 53 74 61 72 08 00 00 53 6E 61
+70 54 69 74 65 07 00 00 38 35 2D 33 36 32 31 07
+00 00 38 35 2D 33 36 32 32 17 00 00 42 61 62 79
+6C 6F 6E 20 35 20 53 70 61 63 65 20 53 74 61 74
+69 6F 6E 04 00 00 36 38 35 38 1F 00 00 53 74 61
+72 20 54 72 65 6B 20 33 20 50 69 65 63 65 20 41
+64 76 65 72 73 61 72 79 20 53 65 74 04 00 00 38
+37 36 32 06 00 00 31 2F 31 30 30 30 29 00 00 53
+74 61 72 20 54 72 65 6B 20 47 65 6E 65 72 61 74
+69 6F 6E 73 20 55 2E 53 2E 53 2E 20 45 6E 74 65
+72 70 72 69 73 65 20 42 04 00 00 38 38 38 33 03
+00 00 31 2F 34 05 00 00 4F 74 68 65 72 12 00 00
+56 69 73 69 62 6C 65 20 56 2D 38 20 45 6E 67 69
+6E 65 04 00 00 37 31 32 30 1C 00 00 31 39 36 39
+20 50 6F 6E 74 69 61 63 20 47 54 4F 20 22 54 68
+65 20 4A 75 64 67 65 22 09 00 00 31 2F 32 34 2D
+31 2F 32 35 05 00 00 31 2F 31 33 30 05 00 00 31
+2F 35 37 30 05 00 00 54 6F 20 64 6F 33 00 00 47
+75 73 20 47 72 69 73 73 6F 6D 20 4D 65 6D 6F 72
+69 61 6C 20 43 6F 6D 62 6F 20 77 2F 54 77 6F 20
+43 6F 6C 6C 65 63 74 6F 72 73 20 50 61 74 63 68
+65 73 09 00 00 46 69 72 65 20 49 72 6F 6E 0C 00
+00 77 2F 64 65 74 61 69 6C 20 73 65 74 2C 00 00
+77 2F 64 65 74 61 69 6C 20 73 65 74 20 61 6E 64
+20 69 6E 74 65 72 69 6F 72 20 73 65 74 2C 20 72
+65 73 69 6E 20 65 6E 67 69 6E 65 73 03 00 00 49
+43 4D 0E 00 00 53 70 69 74 66 69 72 65 20 4D 6B
+2E 49 58 1A 00 00 4D 65 73 73 65 72 73 63 68 6D
+69 74 74 20 4D 65 20 34 31 30 42 2D 32 2F 55 34
+0A 00 00 4D 6F 64 65 6C 63 72 61 66 74 12 00 00
+46 2D 38 32 42 20 54 77 69 6E 20 4D 75 73 74 61
+6E 67 1F 00 00 31 39 35 33 20 53 74 75 64 65 62
+61 6B 65 72 20 53 74 61 72 6C 69 6E 65 72 20 43
+6F 75 70 65 04 00 00 32 34 33 36 0E 00 00 42 75
+67 61 74 74 69 20 45 42 20 31 31 30 2D 00 00 53
+74 61 72 20 54 72 65 6B 20 4B 6C 69 6E 67 6F 6E
+20 42 69 72 64 20 6F 66 20 50 72 65 79 20 46 6C
+69 67 68 74 20 44 69 73 70 6C 61 79 16 00 00 50
+6F 72 73 63 68 65 20 39 31 31 20 53 6C 61 6E 74
+20 4E 6F 73 65 05 00 00 36 31 30 37 33 25 00 00
+44 6F 75 67 6C 61 73 20 41 2D 31 4A 20 53 6B 79
+72 61 69 64 65 72 20 55 2E 53 2E 20 41 69 72 20
+46 6F 72 63 65 04 00 00 36 33 33 39 04 00 00 36
+39 35 35 04 00 00 37 35 33 30 06 00 00 34 38 2D
+30 32 30 05 00 00 31 2F 34 35 30 0F 00 00 55 2E
+53 2E 53 2E 20 4D 69 73 73 6F 75 72 69 05 00 00
+36 31 30 35 37 15 00 00 48 65 69 6E 6B 65 6C 20
+48 65 32 31 39 20 41 2D 37 20 55 48 55 05 00 00
+36 31 30 34 31 05 00 00 31 31 36 32 34 32 00 00
+43 6F 6E 73 6F 6C 69 64 61 74 65 64 20 42 2D 32
+34 4A 20 4C 69 62 65 72 61 74 6F 72 20 54 68 65
+20 44 72 61 67 6F 6E 20 26 20 48 69 73 20 54 61
+69