From 5cd6c75bb7edb95b015ef01c420522dcba1e4af2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Wed, 20 Dec 2023 14:04:35 +0800 Subject: [PATCH] 'commit' --- .../UnitTest/ImportExcel/Bean/CellBean.java | 100 +++---------- src/main/java/UnitTest/ImportExcel/Test.java | 80 ---------- .../java/UnitTest/ImportExcel/TestAll.java | 113 ++++++++++++++ .../UnitTest/ImportExcel/createTable.java | 1 - ...xcelUtil.java => GenericTemplateUtil.java} | 138 +++--------------- .../b61a2af2-223f-4058-a675-b212e4dd9487.xlsx | Bin 0 -> 22172 bytes src/main/resource/Excel/backup.xlsx | Bin 32272 -> 0 bytes 7 files changed, 148 insertions(+), 284 deletions(-) delete mode 100644 src/main/java/UnitTest/ImportExcel/Test.java create mode 100644 src/main/java/UnitTest/ImportExcel/TestAll.java rename src/main/java/com/dsideal/QingLong/Util/{ExcelUtil.java => GenericTemplateUtil.java} (68%) create mode 100644 src/main/resource/Excel/b61a2af2-223f-4058-a675-b212e4dd9487.xlsx delete mode 100644 src/main/resource/Excel/backup.xlsx diff --git a/src/main/java/UnitTest/ImportExcel/Bean/CellBean.java b/src/main/java/UnitTest/ImportExcel/Bean/CellBean.java index 2e2c5f09..a12e063c 100644 --- a/src/main/java/UnitTest/ImportExcel/Bean/CellBean.java +++ b/src/main/java/UnitTest/ImportExcel/Bean/CellBean.java @@ -1,93 +1,27 @@ package UnitTest.ImportExcel.Bean; -import com.aspose.cells.*; -import com.dsideal.QingLong.Util.AsposeUtil; - /** - * 单元格vo - */ - public class CellBean { - private String value = "";//值 - private String backgroundColor = "";//背景色 - private String fontColor = "";//文字颜色 - - private String type=""; - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - public String getBackgroundColor() { - return backgroundColor; - } - - public void setBackgroundColor(String backgroundColor) { - this.backgroundColor = backgroundColor; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public static class AsposeAddCommet { - //工作目录 - public static String path = "D:\\dsWork\\QingLong\\src\\main\\resource\\Excel\\"; - - public static void main(String[] args) throws Exception { - //获取授权 - AsposeUtil.getLicense(); - // 打开现有的工作簿 - Workbook workbook = new Workbook(path + "\\1.xlsx"); - Worksheet sheet = workbook.getWorksheets().get(0); - //添加新的批注 - CommentCollection comments = sheet.getComments(); - comments.clear(); + * 单元格vo + */ +public class CellBean { + private String value = "";//值 + private String backgroundColor = "";//背景色 + + public String getValue() { + return value; + } - int idx = comments.add(7, 3); - Comment comment = comments.get(idx); - //System.out.println(comment.getCommentShape().getFill()); - comment.setNote("我是内容"); - comment.setAuthor("黄海"); - comment.getFont().setName("黑体"); - // 设置批注的背景颜色为黄色 - // 保存工作簿 - workbook.save(path + "\\4.xlsx"); - } + public void setValue(String value) { + this.value = value; } - public static class AsposeAddXiaLaKuang { - //工作目录 - public static String path = "D:\\dsWork\\QingLong\\src\\main\\resource\\Excel\\"; + public String getBackgroundColor() { + return backgroundColor; + } - public static void main(String[] args) throws Exception { - //获取授权 - AsposeUtil.getLicense(); - // 打开现有的工作簿 - Workbook workbook = new Workbook(path+"\\1.xlsx"); - // 获取第一个工作表 - Worksheet worksheet = workbook.getWorksheets().get(0); - // 创建下拉列表 - Validation validation = worksheet.getValidations().get(worksheet.getValidations().add()); - validation.setType(ValidationType.LIST); - validation.setFormula1("男,女,未知"); // 设置下拉列表的选项 - // 设置下拉列表的范围 - CellArea area = new CellArea(); - area.StartRow = 1; // 从第2行开始 - area.EndRow = 29; // 到第30行结束 - area.StartColumn = 0; // 第一列 - validation.addArea(area); - // 应用到工作表 - worksheet.getValidations().add(validation); - // 保存工作簿 - workbook.save(path+"\\3.xlsx"); - } + public void setBackgroundColor(String backgroundColor) { + this.backgroundColor = backgroundColor; } + } diff --git a/src/main/java/UnitTest/ImportExcel/Test.java b/src/main/java/UnitTest/ImportExcel/Test.java deleted file mode 100644 index ee3f9173..00000000 --- a/src/main/java/UnitTest/ImportExcel/Test.java +++ /dev/null @@ -1,80 +0,0 @@ -package UnitTest.ImportExcel; - -import java.io.FileInputStream; -import java.io.InputStream; -import java.util.List; - -import com.aspose.cells.Workbook; -import com.dsideal.QingLong.Util.AsposeUtil; -import com.dsideal.QingLong.Util.ExcelUtil; -import com.jfinal.kit.Kv; -import com.jfinal.kit.PropKit; -import com.jfinal.plugin.activerecord.ActiveRecordPlugin; -import com.jfinal.plugin.activerecord.Record; -import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory; -import com.jfinal.plugin.activerecord.dialect.PostgreSqlDialect; -import com.jfinal.plugin.hikaricp.HikariCpPlugin; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; - -public class Test { - public static String path = "D:\\dsWork\\QingLong\\src\\main\\resource\\Excel\\"; - - public static void main(String[] args) throws Exception { - //加载License - AsposeUtil.getLicense(); - - //告之配置文件位置 - PropKit.use("application.properties"); - HikariCpPlugin hp = new HikariCpPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), - PropKit.get("password").trim(), PropKit.get("driverClassName")); - hp.start(); - // 配置ActiveRecord插件 - ActiveRecordPlugin arp = new ActiveRecordPlugin(hp); - //配置默认小写 - arp.setContainerFactory(new CaseInsensitiveContainerFactory(true)); - arp.setDialect(new PostgreSqlDialect()); - arp.start(); - - //源文件 - String source = path + "\\source.xlsx"; - Workbook workbook = new Workbook(source); - - //1、共有几个Sheet表? - int sheetCount = workbook.getWorksheets().getCount(); - - //2、读取每张表的表信息 - String[] tableNames = {"ds_source_1", "ds_source_2", "ds_source_3", "ds_source_4", "ds_source_5", "ds_source_6", "ds_source_7"}; - if (sheetCount != tableNames.length) { - System.out.println("上传的EXCEL中 Sheet表数量为" + sheetCount + "个,但给定的名称数量共" + tableNames.length + "个,两者不匹配,程序无法继续!"); - return; - } - //表名,研发人员在界面上录入,程序需要检查此表名是不是存在,如果存在返回错误信息,不存在,则可以生成创建表的SQL语句 - InputStream is = new FileInputStream(source); - XSSFWorkbook wb = new XSSFWorkbook(is); - for (int i = 0; i < sheetCount; i++) { - String tableName = tableNames[i]; - //开发时暴力删除掉原表,在正式上线前要注意:不能简单粗暴的删除!! - ExcelUtil.dropTable(tableName); - - //判断表是不是已存在 - if (ExcelUtil.isTableExist(tableName)) { - System.out.println("表" + tableName + "已存在,不能删除,程序无法继续!"); - return; - } - try { - Kv kv = ExcelUtil.getTableStructInfo(wb, i); - if (!kv.getBoolean("success")) { - System.out.println(kv.getStr("message")); - return; - } - ExcelUtil.createTable(tableName, kv); - } catch (Exception err) { - System.out.println("“" + wb.getSheetName(i) + "”表配置错误,请检查后重新上传!"); - System.out.println(err); - wb.close(); - return; - } - } - wb.close(); - } -} diff --git a/src/main/java/UnitTest/ImportExcel/TestAll.java b/src/main/java/UnitTest/ImportExcel/TestAll.java new file mode 100644 index 00000000..e8b4acfd --- /dev/null +++ b/src/main/java/UnitTest/ImportExcel/TestAll.java @@ -0,0 +1,113 @@ +package UnitTest.ImportExcel; + +import java.io.FileInputStream; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +import com.aspose.cells.Workbook; +import com.dsideal.QingLong.Util.AsposeUtil; +import com.dsideal.QingLong.Util.GenericTemplateUtil; +import com.jfinal.kit.Kv; +import com.jfinal.kit.PropKit; +import com.jfinal.plugin.activerecord.ActiveRecordPlugin; +import com.jfinal.plugin.activerecord.Record; +import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory; +import com.jfinal.plugin.activerecord.dialect.PostgreSqlDialect; +import com.jfinal.plugin.hikaricp.HikariCpPlugin; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +public class TestAll { + public static String path = "D:\\dsWork\\QingLong\\src\\main\\resource\\Excel\\"; + + //模拟上传文件的文件名称 + public static String upload_excel_filename = "b61a2af2-223f-4058-a675-b212e4dd9487" + ".xlsx"; + + /** + * 功能:模拟前端人机交互对表结构进行修改 + * + * @param toDoKvList + * @return + */ + public static void change(List toDoKvList) { + int cnt = 0; + for (Kv kv : toDoKvList) { + List _list = (List) kv.get("list"); + for (Record record : _list) { + record.set("column_type", "varchar(2048)"); + record.set("allow_blank", false); + } + cnt++; + kv.set("table_name", "ds_source_" + cnt); + } + } + + public static void main(String[] args) throws Exception { + //加载License + AsposeUtil.getLicense(); + + //告之配置文件位置 + PropKit.use("application.properties"); + HikariCpPlugin hp = new HikariCpPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), + PropKit.get("password").trim(), PropKit.get("driverClassName")); + hp.start(); + // 配置ActiveRecord插件 + ActiveRecordPlugin arp = new ActiveRecordPlugin(hp); + //配置默认小写 + arp.setContainerFactory(new CaseInsensitiveContainerFactory(true)); + arp.setDialect(new PostgreSqlDialect()); + arp.start(); + + //源文件 + String source = path + "\\"+ upload_excel_filename; + Workbook workbook = new Workbook(source); + //共有几个Sheet表? + int sheetCount = workbook.getWorksheets().getCount(); + + //解析上传EXCEL中的每个Sheet,解析出表头信息,表名描述等信息 + InputStream is = new FileInputStream(source); + XSSFWorkbook wb = new XSSFWorkbook(is); + List kvList = new ArrayList<>(); + + for (int i = 0; i < sheetCount; i++) { + try { + Kv kv = GenericTemplateUtil.getTableStruct(wb, i); + if (!kv.getBoolean("success")) { + System.out.println(kv.getStr("message")); + return; + } + kvList.add(kv); + } catch (Exception err) { + System.out.println("“" + wb.getSheetName(i) + "”表配置错误,请检查后重新上传!"); + System.out.println(err); + wb.close(); + return; + } + } + //提供给前台进行修改属性(现在这里是模拟的前端处理后的代码) + // (1)整体上需要添加一个参数:table_name + // (2)list中每个 Record 添加属性:column_type,allow_blank,在JAVA中,函数的参数是一个List时,是按参数引用的,所以,直接修改即可 + change(kvList); + + //开发时暴力删除掉原表,在正式上线前要注意:不能简单粗暴的删除!! + for (Kv kv : kvList) { + String tableName = kv.getStr("table_name"); + GenericTemplateUtil.dropTable(tableName); + } + //判断表是不是已存在 + for (Kv kv : kvList) { + String tableName = kv.getStr("table_name"); + if (GenericTemplateUtil.isTableExist(tableName)) { + System.out.println("表" + tableName + "已存在,不能删除,程序无法继续!"); + return; + } + } + //检查通过,处理建表逻辑 + for (Kv kv : kvList) { + String tableName = kv.getStr("table_name"); + GenericTemplateUtil.createTable(tableName, kv, upload_excel_filename);//创建表 + } + System.out.println("恭喜,所有的表格创建成功!"); + wb.close(); + } +} diff --git a/src/main/java/UnitTest/ImportExcel/createTable.java b/src/main/java/UnitTest/ImportExcel/createTable.java index 349f4b9e..4c16793f 100644 --- a/src/main/java/UnitTest/ImportExcel/createTable.java +++ b/src/main/java/UnitTest/ImportExcel/createTable.java @@ -1,6 +1,5 @@ package UnitTest.ImportExcel; -import com.dsideal.QingLong.Util.ExcelUtil; import com.jfinal.kit.PropKit; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory; diff --git a/src/main/java/com/dsideal/QingLong/Util/ExcelUtil.java b/src/main/java/com/dsideal/QingLong/Util/GenericTemplateUtil.java similarity index 68% rename from src/main/java/com/dsideal/QingLong/Util/ExcelUtil.java rename to src/main/java/com/dsideal/QingLong/Util/GenericTemplateUtil.java index aaa8146b..0bd33fad 100644 --- a/src/main/java/com/dsideal/QingLong/Util/ExcelUtil.java +++ b/src/main/java/com/dsideal/QingLong/Util/GenericTemplateUtil.java @@ -5,10 +5,7 @@ import com.jfinal.kit.Kv; import com.jfinal.kit.StrKit; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; -import org.apache.poi.ss.formula.eval.ErrorEval; import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.usermodel.DateUtil; -import org.apache.poi.util.LocaleUtil; import org.apache.poi.xssf.usermodel.XSSFColor; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -16,12 +13,11 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; -public class ExcelUtil { +public class GenericTemplateUtil { /** * 功能:移除小括号,以及小括号内的文字内容 * @@ -35,18 +31,6 @@ public class ExcelUtil { return output; } - /** - * 功能:移除字符串中的数字 - * - * @param input - * @return - */ - public static String removeNumbers(String input) { - String regex = "\\d+"; // 匹配数字的正则表达式 - String result = input.replaceAll(regex, ""); // 使用replaceAll方法将匹配到的数字替换为空字符串 - return result; - } - /** * ) * 获取单元格vo @@ -57,54 +41,6 @@ public class ExcelUtil { private static CellBean getCellBean(Cell cell) { CellBean dto = new CellBean();//创建单元格对象 if (cell != null) { - //值 - switch (cell.getCellType()) { - case NUMERIC://导入数据,没有支持到时间的,一般都是到日期为止 - if (DateUtil.isCellDateFormatted(cell)) { - DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", LocaleUtil.getUserLocale()); - sdf.setTimeZone(LocaleUtil.getUserTimeZone()); - dto.setValue(sdf.format(cell.getDateCellValue())); - dto.setType("date"); - } else { - String type; - Long longVal = Math.round(cell.getNumericCellValue()); - Double doubleVal = cell.getNumericCellValue(); - if (Double.parseDouble(longVal + ".0") == doubleVal) { //判断是否含有小数位.0 - type = "int"; - } else { - type = "float8"; - } - DataFormatter formatter = new DataFormatter(); - dto.setValue(formatter.formatCellValue(cell)); - dto.setType(type); - } - break; - case STRING: - dto.setValue(cell.getStringCellValue()); - dto.setType("varchar(1024)"); - break; - case BOOLEAN: - dto.setValue(String.valueOf(cell.getBooleanCellValue())); - dto.setType("bool"); - break; - case FORMULA: - dto.setValue(cell.getCellFormula()); - dto.setType("varchar(1024)"); - break; - case BLANK: - dto.setValue(""); - dto.setType("varchar(1024)"); - break; - case ERROR: - dto.setValue(ErrorEval.getText(cell.getErrorCellValue())); - dto.setType("varchar(1024)"); - break; - default: { - dto.setValue("Unknown Cell Type: " + cell.getCellType()); - dto.setType("varchar(1024)"); - } - } - // xlsx 07版 //背景颜色 CellStyle cellStyle = cell.getCellStyle(); XSSFColor xssfColor = (XSSFColor) cellStyle.getFillForegroundColorColor(); @@ -124,7 +60,7 @@ public class ExcelUtil { * @return */ public static List getHead(XSSFSheet sheet) { - List _list = new ArrayList<>(); + List list = new ArrayList<>(); //整行都是同一种非空白颜色,视为表头 // 遍历行 for (int i = 0; i <= sheet.getLastRowNum(); i++) { @@ -138,45 +74,17 @@ public class ExcelUtil { Cell cell = row.getCell(j); if (cell == null) continue; CellBean eo = getCellBean(cell); + //记录背景颜色数量 if (_map.containsKey(eo.getBackgroundColor())) _map.put(eo.getBackgroundColor(), _map.get(eo.getBackgroundColor()) + 1); else _map.put(eo.getBackgroundColor(), 1); } if (_map.size() == 1 && _map.entrySet().iterator().next().getKey().startsWith("#")) { - _list.add(i + 1); + list.add(i + 1); } } } - return _list; - } - - /** - * 功能:根据样例数据,获取生成物理表的字段类型 - * - * @param sheet - * @param st - * @param ed - * @return - */ - public static List> getStruct(XSSFSheet sheet, int st, int ed) { - List> list = new ArrayList<>(); - // 遍历行 - for (int i = st; i <= ed; i++) { - //获得行 - Row row = sheet.getRow(i); - List r = new ArrayList<>(); - //遍历列 - if (row != null) { - for (int j = 0; j < row.getLastCellNum(); j++) { - Cell cell = row.getCell(j); - if (cell == null) continue; - CellBean eo = getCellBean(cell); - r.add(eo.getType()); - } - } - list.add(r); - } return list; } @@ -235,16 +143,18 @@ public class ExcelUtil { /** * 功能:获取表结构信息 */ - public static Kv getTableStructInfo(XSSFWorkbook wb, int sheetIdx) { + public static Kv getTableStruct(XSSFWorkbook wb, int sheetIdx) { Kv kv = Kv.create(); //读取sheet页 XSSFSheet sheet = wb.getSheetAt(sheetIdx); //找到表头 List _list = getHead(sheet); + //表名称 + String sheetName = wb.getSheetName(sheetIdx); //只允许1行或2行 if (_list.size() == 0 || _list.size() > 2) { kv.set("success", false); - kv.set("message", "表 “" + wb.getSheetName(sheetIdx) + "” 没有正确设置表头背景色,要求表头可以为一行或两行,而且必须背景色是同一种非空白颜色!"); + kv.set("message", "表 “" + sheetName + "” 没有正确设置表头背景色,要求表头可以为一行或两行,而且必须背景色是同一种非空白颜色!"); return kv; } // 标题,定义为表头上面的部分 @@ -275,10 +185,11 @@ public class ExcelUtil { } } kv.set("success", true); - kv.set("message", "信息获取成功!"); + kv.set("message", "表结构获取成功!"); kv.set("list", list); kv.set("data_start_row", ed.getRowNum() + 1);//真实数据的起始行索引 kv.set("column_num", ed.getLastCellNum());//一共多少列 + kv.set("sheet_name", sheetName); return kv; } @@ -289,9 +200,9 @@ public class ExcelUtil { * @param input * @return */ - public static Kv createTable(String tableName, Kv input) { + public static Kv createTable(String tableName, Kv input, String upload_excel_filename) { List list = (List) input.get("list"); - + String sheetName = input.getStr("sheet_name"); String colSql = "", commentSql = ""; for (Record record : list) { String column_name = record.getStr("column_name"); @@ -309,35 +220,26 @@ public class ExcelUtil { finalSql += "COMMENT ON COLUMN \"public\".\"" + tableName + "\".\"id\" IS '主键,自增长ID';\n"; finalSql += commentSql; + finalSql += "COMMENT ON TABLE \"public\".\"" + tableName + "\" IS '" + sheetName + "';"; Db.update(finalSql); //写入模板与表结构的关系t_importexcel_mapping String sql = "delete from t_importexcel_mapping where table_name=?"; Db.update(sql, tableName); - List writeList = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { Record record = new Record(); record.set("table_name", tableName); - record.set("column_name", record.getStr("column_name")); + record.set("column_name", list.get(i).getStr("column_name")); record.set("excel_column_idx", i + 1); - record.set("memo", record.getStr("memo")); - record.set("column_type", record.getStr("column_type")); - list.add(record); + record.set("memo", list.get(i).getStr("memo")); + record.set("column_type", list.get(i).getStr("column_type")); + record.set("upload_excel_filename", upload_excel_filename); + writeList.add(record); } Db.batchSave("t_importexcel_mapping", writeList, 100); - //写入t_importexcel_config - sql = "delete from t_importexcel_config where table_name=?"; - Db.update(sql, tableName); - Record record = new Record(); - record.set("table_name", tableName); - record.set("excel_module_filename", "先不写上去"); - record.set("data_start_row", input.getInt("data_start_row")); - record.set("column_num", input.getInt("column_num")); - Db.save("t_importexcel_config", "table_name", record); - Kv kv = Kv.create(); kv.set("success", true); kv.set("message", "表结构创建成功!"); @@ -419,8 +321,4 @@ public class ExcelUtil { //关闭excel wb.close(); } - - public static void main(String[] args) { - System.out.println(removeKuoHao("现状_配置(如交互式白板标明尺寸,OPS计算机标明处理器/内存/硬盘等)")); - } } diff --git a/src/main/resource/Excel/b61a2af2-223f-4058-a675-b212e4dd9487.xlsx b/src/main/resource/Excel/b61a2af2-223f-4058-a675-b212e4dd9487.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..aea8c414aef813bae9c59fa3c8410b865cf17d8a GIT binary patch literal 22172 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%0DyNcmG|waslL6Dp`xR`nYGEUU1_O?x{YQZvKQ_6 zD_;d)49|285@`jZIQcjW-xm~^@f)xL7EH_vVo@dE8rfW;P^6KWMY0$q;Q$1q0j(PK zq~ez_hp}b%j3?BG5$w=>lfY05e>!mU(Uj_ul#LK891b)=w0A;SuTQU!tEvc@n zb=IGQYAWqXREE?T;5eZk)GCc*5sunXo-$nm!*8DTBVh?M9LSj1XbyBq&irA*|2EFn@C?6N#(soZbeKsevP ziBW}9wij@wDLyoWSDlByGIn9e2dBFLi4OJyg4~y>(iP8#HVvQ>?BonyQ zOU(P`6P5|;pQ3g&tE6OZrXjJXRuiGo8vTmYHP~`Brb2SJr8m(`CF#Mf!FGz2G_%gK z5{4=ag;ynN8K{Fqy9P1c&}1TtQdKz3vFDJ#?tpVD8rpS2pkb|wf zis48gu~)|(x+$@TI#O{Gc7Oy2n$>_`rNbMXt|&EDc`|++q%ZN6I1cIV&Vcl34TE(EPzq~99?9DQRT~#&b%Z#dZ2Pq zKKUGDDwqt5rE2#0rqda~tD%z2a`4Ba5>v@SP$vb9ImKHF3^m%hV-3F@-BmKOP0LnR z387Z`fH^sju2y|51hi}6p#?4%R3heUCZX}GmNn6AHs)jh26N*h_HaWhCp)rE*ushI zrt^G6mk$q1bKbb0rE$w#CgID}SMziBz<=`a}4QhC@~ASv4xtuniH9{JW|nE4}k^*oQ!r+8=!f*IYHCsGc1-+D!^ zYID-6kP^AHP6>qFS=>#I7apzBDV!qE!?NnVnYIcBMnL~8rVW9WvIeXR`cSB4bAD0W zs$;hVi%^L|ZKW~*le7}KPjA{WM4PAJYOcVJ!dR8fPSvIHyj_;aKdxgHnEF^Sz!{HQ zr0H{)t1M~j;2R_L#US_`#`r-PKFq<`Tef$_X}Ai0tFvWCM;1oQj>xPXpJvnMO=B&$ zjSq$Ki3%T<{Sh$K-7_Hwjt|&Ldf3jI_RVu5(|I@|Kc1r#=nC1sY7-*yExOwGbzcE# zBorFbo|5B=?sVkqPX+bzBqvBWC7}w6^O{SU0~{7|+71LjR9y4SnPw$lds&94)Y%2M zW&p+s#v(U~;6fYt6$+jms1oXqAmTAUO>Avg9Ld+ki4u1MUyC0y&S_;dhlAc{MbQMa z1z;Cf+e!Q6I4G8**iQ8zqkR#4w9~+3alNq(rrAgoZZI+-H4_ znR`dDGwOPP1FQHje`=MN2{Ik+ydW%0`OwhP4m}8B3BGima&^kN8->myH88eE| ztsaK>#4bOyjw&T}hVlTOS(uL0m03K){49kwNyVtufwPHA->IjY&C@A&WuX0#dclU2 zUast^r|+!&@n|cr$Ky%qW3?>P-lUDsvN^_sTC+tHN_E2Il`)}=*is*amVDuzT7@qW zVX6`?uN*AL4`%ea5TWBsiY1Q#3dz6}tN1l+*94=Zc%FvJ2?54fUPl&-Q5}_4E9LQN zmXf5iWISImDgQc!WSJU?eOh6dpsqyLu(}W#6p$%bvE5%r;49nNub$KL8>I} zrcBjMg_p|&;q%}OulF8G2!QN(H=Fq7yk+5|3qp9}>PK_9Nh%{T1dU;ng!}8p!fx)P zY)#R*xSXQ(`xEfQ?m>}#8K9AA*A_>DWnOaHUu1guEPd|V9yHWl+&vxdtwK@P}uwllWFmx|# zx%e#R6W4>4Xx9K3c~iLh)Y}MCNfZR8QzzzE<1N9ch+|c!q`hk`I$;yFlkVJgl0dG` zh1Xj(D{n!A2(G$Z*bnY{cHO~>f0sI3fEm+`K$kHF&vPiPwdnv3dQ zKFMxduj+bx`p@sU1|9BwN2y;McppDIk1|HtQ5)kMco>}yEu^^m_@*OFHkrbH-vfGi zxtQ-eRmqV2$f!==&ZhQas>eTi1nL}RjC1FG#+!V#`ivL&3;_DkkH5Ur>IqdLvS(1G z&2Lo-P4W9YTydk#3-iGIxIW)5oMpGgk{Zgh1uMjg^9pM0pQe ze{ecJ4^9A+0q&z7N~D||`QaP*P+hstxFti1)8rmx+VTi$8IfT=z0emeM?RN|p8D3? z4iQ~Y`x6XMo<c3x3;)^7`0?txplZ za!gzfDZir}10v!t$oe7tOQSv(o%A{~4WR>q3|aX{no#I<)oiTF*ukR+9h}Ms2UJ#F z+bRMsT_kU0-%k~=S}pEI?1>wepO(5PB1_nwfsH>+W0>}AL@KQ#NeC{26E5C;xGff- zF42uQ*DtU*SLl&6mVS2p)&s2#n`5d^WZ58;Sn6-FSt2UrNz!K0K6eHg_?- z0}!Z&@0Bk>nak}G*Hqn2@=3J8AZYVpPUDfn;FHEQ7pf9jEnnq|J_KF<2Hq7y66rKY zg$sh|_Pj{k*i~IpH&?r9_cda2**?%cwuLaOe;OT&kRft2(ol12tXJw|at|c25?70!IIe^H z^k8yp$NIRM6suht9;7kU=S`4Zy-mLwyJsQzpKIlAp-Y^B19vX~xkgsHRFx`U7pdjC z*!4>K9}xW@g%h$Ae}pRolp;l^UGVK@_?;wCTO)3 z8KBZ3S3?A0Ur4v$Y6OjSljqDCU~1!+Z+Fg0OzE%(RKpgt(Se4Ej+a4183uUH^X-&+ ziyv#wr#bV3lZ956A}$JjrzGk^57_{4x>aL>fjA?f@IND4)UK~G%*AilhTTY=Q}*=$ z7ev0gv1=(_Tq#rAmiEG$iej^IQWd1C9-egrBGM4k!nw*JWHYJ~Fp+9vC$+N*8sfrz zAswB51^D|$!(ru$e(8-u&fv}O>n#A)`$prP$Ly1hjm0njf5kCbBzm;g)H`0L)}iCk z(bGX=6Y+42MzoKRdmK|MX8Sd9bw}$k-f-PyA*8Ue9iVcwzF>%~!5bNN#^>Gb>#U4` zP5wf%C%4Q$J%6^+o{W}uV{zw6Fp_&{WfbZQ3F8Tpfbw`f?Z1>Rp_vH^i8UZi_l*_w zI<%&;HWexj$>wT_@Zr@&5gNosZtde`(@!umWC7_sDD-sm6@o^}AQ5Lpk}=b}ENhhR zbo)bS(K}AR+V*>8y!~eeI*=YYpFlny5%|KX8zI7dg=fpL(%xSzmWzmfUuOf&E_OjDBsEh4+~yN? z*n*-};6czBAGH;cX7w|66j5{#+XPaCyumfnoTq#J7h~o%4z3mLp_^I!XMze>IAyQ^ zY*18Y+*v3VO!oV0uL}oC&iVe?HZ`=l&iF`6DHfazFE8a0c22J}t8_z~sH*aei?oS_ z^S~Y;eQhagtuznnA*R*pv(@&qE!4QEwQ@yy%l&2Vl->9wiKm+h!y1h|(*qmz{@Iy( z#T0M%6q~nLXSUI;kNO)+C~ey7Y4%K1w0K-&3^cJ6G>Ew68RYj1ReZ-IdSl%aW-ER7wL=%$0~{rN`xxZ5V}f(*alNK0@m zZRq(WS?YD11Tj|qq^*@-o@%-YEGp%GH+9X!uo-g&PlrA~vc=a)-j~m&-?>fx%;U4# zimzBn>kP1~l5HnQ^Wnv(M}NOvuJ}b7q8M!tg>i-;PVzXji324$z6?%g;qUCc284br zt=4kZgBK#b88~v%Ts^B4!S2nVc5DGH_ck^~N2BZ9DLH~;jFj6-F=a6+@SIwA$^cQu?%Ha6^eRNACHiruI62#7t<` z42g006K5a25;633ZzsC)FzbrhUr-mjypO4Ww&kA=Q~zX6JW$q2g14au@n&y~KZf2P zV*fb+e_6LRe#pFw4o>(s;KeW5lX^+~Tb=|X8z?1cQy*5Rls0h}QH&XGLOT-C3~a^Q49 zn-FR&SKCkRbu>dHeW+>P&IQXbP}VEslK@n4`2wWtVnRko>$g*Nl9z&LtYL`2O}sqKadLyi^hD7yrTh0uZJ+~9w> zqG<}+SUVb7JL)RA+8Q}%zfWu<32QQ)bVxxzr9Fc3>WwKgv+1E}o*W8^Hi4&a!l^B- zrWD~;SE~U@;6QfiHjD>m)7Ng(rl^l#c7<_4x@ar9B*&gk3d18%QTOmmu#(v{gxw@1&4+X^;HF73v%ONHlh*Po}jmbvs5KX zGKbp~_kqFh+Fdp}*zDAAkDXiRD_eiehp3?lVoKxAMXtEcIPwg$T44xP|6qz@?qp+> zaxuU2G=KXYmyV*-2$3y@4?pDCUMV0a*9ZHv7*W_EgdY{1O}`Qi5Xtq{WWo!{)s^rC zBoh3%hxYn*Ta{-ghufAeudbcSCTtV>FkBjFgzP}%k?tTB0DOIl-5N8W969SFmke}A z5XDk8S3X!)nS|pN(>3s+XdKv378m*KaM7CU3&k$L*-*p4clx;AiW9S`=^O#W2XHSZ zA+hhW%p=XKNaT;jz7}qdGF;K^Zdw^3eIqHKm(xQ;Z>6|SUzYq-d0$`NxJ&_okba$R z{lOIcd#}9>2>?IIJxH}ZEninCR(Eq;e2eQ9Z|K&yd z_qPA;NBdWaaB}~l_Lo=f?^XVNN%t2(uiYt85RZ^QK;P<};e{T=1^m@a>zsIdMc%C877zoYzqW%nIMjDfy2mzixcUNq+b>p`rqy0u;aXrR?W-z5fGIo6E8Q