From f3e6137e013b22da68c1ff66dd8e6133f1b561b9 Mon Sep 17 00:00:00 2001 From: Ugo Cei Date: Wed, 28 Oct 2009 16:05:39 +0000 Subject: [PATCH] [47942] added implementation of protection features to XLSX and DOCX files. Patch submitted by Roberto Albertini. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@830657 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 2 + .../apache/poi/xssf/usermodel/XSSFSheet.java | 307 +++++++++++++++++- .../poi/xssf/usermodel/XSSFWorkbook.java | 92 ++++++ .../poi/xwpf/usermodel/XWPFDocument.java | 152 ++++++++- .../poi/xwpf/usermodel/XWPFRelation.java | 2 +- .../poi/xwpf/usermodel/XWPFSettings.java | 135 ++++++++ .../apache/poi/xssf/TestSheetProtection.java | 231 +++++++++++++ .../poi/xssf/TestWorkbookProtection.java | 109 +++++++ .../poi/xwpf/TestDocumentProtection.java | 153 +++++++++ ...cumentProtection_comments_no_password.docx | Bin 0 -> 9868 bytes .../documentProtection_forms_no_password.docx | Bin 0 -> 9924 bytes .../documentProtection_no_protection.docx | Bin 0 -> 9884 bytes ...Protection_no_protection_tag_existing.docx | Bin 0 -> 9923 bytes ...cumentProtection_readonly_no_password.docx | Bin 0 -> 9856 bytes ...Protection_trackedChanges_no_password.docx | Bin 0 -> 9940 bytes test-data/document/protected_sample.docx | Bin 0 -> 10082 bytes .../sheetProtection_allLocked.xlsx | Bin 0 -> 7871 bytes .../sheetProtection_not_protected.xlsx | Bin 0 -> 28728 bytes .../workbookProtection_not_protected.xlsx | Bin 0 -> 28728 bytes ...rotection_workbook_revision_protected.xlsx | Bin 0 -> 12468 bytes ...otection_workbook_structure_protected.xlsx | Bin 0 -> 28727 bytes ...Protection_workbook_windows_protected.xlsx | Bin 0 -> 28739 bytes ...orkbookProtection_worksheet_protected.xlsx | Bin 0 -> 28754 bytes 23 files changed, 1179 insertions(+), 4 deletions(-) create mode 100644 src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java create mode 100644 src/ooxml/testcases/org/apache/poi/xssf/TestSheetProtection.java create mode 100644 src/ooxml/testcases/org/apache/poi/xssf/TestWorkbookProtection.java create mode 100644 src/ooxml/testcases/org/apache/poi/xwpf/TestDocumentProtection.java create mode 100644 test-data/document/documentProtection_comments_no_password.docx create mode 100644 test-data/document/documentProtection_forms_no_password.docx create mode 100644 test-data/document/documentProtection_no_protection.docx create mode 100644 test-data/document/documentProtection_no_protection_tag_existing.docx create mode 100644 test-data/document/documentProtection_readonly_no_password.docx create mode 100644 test-data/document/documentProtection_trackedChanges_no_password.docx create mode 100644 test-data/document/protected_sample.docx create mode 100644 test-data/spreadsheet/sheetProtection_allLocked.xlsx create mode 100644 test-data/spreadsheet/sheetProtection_not_protected.xlsx create mode 100644 test-data/spreadsheet/workbookProtection_not_protected.xlsx create mode 100644 test-data/spreadsheet/workbookProtection_workbook_revision_protected.xlsx create mode 100644 test-data/spreadsheet/workbookProtection_workbook_structure_protected.xlsx create mode 100644 test-data/spreadsheet/workbookProtection_workbook_windows_protected.xlsx create mode 100644 test-data/spreadsheet/workbookProtection_worksheet_protected.xlsx diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 76eafe8e2a..209d8ae8d8 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -28,11 +28,13 @@ + + 47942 - added implementation of protection features to XLSX and DOCX files 48070 - preserve leading and trailing white spaces in XSSFRichTextString 48044 - added implementation for CountBlank function 48036 - added IntersectionEval to allow evaluation of the intersection formula operator diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index b5a70286a2..76dfabc8e8 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -78,6 +78,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetData; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetFormatPr; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetPr; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetProtection; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetView; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetViews; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet; @@ -857,7 +858,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { * @return true => protection enabled; false => protection disabled */ public boolean getProtect() { - return worksheet.isSetSheetProtection() && worksheet.getSheetProtection().getSheet(); + return worksheet.isSetSheetProtection() && sheetProtectionEnabled(); } /** @@ -2332,4 +2333,308 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { worksheet.save(out, xmlOptions); } + + /** + * @return true when Autofilters are locked and the sheet is protected. + */ + public boolean isAutoFilterLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getAutoFilter(); + } + + /** + * @return true when Deleting columns is locked and the sheet is protected. + */ + public boolean isDeleteColumnsLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getDeleteColumns(); + } + + /** + * @return true when Deleting rows is locked and the sheet is protected. + */ + public boolean isDeleteRowsLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getDeleteRows(); + } + + /** + * @return true when Formatting cells is locked and the sheet is protected. + */ + public boolean isFormatCellsLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getFormatCells(); + } + + /** + * @return true when Formatting columns is locked and the sheet is protected. + */ + public boolean isFormatColumnsLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getFormatColumns(); + } + + /** + * @return true when Formatting rows is locked and the sheet is protected. + */ + public boolean isFormatRowsLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getFormatRows(); + } + + /** + * @return true when Inserting columns is locked and the sheet is protected. + */ + public boolean isInsertColumnsLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getInsertColumns(); + } + + /** + * @return true when Inserting hyperlinks is locked and the sheet is protected. + */ + public boolean isInsertHyperlinksLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getInsertHyperlinks(); + } + + /** + * @return true when Inserting rows is locked and the sheet is protected. + */ + public boolean isInsertRowsLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getInsertRows(); + } + + /** + * @return true when Pivot tables are locked and the sheet is protected. + */ + public boolean isPivotTablesLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getPivotTables(); + } + + /** + * @return true when Sorting is locked and the sheet is protected. + */ + public boolean isSortLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getSort(); + } + + /** + * @return true when Objects are locked and the sheet is protected. + */ + public boolean isObjectsLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getObjects(); + } + + /** + * @return true when Scenarios are locked and the sheet is protected. + */ + public boolean isScenariosLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getScenarios(); + } + + /** + * @return true when Selection of locked cells is locked and the sheet is protected. + */ + public boolean isSelectLockedCellsLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getSelectLockedCells(); + } + + /** + * @return true when Selection of unlocked cells is locked and the sheet is protected. + */ + public boolean isSelectUnlockedCellsLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getSelectUnlockedCells(); + } + + /** + * @return true when Sheet is Protected. + */ + public boolean isSheetLocked() { + createProtectionFieldIfNotPresent(); + return sheetProtectionEnabled() && worksheet.getSheetProtection().getSheet(); + } + + /** + * Enable sheet protection + */ + public void enableLocking() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setSheet(true); + } + + /** + * Disable sheet protection + */ + public void disableLocking() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setSheet(false); + } + + /** + * Enable Autofilters locking. + * This does not modify sheet protection status. + * To enforce this locking, call {@link #enableLocking()} + */ + public void lockAutoFilter() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setAutoFilter(true); + } + + /** + * Enable Deleting columns locking. + * This does not modify sheet protection status. + * To enforce this locking, call {@link #enableLocking()} + */ + public void lockDeleteColumns() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setDeleteColumns(true); + } + + /** + * Enable Deleting rows locking. + * This does not modify sheet protection status. + * To enforce this locking, call {@link #enableLocking()} + */ + public void lockDeleteRows() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setDeleteRows(true); + } + + /** + * Enable Formatting cells locking. + * This does not modify sheet protection status. + * To enforce this locking, call {@link #enableLocking()} + */ + public void lockFormatCells() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setDeleteColumns(true); + } + + /** + * Enable Formatting columns locking. + * This does not modify sheet protection status. + * To enforce this locking, call {@link #enableLocking()} + */ + public void lockFormatColumns() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setFormatColumns(true); + } + + /** + * Enable Formatting rows locking. + * This does not modify sheet protection status. + * To enforce this locking, call {@link #enableLocking()} + */ + public void lockFormatRows() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setFormatRows(true); + } + + /** + * Enable Inserting columns locking. + * This does not modify sheet protection status. + * To enforce this locking, call {@link #enableLocking()} + */ + public void lockInsertColumns() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setInsertColumns(true); + } + + /** + * Enable Inserting hyperlinks locking. + * This does not modify sheet protection status. + * To enforce this locking, call {@link #enableLocking()} + */ + public void lockInsertHyperlinks() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setInsertHyperlinks(true); + } + + /** + * Enable Inserting rows locking. + * This does not modify sheet protection status. + * To enforce this locking, call {@link #enableLocking()} + */ + public void lockInsertRows() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setInsertRows(true); + } + + /** + * Enable Pivot Tables locking. + * This does not modify sheet protection status. + * To enforce this locking, call {@link #enableLocking()} + */ + public void lockPivotTables() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setPivotTables(true); + } + + /** + * Enable Sort locking. + * This does not modify sheet protection status. + * To enforce this locking, call {@link #enableLocking()} + */ + public void lockSort() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setSort(true); + } + + /** + * Enable Objects locking. + * This does not modify sheet protection status. + * To enforce this locking, call {@link #enableLocking()} + */ + public void lockObjects() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setObjects(true); + } + + /** + * Enable Scenarios locking. + * This does not modify sheet protection status. + * To enforce this locking, call {@link #enableLocking()} + */ + public void lockScenarios() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setScenarios(true); + } + + /** + * Enable Selection of locked cells locking. + * This does not modify sheet protection status. + * To enforce this locking, call {@link #enableLocking()} + */ + public void lockSelectLockedCells() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setSelectLockedCells(true); + } + + /** + * Enable Selection of unlocked cells locking. + * This does not modify sheet protection status. + * To enforce this locking, call {@link #enableLocking()} + */ + public void lockSelectUnlockedCells() { + createProtectionFieldIfNotPresent(); + worksheet.getSheetProtection().setSelectUnlockedCells(true); + } + + private void createProtectionFieldIfNotPresent() { + if (worksheet.getSheetProtection() == null) { + worksheet.setSheetProtection(CTSheetProtection.Factory.newInstance()); + } + } + + private boolean sheetProtectionEnabled() { + return worksheet.getSheetProtection().getSheet(); + } } diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java index 67d4f69bf0..92eca64245 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java @@ -1345,4 +1345,96 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable + * A value true indicates the structure of the workbook is locked. Worksheets in the workbook can't be moved, + * deleted, hidden, unhidden, or renamed, and new worksheets can't be inserted.
+ * A value of false indicates the structure of the workbook is not locked.
+ * + * @return true if structure of workbook is locked + */ + public boolean isStructureLocked() { + return workbookProtectionPresent() && workbook.getWorkbookProtection().getLockStructure(); + } + + /** + * Specifies a boolean value that indicates whether the windows that comprise the workbook are locked.
+ * A value of true indicates the workbook windows are locked. Windows are the same size and position each time the + * workbook is opened.
+ * A value of false indicates the workbook windows are not locked. + * + * @return true if windows that comprise the workbook are locked + */ + public boolean isWindowsLocked() { + return workbookProtectionPresent() && workbook.getWorkbookProtection().getLockWindows(); + } + + /** + * Specifies a boolean value that indicates whether the workbook is locked for revisions. + * + * @return true if the workbook is locked for revisions. + */ + public boolean isRevisionLocked() { + return workbookProtectionPresent() && workbook.getWorkbookProtection().getLockRevision(); + } + + /** + * Locks the structure of workbook. + */ + public void lockStructure() { + createProtectionFieldIfNotPresent(); + workbook.getWorkbookProtection().setLockStructure(true); + } + + /** + * Unlocks the structure of workbook. + */ + public void unLockStructure() { + createProtectionFieldIfNotPresent(); + workbook.getWorkbookProtection().setLockStructure(false); + } + + /** + * Locks the windows that comprise the workbook. + */ + public void lockWindows() { + createProtectionFieldIfNotPresent(); + workbook.getWorkbookProtection().setLockWindows(true); + } + + /** + * Unlocks the windows that comprise the workbook. + */ + public void unLockWindows() { + createProtectionFieldIfNotPresent(); + workbook.getWorkbookProtection().setLockWindows(false); + } + + /** + * Locks the workbook for revisions. + */ + public void lockRevision() { + createProtectionFieldIfNotPresent(); + workbook.getWorkbookProtection().setLockRevision(true); + } + + /** + * Unlocks the workbook for revisions. + */ + public void unLockRevision() { + createProtectionFieldIfNotPresent(); + workbook.getWorkbookProtection().setLockRevision(false); + } + + private boolean workbookProtectionPresent() { + return workbook.getWorkbookProtection() != null; + } + + private void createProtectionFieldIfNotPresent() { + if (workbook.getWorkbookProtection() == null){ + workbook.setWorkbookProtection(CTWorkbookProtection.Factory.newInstance()); + } + } } diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java index 19faaf0085..ae1440b492 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java @@ -33,7 +33,6 @@ import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.exceptions.OpenXML4JException; import org.apache.poi.openxml4j.opc.*; import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; - import javax.xml.namespace.QName; /** @@ -50,6 +49,7 @@ import javax.xml.namespace.QName; public class XWPFDocument extends POIXMLDocument { private CTDocument1 ctDocument; + private XWPFSettings settings; protected List comments; protected List hyperlinks; protected List paragraphs; @@ -107,7 +107,8 @@ public class XWPFDocument extends POIXMLDocument { } // Sort out headers and footers - headerFooterPolicy = new XWPFHeaderFooterPolicy(this); + if (doc.getDocument().getBody().getSectPr() != null) + headerFooterPolicy = new XWPFHeaderFooterPolicy(this); for(POIXMLDocumentPart p : getRelations()){ String relation = p.getPackageRelationship().getRelationshipType(); @@ -117,6 +118,9 @@ public class XWPFDocument extends POIXMLDocument { comments.add(new XWPFComment(ctcomment)); } } + else if(relation.equals(XWPFRelation.SETTINGS.getRelation())){ + settings = (XWPFSettings)p; + } } initHyperlinks(); @@ -191,6 +195,8 @@ public class XWPFDocument extends POIXMLDocument { ctDocument = CTDocument1.Factory.newInstance(); ctDocument.addNewBody(); + + settings = (XWPFSettings) createRelationship(XWPFRelation.SETTINGS, XWPFFactory.getInstance()); POIXMLProperties.ExtendedProperties expProps = getProperties().getExtendedProperties(); expProps.getUnderlyingProperties().setApplication(DOCUMENT_CREATOR); @@ -390,4 +396,146 @@ public class XWPFDocument extends POIXMLDocument { } } } + + /** + * Verifies that the documentProtection tag in settings.xml file
+ * specifies that the protection is enforced (w:enforcement="1")
+ * and that the kind of protection is readOnly (w:edit="readOnly")
+ *
+ * sample snippet from settings.xml + *
+     *     <w:settings  ... >
+     *         <w:documentProtection w:edit="readOnly" w:enforcement="1"/>
+     * 
+ * + * @return true if documentProtection is enforced with option readOnly + */ + public boolean isEnforcedReadonlyProtection() { + return settings.isEnforcedWith(STDocProtect.READ_ONLY); + } + + /** + * Verifies that the documentProtection tag in settings.xml file
+ * specifies that the protection is enforced (w:enforcement="1")
+ * and that the kind of protection is forms (w:edit="forms")
+ *
+ * sample snippet from settings.xml + *
+     *     <w:settings  ... >
+     *         <w:documentProtection w:edit="forms" w:enforcement="1"/>
+     * 
+ * + * @return true if documentProtection is enforced with option forms + */ + public boolean isEnforcedFillingFormsProtection() { + return settings.isEnforcedWith(STDocProtect.FORMS); + } + + /** + * Verifies that the documentProtection tag in settings.xml file
+ * specifies that the protection is enforced (w:enforcement="1")
+ * and that the kind of protection is comments (w:edit="comments")
+ *
+ * sample snippet from settings.xml + *
+     *     <w:settings  ... >
+     *         <w:documentProtection w:edit="comments" w:enforcement="1"/>
+     * 
+ * + * @return true if documentProtection is enforced with option comments + */ + public boolean isEnforcedCommentsProtection() { + return settings.isEnforcedWith(STDocProtect.COMMENTS); + } + + /** + * Verifies that the documentProtection tag in settings.xml file
+ * specifies that the protection is enforced (w:enforcement="1")
+ * and that the kind of protection is trackedChanges (w:edit="trackedChanges")
+ *
+ * sample snippet from settings.xml + *
+     *     <w:settings  ... >
+     *         <w:documentProtection w:edit="trackedChanges" w:enforcement="1"/>
+     * 
+ * + * @return true if documentProtection is enforced with option trackedChanges + */ + public boolean isEnforcedTrackedChangesProtection() { + return settings.isEnforcedWith(STDocProtect.TRACKED_CHANGES); + } + + /** + * Enforces the readOnly protection.
+ * In the documentProtection tag inside settings.xml file,
+ * it sets the value of enforcement to "1" (w:enforcement="1")
+ * and the value of edit to readOnly (w:edit="readOnly")
+ *
+ * sample snippet from settings.xml + *
+     *     <w:settings  ... >
+     *         <w:documentProtection w:edit="readOnly" w:enforcement="1"/>
+     * 
+ */ + public void enforceReadonlyProtection() { + settings.setEnforcementEditValue(STDocProtect.READ_ONLY); + } + + /** + * Enforce the Filling Forms protection.
+ * In the documentProtection tag inside settings.xml file,
+ * it sets the value of enforcement to "1" (w:enforcement="1")
+ * and the value of edit to forms (w:edit="forms")
+ *
+ * sample snippet from settings.xml + *
+     *     <w:settings  ... >
+     *         <w:documentProtection w:edit="forms" w:enforcement="1"/>
+     * 
+ */ + public void enforceFillingFormsProtection() { + settings.setEnforcementEditValue(STDocProtect.FORMS); + } + + /** + * Enforce the Comments protection.
+ * In the documentProtection tag inside settings.xml file,
+ * it sets the value of enforcement to "1" (w:enforcement="1")
+ * and the value of edit to comments (w:edit="comments")
+ *
+ * sample snippet from settings.xml + *
+     *     <w:settings  ... >
+     *         <w:documentProtection w:edit="comments" w:enforcement="1"/>
+     * 
+ */ + public void enforceCommentsProtection() { + settings.setEnforcementEditValue(STDocProtect.COMMENTS); + } + + /** + * Enforce the Tracked Changes protection.
+ * In the documentProtection tag inside settings.xml file,
+ * it sets the value of enforcement to "1" (w:enforcement="1")
+ * and the value of edit to trackedChanges (w:edit="trackedChanges")
+ *
+ * sample snippet from settings.xml + *
+     *     <w:settings  ... >
+     *         <w:documentProtection w:edit="trackedChanges" w:enforcement="1"/>
+     * 
+ */ + public void enforceTrackedChangesProtection() { + settings.setEnforcementEditValue(STDocProtect.TRACKED_CHANGES); + } + + /** + * Remove protection enforcement.
+ * In the documentProtection tag inside settings.xml file
+ * it sets the value of enforcement to "0" (w:enforcement="0")
+ */ + public void removeProtectionEnforcement() { + settings.removeEnforcement(); + } + } diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java index 13c12c61be..c5accb89f9 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java @@ -68,7 +68,7 @@ public final class XWPFRelation extends POIXMLRelation { "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings", "/word/settings.xml", - null + XWPFSettings.class ); public static final XWPFRelation STYLES = new XWPFRelation( "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml", diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java new file mode 100644 index 0000000000..e34d6c145c --- /dev/null +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java @@ -0,0 +1,135 @@ +/* ==================================================================== + 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.xwpf.usermodel; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.HashMap; +import java.util.Map; + +import javax.xml.namespace.QName; + +import org.apache.poi.POIXMLDocumentPart; +import org.apache.poi.openxml4j.opc.PackagePart; +import org.apache.poi.openxml4j.opc.PackageRelationship; +import org.apache.xmlbeans.XmlOptions; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocProtect; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSettings; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STDocProtect; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.SettingsDocument; + +public class XWPFSettings extends POIXMLDocumentPart { + + private CTSettings ctSettings; + + public XWPFSettings(PackagePart part, PackageRelationship rel) throws IOException { + super(part, rel); + readFrom(part.getInputStream()); + } + + public XWPFSettings() { + super(); + ctSettings = CTSettings.Factory.newInstance(); + } + + + /** + * Verifies the documentProtection tag inside settings.xml file
+ * if the protection is enforced (w:enforcement="1")
+ * and if the kind of protection equals to passed (STDocProtect.Enum editValue)
+ * + *
+ * sample snippet from settings.xml + *
+     *     <w:settings  ... >
+     *         <w:documentProtection w:edit="readOnly" w:enforcement="1"/>
+     * 
+ * + * @return true if documentProtection is enforced with option readOnly + */ + public boolean isEnforcedWith(STDocProtect.Enum editValue) { + CTDocProtect ctDocProtect = ctSettings.getDocumentProtection(); + + if (ctDocProtect == null) { + return false; + } + + return ctDocProtect.getEnforcement().equals(STOnOff.X_1) && ctDocProtect.getEdit().equals(editValue); + } + + /** + * Enforces the protection with the option specified by passed editValue.
+ *
+ * In the documentProtection tag inside settings.xml file
+ * it sets the value of enforcement to "1" (w:enforcement="1")
+ * and the value of edit to the passed editValue (w:edit="[passed editValue]")
+ *
+ * sample snippet from settings.xml + *
+     *     <w:settings  ... >
+     *         <w:documentProtection w:edit="[passed editValue]" w:enforcement="1"/>
+     * 
+ */ + public void setEnforcementEditValue(org.openxmlformats.schemas.wordprocessingml.x2006.main.STDocProtect.Enum editValue) { + safeGetDocumentProtection().setEnforcement(STOnOff.X_1); + safeGetDocumentProtection().setEdit(editValue); + } + + /** + * Removes protection enforcement.
+ * In the documentProtection tag inside settings.xml file
+ * it sets the value of enforcement to "0" (w:enforcement="0")
+ */ + public void removeEnforcement() { + safeGetDocumentProtection().setEnforcement(STOnOff.X_0); + } + + @Override + protected void commit() throws IOException { + + XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); + xmlOptions.setSaveSyntheticDocumentElement(new QName(CTSettings.type.getName().getNamespaceURI(), "settings")); + Map map = new HashMap(); + map.put("http://schemas.openxmlformats.org/wordprocessingml/2006/main", "w"); + xmlOptions.setSaveSuggestedPrefixes(map); + + PackagePart part = getPackagePart(); + OutputStream out = part.getOutputStream(); + ctSettings.save(out, xmlOptions); + out.close(); + } + + private CTDocProtect safeGetDocumentProtection() { + CTDocProtect documentProtection = ctSettings.getDocumentProtection(); + if (documentProtection == null) { + documentProtection = CTDocProtect.Factory.newInstance(); + ctSettings.setDocumentProtection(documentProtection); + } + return ctSettings.getDocumentProtection(); + } + + private void readFrom(InputStream inputStream) { + try { + ctSettings = SettingsDocument.Factory.parse(inputStream).getSettings(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + +} diff --git a/src/ooxml/testcases/org/apache/poi/xssf/TestSheetProtection.java b/src/ooxml/testcases/org/apache/poi/xssf/TestSheetProtection.java new file mode 100644 index 0000000000..156c0dec49 --- /dev/null +++ b/src/ooxml/testcases/org/apache/poi/xssf/TestSheetProtection.java @@ -0,0 +1,231 @@ +/* ==================================================================== + 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.xssf; + +import org.apache.poi.xssf.usermodel.XSSFSheet; + +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import junit.framework.TestCase; + +public class TestSheetProtection extends TestCase { + private XSSFSheet sheet; + + @Override + protected void setUp() throws Exception { + XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("sheetProtection_not_protected.xlsx"); + sheet = workbook.getSheetAt(0); + } + + public void testShouldReadWorkbookProtection() throws Exception { + assertFalse(sheet.isAutoFilterLocked()); + assertFalse(sheet.isDeleteColumnsLocked()); + assertFalse(sheet.isDeleteRowsLocked()); + assertFalse(sheet.isFormatCellsLocked()); + assertFalse(sheet.isFormatColumnsLocked()); + assertFalse(sheet.isFormatRowsLocked()); + assertFalse(sheet.isInsertColumnsLocked()); + assertFalse(sheet.isInsertHyperlinksLocked()); + assertFalse(sheet.isInsertRowsLocked()); + assertFalse(sheet.isPivotTablesLocked()); + assertFalse(sheet.isSortLocked()); + assertFalse(sheet.isObjectsLocked()); + assertFalse(sheet.isScenariosLocked()); + assertFalse(sheet.isSelectLockedCellsLocked()); + assertFalse(sheet.isSelectUnlockedCellsLocked()); + assertFalse(sheet.isSheetLocked()); + + sheet = XSSFTestDataSamples.openSampleWorkbook("sheetProtection_allLocked.xlsx").getSheetAt(0); + + assertTrue(sheet.isAutoFilterLocked()); + assertTrue(sheet.isDeleteColumnsLocked()); + assertTrue(sheet.isDeleteRowsLocked()); + assertTrue(sheet.isFormatCellsLocked()); + assertTrue(sheet.isFormatColumnsLocked()); + assertTrue(sheet.isFormatRowsLocked()); + assertTrue(sheet.isInsertColumnsLocked()); + assertTrue(sheet.isInsertHyperlinksLocked()); + assertTrue(sheet.isInsertRowsLocked()); + assertTrue(sheet.isPivotTablesLocked()); + assertTrue(sheet.isSortLocked()); + assertTrue(sheet.isObjectsLocked()); + assertTrue(sheet.isScenariosLocked()); + assertTrue(sheet.isSelectLockedCellsLocked()); + assertTrue(sheet.isSelectUnlockedCellsLocked()); + assertTrue(sheet.isSheetLocked()); + } + + public void testWriteAutoFilter() throws Exception { + assertFalse(sheet.isAutoFilterLocked()); + sheet.lockAutoFilter(); + assertFalse(sheet.isAutoFilterLocked()); + sheet.enableLocking(); + assertTrue(sheet.isAutoFilterLocked()); + } + + public void testWriteDeleteColumns() throws Exception { + assertFalse(sheet.isDeleteColumnsLocked()); + sheet.lockDeleteColumns(); + assertFalse(sheet.isDeleteColumnsLocked()); + sheet.enableLocking(); + assertTrue(sheet.isDeleteColumnsLocked()); + } + + public void testWriteDeleteRows() throws Exception { + assertFalse(sheet.isDeleteRowsLocked()); + sheet.lockDeleteRows(); + assertFalse(sheet.isDeleteRowsLocked()); + sheet.enableLocking(); + assertTrue(sheet.isDeleteRowsLocked()); + } + + public void testWriteFormatCells() throws Exception { + assertFalse(sheet.isFormatCellsLocked()); + sheet.lockFormatCells(); + assertFalse(sheet.isFormatCellsLocked()); + sheet.enableLocking(); + assertTrue(sheet.isFormatCellsLocked()); + } + + public void testWriteFormatColumns() throws Exception { + assertFalse(sheet.isFormatColumnsLocked()); + sheet.lockFormatColumns(); + assertFalse(sheet.isFormatColumnsLocked()); + sheet.enableLocking(); + assertTrue(sheet.isFormatColumnsLocked()); + } + + public void testWriteFormatRows() throws Exception { + assertFalse(sheet.isFormatRowsLocked()); + sheet.lockFormatRows(); + assertFalse(sheet.isFormatRowsLocked()); + sheet.enableLocking(); + assertTrue(sheet.isFormatRowsLocked()); + } + + public void testWriteInsertColumns() throws Exception { + assertFalse(sheet.isInsertColumnsLocked()); + sheet.lockInsertColumns(); + assertFalse(sheet.isInsertColumnsLocked()); + sheet.enableLocking(); + assertTrue(sheet.isInsertColumnsLocked()); + } + + public void testWriteInsertHyperlinks() throws Exception { + assertFalse(sheet.isInsertHyperlinksLocked()); + sheet.lockInsertHyperlinks(); + assertFalse(sheet.isInsertHyperlinksLocked()); + sheet.enableLocking(); + assertTrue(sheet.isInsertHyperlinksLocked()); + } + + public void testWriteInsertRows() throws Exception { + assertFalse(sheet.isInsertRowsLocked()); + sheet.lockInsertRows(); + assertFalse(sheet.isInsertRowsLocked()); + sheet.enableLocking(); + assertTrue(sheet.isInsertRowsLocked()); + } + + public void testWritePivotTables() throws Exception { + assertFalse(sheet.isPivotTablesLocked()); + sheet.lockPivotTables(); + assertFalse(sheet.isPivotTablesLocked()); + sheet.enableLocking(); + assertTrue(sheet.isPivotTablesLocked()); + } + + public void testWriteSort() throws Exception { + assertFalse(sheet.isSortLocked()); + sheet.lockSort(); + assertFalse(sheet.isSortLocked()); + sheet.enableLocking(); + assertTrue(sheet.isSortLocked()); + } + + public void testWriteObjects() throws Exception { + assertFalse(sheet.isObjectsLocked()); + sheet.lockObjects(); + assertFalse(sheet.isObjectsLocked()); + sheet.enableLocking(); + assertTrue(sheet.isObjectsLocked()); + } + + public void testWriteScenarios() throws Exception { + assertFalse(sheet.isScenariosLocked()); + sheet.lockScenarios(); + assertFalse(sheet.isScenariosLocked()); + sheet.enableLocking(); + assertTrue(sheet.isScenariosLocked()); + } + + public void testWriteSelectLockedCells() throws Exception { + assertFalse(sheet.isSelectLockedCellsLocked()); + sheet.lockSelectLockedCells(); + assertFalse(sheet.isSelectLockedCellsLocked()); + sheet.enableLocking(); + assertTrue(sheet.isSelectLockedCellsLocked()); + } + + public void testWriteSelectUnlockedCells() throws Exception { + assertFalse(sheet.isSelectUnlockedCellsLocked()); + sheet.lockSelectUnlockedCells(); + assertFalse(sheet.isSelectUnlockedCellsLocked()); + sheet.enableLocking(); + assertTrue(sheet.isSelectUnlockedCellsLocked()); + } + + public void testWriteSelectEnableLocking() throws Exception { + sheet = XSSFTestDataSamples.openSampleWorkbook("sheetProtection_allLocked.xlsx").getSheetAt(0); + + assertTrue(sheet.isAutoFilterLocked()); + assertTrue(sheet.isDeleteColumnsLocked()); + assertTrue(sheet.isDeleteRowsLocked()); + assertTrue(sheet.isFormatCellsLocked()); + assertTrue(sheet.isFormatColumnsLocked()); + assertTrue(sheet.isFormatRowsLocked()); + assertTrue(sheet.isInsertColumnsLocked()); + assertTrue(sheet.isInsertHyperlinksLocked()); + assertTrue(sheet.isInsertRowsLocked()); + assertTrue(sheet.isPivotTablesLocked()); + assertTrue(sheet.isSortLocked()); + assertTrue(sheet.isObjectsLocked()); + assertTrue(sheet.isScenariosLocked()); + assertTrue(sheet.isSelectLockedCellsLocked()); + assertTrue(sheet.isSelectUnlockedCellsLocked()); + assertTrue(sheet.isSheetLocked()); + + sheet.disableLocking(); + + assertFalse(sheet.isAutoFilterLocked()); + assertFalse(sheet.isDeleteColumnsLocked()); + assertFalse(sheet.isDeleteRowsLocked()); + assertFalse(sheet.isFormatCellsLocked()); + assertFalse(sheet.isFormatColumnsLocked()); + assertFalse(sheet.isFormatRowsLocked()); + assertFalse(sheet.isInsertColumnsLocked()); + assertFalse(sheet.isInsertHyperlinksLocked()); + assertFalse(sheet.isInsertRowsLocked()); + assertFalse(sheet.isPivotTablesLocked()); + assertFalse(sheet.isSortLocked()); + assertFalse(sheet.isObjectsLocked()); + assertFalse(sheet.isScenariosLocked()); + assertFalse(sheet.isSelectLockedCellsLocked()); + assertFalse(sheet.isSelectUnlockedCellsLocked()); + assertFalse(sheet.isSheetLocked()); + } +} diff --git a/src/ooxml/testcases/org/apache/poi/xssf/TestWorkbookProtection.java b/src/ooxml/testcases/org/apache/poi/xssf/TestWorkbookProtection.java new file mode 100644 index 0000000000..fc8c159e53 --- /dev/null +++ b/src/ooxml/testcases/org/apache/poi/xssf/TestWorkbookProtection.java @@ -0,0 +1,109 @@ +/* ==================================================================== + 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.xssf; + +import java.io.File; + +import java.io.FileInputStream; +import java.io.FileOutputStream; + +import junit.framework.TestCase; + +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +public class TestWorkbookProtection extends TestCase { + + public void testShouldReadWorkbookProtection() throws Exception { + XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("workbookProtection_not_protected.xlsx"); + assertFalse(workbook.isStructureLocked()); + assertFalse(workbook.isWindowsLocked()); + assertFalse(workbook.isRevisionLocked()); + + workbook = XSSFTestDataSamples.openSampleWorkbook("workbookProtection_workbook_structure_protected.xlsx"); + assertTrue(workbook.isStructureLocked()); + assertFalse(workbook.isWindowsLocked()); + assertFalse(workbook.isRevisionLocked()); + + workbook = XSSFTestDataSamples.openSampleWorkbook("workbookProtection_workbook_windows_protected.xlsx"); + assertTrue(workbook.isWindowsLocked()); + assertFalse(workbook.isStructureLocked()); + assertFalse(workbook.isRevisionLocked()); + + workbook = XSSFTestDataSamples.openSampleWorkbook("workbookProtection_workbook_revision_protected.xlsx"); + assertTrue(workbook.isRevisionLocked()); + assertFalse(workbook.isWindowsLocked()); + assertFalse(workbook.isStructureLocked()); + } + + public void testShouldWriteStructureLock() throws Exception { + XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("workbookProtection_not_protected.xlsx"); + assertFalse(workbook.isStructureLocked()); + + workbook.lockStructure(); + + assertTrue(workbook.isStructureLocked()); + + workbook.unLockStructure(); + + assertFalse(workbook.isStructureLocked()); + } + + public void testShouldWriteWindowsLock() throws Exception { + XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("workbookProtection_not_protected.xlsx"); + assertFalse(workbook.isWindowsLocked()); + + workbook.lockWindows(); + + assertTrue(workbook.isWindowsLocked()); + + workbook.unLockWindows(); + + assertFalse(workbook.isWindowsLocked()); + } + + public void testShouldWriteRevisionLock() throws Exception { + XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("workbookProtection_not_protected.xlsx"); + assertFalse(workbook.isRevisionLocked()); + + workbook.lockRevision(); + + assertTrue(workbook.isRevisionLocked()); + + workbook.unLockRevision(); + + assertFalse(workbook.isRevisionLocked()); + } + + public void testIntegration() throws Exception { + XSSFWorkbook wb = new XSSFWorkbook(); + wb.createSheet("Testing purpose sheet"); + assertFalse(wb.isRevisionLocked()); + + wb.lockRevision(); + + File tempFile = File.createTempFile("workbookProtection", ".xlsx"); + FileOutputStream out = new FileOutputStream(tempFile); + wb.write(out); + out.close(); + + FileInputStream inputStream = new FileInputStream(tempFile); + XSSFWorkbook workbook = new XSSFWorkbook(inputStream); + inputStream.close(); + + assertTrue(workbook.isRevisionLocked()); + } +} diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/TestDocumentProtection.java b/src/ooxml/testcases/org/apache/poi/xwpf/TestDocumentProtection.java new file mode 100644 index 0000000000..10f0e4818f --- /dev/null +++ b/src/ooxml/testcases/org/apache/poi/xwpf/TestDocumentProtection.java @@ -0,0 +1,153 @@ +/* ==================================================================== + 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.xwpf; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; + +import junit.framework.TestCase; + +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFParagraph; +import org.apache.poi.xwpf.usermodel.XWPFRun; + +public class TestDocumentProtection extends TestCase { + + public void testShouldReadEnforcementProperties() throws Exception { + + XWPFDocument documentWithoutDocumentProtectionTag = XWPFTestDataSamples.openSampleDocument("documentProtection_no_protection.docx"); + assertFalse(documentWithoutDocumentProtectionTag.isEnforcedReadonlyProtection()); + assertFalse(documentWithoutDocumentProtectionTag.isEnforcedFillingFormsProtection()); + assertFalse(documentWithoutDocumentProtectionTag.isEnforcedCommentsProtection()); + assertFalse(documentWithoutDocumentProtectionTag.isEnforcedTrackedChangesProtection()); + + XWPFDocument documentWithoutEnforcement = XWPFTestDataSamples.openSampleDocument("documentProtection_no_protection_tag_existing.docx"); + assertFalse(documentWithoutEnforcement.isEnforcedReadonlyProtection()); + assertFalse(documentWithoutEnforcement.isEnforcedFillingFormsProtection()); + assertFalse(documentWithoutEnforcement.isEnforcedCommentsProtection()); + assertFalse(documentWithoutEnforcement.isEnforcedTrackedChangesProtection()); + + XWPFDocument documentWithReadonlyEnforcement = XWPFTestDataSamples.openSampleDocument("documentProtection_readonly_no_password.docx"); + assertTrue(documentWithReadonlyEnforcement.isEnforcedReadonlyProtection()); + assertFalse(documentWithReadonlyEnforcement.isEnforcedFillingFormsProtection()); + assertFalse(documentWithReadonlyEnforcement.isEnforcedCommentsProtection()); + assertFalse(documentWithReadonlyEnforcement.isEnforcedTrackedChangesProtection()); + + XWPFDocument documentWithFillingFormsEnforcement = XWPFTestDataSamples.openSampleDocument("documentProtection_forms_no_password.docx"); + assertTrue(documentWithFillingFormsEnforcement.isEnforcedFillingFormsProtection()); + assertFalse(documentWithFillingFormsEnforcement.isEnforcedReadonlyProtection()); + assertFalse(documentWithFillingFormsEnforcement.isEnforcedCommentsProtection()); + assertFalse(documentWithFillingFormsEnforcement.isEnforcedTrackedChangesProtection()); + + XWPFDocument documentWithCommentsEnforcement = XWPFTestDataSamples.openSampleDocument("documentProtection_comments_no_password.docx"); + assertFalse(documentWithCommentsEnforcement.isEnforcedFillingFormsProtection()); + assertFalse(documentWithCommentsEnforcement.isEnforcedReadonlyProtection()); + assertTrue(documentWithCommentsEnforcement.isEnforcedCommentsProtection()); + assertFalse(documentWithCommentsEnforcement.isEnforcedTrackedChangesProtection()); + + XWPFDocument documentWithTrackedChangesEnforcement = XWPFTestDataSamples.openSampleDocument("documentProtection_trackedChanges_no_password.docx"); + assertFalse(documentWithTrackedChangesEnforcement.isEnforcedFillingFormsProtection()); + assertFalse(documentWithTrackedChangesEnforcement.isEnforcedReadonlyProtection()); + assertFalse(documentWithTrackedChangesEnforcement.isEnforcedCommentsProtection()); + assertTrue(documentWithTrackedChangesEnforcement.isEnforcedTrackedChangesProtection()); + + } + + public void testShouldEnforceForReadOnly() throws Exception { + // XWPFDocument document = createDocumentFromSampleFile("test-data/document/documentProtection_no_protection.docx"); + XWPFDocument document = XWPFTestDataSamples.openSampleDocument("documentProtection_no_protection.docx"); + assertFalse(document.isEnforcedReadonlyProtection()); + + document.enforceReadonlyProtection(); + + assertTrue(document.isEnforcedReadonlyProtection()); + } + + public void testShouldEnforceForFillingForms() throws Exception { + XWPFDocument document = createDocumentFromSampleFile("test-data/document/documentProtection_no_protection.docx"); + assertFalse(document.isEnforcedFillingFormsProtection()); + + document.enforceFillingFormsProtection(); + + assertTrue(document.isEnforcedFillingFormsProtection()); + } + + public void testShouldEnforceForComments() throws Exception { + XWPFDocument document = createDocumentFromSampleFile("test-data/document/documentProtection_no_protection.docx"); + assertFalse(document.isEnforcedCommentsProtection()); + + document.enforceCommentsProtection(); + + assertTrue(document.isEnforcedCommentsProtection()); + } + + public void testShouldEnforceForTrackedChanges() throws Exception { + XWPFDocument document = createDocumentFromSampleFile("test-data/document/documentProtection_no_protection.docx"); + assertFalse(document.isEnforcedTrackedChangesProtection()); + + document.enforceTrackedChangesProtection(); + + assertTrue(document.isEnforcedTrackedChangesProtection()); + } + + public void testShouldUnsetEnforcement() throws Exception { + XWPFDocument document = createDocumentFromSampleFile("test-data/document/documentProtection_readonly_no_password.docx"); + assertTrue(document.isEnforcedReadonlyProtection()); + + document.removeProtectionEnforcement(); + + assertFalse(document.isEnforcedReadonlyProtection()); + } + + public void testIntegration() throws Exception { + XWPFDocument doc = new XWPFDocument(); + + XWPFParagraph p1 = doc.createParagraph(); + + XWPFRun r1 = p1.createRun(); + r1.setText("Lorem ipsum dolor sit amet."); + doc.enforceCommentsProtection(); + + File tempFile = File.createTempFile("documentProtectionFile", ".docx"); + FileOutputStream out = new FileOutputStream(tempFile); + + doc.write(out); + out.close(); + + FileInputStream inputStream = new FileInputStream(tempFile); + XWPFDocument document = new XWPFDocument(inputStream); + inputStream.close(); + + assertTrue(document.isEnforcedCommentsProtection()); + } + + private XWPFDocument createDocumentFromSampleFile(String fileName) throws FileNotFoundException, IOException { + File file = new File(fileName); + FileInputStream in = new FileInputStream(file); + byte[] bytes = new byte[(int) file.length()]; + in.read(bytes); + + ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); + XWPFDocument document = new XWPFDocument(inputStream); + return document; + } + +} diff --git a/test-data/document/documentProtection_comments_no_password.docx b/test-data/document/documentProtection_comments_no_password.docx new file mode 100644 index 0000000000000000000000000000000000000000..5cc800e361e0ef62fad5f330768df39605507171 GIT binary patch literal 9868 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 Y4kQl`rN_@A7F0kNH0-FO`T6UA0EPncfB*mh literal 0 HcmV?d00001 diff --git a/test-data/document/documentProtection_forms_no_password.docx b/test-data/document/documentProtection_forms_no_password.docx new file mode 100644 index 0000000000000000000000000000000000000000..8d31026b403260ca4a4a2a0f53f4a91587519928 GIT binary patch literal 9924 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 literal 0 HcmV?d00001 diff --git a/test-data/document/documentProtection_no_protection_tag_existing.docx b/test-data/document/documentProtection_no_protection_tag_existing.docx new file mode 100644 index 0000000000000000000000000000000000000000..2c655b6b1bf938f2410fc4de8b3f05e3fd85ecd0 GIT binary patch literal 9923 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 XOBDq!9zT0uumD}~z+;!`=h^=N{tZ1D literal 0 HcmV?d00001 diff --git a/test-data/document/documentProtection_readonly_no_password.docx b/test-data/document/documentProtection_readonly_no_password.docx new file mode 100644 index 0000000000000000000000000000000000000000..1ec7063ab526ecc69f2f8cf10df669be2b3970d1 GIT binary patch literal 9856 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 M;Yr6UhM%AQ2NrYuod5s; literal 0 HcmV?d00001 diff --git a/test-data/document/documentProtection_trackedChanges_no_password.docx b/test-data/document/documentProtection_trackedChanges_no_password.docx new file mode 100644 index 0000000000000000000000000000000000000000..8531573c07621c94330ebce158ef43699ab5c271 GIT binary patch literal 9940 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 literal 0 HcmV?d00001 diff --git a/test-data/document/protected_sample.docx b/test-data/document/protected_sample.docx new file mode 100644 index 0000000000000000000000000000000000000000..e6b5e0bfcef068f6398b52f3fa00c8500e99d20d GIT binary patch literal 10082 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 literal 0 HcmV?d00001 diff --git a/test-data/spreadsheet/sheetProtection_not_protected.xlsx b/test-data/spreadsheet/sheetProtection_not_protected.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..81a0b5ea7a50a5d8b4061cb25fb5c06ff3fd8174 GIT binary patch literal 28728 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�RuX)gS<&5-D~F+Bd~(G%6$Hl} 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�RuX)gS<&5-D~F+Bd~(G%6$Hl} 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 NUII735=sBtsfHX)*p26q! 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 K1(4(V+kXJ`WZ+l; literal 0 HcmV?d00001 diff --git a/test-data/spreadsheet/workbookProtection_workbook_structure_protected.xlsx b/test-data/spreadsheet/workbookProtection_workbook_structure_protected.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..88d8344704c914a57e80e1cc5bb543de642f0b3a GIT binary patch literal 28727 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 V;07YX?pC&u;~6jn9I@=*{tIm-^L+pS literal 0 HcmV?d00001 diff --git a/test-data/spreadsheet/workbookProtection_worksheet_protected.xlsx b/test-data/spreadsheet/workbookProtection_worksheet_protected.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f9339f0ae8afa02e3ff9717836161218cfc50c90 GIT binary patch literal 28754 zcmeFYXIK>5vM}5Tijs2_P|1>1a#oNmARr)FB*#(WkY<#Oh$sjMNCwHEM9Gp>BJm3IphtmiFuRr6MR1|s*(iA{W+%Wd>x+7! z^99x%QBFoW{FtW*1693*?=JhVXJbh4g#&q=(m9-N-e9yae{SnU_(rLsIY#92M``s} z;^~ZZBTpm5E zYBFB;l5lH|y4iGNL`<6=rzCN|m>E<5t8Xs)YGkjhGP3UC73Oi@{4S^)NKS<;Sj;|| z;8T(>PP4+Nc=>J=X-&Q&bM4jVimP5291`Waf%&%mML8o;&$jVw4s$}WMHpT zScs>In{q z58VBou?0}~-6sK!Z5p&CVxSt&!p+9nT}bfsekrs3{~6i;ea2N3qp8(;jUwbgb*g#0 zF|p!O@ZA(w3SIB>A^3MT)aJRcuQn8X{k{dptGZbB=bUsv8hsWP9Yyeu(20CVey!+V{eGNx7nrDGiK%^-tF27*A8C~)BjUl|EPMgau@8W z1$CVXIFAQ)7W$>`-VisZhY*OJyx*K4=&J|GtW1dL3J@k#uYYH3ansJRXR; zuAE}tkv>}N2UzjJ?H>|qm?T%Hop&}$_ed}$NDG!badxPaK1exgx$Q!7?ioK}NVC#x z=)|W^#NOrwnh&HiUf0u~QeN;{-00pXmF^n2tttJID&giirX_@tlN;%Ne3`_9m+G{7 z5F_h?y$93%BYEOJ*t|gtavu6r$1T$A1~}l!K$wVW@-8YEL1=iS$)0Pxrl4m}ZW2>A}^OF4Rin)bjSBly1;x;m?p~1o~IoMc;HMUE^nNWweg*eP+nGIcj~0 zRa&ytM<5n^c&6dw$8F|+<{z1KfrUy?4~XyqfE-i?P-lLtEpK%-A(Pig8py}s6dsW8 z*=q6Usv=9wJ^-zEolhhRZ?F)*x~&*vcQ6|rAM4sKsHlyJVLfC`v>+RKZ!s67Y=}JM zUm$tgqFxu!%(e;X6?+@PW5!7;#e*g$fEmFsFArA8d&3Ep0YRGjh!4|5l=turLK&;( z@^rJRZ|JTZT&ZBSre%6!A9de)-1vSzOBzKL7Jlu0No64Oy_B=`+!W->%1rViwWRgm zoLuG}KWwv}geAl;v69#+hoW-^C<_9Gc-vTKIQ&Opn-z?Oh0g6thw9rs#FEk>U7< z9T%@ZV6h`AezULUolZbPG+^ZX!mi)v1UqZv8nzK<*u5D#%~X@C#7}jd=>>sQ)Kx7z zQ|!5aw!#$}HQzeGmAwJ3GR?0QcDJ{5v$59maC30Ab3b(o+0nPuZ(paleGuqxFisC9BMwTtS5J{$vrt|E0Ts1)0!Oxdj z<#^ELW@o}rz=cv?vn038+HORkgb2AgB}n52nQdd=8`z0{Y}6tZSoL{B9V@rUOR6js zP)o^{2y1#m+5=;UU2C((MwRWjqd|Z7kC8vGV(D@=D03F5*`$Aw+r!7%=9j>FztL-p zID)Z0(kgf2KE+79?ocz@NUz{EVk(xg zGClX{4mup3dVE0Yo+5kSUzanNayivZGv-<{_3U?RtVvbGai|#i>a2s&EI$VK)b<8} zuzxgbMu&rY{@eHHZ|EaZ8?{*krEhN_)z#?W8yi=TX!ZM5+pFdrZhtN&2gl<^{L=+rzMPInu|TQ}KJA`fzZu{&6`!`;FvdKm~us za+)>$bW|SpHZC?oKkwI1wRqh~6T+;-(8!KrQ}%;caceQDcovL(V74Dr{$Mh+0F~X> z60R#xV&q1VR;qAt+`eV{^5f&1H**Z;bzz$6=bsHVeUcWg`;h{jlDPcj$x@%MUE0C1 zlkNUd)WVw##VZ_(YV3LD#RTCTm)ZKPht6;ANg0mdbI@v?dxHuV3B2&CIjY-xw&sQS zz1t51pUAyp{z!RSJ%?FC<3_Lzf9dvX4y5a6rRTIV&-w>$&auxim**_1+qm#{h+McE zX!XF)TO#}NE!plHW8V_18D+TC*Fs)Kl-O!sBno1=cu!P8%R2IcN4OC?Ac+qfV(+|q zlSJdJ5Yw%8%vp`((FCNja@)|w2`aNrjEx6l^W1~+&oo)E%M}y(!=*0t7}6*CMy7Ss zu9byn@KmEf=7~NBOWZd1(e7DWs?OMe*pt5Ie| zi{E16L#%o13z(XZc|)JQ+4eh`pBxoR%>aL?GQP0wm9W^(Xl>R2h>v8jv;-?yxQzc7)QCr?_fg(BIXYhTX=jb_vO0_ma6;(ea;7Zq%z- zUFm0W3*Pr3sbcK>m=xP6!KNhCGL-R&61o50weU0EOyYy3R?&zb^~YzD!pNcSn7;l> z=7m1fvf=TSMP31i-dl><1eO| z$1=MrZD4|=XhiavGf^7&=Lf3w8p@dGvh`ZCG@_ zvkjh6*a(d$3FEl8_#nZcVr$)M7%KoTxDtWyf57`va&AAh)cyW(v9uOJJf6{!j zU*)s7KTi|h5f^8v1hM#@!ODYF^|hxi=F?G+m&KI~F*b?1S_`;D zUf+wK9N;$T>=Z3ZMW0kho!I9TlrGlZW$J&={$MkC25ud7&%FgJa6wRtZ}1gH;T0UFxH#>$S!DC{u(at zeBwz}I-z6qmLfz6ng8jC{FZ@5zZvNbRdLnhLh@tQI{R3)^0Ja{FS!Y)!}pEfqZ}_E zye_Y_jchx9+aoBZQzDT|Cp0*o7{+2TSy@vO`Z-ll=RVWYG6glmj!pq)I{bi5A-x(A z3j4O6z>(Mzn;+z%{bqe_rqeqQqcRjKKqP0X(Yz>=y1?FXtP}$cuE<#cNU^xzr(*%hR2QpOx}Cw zWeH#D8z~l^m7>rmx*^3(9!8%?`E^@XVN)*fsb?|AHyy8Y&SOCmeOF$>X7fha`k!OY zzop#Faq8trioc|uqd&&kM}5Zv*)xuLIg+R|kkKjC_GapQ;(@Zetu?HvYUOtR7mmT) z*c^QFlCVjNw^!?c?=h=8LjF?uG+&}qg$X^IAu5Lll)dj_t$Shvqu}MXw_fx0UBbV2 zkG;p&_b$?)$nvt+*x8p%tJ)4)8@AWlB#KqrEOp%x^ ziN<*6!!$b85tgAxM*10-DTlaehcX8d+^(=E#^O)4no`}~L|%GF9mcF|!}+C=_Jf-8 z;hWcApiqrmngxeh?XcJ)ZeO2|?85i`PnOzOcCWAxWev${etp1I!I9#b>uD-CarT+@ zX#Yq~>rGZ=Mctb%o!jIo8#VO=d~aJSvhu1j;>oXOWRmue=Gl+xMhNuuu`Y3Ou|%RS zO&J^YiVVFTd-UiqO1RqFw&}tcS2&g8&DeNSO@f!qt$4B}uV`4s2*1$=m)I2BHy01_ zQK~HW^EzUOc81Qa1X4dsO3&Caq`JCWuYXpa%_7ah!t_OH=g{>zo>vF-ZD%ImBQKw@ zo$Gg=jq1tYARO8shn;tT+MF}F;1FL*Rz4+}iQO_mB34%0oOc%IBV-@Yx-YKxx5N}h zv2>>zzP@D~oP#7ZGXS*E?6-Kf2XAnYlzidH^?J* zaPQ~o^3c`N!CBDpk&PX03^xZ*s4J@}19*6NfGYS8z|Eiiq^787aaUJcS?!Jz*Z}}% z-&;O<Eb@%R_pD>7f`uzR1Kk}=3 zGAM9L>-T+s`WLAiI3NJvT>>#_?0&%_r|`pHFvvGR^sg{|x@twHz^2=lw$ z(^UlFw;)Vr_Z#@(Z(wU1cPmiNn;;Iv>X92r=gev9C*fsfcS^Gegs-_;JGg@I)M>l5 zyOj%w1Il}5`*beAHt_P$0022~yN%!V_cmj904RC~E(6!!+ju}1Lu&{CABF$kwxj!V ze(>me-ED<${3M4*q5$$VgTw7`0RUkP0GzzS;f^zLxRWe!43Ljc&Q_joUO#a`#_+lU z;1|EY-UjLG{uTN^!M|ksi6sF58Q?q`f?A{z0su(}0N^eGQ->-5xC^F(_auQcPe5^h z{XA@-;Jg5UBIJ>en}eOb$E6$Bu8Ci|1um`4B{f$oLH@~^cNT}(Ax4gIG2DRDAt;_&21$R<_F&h zXW;JN-f{*pRDf0RozLC018?_AphSeT)H-TZR6VTwTx@o*M7WY^5pq@ zPoSHHgH>-d5~O=N@+mi`bbs-9O8=CnU-Yd&Zf}9T&VU`*>H_|L$>jbwe1YF`XY2Zs z>2E!kPRFnb)7t-yls3N^NdR~V(mR#A%k{@XNP=8Uy+z6&qI@HwUXrr#=+)$hHp7 zHa|Ol-TtKeH<R$gHLew9O3y3M8qIMB?WK>4w`yz-dl#?x0B=h+oLG}G$#BRPa0x&>Y!qN8VE zWa8xF=Hb06A}S^>At|MJTS-|(RZU&*p1y%0=;E!cZEWrA9UR>~JiWZ3KE6T0A)#U6 z5zk^`U&qBKyh%*T%*xJrmz$SgP*z@1Sylb9rnaTEt-Yi3^Ovs!gG0k3qhsR}i1~%@ zi%ZKZt81w3o!!0t1N7n1sa&UW{`LB&a)Fb8cZPrfpMdaGF1$0|r-D-woV|Sg9Mvry zLd(b0S8hB#PowZE<3sZWc41v4?L)VIB03Hc1SjfLw4ajw*8~gvA4&E%!Tv7S1VDn1 z2QD5yB_I!ATQ<|0<;c)>Un_(uUS03CW zg_sQ45_RxN6Kf>bMUc^+pHfm5bbGE}$`!NZc)f0m+lF?!+EQKp`s_`3%Zm%q%l;Mx;)Zz`WO5{Q) z=Tyb$YRT=I=T{D>?fIsNa^Qf+wgV}S4x7o5x-OzwqZ;o@r;fs~w1lnEM>M+@82bA- zU|aN|GaE8b?jpP|HxmcU)pp{5S9$m$=rqJua1$|%1wA=0_F=ADY)2bu5$YLDshK;z z>ZNPp7~@doHf6kWWkR;`(gB)WU4Cm8tx5`m}^pY=~(6_sryRvrSC= z*5|}-1*+sa9nEpqW6q_S$nG=_Y^&6}a+J6-I%SS+g8fsxFQg+n1j{=pBou-JS|haq zu~OvmyxhxF9;88z6JqJ+SL`}noPpvSUOu6nj{ zZJKPst&iQ}(&8=fxX0ggX+13tn%bB_N3Sj z@4Bc*C7T)7RTpmhreUsJ9`B#o*j+;bT< z)cjEO$&S?ZnMH3b3)FKsdFAYSb=>)kawItm)Nc%QrOK_RHLx)5HT`jZmc+@?_t?nf zSM>VfNHZ%O@OcPtF_rCfrJ|qV0LltUjC791JBM2Cr-IHd<{kZ+l}Y=g0i~=2_UgAs zxp?j@(%xyjBi-fW6lEKer8I7?Tk1VLIc_9A%va}CxB2bCWT~0h2E*O5#)z&-v&p(e zLzqfF4rob7KgIzHsgXD!@CO@KxhN{=k2(bS%O4wxg@B4{xV|v=xCH7qXV=mcag^5f z5q25ln9vG4Uz4CTBEyYH5!XkuJ>lOgWwkfn3Y6jXT$n6ua6>vC?MM5`ewU+2R_NDk z%qryX8V$=~94wX7cG67>3gPS0=M|Ow*xccESIs^rS6sN^g{hL7f`?V_dWN{1Z&hUZ zGcC&cp)6M0nG(VMGKcaX(F7O)v_&3TzLkDoMFF*!GZXU8)C4*$vPD9Ja=u}FyB{5) z9VXJn0z{dqHcn@b8#~zbbca;Xbx4dR`D&?kzS@y)ojEYWvia0FRM$^#P7bXE)jvF} z*=!V$-IAp;KIEulQTgKv#r)&U_&{2=!pw*%s}{Sz3Q-1UU;@8?ifc{v;M7fPx^nTMM_s(#SEo zv&?eBj^^^{j0_dz*1B;?(BlOc4`@6aG1{=TZ&mKh@NSC5o#gvc748tv-kgxu!9uO% z6mB{HJNf$gy%NV))l($hXN2Nq-VVeqC3$^ljwsblQGX^XDQU0lf#{;&aIDdEXU~oB+M*@K!~X*pB`Htkp_r-#o|Dj^tp%JISTVZ=WwW ze)1bup3mENCrPa$Wx$1d+CpV#YE!c!*}#Qs)NVLn=^qS5k(bw zT7#Dtl`%fFC5-e(DhD`-ThGQm@Y!mf4P(79+QB;&F}=U^vv^JkRYB~HhWp!O`Rm9@2M%oWMGBBY zJY2NKF=zdp@}{TMJyVo>oES<(E*e5){;VRJWCrSV51l9;2yw<}+97d(`cO%|S>DQM zeD%JR2y&{$0^ePIcK;h%oA8+&2h^#(i5lZMM~HSpNJCiGx)-zw#e#~sgJN3_%sEHv z)r!#Ccag(Q5g7JtXuw8hpG_l5IpLkjTI%JYT^Dwhn0*{zG$^q7gvS&+$ws)xD1&D; z*A&4<3A?mrE`tu4(+0G2?LqB_Twy&|hiYnffKiUGSx^a9vJoj-&D{=b_w}k{O|+U% ztf<2Q)Z$@#3>ZneEDrTH{2_n%u_8tgZB+stRYk$uaRB4EDMl{3b!0|(c)gL;QL6E2 z#t%6@DQc)oEwxiUPE$8*62}n{g&dxbR5padMN0l|->e#gu7D?T@pinttV<*Wpg3frg_= z=4m*9xU_SGDFoX%!!%UnnHGY*+z*kVFH&0|)&?Bn!BDwTseRVC8@Vc@v>>3U4XQ;* zE-KUhB{T_pG%O-16tCH$&XxrO{S+C-4ynCB*hwA+r}7V&?NO#c;S`^tNKY>o~6nURzzK4|QMe6-7kjL-scX;?K=PHwA!w_d+zDeG!s z!Iu)Wa0}B&+T3J{P=`4evdx&RM*NuvoWyLcdgfx}?GcOnp?wasbla-g*!-a?nv*yirtlyJ|E^B}}k*k?89hM__=UYWBohNnIae z_`Vxn=7wXkcC8m2Hn%rxp{tKfZG4uODmzL^sgTK)mR@iruce@1HADX%Kzmx!Be{#; zgrGywpO7CNU;%pzOi4OEmJ&h<@52G5@VRp#IN<9Vuz+Ekb5UsaR}}$WfRh*85#`n3 z1JxZ=eK|EVH5IYxYT9kXHOOBk>>O=vPeyx_RyR3~FJV0RK~pR91lG5%%!-zlqj6|a z9KIA+y4|-f|N9~HdH&Fle%_+F_FJsVWA3O*yN}_NG+Q}P&*kuo-&KSiY*m}5#?OE9 z?;Ps)u59fsb%UUl>XmSSBDMhsJYk~80epD?4hS}Bv)GmYF^k5_fN$46VZu_6epiXY z_?6yJEqd{;Q?ZrrOc9yLoDac^^K!ecguHX|1dhhuK{D6va?rgd@84JV?S3vUX0Pb~ ze*fW%9)^CIFGbdIpY<8--0pu*t<+1-m(;SL`Tl()vu+s6(LzM=oE>&Qht}KMCUZ1@ z1l+(1%nKc{?QLOzzNSMnU7dwlvPJZ#RAS^@pMd`buGo{<2hNjs>qkZoz8-T(!v@~3 zZcueqpB)kRAW=26X_hLrwCUcMENi-&>$F$7>}P&F)_&|)=O=A8u^r>JbHLgpzXO*= z({1U#KPhbFnpjO`s_er`L(35-p>^|;l_z$cx@hlqIJrODypg|bwxh99;pEgxyqB+7 zU8#j)W+#Ui{V1iARON86xWT*q`@U;_@`ZY?`kd;*4sIO@B6d78-8<$R%G;}(+3UNK z85?pRbU4rIcP7s03-Bmyzia4ZVIC~3i;K?nWQ6fGR?hXJRX6IXS@KXfm@U>P8?3(` zG>tR8kFpV7Z8jk1`PTDQWAj3YbJ9Y>hw|_H^|P~gt5ZM3!o$9;g;gyb49l5FZ-3P? zTy<*Z^RAO|zyS}oo|c}uFWwr(eatFAHmXvMJVO8IypUl$b04Za`AG`?+ z9!>%6?O=+IsJB2cPm}8)PdY;}I>iiD^&=uWPWfs9cJF#xMm0uVL>m0mpLOXEy12eP zqaiewiwJm8KG#bj6lV8v7(*U_DAv}l`G}5OkmoaMLTW$X6AG6*{}E*qRoqaLHm^80 zOZP*nqY&}2bmNYcpJVm=L$~%T{0~^jqv6(|srze;U>r)&)va`+?*0mzXW$GDRWJz@ zEG6AZ3RK_duqFgGDtm&Zh&Z=%0YXw5Trb2LHP16|^5zP1|3$3IBYw+I=Mn;OfUP_M zl(?;y{&~GTLiQrGytVHg7ay%%mj689Ss$l)KL9@fENTod{*EnWr z9>0!$K-jc}3d0%rz1sl zkPhm$`L$7O_X0WHgahpA$a-Z8TU)I(x=<~UwrtcHBRlUxsDWY&TNhjqn=mgW8Kua0 zc63Dik}OT-B-x)b9WCA=2Mp9xA_^fy&|^et7>oj4dIy}Qu(mR|qrV(7EzlLlvLbb% zCT6-spglTRa8o41hv3zW<`Q$_JHMA4z(w$57ENUQ=7HHzbdbwN>0T80DXDf{8R{U) z#RjQd?zzAKyX;t-+u9^3+elJBit!{c=S2}asDE%Werdmz8LQ>};Q`5s%02~}tw26p zumr}u5@dif+fOWlCbUtYJKOV1ov`eEr83faQ15o*ne0B9q|OM8xHlq2wt^I*r%~4+ zHuJ-DFiRi@9c1{S4p{SNKW4|sBIVlz$mhet>P2Z-`H}06N7e~)GN`zv7qvA=+Jsi( zQX110s@9WO&-r4NPsXl^h+;+4q~YAuPVFii)e@4OJ9x?S(PLeRgvibMTb_kzJGM!z zSi-#Sgb@@6bkI%Mg~2Y*h=Ds2Ca8wG*uW~5b+let^dvw=Nw&Cda;>Z6hn#0wW4`YW z;AKHBcOI&Z=zURHN&yvao*+w@Pg^&r7!pmaSDfct6>_fE5qmz0s-2$v7A4x&2=v*c zS~0wANWVIs6fnn%YU*Iy*+TSU$cCB@O>UmU0SxforZ9P=v@Q-qP69Vq37a_C@rrYU#n_#}_6W47EMUqw8tk*hz5QB~<)9BdpZO zt@b7g(6r8?-3B$#5V}%Jy4VK-d*o>K%u4a=CovRdmDT&A%};8d%;+SJ3kRw#RX^vc zcw4w#UAwR66`()pJzA2QVlL=evY{mEZMQ+yl#6pn%wPCGh+(_o2nY4v@ z#L{{(lUs(8WS(ABW-f!ey6)q;rRUa%b|N)tH+0K1T*!=d^O=TqgI+KCNc1>})D+cN z&y~_T*-tc<8hY<_WX(sjIvS4#u@7Te+cR6~BVz3BSh=4er%XxN3~yIard*k{UG#qW z)hsYPe60QHMd1*h!j@|3rq=aEHp6ebgVp9MKZ4gJjXe(OYV-4*w#@>xO|Zi#wiDtD zI3Orb{*bCnlzhX25(o6XPeV%ufz?wU;P(hm{=5D7X|+T3H~qCUuOsIp=#@|msyLt$ zAw66wBfcaFFSGP7%M*L4ahOQpA_=U>SNf}fC8-wp+!{Idb~^sCVH*;9x(WwCA6(pJNGFT_kBa|?$s_Y?@l9=P zWay(4BIEy1^6CMVVv$0~kV$7KkIMzqy$Q9>JE;|T;11Oh9gPhM2Gx3q4HI#bl@mER zzt!4J+{}7$pi-Mspz78mT#_Ic1oIAtc+0eh#XD7yrcF-Sif;;+bmgoE;Qkjp#^ycvMH>d zZQ*;(aPeqcl6g&r6O4OU=9W*RqA{dsAR{yk`t!hr!r$77BUC4KE*Txp)D zeotX~Z#od9QCRD@QC>61G_-VR#rI{mB7U+#zhZCAw-m!A$AkmYi{ua1mO+1Ep!^g} z^rAzXR`|$Ij%skg0u2Cfu|kv{5w+p~SP2~64zMBLpq;RR?{UCvVH)=OO~OCWxQq8k z5_rAS=;0({VVf;(F+c4@<~ zC#E<6^$d_lTt|+coCSkLlc7B3;S+N79e+_AaO*yNYq%E-Dqw;_%|;6EGhjR31NSW* zJg2+;e@#MiQiu-f>91Y-Z6f=Mq(>7uzsuqjrkiGB>y7--^5PD~k^i(>4TVtMI>8vE7RHQ$Q?_V`(UD$bvd@n4vctqb7#yoXxd z3^miGjgh_5%yP$D(tr*XNWSUEdgB7&2lgaj1^$Pnkbs1U*Iog)Tbbt5t7?yG1(O&B zb1RJEVC|5K8($HhI&Z3IsTg|&q)oMZP6yxsr1lFe4O(&k=>QIJX$qI8!17L`g>}$I z^A^EJ`w@s~jn*^@QRyw>mB$WE)B>9@Hni>Nr=xe#@9wX%US*~BJJD;et*3U>b)3lA z+wCff|>j7Fv7{}-QRj_t8nswPVRuITkNQY(;Tk&ZrGrEdT{jON^i!Nc|om9)^(t+lRr5d zf#F#jU1ehB>O_f%%V*Wznyjth9 z&iu6f(br0c5~JaKiK^u1xx8E>`Que3sh!sLI>9v=>Thi@{lWL*4n{^tOJTVM@D_H2 z#SvWvIfi-_2VkO&lEN@oVnsMAd_3d(_1$j`f=_x?Q==&t`~NO-+w;8_fNJJUtQ z)>?*$T?l1ehe$HT3)D2)S$VxtdBmFPD`hz6?H4pr-7m?)u#{{>;P$LC9X^+)4Q`5j zL03+REIlDMCd6LY#Q|8A)7sL11c%J6t7V1}LIVxtLT-jyMQb2`bTSSUsk5sI)^k|v zof~!_aHxMm>}_B`68RTyf~y4{7CCNr`g;Ad6i z7$`EEo|q;UuDfaUCRL3i#)s<(7zzJjRQzT+7K}jU2!FD*(8v^owHl@B0`TZ)Y*89oC3U!fXYjCSe0*b*^8t z)XZkSc$mFHEw7_c=35Kg9S{aIVH+z4I%;m32dt{hL?Q=OlkcMDhU)b!k7Y4hgK~7} zrZz)4(S&yLEDdOF%3jJ|Z)g*Oe$aeSd$b~Y{RCp%L^{D0-srfLx{_RH2e+=|3H^lEYmzGFt9$FcCg9o{vmKE_lW_oHHGIK{2{c}C z6Wiz1Hj9=8&t8~7d!Y-%2AOk#w!ATm{;87{^1DnZaV)tjxYGf3K`8^=x{XFOA^p6u zBA}%Uke{5Z*90@9$tF}f8SF=^j!?v|YEzYr^6ez?@Tr=Sl5dfVpt-uJ^yssF<5F5# ze--Ndsw5Lc#aEn$-4WHZJ!r0@dmLZ2U=L29u8_|?c zSrZUTWTJ%`>^`whHHQ9+abh+!$egL@dV73On%~XIsjK?WPKkGGBhxdT;^q4&szcb7 z;fE(Pl^)4~YHU5nk872Czb*53#%KZ_7Qg5J)C_;SRR1Wp3yG>Rli zDabk6xK?#k43(1i1aa3x|03Sgn=Isi6dp`9Qkl@PK66cErYo})8@mlsW?aq1>*OKD zu9^kRs*fo@#_AcqE!a4x8&SVlCFm9PdS%@Fb+Ve-v0>rb#@7wlsI4Gv$&`~4*QDCO zlG9i0u*IfIcjJXY8AvX6xKSMG6*s3%2DNIZpJ5pG*O`Y$NwI~(Sk0zp9mI{_C7gTN z$P=W7qG`O`w}rhlGihouHty&(GU~g9x#C@$g7Ib>e>BB?Z<;$acru?OJB!J!P};n^ z(WIqY(RO%XsSLLF;(kZz2q*35oUfAw`L|X*U7hYVEHF|O+ulSVs`hUY_$1+>n~YaAu?`pVqlTtc~j!hlDR{P zzTZJ(m?^uy`c5HZp)9SSrr+#@#^#3~v*R^v|DaIWFT+J?f zc=NJSlN-GIstTVUywYg@2u!jq-MtA(7A*_miuD{aF)pnHmHPV_IdD3x|i5r5*+}RK{m9IrU(Z+1flMo36`3t}>`#6> zJYYJrv*f627{C%!MNxSC^;L+_j9QKMLH=~RvS5#~Uw%9Id86;z_-1WF1jaM(hdFWd zeKc%Bh7y{>6$(eIf;oWfr~W+;lLxQzc+6P7?=UawFcQWCJ6bdY^-jEXrQR`*_q-h^ zVBEKDbn4X8u5R@*!ie=oUc%ud_?HzbXr_cp{|2PBQB0&Ap0}t;rY`|0z0^Zs{)66f0_m$xQv^aR12O~+{ zP-W|U6lrwWMX8k;c4D^u;zYq>Z$#Nvo$K)S*Yr!5 zkNYiWz`xBHp`=Z|lT|zGB}>Gp1G5Hl1+1=DI(M`id2T#6En)t~iN09!Ev=phKMOlF z+O%Q>$1sn>QDBI6{10+P=H8kVUzKG#ju?&g4&SqdqmztEIvv=j+4y!`u*kXPXTS=` z)_+#=e^`NFXJcWU_b~QDbO0tiZ&BbwyB54)r zH8Eas_mY~Fi`GXigt?8lMmg;?DbVF@soW@% zG>X{{bLs&ZZcDajww36p`Dik9LQDKC#awi!aa=t(@X`fUug|ZdeW{QPx>CRR)Uqa z+wffi6dRTZOz&P8*n-)@?^=Eq-+qhoKWQM8_ncRqY&+s;8pB>Jrk|We8Ul(TifBsYme0rMuzK~B;Is0{tLxGz^Zh^!2 zv@m^m2HnEdp`loZT#0u{)1m>rVU3hvWpMdvlT(A$JjR0BgA^ZO8|!j>YwG@LQrdG2 zXQ@-FFiLy_4@KOZDlt?-GC?0IQtZZd9t}HaWs2K>WwlUB;WSYa`M7w(p6Q~&gjRy+ z@N$O!P%5pi$JMX7n>0x|`pT497nJzaDtiuNVuK&1B*#~&(DLepUeT9r5G5#BS!>bK zDq0YXcjQY@66Z=TD^r=3>TDMZle;|PPwkS49&N3SYHxa`y9q7cllFoZ>nV@0$9PZu z2p>_iGH^!r)ci1a&(gi{^RTdN@g2g1JfJJYu?HYOficg_q9wWZfG9Xae-BI z&PF;gaz)<;gIfw{n5=oC={{3yl*0XbsW)y6Q6gO&a@ zFx?eER-cgga$`x>LCf6(E%!gd`e_A*2JLvg#3u>+BGoQJ)IkrHWnZ`8!_IeQNvDQ6 zrRWB^)lC-e|Iq4yY51QB=H5t&(hfa6I+{+Kv-dwfbBp4B(Mezhf_fL=O{ zng7TT`FRalsUQ1pO(t*Z6-C?9$VwhY_%jNHQ+H?z+dnYQ4YO#u(LNu(r<{^S7j`>F z_Lf;Wem?lg3YJ5TEyCZwzV1hN@8%@Nm{O#MJ8R?y8q!_hCoy5T>n+c>mqrE~k?L$s z8-KMs&9+b>Cka;RZNP}ihHO=xxzYa}d9Y!X;eQt?+thyIv{0mHW~}0!HRCT=*4Wd4 zqLS5U@x=jQ4^Tr=qTNfSrDG}uz6JO7Wi+Q*4Z{n0OYbOHP}Wyp{Tja!Q)0gii=jH(QeB&RN;VuXN9^7-)06Gm`({ z`L6XW_f^JwI~{Z6riRfcaEs9;-*}BoS!%FgZ?~Inxs3zLkM83AiwB{kPc@dRfpBxq z9>&$HeTYGJTI^s}@Usr#<0m}8zr5ooeV7D8lSO!~dp6pMMSi(DT=*u7P#3m$^(NuJ zykG1M_1YLMk3MAFd+~8~N#!Ps_`k&eMeX8j5O~Jg!i$(%kRO|Xo7yGYcLN@2LdWts z;0Hs6XktWs%CXE3IE80Tz0h3pG#_GbsoHa43p@?+C_XnoszT3K?3gy`Z7`vsL^BCy zcJ`)9_U&=jhjMzu$_?I99t)CR%&$j@%oKqC|E8=7E}T@!BvW}+{kpEYu6u$?Vcn8{ z6D+J{LZy8+)E#pbOcQM|w}#~|W7s~_on(q`ork(F$fbxhk_67SB_zPl*Q*39IPkl2 z4N+N;OrbUAPr|}vE*Ffg>RcL>xizmLM7+i|s#E*EJgwmv?hqZQKarh#RePo$4y~aZ zjfsDF$nF8J(z_>Mdzeh1ho2X^2ZP!}{ox9shV?FnLqus~7)W9j;lar@TEO{+uH0^M& zW~C+Ms@qa9jm`hp-j&Bgy?+0Z+@VB^63S9SO5GTy$)1d*ED>2Qin^A$Lr9cmbgdau zmUIbSYhtJ@bB$#RQI@QkY)y8_GQ(h)F@De7e)ksLe)o2Nzu$k~`RDVR*UUN3^Lakc z=Pd7Yo^u`&h&D?p1pw%E3{@ZFN3THq*%}(P*BHP(3e{pXC|LVS01yurfmd3nKYEF? z2SYXmqN*E+Dqc$6GRGuwnr&lD0!bC>1>CogmWApQ!Fv05refEnWJ#u&%2lr?rO zlY{+~DrH(FgbnZsQc(kl-JbBn+sUCd=v27)gFBkfp7D96e9zJHza0q5lt|eLFhN!P z@*Gg_yMcn)+{}w<5$$0uvF*hcU`h3hZNlG}qZ`KlPgNzZs@dp2PTwv0zUS}tEA8 z`Y(oL19_{TEE|cdQWHr9R#V%1r6x&&0ro}LUDqr46#tJ@As>8Z<_Uqe3{i})u$~Mf50WM=Y@P* zwlXR!Uf<;msn9(EhVgl*2b-!GcAAy$d^zR$IvcT{HJd1RviB0!z`Eb>Rnygq1vUBd z=xTXCvE``BJ#Uyh=?=N{Z38H#>}zmDP+u&B%tNjr@)i?sTH!;zZe&vUL)0H9BJyG1 zb(q#x!aItj+k>sHT=&HZxk?xQ;4KyZgBkqT!%OoK9`kcoU1ViZ3$bJyhwV}m-8v#h zUHv2J2DN@SkIW0)`&Bkdxk}k-`MnjXc-oVOHKmYm<|!6@rrSJu%@RHCP`p>v+t=JnE1Rvv*<9I>CCOqLs{jCbB@be7w2O zy=2)nGqYkhh=E$M8mautytzQIpxjt`c~M#ng&K95d;yCGM_dGe!9+8F;9Ba5bSdyI z4goj5Pz6AET0j!LO9YZQ#tE{T13(Z~F+eaXlx;<2S_SAgPDQ2BBQsLFb`09%$e|1Q z%|++St6q3-i=UxzywwE|_&2it_POz0X)q)i-I$vb-Lp=+jd{%0XaZ}$+Y0S#AHqNi z{C0rPo_u!+cO?RF#tmBB>)-zhJM#*7;Mrjw6w71q$qjIcs&qlG9~C4p1pn2a8B3h zsTn8^ynf%x^;>5JRqdBkwsGTi+9Vhr>|S#FoQXn)H9}j7daJDIsT@9QfJ0SRfDPoV zxf^J`NfTB0@O6CSe4_Sf(6*C1xI+2R@B!U6gPI=bJVb6%GEDn5aH{QGvMRbek2Z_K6Il$H9Uc}qm)7lorZaJkc>-LZw>^JWs+5U1YY595=GwPk8vQzB!6uawTDB0G< z&-mJ+ay>m}dT^6ChG?)q9!{KC^dcUHD=xWZ=X_YCx-F=v0(~~F-ft=VouBn`Ge3rW zEt+o3kqW#N&ua3*+jN!y#PKh-i$<&q(=ZAnWuoQ0OY7~ZrZ;TFTN}qC^npz}` z1RhhN;~6R7%uVH-809{vnjC91j5uAP!<2zEV=<-u(~RlUz?_0843MXMd|8YROjRK7 z*GM>%DL1G_%sniznX{TR#3u(;h)0U~6&${hStwBv5^Ixlw_tcb#fun@b}L31a3b3; zCRC#{dOuv_E)^ciOAz$Ld&K7sWH#};ymqwoJ=XcNi+--Vhr7#Uu`lDL$2>xPxO2B6 zeEoY_qi&P(iT13xm{IH%{SRIlghJW@Qz}TMmqR_f?UKqjby?S*DsLn(Lk}_{Fis5W zzHUXE!0_R@@-JqDgi0RPYOa4&pmaJb);;f`{)ax}d;ZoQ?MCI(k>mR2@q%0h<)cEV z?pD$WZFc&DdUyBq@@lT??Ss@^figEzbwFE?8kAomk-p@V>oNmPeAi@k}zWyNx-cxfr0$C@oTMAWcX;cC)7r;=DY)|{YgVEh_seX zjVWzEjgJAa^o9;#-=R=M+Cg@N)>;^V(#7PZ9qjNf4#Z49%?AMG|71GAl*{>`RkOs1 z<~wCmMC1#LW*EK@FiWz1(?fv&QW^@~d%pQJ8+!fr`+{e(Jz3(X_y0>i=l^Uti7Dql3^*&Ii5zC=LfoZ(G{?9UPLZj>n?* zSRV?*=s;P1`-@ln;w@0E&z}wF$N~QF&f83p*eWa6qm$RMcf)qOBRCjAWVh{v9@m`k_-GZm9rR%mlqJ@ z=26+AR``W<%z3NRm89}>?Y7Pzdg)f9^VeGD)I%{(!on0+AXpIBfEn!!cy*2cDUsVL zAw`hxoR@vw@AR)saVju#{7k)a-`k2(k=Q(!M8`;`Lza(%&ZE-TmvN{G>JM7k*3IY~ zCyHtm`ToPEGd16h$9*s1PHA&rLke!v3>9}N;<7eFBrvnlfx*PPUxUz0~^5K2{C!dK*JqoT#L>6q( z9ZogaC^<1J^+HhoXm33?vOxZFCRgLI-ekrB(|g631|j(PWYz?2uem~eoJ)4asD6eZ zi|c46y)Ol%h4L5zcS0>d9Jr?rHR?$*a@U}p3>8`5+(>!9j)caU@<;a)$t2ulrEFo$;yph>y+M(XFBZTjF%Tb#~1Yf zIThdxngXw|IW=6Ja+k^v4wyM{CO@Id1ya?B`-@5XFEi<0$D{dBP2xuy^6wnp*&Z35 z-6$f|aWMGk@#kU?Hmvi1wJLux6}F3$4gA6cLQRY$LCJf;f?eF zsbZ34dfP#PqJUkb%*flWfpIaah}#|W7wt1Vcz#E%*KiX>WRDS$LKT(5 zGlg%y_I{)S)=XMoo)Cl9a}(0ek?w5DW^fJA zv^&bV&9>`NBM}lB(k#iuuA%E6nmfy5+ms2Q+}izhfg2z)oJr*%PpnX51@cG?z|6G5 zDv)<+%%Q;rYN>aRLWlPt5GPC<{d7>ne~y5O^%4>_3y*5YW*EnAV_VE-KrmH z04Yb451gf~&WCv;0(MfH(->#weg2g$a6WW(_mUsuCw|oh6{|c!J*zFCqr;zt4;|b* zF0xBri>LjkkpsI*RAfv8yD5nFf-X~Q$bTRh;)0Xh&hMqYZ@sqomD-e&9aOCniAnOH zB%0erFz+DaEyB}r$i5`ri?*qg2d5vmZ-0cwk){xm|J0Aw~rfl?M<|XNy7TD4Fmetdj7w4D=NkLw<*5E!YXRF zstk9S_O5eK*xV}mvMUf~S26{;cm9Fq&og|EdZCyK(Y(vj8;@NaimRGFb=O(UyKy8> z5W3KLyD`$C)%`PGDa*Y?`QfN9Bw{Nky`AJO6=0cFZ&mwwu?n{a(e>1q1r+ceJIaU|wc07A!17ZFtmGc34cX*k29SGb^5 zow}stu_C^p$1*6tcgyeC9#M$d_2^2yIZ!t3%bM%7t$w@-VEajdUpIfg{Xosj|Li{Y zzWeyO7h`}DIkGu)I)oXfy*mA~}Z2n8Q39V>KGd7wlk?ef^fH~8ITPV-IA_9rf z542R0()x+hBu?GmuX;zIF-3AGR_iF~mBXy%A*kkt{E)75>-C~gH5C#Y>FHe$byvh~ zU)_L)-uABPx>)Hxa?kBIk3`xl-@&r`y_RX}$W7dbrd?$tqzB(p_Dw7Y?YXPuYa>u* zuKl3h;nea;O_i)nWRigr&I9^Dx~UGy+EOrxPiT0ZcFNI*l_NzT4r=&RM3!Tn9FVzx z-FWSfhxf2`#_-y_LaN`t+>jv$k8y zCr(k^U-WKSOT4xb$R}bqP$U&Je)*y;$XX6-TWWmb;JEQ4hd&!^tR-FBzTp$85~#)s z24CCEVJ(BTC9OX(a1i+O*1srl{gKPpD+zz%A`c1+|EXSA*A-qnmDO7L6AK71R6k?# ohmKxLzFMk&PX5s4GxGnIvBoF4z!qUQFWU%t4$J^=H2d3s0id|_8vp