From bce83a67feec1a409d8c0c289cd7aa535603c7a1 Mon Sep 17 00:00:00 2001 From: kerry Date: Mon, 24 Dec 2018 13:41:27 +0800 Subject: [PATCH 01/58] =?UTF-8?q?REPORT-13626=20=E6=98=A8=E5=A4=A9?= =?UTF-8?q?=E4=BC=A0=E7=9A=84=E6=B2=A1=E5=90=88=E5=88=B0final?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/gui/itextfield/UIAutoCompletionField.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/gui/itextfield/UIAutoCompletionField.java b/designer-base/src/main/java/com/fr/design/gui/itextfield/UIAutoCompletionField.java index 5672a8502..967aeddbb 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itextfield/UIAutoCompletionField.java +++ b/designer-base/src/main/java/com/fr/design/gui/itextfield/UIAutoCompletionField.java @@ -2,6 +2,8 @@ package com.fr.design.gui.itextfield; import com.fr.design.gui.imenu.UIListPopup; import com.fr.general.ComparatorUtils; +import com.fr.stable.OperatingSystem; + import javax.swing.JList; import javax.swing.UIManager; import javax.swing.event.DocumentEvent; @@ -82,6 +84,9 @@ public class UIAutoCompletionField extends UITextField implements DocumentListen } private void textChanged() { + if (OperatingSystem.isMacOS()) { + return; + } if (!popup.isVisible()) { showPopup(); requestFocus(); From 256f211d46b5507adf76af4cfbf81c9e362e4a51 Mon Sep 17 00:00:00 2001 From: "Mata.Li" Date: Mon, 24 Dec 2018 16:04:35 +0800 Subject: [PATCH 02/58] REPORT-13810 --- .../src/main/java/com/fr/design/EnvChangeEntrance.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java b/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java index 58f22d1b6..e15d81c4b 100644 --- a/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java +++ b/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java @@ -103,15 +103,16 @@ public class EnvChangeEntrance { return false; } + //REPORT-13810如果只是添加了工作目录,没有切换,这里ToolArea也是要显示新建的工作目录 + JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + if (template != null) { + template.refreshToolArea(); + } WorkContext.switchTo(workspace, new WorkContextCallback() { @Override public void done() { DesignerEnvManager.getEnvManager().setCurEnvName(envName); DesignUtils.refreshDesignerFrame(); - JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - if (template != null) { - template.refreshToolArea(); - } DesignTableDataManager.fireDSChanged(new HashMap()); if (WorkContext.getCurrent().isLocal()) { //初始化一下serverTray From f170ea04ac0e648c931f45b6bee184c9cd694c2e Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Wed, 2 Jan 2019 17:03:11 +0800 Subject: [PATCH 03/58] =?UTF-8?q?REPORT-14022=20=E3=80=90=E9=9A=BE?= =?UTF-8?q?=E8=BF=98=E5=8E=9F=E3=80=91=E6=9C=80=E6=96=B0=E7=9A=8429?= =?UTF-8?q?=E5=8F=B7release=EF=BC=8C=E8=8E=AB=E5=90=8D=E5=85=B6=E5=A6=99?= =?UTF-8?q?=E7=9A=84=E5=8D=A1=E4=BD=8F=E5=BE=88=E4=B9=85=EF=BC=8C=E5=90=8E?= =?UTF-8?q?=E5=8F=B0=E7=99=BE=E5=88=86=E7=99=BE=E7=9A=84cpu=E5=8D=A0?= =?UTF-8?q?=E7=94=A8=20=E5=90=88=E5=B9=B6=E5=8F=91=E9=80=81=EF=BC=8C?= =?UTF-8?q?=E5=8E=BB=E9=87=8D=EF=BC=9B=E6=AF=8F=E6=AC=A1query=20200?= =?UTF-8?q?=E6=9D=A1=EF=BC=8C=E6=94=BE=E5=85=A5=E5=86=85=E5=AD=98=EF=BC=8C?= =?UTF-8?q?=E5=8F=91=E9=80=81=E6=88=90=E5=8A=9F=E5=86=8D=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E6=96=B0=E7=9A=84=E8=AF=B7=E6=B1=82=20=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=88=B0final?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/InformationCollector.java | 186 ++++++++++-------- 1 file changed, 104 insertions(+), 82 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java b/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java index 61b583c61..49ad7d6a3 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java @@ -89,11 +89,15 @@ public class InformationCollector implements XMLReadable, XMLWriter { private static final String ATTR_TEXT = "text"; private static final String ATTR_SOURCE = "source"; private static final String ATTR_TIME = "time"; + private static final String ATTR_TIMES = "times"; private static final String ATTR_TITLE = "title"; private static final String ATTR_USER_NAME = "username"; private static final String ATTR_UUID = "uuid"; + private static final String ATTR_ITEMS = "items"; private static final String ATTR_FUNCTION_ARRAY = "functionArray"; private static final int MAX_EACH_REQUEST_RECORD_COUNT = 200; + private static final int PAGE_SIZE = 200; + private long totalCount = -1; private static InformationCollector collector; @@ -214,26 +218,14 @@ public class InformationCollector implements XMLReadable, XMLWriter { if (currentTime - lastTime <= DELTA) { return; } - JSONArray content = getFunctionsContent(currentTime, lastTime); - boolean success = false; FineLoggerFactory.getLogger().info("Start sent function records to the cloud center..."); - String url = CloudCenter.getInstance().acquireUrlByKind(TABLE_FUNCTION_RECORD); - try { - for(int i=0;i 0){ - success = sendFunctionRecord(url, functionArray); - } - } - //服务器返回true, 说明已经获取成功, 更新最后一次发送时间 - if (success) { - this.lastTime = dateToString(); - FineLoggerFactory.getLogger().info("Function records successfully sent to the cloud center."); - } - }catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); + queryAndSendOnePageFunctionContent(currentTime, lastTime, 0); + long page = (totalCount/PAGE_SIZE) + 1; + for(int i=1; i focusPoints = MetricRegistry.getMetric().find(FocusPoint.class,condition); + //第一次查询获取总记录数 + if(page == 0){ + totalCount = focusPoints.getTotalCount(); + } + sendThisPageFunctionContent(focusPoints); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } + + private void sendThisPageFunctionContent(DataList focusPoints) { + String url = CloudCenter.getInstance().acquireUrlByKind(TABLE_FUNCTION_RECORD); + try { + JSONObject jsonObject = dealWithSendFunctionContent(focusPoints); + sendFunctionRecord(url, jsonObject); + } catch (JSONException e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } + + private JSONObject dealWithSendFunctionContent(DataList focusPoints) throws JSONException { + JSONObject jsonObject = new JSONObject(); + Map map = new HashMap<>(); + if(!focusPoints.isEmpty()){ + DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); + String bbsUserName = MarketConfig.getInstance().getBbsUsername(); + String uuid = envManager.getUUID(); + jsonObject.put(ATTR_UUID, uuid); + jsonObject.put(ATTR_USER_NAME, bbsUserName); + for(FocusPoint focusPoint : focusPoints.getList()) { + FunctionRecord functionRecord = getOneRecord(focusPoint); + if (map.containsKey(focusPoint.getId())) { + functionRecord.setTimes(functionRecord.getTimes() + 1); + map.put(focusPoint.getId(), functionRecord); + } else { + map.put(focusPoint.getId(), functionRecord); + } + } + jsonObject.put(ATTR_ITEMS, mapToJSONArray(map)); + } + return jsonObject; + } + + private JSONArray mapToJSONArray(Map map) throws JSONException { + JSONArray jsonArray = new JSONArray(); + for(String keys : map.keySet()){ + FunctionRecord functionRecord = (FunctionRecord)map.get(keys); + JSONObject jo = new JSONObject(); + jo.put(ATTR_ID, functionRecord.getId()); + jo.put(ATTR_TEXT, functionRecord.getText()); + jo.put(ATTR_SOURCE, functionRecord.getSource()); + jo.put(ATTR_TIME, functionRecord.getTime()); + jo.put(ATTR_TITLE, functionRecord.getTitle()); + jo.put(ATTR_TIMES, functionRecord.getTimes()); + jsonArray.put(jo); + } + return jsonArray; + } + + private void sendFunctionRecord(String url, JSONObject record) { boolean success = false; try { HashMap para = new HashMap<>(); @@ -260,12 +320,28 @@ public class InformationCollector implements XMLReadable, XMLWriter { para.put("content", record); String res = HttpToolbox.post(url, para); success = ComparatorUtils.equals(new JSONObject(res).get("status"), "success"); + if (success) { + this.lastTime = dateToString(); + } else { + FineLoggerFactory.getLogger().error("Error occured when sent function records to the cloud center."); + } } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); } - return success; } + private FunctionRecord getOneRecord(FocusPoint focusPoint) { + FunctionRecord functionRecord = new FunctionRecord(); + functionRecord.setId(focusPoint.getId() == null?StringUtils.EMPTY : focusPoint.getId()); + functionRecord.setText(focusPoint.getText() == null?StringUtils.EMPTY : focusPoint.getText()); + functionRecord.setSource(focusPoint.getSource()); + functionRecord.setTime(focusPoint.getTime().getTime()); + functionRecord.setTitle(focusPoint.getTitle() == null?StringUtils.EMPTY : focusPoint.getTitle()); + functionRecord.setUsername(MarketConfig.getInstance().getBbsUsername() == null?StringUtils.EMPTY : MarketConfig.getInstance().getBbsUsername()); + functionRecord.setUuid(DesignerEnvManager.getEnvManager().getUUID() == null?StringUtils.EMPTY : DesignerEnvManager.getEnvManager().getUUID()); + return functionRecord; + } + /** * 收集开始使用时间,发送信息 */ @@ -426,69 +502,6 @@ public class InformationCollector implements XMLReadable, XMLWriter { }); } - public JSONArray getFunctionsContent(long current, long last) { - //记录当前条数,达到200条合并成一个请求 - int count = 0; - JSONArray functionArray = new JSONArray(); - QueryCondition condition = QueryFactory.create() - .addRestriction(RestrictionFactory.lte(COLUMN_TIME, current)) - .addRestriction(RestrictionFactory.gte(COLUMN_TIME, last)); - try { - DataList focusPoints = MetricRegistry.getMetric().find(FocusPoint.class,condition); - TreeSet focusPointsList = new TreeSet<>(); - if(!focusPoints.isEmpty()){ - for(int i=0;i< focusPoints.getList().size();i++){ - FocusPoint focusPoint = focusPoints.getList().get(i); - if(focusPoint != null){ - if((++count <= MAX_EACH_REQUEST_RECORD_COUNT)){ - focusPointsList.add(getOneRecord(focusPoint)); - } else { - count = 0; - functionArray.put(setToJSONArray(focusPointsList)); - focusPointsList.add(getOneRecord(focusPoint)); - } - if(i == (focusPoints.getList().size() -1)){ - functionArray.put(setToJSONArray(focusPointsList)); - } - } - } - } - - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - } - return functionArray; - } - - private FunctionRecord getOneRecord(FocusPoint focusPoint) { - FunctionRecord functionRecord = new FunctionRecord(); - functionRecord.setId(focusPoint.getId() == null?StringUtils.EMPTY : focusPoint.getId()); - functionRecord.setText(focusPoint.getText() == null?StringUtils.EMPTY : focusPoint.getText()); - functionRecord.setSource(focusPoint.getSource()); - functionRecord.setTime(focusPoint.getTime().getTime()); - functionRecord.setTitle(focusPoint.getTitle() == null?StringUtils.EMPTY : focusPoint.getTitle()); - functionRecord.setUsername(MarketConfig.getInstance().getBbsUsername() == null?StringUtils.EMPTY : MarketConfig.getInstance().getBbsUsername()); - functionRecord.setUuid(DesignerEnvManager.getEnvManager().getUUID() == null?StringUtils.EMPTY : DesignerEnvManager.getEnvManager().getUUID()); - return functionRecord; - } - - private JSONArray setToJSONArray(Set set) throws JSONException { - JSONArray jsonArray = new JSONArray(); - for(Iterator iter = set.iterator(); iter.hasNext(); ) { - FunctionRecord functionRecord = (FunctionRecord)iter.next(); - com.fr.json.JSONObject record = new com.fr.json.JSONObject(); - record.put(ATTR_ID, functionRecord.getId()); - record.put(ATTR_TEXT, functionRecord.getText()); - record.put(ATTR_SOURCE, functionRecord.getSource()); - record.put(ATTR_TIME, functionRecord.getTime()); - record.put(ATTR_TITLE, functionRecord.getTitle()); - record.put(ATTR_USER_NAME, functionRecord.getUsername()); - record.put(ATTR_UUID, functionRecord.getUuid()); - jsonArray.put(record); - } - return jsonArray; - } - private class StartStopTime implements XMLReadable, XMLWriter { private String startDate; @@ -533,6 +546,7 @@ public class InformationCollector implements XMLReadable, XMLWriter { private String text; private int source; private long time; + private int times = 1; private String title; private String username; private String uuid; @@ -548,6 +562,14 @@ public class InformationCollector implements XMLReadable, XMLWriter { this.id = id; } + public int getTimes() { + return times; + } + + public void setTimes(int times) { + this.times = times; + } + public String getText() { return text; } From 3e57d8a624c3b97970b1b55a6cf71cd3416e9b55 Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Wed, 2 Jan 2019 18:35:50 +0800 Subject: [PATCH 04/58] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=AC=A1=E6=95=B0bugfi?= =?UTF-8?q?x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/mainframe/InformationCollector.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java b/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java index 49ad7d6a3..b71144774 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java @@ -285,7 +285,8 @@ public class InformationCollector implements XMLReadable, XMLWriter { for(FocusPoint focusPoint : focusPoints.getList()) { FunctionRecord functionRecord = getOneRecord(focusPoint); if (map.containsKey(focusPoint.getId())) { - functionRecord.setTimes(functionRecord.getTimes() + 1); + int times = ((FunctionRecord)map.get(focusPoint.getId())).getTimes() + 1; + functionRecord.setTimes(times); map.put(focusPoint.getId(), functionRecord); } else { map.put(focusPoint.getId(), functionRecord); From eeff85a4b294c40c4a6d78fb87a2c03149464604 Mon Sep 17 00:00:00 2001 From: XiaXiang Date: Wed, 2 Jan 2019 19:02:18 +0800 Subject: [PATCH 05/58] =?UTF-8?q?REPORT-14020=20=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E6=89=93=E5=BC=80=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=20=E8=B0=83=E8=AF=95=E7=9A=84=E4=BB=A3=E7=A0=81=E4=B8=8A?= =?UTF-8?q?=E6=AC=A1=E8=AF=AF=E4=BC=A0=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/utils/DesignUtils.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java b/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java index 77173cebb..240176eef 100644 --- a/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java @@ -65,12 +65,12 @@ public class DesignUtils { * @return 启动了返回true */ public static boolean isStarted() { -// try { -// new Socket("localhost", port); -// return true; -// } catch (Exception exp) { -// -// } + try { + new Socket("localhost", port); + return true; + } catch (Exception exp) { + + } return false; } From 4db0d2b9967f795732728a16e1f945d9be6e59c7 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Wed, 23 Jan 2019 17:35:11 +0800 Subject: [PATCH 06/58] =?UTF-8?q?REPORT-13202=20=E5=8C=85=E5=90=AB?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E6=8E=A7=E4=BB=B6=E7=9A=84=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E7=8E=AF=E5=A2=83=E5=90=8E=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E5=87=BA=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/DesignModelAdapter.java | 2 +- .../design/file/HistoryTemplateListCache.java | 78 +++++++++++++ .../design/mainframe/AbstractAppProvider.java | 10 +- .../fr/design/mainframe/DesignerFrame.java | 68 ++++------- .../fr/design/mainframe/JTemplateFactory.java | 63 +++++++++++ .../main/java/com/fr/file/StashedFILE.java | 106 ++++++++++++++++++ .../mainframe/app/DesignerAppActivator.java | 6 +- .../com/fr/start/module/DesignerStartup.java | 61 ++++++---- 8 files changed, 319 insertions(+), 75 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/mainframe/JTemplateFactory.java create mode 100644 designer-base/src/main/java/com/fr/file/StashedFILE.java diff --git a/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java b/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java index 4ebc64103..84fd684ae 100644 --- a/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java +++ b/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java @@ -134,7 +134,7 @@ public abstract class DesignModelAdapter stashFILEMap; + + /** + * 切换环境前将正在编辑的模板暂存起来,并且在新环境中重新读取一遍,暂存的不是模板文件的内容而是模板对象的内容 + *

+ * 防止新环境加载到的同名 Class 和模板对象中的 Class 不一致,在新环境存储失败 + * + * @see HistoryTemplateListCache#load() + */ + public void stash() { + FineLoggerFactory.getLogger().info("Env Change Template Stashing..."); + if (stashFILEMap == null) { + stashFILEMap = new HashMap(); + } else { + stashFILEMap.clear(); + } + int size = historyList.size(); + for (int i = 0; i < size; i++) { + JTemplate template = historyList.get(i); + FILE file = template.getEditingFILE(); + try { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + BaseBook target = template.getTarget(); + if (target != null) { + target.export(outputStream); + stashFILEMap.put(i, new StashedFILE(file, outputStream.toByteArray())); + } + // 如果 target == null 那么这个模板是被模板内存优化功能处理过的,不用处理 + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } + FineLoggerFactory.getLogger().info("Env Change Template Stashed."); + } + + /** + * 切换环境前将正在编辑的模板暂存起来后,在新环境重新读取一遍 + *

+ * 防止新环境加载到的同名 Class 和模板对象中的 Class 不一致,在新环境存储失败 + * + * @see HistoryTemplateListCache#stash() + */ + public void load() { + FineLoggerFactory.getLogger().info("Env Change Template Loading..."); + if (stashFILEMap != null && stashFILEMap.size() != 0) { + int size = historyList.size(); + for (int i = 0; i < size; i++) { + try { + FILE stashedFile = stashFILEMap.get(i); + // 可能有模板 stash 失败的情况,在 load 的时候不更新它 + // 或者这个模板是被模板内存优化功能处理过的,不用处理 + if (stashedFile == null) { + continue; + } + JTemplate template = JTemplateFactory.createJTemplate(stashedFile); + if (template != null) { + historyList.set(i, template); + } + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } + stashFILEMap.clear(); + MutilTempalteTabPane.getInstance().refreshOpenedTemplate(historyList); + MutilTempalteTabPane.getInstance().repaint(); + } + FineLoggerFactory.getLogger().info("Env Change Template Loaded."); + } } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/AbstractAppProvider.java b/designer-base/src/main/java/com/fr/design/mainframe/AbstractAppProvider.java index 95a969635..cc859ce17 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/AbstractAppProvider.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/AbstractAppProvider.java @@ -8,7 +8,7 @@ import com.fr.stable.fun.mark.API; * Created by Administrator on 2016/3/17/0017. */ @API(level = App.CURRENT_LEVEL) -public abstract class AbstractAppProvider extends AbstractProvider implements App{ +public abstract class AbstractAppProvider extends AbstractProvider implements App { public int currentAPILevel() { return CURRENT_LEVEL; @@ -21,12 +21,12 @@ public abstract class AbstractAppProvider extends AbstractProv @Override public void process() { - DesignerFrame.registApp(this); + JTemplateFactory.register(this); } - + @Override public void undo() { - - DesignerFrame.removeApp(this); + + JTemplateFactory.remove(this); } } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java index 7ab92165b..e148a1040 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java @@ -52,7 +52,6 @@ import com.fr.plugin.injectable.PluginModule; import com.fr.plugin.manage.PluginFilter; import com.fr.plugin.observer.PluginEvent; import com.fr.plugin.observer.PluginEventListener; -import com.fr.stable.CoreConstants; import com.fr.stable.OperatingSystem; import com.fr.stable.ProductConstants; import com.fr.stable.StringUtils; @@ -115,11 +114,9 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta private static final int MENU_HEIGHT = 26; - private static final Integer SECOND_LAYER = new Integer(100); + private static final Integer SECOND_LAYER = 100; - private static final Integer TOP_LAYER = new Integer((200)); - - private static java.util.List> appList = new java.util.ArrayList>(); + private static final Integer TOP_LAYER = 200; private List designerOpenedListenerList = new ArrayList<>(); @@ -326,7 +323,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta this.progressDialog = new ProgressDialog(this); } - public void closeAuthorityEditing(){ + public void closeAuthorityEditing() { DesignModeContext.switchTo(com.fr.design.base.mode.DesignerMode.NORMAL); WestRegionContainerPane.getInstance().replaceDownPane( TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter())); @@ -342,19 +339,22 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * 注册app. * * @param app 注册app. + * @deprecated use {@link JTemplateFactory#register(App)} instead */ + @Deprecated public static void registApp(App app) { - - if (app != null) { - appList.add(app); - } + JTemplateFactory.register(app); } + /** + * 移除app + * + * @param app app + * @deprecated use {@link JTemplateFactory#remove(App)} instead + */ + @Deprecated public static void removeApp(App app) { - - if (app != null) { - appList.remove(app); - } + JTemplateFactory.remove(app); } /** @@ -1013,39 +1013,17 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta */ private void openFile(FILE tplFile) { - String fileName = tplFile.getName(); - int indexOfLastDot = fileName.lastIndexOf(CoreConstants.DOT); - if (indexOfLastDot < 0) { + JTemplate jt = JTemplateFactory.createJTemplate(tplFile); + if (jt == null) { return; } - String fileExtention = fileName.substring(indexOfLastDot + 1); - for (int i = 0, len = appList.size(); i < len; i++) { - App app = appList.get(i); - String[] defaultAppExtentions = app.defaultExtensions(); - boolean opened = false; - for (int j = 0; j < defaultAppExtentions.length; j++) { - if (defaultAppExtentions[j].equalsIgnoreCase(fileExtention)) { - // 不要catch - JTemplate jt = app.openTemplate(tplFile); - - if (jt == null) { - return; - } - // 新的form不往前兼容 - if (inValidDesigner(jt)) { - this.addAndActivateJTemplate(); - MutilTempalteTabPane.getInstance().setTemTemplate( - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); - } else { - activeTemplate(jt); - } - opened = true; - break; - } - } - if (opened) { - break; - } + // 新的form不往前兼容 + if (inValidDesigner(jt)) { + this.addAndActivateJTemplate(); + MutilTempalteTabPane.getInstance().setTemTemplate( + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); + } else { + activeTemplate(jt); } } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/JTemplateFactory.java b/designer-base/src/main/java/com/fr/design/mainframe/JTemplateFactory.java new file mode 100644 index 000000000..c6a6f4a0d --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mainframe/JTemplateFactory.java @@ -0,0 +1,63 @@ +package com.fr.design.mainframe; + +import com.fr.file.FILE; +import com.fr.stable.CoreConstants; +import com.fr.third.javax.annotation.Nonnull; +import com.fr.third.javax.annotation.Nullable; + +import java.util.ArrayList; +import java.util.List; + +public final class JTemplateFactory { + private static final List> ALL_APP = new ArrayList>(); + + private JTemplateFactory() { + } + + /** + * 生成设计器编辑模板对象 + * + * @param file 包含了模板名称,类型以及内容的文件 + * @return 设计器编辑的模板对象 + */ + @Nullable + public static JTemplate createJTemplate(@Nonnull FILE file) { + + String fileName = file.getName(); + int indexOfLastDot = fileName.lastIndexOf(CoreConstants.DOT); + if (indexOfLastDot < 0) { + return null; + } + String fileExtension = fileName.substring(indexOfLastDot + 1); + for (App app : ALL_APP) { + String[] defaultAppExtensions = app.defaultExtensions(); + for (String defaultAppExtension : defaultAppExtensions) { + if (defaultAppExtension.equalsIgnoreCase(fileExtension)) { + JTemplate jt = app.openTemplate(file); + if (jt != null) { + return jt; + } + } + } + } + return null; + } + + + /** + * 注册app. + * + * @param app 注册app. + */ + public static void register(App app) { + if (app != null) { + ALL_APP.add(app); + } + } + + public static void remove(App app) { + if (app != null) { + ALL_APP.remove(app); + } + } +} \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/file/StashedFILE.java b/designer-base/src/main/java/com/fr/file/StashedFILE.java new file mode 100644 index 000000000..cacb1e9a9 --- /dev/null +++ b/designer-base/src/main/java/com/fr/file/StashedFILE.java @@ -0,0 +1,106 @@ +package com.fr.file; + +import javax.swing.Icon; +import javax.transaction.NotSupportedException; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.io.OutputStream; + +/** + * 切换环境用于暂存的文件类型 + */ +public class StashedFILE implements FILE { + + private FILE file; + private byte[] content; + + public StashedFILE(FILE file, byte[] content) { + this.file = file; + this.content = content; + } + + @Override + public String prefix() { + return file.prefix(); + } + + @Override + public boolean isDirectory() { + return file.isDirectory(); + } + + @Override + public String getName() { + return file.getName(); + } + + @Override + public Icon getIcon() { + return file.getIcon(); + } + + @Override + public String getPath() { + return file.getPath(); + } + + @Override + public void setPath(String path) { + throw new UnsupportedOperationException(); + } + + @Override + public FILE getParent() { + throw new UnsupportedOperationException(); + } + + @Override + public FILE[] listFiles() { + throw new UnsupportedOperationException(); + } + + @Override + public boolean createFolder(String name) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean mkfile() throws Exception { + throw new UnsupportedOperationException(); + } + + @Override + public boolean exists() { + return false; + } + + @Override + public void closeTemplate() throws Exception { + // do nothing + } + + @Override + public InputStream asInputStream() throws Exception { + return new ByteArrayInputStream(content); + } + + @Override + public OutputStream asOutputStream() throws Exception { + throw new NotSupportedException(); + } + + @Override + public String getEnvFullName() { + return file.getEnvFullName(); + } + + @Override + public boolean isMemFile() { + return true; + } + + @Override + public boolean isEnvFile() { + return false; + } +} \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/app/DesignerAppActivator.java b/designer-realize/src/main/java/com/fr/design/mainframe/app/DesignerAppActivator.java index f91b0d9a1..b13cdca85 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/app/DesignerAppActivator.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/app/DesignerAppActivator.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.app; import com.fr.design.mainframe.App; -import com.fr.design.mainframe.DesignerFrame; +import com.fr.design.mainframe.JTemplateFactory; import com.fr.module.Activator; import com.fr.module.extension.Prepare; @@ -17,7 +17,7 @@ public class DesignerAppActivator extends Activator implements Prepare { List appList = rightCollectMutable(App.KEY); for (App app : appList) { - DesignerFrame.registApp(app); + JTemplateFactory.register(app); } } @@ -26,7 +26,7 @@ public class DesignerAppActivator extends Activator implements Prepare { List appList = rightCollectMutable(App.KEY); for (App app : appList) { - DesignerFrame.removeApp(app); + JTemplateFactory.remove(app); } } diff --git a/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java b/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java index 701a6936c..4a3db7b2c 100644 --- a/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java +++ b/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java @@ -1,6 +1,7 @@ package com.fr.start.module; +import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.mainframe.DesignerContext; import com.fr.event.Event; import com.fr.event.Listener; @@ -28,13 +29,13 @@ public class DesignerStartup extends Activator { @Override @Metrics public void start() { - + startSub(PreStartActivator.class); //启动基础部分 startSub(BasicActivator.class); final String[] args = getModule().upFindSingleton(StartupArgs.class).get(); final Designer designer = new Designer(args); - + startSub(DesignerWorkspaceProvider.class); registerEnvListener(); //启动env @@ -49,7 +50,7 @@ public class DesignerStartup extends Activator { } }); service.submit(new Runnable() { - + @Override public void run() { try { @@ -63,46 +64,64 @@ public class DesignerStartup extends Activator { DesignerContext.getDesignerFrame().setVisible(true); //启动画面结束 SplashContext.getInstance().hide(); - + DesignerContext.getDesignerFrame().getProgressDialog().setVisible(true); startSub(StartFinishActivator.class); FineRuntime.startFinish(); } - + private void browserDemo() { - + if (getModule().leftFindSingleton(StartupArgs.class) != null && getModule().leftFindSingleton(StartupArgs.class).isDemo()) { ServerStarter.browserDemoURL(); } } - + /** - * 切换环境时,重新启动所有相关模块 + * 注册切换环境前后事件监听 */ private void registerEnvListener() { - listenEvent(WorkspaceEvent.BeforeSwitch, new Listener() { + /*切换环境前,关闭所有相关模块,最后执行*/ + listenEvent(WorkspaceEvent.BeforeSwitch, new Listener(Integer.MIN_VALUE) { @Override - public void on(Event event, Workspace param) { - + public void on(Event event, Workspace current) { getSub(EnvBasedModule.class).stop(); } }); + /*切换环境后,重新启动所有相关模块,最先执行*/ listenEvent(WorkspaceEvent.AfterSwitch, new Listener(Integer.MAX_VALUE) { @Override - public void on(Event event, Workspace param) { - + public void on(Event event, Workspace current) { getSub(EnvBasedModule.class).start(); - ExecutorService service = Executors.newSingleThreadExecutor(); - service.submit(new Runnable() { - @Override - public void run() { - FineEmbedServer.start(); - } - }); - service.shutdown(); + // 切换后的环境是本地环境才启动内置服务器 + if (current.isLocal()) { + ExecutorService service = Executors.newSingleThreadExecutor(); + service.submit(new Runnable() { + @Override + public void run() { + FineEmbedServer.start(); + } + }); + service.shutdown(); + } + } + }); + /*切换环境前,存储一下打开的所有文件对象,要先于 关闭相关模块部分 被触发*/ + listenEvent(WorkspaceEvent.BeforeSwitch, new Listener(Integer.MAX_VALUE) { + @Override + public void on(Event event, Workspace workspace) { + HistoryTemplateListCache.getInstance().stash(); + } + }); + + /*切换环境后,装载一下打开的所有文件对象,优先级低于默认优先级,要后于 启动相关模块部分 被触发*/ + listenEvent(WorkspaceEvent.AfterSwitch, new Listener(Integer.MIN_VALUE) { + @Override + public void on(Event event, Workspace workspace) { + HistoryTemplateListCache.getInstance().load(); } }); } From 003c234bce787ca340ec7bce362970ebff07ccef Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Thu, 24 Jan 2019 17:18:53 +0800 Subject: [PATCH 07/58] =?UTF-8?q?REPORT-14515=20=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E5=90=8E=E6=A8=A1=E6=9D=BF=E5=8F=A6=E5=AD=98?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E6=B2=A1=E6=9C=89=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/file/HistoryTemplateListCache.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java b/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java index e162fee3e..f790eca94 100644 --- a/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java +++ b/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java @@ -372,6 +372,12 @@ public class HistoryTemplateListCache implements CallbackEvent { JTemplate template = JTemplateFactory.createJTemplate(stashedFile); if (template != null) { historyList.set(i, template); + // 替换当前正在编辑的模板,使用添加并激活的方式,以便使用统一的入口来处理监听事件 + if (isCurrentEditingFile(template.getPath())) { + DesignerContext.getDesignerFrame().addAndActivateJTemplate(template); + setCurrentEditingTemplate(template); + FineLoggerFactory.getLogger().info("Env Change Current Editing Template."); + } } } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); From 553bb2a605b0cd9b71f241ebd0bf374ef765ef0c Mon Sep 17 00:00:00 2001 From: Hades Date: Fri, 25 Jan 2019 11:23:28 +0800 Subject: [PATCH 08/58] =?UTF-8?q?MOBILE-19684=20=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E9=A1=B6=E9=83=A8=E5=8F=82=E6=95=B0=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E5=92=8C=E5=AF=BC=E8=88=AA=E5=8F=82=E6=95=B0=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E6=97=B6=E8=AE=BE=E8=AE=A1=E5=99=A8=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/designer/mobile/ParaMobileDefinePane.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ParaMobileDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ParaMobileDefinePane.java index 7e0f3b940..b924b5c55 100644 --- a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ParaMobileDefinePane.java +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ParaMobileDefinePane.java @@ -21,7 +21,6 @@ import com.fr.form.ui.container.WParameterLayout; import com.fr.form.ui.container.WSortLayout; import com.fr.general.ComparatorUtils; import com.fr.general.SiteCenter; -import com.fr.json.JSONException; import com.fr.log.FineLoggerFactory; import com.fr.report.ExtraReportClassManager; import com.fr.report.fun.MobileParamStyleProvider; @@ -109,9 +108,9 @@ public class ParaMobileDefinePane extends MobileWidgetDefinePane { Item[] items = new Item[pluginCreators.size() + 1]; MobileParamStyleProvider provider = new DefaultMobileParamStyle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Default")); items[0] = new Item(provider.descriptor(), provider); - for (int i = 0; i < pluginCreators.size(); i++) { - provider = pluginCreators.iterator().next(); - items[i + 1] = new Item(provider.descriptor(), provider); + int i = 1; + for (MobileParamStyleProvider mobileParamStyleProvider : pluginCreators) { + items[i++] = new Item(mobileParamStyleProvider.descriptor(), mobileParamStyleProvider); } return items; } @@ -161,6 +160,7 @@ public class ParaMobileDefinePane extends MobileWidgetDefinePane { private UIComboBox getParamLocationComboBox() { items = getItems(); + UIComboBox paramLocationComoBox = new UIComboBox(items); paramLocationComoBox.addItemListener(new ItemListener() { @Override @@ -218,7 +218,7 @@ public class ParaMobileDefinePane extends MobileWidgetDefinePane { break; } } - } catch (JSONException e) { + } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); } paramLocationComboBox.setSelectedIndex(index); From 175396345579258cb933d699ea6c31c0c66c9815 Mon Sep 17 00:00:00 2001 From: plough Date: Tue, 26 Feb 2019 15:48:27 +0800 Subject: [PATCH 09/58] =?UTF-8?q?CHART-3956=20=E3=80=90CHART=E3=80=91?= =?UTF-8?q?=E5=9B=BE=E8=A1=A8=E5=B1=9E=E6=80=A7-=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E7=95=8C=E9=9D=A2-=E6=95=B0=E6=8D=AE=E9=9B=86=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=95=8C=E9=9D=A2=E4=B8=8D=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/chart/gui/data/TableDataPane.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/TableDataPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/TableDataPane.java index ed58f6d7d..7f22a03a6 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/TableDataPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/TableDataPane.java @@ -42,6 +42,7 @@ public class TableDataPane extends FurtherBasicBeanPane{ private void initDataPane() { UILabel label = new BoldFontTextLabel(Toolkit.i18nText("Fine-Design_Chart_Table_Data")); UIComponentUtils.setLineWrap(label, TABLE_DATA_LABEL_LINE_WRAP_WIDTH); + UIComponentUtils.setPreferedWidth(label, ChartDataPane.LABEL_WIDTH); tableDataPane = new DatabaseTableDataPane(label) { @Override From 3923db4881c1addc816c478e4cf66537d4d328a0 Mon Sep 17 00:00:00 2001 From: rinoux Date: Sun, 28 Apr 2019 17:09:32 +0800 Subject: [PATCH 10/58] =?UTF-8?q?BI-44084=20=E7=B4=A7=E6=80=A5=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E5=88=B0final=EF=BC=8C=E5=B7=B2=E8=81=94=E7=B3=BBfion?= =?UTF-8?q?a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/dialog/RestoreResultDialog.java | 19 +++++-------------- .../ui/dialog/UpdateMainDialog.java | 11 +++++------ .../server/FineEmbedServerActivator.java | 3 +++ 3 files changed, 13 insertions(+), 20 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/onlineupdate/ui/dialog/RestoreResultDialog.java b/designer-base/src/main/java/com/fr/design/onlineupdate/ui/dialog/RestoreResultDialog.java index 680d3190d..d76d24943 100644 --- a/designer-base/src/main/java/com/fr/design/onlineupdate/ui/dialog/RestoreResultDialog.java +++ b/designer-base/src/main/java/com/fr/design/onlineupdate/ui/dialog/RestoreResultDialog.java @@ -1,6 +1,5 @@ package com.fr.design.onlineupdate.ui.dialog; -import com.fr.base.FRContext; import com.fr.design.RestartHelper; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ilable.UILabel; @@ -8,21 +7,13 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.onlineupdate.domain.UpdateConstants; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; -import com.fr.locale.InterProviderFactory; +import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; -import javax.swing.AbstractAction; -import javax.swing.BorderFactory; -import javax.swing.JDialog; -import javax.swing.JPanel; -import javax.swing.JTextArea; -import java.awt.BorderLayout; -import java.awt.Dialog; -import java.awt.Dimension; -import java.awt.Font; -import java.awt.Frame; +import javax.swing.*; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; @@ -176,8 +167,8 @@ public class RestoreResultDialog extends JDialog { String backupDir = UpdateConstants.DESIGNER_BACKUP_DIR; for (String file : files) { map.put(StableUtils.pathJoin(installHome, backupDir, jarRestoreDir, file), - StableUtils.pathJoin(installHome, UpdateConstants.APPS_FOLDER_NAME, FRContext.getCommonOperator().getAppName(), ProjectConstants.WEBINF_NAME, ProjectConstants.LIB_NAME, file)); - list.add(StableUtils.pathJoin(installHome, UpdateConstants.APPS_FOLDER_NAME, FRContext.getCommonOperator().getAppName(), ProjectConstants.WEBINF_NAME, ProjectConstants.LIB_NAME, file)); + StableUtils.pathJoin(installHome, UpdateConstants.APPS_FOLDER_NAME, ProductConstants.getAppFolderName(), ProjectConstants.WEBINF_NAME, ProjectConstants.LIB_NAME, file)); + list.add(StableUtils.pathJoin(installHome, UpdateConstants.APPS_FOLDER_NAME, ProductConstants.getAppFolderName(), ProjectConstants.WEBINF_NAME, ProjectConstants.LIB_NAME, file)); } } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/onlineupdate/ui/dialog/UpdateMainDialog.java b/designer-base/src/main/java/com/fr/design/onlineupdate/ui/dialog/UpdateMainDialog.java index 570042d4e..e0a8fa4de 100644 --- a/designer-base/src/main/java/com/fr/design/onlineupdate/ui/dialog/UpdateMainDialog.java +++ b/designer-base/src/main/java/com/fr/design/onlineupdate/ui/dialog/UpdateMainDialog.java @@ -1,6 +1,5 @@ package com.fr.design.onlineupdate.ui.dialog; -import com.fr.base.FRContext; import com.fr.design.RestartHelper; import com.fr.design.constants.LayoutConstants; import com.fr.design.dialog.UIDialog; @@ -344,10 +343,10 @@ public class UpdateMainDialog extends UIDialog { add(jarVersionInfoPane, BorderLayout.NORTH); //海外版本不显示更新信息 - if (GeneralContext.getLocale().equals(Locale.CHINA) || GeneralContext.getLocale().equals(Locale.TAIWAN)){ + if (GeneralContext.getLocale().equals(Locale.CHINA) || GeneralContext.getLocale().equals(Locale.TAIWAN)) { add(jarUpdateInfoPane, BorderLayout.CENTER); add(updateActionPane, BorderLayout.SOUTH); - }else { + } else { add(updateActionPane, BorderLayout.CENTER); } @@ -684,7 +683,7 @@ public class UpdateMainDialog extends UIDialog { for (String file : files) { try { IOUtils.copy( - new File(StableUtils.pathJoin(installHome, UpdateConstants.APPS_FOLDER_NAME, FRContext.getCommonOperator().getAppName(), ProjectConstants.WEBINF_NAME, ProjectConstants.LIB_NAME, file)), + new File(StableUtils.pathJoin(installHome, UpdateConstants.APPS_FOLDER_NAME, ProductConstants.getAppFolderName(), ProjectConstants.WEBINF_NAME, ProjectConstants.LIB_NAME, file)), new File(StableUtils.pathJoin(todayBackupDir))); } catch (IOException e) { FineLoggerFactory.getLogger().error(e.getMessage()); @@ -725,8 +724,8 @@ public class UpdateMainDialog extends UIDialog { private void putNewFilesToInstallEnv(String installHome, String[] files, Map map, java.util.List list) { for (String file : files) { map.put(StableUtils.pathJoin(installHome, UpdateConstants.DOWNLOAD_DIR, file), - StableUtils.pathJoin(installHome, UpdateConstants.APPS_FOLDER_NAME, FRContext.getCommonOperator().getAppName(), ProjectConstants.WEBINF_NAME, ProjectConstants.LIB_NAME, file)); - list.add(StableUtils.pathJoin(installHome, UpdateConstants.APPS_FOLDER_NAME, FRContext.getCommonOperator().getAppName(), ProjectConstants.WEBINF_NAME, ProjectConstants.LIB_NAME, file)); + StableUtils.pathJoin(installHome, UpdateConstants.APPS_FOLDER_NAME, ProductConstants.getAppFolderName(), ProjectConstants.WEBINF_NAME, ProjectConstants.LIB_NAME, file)); + list.add(StableUtils.pathJoin(installHome, UpdateConstants.APPS_FOLDER_NAME, ProductConstants.getAppFolderName(), ProjectConstants.WEBINF_NAME, ProjectConstants.LIB_NAME, file)); } } diff --git a/designer-base/src/main/java/com/fr/start/server/FineEmbedServerActivator.java b/designer-base/src/main/java/com/fr/start/server/FineEmbedServerActivator.java index 2d08b286d..0955c16e5 100644 --- a/designer-base/src/main/java/com/fr/start/server/FineEmbedServerActivator.java +++ b/designer-base/src/main/java/com/fr/start/server/FineEmbedServerActivator.java @@ -6,6 +6,7 @@ import com.fr.log.FineLoggerFactory; import com.fr.module.Activator; import com.fr.module.ModuleRole; import com.fr.stable.EncodeConstants; +import com.fr.stable.ProductConstants; import com.fr.startup.FineWebApplicationInitializer; import com.fr.third.springframework.web.SpringServletContainerInitializer; import com.fr.third.springframework.web.context.support.AnnotationConfigWebApplicationContext; @@ -62,6 +63,8 @@ public class FineEmbedServerActivator extends Activator { // 设置解码uri使用的字符编码 tomcat.getConnector().setURIEncoding(EncodeConstants.ENCODING_UTF_8); String docBase = new File(WorkContext.getCurrent().getPath()).getParent(); + //内置的上下文是自己定的,这里把WEB_APP_NAME一并设置了,否则下面appName是/null + ProductConstants.setWebAppName(ProductConstants.getAppFolderName()); String appName = "/" + FRContext.getCommonOperator().getAppName(); Context context = tomcat.addContext(appName, docBase); Tomcat.initWebappDefaults(context); From 860a0c6f0881e4928a47e09b401503a882841d9a Mon Sep 17 00:00:00 2001 From: rinoux Date: Sun, 28 Apr 2019 17:18:38 +0800 Subject: [PATCH 11/58] import --- .../onlineupdate/ui/dialog/RestoreResultDialog.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/onlineupdate/ui/dialog/RestoreResultDialog.java b/designer-base/src/main/java/com/fr/design/onlineupdate/ui/dialog/RestoreResultDialog.java index d76d24943..b754fe2b4 100644 --- a/designer-base/src/main/java/com/fr/design/onlineupdate/ui/dialog/RestoreResultDialog.java +++ b/designer-base/src/main/java/com/fr/design/onlineupdate/ui/dialog/RestoreResultDialog.java @@ -12,8 +12,17 @@ import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; -import javax.swing.*; -import java.awt.*; + +import javax.swing.AbstractAction; +import javax.swing.BorderFactory; +import javax.swing.JDialog; +import javax.swing.JPanel; +import javax.swing.JTextArea; +import java.awt.BorderLayout; +import java.awt.Dialog; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; From 0d7bcf2586f1bf5967673f53044f57d274dc06e4 Mon Sep 17 00:00:00 2001 From: kerry Date: Thu, 16 May 2019 11:13:46 +0800 Subject: [PATCH 12/58] =?UTF-8?q?REPORT-16985=20=E5=B1=8F=E8=94=BD?= =?UTF-8?q?=E6=96=B0=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86=E5=99=A8=E5=BC=80?= =?UTF-8?q?=E5=90=AF=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/file/PreferencePane.java | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index 7afc21d31..c96e31dfb 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -192,10 +192,10 @@ public class PreferencePane extends BasicPane { // debuggerPane.add(openDebugComboBox, BorderLayout.CENTER); // advancePane.add(debuggerPane); - JPanel upmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager")); - useOptimizedUPMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_New_Update_Plugin_Manager")); - upmSelectorPane.add(useOptimizedUPMCheckbox); - advancePane.add(upmSelectorPane); +// JPanel upmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager")); +// useOptimizedUPMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_New_Update_Plugin_Manager")); +// upmSelectorPane.add(useOptimizedUPMCheckbox); +// advancePane.add(upmSelectorPane); JPanel improvePane = FRGUIPaneFactory.createVerticalTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Product_Improve")); joinProductImproveCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Join_Product_Improve")); @@ -206,10 +206,10 @@ public class PreferencePane extends BasicPane { improvePane.add(autoPushUpdateCheckBox); } - JPanel spaceUpPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - spaceUpPane.add(oraclePane, BorderLayout.NORTH); - spaceUpPane.add(createMemoryPane(), BorderLayout.CENTER); - spaceUpPane.add(improvePane, BorderLayout.SOUTH); + JPanel spaceUpPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); + spaceUpPane.add(oraclePane); + spaceUpPane.add(createMemoryPane()); + spaceUpPane.add(improvePane); advancePane.add(spaceUpPane); } @@ -637,7 +637,7 @@ public class PreferencePane extends BasicPane { this.portEditor.setValue(new Integer(designerEnvManager.getEmbedServerPort())); // openDebugComboBox.setSelected(designerEnvManager.isOpenDebug()); - useOptimizedUPMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseOptimizedUPM()); +// useOptimizedUPMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseOptimizedUPM()); this.oracleSpace.setSelected(designerEnvManager.isOracleSystemSpace()); this.cachingTemplateSpinner.setValue(designerEnvManager.getCachingTemplateLimit()); @@ -733,17 +733,17 @@ public class PreferencePane extends BasicPane { } }); - Configurations.update(new Worker() { - @Override - public void run() { - ServerPreferenceConfig.getInstance().setUseOptimizedUPM(useOptimizedUPMCheckbox.isSelected()); - } - - @Override - public Class[] targets() { - return new Class[] {ServerPreferenceConfig.class}; - } - }); +// Configurations.update(new Worker() { +// @Override +// public void run() { +// ServerPreferenceConfig.getInstance().setUseOptimizedUPM(useOptimizedUPMCheckbox.isSelected()); +// } +// +// @Override +// public Class[] targets() { +// return new Class[] {ServerPreferenceConfig.class}; +// } +// }); } From 137100b146e232ecff0cf9177767ba00e8d64d17 Mon Sep 17 00:00:00 2001 From: kerry Date: Thu, 16 May 2019 11:16:19 +0800 Subject: [PATCH 13/58] =?UTF-8?q?REPORT-16985=20=E5=B1=8F=E8=94=BD?= =?UTF-8?q?=E6=96=B0=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86=E5=99=A8=E5=BC=80?= =?UTF-8?q?=E5=90=AF=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/file/PreferencePane.java | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index 7afc21d31..c96e31dfb 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -192,10 +192,10 @@ public class PreferencePane extends BasicPane { // debuggerPane.add(openDebugComboBox, BorderLayout.CENTER); // advancePane.add(debuggerPane); - JPanel upmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager")); - useOptimizedUPMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_New_Update_Plugin_Manager")); - upmSelectorPane.add(useOptimizedUPMCheckbox); - advancePane.add(upmSelectorPane); +// JPanel upmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager")); +// useOptimizedUPMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_New_Update_Plugin_Manager")); +// upmSelectorPane.add(useOptimizedUPMCheckbox); +// advancePane.add(upmSelectorPane); JPanel improvePane = FRGUIPaneFactory.createVerticalTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Product_Improve")); joinProductImproveCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Join_Product_Improve")); @@ -206,10 +206,10 @@ public class PreferencePane extends BasicPane { improvePane.add(autoPushUpdateCheckBox); } - JPanel spaceUpPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - spaceUpPane.add(oraclePane, BorderLayout.NORTH); - spaceUpPane.add(createMemoryPane(), BorderLayout.CENTER); - spaceUpPane.add(improvePane, BorderLayout.SOUTH); + JPanel spaceUpPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); + spaceUpPane.add(oraclePane); + spaceUpPane.add(createMemoryPane()); + spaceUpPane.add(improvePane); advancePane.add(spaceUpPane); } @@ -637,7 +637,7 @@ public class PreferencePane extends BasicPane { this.portEditor.setValue(new Integer(designerEnvManager.getEmbedServerPort())); // openDebugComboBox.setSelected(designerEnvManager.isOpenDebug()); - useOptimizedUPMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseOptimizedUPM()); +// useOptimizedUPMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseOptimizedUPM()); this.oracleSpace.setSelected(designerEnvManager.isOracleSystemSpace()); this.cachingTemplateSpinner.setValue(designerEnvManager.getCachingTemplateLimit()); @@ -733,17 +733,17 @@ public class PreferencePane extends BasicPane { } }); - Configurations.update(new Worker() { - @Override - public void run() { - ServerPreferenceConfig.getInstance().setUseOptimizedUPM(useOptimizedUPMCheckbox.isSelected()); - } - - @Override - public Class[] targets() { - return new Class[] {ServerPreferenceConfig.class}; - } - }); +// Configurations.update(new Worker() { +// @Override +// public void run() { +// ServerPreferenceConfig.getInstance().setUseOptimizedUPM(useOptimizedUPMCheckbox.isSelected()); +// } +// +// @Override +// public Class[] targets() { +// return new Class[] {ServerPreferenceConfig.class}; +// } +// }); } From 7a8f51e2cf5d1dd0a4232e98dc84c936be0b67a0 Mon Sep 17 00:00:00 2001 From: Hades Date: Wed, 29 May 2019 15:14:59 +0800 Subject: [PATCH 14/58] =?UTF-8?q?REPORT-17451=20&&=20REPORT-17460=20?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=88=B0final?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../update/ui/dialog/UpdateMainDialog.java | 43 ++++++++++++++++--- .../widget/ui/FormWidgetCardPane.java | 18 +++----- 2 files changed, 42 insertions(+), 19 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java b/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java index ade5c6e27..e59cc09ff 100644 --- a/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java +++ b/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java @@ -22,6 +22,7 @@ import com.fr.design.update.ui.widget.UpdateInfoTableCellRender; import com.fr.design.update.ui.widget.UpdateInfoTableModel; import com.fr.design.update.ui.widget.UpdateInfoTextAreaCellRender; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.CloudCenter; import com.fr.general.ComparatorUtils; import com.fr.general.DateUtils; import com.fr.general.GeneralContext; @@ -29,6 +30,7 @@ import com.fr.general.GeneralUtils; import com.fr.general.IOUtils; import com.fr.general.SiteCenter; import com.fr.general.http.HttpClient; +import com.fr.general.http.HttpToolbox; import com.fr.json.JSONArray; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; @@ -37,6 +39,7 @@ import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; +import com.fr.third.org.apache.commons.codec.digest.DigestUtils; import com.fr.workspace.WorkContext; import com.sun.java.swing.plaf.motif.MotifProgressBarUI; @@ -359,10 +362,10 @@ public class UpdateMainDialog extends UIDialog { add(jarVersionInfoPane, BorderLayout.NORTH); //海外版本不显示更新信息 - if (GeneralContext.getLocale().equals(Locale.CHINA) || GeneralContext.getLocale().equals(Locale.TAIWAN)) { + if (GeneralContext.getLocale().equals(Locale.CHINA) || GeneralContext.getLocale().equals(Locale.TAIWAN)){ add(jarUpdateInfoPane, BorderLayout.CENTER); add(updateActionPane, BorderLayout.SOUTH); - } else { + }else { add(updateActionPane, BorderLayout.CENTER); } @@ -371,9 +374,7 @@ public class UpdateMainDialog extends UIDialog { new SwingWorker() { @Override protected JSONObject doInBackground() throws Exception { - HttpClient hc = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("jar10.update")); - hc.setTimeout(UpdateConstants.CONNECTION_TIMEOUT); - return new JSONObject(hc.getResponseText()); + return new JSONObject(HttpToolbox.get(CloudCenter.getInstance().acquireUrlByKind("jar10.update"))); } @Override @@ -620,8 +621,11 @@ public class UpdateMainDialog extends UIDialog { long downloadSize = jo.optLong("size"); if (ComparatorUtils.equals(category, "server")) { File currentJAR = new File(StableUtils.pathJoin(WorkContext.getCurrent().getPath(), ProjectConstants.LIB_NAME, downloadName)); - if (currentJAR.exists() && ComparatorUtils.equals(currentJAR.length(), downloadSize)) { - //假如大小一样的jar包就不要下载了 + String currentMD5 = getCurrentJarMD5(currentJAR); + String downloadMD5 = jo.optString("md5"); + boolean exist = currentJAR.exists() && ComparatorUtils.equals(currentJAR.length(), downloadSize) && ComparatorUtils.equals(currentMD5, downloadMD5); + if (exist) { + // 如果jar包存在且MD5值和大小与oss上的一致 不下载 continue; } } @@ -630,6 +634,31 @@ public class UpdateMainDialog extends UIDialog { } } + /** + * 获取当前jar的md5 + * @param currentJAR + * @return + */ + private String getCurrentJarMD5(File currentJAR) { + String md5 = StringUtils.EMPTY; + FileInputStream input = null; + try { + input = new FileInputStream(currentJAR); + md5 = DigestUtils.md5Hex(input); + } catch (Exception ignore) { + + } finally { + if (input != null) { + try { + input.close(); + } catch (IOException e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } + } + return md5; + } + /** * jar包更新按钮监听器 */ diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java index 3e70f7d0f..d5753ce15 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java @@ -1,6 +1,5 @@ package com.fr.design.mainframe.widget.ui; -import com.fr.base.BaseUtils; import com.fr.design.data.DataCreatorUI; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.creator.XCreator; @@ -28,13 +27,13 @@ import com.fr.design.widget.Operator; import com.fr.design.widget.ui.designer.component.WidgetAbsoluteBoundPane; import com.fr.design.widget.ui.designer.component.WidgetBoundPane; import com.fr.design.widget.ui.designer.component.WidgetCardTagBoundPane; -import com.fr.form.ui.FormWidgetHelper; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WScaleLayout; import com.fr.form.ui.container.WTitleLayout; import com.fr.form.ui.widget.CRBoundsWidget; import com.fr.general.ComparatorUtils; +import com.fr.general.IOUtils; import com.fr.stable.StringUtils; import javax.swing.BorderFactory; @@ -91,6 +90,7 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { return new WidgetBoundPane(xCreator); } + @Override protected JPanel createContentPane() { return null; } @@ -218,21 +218,14 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { UITextField widgetNameField = widgetPropertyPane.getWidgetNameField(); String toSetWidgetName = widgetNameField.getText(); String currentWidgetName = widget.getWidgetName(); - // 设置的组件名和当前组件名相同 直接返回 - if (ComparatorUtils.equals(toSetWidgetName, currentWidgetName)) { - return; - } - String containerName = designer.getTarget().getContainer().getWidgetName(); - Widget existWidget = FormWidgetHelper.findWidgetByName(widget, widgetNameField.getText()); - // 判断设置的组件名是否和容器同名以及组件是否在容器在存在 满足任何其一 抛出提示 - boolean exist = ComparatorUtils.equals(containerName, toSetWidgetName) || existWidget != null; + boolean exist = designer.getTarget().isNameExist(toSetWidgetName) && !ComparatorUtils.equals(toSetWidgetName, currentWidgetName); if (exist) { widgetNameField.setText(currentWidgetName); - JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Widget_Rename_Failure"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Joption_News"), JOptionPane.ERROR_MESSAGE, BaseUtils.readIcon("com/fr/design/form/images/joption_failure.png")); + JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Widget_Rename_Failure"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Joption_News"), JOptionPane.ERROR_MESSAGE, IOUtils.readIcon("com/fr/design/form/images/joption_failure.png")); return; } widgetPropertyPane.update(widget); - xCreator.resetCreatorName(toSetWidgetName); + xCreator.resetCreatorName(currentWidgetName); xCreator.resetVisible(widget.isVisible()); designer.getEditListenerTable().fireCreatorModified(xCreator, DesignerEvent.CREATOR_RENAMED); return; @@ -262,6 +255,7 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { creator.firePropertyChange(); } + @Override public String getIconPath() { return StringUtils.EMPTY; } From c0df7fb2b6a5e759d51b2d5f0ceffb1724567703 Mon Sep 17 00:00:00 2001 From: Hades Date: Wed, 29 May 2019 15:17:15 +0800 Subject: [PATCH 15/58] update --- .../java/com/fr/design/update/ui/dialog/UpdateMainDialog.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java b/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java index e59cc09ff..53c0c4970 100644 --- a/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java +++ b/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java @@ -362,10 +362,10 @@ public class UpdateMainDialog extends UIDialog { add(jarVersionInfoPane, BorderLayout.NORTH); //海外版本不显示更新信息 - if (GeneralContext.getLocale().equals(Locale.CHINA) || GeneralContext.getLocale().equals(Locale.TAIWAN)){ + if (GeneralContext.getLocale().equals(Locale.CHINA) || GeneralContext.getLocale().equals(Locale.TAIWAN)) { add(jarUpdateInfoPane, BorderLayout.CENTER); add(updateActionPane, BorderLayout.SOUTH); - }else { + } else { add(updateActionPane, BorderLayout.CENTER); } From 57034b54a0b6acbe26738a60492dfdbac1681969 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Tue, 11 Jun 2019 17:26:30 +0800 Subject: [PATCH 16/58] ct --- .../design/actions/file/PreferencePane.java | 84 ++++++++++++------- .../widget/ui/FormWidgetCardPane.java | 3 +- 2 files changed, 54 insertions(+), 33 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index c96e31dfb..2a856f159 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -8,6 +8,7 @@ import com.fr.design.RestartHelper; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.dialog.DialogActionListener; import com.fr.design.editor.editor.IntegerEditor; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.ibutton.UIButton; @@ -31,6 +32,7 @@ import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.widget.FRWidgetFactory; import com.fr.general.ComparatorUtils; import com.fr.general.FRFont; +import com.fr.general.IOUtils; import com.fr.general.Inter; import com.fr.general.log.Log4jConfig; import com.fr.locale.InterProviderFactory; @@ -79,6 +81,7 @@ public class PreferencePane extends BasicPane { private static final int CACHING_DEFAULT = 5; private static final int CACHING_GAP = 5; private static final int MEMORY_TIP_LABEL_MAX_WIDTH = 230; + private static final int OFFSET_HEIGHT = 50; private static final String TYPE = "pressed"; private static final String DISPLAY_TYPE = "+"; @@ -133,11 +136,11 @@ public class PreferencePane extends BasicPane { private UIComboBox logLevelComboBox, pageLengthComboBox, reportLengthComboBox; private UIDictionaryComboBox languageComboBox; private IntegerEditor portEditor; - private UITextField jdkHomeTextField; private UICheckBox oracleSpace; private UISpinner cachingTemplateSpinner; private UICheckBox openDebugComboBox; private UICheckBox useOptimizedUPMCheckbox; + private UICheckBox useUniverseDBMCheckbox; private UICheckBox joinProductImproveCheckBox; private UICheckBox autoPushUpdateCheckBox; @@ -186,16 +189,21 @@ public class PreferencePane extends BasicPane { JPanel oraclePane = FRGUIPaneFactory.createTitledBorderPane("Oracle" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Oracle_All_Tables")); oracleSpace = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Show_All_Oracle_Tables")); oraclePane.add(oracleSpace); -// -// JPanel debuggerPane = FRGUIPaneFactory.createTitledBorderPane(Toolkit.i18nText("Fine-Design_Basic_Develop_Tools")); -// openDebugComboBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Basic_Open_Debug_Window")); -// debuggerPane.add(openDebugComboBox, BorderLayout.CENTER); -// advancePane.add(debuggerPane); -// JPanel upmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager")); -// useOptimizedUPMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_New_Update_Plugin_Manager")); -// upmSelectorPane.add(useOptimizedUPMCheckbox); -// advancePane.add(upmSelectorPane); + JPanel debuggerPane = FRGUIPaneFactory.createTitledBorderPane(Toolkit.i18nText("Fine-Design_Basic_Develop_Tools")); + openDebugComboBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Basic_Open_Debug_Window")); + debuggerPane.add(openDebugComboBox, BorderLayout.CENTER); + advancePane.add(debuggerPane); + + JPanel upmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager")); + useOptimizedUPMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_New_Update_Plugin_Manager")); + upmSelectorPane.add(useOptimizedUPMCheckbox); + advancePane.add(upmSelectorPane); + + JPanel dbmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Database_Manager")); + useUniverseDBMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_Universe_Database_Manager")); + dbmSelectorPane.add(useUniverseDBMCheckbox); + advancePane.add(dbmSelectorPane); JPanel improvePane = FRGUIPaneFactory.createVerticalTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Product_Improve")); joinProductImproveCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Join_Product_Improve")); @@ -206,10 +214,10 @@ public class PreferencePane extends BasicPane { improvePane.add(autoPushUpdateCheckBox); } - JPanel spaceUpPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); - spaceUpPane.add(oraclePane); - spaceUpPane.add(createMemoryPane()); - spaceUpPane.add(improvePane); + JPanel spaceUpPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + spaceUpPane.add(oraclePane, BorderLayout.NORTH); + spaceUpPane.add(createMemoryPane(), BorderLayout.CENTER); + spaceUpPane.add(improvePane, BorderLayout.SOUTH); advancePane.add(spaceUpPane); } @@ -226,8 +234,8 @@ public class PreferencePane extends BasicPane { enableVcsPanel.add(vcsEnableCheckBox); enableVcsPanel.add(remindVcsLabel); JPanel intervalPanel = new JPanel(FRGUIPaneFactory.createLeftZeroLayout()); - UILabel everyLabel = new UILabel(Toolkit.i18nText("Fine-Design_Vcs_Every")); - UILabel delayLabel = new UILabel(Toolkit.i18nText("Fine-Design_Vcs_Delay")); + final UILabel everyLabel = new UILabel(Toolkit.i18nText("Fine-Design_Vcs_Every")); + final UILabel delayLabel = new UILabel(Toolkit.i18nText("Fine-Design_Vcs_Delay")); intervalPanel.add(useIntervalCheckBox); intervalPanel.add(everyLabel); intervalPanel.add(saveIntervalEditor); @@ -240,10 +248,14 @@ public class PreferencePane extends BasicPane { saveCommitCheckBox.setEnabled(true); saveIntervalEditor.setEnabled(true); useIntervalCheckBox.setEnabled(true); + everyLabel.setEnabled(true); + delayLabel.setEnabled(true); } else { saveCommitCheckBox.setEnabled(false); saveIntervalEditor.setEnabled(false); useIntervalCheckBox.setEnabled(false); + everyLabel.setEnabled(false); + delayLabel.setEnabled(false); } } }); @@ -383,10 +395,10 @@ public class PreferencePane extends BasicPane { new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preference_Pagination_Line_Color")); - gridLineColorTBButton = new UIColorButton(BaseUtils.readIcon("/com/fr/design/images/gui/color/foreground.png")); + gridLineColorTBButton = new UIColorButton(IOUtils.readIcon("/com/fr/design/images/gui/color/foreground.png")); gridLineColorTBButton.setEnabled(this.isEnabled()); - paginationLineColorTBButton = new UIColorButton(BaseUtils.readIcon("/com/fr/design/images/gui/color/foreground.png")); + paginationLineColorTBButton = new UIColorButton(IOUtils.readIcon("/com/fr/design/images/gui/color/foreground.png")); paginationLineColorTBButton.setEnabled(this.isEnabled()); JPanel leftPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); @@ -636,8 +648,10 @@ public class PreferencePane extends BasicPane { this.portEditor.setValue(new Integer(designerEnvManager.getEmbedServerPort())); -// openDebugComboBox.setSelected(designerEnvManager.isOpenDebug()); -// useOptimizedUPMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseOptimizedUPM()); + openDebugComboBox.setSelected(designerEnvManager.isOpenDebug()); + useOptimizedUPMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseOptimizedUPM()); + + useUniverseDBMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseUniverseDBM()); this.oracleSpace.setSelected(designerEnvManager.isOracleSystemSpace()); this.cachingTemplateSpinner.setValue(designerEnvManager.getCachingTemplateLimit()); @@ -702,7 +716,7 @@ public class PreferencePane extends BasicPane { designerEnvManager.setJettyServerPort(portEditor.getValue().intValue()); -// designerEnvManager.setOpenDebug(openDebugComboBox.isSelected()); + designerEnvManager.setOpenDebug(openDebugComboBox.isSelected()); designerEnvManager.setOracleSystemSpace(this.oracleSpace.isSelected()); designerEnvManager.setCachingTemplateLimit((int) this.cachingTemplateSpinner.getValue()); @@ -733,17 +747,18 @@ public class PreferencePane extends BasicPane { } }); -// Configurations.update(new Worker() { -// @Override -// public void run() { -// ServerPreferenceConfig.getInstance().setUseOptimizedUPM(useOptimizedUPMCheckbox.isSelected()); -// } -// -// @Override -// public Class[] targets() { -// return new Class[] {ServerPreferenceConfig.class}; -// } -// }); + Configurations.update(new Worker() { + @Override + public void run() { + ServerPreferenceConfig.getInstance().setUseOptimizedUPM(useOptimizedUPMCheckbox.isSelected()); + ServerPreferenceConfig.getInstance().setUseUniverseDBM(useUniverseDBMCheckbox.isSelected()); + } + + @Override + public Class[] targets() { + return new Class[] {ServerPreferenceConfig.class}; + } + }); } @@ -777,4 +792,9 @@ public class PreferencePane extends BasicPane { } }); } + + @Override + public BasicDialog showWindow(Window window, DialogActionListener l) { + return showWindowWithCustomSize(window, l, new Dimension(BasicDialog.DEFAULT.width, this.getPreferredSize().height + OFFSET_HEIGHT)); + } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java index d5753ce15..5e57557e7 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java @@ -225,7 +225,8 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { return; } widgetPropertyPane.update(widget); - xCreator.resetCreatorName(currentWidgetName); + // 上面一行更新了组件 这里必须重新调用getWidgetName + xCreator.resetCreatorName(widget.getWidgetName()); xCreator.resetVisible(widget.isVisible()); designer.getEditListenerTable().fireCreatorModified(xCreator, DesignerEvent.CREATOR_RENAMED); return; From ac18f87d4f82c19c3a2da05cc7309308eb9a5456 Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Tue, 11 Jun 2019 17:38:28 +0800 Subject: [PATCH 17/58] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E5=B1=8F=E8=94=BDdebug=E9=80=89=E9=A1=B9=E5=92=8C=E6=96=B0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=BF=9E=E6=8E=A5=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/file/PreferencePane.java | 64 +++++++++---------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index 2a856f159..f9a41e7e4 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -1,8 +1,6 @@ package com.fr.design.actions.file; -import com.fr.base.BaseUtils; import com.fr.config.Configuration; -import com.fr.config.ServerPreferenceConfig; import com.fr.design.DesignerEnvManager; import com.fr.design.RestartHelper; import com.fr.design.dialog.BasicDialog; @@ -190,20 +188,20 @@ public class PreferencePane extends BasicPane { oracleSpace = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Show_All_Oracle_Tables")); oraclePane.add(oracleSpace); - JPanel debuggerPane = FRGUIPaneFactory.createTitledBorderPane(Toolkit.i18nText("Fine-Design_Basic_Develop_Tools")); - openDebugComboBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Basic_Open_Debug_Window")); - debuggerPane.add(openDebugComboBox, BorderLayout.CENTER); - advancePane.add(debuggerPane); - - JPanel upmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager")); - useOptimizedUPMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_New_Update_Plugin_Manager")); - upmSelectorPane.add(useOptimizedUPMCheckbox); - advancePane.add(upmSelectorPane); - - JPanel dbmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Database_Manager")); - useUniverseDBMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_Universe_Database_Manager")); - dbmSelectorPane.add(useUniverseDBMCheckbox); - advancePane.add(dbmSelectorPane); +// JPanel debuggerPane = FRGUIPaneFactory.createTitledBorderPane(Toolkit.i18nText("Fine-Design_Basic_Develop_Tools")); +// openDebugComboBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Basic_Open_Debug_Window")); +// debuggerPane.add(openDebugComboBox, BorderLayout.CENTER); +// advancePane.add(debuggerPane); +// +// JPanel upmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager")); +// useOptimizedUPMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_New_Update_Plugin_Manager")); +// upmSelectorPane.add(useOptimizedUPMCheckbox); +// advancePane.add(upmSelectorPane); +// +// JPanel dbmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Database_Manager")); +// useUniverseDBMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_Universe_Database_Manager")); +// dbmSelectorPane.add(useUniverseDBMCheckbox); +// advancePane.add(dbmSelectorPane); JPanel improvePane = FRGUIPaneFactory.createVerticalTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Product_Improve")); joinProductImproveCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Join_Product_Improve")); @@ -648,10 +646,10 @@ public class PreferencePane extends BasicPane { this.portEditor.setValue(new Integer(designerEnvManager.getEmbedServerPort())); - openDebugComboBox.setSelected(designerEnvManager.isOpenDebug()); - useOptimizedUPMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseOptimizedUPM()); - - useUniverseDBMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseUniverseDBM()); +// openDebugComboBox.setSelected(designerEnvManager.isOpenDebug()); +// useOptimizedUPMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseOptimizedUPM()); +// +// useUniverseDBMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseUniverseDBM()); this.oracleSpace.setSelected(designerEnvManager.isOracleSystemSpace()); this.cachingTemplateSpinner.setValue(designerEnvManager.getCachingTemplateLimit()); @@ -716,7 +714,7 @@ public class PreferencePane extends BasicPane { designerEnvManager.setJettyServerPort(portEditor.getValue().intValue()); - designerEnvManager.setOpenDebug(openDebugComboBox.isSelected()); +// designerEnvManager.setOpenDebug(openDebugComboBox.isSelected()); designerEnvManager.setOracleSystemSpace(this.oracleSpace.isSelected()); designerEnvManager.setCachingTemplateLimit((int) this.cachingTemplateSpinner.getValue()); @@ -747,18 +745,18 @@ public class PreferencePane extends BasicPane { } }); - Configurations.update(new Worker() { - @Override - public void run() { - ServerPreferenceConfig.getInstance().setUseOptimizedUPM(useOptimizedUPMCheckbox.isSelected()); - ServerPreferenceConfig.getInstance().setUseUniverseDBM(useUniverseDBMCheckbox.isSelected()); - } - - @Override - public Class[] targets() { - return new Class[] {ServerPreferenceConfig.class}; - } - }); +// Configurations.update(new Worker() { +// @Override +// public void run() { +// ServerPreferenceConfig.getInstance().setUseOptimizedUPM(useOptimizedUPMCheckbox.isSelected()); +// ServerPreferenceConfig.getInstance().setUseUniverseDBM(useUniverseDBMCheckbox.isSelected()); +// } +// +// @Override +// public Class[] targets() { +// return new Class[] {ServerPreferenceConfig.class}; +// } +// }); } From dbdb442cb746fc4d22ed77834d04043aa9e72e55 Mon Sep 17 00:00:00 2001 From: kerry Date: Wed, 12 Jun 2019 15:17:47 +0800 Subject: [PATCH 18/58] =?UTF-8?q?=E6=97=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/file/PreferencePane.java | 84 ++++++++++++------- 1 file changed, 52 insertions(+), 32 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index c96e31dfb..2a856f159 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -8,6 +8,7 @@ import com.fr.design.RestartHelper; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.dialog.DialogActionListener; import com.fr.design.editor.editor.IntegerEditor; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.ibutton.UIButton; @@ -31,6 +32,7 @@ import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.widget.FRWidgetFactory; import com.fr.general.ComparatorUtils; import com.fr.general.FRFont; +import com.fr.general.IOUtils; import com.fr.general.Inter; import com.fr.general.log.Log4jConfig; import com.fr.locale.InterProviderFactory; @@ -79,6 +81,7 @@ public class PreferencePane extends BasicPane { private static final int CACHING_DEFAULT = 5; private static final int CACHING_GAP = 5; private static final int MEMORY_TIP_LABEL_MAX_WIDTH = 230; + private static final int OFFSET_HEIGHT = 50; private static final String TYPE = "pressed"; private static final String DISPLAY_TYPE = "+"; @@ -133,11 +136,11 @@ public class PreferencePane extends BasicPane { private UIComboBox logLevelComboBox, pageLengthComboBox, reportLengthComboBox; private UIDictionaryComboBox languageComboBox; private IntegerEditor portEditor; - private UITextField jdkHomeTextField; private UICheckBox oracleSpace; private UISpinner cachingTemplateSpinner; private UICheckBox openDebugComboBox; private UICheckBox useOptimizedUPMCheckbox; + private UICheckBox useUniverseDBMCheckbox; private UICheckBox joinProductImproveCheckBox; private UICheckBox autoPushUpdateCheckBox; @@ -186,16 +189,21 @@ public class PreferencePane extends BasicPane { JPanel oraclePane = FRGUIPaneFactory.createTitledBorderPane("Oracle" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Oracle_All_Tables")); oracleSpace = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Show_All_Oracle_Tables")); oraclePane.add(oracleSpace); -// -// JPanel debuggerPane = FRGUIPaneFactory.createTitledBorderPane(Toolkit.i18nText("Fine-Design_Basic_Develop_Tools")); -// openDebugComboBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Basic_Open_Debug_Window")); -// debuggerPane.add(openDebugComboBox, BorderLayout.CENTER); -// advancePane.add(debuggerPane); -// JPanel upmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager")); -// useOptimizedUPMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_New_Update_Plugin_Manager")); -// upmSelectorPane.add(useOptimizedUPMCheckbox); -// advancePane.add(upmSelectorPane); + JPanel debuggerPane = FRGUIPaneFactory.createTitledBorderPane(Toolkit.i18nText("Fine-Design_Basic_Develop_Tools")); + openDebugComboBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Basic_Open_Debug_Window")); + debuggerPane.add(openDebugComboBox, BorderLayout.CENTER); + advancePane.add(debuggerPane); + + JPanel upmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager")); + useOptimizedUPMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_New_Update_Plugin_Manager")); + upmSelectorPane.add(useOptimizedUPMCheckbox); + advancePane.add(upmSelectorPane); + + JPanel dbmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Database_Manager")); + useUniverseDBMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_Universe_Database_Manager")); + dbmSelectorPane.add(useUniverseDBMCheckbox); + advancePane.add(dbmSelectorPane); JPanel improvePane = FRGUIPaneFactory.createVerticalTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Product_Improve")); joinProductImproveCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Join_Product_Improve")); @@ -206,10 +214,10 @@ public class PreferencePane extends BasicPane { improvePane.add(autoPushUpdateCheckBox); } - JPanel spaceUpPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); - spaceUpPane.add(oraclePane); - spaceUpPane.add(createMemoryPane()); - spaceUpPane.add(improvePane); + JPanel spaceUpPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + spaceUpPane.add(oraclePane, BorderLayout.NORTH); + spaceUpPane.add(createMemoryPane(), BorderLayout.CENTER); + spaceUpPane.add(improvePane, BorderLayout.SOUTH); advancePane.add(spaceUpPane); } @@ -226,8 +234,8 @@ public class PreferencePane extends BasicPane { enableVcsPanel.add(vcsEnableCheckBox); enableVcsPanel.add(remindVcsLabel); JPanel intervalPanel = new JPanel(FRGUIPaneFactory.createLeftZeroLayout()); - UILabel everyLabel = new UILabel(Toolkit.i18nText("Fine-Design_Vcs_Every")); - UILabel delayLabel = new UILabel(Toolkit.i18nText("Fine-Design_Vcs_Delay")); + final UILabel everyLabel = new UILabel(Toolkit.i18nText("Fine-Design_Vcs_Every")); + final UILabel delayLabel = new UILabel(Toolkit.i18nText("Fine-Design_Vcs_Delay")); intervalPanel.add(useIntervalCheckBox); intervalPanel.add(everyLabel); intervalPanel.add(saveIntervalEditor); @@ -240,10 +248,14 @@ public class PreferencePane extends BasicPane { saveCommitCheckBox.setEnabled(true); saveIntervalEditor.setEnabled(true); useIntervalCheckBox.setEnabled(true); + everyLabel.setEnabled(true); + delayLabel.setEnabled(true); } else { saveCommitCheckBox.setEnabled(false); saveIntervalEditor.setEnabled(false); useIntervalCheckBox.setEnabled(false); + everyLabel.setEnabled(false); + delayLabel.setEnabled(false); } } }); @@ -383,10 +395,10 @@ public class PreferencePane extends BasicPane { new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preference_Pagination_Line_Color")); - gridLineColorTBButton = new UIColorButton(BaseUtils.readIcon("/com/fr/design/images/gui/color/foreground.png")); + gridLineColorTBButton = new UIColorButton(IOUtils.readIcon("/com/fr/design/images/gui/color/foreground.png")); gridLineColorTBButton.setEnabled(this.isEnabled()); - paginationLineColorTBButton = new UIColorButton(BaseUtils.readIcon("/com/fr/design/images/gui/color/foreground.png")); + paginationLineColorTBButton = new UIColorButton(IOUtils.readIcon("/com/fr/design/images/gui/color/foreground.png")); paginationLineColorTBButton.setEnabled(this.isEnabled()); JPanel leftPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); @@ -636,8 +648,10 @@ public class PreferencePane extends BasicPane { this.portEditor.setValue(new Integer(designerEnvManager.getEmbedServerPort())); -// openDebugComboBox.setSelected(designerEnvManager.isOpenDebug()); -// useOptimizedUPMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseOptimizedUPM()); + openDebugComboBox.setSelected(designerEnvManager.isOpenDebug()); + useOptimizedUPMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseOptimizedUPM()); + + useUniverseDBMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseUniverseDBM()); this.oracleSpace.setSelected(designerEnvManager.isOracleSystemSpace()); this.cachingTemplateSpinner.setValue(designerEnvManager.getCachingTemplateLimit()); @@ -702,7 +716,7 @@ public class PreferencePane extends BasicPane { designerEnvManager.setJettyServerPort(portEditor.getValue().intValue()); -// designerEnvManager.setOpenDebug(openDebugComboBox.isSelected()); + designerEnvManager.setOpenDebug(openDebugComboBox.isSelected()); designerEnvManager.setOracleSystemSpace(this.oracleSpace.isSelected()); designerEnvManager.setCachingTemplateLimit((int) this.cachingTemplateSpinner.getValue()); @@ -733,17 +747,18 @@ public class PreferencePane extends BasicPane { } }); -// Configurations.update(new Worker() { -// @Override -// public void run() { -// ServerPreferenceConfig.getInstance().setUseOptimizedUPM(useOptimizedUPMCheckbox.isSelected()); -// } -// -// @Override -// public Class[] targets() { -// return new Class[] {ServerPreferenceConfig.class}; -// } -// }); + Configurations.update(new Worker() { + @Override + public void run() { + ServerPreferenceConfig.getInstance().setUseOptimizedUPM(useOptimizedUPMCheckbox.isSelected()); + ServerPreferenceConfig.getInstance().setUseUniverseDBM(useUniverseDBMCheckbox.isSelected()); + } + + @Override + public Class[] targets() { + return new Class[] {ServerPreferenceConfig.class}; + } + }); } @@ -777,4 +792,9 @@ public class PreferencePane extends BasicPane { } }); } + + @Override + public BasicDialog showWindow(Window window, DialogActionListener l) { + return showWindowWithCustomSize(window, l, new Dimension(BasicDialog.DEFAULT.width, this.getPreferredSize().height + OFFSET_HEIGHT)); + } } From ccaa4f0fb215f66dedbed8c69523a81d026fd795 Mon Sep 17 00:00:00 2001 From: richie Date: Thu, 11 Jul 2019 19:30:25 +0800 Subject: [PATCH 19/58] DesignerActivator.java edited online with Bitbucket --- .../com/fr/start/module/DesignerActivator.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java b/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java index f360f24b9..93e4874e8 100644 --- a/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java +++ b/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java @@ -3,8 +3,12 @@ package com.fr.start.module; import com.fr.base.BaseFormula; import com.fr.base.Formula; import com.fr.base.MultiFieldParameter; +import com.fr.base.passport.FinePassportListenerAdapter; +import com.fr.base.passport.FinePassportManager; import com.fr.base.process.ProcessOperator; import com.fr.chart.chartattr.ChartCollection; +import com.fr.config.MarketConfig; +import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; import com.fr.design.actions.NewFormAction; import com.fr.design.actions.core.ActionFactory; @@ -129,6 +133,7 @@ public class DesignerActivator extends Activator { loadLogAppender(); DesignerSocketIO.update(); UserInfoPane.getInstance().updateBBSUserInfo(); + storePassport(); } private void loadLogAppender() { @@ -392,9 +397,20 @@ public class DesignerActivator extends Activator { StableFactory.registerMarkedObject(ElementCaseThumbnailProcessor.MARK_STRING, new ElementCaseThumbnail()); } + private static void storePassport() { + FinePassportManager.getInstance().storePassport(MarketConfig.getInstance().getBbsUsername(), DesignerEnvManager.getEnvManager().getActivationKey()); + FinePassportManager.getInstance().addPassportListener(new FinePassportListenerAdapter() { + @Override + public void onLoginSuccess() { + FinePassportManager.getInstance().storePassport(MarketConfig.getInstance().getBbsUsername(), DesignerEnvManager.getEnvManager().getActivationKey()); + } + }); + } + @Override public void stop() { unloadLogAppender(); DesignerSocketIO.close(); } } + From a0204bc2f6def38b971fba17811d5fa360d3a5bc Mon Sep 17 00:00:00 2001 From: Hades Date: Mon, 5 Aug 2019 11:15:02 +0800 Subject: [PATCH 20/58] =?UTF-8?q?REPORT-18720=20=20=E6=A8=A1=E6=9D=BFweb?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E9=87=8C=E9=9D=A2=E9=87=87=E7=94=A8=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E8=AE=BE=E7=BD=AE=E6=97=B6=20=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E6=A0=8F=E6=8C=89=E9=92=AE=E5=BA=94=E8=AF=A5=E6=98=AF?= =?UTF-8?q?=E5=A4=84=E4=BA=8E=E7=81=B0=E5=8C=96=E4=B8=94=E4=B8=8D=E5=8F=AF?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/webattr/ToolBarDragPane.java | 12 ++++++++++++ .../java/com/fr/design/webattr/WebSettingPane.java | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/webattr/ToolBarDragPane.java b/designer-realize/src/main/java/com/fr/design/webattr/ToolBarDragPane.java index c420c04b4..9e4df08e8 100644 --- a/designer-realize/src/main/java/com/fr/design/webattr/ToolBarDragPane.java +++ b/designer-realize/src/main/java/com/fr/design/webattr/ToolBarDragPane.java @@ -9,6 +9,7 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.form.ui.ToolBar; import com.fr.form.ui.Widget; import com.fr.report.web.Location; import com.fr.report.web.ToolBarManager; @@ -35,6 +36,7 @@ import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.ImageObserver; +import java.util.List; /** * 新的拖拽ToolBar button以实现自定义工具栏 报表web设置那儿的.应该不叫ToolBarDragPane,因为实际没有提供drag功能 @@ -225,6 +227,16 @@ public class ToolBarDragPane extends WidgetToolBarPane { public void setAllEnabled(boolean b) { GUICoreUtils.setEnabled(this, b); isEnabled = b; + removeAllListener(northToolBar.getToolBarButtons()); + } + + private void removeAllListener(List toolBarButtons) { + for (ToolBarButton button : toolBarButtons) { + button.setEnabled(isEnabled); + if (!isEnabled) { + button.removeMouseListener(button); + } + } } /** diff --git a/designer-realize/src/main/java/com/fr/design/webattr/WebSettingPane.java b/designer-realize/src/main/java/com/fr/design/webattr/WebSettingPane.java index ea8225ea0..59b0d2316 100644 --- a/designer-realize/src/main/java/com/fr/design/webattr/WebSettingPane.java +++ b/designer-realize/src/main/java/com/fr/design/webattr/WebSettingPane.java @@ -122,8 +122,8 @@ public abstract class WebSettingPane extends BasicBeanPane choseComboBox.removeItemListener(itemListener); choseComboBox.setSelectedIndex(SERVER_SET); choseComboBox.addItemListener(itemListener); - checkEnabled(false); populateServerSettings(); + checkEnabled(false); return; } // 模板设置 From e58152c57f2ff0a91f38fec427da4387a8a4d3d6 Mon Sep 17 00:00:00 2001 From: Hades Date: Mon, 5 Aug 2019 15:55:14 +0800 Subject: [PATCH 21/58] =?UTF-8?q?REPORT-19184=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=EF=BC=8C=E8=81=9A=E5=90=88=E6=8A=A5=E8=A1=A8=E8=BF=9B?= =?UTF-8?q?=E5=85=A5=E7=BC=96=E8=BE=91=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/poly/creator/ECBlockEditor.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/poly/creator/ECBlockEditor.java b/designer-realize/src/main/java/com/fr/poly/creator/ECBlockEditor.java index 674de0e2d..809a246e1 100644 --- a/designer-realize/src/main/java/com/fr/poly/creator/ECBlockEditor.java +++ b/designer-realize/src/main/java/com/fr/poly/creator/ECBlockEditor.java @@ -136,6 +136,7 @@ public class ECBlockEditor extends BlockEditor { * @date 2014-11-24-下午3:48:19 */ public void resetSelectionAndChooseState() { + boolean chooseBlock = designer.isChooseBlock(); designer.setChooseType(SelectionType.INNER); if (DesignerMode.isAuthorityEditing()) { JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); @@ -167,7 +168,9 @@ public class ECBlockEditor extends BlockEditor { conditionAttributesGroupPane.populate(editComponent); EastRegionContainerPane.getInstance().updateCellElementState(isSelectedOneCell()); - + if (chooseBlock) { + EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_CELL_ATTR); + } } // 超级链接 From 087b826ce91da78aaebfa4503701606233873347 Mon Sep 17 00:00:00 2001 From: Hades Date: Mon, 5 Aug 2019 15:56:18 +0800 Subject: [PATCH 22/58] update --- .../src/main/java/com/fr/design/webattr/ToolBarDragPane.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/webattr/ToolBarDragPane.java b/designer-realize/src/main/java/com/fr/design/webattr/ToolBarDragPane.java index 9e4df08e8..fc3d81352 100644 --- a/designer-realize/src/main/java/com/fr/design/webattr/ToolBarDragPane.java +++ b/designer-realize/src/main/java/com/fr/design/webattr/ToolBarDragPane.java @@ -9,7 +9,6 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.form.ui.ToolBar; import com.fr.form.ui.Widget; import com.fr.report.web.Location; import com.fr.report.web.ToolBarManager; From d3bf0a36bae927076608c40610e7e1f20dcba9f1 Mon Sep 17 00:00:00 2001 From: Hades Date: Mon, 5 Aug 2019 15:59:09 +0800 Subject: [PATCH 23/58] =?UTF-8?q?REPORT-19237=20=E6=9D=83=E9=99=90?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E7=95=8C=E9=9D=A2-=E5=8F=AF=E8=A7=81?= =?UTF-8?q?=E5=8F=AF=E7=94=A8=E9=80=BB=E8=BE=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/designer/properties/FormWidgetAuthorityEditPane.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer-form/src/main/java/com/fr/design/designer/properties/FormWidgetAuthorityEditPane.java b/designer-form/src/main/java/com/fr/design/designer/properties/FormWidgetAuthorityEditPane.java index b66293cfc..080465d46 100644 --- a/designer-form/src/main/java/com/fr/design/designer/properties/FormWidgetAuthorityEditPane.java +++ b/designer-form/src/main/java/com/fr/design/designer/properties/FormWidgetAuthorityEditPane.java @@ -56,6 +56,7 @@ public class FormWidgetAuthorityEditPane extends AuthorityEditPane { for (String selectedRole : selectedArray) { for (Widget widget : widgets) { widget.changeVisibleAuthorityState(selectedRole, widgetVisible.isSelected()); + widgetAvailable.setEnabled(widgetVisible.isSelected()); } } doAfterAuthority(); From 972f14611939f2867c7aec5167f7c5690aeeb460 Mon Sep 17 00:00:00 2001 From: Hades Date: Tue, 6 Aug 2019 14:01:35 +0800 Subject: [PATCH 24/58] =?UTF-8?q?REPORT-19218=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E7=9B=AE=E5=BD=95=E6=A0=91=E5=B7=A5=E5=85=B7=E6=A0=8F?= =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=E6=97=A0=E6=B3=95=E5=8E=BB=E9=99=A4?= =?UTF-8?q?=E5=A4=9A=E4=B8=AA=E5=90=8E=E7=BC=80=E5=90=8D=09&&=20REPORT-192?= =?UTF-8?q?00=20=E6=95=B0=E6=8D=AE=E8=A1=A8=E7=8E=B0=E4=B8=8E=E5=A4=84?= =?UTF-8?q?=E7=90=86-=E5=85=B6=E4=BB=96=E5=B1=9E=E6=80=A7-=E6=89=93?= =?UTF-8?q?=E5=8D=B0/=E5=AF=BC=E5=87=BA=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E5=86=85=E5=AE=B9/=E8=83=8C=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/DesignerFrameFileDealerPane.java | 4 ++-- .../com/fr/design/mainframe/cell/CellElementEditPane.java | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index b48433c5c..8d8ada24a 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -532,7 +532,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt String oldName = fnf.getName(); String suffix = fnf.isDirectory() ? StringUtils.EMPTY : oldName.substring(oldName.lastIndexOf(CoreConstants.DOT), oldName.length()); - oldName = oldName.replace(suffix, StringUtils.EMPTY); + oldName = StringUtils.replaceLast(oldName, suffix, StringUtils.EMPTY); this.setLayout(new BorderLayout()); this.setModal(true); @@ -651,7 +651,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt String oldName = fnf.getName(); String suffix = fnf.isDirectory() ? StringUtils.EMPTY : oldName.substring(oldName.lastIndexOf(CoreConstants.DOT), oldName.length()); - oldName = oldName.replaceAll(suffix, StringUtils.EMPTY); + oldName = StringUtils.replaceLast(oldName, suffix, StringUtils.EMPTY); // 输入为空或者没有修改 if (ComparatorUtils.equals(userInput, oldName)) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/CellElementEditPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/CellElementEditPane.java index be62fb584..487214a80 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/CellElementEditPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/CellElementEditPane.java @@ -62,8 +62,7 @@ public class CellElementEditPane extends BasicPane { @Override public void tabChanged(int index) { card.show(center, paneList.get(index).title4PopupWindow()); - paneList.get(index).populateBean(cellelement, ePane);// 设置面板变了,也要populate - paneList.get(index).addAttributeChangeListener(listener); + populate(ePane); if (titleChangeListener != null) { titleChangeListener.fireTitleChange(getSelectedTabName()); } From 12add7ab4612c7bcf97939fd6f7d31ac7652058e Mon Sep 17 00:00:00 2001 From: Lanlan Date: Wed, 7 Aug 2019 10:36:32 +0800 Subject: [PATCH 25/58] =?UTF-8?q?REPORT-20303=20FR=E4=B8=AD=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E9=97=AA=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/extra/WebViewDlgHelper.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java b/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java index 54ddcd8c0..a64158765 100644 --- a/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java +++ b/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java @@ -12,6 +12,7 @@ import com.fr.general.IOUtils; import com.fr.general.CloudCenter; import com.fr.general.http.HttpClient; +import com.fr.general.http.HttpToolbox; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; import com.fr.plugin.PluginStoreConstants; @@ -301,10 +302,9 @@ public class WebViewDlgHelper { new SwingWorker() { @Override protected Void doInBackground() throws Exception { - HttpClient httpClient = new HttpClient(CloudCenter.getInstance().acquireUrlByKind("shop.plugin.update") + "?" + PluginUtils.FR_VERSION + "=" + ProductConstants.VERSION + "&version=" + PluginStoreConstants.getInstance().getProps("VERSION")); - httpClient.asGet(); - if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - String text = httpClient.getResponseText(); + String url = CloudCenter.getInstance().acquireUrlByKind("shop.plugin.update"); + if (url != null) { + String text = HttpToolbox.get(url + "?" + PluginUtils.FR_VERSION + "=" + ProductConstants.VERSION + "&version=" + PluginStoreConstants.getInstance().getProps("VERSION")); JSONObject resultJSONObject = new JSONObject(text); String isLatest = resultJSONObject.optString("result"); if (!ComparatorUtils.equals(isLatest, LATEST)) { From af71eab8238cccbb887dee8d29dece846c6c3437 Mon Sep 17 00:00:00 2001 From: Lanlan Date: Wed, 7 Aug 2019 10:36:32 +0800 Subject: [PATCH 26/58] =?UTF-8?q?REPORT-20303=20FR=E4=B8=AD=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E9=97=AA=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/extra/WebViewDlgHelper.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java b/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java index 54ddcd8c0..a64158765 100644 --- a/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java +++ b/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java @@ -12,6 +12,7 @@ import com.fr.general.IOUtils; import com.fr.general.CloudCenter; import com.fr.general.http.HttpClient; +import com.fr.general.http.HttpToolbox; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; import com.fr.plugin.PluginStoreConstants; @@ -301,10 +302,9 @@ public class WebViewDlgHelper { new SwingWorker() { @Override protected Void doInBackground() throws Exception { - HttpClient httpClient = new HttpClient(CloudCenter.getInstance().acquireUrlByKind("shop.plugin.update") + "?" + PluginUtils.FR_VERSION + "=" + ProductConstants.VERSION + "&version=" + PluginStoreConstants.getInstance().getProps("VERSION")); - httpClient.asGet(); - if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - String text = httpClient.getResponseText(); + String url = CloudCenter.getInstance().acquireUrlByKind("shop.plugin.update"); + if (url != null) { + String text = HttpToolbox.get(url + "?" + PluginUtils.FR_VERSION + "=" + ProductConstants.VERSION + "&version=" + PluginStoreConstants.getInstance().getProps("VERSION")); JSONObject resultJSONObject = new JSONObject(text); String isLatest = resultJSONObject.optString("result"); if (!ComparatorUtils.equals(isLatest, LATEST)) { From d00644216f17cc15d1b50eb71bcffe9a28a191a7 Mon Sep 17 00:00:00 2001 From: Hades Date: Mon, 12 Aug 2019 11:42:13 +0800 Subject: [PATCH 27/58] =?UTF-8?q?REPORT-20267=20=E9=9D=9E=E7=AE=80?= =?UTF-8?q?=E7=B9=81=E8=8B=B1=E6=97=A5=E9=9F=A9=20=E6=B5=B7=E5=A4=96?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E8=AE=BE=E8=AE=A1=E5=99=A8=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E9=97=AE=E9=A2=98=20&&=20MOBILE-22490=20?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/DesignerEnvManager.java | 13 ++++++++++++- .../ui/designer/mobile/ParaMobileDefinePane.java | 10 ++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index 7370d4d55..fdb4cb4f5 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -24,6 +24,7 @@ import com.fr.general.ComparatorUtils; import com.fr.general.FRLogFormatter; import com.fr.general.GeneralContext; import com.fr.general.IOUtils; +import com.fr.general.SupportLocale; import com.fr.general.locale.LocaleCenter; import com.fr.general.locale.LocaleMark; import com.fr.general.xml.GeneralXMLTools; @@ -1316,7 +1317,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { String tmpVal; if ((tmpVal = reader.getElementValue()) != null) { if (!CommonUtils.isNumber(tmpVal)) { - setLanguage(CommonUtils.stringToLocale(tmpVal)); + setLanguage(checkLocale(CommonUtils.stringToLocale(tmpVal))); } else { // 用于兼容10.0之前的版本 int value = Integer.parseInt(tmpVal); @@ -1365,6 +1366,16 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { } } + /** + * 对国际化进行校验 + * 非简繁英日韩的默认环境 设计器全部默认为英文版本 + * @param locale + * @return + */ + private Locale checkLocale(Locale locale) { + return SupportLocale.getInstance().isSupport(locale) ? locale : Locale.US; + } + private void readReportLengthUnit(XMLableReader reader) { String tmpVal; if (StringUtils.isNotBlank(tmpVal = reader.getElementValue())) { diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ParaMobileDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ParaMobileDefinePane.java index b924b5c55..cf909618c 100644 --- a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ParaMobileDefinePane.java +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ParaMobileDefinePane.java @@ -19,6 +19,7 @@ import com.fr.design.mainframe.MobileWidgetListPane; import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.form.ui.container.WParameterLayout; import com.fr.form.ui.container.WSortLayout; +import com.fr.general.CloudCenter; import com.fr.general.ComparatorUtils; import com.fr.general.SiteCenter; import com.fr.log.FineLoggerFactory; @@ -87,9 +88,7 @@ public class ParaMobileDefinePane extends MobileWidgetDefinePane { double[] rowSize = {p, p}; double[] columnSize = {p, f}; int[][] rowCount = {{1, 1}, {1, 1}}; - if (ExtraReportClassManager.getInstance().getArray(MobileParamStyleProvider.MARK_STRING).size() != 0) { - tipLabel = null; - } else { + if (ExtraReportClassManager.getInstance().getArray(MobileParamStyleProvider.MARK_STRING).isEmpty()) { ((WParameterLayout) (paraCreator.toData())).setProvider((MobileParamStyleProvider) ((Item) paramLocationComboBox.getItemAt(0)).getValue()); } Component[][] components = new Component[][]{ @@ -127,10 +126,9 @@ public class ParaMobileDefinePane extends MobileWidgetDefinePane { @Override public void mouseClicked(MouseEvent e) { try { - //todo 添加对应插件下载地址 - Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("plugin.download"))); + Desktop.getDesktop().browse(new URI(CloudCenter.getInstance().acquireUrlByKind("plugin.mobile.style"))); } catch (Exception exp) { - + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } } @Override From f243ef88c77bab4bd8e586f4a3fc8d55d3d376f2 Mon Sep 17 00:00:00 2001 From: Hades Date: Mon, 12 Aug 2019 13:36:05 +0800 Subject: [PATCH 28/58] update --- .../src/main/java/com/fr/design/DesignerEnvManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index fdb4cb4f5..fa705c2a8 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -187,7 +187,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { if (designerEnvManager == null) { designerEnvManager = new DesignerEnvManager(); //REPORT-15332有一个国际化调用比较早,需要在这边就设置好locale,由于后台GeneralContext默认是China - GeneralContext.setLocale(designerEnvManager.getLanguage()); + GeneralContext.setLocale(DesignerEnvManager.designerEnvManager.checkLocale(designerEnvManager.getLanguage())); try { XMLTools.readFileXML(designerEnvManager, designerEnvManager.getDesignerEnvFile()); } catch (Exception e) { @@ -1373,7 +1373,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * @return */ private Locale checkLocale(Locale locale) { - return SupportLocale.getInstance().isSupport(locale) ? locale : Locale.US; + return Locale.US;//SupportLocale.getInstance().isSupport(locale) ? locale : Locale.US; } private void readReportLengthUnit(XMLableReader reader) { From eae894964b3c5cca7a84f9f3b8eff046a43e975a Mon Sep 17 00:00:00 2001 From: Hades Date: Mon, 12 Aug 2019 13:37:32 +0800 Subject: [PATCH 29/58] update --- .../src/main/java/com/fr/design/DesignerEnvManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index fa705c2a8..008068ab2 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -1373,7 +1373,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * @return */ private Locale checkLocale(Locale locale) { - return Locale.US;//SupportLocale.getInstance().isSupport(locale) ? locale : Locale.US; + return SupportLocale.getInstance().isSupport(locale) ? locale : Locale.US; } private void readReportLengthUnit(XMLableReader reader) { From 82598785f8be1a5d6f12451f767725da3d0766a8 Mon Sep 17 00:00:00 2001 From: Hades Date: Tue, 13 Aug 2019 14:53:59 +0800 Subject: [PATCH 30/58] =?UTF-8?q?REPORT-20267=20=E9=9D=9E=20=E7=AE=80?= =?UTF-8?q?=E7=B9=81=E8=8B=B1=E6=97=A5=E9=9F=A9=20=E6=B5=B7=E5=A4=96?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E8=AE=BE=E8=AE=A1=E5=99=A8=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/DesignerEnvManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index 008068ab2..8769454d1 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -117,7 +117,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { private Color paginationLineColor = Color.black; // line color of paper private boolean supportCellEditorDef = false; private boolean isDragPermited = false; - private Locale language = Locale.getDefault(); + private Locale language = checkLocale(Locale.getDefault()); //2014-8-26默认显示全部, 因为以前的版本, 虽然是false, 实际上是显示所有表, 因此这边要兼容 private boolean useOracleSystemSpace = true; private int cachingTemplateLimit = CACHINGTEMPLATE_LIMIT; @@ -187,7 +187,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { if (designerEnvManager == null) { designerEnvManager = new DesignerEnvManager(); //REPORT-15332有一个国际化调用比较早,需要在这边就设置好locale,由于后台GeneralContext默认是China - GeneralContext.setLocale(DesignerEnvManager.designerEnvManager.checkLocale(designerEnvManager.getLanguage())); + GeneralContext.setLocale(designerEnvManager.getLanguage()); try { XMLTools.readFileXML(designerEnvManager, designerEnvManager.getDesignerEnvFile()); } catch (Exception e) { From 11e78f1c519bb4fa75154f24884394804c1c2d11 Mon Sep 17 00:00:00 2001 From: Hades Date: Fri, 23 Aug 2019 09:44:14 +0800 Subject: [PATCH 31/58] =?UTF-8?q?REPORT-20901=2010.0=E4=BB=8E=E5=89=8D?= =?UTF-8?q?=E5=BE=80=E5=90=8E=E5=88=A0=E6=8E=89=E6=89=93=E5=BC=80=E7=9A=84?= =?UTF-8?q?tab=E7=95=8C=E9=9D=A2=20=E6=B2=A1=E6=9C=89=E6=94=B9=E5=8F=98?= =?UTF-8?q?=E5=8F=8A=E9=80=89=E4=B8=AD=E4=B8=AD=E9=97=B4tab=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E4=B8=8D=E5=AE=8C=E6=95=B4=20&&=20REPORT-20941=20?= =?UTF-8?q?=E5=A1=AB=E6=8A=A5=E5=B1=9E=E6=80=A7=E6=99=BA=E8=83=BD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=8D=95=E5=85=83=E6=A0=BC=E7=BB=84=E5=8D=95=E5=87=BB?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/file/HistoryTemplateListCache.java | 12 +++++++----- .../com/fr/design/file/MutilTempalteTabPane.java | 3 +++ .../write/submit/SmartInsertDBManipulationPane.java | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java b/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java index fc46ff59b..740f23aa8 100644 --- a/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java +++ b/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java @@ -269,11 +269,6 @@ public class HistoryTemplateListCache implements CallbackEvent { if (size == index + 1 && index > 0) { //如果删除的是后一个Tab,则定位到前一个 MutilTempalteTabPane.getInstance().setSelectedIndex(index - 1); - JTemplate selectedFile = MutilTempalteTabPane.getInstance().getSelectedFile(); - if (!isCurrentEditingFile(selectedFile.getPath())) { - //如果此时面板上的实时刷新的selectedIndex得到的和历史的不一样 - DesignerContext.getDesignerFrame().activateJTemplate(selectedFile); - } } } } @@ -282,6 +277,13 @@ public class HistoryTemplateListCache implements CallbackEvent { if (openFileCount == 0) { DesignerContext.getDesignerFrame().addAndActivateJTemplate(); } + + JTemplate selectedFile = MutilTempalteTabPane.getInstance().getSelectedFile(); + if (!isCurrentEditingFile(selectedFile.getPath())) { + //如果此时面板上的实时刷新的selectedIndex得到的和历史的不一样 + DesignerContext.getDesignerFrame().activateJTemplate(selectedFile); + } + MutilTempalteTabPane.getInstance().repaint(); } diff --git a/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java b/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java index 968f72a59..170369da7 100644 --- a/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java +++ b/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java @@ -156,6 +156,9 @@ public class MutilTempalteTabPane extends JComponent { } public JTemplate getSelectedFile() { + if (openedTemplate.size() == selectedIndex) { + selectedIndex = Math.max(--selectedIndex, 0); + } return openedTemplate.get(selectedIndex); } diff --git a/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java b/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java index 693722812..f9433aade 100644 --- a/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java +++ b/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java @@ -427,7 +427,7 @@ public class SmartInsertDBManipulationPane extends DBManipulationPane { dealSelectColRow(add, cellselection); } else { ColumnRow columnRow = ColumnRow.valueOf(cellselection.getColumn(), cellselection.getRow()); - String allColumnRow = columnRow.toString(); + String allColumnRow = newValue.toString(); if (!allColumnRow.contains(columnRow.toString())) { add.addColumnRow(columnRow); } From d167e581cd1921ca21d1c8eb7a3e59963c134706 Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Wed, 28 Aug 2019 19:59:49 +0800 Subject: [PATCH 32/58] =?UTF-8?q?=E4=BA=91=E7=AB=AF=E8=BF=90=E7=BB=B4?= =?UTF-8?q?=E5=9B=BA=E5=8C=96=E6=95=B0=E6=8D=AE=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../messagecollect/solid/SolidCollector.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java new file mode 100644 index 000000000..0b1110a6f --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java @@ -0,0 +1,53 @@ +package com.fr.design.mainframe.messagecollect.solid; + +import com.fr.general.http.HttpToolbox; +import com.fr.log.FineLoggerFactory; +import com.fr.stable.StringUtils; +import com.fr.workspace.WorkContext; + +import java.util.HashMap; +import java.util.Map; + +/** + * 设计器固化信息回传类 + * Created by alex sung on 2019/8/22. + */ +public class SolidCollector { + private static final String CONTENT_URL = "/v10/collect/solid"; + private static final String DELETE_URL = "/v10/collect/solid/delete"; + + /** + * 回传文件给云中心,并删除服务端本地文件 + */ + public void sendToCloudCenterAndDeleteFile() { + try { + String content = requestContent(); + if(StringUtils.isNotEmpty(content)){ + String url = ""; + Map params = new HashMap<>(); + params.put("content", requestContent()); + HttpToolbox.post(url, params); + + String deleteUrl = WorkContext.getCurrent().getPath() + DELETE_URL; + HttpToolbox.post(deleteUrl, new HashMap()); + } + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } + + /** + * 获取服务端固化文件内容 + * @return 回传内容 + */ + public String requestContent() { + String content = null; + try { + String url = WorkContext.getCurrent().getPath() + CONTENT_URL; + content = HttpToolbox.get(url); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + return content; + } +} From e5ef14c8034d865d746f7667db5fbaa464bed9eb Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Mon, 2 Sep 2019 13:01:55 +0800 Subject: [PATCH 33/58] =?UTF-8?q?=E9=9A=90=E7=A7=81=E7=AD=96=E7=95=A5?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/file/PreferencePane.java | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index 2a856f159..5e83f87fc 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -1,10 +1,10 @@ package com.fr.design.actions.file; -import com.fr.base.BaseUtils; import com.fr.config.Configuration; import com.fr.config.ServerPreferenceConfig; import com.fr.design.DesignerEnvManager; import com.fr.design.RestartHelper; +import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; @@ -30,12 +30,14 @@ import com.fr.design.mainframe.vcs.common.VcsHelper; import com.fr.design.update.push.DesignerPushUpdateManager; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.widget.FRWidgetFactory; +import com.fr.general.CloudCenter; import com.fr.general.ComparatorUtils; import com.fr.general.FRFont; import com.fr.general.IOUtils; import com.fr.general.Inter; import com.fr.general.log.Log4jConfig; import com.fr.locale.InterProviderFactory; +import com.fr.log.FineLoggerFactory; import com.fr.third.apache.log4j.Level; import com.fr.transaction.Configurations; import com.fr.transaction.Worker; @@ -50,6 +52,8 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.BorderLayout; import java.awt.Component; +import java.awt.Cursor; +import java.awt.Desktop; import java.awt.Dimension; import java.awt.Font; import java.awt.Window; @@ -60,6 +64,7 @@ import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; +import java.net.URI; import java.util.Locale; import java.util.Map; @@ -107,6 +112,7 @@ public class PreferencePane extends BasicPane { private static final String DISPLAY_EQUALS = "+"; private static final String MINUS = "MINUS"; private static final String DISPLAY_MINUS = "-"; + private static final String PRIVACY_POLICY = "design.privacy"; private static final Level[] LOG = {Level.FATAL, Level.ERROR, Level.WARN, Level.INFO, Level.DEBUG}; @@ -149,6 +155,7 @@ public class PreferencePane extends BasicPane { private UICheckBox useIntervalCheckBox; private IntegerEditor saveIntervalEditor; private UILabel remindVcsLabel; + private UILabel linkLabel; @@ -207,8 +214,27 @@ public class PreferencePane extends BasicPane { JPanel improvePane = FRGUIPaneFactory.createVerticalTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Product_Improve")); joinProductImproveCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Join_Product_Improve")); - improvePane.add(joinProductImproveCheckBox); - + linkLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Privacy_Policy")); + linkLabel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + linkLabel.setForeground(UIConstants.NORMAL_BLUE); + linkLabel.addMouseListener(new MouseAdapter(){ + @Override + public void mouseClicked(MouseEvent e) { + try { + Desktop.getDesktop().browse(new URI(CloudCenter.getInstance().acquireUrlByKind(PRIVACY_POLICY))); + } catch (Exception e1) { + FineLoggerFactory.getLogger().error(e1.getMessage(), e1); + } + } + }); + double p = TableLayout.PREFERRED; + double rowSize[] = {p}; + double columnSize[] = {p, p}; + Component[][] components = { + {joinProductImproveCheckBox, linkLabel}, + }; + JPanel choosePane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); + improvePane.add(choosePane); if (DesignerPushUpdateManager.getInstance().isAutoPushUpdateSupported()) { autoPushUpdateCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Automatic_Push_Update")); improvePane.add(autoPushUpdateCheckBox); From d3aebf09c79bc63497d7050ae320213471439ab2 Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Tue, 3 Sep 2019 15:39:23 +0800 Subject: [PATCH 34/58] =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=9B=9E?= =?UTF-8?q?=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../messagecollect/solid/SolidCollector.java | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java index 0b1110a6f..eb5c05912 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java @@ -1,7 +1,9 @@ package com.fr.design.mainframe.messagecollect.solid; +import com.fr.general.CloudCenter; import com.fr.general.http.HttpToolbox; import com.fr.log.FineLoggerFactory; +import com.fr.stable.CommonUtils; import com.fr.stable.StringUtils; import com.fr.workspace.WorkContext; @@ -12,9 +14,27 @@ import java.util.Map; * 设计器固化信息回传类 * Created by alex sung on 2019/8/22. */ + + public class SolidCollector { private static final String CONTENT_URL = "/v10/collect/solid"; private static final String DELETE_URL = "/v10/collect/solid/delete"; + private static final String ATTR_CIPHER_TEXT = "cipherText"; + private static final String ATTR_SIGNATURE = "signature"; + private static final String SOLID_UPLOAD_URL = CloudCenter.getInstance().acquireUrlByKind("design.solid"); + + private static volatile SolidCollector instance; + + public static SolidCollector getInstance() { + if (instance == null) { + synchronized (SolidCollector.class) { + if (instance == null) { + instance = new SolidCollector(); + } + } + } + return instance; + } /** * 回传文件给云中心,并删除服务端本地文件 @@ -23,16 +43,16 @@ public class SolidCollector { try { String content = requestContent(); if(StringUtils.isNotEmpty(content)){ - String url = ""; Map params = new HashMap<>(); - params.put("content", requestContent()); - HttpToolbox.post(url, params); + params.put(ATTR_CIPHER_TEXT, requestContent()); + params.put(ATTR_SIGNATURE, String.valueOf(CommonUtils.signature())); + HttpToolbox.post(SOLID_UPLOAD_URL, params); String deleteUrl = WorkContext.getCurrent().getPath() + DELETE_URL; HttpToolbox.post(deleteUrl, new HashMap()); } } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().info(e.getMessage(), e); } } @@ -40,14 +60,7 @@ public class SolidCollector { * 获取服务端固化文件内容 * @return 回传内容 */ - public String requestContent() { - String content = null; - try { - String url = WorkContext.getCurrent().getPath() + CONTENT_URL; - content = HttpToolbox.get(url); - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - } - return content; + public String requestContent() throws Exception{ + return HttpToolbox.get(WorkContext.getCurrent().getPath() + CONTENT_URL); } } From f4128aaef564b6188c27e39ad4c9279308421470 Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Tue, 3 Sep 2019 15:41:28 +0800 Subject: [PATCH 35/58] =?UTF-8?q?=E5=9B=9E=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/mainframe/InformationCollector.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java b/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java index 83cb7dd33..0ec61e5e7 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java @@ -8,6 +8,7 @@ import com.fr.config.MarketConfig; import com.fr.design.DesignerEnvManager; import com.fr.design.mainframe.errorinfo.ErrorInfoUploader; import com.fr.design.mainframe.messagecollect.impl.FocusPointMessageUploader; +import com.fr.design.mainframe.messagecollect.solid.SolidCollector; import com.fr.design.mainframe.template.info.TemplateInfoCollector; import com.fr.general.CloudCenter; import com.fr.general.ComparatorUtils; @@ -200,6 +201,7 @@ public class InformationCollector implements XMLReadable, XMLWriter { service.schedule(new Runnable() { @Override public void run() { + SolidCollector.getInstance().sendToCloudCenterAndDeleteFile(); sendUserInfo(); FocusPointMessageUploader.getInstance().sendToCloudCenter(); TemplateInfoCollector.getInstance().sendTemplateInfo(); From d453a5be06633fee5e2303495297a4276a155614 Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Thu, 5 Sep 2019 15:19:41 +0800 Subject: [PATCH 36/58] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E6=90=BA?= =?UTF-8?q?=E5=B8=A6=E9=89=B4=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../solid/SolidCollectConstants.java | 18 +++++++ .../messagecollect/solid/SolidCollector.java | 47 +++++++++++++++---- 2 files changed, 56 insertions(+), 9 deletions(-) create mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollectConstants.java diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollectConstants.java b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollectConstants.java new file mode 100644 index 000000000..452da9ecc --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollectConstants.java @@ -0,0 +1,18 @@ +package com.fr.design.mainframe.messagecollect.solid; + +/** + * Created by alex sung on 2019/9/5. + */ +public class SolidCollectConstants { + private SolidCollectConstants(){} + + /** + * 客户端请求subject + */ + public static final String REQUEST_SUBJECT = "solid"; + + /** + * 客户端请求超时鉴权时间,默认1h失效 + */ + public static final long TIME_OUT = 60 * 60 * 1000; +} diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java index eb5c05912..eaaa53231 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java @@ -2,14 +2,21 @@ package com.fr.design.mainframe.messagecollect.solid; import com.fr.general.CloudCenter; import com.fr.general.http.HttpToolbox; +import com.fr.json.JSON; +import com.fr.json.JSONFactory; import com.fr.log.FineLoggerFactory; +import com.fr.security.JwtUtils; import com.fr.stable.CommonUtils; import com.fr.stable.StringUtils; import com.fr.workspace.WorkContext; +import java.io.IOException; import java.util.HashMap; import java.util.Map; +import static com.fr.design.mainframe.messagecollect.solid.SolidCollectConstants.REQUEST_SUBJECT; +import static com.fr.design.mainframe.messagecollect.solid.SolidCollectConstants.TIME_OUT; + /** * 设计器固化信息回传类 * Created by alex sung on 2019/8/22. @@ -19,6 +26,7 @@ import java.util.Map; public class SolidCollector { private static final String CONTENT_URL = "/v10/collect/solid"; private static final String DELETE_URL = "/v10/collect/solid/delete"; + private static final String UNLOCK_URL = "/v10/collect/solid/unlock"; private static final String ATTR_CIPHER_TEXT = "cipherText"; private static final String ATTR_SIGNATURE = "signature"; private static final String SOLID_UPLOAD_URL = CloudCenter.getInstance().acquireUrlByKind("design.solid"); @@ -40,19 +48,32 @@ public class SolidCollector { * 回传文件给云中心,并删除服务端本地文件 */ public void sendToCloudCenterAndDeleteFile() { + if (WorkContext.getCurrent().isLocal()) { + return; + } try { String content = requestContent(); - if(StringUtils.isNotEmpty(content)){ - Map params = new HashMap<>(); - params.put(ATTR_CIPHER_TEXT, requestContent()); - params.put(ATTR_SIGNATURE, String.valueOf(CommonUtils.signature())); - HttpToolbox.post(SOLID_UPLOAD_URL, params); + if (StringUtils.isNotEmpty(content)) { + String cipherText = JSONFactory.createJSON(JSON.OBJECT).optString("data"); + if(StringUtils.isNotEmpty(cipherText)){ + Map params = new HashMap<>(); + params.put(ATTR_CIPHER_TEXT, cipherText); + params.put(ATTR_SIGNATURE, String.valueOf(CommonUtils.signature())); + HttpToolbox.post(SOLID_UPLOAD_URL, params); - String deleteUrl = WorkContext.getCurrent().getPath() + DELETE_URL; - HttpToolbox.post(deleteUrl, new HashMap()); + String deleteUrl = WorkContext.getCurrent().getPath() + DELETE_URL; + HttpToolbox.post(deleteUrl, getParams()); + } } } catch (Exception e) { FineLoggerFactory.getLogger().info(e.getMessage(), e); + } finally { + String unlockUrl = WorkContext.getCurrent().getPath() + UNLOCK_URL; + try { + HttpToolbox.post(unlockUrl, getParams()); + } catch (IOException e) { + FineLoggerFactory.getLogger().warn(e.getMessage(), e); + } } } @@ -60,7 +81,15 @@ public class SolidCollector { * 获取服务端固化文件内容 * @return 回传内容 */ - public String requestContent() throws Exception{ - return HttpToolbox.get(WorkContext.getCurrent().getPath() + CONTENT_URL); + public String requestContent() throws Exception { + Map params = new HashMap(); + params.put("token", JwtUtils.createDefaultJWT(REQUEST_SUBJECT, TIME_OUT)); + return HttpToolbox.get(WorkContext.getCurrent().getPath() + CONTENT_URL, params); + } + + private Map getParams() { + Map params = new HashMap(); + params.put("token", JwtUtils.createDefaultJWT(REQUEST_SUBJECT, TIME_OUT)); + return params; } } From 7519d03aefd365d9691f6010c4cb16dc28d00424 Mon Sep 17 00:00:00 2001 From: vito Date: Thu, 5 Sep 2019 17:21:16 +0800 Subject: [PATCH 37/58] =?UTF-8?q?REPORT-19945=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E5=90=AF=E5=8A=A8=E4=BF=A1=E6=81=AF=E6=94=B6=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/InformationCollector.java | 201 ++++++++++-------- .../StartupMessageCollector.java | 89 ++++++++ .../com/fr/start/module/DesignerStartup.java | 11 +- 3 files changed, 209 insertions(+), 92 deletions(-) create mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/StartupMessageCollector.java diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java b/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java index 0ec61e5e7..7c3ca2dac 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java @@ -1,9 +1,7 @@ -/** - * - */ package com.fr.design.mainframe; import com.fr.base.FRContext; +import com.fr.concurrent.NamedThreadFactory; import com.fr.config.MarketConfig; import com.fr.design.DesignerEnvManager; import com.fr.design.mainframe.errorinfo.ErrorInfoUploader; @@ -30,6 +28,7 @@ import com.fr.stable.xml.XMLTools; import com.fr.stable.xml.XMLWriter; import com.fr.stable.xml.XMLableReader; import com.fr.third.javax.xml.stream.XMLStreamException; +import com.sun.management.OperatingSystemMXBean; import java.io.BufferedWriter; import java.io.ByteArrayInputStream; @@ -43,6 +42,8 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; +import java.lang.management.ManagementFactory; +import java.nio.charset.StandardCharsets; import java.text.DateFormat; import java.util.ArrayList; import java.util.Date; @@ -53,15 +54,19 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; /** - * @author neil + * 设计器信息收集 * + * @author neil * @date: 2015-4-8-下午5:11:46 */ public class InformationCollector implements XMLReadable, XMLWriter { - // 24小时上传一次 + /** + * 24小时上传一次 + */ private static final long DELTA = 24 * 3600 * 1000L; private static final long SEND_DELAY = 300 * 1000L; + private static final int BYTE_TO_MB = 1024 * 1024; private static final String FILE_NAME = "fr.info"; private static final String XML_START_STOP_LIST = "StartStopList"; private static final String XML_START_STOP = "StartStop"; @@ -74,26 +79,33 @@ public class InformationCollector implements XMLReadable, XMLWriter { private static final String XML_UUID = "UUID"; private static final String XML_KEY = "ActiveKey"; private static final String XML_OS = "OS"; + private static final String XML_ARCH = "arch"; + private static final String XML_AVAILABLE_PROCESSORS = "cpu"; + private static final String XML_PHYSICAL_MEMORY = "systemMemory"; private static InformationCollector collector; - //启动时间与关闭时间列表 - private List startStop = new ArrayList(); - //上一次的发送时间 + /** + * 启动时间与关闭时间列表 + */ + private List startStop = new ArrayList<>(); + /** + * 上一次的发送时间 + */ private String lastTime; private StartStopTime current = new StartStopTime(); - public static InformationCollector getInstance(){ + public static InformationCollector getInstance() { if (collector == null) { collector = new InformationCollector(); - readEncodeXMLFile(collector, collector.getInfoFile()); + readEncodeXMLFile(collector, collector.getInfoFile()); } return collector; } - private static void readEncodeXMLFile(XMLReadable xmlReadable, File xmlFile){ + private static void readEncodeXMLFile(XMLReadable xmlReadable, File xmlFile) { if (xmlFile == null || !xmlFile.exists()) { return; } @@ -119,13 +131,13 @@ public class InformationCollector implements XMLReadable, XMLWriter { } - private static String getDecodeFileContent(File xmlFile) throws FileNotFoundException, UnsupportedEncodingException{ + private static String getDecodeFileContent(File xmlFile) throws FileNotFoundException, UnsupportedEncodingException { InputStream encodeInputStream = new FileInputStream(xmlFile); String encodeContent = IOUtils.inputStream2String(encodeInputStream); return DesUtils.getDecString(encodeContent); } - private long getLastTimeMillis(){ + private long getLastTimeMillis() { if (StringUtils.isEmpty(this.lastTime)) { return 0; } @@ -142,23 +154,36 @@ public class InformationCollector implements XMLReadable, XMLWriter { JSONObject content = new JSONObject(); JSONArray startStopArray = new JSONArray(); - for (int i = 0; i < startStop.size(); i++) { + for (StartStopTime startStopTime : startStop) { JSONObject jo = new JSONObject(); - jo.put(ATTR_START, startStop.get(i).getStartDate()); - jo.put(ATTR_STOP, startStop.get(i).getStopDate()); + jo.put(ATTR_START, startStopTime.getStartDate()); + jo.put(ATTR_STOP, startStopTime.getStopDate()); startStopArray.put(jo); - DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); - content.put(XML_START_STOP, startStopArray); - content.put(XML_UUID, envManager.getUUID()); - content.put(XML_JAR, GeneralUtils.readBuildNO()); - content.put(XML_VERSION, ProductConstants.RELEASE_VERSION); - content.put(XML_USERNAME, MarketConfig.getInstance().getBbsUsername()); - content.put(XML_KEY, envManager.getActivationKey()); - content.put(XML_OS, System.getProperty("os.name")); } + DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); + content.put(XML_START_STOP, startStopArray); + content.put(XML_UUID, envManager.getUUID()); + content.put(XML_JAR, GeneralUtils.readBuildNO()); + content.put(XML_VERSION, ProductConstants.RELEASE_VERSION); + content.put(XML_USERNAME, MarketConfig.getInstance().getBbsUsername()); + content.put(XML_KEY, envManager.getActivationKey()); + content.put(XML_OS, System.getProperty("os.name")); + content.put(XML_ARCH, System.getProperty("os.arch")); + content.put(XML_AVAILABLE_PROCESSORS, Runtime.getRuntime().availableProcessors()); + content.put(XML_PHYSICAL_MEMORY, getTotalPhysicalMemorySize()); return content; } + /** + * 获取物理内存,单位GB + * + * @return 物理内存 + */ + private static long getTotalPhysicalMemorySize() { + OperatingSystemMXBean bean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); + return bean.getTotalPhysicalMemorySize() / BYTE_TO_MB; + } + private void sendUserInfo(){ long currentTime = new Date().getTime(); long lastTime = getLastTimeMillis(); @@ -186,18 +211,18 @@ public class InformationCollector implements XMLReadable, XMLWriter { /** * 收集开始使用时间,发送信息 */ - public void collectStartTime(){ + public void collectStartTime() { this.current.setStartDate(dateToString()); sendUserInfoInOtherThread(); } - private void sendUserInfoInOtherThread(){ + private void sendUserInfoInOtherThread() { if (!DesignerEnvManager.getEnvManager().isJoinProductImprove() || !FRContext.isChineseEnv()) { return; } - ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor(); + ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("InformationCollector")); service.schedule(new Runnable() { @Override public void run() { @@ -210,67 +235,66 @@ public class InformationCollector implements XMLReadable, XMLWriter { }, SEND_DELAY, TimeUnit.MILLISECONDS); } - /** - * 收集结束使用时间 - */ - public void collectStopTime(){ + /** + * 收集结束使用时间 + */ + public void collectStopTime() { this.current.setStopDate(dateToString()); } - private String dateToString(){ + private String dateToString() { DateFormat df = FRContext.getDefaultValues().getDateTimeFormat(); return df.format(new Date()); } - private void reset(){ + private void reset() { this.startStop.clear(); this.lastTime = dateToString(); } - private File getInfoFile() { - return new File(StableUtils.pathJoin(ProductConstants.getEnvHome(), FILE_NAME)); - } - - /** - * 保存xml文件 - */ - public void saveXMLFile() { - File xmlFile = this.getInfoFile(); - try{ - ByteArrayOutputStream out = new ByteArrayOutputStream(); + private File getInfoFile() { + return new File(StableUtils.pathJoin(ProductConstants.getEnvHome(), FILE_NAME)); + } + + /** + * 保存xml文件 + */ + public void saveXMLFile() { + File xmlFile = this.getInfoFile(); + try { + ByteArrayOutputStream out = new ByteArrayOutputStream(); XMLTools.writeOutputStreamXML(this, out); out.flush(); out.close(); - String fileContent = new String(out.toByteArray(), EncodeConstants.ENCODING_UTF_8); + String fileContent = new String(out.toByteArray(), StandardCharsets.UTF_8); String encodeCotent = DesUtils.getEncString(fileContent); writeEncodeContentToFile(encodeCotent, xmlFile); - }catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); } - } + } /** * 将文件内容写到输出流中 */ - private static void writeEncodeContentToFile(String fileContent, File file){ + private static void writeEncodeContentToFile(String fileContent, File file) { BufferedWriter bw = null; try { FileOutputStream fos = new FileOutputStream(file); - OutputStreamWriter osw = new OutputStreamWriter(fos, EncodeConstants.ENCODING_UTF_8); + OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8); bw = new BufferedWriter(osw); bw.write(fileContent); } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } finally { - if(bw != null){ + if (bw != null) { try { bw.close(); - } catch (IOException e) { + } catch (IOException ignore) { } } } - } @Override @@ -285,56 +309,57 @@ public class InformationCollector implements XMLReadable, XMLWriter { writer.end(); } - private void writeStartStopList(XMLPrintWriter writer){ + private void writeStartStopList(XMLPrintWriter writer) { //启停 - writer.startTAG(XML_START_STOP_LIST); - for (int i = 0; i < startStop.size(); i++) { - startStop.get(i).writeXML(writer); + writer.startTAG(XML_START_STOP_LIST); + for (StartStopTime startStopTime : startStop) { + startStopTime.writeXML(writer); } - writer.end(); + writer.end(); } - private void writeTag(String tag, String content, XMLPrintWriter writer){ + private void writeTag(String tag, String content, XMLPrintWriter writer) { if (StringUtils.isEmpty(content)) { return; } - writer.startTAG(tag); - writer.textNode(content); - writer.end(); + writer.startTAG(tag); + writer.textNode(content); + writer.end(); } @Override public void readXML(XMLableReader reader) { - if (reader.isChildNode()) { - String name = reader.getTagName(); - if (XML_START_STOP_LIST.equals(name)) { - readStartStopList(reader); - } else if(XML_LAST_TIME.equals(name)){ - readLastTime(reader); + if (reader.isChildNode()) { + String name = reader.getTagName(); + if (XML_START_STOP_LIST.equals(name)) { + readStartStopList(reader); + } else if (XML_LAST_TIME.equals(name)) { + readLastTime(reader); } - } + } } - private void readLastTime(XMLableReader reader){ + private void readLastTime(XMLableReader reader) { String tmpVal; if (StringUtils.isNotBlank(tmpVal = reader.getElementValue())) { this.lastTime = tmpVal; } } - private void readStartStopList(XMLableReader reader){ - startStop.clear(); + private void readStartStopList(XMLableReader reader) { + startStop.clear(); reader.readXMLObject(new XMLReadable() { - public void readXML(XMLableReader reader) { - if (XML_START_STOP.equals(reader.getTagName())) { - StartStopTime startStopTime = new StartStopTime(); - reader.readXMLObject(startStopTime); - startStop.add(startStopTime); - } - } - }); + @Override + public void readXML(XMLableReader reader) { + if (XML_START_STOP.equals(reader.getTagName())) { + StartStopTime startStopTime = new StartStopTime(); + reader.readXMLObject(startStopTime); + startStop.add(startStopTime); + } + } + }); } private class StartStopTime implements XMLReadable, XMLWriter { @@ -358,17 +383,19 @@ public class InformationCollector implements XMLReadable, XMLWriter { this.stopDate = endDate; } + @Override public void writeXML(XMLPrintWriter writer) { - writer.startTAG(XML_START_STOP); - if (StringUtils.isNotEmpty(startDate)) { - writer.attr(ATTR_START, this.startDate); + writer.startTAG(XML_START_STOP); + if (StringUtils.isNotEmpty(startDate)) { + writer.attr(ATTR_START, this.startDate); } - if (StringUtils.isNotEmpty(stopDate)) { - writer.attr(ATTR_STOP, this.stopDate); + if (StringUtils.isNotEmpty(stopDate)) { + writer.attr(ATTR_STOP, this.stopDate); } - writer.end(); + writer.end(); } + @Override public void readXML(XMLableReader reader) { this.startDate = reader.getAttrAsString(ATTR_START, StringUtils.EMPTY); this.stopDate = reader.getAttrAsString(ATTR_STOP, StringUtils.EMPTY); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/StartupMessageCollector.java b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/StartupMessageCollector.java new file mode 100644 index 000000000..2fcd2328c --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/StartupMessageCollector.java @@ -0,0 +1,89 @@ +package com.fr.design.mainframe.messagecollect; + +import com.fr.concurrent.NamedThreadFactory; +import com.fr.design.mainframe.SiteCenterToken; +import com.fr.event.Event; +import com.fr.event.EventDispatcher; +import com.fr.event.Listener; +import com.fr.general.CloudCenter; +import com.fr.general.ComparatorUtils; +import com.fr.general.http.HttpToolbox; +import com.fr.json.JSONObject; +import com.fr.log.FineLoggerFactory; +import com.fr.module.ModuleContext; +import com.fr.module.engine.FineModule; +import com.fr.runtime.FineRuntime; +import com.fr.stable.StringUtils; + +import java.util.HashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * 启动信息收集 + * + * @author vito + * @version 10.0 + * Created by vito on 2019/9/4 + */ +public class StartupMessageCollector { + + private static final String XML_STARTUP_TIME = "t"; + private static final String XML_STARTUP_LOG = "startupLog"; + private static final String XML_STARTUP_Memory = "designerMemory"; + private static final String XML_STARTUP_COST = "cost"; + private static final String STARTUP_URL_KEY = "user.info.v10.startup"; + private static final String LOG_TYPE = "single"; + private static final int BYTE_TO_MB = 1024 * 1024; + + public static final StartupMessageCollector INSTANCE = new StartupMessageCollector(); + + private StartupMessageCollector() { + } + + public static StartupMessageCollector getInstance() { + return INSTANCE; + } + + public void recordStartupLog() { + EventDispatcher.listen(FineRuntime.ApplicationEvent.AFTER_START, new Listener() { + + @Override + public void on(Event event, Long param) { + final String url = CloudCenter.getInstance().acquireUrlByKind(STARTUP_URL_KEY); + if (StringUtils.isEmpty(url)) { + return; + } + ExecutorService es = Executors.newSingleThreadExecutor(new NamedThreadFactory("StartupMessageCollector")); + es.submit(new Runnable() { + @Override + public void run() { + FineModule root = (FineModule) ModuleContext.getRoot().getRoot(); + JSONObject profile = root.profile(); + JSONObject json = JSONObject.create() + .put(XML_STARTUP_TIME, FineRuntime.getAppStartTime() + FineRuntime.getStartingTime()) + .put(XML_STARTUP_COST, FineRuntime.getStartingTime()) + .put(XML_STARTUP_LOG, profile) + .put(XML_STARTUP_Memory, Runtime.getRuntime().totalMemory() / BYTE_TO_MB); + sendInfo(json, url + LOG_TYPE); + } + }); + es.shutdown(); + } + }); + } + + private boolean sendInfo(JSONObject content, String url) { + boolean success = false; + try { + HashMap para = new HashMap<>(); + para.put("token", SiteCenterToken.generateToken()); + para.put("content", content); + String res = HttpToolbox.post(url, para); + success = ComparatorUtils.equals(new JSONObject(res).get("status"), "success"); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + return success; + } +} diff --git a/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java b/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java index 4a3db7b2c..5f8fe7023 100644 --- a/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java +++ b/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java @@ -1,14 +1,15 @@ package com.fr.start.module; +import com.fr.concurrent.NamedThreadFactory; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.messagecollect.StartupMessageCollector; import com.fr.event.Event; import com.fr.event.Listener; import com.fr.module.Activator; import com.fr.record.analyzer.EnableMetrics; import com.fr.record.analyzer.Metrics; -import com.fr.runtime.FineRuntime; import com.fr.start.Designer; import com.fr.start.ServerStarter; import com.fr.start.SplashContext; @@ -42,7 +43,7 @@ public class DesignerStartup extends Activator { startSub(EnvBasedModule.class); //designer模块启动好后,查看demo browserDemo(); - ExecutorService service = Executors.newFixedThreadPool(2); + ExecutorService service = Executors.newSingleThreadExecutor(new NamedThreadFactory("FineEmbedServerStart")); service.submit(new Runnable() { @Override public void run() { @@ -67,7 +68,7 @@ public class DesignerStartup extends Activator { DesignerContext.getDesignerFrame().getProgressDialog().setVisible(true); startSub(StartFinishActivator.class); - FineRuntime.startFinish(); + StartupMessageCollector.getInstance().recordStartupLog(); } private void browserDemo() { @@ -87,7 +88,7 @@ public class DesignerStartup extends Activator { @Override public void on(Event event, Workspace current) { - getSub(EnvBasedModule.class).stop(); + stopSub(EnvBasedModule.class); } }); /*切换环境后,重新启动所有相关模块,最先执行*/ @@ -95,7 +96,7 @@ public class DesignerStartup extends Activator { @Override public void on(Event event, Workspace current) { - getSub(EnvBasedModule.class).start(); + startSub(EnvBasedModule.class); // 切换后的环境是本地环境才启动内置服务器 if (current.isLocal()) { ExecutorService service = Executors.newSingleThreadExecutor(); From eefd765e98d18fbad56e8c0eb648f4b3c629a80d Mon Sep 17 00:00:00 2001 From: vito Date: Fri, 6 Sep 2019 09:58:09 +0800 Subject: [PATCH 38/58] =?UTF-8?q?REPORT-19945=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E5=90=AF=E5=8A=A8=E4=BF=A1=E6=81=AF=E6=94=B6=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/messagecollect/StartupMessageCollector.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/StartupMessageCollector.java b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/StartupMessageCollector.java index 2fcd2328c..288cac400 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/StartupMessageCollector.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/StartupMessageCollector.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe.messagecollect; import com.fr.concurrent.NamedThreadFactory; +import com.fr.design.DesignerEnvManager; import com.fr.design.mainframe.SiteCenterToken; import com.fr.event.Event; import com.fr.event.EventDispatcher; @@ -32,6 +33,7 @@ public class StartupMessageCollector { private static final String XML_STARTUP_LOG = "startupLog"; private static final String XML_STARTUP_Memory = "designerMemory"; private static final String XML_STARTUP_COST = "cost"; + private static final String XML_UUID = "UUID"; private static final String STARTUP_URL_KEY = "user.info.v10.startup"; private static final String LOG_TYPE = "single"; private static final int BYTE_TO_MB = 1024 * 1024; @@ -61,6 +63,7 @@ public class StartupMessageCollector { FineModule root = (FineModule) ModuleContext.getRoot().getRoot(); JSONObject profile = root.profile(); JSONObject json = JSONObject.create() + .put(XML_UUID, DesignerEnvManager.getEnvManager().getUUID()) .put(XML_STARTUP_TIME, FineRuntime.getAppStartTime() + FineRuntime.getStartingTime()) .put(XML_STARTUP_COST, FineRuntime.getStartingTime()) .put(XML_STARTUP_LOG, profile) From af9e946b5b5f6f05c63fea0256fbabb4712de48a Mon Sep 17 00:00:00 2001 From: hades Date: Tue, 10 Sep 2019 17:30:52 +0800 Subject: [PATCH 39/58] =?UTF-8?q?REPORT-20769=20=20=E6=A8=A1=E7=89=88?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E6=95=B0=E6=8D=AE=E5=BA=93=E6=A8=A1?= =?UTF-8?q?=E7=B3=8A=E6=9F=A5=E8=AF=A2=E4=BA=A4=E4=BA=92=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E6=94=B9=E8=BF=9B=20&&=20REPORT-14560=20=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=88=B010.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connect/ConnectionTableProcedurePane.java | 7 ++++- .../tabledatapane/DBTableDataPane.java | 26 +++++++++++++++++++ .../cellquick/CellFormulaQuickEditor.java | 2 +- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java index ed09c87a8..f6f258285 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java @@ -35,7 +35,7 @@ public class ConnectionTableProcedurePane extends BasicPane { private ConnectionComboBoxPanel connectionComboBox; private UICheckBox tableCheckBox; private UICheckBox viewCheckBox; - private UITextField searchField; + protected UITextField searchField; private TableViewList tableViewList; private java.util.List listeners = new java.util.ArrayList(); @@ -90,12 +90,17 @@ public class ConnectionTableProcedurePane extends BasicPane { this.add(tableViewListPane, BorderLayout.CENTER); this.add(filterPane, BorderLayout.SOUTH); this.setPreferredSize(new Dimension(WIDTH, getPreferredSize().height)); + addKeyMonitor(); } protected void filter(Connection connection, String conName, List nameList) { connection.addConnection(nameList, conName, new Class[]{AbstractDatabaseConnection.class}); } + protected void addKeyMonitor() { + + } + protected JPanel createCheckBoxgroupPane() { JPanel checkBoxgroupPane = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(2); JPanel first = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java b/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java index 85b8fbd7d..0eaf13032 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java @@ -57,6 +57,8 @@ import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; import java.util.ArrayList; import java.util.List; @@ -95,6 +97,30 @@ public class DBTableDataPane extends AbstractTableDataPane { connection.addConnection(nameList, conName, new Class[]{JDBCDatabaseConnection.class, JNDIDatabaseConnection.class}); } + + @Override + protected void addKeyMonitor() { + searchField.addKeyListener(new KeyListener() { + boolean first = true; + @Override + public void keyTyped(KeyEvent e) { + + } + + @Override + public void keyPressed(KeyEvent e) { + if (e.getKeyCode() == KeyEvent.VK_ENTER) { + e.setKeyCode(KeyEvent.VK_UP); + DBTableDataPane.this.connectionTableProcedurePane.requestFocus(); + } + } + + @Override + public void keyReleased(KeyEvent e) { + + } + }); + } }; connectionTableProcedurePane.addDoubleClickListener(new DoubleClickSelectedNodeOnTreeListener() { diff --git a/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java b/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java index 713f9ac3d..ff8a74e57 100644 --- a/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java +++ b/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java @@ -103,7 +103,7 @@ public class CellFormulaQuickEditor extends CellQuickEditor { formulaButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { String text = formulaTextField.getText(); - final UIFormula formulaPane = FormulaFactory.createFormulaPane(); + final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula(); formulaPane.populate(BaseFormula.createFormulaBuilder().build(text)); formulaPane.showLargeWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { @Override From 65d699bbb880d7099e0ef2fce6323a354b1b6f45 Mon Sep 17 00:00:00 2001 From: hades Date: Tue, 10 Sep 2019 17:32:28 +0800 Subject: [PATCH 40/58] update --- .../fr/design/data/tabledata/tabledatapane/DBTableDataPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java b/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java index 0eaf13032..44b87cad6 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java @@ -101,7 +101,7 @@ public class DBTableDataPane extends AbstractTableDataPane { @Override protected void addKeyMonitor() { searchField.addKeyListener(new KeyListener() { - boolean first = true; + @Override public void keyTyped(KeyEvent e) { From c367d6b5a7c89bee0131d12d930d8e27b2323a18 Mon Sep 17 00:00:00 2001 From: kerry Date: Wed, 11 Sep 2019 10:06:43 +0800 Subject: [PATCH 41/58] =?UTF-8?q?REPORT-21584=20=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E7=95=8C=E9=9D=A2=E7=9A=84=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=AE=BD=E5=BA=A6=E5=88=B0100=EF=BC=8C=E6=89=80=E6=9C=89?= =?UTF-8?q?=E6=8E=A7=E4=BB=B6=E8=BF=98=E6=98=AF=E5=8F=AF=E4=BB=A5=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../parameter/RootDesignDefinePane.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/parameter/RootDesignDefinePane.java b/designer-form/src/main/java/com/fr/design/parameter/RootDesignDefinePane.java index a48d64fdc..5f45b57b0 100644 --- a/designer-form/src/main/java/com/fr/design/parameter/RootDesignDefinePane.java +++ b/designer-form/src/main/java/com/fr/design/parameter/RootDesignDefinePane.java @@ -24,6 +24,7 @@ import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.widget.accessibles.AccessibleBackgroundEditor; import com.fr.design.utils.gui.UIComponentUtils; import com.fr.design.widget.ui.designer.AbstractDataModify; +import com.fr.design.widget.ui.designer.component.UIBoundSpinner; import com.fr.form.ui.container.WParameterLayout; import com.fr.general.Background; @@ -61,7 +62,7 @@ public class RootDesignDefinePane extends AbstractDataModify { public void initComponent() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); - designerWidth = new UISpinner(1, Integer.MAX_VALUE, 1); + designerWidth = new UIBoundSpinner(1, Integer.MAX_VALUE, 1); JPanel advancePane = createAdvancePane(); UIExpandablePane advanceExpandablePane = new UIExpandablePane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Advanced"), 280, 20, advancePane); this.add(advanceExpandablePane, BorderLayout.NORTH); @@ -162,16 +163,29 @@ public class RootDesignDefinePane extends AbstractDataModify { public WParameterLayout updateBean() { WParameterLayout wParameterLayout = (WParameterLayout) creator.toData(); wParameterLayout.setLabelName(labelNameTextField.getText()); - wParameterLayout.setDesignWidth((int) designerWidth.getValue()); + if (isCompsOutOfDesignerWidth((int) designerWidth.getValue())) { + designerWidth.setValue(wParameterLayout.getDesignWidth()); + } else { + wParameterLayout.setDesignWidth((int) designerWidth.getValue()); + } wParameterLayout.setDelayDisplayContent(displayReport.isSelected()); wParameterLayout.setUseParamsTemplate(useParamsTemplate.isSelected()); JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); jTemplate.needAddTemplateIdAttr(useParamsTemplate.isSelected()); wParameterLayout.setBackground((Background) background.getValue()); - wParameterLayout.setPosition((int)hAlignmentPane.getSelectedItem()); + wParameterLayout.setPosition((int) hAlignmentPane.getSelectedItem()); return wParameterLayout; } + private boolean isCompsOutOfDesignerWidth(int designerWidth){ + for(int i=0; i designerWidth){ + return true; + } + } + return false; + } @Override public DataCreatorUI dataUI() { return null; From 38863dc13bcb3e5b3067a28db61ea60ee2acdd7d Mon Sep 17 00:00:00 2001 From: hades Date: Thu, 12 Sep 2019 11:50:24 +0800 Subject: [PATCH 42/58] =?UTF-8?q?REPORT-21871=20=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8D=95=E5=85=83=E6=A0=BC=E7=BB=84=20?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../submit/SmartInsertDBManipulationPane.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java b/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java index f9433aade..418a080b6 100644 --- a/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java +++ b/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java @@ -27,6 +27,7 @@ import com.fr.design.selection.SelectionListener; import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.FloatSelection; import com.fr.grid.selection.Selection; +import com.fr.report.cell.TemplateCellElement; import com.fr.stable.ColumnRow; import com.fr.stable.ColumnRowGroup; import com.fr.stable.StringUtils; @@ -451,14 +452,27 @@ public class SmartInsertDBManipulationPane extends DBManipulationPane { int r = cellselection.getRow(); int rs = cellselection.getRowSpan(); String allColumnRow = newValue.toString(); + System.out.println("all: " + allColumnRow); newAdd.clear(); for (int i = 0; i < cs; i++) { for (int j = 0; j < rs; j++) { - ColumnRow columnRow = ColumnRow.valueOf(c + i, r + j); - if (!allColumnRow.contains(columnRow.toString())) { - add.addColumnRow(columnRow); + TemplateCellElement cellElement = ePane.getEditingElementCase().getTemplateCellElement(c + i, r + j ); + if (cellElement != null && ((i + c) != 0 || (r + j) != 0)) { + String value = cellElement.toString(); + System.out.println(newAdd); + if (!newAdd.contains(value) && !allColumnRow.contains(value)) { + add.addColumnRow(ColumnRow.valueOf(value)); + } + newAdd.add(value); + } + + if (cellElement == null) { + ColumnRow columnRow = ColumnRow.valueOf(c + i, r + j); + if (!allColumnRow.contains(columnRow.toString())) { + add.addColumnRow(columnRow); + } + newAdd.add(columnRow.toString()); } - newAdd.add(columnRow.toString()); } } int oldSize = oldAdd.size(); From 5a2de484fe9c00b93d8ff67c17b5776d49dc1960 Mon Sep 17 00:00:00 2001 From: hades Date: Thu, 12 Sep 2019 11:51:28 +0800 Subject: [PATCH 43/58] update --- .../fr/design/write/submit/SmartInsertDBManipulationPane.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java b/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java index 418a080b6..a35638ca6 100644 --- a/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java +++ b/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java @@ -452,7 +452,6 @@ public class SmartInsertDBManipulationPane extends DBManipulationPane { int r = cellselection.getRow(); int rs = cellselection.getRowSpan(); String allColumnRow = newValue.toString(); - System.out.println("all: " + allColumnRow); newAdd.clear(); for (int i = 0; i < cs; i++) { for (int j = 0; j < rs; j++) { From cac459be9c4c27b3f8fce99d6b15306b756e471c Mon Sep 17 00:00:00 2001 From: hades Date: Thu, 12 Sep 2019 11:56:56 +0800 Subject: [PATCH 44/58] =?UTF-8?q?fix=20=E8=B0=83=E8=AF=95=E8=BE=93?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/write/submit/SmartInsertDBManipulationPane.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java b/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java index a35638ca6..dd675ffe3 100644 --- a/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java +++ b/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java @@ -458,7 +458,6 @@ public class SmartInsertDBManipulationPane extends DBManipulationPane { TemplateCellElement cellElement = ePane.getEditingElementCase().getTemplateCellElement(c + i, r + j ); if (cellElement != null && ((i + c) != 0 || (r + j) != 0)) { String value = cellElement.toString(); - System.out.println(newAdd); if (!newAdd.contains(value) && !allColumnRow.contains(value)) { add.addColumnRow(ColumnRow.valueOf(value)); } From a313085e0204f9e6f68018d7ce34b56e6b8e8d46 Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Tue, 1 Oct 2019 04:31:49 +0800 Subject: [PATCH 45/58] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/messagecollect/solid/SolidCollector.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java index eaaa53231..68cc882a9 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/solid/SolidCollector.java @@ -51,10 +51,11 @@ public class SolidCollector { if (WorkContext.getCurrent().isLocal()) { return; } + FineLoggerFactory.getLogger().info("start to get solid content from server..."); try { String content = requestContent(); if (StringUtils.isNotEmpty(content)) { - String cipherText = JSONFactory.createJSON(JSON.OBJECT).optString("data"); + String cipherText = JSONFactory.createJSON(JSON.OBJECT, content).optString("data"); if(StringUtils.isNotEmpty(cipherText)){ Map params = new HashMap<>(); params.put(ATTR_CIPHER_TEXT, cipherText); @@ -65,6 +66,7 @@ public class SolidCollector { HttpToolbox.post(deleteUrl, getParams()); } } + FineLoggerFactory.getLogger().info("send solid content to cloud center success."); } catch (Exception e) { FineLoggerFactory.getLogger().info(e.getMessage(), e); } finally { From 917f38cfd1a39a87d8685698a2af70710726bc3c Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Thu, 12 Sep 2019 16:23:32 +0800 Subject: [PATCH 46/58] =?UTF-8?q?=E5=B1=8F=E8=94=BD=E5=9B=9E=E4=BC=A0?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/mainframe/InformationCollector.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java b/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java index 7c3ca2dac..5b77e66a0 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java @@ -226,7 +226,8 @@ public class InformationCollector implements XMLReadable, XMLWriter { service.schedule(new Runnable() { @Override public void run() { - SolidCollector.getInstance().sendToCloudCenterAndDeleteFile(); + //回传在10.0.4版本发,暂时没测,先屏蔽 +// SolidCollector.getInstance().sendToCloudCenterAndDeleteFile(); sendUserInfo(); FocusPointMessageUploader.getInstance().sendToCloudCenter(); TemplateInfoCollector.getInstance().sendTemplateInfo(); From a018f578cce3f64277acfc0669f383bac9becf23 Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Mon, 16 Sep 2019 11:13:46 +0800 Subject: [PATCH 47/58] =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=B1=8F=E8=94=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/mainframe/InformationCollector.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java b/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java index 5b77e66a0..7c3ca2dac 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java @@ -226,8 +226,7 @@ public class InformationCollector implements XMLReadable, XMLWriter { service.schedule(new Runnable() { @Override public void run() { - //回传在10.0.4版本发,暂时没测,先屏蔽 -// SolidCollector.getInstance().sendToCloudCenterAndDeleteFile(); + SolidCollector.getInstance().sendToCloudCenterAndDeleteFile(); sendUserInfo(); FocusPointMessageUploader.getInstance().sendToCloudCenter(); TemplateInfoCollector.getInstance().sendTemplateInfo(); From c77b13e11f070a196da183acc2e59feb3b28e244 Mon Sep 17 00:00:00 2001 From: zheng Date: Mon, 16 Sep 2019 15:31:14 +0800 Subject: [PATCH 48/58] =?UTF-8?q?CHART-10358=20=E5=85=BC=E5=AE=B9=E4=BD=8D?= =?UTF-8?q?=E5=9B=BE=E5=9C=B0=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/ChartTypeInterfaceManager.java | 6 +++++- .../src/main/java/com/fr/design/chart/ChartTypePane.java | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java b/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java index b931aa991..57d977214 100644 --- a/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java @@ -374,11 +374,15 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr } result[i] = Reflect.on(chart).call("demoImagePath").get(); } + + if (ArrayUtils.isNotEmpty(result)) { + return result; + } } catch (Exception e) { //do nothing } - return new String[0]; + return new String[]{getIconPath(chartID)}; } public String[] getSubName(String chartID) { diff --git a/designer-chart/src/main/java/com/fr/design/chart/ChartTypePane.java b/designer-chart/src/main/java/com/fr/design/chart/ChartTypePane.java index eb17cc41f..0eb70fd12 100644 --- a/designer-chart/src/main/java/com/fr/design/chart/ChartTypePane.java +++ b/designer-chart/src/main/java/com/fr/design/chart/ChartTypePane.java @@ -11,6 +11,7 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.log.FineLoggerFactory; +import com.fr.stable.StringUtils; import javax.swing.BorderFactory; import javax.swing.DefaultListCellRenderer; @@ -98,8 +99,8 @@ public class ChartTypePane extends ChartCommonWizardPane { String[] subName = ChartTypeInterfaceManager.getInstance().getSubName(id); ChartTypePane.this.iconListModel.clear(); - for (int i = 0, len = demoImagePath.length; i < len; i++) { - String ImagePath = demoImagePath[i]; + for (int i = 0, len = subName.length; i < len; i++) { + String ImagePath = demoImagePath.length > i ? demoImagePath[i] : StringUtils.EMPTY; String chartName = subName[i]; ChartTypePane.this.iconListModel.addElement(new ChartIcon(ImagePath, chartName)); } From 23d2e69bb44f55828f7476dc1b529c18b8a709d5 Mon Sep 17 00:00:00 2001 From: zack Date: Mon, 16 Sep 2019 22:15:21 +0800 Subject: [PATCH 49/58] =?UTF-8?q?REPORT-19557=20ToolbarItemProvider?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E9=9C=80=E8=A6=81=E6=94=AF=E6=8C=81=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E6=8A=A5=E8=A1=A8=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/ExtraDesignClassManager.java | 19 ++++++++++++++++--- .../fr/design/fun/ToolbarItemProvider.java | 6 ++++++ .../design/fun/impl/AbstractToolbarItem.java | 10 ++++++++++ .../AccessibleElementCaseToolBarEditor.java | 3 +++ 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java b/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java index beb62c06e..acc59fcd4 100644 --- a/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java +++ b/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java @@ -43,7 +43,7 @@ public class ExtraDesignClassManager extends AbstractExtraClassManager implement private static ExtraDesignClassManager classManager = new ExtraDesignClassManager(); private Set shortCuts = new CloseableContainedSet<>(HashSet.class); - + public static ExtraDesignClassManager getInstance() { return classManager; } @@ -114,13 +114,28 @@ public class ExtraDesignClassManager extends AbstractExtraClassManager implement } + /** + * 获取插件注册的工具栏按钮(严格区分决策报表与普通模板) + * @return + */ + public WidgetOption[] getStrictWebWidgetOptions() { + return createWebWidgetOptions(true); + } + public WidgetOption[] getWebWidgetOptions() { + return createWebWidgetOptions(false); + } + + private WidgetOption[] createWebWidgetOptions(boolean filterByTemplateType) { Set set = getArray(ToolbarItemProvider.XML_TAG); if (set.isEmpty()) { return new WidgetOption[0]; } List list = new ArrayList<>(); for (ToolbarItemProvider provider : set) { + if (filterByTemplateType && !provider.accept()) { + continue; + } WidgetOption option = WidgetOptionFactory.createByWidgetClass( provider.nameForWidget(), IOUtils.readIcon(provider.iconPathForWidget()), @@ -132,7 +147,6 @@ public class ExtraDesignClassManager extends AbstractExtraClassManager implement } - public Map, Class> getFormWidgetOptionsMap() { Set set = getArray(FormWidgetOptionProvider.XML_TAG); Map, Class> map = new HashMap<>(); @@ -170,7 +184,6 @@ public class ExtraDesignClassManager extends AbstractExtraClassManager implement } - public WidgetOption[] getCellWidgetOptions() { Set set = getArray(CellWidgetOptionProvider.XML_TAG); if (set.isEmpty()) { diff --git a/designer-base/src/main/java/com/fr/design/fun/ToolbarItemProvider.java b/designer-base/src/main/java/com/fr/design/fun/ToolbarItemProvider.java index f4add0333..c04bcba2b 100644 --- a/designer-base/src/main/java/com/fr/design/fun/ToolbarItemProvider.java +++ b/designer-base/src/main/java/com/fr/design/fun/ToolbarItemProvider.java @@ -36,4 +36,10 @@ public interface ToolbarItemProvider extends Mutable { */ String nameForWidget(); + /** + * 当前编辑的模板类型(决策报表 or cpt)是否支持 + * @return 支持返回true,否则false + */ + boolean accept(); + } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java index ec3c47bc1..0284c2810 100644 --- a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java +++ b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java @@ -1,6 +1,9 @@ package com.fr.design.fun.impl; +import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.fun.ToolbarItemProvider; +import com.fr.design.mainframe.JTemplate; +import com.fr.design.mainframe.JVirtualTemplate; import com.fr.stable.fun.impl.AbstractProvider; import com.fr.stable.fun.mark.API; @@ -10,6 +13,7 @@ import com.fr.stable.fun.mark.API; @API(level = ToolbarItemProvider.CURRENT_LEVEL) public abstract class AbstractToolbarItem extends AbstractProvider implements ToolbarItemProvider { + @Override public int currentAPILevel() { return CURRENT_LEVEL; } @@ -18,4 +22,10 @@ public abstract class AbstractToolbarItem extends AbstractProvider implements To public String mark4Provider() { return getClass().getName(); } + + @Override + public boolean accept() { + JTemplate currentTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + return currentTemplate.isJWorkBook() || currentTemplate instanceof JVirtualTemplate; + } } \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java index 0fcf1e25b..5f266e025 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.widget.accessibles; +import com.fr.design.ExtraDesignClassManager; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.gui.core.WidgetOption; @@ -52,6 +53,8 @@ public class AccessibleElementCaseToolBarEditor extends UneditableAccessibleEdit List defaultOptions = Arrays.asList(FormWebWidgetConstants.getFormElementCaseToolBarInstance()); List options = new ArrayList(); options.addAll(defaultOptions); + WidgetOption[] widgetOptions = ExtraDesignClassManager.getInstance().getStrictWebWidgetOptions(); + options.addAll(Arrays.asList(widgetOptions)); return options.toArray(new WidgetOption[options.size()]); } From b0ea4d52166d4a82a83ef978535a48f4745a4eb6 Mon Sep 17 00:00:00 2001 From: zack Date: Mon, 16 Sep 2019 22:19:31 +0800 Subject: [PATCH 50/58] rt --- .../main/java/com/fr/design/fun/impl/AbstractToolbarItem.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java index 0284c2810..0bb7f3101 100644 --- a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java +++ b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java @@ -26,6 +26,6 @@ public abstract class AbstractToolbarItem extends AbstractProvider implements To @Override public boolean accept() { JTemplate currentTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - return currentTemplate.isJWorkBook() || currentTemplate instanceof JVirtualTemplate; + return currentTemplate == null || currentTemplate.isJWorkBook() || currentTemplate instanceof JVirtualTemplate; } } \ No newline at end of file From 1ac836a9db3d8f639290a14f774b40e55329a727 Mon Sep 17 00:00:00 2001 From: zack Date: Tue, 17 Sep 2019 13:17:05 +0800 Subject: [PATCH 51/58] =?UTF-8?q?=E6=8D=A2=E4=B8=80=E4=B8=AA=E6=89=A9?= =?UTF-8?q?=E5=B1=95=E6=80=A7=E6=9B=B4=E5=A5=BD=E7=9A=84=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/ExtraDesignClassManager.java | 40 +++++------ .../fr/design/fun/ToolbarItemProvider.java | 12 ++-- .../design/fun/impl/AbstractToolbarItem.java | 8 ++- .../design/ExtraDesignClassManagerTest.java | 70 +++++++++++++++++++ .../AccessibleElementCaseToolBarEditor.java | 10 ++- 5 files changed, 112 insertions(+), 28 deletions(-) create mode 100644 designer-base/src/test/java/com/fr/design/ExtraDesignClassManagerTest.java diff --git a/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java b/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java index acc59fcd4..77e0eb115 100644 --- a/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java +++ b/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java @@ -23,6 +23,7 @@ import com.fr.plugin.AbstractExtraClassManager; import com.fr.plugin.injectable.PluginModule; import com.fr.plugin.injectable.PluginSingleInjection; import com.fr.plugin.solution.closeable.CloseableContainedSet; +import com.fr.stable.Filter; import com.fr.stable.plugin.ExtraDesignClassManagerProvider; import java.util.ArrayList; @@ -113,35 +114,34 @@ public class ExtraDesignClassManager extends AbstractExtraClassManager implement return result.toArray(new WidgetOption[result.size()]); } - - /** - * 获取插件注册的工具栏按钮(严格区分决策报表与普通模板) - * @return - */ - public WidgetOption[] getStrictWebWidgetOptions() { - return createWebWidgetOptions(true); - } - public WidgetOption[] getWebWidgetOptions() { - return createWebWidgetOptions(false); + return getWebWidgetOptions(new Filter() { + @Override + public boolean accept(ToolbarItemProvider toolbarItemProvider) { + return true; + } + }); } - private WidgetOption[] createWebWidgetOptions(boolean filterByTemplateType) { + public WidgetOption[] getWebWidgetOptions(Filter filter) { Set set = getArray(ToolbarItemProvider.XML_TAG); - if (set.isEmpty()) { + return getWebWidgetOptions(set, filter); + } + + public WidgetOption[] getWebWidgetOptions(Set set, Filter filter) { + if (set == null || set.isEmpty()) { return new WidgetOption[0]; } List list = new ArrayList<>(); for (ToolbarItemProvider provider : set) { - if (filterByTemplateType && !provider.accept()) { - continue; + if (filter != null && filter.accept(provider)) { + WidgetOption option = WidgetOptionFactory.createByWidgetClass( + provider.nameForWidget(), + IOUtils.readIcon(provider.iconPathForWidget()), + provider.classForWidget() + ); + list.add(option); } - WidgetOption option = WidgetOptionFactory.createByWidgetClass( - provider.nameForWidget(), - IOUtils.readIcon(provider.iconPathForWidget()), - provider.classForWidget() - ); - list.add(option); } return list.toArray(new WidgetOption[list.size()]); } diff --git a/designer-base/src/main/java/com/fr/design/fun/ToolbarItemProvider.java b/designer-base/src/main/java/com/fr/design/fun/ToolbarItemProvider.java index c04bcba2b..0ba640b26 100644 --- a/designer-base/src/main/java/com/fr/design/fun/ToolbarItemProvider.java +++ b/designer-base/src/main/java/com/fr/design/fun/ToolbarItemProvider.java @@ -1,6 +1,8 @@ package com.fr.design.fun; +import com.fr.design.mainframe.JTemplate; import com.fr.form.ui.Widget; +import com.fr.stable.Filter; import com.fr.stable.fun.mark.Mutable; /** @@ -8,7 +10,7 @@ import com.fr.stable.fun.mark.Mutable; * @since : 8.0 * 自定义web工具栏菜单 */ -public interface ToolbarItemProvider extends Mutable { +public interface ToolbarItemProvider extends Mutable, Filter { String XML_TAG = "ToolbarItemProvider"; @@ -37,9 +39,11 @@ public interface ToolbarItemProvider extends Mutable { String nameForWidget(); /** - * 当前编辑的模板类型(决策报表 or cpt)是否支持 - * @return 支持返回true,否则false + * 模板(决策报表 or cpt)是否支持此工具栏按钮 + * JTemplate 模板 + * @return 支持返回true, 否则false */ - boolean accept(); + @Override + boolean accept(JTemplate template); } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java index 0bb7f3101..49194049a 100644 --- a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java +++ b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java @@ -24,8 +24,10 @@ public abstract class AbstractToolbarItem extends AbstractProvider implements To } @Override - public boolean accept() { - JTemplate currentTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - return currentTemplate == null || currentTemplate.isJWorkBook() || currentTemplate instanceof JVirtualTemplate; + public boolean accept(JTemplate jTemplate) { + if (jTemplate == null) { + jTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + } + return jTemplate == null || jTemplate.isJWorkBook() || jTemplate instanceof JVirtualTemplate; } } \ No newline at end of file diff --git a/designer-base/src/test/java/com/fr/design/ExtraDesignClassManagerTest.java b/designer-base/src/test/java/com/fr/design/ExtraDesignClassManagerTest.java new file mode 100644 index 000000000..89f4ee1b2 --- /dev/null +++ b/designer-base/src/test/java/com/fr/design/ExtraDesignClassManagerTest.java @@ -0,0 +1,70 @@ +package com.fr.design; + +import com.fr.config.dao.DaoContext; +import com.fr.config.dao.impl.LocalClassHelperDao; +import com.fr.config.dao.impl.LocalEntityDao; +import com.fr.config.dao.impl.LocalXmlEntityDao; +import com.fr.design.fun.ToolbarItemProvider; +import com.fr.design.gui.core.WidgetOption; +import com.fr.design.mainframe.JTemplate; +import com.fr.design.mainframe.JVirtualTemplate; +import com.fr.general.ModuleContext; +import com.fr.log.FineLoggerFactory; +import com.fr.report.restriction.CellCountRestriction; +import com.fr.report.restriction.ReportRestrictionScene; +import com.fr.restriction.Restrictions; +import com.fr.stable.Filter; +import com.fr.stable.module.Module; +import junit.framework.TestCase; +import org.easymock.EasyMock; +import org.junit.Assert; + +import java.util.HashSet; +import java.util.Set; + +/** + * @author zack + * @version 10.0 + * Created by zack on 2019/9/17 + */ +public class ExtraDesignClassManagerTest extends TestCase { + @Override + protected void setUp() throws Exception { + DaoContext.setEntityDao(new LocalEntityDao()); + DaoContext.setClassHelperDao(new LocalClassHelperDao()); + DaoContext.setXmlEntityDao(new LocalXmlEntityDao()); + ModuleContext.startModule(Module.PAGE_MODULE); + Restrictions.register(ReportRestrictionScene.CELL_COUNT, new CellCountRestriction()); + } + + public void testGetWebOption() { + try { + final JTemplate jTemplate = new JVirtualTemplate(null); + ToolbarItemProvider item = EasyMock.mock(ToolbarItemProvider.class); + ToolbarItemProvider item1 = EasyMock.mock(ToolbarItemProvider.class); + EasyMock.expect(item.accept(jTemplate)).andReturn(false).anyTimes(); + EasyMock.expect(item.classForWidget()).andReturn(null).anyTimes(); + EasyMock.expect(item.iconPathForWidget()).andReturn("").anyTimes(); + EasyMock.expect(item.nameForWidget()).andReturn("1").anyTimes(); + EasyMock.expect(item1.accept(jTemplate)).andReturn(true).anyTimes(); + EasyMock.expect(item1.classForWidget()).andReturn(null).anyTimes(); + EasyMock.expect(item1.iconPathForWidget()).andReturn("").anyTimes(); + EasyMock.expect(item1.nameForWidget()).andReturn("2").anyTimes(); + EasyMock.replay(item); + EasyMock.replay(item1); + + Set set = new HashSet<>(); + set.add(item); + set.add(item1); + WidgetOption[] widgetOptions = ExtraDesignClassManager.getInstance().getWebWidgetOptions(set, new Filter() { + @Override + public boolean accept(ToolbarItemProvider toolbarItemProvider) { + return toolbarItemProvider.accept(jTemplate); + } + }); + Assert.assertEquals(1, widgetOptions.length); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java index 5f266e025..de429b414 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java @@ -3,12 +3,15 @@ package com.fr.design.mainframe.widget.accessibles; import com.fr.design.ExtraDesignClassManager; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.file.HistoryTemplateListCache; +import com.fr.design.fun.ToolbarItemProvider; import com.fr.design.gui.core.WidgetOption; import com.fr.design.mainframe.FormWebWidgetConstants; import com.fr.design.mainframe.widget.editors.ElementCaseToolBarPane; import com.fr.design.mainframe.widget.wrappers.ElementCaseToolBarWrapper; import com.fr.form.web.FormToolBarManager; import com.fr.stable.ArrayUtils; +import com.fr.stable.Filter; import javax.swing.SwingUtilities; import java.util.ArrayList; @@ -53,7 +56,12 @@ public class AccessibleElementCaseToolBarEditor extends UneditableAccessibleEdit List defaultOptions = Arrays.asList(FormWebWidgetConstants.getFormElementCaseToolBarInstance()); List options = new ArrayList(); options.addAll(defaultOptions); - WidgetOption[] widgetOptions = ExtraDesignClassManager.getInstance().getStrictWebWidgetOptions(); + WidgetOption[] widgetOptions = ExtraDesignClassManager.getInstance().getWebWidgetOptions(new Filter() { + @Override + public boolean accept(ToolbarItemProvider toolbarItemProvider) { + return toolbarItemProvider.accept(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate()); + } + }); options.addAll(Arrays.asList(widgetOptions)); return options.toArray(new WidgetOption[options.size()]); } From 9a994bf5525225c1fbde586cd5c4db5b44e58973 Mon Sep 17 00:00:00 2001 From: zheng Date: Wed, 18 Sep 2019 16:29:38 +0800 Subject: [PATCH 52/58] =?UTF-8?q?CHART-10358=20=E7=AE=B1=E5=9E=8B=E5=9B=BE?= =?UTF-8?q?=20=E6=99=B6=E5=9C=86=E5=9B=BE=20check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/chart/ChartEditPane.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/ChartEditPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/ChartEditPane.java index 6d6f73ea2..5ecfa1071 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/ChartEditPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/ChartEditPane.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe.chart; +import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; import com.fr.chartx.attr.ChartProvider; import com.fr.design.ChartTypeInterfaceManager; @@ -130,6 +131,10 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 } }; + @Deprecated + public void reLayout(Chart currentChart) { + } + /** * 重新构造面板 * @param currentChart 图表 @@ -225,8 +230,14 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 return; } - if (checkNeedsReLayout(collection.getSelectedChartProvider())) { - reLayout(collection.getSelectedChartProvider()); + ChartProvider chartProvider = collection.getSelectedChartProvider(); + if (checkNeedsReLayout(chartProvider)) { + String chartID = chartProvider.getID(); + if ("WaferChipChart".equals(chartID) || "BoxPlotChart".equals(chartID)) { + reLayout((Chart)chartProvider); + } else { + reLayout(chartProvider); + } } this.collection = collection; From 4d21f2c50111e95bc874d170dd7170aa05717fce Mon Sep 17 00:00:00 2001 From: pengda Date: Wed, 18 Sep 2019 16:55:34 +0800 Subject: [PATCH 53/58] =?UTF-8?q?sonar=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?,=E6=97=A0jira=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/webattr/FToolBar.java | 2 +- .../src/main/java/com/fr/design/webattr/ToolBarPane.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/webattr/FToolBar.java b/designer-realize/src/main/java/com/fr/design/webattr/FToolBar.java index 6d92d4789..3941a0f59 100644 --- a/designer-realize/src/main/java/com/fr/design/webattr/FToolBar.java +++ b/designer-realize/src/main/java/com/fr/design/webattr/FToolBar.java @@ -17,7 +17,7 @@ public class FToolBar { } public void setButtonlist(List buttonlist) { - if (buttonlist == null || buttonlist.size() < 0) { + if (buttonlist == null ) { this.buttonlist = new ArrayList(); } else { this.buttonlist = buttonlist; diff --git a/designer-realize/src/main/java/com/fr/design/webattr/ToolBarPane.java b/designer-realize/src/main/java/com/fr/design/webattr/ToolBarPane.java index db5409e30..fd3140a04 100644 --- a/designer-realize/src/main/java/com/fr/design/webattr/ToolBarPane.java +++ b/designer-realize/src/main/java/com/fr/design/webattr/ToolBarPane.java @@ -124,7 +124,7 @@ public class ToolBarPane extends BasicBeanPane { } private void setToolBar(List list) { - if (list == null || list.size() < 0) { + if (list == null ) { return; } this.removeAll(); From 6c6b16522614afbf794325ffb1814eacd8026125 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=B2=B3?= <445798420@qq.com> Date: Wed, 18 Sep 2019 17:40:54 +0800 Subject: [PATCH 54/58] =?UTF-8?q?CHART-10233=20=E5=AF=B9=E6=96=B0=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=81=9A=E4=BA=86=E9=80=82=E9=85=8D=E5=92=8C=E5=85=BC?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/ChartTypeInterfaceManager.java | 76 ++++++++++--------- .../design/chart/fun/ChartTypeUIProvider.java | 4 +- .../chart/fun/impl/AbstractChartTypeUI.java | 2 + 3 files changed, 46 insertions(+), 36 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java b/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java index b931aa991..eedced540 100644 --- a/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java @@ -125,7 +125,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr public static final String TYPE_PANE_DEFAULT_TITLE = "DEFAULT_NAME"; public synchronized static ChartTypeInterfaceManager getInstance() { - + return classManager; } @@ -158,7 +158,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr } }); } - + public static WidgetOption[] initWidgetOption() { String[] chartIDs = ChartTypeManager.getInstance().getAllChartIDs(); @@ -201,8 +201,8 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr addChartTypeInterface(VAN_CHART_PRIORITY, VanChartGanttPlot.VAN_CHART_GANTT_PLOT_ID, new GanttIndependentVanChartInterface()); addChartTypeInterface(VAN_CHART_PRIORITY, VanChartStructurePlot.STRUCTURE_PLOT_ID, new StructureIndependentVanChartInterface()); } - - + + private static void readDefault() { addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.COLUMN_CHART, new ColumnIndependentChartInterface()); @@ -225,7 +225,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr } private static void addChartTypeInterface(String priority, String plotID, ChartTypeUIProvider provider) { - + if (chartTypeInterfaces != null) { if (!chartTypeInterfaces.containsKey(priority)) { //新建一个具体图表列表 @@ -252,14 +252,14 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr } return null; } - + /** * 把所有的pane加到list里 * * @param paneList pane容器 */ public void addPlotTypePaneList(List> paneList, Map>> allChartTypePane) { - + List priorityList = getPriorityInOrder(); for (Integer aPriorityList : priorityList) { String priority = String.valueOf(aPriorityList); @@ -302,9 +302,9 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr public String getTitle4PopupWindow(String plotID) { return getName(plotID); } - + private List getPriorityInOrder() { - + List priorityList = new ArrayList(); if (chartTypeInterfaces != null) { Iterator iterator = chartTypeInterfaces.entrySet().iterator(); @@ -464,7 +464,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr return provider.getPlotTypePane().title4PopupWindow(); } - + public ChartDataPane getChartDataPane(String plotID, AttributeChangeListener listener) { ChartTypeUIProvider provider = getChartTypeInterface(plotID); if (provider != null) { @@ -473,7 +473,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr return new ChartDataPane(listener); } - + public AbstractChartAttrPane[] getAttrPaneArray(String plotID, AttributeChangeListener listener) { ChartTypeUIProvider provider = getChartTypeInterface(plotID); if (provider != null) { @@ -481,9 +481,9 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr } return new AbstractChartAttrPane[0]; - + } - + public AbstractTableDataContentPane getTableDataSourcePane(Plot plot, ChartDataPane parent) { ChartTypeUIProvider provider = getChartTypeInterface(plot.getPlotID()); @@ -493,7 +493,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr return null; } - + public AbstractReportDataContentPane getReportDataSourcePane(Plot plot, ChartDataPane parent) { ChartTypeUIProvider provider = getChartTypeInterface(plot.getPlotID()); @@ -503,7 +503,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr return null; } - + public ConditionAttributesPane getPlotConditionPane(Plot plot) { ChartTypeUIProvider provider = getChartTypeInterface(plot.getPlotID()); @@ -513,7 +513,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr return null; } - + public BasicBeanPane getPlotSeriesPane(ChartStylePane parent, Plot plot) { ChartTypeUIProvider provider = getChartTypeInterface(plot.getPlotID()); @@ -523,7 +523,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr return null; } - + /** * 是否使用默认的界面,为了避免界面来回切换 * @@ -536,7 +536,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr if (provider != null) { return provider.isUseDefaultPane(); } - + return true; } @@ -551,31 +551,37 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr return true; } - + @Override public void mount(PluginSingleInjection injection) { - - if (isIndependentChartUIProvider(injection)) { + + if (isChartTypeUIProvider(injection)) { + String id = injection.getAttribute("chartID"); + if (StringUtils.isEmpty(id)) { + id = injection.getAttribute("plotID"); + } String priority = injection.getAttribute("priority", DEFAULT_PRIORITY); - String plotID = injection.getAttribute("plotID"); ChartTypeUIProvider instance = (ChartTypeUIProvider) injection.getObject(); - addChartTypeInterface(priority, plotID, instance); + addChartTypeInterface(priority, id, instance); } } - - + + @Override public void demount(PluginSingleInjection injection) { - - if (isIndependentChartUIProvider(injection)) { + + if (isChartTypeUIProvider(injection)) { String priority = injection.getAttribute("priority", DEFAULT_PRIORITY); - String plotID = injection.getAttribute("plotID"); - removeChartTypeInterface(priority, plotID); + String id = injection.getAttribute("chartID"); + if (StringUtils.isEmpty(id)) { + id = injection.getAttribute("plotID"); + } + removeChartTypeInterface(priority, id); } } - + private void removeChartTypeInterface(String priority, String plotID) { - + if (chartTypeInterfaces != null) { if (chartTypeInterfaces.containsKey(priority)) { Map chartUIList = chartTypeInterfaces.get(priority); @@ -583,11 +589,11 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr } } } - - - private boolean isIndependentChartUIProvider(PluginSingleInjection injection) { - return !(injection == null || injection.getObject() == null) && ChartTypeUIProvider.XML_TAG.equals(injection.getName()) && injection.getObject() instanceof ChartTypeUIProvider; + + private boolean isChartTypeUIProvider(PluginSingleInjection injection) { + + return !(injection == null || injection.getObject() == null) && (ChartTypeUIProvider.XML_TAG.equals(injection.getName()) || ChartTypeUIProvider.OLD_TAG.equals(injection.getName())) && injection.getObject() instanceof ChartTypeUIProvider; } diff --git a/designer-chart/src/main/java/com/fr/design/chart/fun/ChartTypeUIProvider.java b/designer-chart/src/main/java/com/fr/design/chart/fun/ChartTypeUIProvider.java index 586b3fc6a..9db47e431 100644 --- a/designer-chart/src/main/java/com/fr/design/chart/fun/ChartTypeUIProvider.java +++ b/designer-chart/src/main/java/com/fr/design/chart/fun/ChartTypeUIProvider.java @@ -23,7 +23,9 @@ import com.fr.stable.fun.Level; */ public interface ChartTypeUIProvider extends Level { - String XML_TAG = SpecialLevel.IndependentChartUIProvider.getTagName(); + String XML_TAG = "ChartTypeUIProvider"; + + String OLD_TAG = SpecialLevel.IndependentChartUIProvider.getTagName(); int CURRENT_API_LEVEL = 3; diff --git a/designer-chart/src/main/java/com/fr/design/chart/fun/impl/AbstractChartTypeUI.java b/designer-chart/src/main/java/com/fr/design/chart/fun/impl/AbstractChartTypeUI.java index 86d7ee9fa..289505aa0 100644 --- a/designer-chart/src/main/java/com/fr/design/chart/fun/impl/AbstractChartTypeUI.java +++ b/designer-chart/src/main/java/com/fr/design/chart/fun/impl/AbstractChartTypeUI.java @@ -16,10 +16,12 @@ import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPa import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane; import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane; import com.fr.stable.fun.impl.AbstractProvider; +import com.fr.stable.fun.mark.API; /** * Created by shine on 2019/09/03. */ +@API(level = ChartTypeUIProvider.CURRENT_API_LEVEL) public abstract class AbstractChartTypeUI extends AbstractProvider implements ChartTypeUIProvider { @Override From e3357b9ee3b94f5d7ace9db539be35b0827ba94a Mon Sep 17 00:00:00 2001 From: Harrison Date: Wed, 18 Sep 2019 18:19:38 +0800 Subject: [PATCH 55/58] =?UTF-8?q?REPORT-21408=20sumprecise=20=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E9=97=AE=E9=A2=98=20=E5=85=AC=E5=BC=8F=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E5=8F=98=E8=93=9D=EF=BC=8C=20=E6=94=B9=E7=AC=AC?= =?UTF-8?q?=E4=B8=89=E6=96=B9=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modes/FormulaTokenMaker.java | 3657 +++++++++-------- .../modes/FormulaTokenMaker.flex | 8 +- 2 files changed, 1864 insertions(+), 1801 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FormulaTokenMaker.java b/designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FormulaTokenMaker.java index af5b8b47a..aae721673 100644 --- a/designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FormulaTokenMaker.java +++ b/designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FormulaTokenMaker.java @@ -1,4 +1,4 @@ -/* The following code was generated by JFlex 1.4.1 on 14-12-5 上午10:55 */ +/* The following code was generated by JFlex 1.4.1 on 9/18/19 6:12 PM */ package com.fr.design.gui.syntax.ui.rsyntaxtextarea.modes; @@ -15,8 +15,8 @@ import java.io.IOException; /** * This class is a scanner generated by * JFlex 1.4.1 - * on 14-12-5 上午10:55 from the specification file - * /Users/richie/Documents/finereport/core/dev/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FormulaTokenMaker.flex + * on 9/18/19 6:12 PM from the specification file + * /Users/3dot141/Downloads/FolxDownload/App/jflex-1.4.1/bin/FormulaTokenMaker.flex */ public class FormulaTokenMaker extends AbstractJFlexCTokenMaker { @@ -60,28 +60,28 @@ public class FormulaTokenMaker extends AbstractJFlexCTokenMaker { private static final String ZZ_ACTION_PACKED_0 = "\3\0\1\1\2\2\1\3\2\2\1\4\17\2\2\4"+ "\1\5\1\4\1\6\4\4\1\2\1\7\1\10\2\2"+ - "\1\3\1\11\2\2\1\4\1\2\2\1\26\2\2\4"+ + "\1\3\1\11\2\2\1\4\1\2\2\1\30\2\2\4"+ "\2\12\1\13\5\12\1\14\2\12\1\2\2\15\2\3"+ "\1\16\16\2\1\17\61\2\1\0\1\20\1\21\2\22"+ "\1\23\1\6\2\10\1\24\2\2\1\15\13\2\6\1"+ - "\1\0\75\2\2\0\1\25\6\0\1\2\1\3\1\0"+ + "\1\0\77\2\2\0\1\25\6\0\1\2\1\3\1\0"+ "\1\3\1\15\1\16\2\2\1\17\11\2\1\17\16\2"+ "\1\17\3\2\1\17\2\2\1\17\14\2\1\17\10\2"+ "\1\17\17\2\1\17\1\2\1\17\1\6\1\26\1\6"+ "\3\22\1\6\2\10\1\27\2\2\1\30\10\2\4\1"+ - "\1\31\4\1\6\0\25\2\1\17\2\2\1\17\10\2"+ - "\1\17\17\2\1\17\25\2\1\17\1\2\1\17\3\2"+ + "\1\31\4\1\6\0\26\2\1\17\2\2\1\17\10\2"+ + "\1\17\17\2\1\17\25\2\1\17\1\2\1\17\6\2"+ "\10\0\1\2\1\16\1\0\4\2\1\17\6\2\1\17"+ - "\33\2\1\17\15\2\1\17\4\2\1\6\1\10\2\2"+ + "\34\2\1\17\15\2\1\17\4\2\1\6\1\10\2\2"+ "\2\30\5\2\7\1\4\0\1\31\4\0\12\2\1\17"+ - "\3\2\1\17\31\2\1\17\1\2\2\17\23\2\1\17"+ - "\1\2\2\0\1\32\2\0\1\33\27\2\1\17\6\2"+ - "\1\17\14\2\1\30\3\2\1\31\3\1\7\0\27\2"+ - "\1\17\2\2\1\17\12\2\4\0\35\2\2\1\1\31"+ - "\3\0\54\2\2\0\113\2"; + "\4\2\1\17\32\2\1\17\1\2\2\17\23\2\1\17"+ + "\2\2\2\0\1\32\2\0\1\33\27\2\1\17\7\2"+ + "\1\17\14\2\1\30\3\2\1\31\3\1\7\0\30\2"+ + "\1\17\2\2\1\17\12\2\4\0\36\2\2\1\1\31"+ + "\3\0\54\2\2\0\116\2"; private static int [] zzUnpackAction() { - int [] result = new int[869]; + int [] result = new int[887]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -115,18 +115,18 @@ public class FormulaTokenMaker extends AbstractJFlexCTokenMaker { "\0\u0f74\0\u0fd0\0\u102c\0\u1088\0\u10e4\0\u1140\0\u119c\0\u11f8"+ "\0\u1254\0\u12b0\0\u130c\0\u1368\0\u13c4\0\u1420\0\u147c\0\u14d8"+ "\0\u1534\0\u1590\0\u15ec\0\u1648\0\u16a4\0\u1700\0\u175c\0\u17b8"+ - "\0\u1814\0\u09b4\0\u1870\0\u18cc\0\u1928\0\u1984\0\u19e0\0\u09b4"+ - "\0\u1a3c\0\u1a98\0\u1af4\0\u1b50\0\u1bac\0\u1c08\0\u1c64\0\u1cc0"+ + "\0\u1814\0\u1870\0\u18cc\0\u09b4\0\u1928\0\u1984\0\u19e0\0\u1a3c"+ + "\0\u1a98\0\u09b4\0\u1af4\0\u1b50\0\u1bac\0\u1c08\0\u1c64\0\u1cc0"+ "\0\u1d1c\0\u1d78\0\u1dd4\0\u1e30\0\u1e8c\0\u1ee8\0\u1f44\0\u1fa0"+ - "\0\u1ffc\0\u2058\0\u20b4\0\u2110\0\u216c\0\u21c8\0\u01cc\0\u2224"+ - "\0\u2280\0\u22dc\0\u2338\0\u2394\0\u23f0\0\u244c\0\u24a8\0\u2504"+ + "\0\u1ffc\0\u2058\0\u20b4\0\u2110\0\u216c\0\u21c8\0\u2224\0\u2280"+ + "\0\u01cc\0\u22dc\0\u2338\0\u2394\0\u23f0\0\u244c\0\u24a8\0\u2504"+ "\0\u2560\0\u25bc\0\u2618\0\u2674\0\u26d0\0\u272c\0\u2788\0\u27e4"+ "\0\u2840\0\u289c\0\u28f8\0\u2954\0\u29b0\0\u2a0c\0\u2a68\0\u2ac4"+ "\0\u2b20\0\u2b7c\0\u2bd8\0\u2c34\0\u2c90\0\u2cec\0\u2d48\0\u2da4"+ "\0\u2e00\0\u2e5c\0\u2eb8\0\u2f14\0\u2f70\0\u2fcc\0\u3028\0\u3084"+ "\0\u30e0\0\u313c\0\u3198\0\u31f4\0\u3250\0\u32ac\0\u3308\0\u3364"+ - "\0\u33c0\0\u09b4\0\u09b4\0\u341c\0\u3478\0\u09b4\0\u34d4\0\u3530"+ - "\0\u358c\0\u09b4\0\u35e8\0\u3644\0\u36a0\0\u36fc\0\u3758\0\u37b4"+ + "\0\u33c0\0\u341c\0\u3478\0\u09b4\0\u09b4\0\u34d4\0\u3530\0\u09b4"+ + "\0\u358c\0\u35e8\0\u3644\0\u09b4\0\u36a0\0\u36fc\0\u3758\0\u37b4"+ "\0\u3810\0\u386c\0\u38c8\0\u3924\0\u3980\0\u39dc\0\u3a38\0\u3a94"+ "\0\u3af0\0\u3b4c\0\u3ba8\0\u3c04\0\u3c60\0\u3cbc\0\u3d18\0\u3d74"+ "\0\u3dd0\0\u3e2c\0\u3e88\0\u3ee4\0\u3f40\0\u3f9c\0\u3ff8\0\u4054"+ @@ -136,9 +136,9 @@ public class FormulaTokenMaker extends AbstractJFlexCTokenMaker { "\0\u4950\0\u49ac\0\u4a08\0\u4a64\0\u4ac0\0\u4b1c\0\u4b78\0\u4bd4"+ "\0\u4c30\0\u4c8c\0\u4ce8\0\u4d44\0\u4da0\0\u4dfc\0\u4e58\0\u4eb4"+ "\0\u4f10\0\u4f6c\0\u4fc8\0\u5024\0\u5080\0\u50dc\0\u5138\0\u5194"+ - "\0\u51f0\0\u524c\0\u52a8\0\u5304\0\u5360\0\u53bc\0\u09b4\0\u5418"+ - "\0\u5474\0\u54d0\0\u552c\0\u5588\0\u55e4\0\u5640\0\u569c\0\u56f8"+ - "\0\u1b50\0\u5754\0\u1b50\0\u57b0\0\u580c\0\u5868\0\u58c4\0\u5920"+ + "\0\u51f0\0\u524c\0\u52a8\0\u5304\0\u5360\0\u53bc\0\u5418\0\u5474"+ + "\0\u54d0\0\u552c\0\u09b4\0\u5588\0\u55e4\0\u5640\0\u569c\0\u56f8"+ + "\0\u5754\0\u57b0\0\u580c\0\u5868\0\u1c08\0\u58c4\0\u1c08\0\u5920"+ "\0\u597c\0\u59d8\0\u5a34\0\u5a90\0\u5aec\0\u5b48\0\u5ba4\0\u5c00"+ "\0\u5c5c\0\u5cb8\0\u5d14\0\u5d70\0\u5dcc\0\u5e28\0\u5e84\0\u5ee0"+ "\0\u5f3c\0\u5f98\0\u5ff4\0\u6050\0\u60ac\0\u6108\0\u6164\0\u61c0"+ @@ -147,9 +147,9 @@ public class FormulaTokenMaker extends AbstractJFlexCTokenMaker { "\0\u67dc\0\u6838\0\u6894\0\u68f0\0\u694c\0\u69a8\0\u6a04\0\u6a60"+ "\0\u6abc\0\u6b18\0\u6b74\0\u6bd0\0\u6c2c\0\u6c88\0\u6ce4\0\u6d40"+ "\0\u6d9c\0\u6df8\0\u6e54\0\u6eb0\0\u6f0c\0\u6f68\0\u6fc4\0\u7020"+ - "\0\u707c\0\u70d8\0\u7134\0\u7190\0\u71ec\0\u7248\0\u72a4\0\u09b4"+ - "\0\u7300\0\u735c\0\u73b8\0\u7414\0\u7470\0\u74cc\0\u7528\0\u09b4"+ - "\0\u7584\0\u75e0\0\u763c\0\u7698\0\u76f4\0\u7750\0\u77ac\0\u7808"+ + "\0\u707c\0\u70d8\0\u7134\0\u7190\0\u71ec\0\u7248\0\u72a4\0\u7300"+ + "\0\u735c\0\u73b8\0\u7414\0\u09b4\0\u7470\0\u74cc\0\u7528\0\u7584"+ + "\0\u75e0\0\u763c\0\u7698\0\u09b4\0\u76f4\0\u7750\0\u77ac\0\u7808"+ "\0\u7864\0\u78c0\0\u791c\0\u7978\0\u79d4\0\u7a30\0\u7a8c\0\u7ae8"+ "\0\u7b44\0\u7ba0\0\u7bfc\0\u7c58\0\u7cb4\0\u7d10\0\u7d6c\0\u7dc8"+ "\0\u7e24\0\u7e80\0\u7edc\0\u7f38\0\u7f94\0\u7ff0\0\u804c\0\u80a8"+ @@ -162,8 +162,8 @@ public class FormulaTokenMaker extends AbstractJFlexCTokenMaker { "\0\u9244\0\u92a0\0\u92fc\0\u9358\0\u93b4\0\u9410\0\u946c\0\u94c8"+ "\0\u9524\0\u9580\0\u95dc\0\u9638\0\u9694\0\u96f0\0\u974c\0\u97a8"+ "\0\u9804\0\u9860\0\u98bc\0\u9918\0\u9974\0\u99d0\0\u9a2c\0\u9a88"+ - "\0\u9ae4\0\u9b40\0\u9b9c\0\u9bf8\0\u9c54\0\u9cb0\0\u9d0c\0\u7248"+ - "\0\u9d68\0\u9dc4\0\u9e20\0\u9e7c\0\u9ed8\0\u9f34\0\u9f90\0\u9fec"+ + "\0\u9ae4\0\u9b40\0\u9b9c\0\u9bf8\0\u9c54\0\u9cb0\0\u9d0c\0\u9d68"+ + "\0\u9dc4\0\u9e20\0\u9e7c\0\u9ed8\0\u9f34\0\u9f90\0\u9fec\0\u73b8"+ "\0\ua048\0\ua0a4\0\ua100\0\ua15c\0\ua1b8\0\ua214\0\ua270\0\ua2cc"+ "\0\ua328\0\ua384\0\ua3e0\0\ua43c\0\ua498\0\ua4f4\0\ua550\0\ua5ac"+ "\0\ua608\0\ua664\0\ua6c0\0\ua71c\0\ua778\0\ua7d4\0\ua830\0\ua88c"+ @@ -175,8 +175,8 @@ public class FormulaTokenMaker extends AbstractJFlexCTokenMaker { "\0\ub748\0\ub7a4\0\ub800\0\ub85c\0\ub8b8\0\ub914\0\ub970\0\ub9cc"+ "\0\uba28\0\uba84\0\ubae0\0\ubb3c\0\ubb98\0\ubbf4\0\ubc50\0\ubcac"+ "\0\ubd08\0\ubd64\0\ubdc0\0\ube1c\0\ube78\0\ubed4\0\ubf30\0\ubf8c"+ - "\0\ubfe8\0\uc044\0\uc0a0\0\u9860\0\uc0fc\0\uc158\0\uc1b4\0\uc210"+ - "\0\uc26c\0\uc2c8\0\uc324\0\uc380\0\uc3dc\0\uc438\0\uc494\0\uc4f0"+ + "\0\ubfe8\0\uc044\0\uc0a0\0\uc0fc\0\uc158\0\uc1b4\0\uc210\0\uc26c"+ + "\0\uc2c8\0\uc324\0\uc380\0\uc3dc\0\uc438\0\u9a2c\0\uc494\0\uc4f0"+ "\0\uc54c\0\uc5a8\0\uc604\0\uc660\0\uc6bc\0\uc718\0\uc774\0\uc7d0"+ "\0\uc82c\0\uc888\0\uc8e4\0\uc940\0\uc99c\0\uc9f8\0\uca54\0\ucab0"+ "\0\ucb0c\0\ucb68\0\ucbc4\0\ucc20\0\ucc7c\0\uccd8\0\ucd34\0\ucd90"+ @@ -186,38 +186,40 @@ public class FormulaTokenMaker extends AbstractJFlexCTokenMaker { "\0\ud68c\0\ud6e8\0\ud744\0\ud7a0\0\ud7fc\0\ud858\0\ud8b4\0\ud910"+ "\0\ud96c\0\ud9c8\0\uda24\0\uda80\0\udadc\0\udb38\0\udb94\0\udbf0"+ "\0\udc4c\0\udca8\0\udd04\0\udd60\0\uddbc\0\ude18\0\ude74\0\uded0"+ - "\0\u62d4\0\udf2c\0\udf88\0\udfe4\0\ue040\0\ue09c\0\ue0f8\0\ue154"+ - "\0\ue1b0\0\ue20c\0\ue268\0\ue2c4\0\ue320\0\ue37c\0\ue3d8\0\ue434"+ - "\0\ue490\0\u1b50\0\ue4ec\0\ue548\0\ue5a4\0\u0114\0\ue600\0\ue65c"+ - "\0\ue6b8\0\ue714\0\ue770\0\ue7cc\0\ue828\0\ue884\0\ue8e0\0\ue93c"+ - "\0\ue998\0\ue9f4\0\uea50\0\ueaac\0\ueb08\0\ueb64\0\uebc0\0\uec1c"+ - "\0\uec78\0\uecd4\0\ued30\0\u877c\0\ued8c\0\uede8\0\uee44\0\ueea0"+ - "\0\ueefc\0\uef58\0\uefb4\0\uf010\0\uf06c\0\uf0c8\0\uf124\0\uf180"+ - "\0\uf1dc\0\uf238\0\uf294\0\uf2f0\0\uf34c\0\uf3a8\0\uf404\0\uf460"+ - "\0\uf4bc\0\uf518\0\uf574\0\uf5d0\0\uf62c\0\uf688\0\ud464\0\uf6e4"+ - "\0\ud578\0\uf740\0\uf79c\0\uf7f8\0\uf854\0\uf8b0\0\uf90c\0\uf968"+ - "\0\uf9c4\0\ufa20\0\ufa7c\0\ufad8\0\ufb34\0\ufb90\0\ufbec\0\ufc48"+ + "\0\udf2c\0\udf88\0\udfe4\0\ue040\0\ue09c\0\ue0f8\0\ue154\0\ue1b0"+ + "\0\ue20c\0\ue268\0\ue2c4\0\ue320\0\ue37c\0\u6444\0\ue3d8\0\ue434"+ + "\0\ue490\0\ue4ec\0\ue548\0\ue5a4\0\ue600\0\ue65c\0\ue6b8\0\ue714"+ + "\0\ue770\0\ue7cc\0\ue828\0\ue884\0\ue8e0\0\ue93c\0\u1c08\0\ue998"+ + "\0\ue9f4\0\uea50\0\u0114\0\ueaac\0\ueb08\0\ueb64\0\uebc0\0\uec1c"+ + "\0\uec78\0\uecd4\0\ued30\0\ued8c\0\uede8\0\uee44\0\ueea0\0\ueefc"+ + "\0\uef58\0\uefb4\0\uf010\0\uf06c\0\uf0c8\0\uf124\0\uf180\0\uf1dc"+ + "\0\uf238\0\u8948\0\uf294\0\uf2f0\0\uf34c\0\uf3a8\0\uf404\0\uf460"+ + "\0\uf4bc\0\uf518\0\uf574\0\uf5d0\0\uf62c\0\uf688\0\uf6e4\0\uf740"+ + "\0\uf79c\0\uf7f8\0\uf854\0\uf8b0\0\uf90c\0\uf968\0\uf9c4\0\ufa20"+ + "\0\ufa7c\0\ufad8\0\ufb34\0\ufb90\0\ud8b4\0\ufbec\0\ud9c8\0\ufc48"+ "\0\ufca4\0\ufd00\0\ufd5c\0\ufdb8\0\ufe14\0\ufe70\0\ufecc\0\uff28"+ "\0\uff84\0\uffe0\1\74\1\230\1\364\1\u0150\1\u01ac\1\u0208"+ - "\0\u09b4\1\u0264\1\u02c0\1\u031c\1\u0378\1\u03d4\1\u0430\1\u048c"+ - "\1\u04e8\1\u0544\1\u05a0\1\u05fc\1\u0658\1\u06b4\1\u0710\1\u076c"+ + "\1\u0264\1\u02c0\1\u031c\1\u0378\1\u03d4\1\u0430\1\u048c\1\u04e8"+ + "\1\u0544\1\u05a0\1\u05fc\1\u0658\1\u06b4\1\u0710\1\u076c\0\u09b4"+ "\1\u07c8\1\u0824\1\u0880\1\u08dc\1\u0938\1\u0994\1\u09f0\1\u0a4c"+ "\1\u0aa8\1\u0b04\1\u0b60\1\u0bbc\1\u0c18\1\u0c74\1\u0cd0\1\u0d2c"+ "\1\u0d88\1\u0de4\1\u0e40\1\u0e9c\1\u0ef8\1\u0f54\1\u0fb0\1\u100c"+ - "\1\u1068\0\u7190\1\u10c4\1\u1120\1\u117c\1\u11d8\1\u1234\1\u1290"+ - "\1\u12ec\1\u1348\1\u13a4\1\u1400\1\u145c\1\u14b8\0\u9918\1\u1514"+ - "\1\u1570\1\u15cc\1\u1628\1\u1684\1\u16e0\1\u173c\1\u1798\1\u17f4"+ - "\1\u1850\1\u18ac\1\u1908\1\u1964\1\u19c0\1\u1a1c\1\u1a78\1\u1ad4"+ + "\1\u1068\1\u10c4\1\u1120\1\u117c\1\u11d8\1\u1234\1\u1290\1\u12ec"+ + "\1\u1348\1\u13a4\1\u1400\1\u145c\1\u14b8\1\u1514\1\u1570\1\u15cc"+ + "\0\u7300\1\u1628\1\u1684\1\u16e0\1\u173c\1\u1798\1\u17f4\1\u1850"+ + "\1\u18ac\1\u1908\1\u1964\1\u19c0\1\u1a1c\0\u9ae4\1\u1a78\1\u1ad4"+ "\1\u1b30\1\u1b8c\1\u1be8\1\u1c44\1\u1ca0\1\u1cfc\1\u1d58\1\u1db4"+ "\1\u1e10\1\u1e6c\1\u1ec8\1\u1f24\1\u1f80\1\u1fdc\1\u2038\1\u2094"+ "\1\u20f0\1\u214c\1\u21a8\1\u2204\1\u2260\1\u22bc\1\u2318\1\u2374"+ "\1\u23d0\1\u242c\1\u2488\1\u24e4\1\u2540\1\u259c\1\u25f8\1\u2654"+ "\1\u26b0\1\u270c\1\u2768\1\u27c4\1\u2820\1\u287c\1\u28d8\1\u2934"+ "\1\u2990\1\u29ec\1\u2a48\1\u2aa4\1\u2b00\1\u2b5c\1\u2bb8\1\u2c14"+ - "\1\u2c70\1\u2ccc\1\u2d28\1\u2d84\1\u2de0"; + "\1\u2c70\1\u2ccc\1\u2d28\1\u2d84\1\u2de0\1\u2e3c\1\u2e98\1\u2ef4"+ + "\1\u2f50\1\u2fac\1\u3008\1\u3064\1\u30c0\1\u311c\1\u3178\1\u31d4"+ + "\1\u3230\1\u328c\1\u32e8\1\u3344\1\u33a0\1\u33fc\1\u3458"; private static int [] zzUnpackRowMap() { - int [] result = new int[869]; + int [] result = new int[887]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -249,2345 +251,2400 @@ public class FormulaTokenMaker extends AbstractJFlexCTokenMaker { "\2\4\1\34\1\60\1\41\1\33\1\61\1\62\1\41"+ "\1\63\1\64\1\65\1\66\1\67\1\70\1\71\1\7"+ "\1\72\1\73\1\74\1\75\1\76\1\77\1\100\1\101"+ - "\1\102\1\103\2\6\1\104\2\6\2\7\3\6\1\105"+ - "\2\7\1\34\1\41\1\106\1\107\12\110\1\111\30\110"+ - "\1\112\5\110\1\113\14\110\1\114\2\110\1\115\42\110"+ - "\12\116\1\117\30\116\1\120\22\116\1\121\2\116\1\122"+ - "\42\116\7\4\1\0\17\4\11\0\3\4\2\0\3\4"+ - "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\37\4\4\0\1\4\6\6\1\0\10\6\1\123"+ - "\6\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\3\124\1\7\1\124\1\7\1\125\1\0\1\124"+ - "\1\125\3\124\1\126\4\124\1\127\4\124\11\0\1\124"+ - "\1\7\1\124\2\0\2\124\1\7\2\0\1\127\1\126"+ - "\1\130\1\124\1\0\3\124\4\0\2\124\1\0\7\124"+ - "\1\7\17\124\2\7\4\124\2\7\4\0\1\4\5\6"+ - "\1\131\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\1\6\1\132\35\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\13\6\1\133\2\6\1\134\12\6"+ - "\1\135\5\6\13\0\1\41\20\0\1\41\103\0\1\4"+ - "\6\6\1\0\1\6\1\136\12\6\1\137\2\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\4\6\1\140\12\6\11\0"+ - "\1\4\1\6\1\141\2\0\1\142\2\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\3\6\1\143"+ - "\1\6\1\144\2\6\1\145\3\6\1\146\2\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\2\6\1\147\1\6\1\150"+ - "\1\6\1\151\10\6\11\0\1\4\1\152\1\6\2\0"+ + "\1\102\1\103\1\104\1\105\1\106\2\6\2\7\3\6"+ + "\1\107\2\7\1\34\1\41\1\110\1\111\12\112\1\113"+ + "\30\112\1\114\5\112\1\115\14\112\1\116\2\112\1\117"+ + "\42\112\12\120\1\121\30\120\1\122\22\120\1\123\2\120"+ + "\1\124\42\120\7\4\1\0\17\4\11\0\3\4\2\0"+ + "\3\4\2\0\2\4\1\0\1\4\1\0\3\4\4\0"+ + "\2\4\1\0\37\4\4\0\1\4\6\6\1\0\10\6"+ + "\1\125\6\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\3\126\1\7\1\126\1\7\1\127\1\0"+ + "\1\126\1\127\3\126\1\130\4\126\1\131\4\126\11\0"+ + "\1\126\1\7\1\126\2\0\2\126\1\7\2\0\1\131"+ + "\1\130\1\132\1\126\1\0\3\126\4\0\2\126\1\0"+ + "\7\126\1\7\17\126\2\7\4\126\2\7\4\0\1\4"+ + "\5\6\1\133\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\10\6\1\153\1\6\1\154\4\6\11\0\1\4"+ - "\2\6\2\0\1\155\2\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\1\6\1\156\2\6\1\147"+ - "\3\6\1\157\1\6\1\160\1\6\1\161\2\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\1\6\1\162\1\6\1\163"+ - "\1\6\1\164\2\6\1\165\1\6\1\166\1\167\3\6"+ + "\1\4\4\0\2\6\1\0\1\6\1\134\35\6\4\0"+ + "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\13\6\1\135\2\6\1\136"+ + "\12\6\1\137\5\6\13\0\1\41\20\0\1\41\103\0"+ + "\1\4\6\6\1\0\1\6\1\140\12\6\1\141\2\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\1\6\1\170"+ - "\1\0\1\171\22\6\1\172\13\6\4\0\1\4\6\6"+ - "\1\0\1\6\1\173\1\6\1\174\4\6\1\175\3\6"+ - "\1\176\2\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\4\6\1\142\12\6"+ + "\11\0\1\4\1\6\1\143\2\0\1\144\2\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\177"+ - "\6\6\1\147\7\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\3\6"+ + "\1\145\1\6\1\146\2\6\1\147\3\6\1\150\2\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\2\6\1\151\1\6"+ + "\1\152\1\6\1\153\10\6\11\0\1\4\1\154\1\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\10\6\1\155\1\6\1\156\4\6\11\0"+ + "\1\4\2\6\2\0\1\157\2\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\1\6\1\160\2\6"+ + "\1\151\3\6\1\161\1\6\1\162\1\6\1\163\2\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\1\6\1\164\1\6"+ + "\1\165\1\6\1\166\2\6\1\167\1\6\1\170\1\171"+ + "\3\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\6"+ + "\1\172\1\0\1\173\22\6\1\174\13\6\4\0\1\4"+ + "\6\6\1\0\1\6\1\175\1\6\1\176\4\6\1\177"+ + "\3\6\1\200\2\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\1\6\1\200\1\6\1\201\1\202\1\203\1\6\1\204"+ - "\1\205\6\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\1\206\1\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\4\6\1\207\5\6\1\210\1\211\3\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\3\6\1\147\3\6\1\212\1\213"+ - "\6\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\1\214\3\6"+ - "\1\177\1\6\1\215\1\216\1\6\1\217\5\6\11\0"+ - "\1\4\2\6\2\0\1\220\1\221\1\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\6"+ - "\1\222\1\0\37\6\4\0\1\4\6\6\1\0\1\6"+ - "\1\223\5\6\1\224\7\6\11\0\1\4\2\6\2\0"+ + "\1\201\6\6\1\151\7\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\1\6\1\225\1\6\1\226\4\6\1\227\3\6"+ - "\1\230\2\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\0\1\6\1\202\1\6\1\203\1\204\1\205\1\6"+ + "\1\206\1\207\6\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\1\210\1\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\4\6\1\211\5\6\1\212\1\213\3\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\3\6\1\151\3\6\1\214"+ + "\1\215\6\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\216"+ + "\3\6\1\201\1\6\1\217\1\220\1\6\1\221\5\6"+ + "\11\0\1\4\2\6\2\0\1\222\1\223\1\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\33\0\1\231\134\0\1\41\267\0"+ - "\1\41\1\0\1\232\16\0\1\233\62\0\27\234\1\235"+ - "\3\234\1\236\4\234\1\237\2\234\1\0\70\234\34\0"+ - "\1\33\134\0\1\33\126\0\1\41\6\0\1\41\74\0"+ - "\40\45\1\240\2\45\1\241\1\242\67\45\1\4\6\6"+ - "\1\0\14\6\1\243\2\6\11\0\1\4\2\6\2\0"+ + "\1\6\1\224\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\1\6\1\225\5\6\1\226\7\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\1\6\1\227\1\6\1\230\4\6\1\231"+ + "\3\6\1\232\2\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\33\0\1\233\134\0\1\41"+ + "\267\0\1\41\1\0\1\234\16\0\1\235\62\0\27\236"+ + "\1\237\3\236\1\240\4\236\1\241\2\236\1\0\70\236"+ + "\34\0\1\33\134\0\1\33\126\0\1\41\6\0\1\41"+ + "\74\0\40\45\1\242\2\45\1\243\1\244\67\45\1\4"+ + "\6\6\1\0\14\6\1\245\2\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\3\6\1\246\13\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\3\126"+ + "\1\7\1\126\1\7\1\127\1\0\1\126\1\127\3\126"+ + "\1\130\4\126\1\131\4\126\11\0\1\126\1\7\1\247"+ + "\2\0\2\126\1\7\2\0\1\131\1\130\1\132\1\126"+ + "\1\0\3\126\4\0\2\126\1\0\7\126\1\7\17\126"+ + "\2\7\1\247\3\126\2\7\54\0\1\51\63\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\1\250\1\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\13\6\1\251\4\6\1\252"+ + "\16\6\4\0\1\4\5\6\1\253\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\1\254\1\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\1\6\1\255\3\6\1\256\5\6\1\151\23\6\7\0"+ + "\1\132\1\0\1\132\33\0\1\132\5\0\1\132\30\0"+ + "\1\132\17\0\2\132\4\0\2\132\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\6\1\257\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\1\6\1\260\3\6\1\261\6\6"+ + "\1\262\22\6\4\0\7\4\1\0\1\263\1\264\1\4"+ + "\1\265\1\4\1\266\4\4\1\267\1\270\3\4\11\0"+ + "\3\4\2\0\3\4\1\271\1\0\2\4\1\0\1\4"+ + "\1\0\3\4\4\0\2\4\1\0\37\4\4\0\1\4"+ + "\6\6\1\0\3\6\1\272\4\6\1\273\6\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\3\6\1\274\3\6\1\275"+ + "\1\276\3\6\1\277\2\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\3\6\1\244\13\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\3\124\1\7"+ - "\1\124\1\7\1\125\1\0\1\124\1\125\3\124\1\126"+ - "\4\124\1\127\4\124\11\0\1\124\1\7\1\245\2\0"+ - "\2\124\1\7\2\0\1\127\1\126\1\130\1\124\1\0"+ - "\3\124\4\0\2\124\1\0\7\124\1\7\17\124\2\7"+ - "\1\245\3\124\2\7\54\0\1\51\63\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\1\246\1\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\13\6\1\247\4\6\1\250\16\6"+ - "\4\0\1\4\5\6\1\251\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\1\252\1\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\1\6"+ - "\1\253\3\6\1\254\5\6\1\147\23\6\7\0\1\130"+ - "\1\0\1\130\33\0\1\130\5\0\1\130\30\0\1\130"+ - "\17\0\2\130\4\0\2\130\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\1\6"+ - "\1\255\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\1\6\1\256\3\6\1\257\6\6\1\260"+ - "\22\6\4\0\7\4\1\0\1\261\1\262\1\4\1\263"+ - "\1\4\1\264\4\4\1\265\1\266\3\4\11\0\3\4"+ - "\2\0\3\4\1\267\1\0\2\4\1\0\1\4\1\0"+ - "\3\4\4\0\2\4\1\0\37\4\4\0\1\4\6\6"+ - "\1\0\3\6\1\270\4\6\1\271\6\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\3\6\1\272\3\6\1\273\1\274"+ - "\3\6\1\275\2\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\1\6\1\276\15\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\3\6\1\277"+ - "\2\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\2\6\1\300\1\301\1\302\3\6"+ - "\1\303\2\6\1\304\1\6\1\305\1\306\20\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\1\0\1\6\1\300\15\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\14\6\1\307\22\6\4\0"+ - "\1\4\5\6\1\310\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\1\311\1\312\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\5\6\1\313"+ - "\6\6\1\314\1\315\2\6\1\316\1\6\1\317\1\6"+ - "\1\320\12\6\4\0\1\4\5\6\1\321\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\1\6\1\322"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\5\6\1\323\1\324\1\6\1\325\2\6\1\326"+ - "\1\327\22\6\4\0\1\4\3\6\1\304\2\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\10\6\1\147\26\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\5\6\1\330\6\6\1\331\22\6\4\0\1\4"+ - "\5\6\1\332\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\3\6"+ + "\1\301\2\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\1\6\1\333\3\6\1\334"+ - "\6\6\1\335\22\6\4\0\1\4\5\6\1\336\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\337"+ - "\15\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\1\340\1\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\5\6\1\341\10\6\1\342\20\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\1\343\1\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\147\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\3\6\1\344\7\6\1\345\23\6"+ + "\1\4\4\0\2\6\1\0\2\6\1\302\1\303\1\304"+ + "\3\6\1\305\2\6\1\306\1\6\1\307\1\310\20\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\1\6\1\346\3\6"+ - "\1\347\2\6\1\350\3\6\1\351\22\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\1\6\1\352\35\6\4\0\1\4"+ - "\5\6\1\353\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\10\6\1\354\26\6\4\0"+ + "\1\6\1\4\4\0\2\6\1\0\14\6\1\311\22\6"+ + "\4\0\1\4\5\6\1\312\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\1\313\1\314\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\5\6"+ + "\1\315\6\6\1\316\1\317\2\6\1\320\1\6\1\321"+ + "\1\6\1\322\12\6\4\0\1\4\5\6\1\323\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\1\6"+ + "\1\324\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\5\6\1\325\1\326\1\6\1\327\2\6"+ + "\1\330\1\331\22\6\4\0\1\4\3\6\1\306\2\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\10\6\1\151\26\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\5\6\1\332\6\6\1\333\22\6\4\0"+ + "\1\4\5\6\1\334\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\1\6\1\335\3\6"+ + "\1\336\6\6\1\337\22\6\4\0\1\4\5\6\1\340"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\6"+ + "\1\341\15\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\1\342\1\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\5\6\1\343\10\6\1\344\20\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\1\345\1\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\151\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\3\6\1\346\7\6\1\347"+ + "\23\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\1\6\1\350"+ + "\3\6\1\351\2\6\1\352\3\6\1\353\22\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\5\6\1\355\2\6\1\356"+ - "\3\6\1\147\22\6\4\0\1\4\5\6\1\357\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\1\6\1\360\3\6\1\361\6\6\1\362\22\6"+ - "\4\0\1\4\5\6\1\363\1\0\17\6\11\0\1\4"+ + "\1\4\4\0\2\6\1\0\1\6\1\354\35\6\4\0"+ + "\1\4\5\6\1\355\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\10\6\1\356\26\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\5\6\1\357\2\6"+ + "\1\360\3\6\1\151\22\6\4\0\1\4\5\6\1\361"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\1\6\1\362\3\6\1\363\6\6\1\364"+ + "\22\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\1\365\1\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\12\6\1\366\4\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\5\6\1\367\1\0\17\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\5\6\1\364\31\6\136\0"+ - "\1\41\134\0\1\41\12\110\1\0\30\110\1\0\5\110"+ - "\1\0\14\110\1\0\2\110\1\0\42\110\13\0\1\365"+ - "\53\0\1\366\76\0\1\367\170\0\1\370\135\0\1\371"+ - "\42\0\12\116\1\0\30\116\1\0\22\116\1\0\2\116"+ - "\1\0\42\116\13\0\1\372\53\0\1\373\133\0\1\374"+ - "\135\0\1\375\42\0\1\4\6\6\1\0\3\6\1\376"+ + "\1\4\4\0\2\6\1\0\5\6\1\370\31\6\136\0"+ + "\1\41\134\0\1\41\12\112\1\0\30\112\1\0\5\112"+ + "\1\0\14\112\1\0\2\112\1\0\42\112\13\0\1\371"+ + "\53\0\1\372\76\0\1\373\170\0\1\374\135\0\1\375"+ + "\42\0\12\120\1\0\30\120\1\0\22\120\1\0\2\120"+ + "\1\0\42\120\13\0\1\376\53\0\1\377\133\0\1\u0100"+ + "\135\0\1\u0101\42\0\1\4\6\6\1\0\3\6\1\u0102"+ "\13\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\7\124\1\0\17\124\11\0\3\124"+ - "\2\0\3\124\2\0\2\124\1\0\1\124\1\0\3\124"+ - "\4\0\2\124\1\0\37\124\4\0\3\124\1\377\1\124"+ - "\1\377\1\124\1\u0100\17\124\10\0\1\u0100\1\124\1\377"+ - "\1\124\2\0\2\124\1\377\2\0\2\124\1\0\1\124"+ - "\1\0\3\124\4\0\2\124\1\0\7\124\1\377\17\124"+ - "\2\377\4\124\2\377\4\0\7\124\1\0\12\124\1\u0101"+ - "\4\124\11\0\3\124\2\0\3\124\2\0\1\u0101\1\124"+ - "\1\0\1\124\1\0\3\124\4\0\2\124\1\0\37\124"+ - "\4\0\7\124\1\0\5\124\1\u0101\11\124\11\0\3\124"+ - "\2\0\3\124\2\0\1\124\1\u0101\1\0\1\124\1\0"+ - "\3\124\4\0\2\124\1\0\37\124\4\0\3\124\1\130"+ - "\1\124\1\130\1\u0102\1\0\1\124\1\u0102\1\u0103\2\124"+ - "\1\u0103\11\124\11\0\1\124\1\130\1\124\2\0\2\124"+ - "\1\130\2\0\1\124\1\u0103\1\0\1\u0103\1\0\3\124"+ - "\4\0\2\124\1\0\7\124\1\130\17\124\2\130\4\124"+ - "\2\130\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\4\6\1\u0104"+ - "\12\6\1\u0105\17\6\4\0\1\4\6\6\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\11\6\1\u0106\3\6\1\u0107\21\6\4\0\1\4\3\6"+ - "\1\u0108\2\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\4\6\1\u0109\6\6\1\u010a"+ - "\5\6\1\u010b\15\6\4\0\1\4\5\6\1\u010c\1\0"+ + "\1\0\37\6\4\0\7\126\1\0\17\126\11\0\3\126"+ + "\2\0\3\126\2\0\2\126\1\0\1\126\1\0\3\126"+ + "\4\0\2\126\1\0\37\126\4\0\3\126\1\u0103\1\126"+ + "\1\u0103\1\126\1\u0104\17\126\10\0\1\u0104\1\126\1\u0103"+ + "\1\126\2\0\2\126\1\u0103\2\0\2\126\1\0\1\126"+ + "\1\0\3\126\4\0\2\126\1\0\7\126\1\u0103\17\126"+ + "\2\u0103\4\126\2\u0103\4\0\7\126\1\0\12\126\1\u0105"+ + "\4\126\11\0\3\126\2\0\3\126\2\0\1\u0105\1\126"+ + "\1\0\1\126\1\0\3\126\4\0\2\126\1\0\37\126"+ + "\4\0\7\126\1\0\5\126\1\u0105\11\126\11\0\3\126"+ + "\2\0\3\126\2\0\1\126\1\u0105\1\0\1\126\1\0"+ + "\3\126\4\0\2\126\1\0\37\126\4\0\3\126\1\132"+ + "\1\126\1\132\1\u0106\1\0\1\126\1\u0106\1\u0107\2\126"+ + "\1\u0107\11\126\11\0\1\126\1\132\1\126\2\0\2\126"+ + "\1\132\2\0\1\126\1\u0107\1\0\1\u0107\1\0\3\126"+ + "\4\0\2\126\1\0\7\126\1\132\17\126\2\132\4\126"+ + "\2\132\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\4\6\1\u0108"+ + "\12\6\1\u0109\17\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\11\6\1\u010a\3\6\1\u010b\21\6\4\0\1\4\3\6"+ + "\1\u010c\2\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\4\6\1\u010d\6\6\1\u010e"+ + "\5\6\1\u010f\15\6\4\0\1\4\5\6\1\u0110\1\0"+ "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\1\6\1\342\35\6\4\0\1\4\6\6\1\0"+ + "\1\0\1\6\1\344\35\6\4\0\1\4\6\6\1\0"+ "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\1\6\1\256\16\6\1\147\16\6\4\0\1\4"+ - "\6\6\1\0\11\6\1\u010d\3\6\1\u010e\1\6\11\0"+ + "\1\0\1\6\1\260\16\6\1\151\16\6\4\0\1\4"+ + "\6\6\1\0\11\6\1\u0111\3\6\1\u0112\1\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\1\6\1\u010f\1\0\12\6\1\u0110"+ - "\24\6\4\0\1\4\6\6\1\0\1\u0111\3\6\1\u0112"+ - "\4\6\1\u0113\4\6\1\u0114\11\0\1\4\2\6\2\0"+ + "\1\6\1\4\4\0\1\6\1\u0113\1\0\12\6\1\u0114"+ + "\24\6\4\0\1\4\6\6\1\0\1\u0115\3\6\1\u0116"+ + "\4\6\1\u0117\4\6\1\u0118\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\13\6\1\147\1\146\2\6\11\0\1\4\2\6"+ + "\1\0\13\6\1\151\1\150\2\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\1\6\1\u0115\12\6\1\155\2\6\11\0"+ + "\6\6\1\0\1\6\1\u0119\12\6\1\157\2\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\1\6\1\u0116\2\6\1\177"+ - "\1\u0117\11\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\4\0\1\4\6\6\1\0\1\6\1\u011a\2\6\1\201"+ + "\1\u011b\11\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\10\6"+ - "\1\u0118\6\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\u011c\6\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\7\6"+ - "\1\u0119\7\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\u011d\7\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\11\6"+ - "\1\u011a\5\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\u011e\5\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\u011b"+ - "\13\6\1\u011c\2\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\u011f"+ + "\13\6\1\u0120\2\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\1\6\1\147\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\4\6\1\u011d\12\6\11\0\1\4\2\6\2\0"+ + "\4\0\1\6\1\151\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\4\6\1\u0121\12\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\35\6\1\u0115\1\6\4\0\1\4\6\6"+ + "\2\6\1\0\35\6\1\u0119\1\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\1\147\36\6\4\0\1\4\6\6\1\0"+ - "\16\6\1\u011e\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\151\36\6\4\0\1\4\6\6\1\0"+ + "\16\6\1\u0122\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\5\6"+ - "\1\147\11\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\151\11\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\2\6"+ - "\1\u011a\1\6\1\147\12\6\11\0\1\4\2\6\2\0"+ + "\1\u011e\1\6\1\151\12\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\1\6\1\147\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\15\6\1\u011f\1\6\11\0\1\4\2\6"+ + "\1\4\4\0\1\6\1\151\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\15\6\1\u0123\1\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\1\u0120\36\6\4\0"+ - "\1\4\6\6\1\0\4\6\1\206\12\6\11\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\1\u0124\36\6\4\0"+ + "\1\4\6\6\1\0\4\6\1\210\12\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\12\6\1\u0121\24\6\4\0"+ - "\1\4\6\6\1\0\11\6\1\u0122\5\6\11\0\1\4"+ + "\1\4\4\0\2\6\1\0\12\6\1\u0125\24\6\4\0"+ + "\1\4\6\6\1\0\11\6\1\u0126\5\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\23\6\1\147"+ - "\13\6\4\0\1\4\6\6\1\0\4\6\1\u0123\10\6"+ - "\1\u0115\1\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\23\6\1\151"+ + "\13\6\4\0\1\4\6\6\1\0\4\6\1\u0127\10\6"+ + "\1\u0119\1\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\3\6"+ - "\1\u0124\13\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\u0128\13\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\7\6"+ - "\1\u0125\7\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\u0129\7\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\16\6"+ - "\1\u0126\11\0\1\4\2\6\2\0\1\6\1\u0127\1\6"+ + "\1\u012a\11\0\1\4\2\6\2\0\1\6\1\u012b\1\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\5\6\1\u0128\11\6\11\0\1\4\2\6\2\0\3\6"+ + "\5\6\1\u012c\11\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\1\u0129\13\6\1\u012a\2\6\11\0\1\4\2\6\2\0"+ + "\1\u012d\13\6\1\u012e\2\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\3\6\1\u012b\13\6\11\0\1\4\2\6\2\0"+ + "\1\0\3\6\1\u012f\13\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\5\6\1\147\1\6\1\u011a\7\6\11\0\1\4"+ + "\1\0\5\6\1\151\1\6\1\u011e\7\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\11\6\1\u012c\1\6\1\u012d\1\6"+ - "\1\u012e\1\u012f\11\0\1\4\2\6\2\0\1\u0130\2\6"+ + "\1\4\6\6\1\0\11\6\1\u0130\1\6\1\u0131\1\6"+ + "\1\u0132\1\u0133\11\0\1\4\2\6\2\0\1\u0134\2\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\15\6\1\u0131\1\6\11\0\1\4\2\6\2\0\3\6"+ + "\15\6\1\u0135\1\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\12\6\1\u0132\4\6\11\0\1\4\2\6\2\0\3\6"+ + "\12\6\1\u0136\4\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\1\u0133\36\6\4\0\1\4\6\6"+ - "\1\0\1\u0134\3\6\1\u0135\12\6\11\0\1\4\2\6"+ + "\4\0\2\6\1\0\1\u0137\36\6\4\0\1\4\6\6"+ + "\1\0\1\u0138\3\6\1\u0139\12\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\1\147\16\6\11\0\1\4\2\6\2\0"+ + "\6\6\1\0\1\151\16\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\3\6\1\u0136\13\6\11\0\1\4\2\6\2\0"+ + "\1\0\3\6\1\u013a\13\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\7\6\1\u0137\7\6\11\0\1\4\2\6\2\0"+ + "\1\0\7\6\1\u013b\7\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\16\6\1\u0114\11\0\1\4\2\6\2\0\3\6"+ + "\1\0\16\6\1\u0118\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\14\6\1\u0138\2\6\11\0\1\4\2\6\2\0\3\6"+ + "\14\6\1\u013c\2\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\10\6\1\u0139\6\6\11\0\1\4\2\6\2\0\3\6"+ + "\10\6\1\u013d\6\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\1\u013a\3\6\1\u013b\1\u013c\1\u0123\1\u013d\2\6\1\u013e"+ - "\3\6\1\u013f\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\u013e\3\6\1\u013f\1\u0140\1\u0127\1\u0141\2\6\1\u0142"+ + "\3\6\1\u0143\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\14\6"+ - "\1\u0140\2\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\u0144\2\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\3\6"+ - "\1\u0141\13\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\u0145\13\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\3\6"+ - "\1\177\13\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\201\13\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\13\6"+ - "\1\u0120\3\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\u0124\3\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\10\6"+ - "\1\u0142\6\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\u0146\6\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\1\u0120\36\6\4\0\1\4\6\6\1\0\1\u0143\16\6"+ + "\1\u0124\36\6\4\0\1\4\6\6\1\0\1\u0147\16\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\3\6\1\u0144\13\6"+ + "\37\6\4\0\1\4\6\6\1\0\3\6\1\u0148\13\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\7\6\1\u0145\7\6"+ + "\37\6\4\0\1\4\6\6\1\0\7\6\1\u0149\7\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\10\6\1\u0146\6\6"+ + "\37\6\4\0\1\4\6\6\1\0\10\6\1\u014a\6\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\1\6\1\u0147\15\6"+ + "\37\6\4\0\1\4\6\6\1\0\1\6\1\u014b\15\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\6\6\1\147\10\6"+ + "\37\6\4\0\1\4\6\6\1\0\6\6\1\151\10\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\14\6\1\u0148\2\6"+ + "\37\6\4\0\1\4\6\6\1\0\14\6\1\u014c\2\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\1\6\1\u0149\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\1\6\1\u014a\15\6\11\0"+ + "\1\4\1\6\1\4\4\0\1\6\1\u014d\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\1\6\1\u014e\15\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\1\u014b\16\6\11\0\1\4"+ + "\4\0\1\4\6\6\1\0\1\u014f\16\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\1\147\3\6\1\u014c\12\6\11\0"+ + "\1\4\6\6\1\0\1\151\3\6\1\u0150\12\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\1\147\3\6\1\u014d\11\6"+ - "\1\147\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\13\6\1\u014e"+ - "\3\6\11\0\1\4\1\6\1\147\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\34\0\10\41\74\0\33\u014f\1\u0150"+ - "\7\u014f\1\0\117\u014f\1\u0151\3\u014f\1\u0150\7\u014f\1\0"+ - "\75\u014f\1\u0152\4\u014f\1\234\1\u014f\1\234\2\u014f\1\234"+ - "\4\u014f\1\234\2\u014f\1\234\3\u014f\1\u0153\4\u014f\1\234"+ - "\1\u0154\1\u0155\1\0\3\234\1\u0154\17\u014f\1\234\10\u014f"+ - "\1\u0154\17\u014f\1\u0154\1\u0152\1\u0155\4\u014f\1\u0152\4\u014f"+ - "\5\241\1\45\4\241\1\45\1\241\1\45\2\241\1\45"+ - "\4\241\1\45\2\241\1\45\3\241\1\45\4\241\2\45"+ - "\1\u0156\1\0\4\45\17\241\1\45\10\241\1\45\17\241"+ - "\2\45\1\u0156\4\241\1\45\44\241\1\u0157\3\241\1\u0158"+ - "\67\241\1\4\6\6\1\0\5\6\1\u0159\11\6\11\0"+ + "\4\0\1\4\6\6\1\0\1\151\3\6\1\u0151\11\6"+ + "\1\151\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\13\6\1\u0152"+ + "\3\6\11\0\1\4\1\6\1\151\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\34\0\10\41\74\0\33\u0153\1\u0154"+ + "\7\u0153\1\0\117\u0153\1\u0155\3\u0153\1\u0154\7\u0153\1\0"+ + "\75\u0153\1\u0156\4\u0153\1\236\1\u0153\1\236\2\u0153\1\236"+ + "\4\u0153\1\236\2\u0153\1\236\3\u0153\1\u0157\4\u0153\1\236"+ + "\1\u0158\1\u0159\1\0\3\236\1\u0158\17\u0153\1\236\10\u0153"+ + "\1\u0158\17\u0153\1\u0158\1\u0156\1\u0159\4\u0153\1\u0156\4\u0153"+ + "\5\243\1\45\4\243\1\45\1\243\1\45\2\243\1\45"+ + "\4\243\1\45\2\243\1\45\3\243\1\45\4\243\2\45"+ + "\1\u015a\1\0\4\45\17\243\1\45\10\243\1\45\17\243"+ + "\2\45\1\u015a\4\243\1\45\44\243\1\u015b\3\243\1\u015c"+ + "\67\243\1\4\6\6\1\0\5\6\1\u015d\11\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\1\6\1\u015a\1\0\37\6\4\0"+ - "\3\124\4\u015b\1\0\3\u015b\6\124\1\u015b\2\124\1\u015b"+ - "\2\124\11\0\1\124\1\u015b\1\124\2\0\1\124\2\u015b"+ - "\2\0\2\124\1\0\1\u015b\1\0\3\124\4\0\2\124"+ - "\1\0\1\124\2\u015b\1\124\1\u015b\2\124\1\u015b\17\124"+ - "\2\u015b\4\124\2\u015b\4\0\1\4\6\6\1\0\17\6"+ + "\1\6\1\4\4\0\1\6\1\u015e\1\0\37\6\4\0"+ + "\3\126\4\u015f\1\0\3\u015f\6\126\1\u015f\2\126\1\u015f"+ + "\2\126\11\0\1\126\1\u015f\1\126\2\0\1\126\2\u015f"+ + "\2\0\2\126\1\0\1\u015f\1\0\3\126\4\0\2\126"+ + "\1\0\1\126\2\u015f\1\126\1\u015f\2\126\1\u015f\17\126"+ + "\2\u015f\4\126\2\u015f\4\0\1\4\6\6\1\0\17\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\14\6\1\304\22\6\4\0\1\4\6\6\1\0\17\6"+ + "\14\6\1\306\22\6\4\0\1\4\6\6\1\0\17\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\14\6\1\u015c\22\6\4\0\1\4\6\6\1\0\17\6"+ + "\14\6\1\u0160\22\6\4\0\1\4\6\6\1\0\17\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\20\6\1\u015d\16\6\4\0\1\4\6\6\1\0\17\6"+ + "\20\6\1\u0161\16\6\4\0\1\4\6\6\1\0\17\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\u015e\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\13\6\1\147\1\6\1\147\21\6\4\0\1\4\6\6"+ + "\1\u0162\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\13\6\1\151\1\6\1\151\21\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\13\6\1\324\23\6\4\0\1\4\6\6"+ + "\2\6\1\0\13\6\1\326\23\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\11\6\1\u015f\25\6\4\0\1\4\6\6"+ + "\2\6\1\0\11\6\1\u0163\25\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\17\6\1\u011f\4\6\1\u015d\12\6\4\0"+ + "\2\6\1\0\17\6\1\u0123\4\6\1\u0161\12\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\5\6\1\u0160\31\6\4\0"+ + "\1\4\4\0\2\6\1\0\5\6\1\u0164\31\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\4\6\1\u015e\32\6\4\0"+ + "\1\4\4\0\2\6\1\0\4\6\1\u0162\32\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\10\6\1\u0161\26\6\4\0"+ - "\1\4\5\6\1\u0162\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\1\6\1\u0163\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\13\6\1\304"+ - "\23\6\4\0\7\4\1\0\1\4\1\u0164\15\4\11\0"+ + "\1\4\4\0\2\6\1\0\10\6\1\u0165\26\6\4\0"+ + "\1\4\5\6\1\u0166\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\1\6\1\u0167\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\13\6\1\306"+ + "\23\6\4\0\7\4\1\0\1\4\1\u0168\15\4\11\0"+ "\3\4\2\0\3\4\2\0\2\4\1\0\1\4\1\0"+ "\3\4\4\0\2\4\1\0\37\4\4\0\7\4\1\0"+ - "\4\4\1\u0165\1\u0166\1\4\1\u0167\7\4\11\0\3\4"+ + "\4\4\1\u0169\1\u016a\1\4\1\u016b\7\4\11\0\3\4"+ "\2\0\3\4\2\0\2\4\1\0\1\4\1\0\3\4"+ "\4\0\2\4\1\0\37\4\4\0\7\4\1\0\2\4"+ - "\1\u0168\1\4\1\u0169\12\4\11\0\3\4\2\0\3\4"+ + "\1\u016c\1\4\1\u016d\12\4\11\0\3\4\2\0\3\4"+ "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\37\4\4\0\7\4\1\0\3\4\1\u016a\13\4"+ + "\1\0\37\4\4\0\7\4\1\0\3\4\1\u016e\13\4"+ "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ "\1\0\3\4\4\0\2\4\1\0\37\4\4\0\7\4"+ - "\1\0\4\4\1\u016b\12\4\11\0\3\4\2\0\3\4"+ + "\1\0\4\4\1\u016f\12\4\11\0\3\4\2\0\3\4"+ "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\37\4\4\0\7\4\1\0\7\4\1\u016c\7\4"+ + "\1\0\37\4\4\0\7\4\1\0\7\4\1\u0170\7\4"+ "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\37\4\14\0\1\u016d"+ - "\1\u016e\1\0\1\u016f\1\0\1\u0170\4\0\1\u0171\1\u0172"+ - "\24\0\1\267\63\0\1\4\6\6\1\0\1\6\1\u0173"+ + "\1\0\3\4\4\0\2\4\1\0\37\4\14\0\1\u0171"+ + "\1\u0172\1\0\1\u0173\1\0\1\u0174\4\0\1\u0175\1\u0176"+ + "\24\0\1\271\63\0\1\4\6\6\1\0\1\6\1\u0177"+ "\15\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\12\6\1\u0140"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\12\6\1\u0144"+ "\4\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\16\6\1\u013a"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\16\6\1\u013e"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\1\6\1\u0174\1\6"+ - "\1\u0175\6\6\1\u0176\4\6\11\0\1\4\2\6\2\0"+ + "\37\6\4\0\1\4\6\6\1\0\1\6\1\u0178\1\6"+ + "\1\u0179\6\6\1\u017a\4\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\1\u0177\2\6\1\u0178\4\6\1\u0179\6\6\11\0"+ - "\1\4\2\6\2\0\1\6\1\u017a\1\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\u017b"+ + "\1\0\1\u017b\2\6\1\u017c\4\6\1\u017d\6\6\11\0"+ + "\1\4\2\6\2\0\1\6\1\u017e\1\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\u017f"+ "\1\6\1\0\37\6\4\0\1\4\6\6\1\0\4\6"+ - "\1\u0123\12\6\11\0\1\4\2\6\2\0\1\6\1\u017c"+ + "\1\u0127\12\6\11\0\1\4\2\6\2\0\1\6\1\u0180"+ "\1\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\1\6\1\u017d\1\6\1\u017e\13\6\11\0\1\4"+ + "\1\0\1\6\1\u0181\1\6\1\u0182\13\6\11\0\1\4"+ + "\2\6\2\0\1\6\1\u0183\1\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\3\6\1\u0184\2\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\3\6\1\u017f\2\6\1\0\17\6\11\0\1\4"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\3\6\1\151"+ + "\33\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\14\6\1\u0185"+ + "\22\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\5\6\1\u0186"+ + "\31\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\10\6\1\u0187"+ + "\26\6\4\0\1\4\3\6\1\151\2\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\1\6\1\u0188"+ + "\35\6\4\0\1\4\5\6\1\u0189\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\15\6\1\u018a\21\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\4\6\1\u018b\15\6"+ + "\1\151\14\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\2\6"+ + "\1\u018c\16\6\1\u018d\15\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\14\6\1\u018e\22\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\10\6\1\u018f\26\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\13\6\1\u0190\3\6\1\u0110\17\6\4\0\1\4"+ + "\3\6\1\u0191\2\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\1\6\1\u0192\35\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\1\6\1\u0193\1\0\1\6\1\0"+ "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\3\6\1\147\33\6\4\0"+ + "\3\6\2\0\1\6\1\151\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\10\6\1\u0162\26\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\14\6\1\u0194\22\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\14\6\1\u0195\22\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\1\6\1\u0196\35\6"+ + "\4\0\1\4\3\6\1\u0197\2\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\1\u0198\1\u0199\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\3\6\1\u0190\4\6\1\u019a\2\6\1\u019b\5\6\1\u019c"+ + "\15\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\1\6\1\u019d"+ + "\35\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\5\6\1\u019e"+ + "\31\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\21\6\1\u010f"+ + "\15\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\10\6\1\u019f"+ + "\26\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\1\u019d\1\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\5\6\1\u01a0\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\14\6\1\u0180\22\6\4\0"+ + "\1\4\4\0\2\6\1\0\4\6\1\u01a1\11\6\1\u01a2"+ + "\1\u01a3\1\u01a4\1\u01a5\15\6\4\0\1\4\3\6\1\u01a6"+ + "\2\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\13\6\1\u01a7\23\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\1\u01a8\1\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\24\6\1\u01a9\12\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\5\6\1\u0181\31\6\4\0"+ + "\1\4\4\0\2\6\1\0\17\6\1\u01aa\17\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\10\6\1\u0182\26\6\4\0"+ - "\1\4\3\6\1\147\2\6\1\0\17\6\11\0\1\4"+ + "\1\4\4\0\2\6\1\0\1\6\1\u01ab\35\6\4\0"+ + "\1\4\6\6\1\0\14\6\1\u01ac\2\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\1\6\1\u0183\35\6\4\0"+ - "\1\4\5\6\1\u0184\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\4\4\0\2\6\1\0\21\6\1\u01ad\15\6\4\0"+ + "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\24\6\1\151\12\6\4\0"+ + "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\1\6\1\151\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\15\6\1\u0185\21\6\4\0\1\4"+ + "\4\0\2\6\1\0\35\6\1\u0110\1\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\4\6\1\u0186\15\6\1\147\14\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\4\0\2\6\1\0\13\6\1\u01ae\23\6\4\0\1\4"+ + "\3\6\1\u01af\2\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\2\6\1\u0187\16\6"+ - "\1\u0188\15\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\14\6"+ - "\1\u0189\22\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\10\6"+ - "\1\u018a\26\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\6\1\4\4\0\2\6\1\0\1\6\1\u01b0\13\6"+ + "\1\151\21\6\4\0\1\4\6\6\1\0\17\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\13\6"+ - "\1\u018b\3\6\1\u010c\17\6\4\0\1\4\3\6\1\u018c"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\2\6"+ + "\1\u01b1\10\6\1\u0190\23\6\4\0\1\4\3\6\1\u01b2"+ "\2\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\1\6\1\u018d\35\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\1\6\1\u018e\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\1\6\1\147\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\10\6\1\u015e\26\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\14\6\1\u018f\22\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\14\6\1\u0190\22\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\1\6\1\u0191\35\6\4\0\1\4"+ - "\3\6\1\u0192\2\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\1\u0193\1\u0194\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\3\6\1\u018b"+ - "\4\6\1\u0195\2\6\1\u0196\5\6\1\u0197\15\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\1\6\1\u0198\35\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\5\6\1\u0199\31\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\21\6\1\u010b\15\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\10\6\1\u019a\26\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\1\u0198\1\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\5\6\1\u019b\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\4\0\2\6\1\0\2\6\1\u01b3\2\6\1\u01b4\1\u01b5"+ + "\5\6\1\u01b6\22\6\4\0\1\4\5\6\1\u01b7\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\1\u01b8"+ + "\1\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\14\6\1\u01b9\22\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\4\6\1\u019c\11\6\1\u019d\1\u019e\1\u019f"+ - "\1\u01a0\15\6\4\0\1\4\3\6\1\u01a1\2\6\1\0"+ + "\2\6\1\0\21\6\1\u0197\15\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\6\1\u01ba\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\13\6\1\u01a2\23\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\1\u01a3"+ - "\1\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\24\6\1\u01a4\12\6\4\0\1\4\6\6"+ + "\1\0\15\6\1\u01bb\21\6\4\0\1\4\5\6\1\u01bc"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\17\6\1\u01a5\17\6\4\0\1\4\6\6"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\24\6\1\u0161\12\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\5\6\1\u01bd\31\6\4\0\1\4\3\6\1\u01be\2\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\1\6\1\u01a6\35\6\4\0\1\4\6\6"+ - "\1\0\14\6\1\u01a7\2\6\11\0\1\4\2\6\2\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\20\6\1\u01bf\10\6\1\151\5\6\4\0\1\4\3\6"+ + "\1\151\2\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\4\4\0\2\6\1\0\13\6\1\u01c0\5\6\1\151"+ + "\15\6\4\0\1\4\3\6\1\151\2\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\13\6\1\u01c1\23\6\4\0\1\4\5\6\1\u01c2\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\u01c3"+ + "\15\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\5\6\1\u01c4\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\2\6\1\u01c5\11\6\1\u01c6\22\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\21\6\1\u01a8\15\6\4\0\1\4\6\6"+ + "\2\6\1\0\14\6\1\u01c7\22\6\21\0\1\u01c8\141\0"+ + "\1\u01c9\177\0\1\u01ca\135\0\1\u01cb\57\0\1\u01cc\141\0"+ + "\1\u01cd\177\0\1\u01ce\135\0\1\u01cf\42\0\1\4\6\6"+ + "\1\0\4\6\1\u01d0\12\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\3\126\1\u0103"+ + "\1\126\1\u0103\1\126\1\0\5\126\1\130\4\126\1\131"+ + "\4\126\11\0\1\126\1\u0103\1\126\2\0\2\126\1\u0103"+ + "\2\0\1\131\1\130\1\0\1\126\1\0\3\126\4\0"+ + "\2\126\1\0\7\126\1\u0103\17\126\2\u0103\4\126\2\u0103"+ + "\7\0\1\u0103\1\0\1\u0103\33\0\1\u0103\5\0\1\u0103"+ + "\30\0\1\u0103\17\0\2\u0103\4\0\2\u0103\4\0\3\126"+ + "\1\u01d1\1\126\1\u01d1\1\126\1\u01d2\17\126\10\0\1\u01d2"+ + "\1\126\1\u01d1\1\126\2\0\2\126\1\u01d1\2\0\2\126"+ + "\1\0\1\126\1\0\3\126\4\0\2\126\1\0\7\126"+ + "\1\u01d1\17\126\2\u01d1\4\126\2\u01d1\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\24\6\1\147\12\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\1\6\1\147\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\35\6\1\u010c\1\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\13\6\1\u01a9\23\6\4\0\1\4\3\6\1\u01aa"+ - "\2\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\1\6\1\u01ab\13\6\1\147\21\6"+ + "\2\6\1\0\5\6\1\u01d3\6\6\1\u01d4\22\6\4\0"+ + "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\10\6\1\u01d5\26\6\4\0"+ + "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\3\6\1\u01d6\12\6\1\100"+ + "\20\6\4\0\1\4\5\6\1\u01d7\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\2\6\1\u01ac\10\6"+ - "\1\u018b\23\6\4\0\1\4\3\6\1\u01ad\2\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\2\6\1\u01ae\2\6\1\u01af\1\u01b0\5\6\1\u01b1"+ - "\22\6\4\0\1\4\5\6\1\u01b2\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\1\u01b3\1\6\1\0"+ + "\1\6\1\4\4\0\2\6\1\0\24\6\1\u01d8\12\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\5\6\1\u01d3\31\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\1\u01d9\1\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\5\6\1\u01da\31\6\4\0"+ + "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\13\6\1\151\23\6\4\0"+ + "\1\4\6\6\1\0\3\6\1\u01db\4\6\1\u01dc\6\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\7\6\1\u01dd\7\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\14\6\1\u01b4\22\6\4\0\1\4\6\6\1\0\17\6"+ + "\37\6\4\0\1\4\6\6\1\0\1\6\1\u01de\15\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\21\6\1\u0192\15\6\4\0\1\4\6\6\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\1\6\1\u01b5"+ + "\37\6\4\0\1\4\6\6\1\0\6\6\1\u01df\10\6"+ + "\11\0\1\4\2\6\2\0\1\46\2\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\15\6"+ - "\1\u01b6\21\6\4\0\1\4\5\6\1\u01b7\1\0\17\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\1\u01e0"+ + "\36\6\4\0\1\4\6\6\1\0\12\6\1\u01e1\4\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\24\6\1\u015d"+ - "\12\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\5\6\1\u01b8"+ - "\31\6\4\0\1\4\3\6\1\u01b9\2\6\1\0\17\6"+ + "\37\6\4\0\1\4\6\6\1\0\10\6\1\u01dc\6\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\20\6\1\u01ba"+ - "\10\6\1\147\5\6\4\0\1\4\3\6\1\147\2\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\13\6\1\u01bb\5\6\1\147\15\6\4\0"+ - "\1\4\3\6\1\147\2\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\13\6\1\u01bc"+ - "\23\6\4\0\1\4\5\6\1\u01bd\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\14\6"+ - "\1\u01be\22\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\37\6\4\0\1\4\6\6\1\0\10\6\1\u01e2\6\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\4\6\1\151\12\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\5\6\1\u01e3\11\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\1\6\1\u01e4\15\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\10\6\1\u0144\6\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\16\6\1\u01e5\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\14\6"+ - "\1\u01bf\22\6\21\0\1\u01c0\141\0\1\u01c1\177\0\1\u01c2"+ - "\135\0\1\u01c3\57\0\1\u01c4\141\0\1\u01c5\177\0\1\u01c6"+ - "\135\0\1\u01c7\42\0\1\4\6\6\1\0\4\6\1\u01c8"+ - "\12\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\3\124\1\377\1\124\1\377\1\124"+ - "\1\0\5\124\1\126\4\124\1\127\4\124\11\0\1\124"+ - "\1\377\1\124\2\0\2\124\1\377\2\0\1\127\1\126"+ - "\1\0\1\124\1\0\3\124\4\0\2\124\1\0\7\124"+ - "\1\377\17\124\2\377\4\124\2\377\7\0\1\377\1\0"+ - "\1\377\33\0\1\377\5\0\1\377\30\0\1\377\17\0"+ - "\2\377\4\0\2\377\4\0\3\124\1\u01c9\1\124\1\u01c9"+ - "\1\124\1\u01ca\17\124\10\0\1\u01ca\1\124\1\u01c9\1\124"+ - "\2\0\2\124\1\u01c9\2\0\2\124\1\0\1\124\1\0"+ - "\3\124\4\0\2\124\1\0\7\124\1\u01c9\17\124\2\u01c9"+ - "\4\124\2\u01c9\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\5\6"+ - "\1\u01cb\6\6\1\u01cc\22\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\10\6\1\u01cd\26\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\3\6\1\u01ce\12\6\1\100\20\6\4\0\1\4"+ - "\5\6\1\u01cf\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\1\6\1\151\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\1\6\1\u01e6\15\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\7\6\1\220\7\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\12\6\1\u01e7\4\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\1\6\1\u01e8\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\1\u01e9\1\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\1\6\1\u0144\15\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\1\6\1\u01ea\15\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\10\6\1\u01eb\6\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\24\6\1\u01d0\12\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\5\6\1\u01cb\31\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\1\u01d1\1\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\1\151\1\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\11\6\1\u01ec\5\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\5\6\1\u01d2\31\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\13\6\1\147\23\6\4\0\1\4\6\6\1\0"+ - "\3\6\1\u01d3\4\6\1\u01d4\6\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\7\6\1\u01d5\7\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\1\6\1\u01d6\15\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\6\6\1\u01d7\10\6\11\0\1\4\2\6"+ - "\2\0\1\46\2\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\6"+ + "\1\u0152\1\0\37\6\4\0\1\4\6\6\1\0\6\6"+ + "\1\u01ed\4\6\1\u01ee\3\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\1\u01d8\36\6\4\0\1\4"+ - "\6\6\1\0\12\6\1\u01d9\4\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\10\6\1\u01d4\6\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\10\6\1\u01da\6\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\4\6\1\147\12\6\11\0\1\4\2\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\6\6\1\u01ef\10\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\3\6\1\u011e\13\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\1\6\1\u01f0\15\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\7\6\1\u01f1\7\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\1\6\1\u01f2\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\10\6\1\u01f3\6\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\1\6\1\u01e5\3\6\1\u01f4\11\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\5\6\1\u01db\11\6\11\0\1\4\2\6"+ + "\6\6\1\0\1\6\1\u01f5\15\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\1\6\1\u01dc\15\6\11\0\1\4\2\6"+ + "\6\6\1\0\10\6\1\u01f6\6\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\10\6\1\u0140\6\6\11\0\1\4\2\6"+ + "\6\6\1\0\1\6\1\u01f7\15\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\16\6\1\u01dd\11\0\1\4\2\6\2\0"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\1\u011e\1\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\4\6\1\u01f8\12\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\1\6\1\147\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\1\6\1\u01de\15\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\7\6\1\216\7\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\12\6\1\u01df\4\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\6"+ - "\1\u01e0\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ - "\11\0\1\4\1\u01e1\1\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\u0140"+ - "\15\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\u01e2"+ - "\15\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\10\6\1\u01e3"+ - "\6\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\1\147\1\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\11\6\1\u01e4\5\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\1\6\1\u014e\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\6\6\1\u01e5\10\6\11\0"+ + "\1\0\11\6\1\u01f9\5\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\3\6\1\u01fa\13\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\1\u01fb\14\6\1\u013e\1\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\26\6\1\151\10\6"+ + "\4\0\1\4\6\6\1\0\5\6\1\u01fc\11\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\6\6\1\u01e6\10\6\11\0"+ + "\4\0\1\4\6\6\1\0\11\6\1\u01fd\5\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\3\6\1\u011a\13\6\11\0"+ + "\4\0\1\4\6\6\1\0\6\6\1\223\10\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\1\6\1\u01e7\15\6\11\0"+ + "\4\0\1\4\6\6\1\0\6\6\1\u01fe\10\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\7\6\1\u01e8\7\6\11\0"+ + "\4\0\1\4\6\6\1\0\1\6\1\151\15\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\1\6\1\u01e9\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\10\6\1\u01ea\6\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\1\6\1\u01dd\3\6\1\u01eb\11\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\1\6\1\u01ec\15\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\10\6\1\u01ed\6\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\1\6\1\u01ee\15\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\1\u011a\1\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\4\6\1\u01ef\12\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\11\6\1\u01f0\5\6\11\0"+ + "\4\0\1\4\6\6\1\0\11\6\1\u01ff\5\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\3\6\1\u01f1\13\6\11\0"+ + "\4\0\1\4\6\6\1\0\4\6\1\u0200\4\6\1\u01f9"+ + "\5\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\7\6\1\u0201"+ + "\7\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\4\6\1\u011e"+ + "\12\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\1\6\1\u0202\1\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\7\6\1\151"+ + "\7\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\1\u01f2\14\6\1\u013a\1\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\26\6\1\147\10\6\4\0\1\4\6\6\1\0\5\6"+ - "\1\u01f3\11\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\11\6"+ - "\1\u01f4\5\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\6\6"+ - "\1\221\10\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\6\6"+ - "\1\u01f5\10\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\6"+ - "\1\147\15\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\11\6"+ - "\1\u01f6\5\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\4\6"+ - "\1\u01f7\4\6\1\u01f0\5\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\7\6\1\u01f8\7\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\4\6\1\u011a\12\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\1\6\1\u01f9"+ - "\1\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\7\6\1\147\7\6\11\0\1\4\2\6\2\0"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\23\6"+ + "\1\u0203\13\6\4\0\1\4\6\6\1\0\1\u0204\12\6"+ + "\1\u0205\2\6\1\u0206\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\7\6\1\u01d0\27\6\4\0\1\4\6\6\1\0"+ + "\4\6\1\u0127\12\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\14\6\1\u0207\2\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\6\6\1\u0127\10\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\7\6\1\u0208\7\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\4\6\1\u0209\12\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\12\6\1\u020a\4\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\13\6\1\u01d0\3\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\3\6\1\u020b\13\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\12\6\1\u020c\4\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\6"+ + "\1\u020d\1\0\37\6\4\0\1\4\6\6\1\0\14\6"+ + "\1\u0120\2\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\33\u0153\1\240\7\u0153\1\0"+ + "\120\u0153\3\236\1\u0157\4\236\3\u0153\1\0\75\u0153\1\236"+ + "\25\u0153\1\u0154\5\u0153\1\236\1\u0153\1\0\3\u0153\1\236"+ + "\30\u0153\1\236\17\u0153\2\236\5\u0153\1\236\4\u0153\33\0"+ + "\1\u0154\100\0\5\u0153\1\u0156\25\u0153\1\u0154\5\u0153\1\u0156"+ + "\1\u0153\1\0\3\u0153\1\u0156\30\u0153\1\u0156\17\u0153\2\u0156"+ + "\5\u0153\1\u0156\7\u0153\4\u020e\1\u0153\3\u020e\6\u0153\1\u020e"+ + "\2\u0153\1\u020e\6\u0153\1\240\5\u0153\1\u020e\1\u0153\1\0"+ + "\2\u0153\2\u020e\5\u0153\1\u020e\14\u0153\2\u020e\1\u0153\1\u020e"+ + "\2\u0153\1\u020e\17\u0153\2\u020e\4\u0153\2\u020e\4\u0153\3\243"+ + "\4\u020f\1\243\3\u020f\6\243\1\u020f\2\243\1\u020f\13\243"+ + "\1\u015b\1\u020f\2\243\1\u015c\1\243\2\u020f\5\243\1\u020f"+ + "\14\243\2\u020f\1\243\1\u020f\2\243\1\u020f\17\243\2\u020f"+ + "\4\243\2\u020f\47\243\1\0\70\243\1\4\6\6\1\0"+ + "\12\6\1\u013e\4\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\4\6\1\u0210\3\6\1\u0211\6\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\3\126"+ + "\4\u015f\1\0\3\u015f\2\126\1\u0212\3\126\1\u015f\1\u0213"+ + "\1\126\1\u015f\2\126\11\0\1\126\1\u015f\1\126\2\0"+ + "\1\126\2\u015f\2\0\1\u0213\1\u0212\1\0\1\u015f\1\0"+ + "\3\126\4\0\2\126\1\0\1\126\2\u015f\1\126\1\u015f"+ + "\2\126\1\u015f\17\126\2\u015f\4\126\2\u015f\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\22\6\1\u0214\14\6\4\0\1\4"+ + "\5\6\1\u019d\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\23\6\1\u01fa\13\6\4\0\1\4\6\6"+ - "\1\0\1\u01fb\12\6\1\u01fc\2\6\1\u01fd\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\7\6\1\u01c8\27\6\4\0"+ - "\1\4\6\6\1\0\4\6\1\u0123\12\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\14\6\1\u01fe\2\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\6\6\1\u0123\10\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\7\6\1\u01ff\7\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\4\6\1\u0200\12\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\12\6\1\u0201\4\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\13\6\1\u01c8\3\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\3\6\1\u0202\13\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\12\6\1\u0203\4\6\11\0\1\4"+ + "\2\6\1\0\15\6\1\151\21\6\4\0\1\4\5\6"+ + "\1\u0215\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\5\6\1\u019d\31\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\21\6\1\u0216\15\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\1\6"+ + "\1\u0217\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\5\6\1\u0218\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\7\4\1\0\2\4\1\266\14\4"+ + "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ + "\1\0\3\4\4\0\2\4\1\0\37\4\4\0\7\4"+ + "\1\0\1\u0219\16\4\11\0\3\4\2\0\3\4\2\0"+ + "\2\4\1\0\1\4\1\0\3\4\4\0\2\4\1\0"+ + "\37\4\4\0\7\4\1\0\3\4\1\u021a\2\4\1\u021b"+ + "\10\4\11\0\3\4\2\0\3\4\2\0\2\4\1\0"+ + "\1\4\1\0\3\4\4\0\2\4\1\0\37\4\4\0"+ + "\7\4\1\0\7\4\1\u021c\7\4\11\0\3\4\2\0"+ + "\3\4\2\0\2\4\1\0\1\4\1\0\3\4\4\0"+ + "\2\4\1\0\37\4\4\0\7\4\1\0\1\u021d\3\4"+ + "\1\u016f\12\4\11\0\3\4\2\0\3\4\2\0\2\4"+ + "\1\0\1\4\1\0\3\4\4\0\2\4\1\0\37\4"+ + "\4\0\7\4\1\0\11\4\1\u021e\5\4\11\0\3\4"+ + "\2\0\3\4\2\0\2\4\1\0\1\4\1\0\3\4"+ + "\4\0\2\4\1\0\37\4\4\0\7\4\1\0\4\4"+ + "\1\u021b\12\4\11\0\3\4\2\0\3\4\2\0\2\4"+ + "\1\0\1\4\1\0\3\4\4\0\2\4\1\0\37\4"+ + "\4\0\7\4\1\0\1\u021d\16\4\11\0\3\4\2\0"+ + "\3\4\2\0\2\4\1\0\1\4\1\0\3\4\4\0"+ + "\2\4\1\0\37\4\4\0\7\4\1\0\14\4\1\u021f"+ + "\2\4\11\0\3\4\2\0\3\4\2\0\2\4\1\0"+ + "\1\4\1\0\3\4\4\0\2\4\1\0\37\4\15\0"+ + "\1\u0220\136\0\1\u0221\1\u0222\1\0\1\u0223\126\0\1\u0224"+ + "\1\0\1\u0225\132\0\1\u0226\134\0\1\u0227\136\0\1\u0228"+ + "\114\0\1\4\6\6\1\0\7\6\1\u0229\7\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\1\6\1\u022a\15\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\16\6\1\151\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\1\6\1\u0204\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\14\6\1\u011c\2\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\33\u014f"+ - "\1\236\7\u014f\1\0\120\u014f\3\234\1\u0153\4\234\3\u014f"+ - "\1\0\75\u014f\1\234\25\u014f\1\u0150\5\u014f\1\234\1\u014f"+ - "\1\0\3\u014f\1\234\30\u014f\1\234\17\u014f\2\234\5\u014f"+ - "\1\234\4\u014f\33\0\1\u0150\100\0\5\u014f\1\u0152\25\u014f"+ - "\1\u0150\5\u014f\1\u0152\1\u014f\1\0\3\u014f\1\u0152\30\u014f"+ - "\1\u0152\17\u014f\2\u0152\5\u014f\1\u0152\7\u014f\4\u0205\1\u014f"+ - "\3\u0205\6\u014f\1\u0205\2\u014f\1\u0205\6\u014f\1\236\5\u014f"+ - "\1\u0205\1\u014f\1\0\2\u014f\2\u0205\5\u014f\1\u0205\14\u014f"+ - "\2\u0205\1\u014f\1\u0205\2\u014f\1\u0205\17\u014f\2\u0205\4\u014f"+ - "\2\u0205\4\u014f\3\241\4\u0206\1\241\3\u0206\6\241\1\u0206"+ - "\2\241\1\u0206\13\241\1\u0157\1\u0206\2\241\1\u0158\1\241"+ - "\2\u0206\5\241\1\u0206\14\241\2\u0206\1\241\1\u0206\2\241"+ - "\1\u0206\17\241\2\u0206\4\241\2\u0206\47\241\1\0\70\241"+ - "\1\4\6\6\1\0\12\6\1\u013a\4\6\11\0\1\4"+ + "\1\4\6\6\1\0\4\6\1\u022b\12\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\4\6\1\u0207\3\6\1\u0208\6\6"+ + "\1\4\6\6\1\0\10\6\1\u022c\3\6\1\u022d\2\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\3\124\4\u015b\1\0\3\u015b\2\124\1\u0209"+ - "\3\124\1\u015b\1\u020a\1\124\1\u015b\2\124\11\0\1\124"+ - "\1\u015b\1\124\2\0\1\124\2\u015b\2\0\1\u020a\1\u0209"+ - "\1\0\1\u015b\1\0\3\124\4\0\2\124\1\0\1\124"+ - "\2\u015b\1\124\1\u015b\2\124\1\u015b\17\124\2\u015b\4\124"+ - "\2\u015b\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\22\6\1\u020b"+ - "\14\6\4\0\1\4\5\6\1\u0198\1\0\17\6\11\0"+ + "\37\6\4\0\1\4\6\6\1\0\4\6\1\u022e\11\6"+ + "\1\u0208\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\11\6\1\u022f"+ + "\5\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\3\6\1\u0230"+ + "\13\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\u0231"+ + "\15\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\5\6\1\u0232"+ + "\11\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\15\6\1\147\21\6"+ - "\4\0\1\4\5\6\1\u020c\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\5\6\1\u0198\31\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\21\6\1\u020d\15\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\1\6\1\u020e\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\5\6\1\u020f\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\7\4\1\0"+ - "\2\4\1\264\14\4\11\0\3\4\2\0\3\4\2\0"+ - "\2\4\1\0\1\4\1\0\3\4\4\0\2\4\1\0"+ - "\37\4\4\0\7\4\1\0\1\u0210\16\4\11\0\3\4"+ - "\2\0\3\4\2\0\2\4\1\0\1\4\1\0\3\4"+ - "\4\0\2\4\1\0\37\4\4\0\7\4\1\0\3\4"+ - "\1\u0211\2\4\1\u0212\10\4\11\0\3\4\2\0\3\4"+ - "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\37\4\4\0\7\4\1\0\7\4\1\u0213\7\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\37\4\4\0\7\4"+ - "\1\0\1\u0214\3\4\1\u016b\12\4\11\0\3\4\2\0"+ - "\3\4\2\0\2\4\1\0\1\4\1\0\3\4\4\0"+ - "\2\4\1\0\37\4\4\0\7\4\1\0\11\4\1\u0215"+ - "\5\4\11\0\3\4\2\0\3\4\2\0\2\4\1\0"+ - "\1\4\1\0\3\4\4\0\2\4\1\0\37\4\4\0"+ - "\7\4\1\0\4\4\1\u0212\12\4\11\0\3\4\2\0"+ - "\3\4\2\0\2\4\1\0\1\4\1\0\3\4\4\0"+ - "\2\4\1\0\37\4\4\0\7\4\1\0\1\u0214\16\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\37\4\4\0\7\4"+ - "\1\0\14\4\1\u0216\2\4\11\0\3\4\2\0\3\4"+ - "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\37\4\15\0\1\u0217\136\0\1\u0218\1\u0219\1\0"+ - "\1\u021a\126\0\1\u021b\1\0\1\u021c\132\0\1\u021d\134\0"+ - "\1\u021e\136\0\1\u021f\114\0\1\4\6\6\1\0\7\6"+ - "\1\u0220\7\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\6"+ - "\1\u0221\15\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\16\6"+ - "\1\147\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\26\6"+ + "\1\u0233\10\6\4\0\1\4\6\6\1\0\15\6\1\u0234"+ + "\1\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\3\6\1\u0235"+ + "\13\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\7\6"+ + "\1\u0236\27\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\13\6"+ + "\1\u0190\23\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\3\6"+ + "\1\u0190\33\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\1\6"+ + "\1\u0237\35\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\13\6"+ + "\1\u0238\23\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\10\6"+ + "\1\u0239\26\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\5\6"+ + "\1\u023a\5\6\1\u023b\23\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\4\6\1\u0222"+ - "\12\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\5\6\1\u023c\31\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\10\6\1\u0223"+ - "\3\6\1\u0224\2\6\11\0\1\4\2\6\2\0\3\6"+ + "\1\0\3\6\1\u023d\33\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\3\6\1\u023e\14\6\1\u023f\16\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\4\6\1\u0225\11\6\1\u01ff\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\11\6\1\u0226\5\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\3\6\1\u0227\13\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\1\6\1\u0228\15\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\5\6\1\u0229\11\6\11\0\1\4\2\6\2\0"+ + "\4\0\2\6\1\0\4\6\1\u0240\32\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\15\6\1\u01bf\21\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\6\6\1\151\30\6\4\0\1\4"+ + "\5\6\1\u0241\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\26\6\1\u022a\10\6\4\0\1\4\6\6"+ - "\1\0\15\6\1\u022b\1\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\2\6\1\0\10\6\1\u0242\26\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\14\6\1\u0162\22\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\15\6\1\u0243\21\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\6\1\u0244\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\3\6\1\302\33\6\4\0\1\4\5\6\1\151"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\13\6\1\u0162\23\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\4\6\1\u0245\6\6\1\u0246\23\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\10\6\1\u0247\26\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\7\6\1\u022c\27\6\4\0\1\4\6\6"+ + "\2\6\1\0\4\6\1\u0248\32\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\13\6\1\u018b\23\6\4\0\1\4\6\6"+ + "\2\6\1\0\2\6\1\u0249\34\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\3\6\1\u018b\33\6\4\0\1\4\6\6"+ + "\2\6\1\0\10\6\1\151\26\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\1\6\1\u022d\35\6\4\0\1\4\6\6"+ + "\2\6\1\0\3\6\1\u024a\33\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\13\6\1\u022e\23\6\4\0\1\4\6\6"+ + "\2\6\1\0\4\6\1\u024b\32\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\10\6\1\u022f\26\6\4\0\1\4\6\6"+ + "\2\6\1\0\10\6\1\u024c\26\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\5\6\1\u024d\31\6\4\0\1\4\5\6"+ + "\1\u024e\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\5\6\1\u024f"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\5\6\1\u0216\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\1\6"+ + "\1\u0250\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\5\6\1\u0251\31\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\14\6\1\u0252\22\6\4\0\1\4\3\6\1\u0253\2\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\5\6\1\u0230\5\6\1\u0231\23\6\4\0"+ + "\2\6\1\0\17\6\1\u0197\5\6\1\151\11\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\5\6\1\u0232\31\6\4\0"+ + "\1\4\4\0\2\6\1\0\13\6\1\u0254\23\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\3\6\1\u0233\33\6\4\0"+ + "\1\4\4\0\2\6\1\0\4\6\1\u0245\32\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\3\6\1\u0234\33\6\4\0"+ + "\1\4\4\0\2\6\1\0\6\6\1\u0162\30\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\4\6\1\u0235\32\6\4\0"+ + "\1\4\4\0\2\6\1\0\10\6\1\u0255\26\6\4\0"+ + "\1\4\6\6\1\0\7\6\1\u0256\7\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\15\6\1\u01ba\21\6\4\0"+ + "\1\4\4\0\2\6\1\0\15\6\1\u0257\21\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\6\6\1\147\30\6\4\0"+ - "\1\4\5\6\1\u0236\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\3\6\2\0\1\u0258\1\6\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\10\6\1\u0237\26\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\14\6\1\u015e\22\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\15\6\1\u0238\21\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\1\6\1\u0239\1\0\1\6\1\0\1\4\1\6"+ + "\5\6\1\u0259\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\3\6\1\300\33\6\4\0\1\4\5\6"+ - "\1\147\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\2\6\1\0\10\6\1\305\26\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\6\1\u025a\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\13\6\1\u015e\23\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\4\6\1\u023a\6\6\1\u023b\23\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\10\6\1\u023c\26\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\4\6\1\u023d\32\6\4\0\1\4"+ + "\1\0\1\6\1\u025b\3\6\1\u025c\31\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\2\6\1\u023e\34\6\4\0\1\4"+ + "\4\0\2\6\1\0\14\6\1\u025d\22\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\10\6\1\147\26\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\3\6\1\u023f\33\6\4\0\1\4"+ + "\4\0\2\6\1\0\4\6\1\u025e\32\6\4\0\1\4"+ + "\5\6\1\u025f\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\13\6\1\u0260\5\6\1\u0239\15\6\4\0"+ + "\1\4\5\6\1\u0261\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\4\6\1\u0240\32\6\4\0\1\4"+ + "\4\0\2\6\1\0\13\6\1\u0262\23\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\10\6\1\u0241\26\6\4\0\1\4"+ + "\4\0\2\6\1\0\21\6\1\151\15\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\5\6\1\u0242\31\6\4\0\1\4"+ - "\5\6\1\u0243\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\5\6"+ - "\1\u0244\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\5\6\1\u020d"+ + "\2\0\1\u0197\1\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\1\6\1\u0245\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\1\u0263\1\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\5\6\1\u0246\31\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\14\6\1\u0247\22\6\4\0\1\4\3\6\1\u0248"+ + "\1\0\20\6\1\u0236\16\6\4\0\1\4\3\6\1\u0264"+ "\2\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\17\6\1\u0192\5\6\1\147\11\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\13\6\1\u0249\23\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\4\6\1\u023a\32\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\6\6\1\u015e\30\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\10\6\1\u024a\26\6"+ - "\4\0\1\4\6\6\1\0\7\6\1\u024b\7\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\15\6\1\u024c\21\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\1\u024d\1\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\5\6\1\u024e\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\10\6\1\303\26\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\1\6\1\u024f\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\1\6\1\u0250\3\6\1\u0251\31\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\14\6\1\u0252\22\6\4\0"+ + "\4\0\2\6\1\0\20\6\1\u0265\1\u0266\15\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\4\6\1\u0253\32\6\4\0"+ - "\1\4\5\6\1\u0254\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\13\6\1\u0255\5\6\1\u022f\15\6"+ - "\4\0\1\4\5\6\1\u0256\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ + "\1\4\4\0\2\6\1\0\14\6\1\u0267\22\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\13\6\1\u0257\23\6\4\0"+ + "\1\4\4\0\2\6\1\0\1\6\1\u01b0\35\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\21\6\1\147\15\6\4\0"+ + "\1\4\4\0\2\6\1\0\15\6\1\u0268\21\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\1\u0192\1\6\1\0\1\6\1\0\1\4"+ + "\3\6\2\0\1\u0269\1\6\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\1\u0258\1\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\20\6\1\u022c\16\6\4\0\1\4\3\6"+ - "\1\u0259\2\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\20\6\1\u025a\1\u025b\15\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\14\6\1\u025c\22\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\1\6\1\u01ab\35\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\15\6\1\u025d\21\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\1\u025e\1\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\25\6\1\u025f\11\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\17\6\1\u0260\17\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\13\6\1\u022c\23\6\15\0"+ - "\1\u01c1\212\0\1\u0261\66\0\1\u0262\164\0\1\u0263\70\0"+ - "\1\u01c5\212\0\1\u0264\66\0\1\u0265\164\0\1\u0266\57\0"+ - "\3\124\1\u01c9\1\124\1\u01c9\1\124\1\0\2\124\1\u0103"+ - "\2\124\1\u0103\11\124\11\0\1\124\1\u01c9\1\124\2\0"+ - "\2\124\1\u01c9\2\0\1\124\1\u0103\1\0\1\u0103\1\0"+ - "\3\124\4\0\2\124\1\0\7\124\1\u01c9\17\124\2\u01c9"+ - "\4\124\2\u01c9\7\0\1\u01c9\1\0\1\u01c9\33\0\1\u01c9"+ - "\5\0\1\u01c9\30\0\1\u01c9\17\0\2\u01c9\4\0\2\u01c9"+ - "\4\0\1\4\3\6\1\u0192\2\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\10\6\1\u0237\26\6\4\0\1\4"+ + "\6\6\1\0\7\6\1\u0207\7\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\21\6\1\u0267\15\6"+ - "\4\0\1\4\5\6\1\u0268\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\5\6\1\u0269\21\6\1\u026a"+ - "\7\6\4\0\1\4\3\6\1\u026b\2\6\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\3\6\1\u026c\10\6\1\u026d\1\u026e\21\6\4\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\14\6\1\u026f\22\6\4\0\1\4"+ + "\4\0\2\6\1\0\25\6\1\u026a\11\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\21\6\1\u0270\15\6\4\0\1\4"+ + "\4\0\2\6\1\0\14\6\1\u026b\22\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\13\6\1\u0271\23\6\4\0\1\4"+ - "\6\6\1\0\16\6\1\u0272\11\0\1\4\2\6\2\0"+ + "\4\0\2\6\1\0\17\6\1\u026c\17\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\13\6\1\u0236\23\6\15\0\1\u01c9"+ + "\212\0\1\u026d\66\0\1\u026e\164\0\1\u026f\70\0\1\u01cd"+ + "\212\0\1\u0270\66\0\1\u0271\164\0\1\u0272\57\0\3\126"+ + "\1\u01d1\1\126\1\u01d1\1\126\1\0\2\126\1\u0107\2\126"+ + "\1\u0107\11\126\11\0\1\126\1\u01d1\1\126\2\0\2\126"+ + "\1\u01d1\2\0\1\126\1\u0107\1\0\1\u0107\1\0\3\126"+ + "\4\0\2\126\1\0\7\126\1\u01d1\17\126\2\u01d1\4\126"+ + "\2\u01d1\7\0\1\u01d1\1\0\1\u01d1\33\0\1\u01d1\5\0"+ + "\1\u01d1\30\0\1\u01d1\17\0\2\u01d1\4\0\2\u01d1\4\0"+ + "\1\4\3\6\1\u0197\2\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\1\u013a\16\6\11\0\1\4\2\6\2\0\3\6"+ + "\1\4\4\0\2\6\1\0\21\6\1\u0273\15\6\4\0"+ + "\1\4\5\6\1\u0274\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\1\6\1\u0273\15\6\11\0\1\4\2\6\2\0\3\6"+ + "\4\0\2\6\1\0\5\6\1\u0275\21\6\1\u0276\7\6"+ + "\4\0\1\4\3\6\1\u0277\2\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\3\6"+ + "\1\u0278\10\6\1\u0279\1\u027a\21\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\14\6\1\u027b\22\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\21\6\1\u027c\15\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\13\6\1\u027d\23\6\4\0\1\4\6\6"+ + "\1\0\16\6\1\u027e\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\1\u0274\2\6\1\u0275\2\6\1\u0276\10\6\11\0\1\4"+ + "\1\u013e\16\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\6"+ + "\1\u027f\15\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\u0280"+ + "\2\6\1\u0281\2\6\1\u0282\10\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\1\6\1\u0283\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\10\6\1\u0284\6\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\1\6\1\u0277\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\10\6\1\u0278\6\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\27\6"+ - "\1\u026a\7\6\4\0\1\4\6\6\1\0\3\6\1\u0279"+ - "\13\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\16\6\1\u027a"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\4\6\1\u027b\12\6"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\27\6\1\u0276"+ + "\7\6\4\0\1\4\6\6\1\0\3\6\1\u0285\13\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\1\221\16\6\11\0"+ + "\37\6\4\0\1\4\6\6\1\0\16\6\1\u0286\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\4\6\1\u01f7\1\6\1\u027c"+ - "\10\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\6"+ - "\1\u027d\1\0\37\6\4\0\1\4\6\6\1\0\14\6"+ - "\1\u011a\2\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ - "\11\0\1\4\1\6\1\u027e\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\5\6\1\155"+ - "\11\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\10\6\1\147"+ - "\6\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\4\0\1\4\6\6\1\0\4\6\1\u0287\12\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\1\223\16\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\4\6\1\u0200\1\6\1\u0288\10\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\1\6\1\u0289"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\14\6\1\u011e"+ + "\2\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\2\6\1\147\2\0\2\6\1\0"+ + "\1\4\1\6\1\u028a\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\7\6\1\u027f\7\6"+ + "\37\6\4\0\1\4\6\6\1\0\5\6\1\157\11\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\4\6\1\177\12\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\1\6\1\u01c8\15\6"+ + "\37\6\4\0\1\4\6\6\1\0\10\6\1\151\6\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\23\6\1\147"+ - "\13\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\1\6\1\u0280\1\0\37\6"+ + "\2\6\2\0\2\6\1\151\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\7\6\1\u028b\7\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\4\6\1\201\12\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\1\6\1\u01d0\15\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\1\147\2\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\1\6\1\u0111\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\11\6\1\u0281\5\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\7\6\1\u01db\7\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\14\6\1\u0282\2\6\11\0\1\4\2\6"+ + "\1\6\1\4\4\0\2\6\1\0\23\6\1\151\13\6"+ + "\4\0\1\4\6\6\1\0\7\6\1\u028c\7\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\1\6\1\u028d\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\1\151\2\6\2\0\2\6\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\1\6\1\u0283\2\0"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\1\6\1\u0115\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\11\6\1\u028e\5\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\1\u01e4\2\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\7\6\1\u0284\7\6\11\0\1\4\2\6\2\0\3\6"+ + "\1\0\7\6\1\u01e3\7\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\14\6\1\u028f\2\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\1\6\1\u0290\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\1\u0285\16\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\10\6"+ - "\1\u0286\6\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\14\6"+ - "\1\u0287\2\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\1\6\1\u0288\1\6\2\0"+ + "\17\6\11\0\1\4\2\6\2\0\1\u01ec\2\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\3\6"+ - "\1\u0289\13\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\12\6"+ - "\1\u028a\4\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\6\6"+ - "\1\u028b\10\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\14\6"+ - "\1\u028c\2\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\14\6"+ - "\1\272\2\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\6"+ - "\1\155\15\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\3\6"+ - "\1\u0115\13\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\12\6"+ - "\1\u01e4\4\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\12\6"+ - "\1\146\4\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\7\6"+ + "\1\u0291\7\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\6"+ - "\1\u0140\6\6\1\u028d\6\6\11\0\1\4\2\6\2\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\u0292"+ + "\16\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\10\6\1\u0293"+ + "\6\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\14\6\1\u0294"+ + "\2\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\1\6\1\u0295\1\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\3\6\1\u0296"+ + "\13\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\12\6\1\u0297"+ + "\4\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\6\6\1\u0298"+ + "\10\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\14\6\1\u0299"+ + "\2\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\14\6\1\274"+ + "\2\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\157"+ + "\15\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\3\6\1\u0119"+ + "\13\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\12\6\1\u01ec"+ + "\4\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\12\6\1\150"+ + "\4\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\u0144"+ + "\6\6\1\u029a\6\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\10\6\1\u029b\6\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\12\6\1\151\24\6\4\0\1\4\6\6\1\0"+ + "\14\6\1\u029c\2\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\151"+ + "\1\6\1\0\7\6\1\151\27\6\4\0\1\4\6\6"+ + "\1\0\6\6\1\u029d\10\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\10\6\1\u028e\6\6\11\0\1\4\2\6\2\0"+ + "\1\0\14\6\1\u0119\2\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\12\6\1\147\24\6\4\0\1\4\6\6"+ - "\1\0\14\6\1\u028f\2\6\11\0\1\4\2\6\2\0"+ + "\1\6\1\u013e\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\u0256"+ + "\1\6\1\0\37\6\4\0\3\u0153\4\236\1\u0153\3\236"+ + "\6\u0153\1\236\2\u0153\1\236\6\u0153\1\240\5\u0153\1\236"+ + "\1\u0153\1\0\2\u0153\2\236\5\u0153\1\236\14\u0153\2\236"+ + "\1\u0153\1\236\2\u0153\1\236\17\u0153\2\236\4\u0153\2\236"+ + "\4\u0153\3\243\4\45\1\243\3\45\6\243\1\45\2\243"+ + "\1\45\13\243\1\u015b\1\45\2\243\1\u015c\1\243\2\45"+ + "\5\243\1\45\14\243\2\45\1\243\1\45\2\243\1\45"+ + "\17\243\2\45\4\243\2\45\4\243\1\4\6\6\1\0"+ + "\10\6\1\u011e\6\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\13\6\1\u029e\3\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\7\126\1\0\12\126"+ + "\1\u029f\4\126\11\0\3\126\2\0\3\126\2\0\1\u029f"+ + "\1\126\1\0\1\126\1\0\3\126\4\0\2\126\1\0"+ + "\37\126\4\0\7\126\1\0\5\126\1\u029f\11\126\11\0"+ + "\3\126\2\0\3\126\2\0\1\126\1\u029f\1\0\1\126"+ + "\1\0\3\126\4\0\2\126\1\0\37\126\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\1\u0240\1\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\10\6\1\u02a0\26\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\1\6\1\u0162\35\6\4\0\1\4\3\6"+ + "\1\302\2\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\1\147\1\6\1\0\7\6\1\147\27\6\4\0\1\4"+ - "\6\6\1\0\6\6\1\u0290\10\6\11\0\1\4\2\6"+ + "\2\6\1\0\3\6\1\u02a1\7\6\1\u0246\1\6\1\u02a2"+ + "\21\6\4\0\7\4\1\0\3\4\1\u021a\13\4\11\0"+ + "\3\4\2\0\3\4\2\0\2\4\1\0\1\4\1\0"+ + "\3\4\4\0\2\4\1\0\37\4\4\0\7\4\1\0"+ + "\2\4\1\u02a3\14\4\11\0\3\4\2\0\3\4\2\0"+ + "\2\4\1\0\1\4\1\0\3\4\4\0\2\4\1\0"+ + "\37\4\4\0\7\4\1\0\1\4\1\u02a3\15\4\11\0"+ + "\3\4\2\0\3\4\2\0\2\4\1\0\1\4\1\0"+ + "\3\4\4\0\2\4\1\0\37\4\4\0\7\4\1\0"+ + "\10\4\1\u02a4\6\4\11\0\3\4\2\0\3\4\2\0"+ + "\2\4\1\0\1\4\1\0\3\4\4\0\2\4\1\0"+ + "\37\4\4\0\7\4\1\0\1\4\1\u021a\15\4\11\0"+ + "\3\4\2\0\3\4\2\0\2\4\1\0\1\4\1\0"+ + "\3\4\4\0\2\4\1\0\37\4\4\0\7\4\1\0"+ + "\5\4\1\u02a5\11\4\11\0\3\4\2\0\3\4\2\0"+ + "\2\4\1\0\1\4\1\0\3\4\4\0\2\4\1\0"+ + "\37\4\4\0\7\4\1\0\15\4\1\u02a6\1\4\11\0"+ + "\3\4\2\0\3\4\2\0\2\4\1\0\1\4\1\0"+ + "\3\4\4\0\2\4\1\0\37\4\16\0\1\u0174\131\0"+ + "\1\u02a7\136\0\1\u02a8\2\0\1\u02a9\134\0\1\u02aa\124\0"+ + "\1\u02ab\3\0\1\u0227\140\0\1\u02ac\126\0\1\u02a9\127\0"+ + "\1\u02ab\147\0\1\u02ad\107\0\1\4\6\6\1\0\14\6"+ + "\1\u02ae\2\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\5\6"+ + "\1\u02af\11\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\11\6"+ + "\1\151\5\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\12\6"+ + "\1\u02b0\4\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\1\6\1\u013e"+ + "\1\0\12\6\1\151\24\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\6"+ + "\1\u02b1\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\1\6\1\u027e"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\4\6\1\u02b2"+ + "\12\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\1\6\1\151\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\1\6\1\u02b3\15\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\1\u02b4\16\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\14\6\1\u0115\2\6\11\0\1\4\2\6"+ + "\1\6\1\4\4\0\1\u02b5\1\6\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\16\6\1\u0208\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\1\6\1\u013a\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\1\u024b\1\6\1\0\37\6\4\0\3\u014f\4\234\1\u014f"+ - "\3\234\6\u014f\1\234\2\u014f\1\234\6\u014f\1\236\5\u014f"+ - "\1\234\1\u014f\1\0\2\u014f\2\234\5\u014f\1\234\14\u014f"+ - "\2\234\1\u014f\1\234\2\u014f\1\234\17\u014f\2\234\4\u014f"+ - "\2\234\4\u014f\3\241\4\45\1\241\3\45\6\241\1\45"+ - "\2\241\1\45\13\241\1\u0157\1\45\2\241\1\u0158\1\241"+ - "\2\45\5\241\1\45\14\241\2\45\1\241\1\45\2\241"+ - "\1\45\17\241\2\45\4\241\2\45\4\241\1\4\6\6"+ - "\1\0\10\6\1\u011a\6\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\13\6\1\u0291\3\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\7\124\1\0"+ - "\12\124\1\u0292\4\124\11\0\3\124\2\0\3\124\2\0"+ - "\1\u0292\1\124\1\0\1\124\1\0\3\124\4\0\2\124"+ - "\1\0\37\124\4\0\7\124\1\0\5\124\1\u0292\11\124"+ - "\11\0\3\124\2\0\3\124\2\0\1\124\1\u0292\1\0"+ - "\1\124\1\0\3\124\4\0\2\124\1\0\37\124\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\1\u0235\1\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\4\0\2\6\1\0\11\6\1\151\25\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\10\6\1\u0293\26\6\4\0\1\4"+ + "\4\0\2\6\1\0\6\6\2\151\27\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\1\6\1\u015e\35\6\4\0\1\4"+ - "\3\6\1\300\2\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\4\0\2\6\1\0\1\6\1\u02b6\35\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\3\6\1\u0294\7\6\1\u023b\1\6"+ - "\1\u0295\21\6\4\0\7\4\1\0\3\4\1\u0211\13\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\37\4\4\0\7\4"+ - "\1\0\2\4\1\u0296\14\4\11\0\3\4\2\0\3\4"+ - "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\37\4\4\0\7\4\1\0\1\4\1\u0296\15\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\37\4\4\0\7\4"+ - "\1\0\10\4\1\u0297\6\4\11\0\3\4\2\0\3\4"+ - "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\37\4\4\0\7\4\1\0\1\4\1\u0211\15\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\37\4\4\0\7\4"+ - "\1\0\5\4\1\u0298\11\4\11\0\3\4\2\0\3\4"+ - "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\37\4\4\0\7\4\1\0\15\4\1\u0299\1\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\37\4\16\0\1\u0170"+ - "\131\0\1\u029a\136\0\1\u029b\2\0\1\u029c\134\0\1\u029d"+ - "\124\0\1\u029e\3\0\1\u021e\140\0\1\u029f\126\0\1\u029c"+ - "\127\0\1\u029e\147\0\1\u02a0\107\0\1\4\6\6\1\0"+ - "\14\6\1\u02a1\2\6\11\0\1\4\2\6\2\0\3\6"+ + "\4\0\2\6\1\0\20\6\1\u02b7\16\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\5\6\1\u02a2\11\6\11\0\1\4\2\6\2\0\3\6"+ + "\4\0\2\6\1\0\5\6\1\u0162\31\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\11\6\1\147\5\6\11\0\1\4\2\6\2\0\3\6"+ + "\4\0\2\6\1\0\13\6\1\306\23\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\12\6\1\u02a3\4\6\11\0\1\4\2\6\2\0\3\6"+ + "\4\0\2\6\1\0\15\6\1\u02b8\21\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\6"+ - "\1\u013a\1\0\12\6\1\147\24\6\4\0\1\4\6\6"+ + "\4\0\2\6\1\0\22\6\1\151\14\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\10\6\1\u02b9\26\6\4\0\1\4"+ + "\5\6\1\u0236\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\1\6\1\u02a4\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\6"+ - "\1\u0272\1\0\37\6\4\0\1\4\6\6\1\0\4\6"+ - "\1\u02a5\12\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\16\6\1\151\20\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ - "\11\0\1\4\1\6\1\147\2\0\3\6\2\0\2\6"+ + "\2\6\1\0\15\6\1\u010c\21\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\4\6\1\u02ba\32\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\14\6\1\u02bb\22\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\5\6\1\u02bc\31\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\1\6\1\353\35\6\4\0\1\4\5\6"+ + "\1\344\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\u02a6"+ - "\15\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\u02bd\35\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\1\u02a7\16\6"+ + "\1\0\14\6\1\u0110\22\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\3\6\1\u02be\33\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\1\u02bf"+ + "\1\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\1\6\1\u02c0\35\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\10\6\1\u0217\26\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\10\6\1\u02c1\26\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\31\6\1\u02c2\5\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\1\6\1\u02c3\35\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\16\6\1\u0240\20\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\1\6\1\u02c4\35\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\2\6\1\u02c5\34\6\4\0\1\4\3\6\1\u02c6\2\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\3\6\1\u02c7\2\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\u02c8"+ + "\16\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\5\6"+ + "\1\151\31\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\1\6\1\344\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\1\u02a8\1\6\1\0\37\6"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\31\6\1\u02c9"+ + "\5\6\4\0\1\4\5\6\1\u02ca\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\11\6\1\147\25\6"+ + "\1\6\1\4\4\0\2\6\1\0\11\6\1\151\3\6"+ + "\1\u0197\21\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\1\u02cb\1\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\13\6\1\u02cc"+ + "\23\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\15\6\1\u0273"+ + "\21\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\31\6\1\151"+ + "\5\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\15\6\1\u02cd"+ + "\21\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\1\6\1\u02ce\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\6\6\2\147\27\6"+ + "\1\6\1\4\4\0\2\6\1\0\4\6\1\151\32\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\1\6\1\u02a9\35\6"+ + "\1\6\1\4\4\0\2\6\1\0\3\6\1\u02cf\33\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\1\260\1\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ + "\1\4\5\6\1\u019d\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\20\6\1\u02aa\16\6"+ + "\1\6\1\4\4\0\2\6\1\0\5\6\1\u02d0\31\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\5\6\1\u015e\31\6"+ + "\1\6\1\4\4\0\2\6\1\0\5\6\1\u02d1\31\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\13\6\1\304\23\6"+ + "\1\6\1\4\4\0\2\6\1\0\1\6\1\u0110\35\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\15\6\1\u02ab\21\6"+ + "\1\6\1\4\4\0\2\6\1\0\6\6\1\u0255\30\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\22\6\1\147\14\6"+ - "\4\0\1\4\5\6\1\u022c\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\16\6\1\147\20\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\15\6\1\u0108\21\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\4\6\1\u02ac\32\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\14\6\1\u02ad\22\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\5\6\1\u02ae\31\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\1\6\1\351\35\6\4\0"+ - "\1\4\5\6\1\342\1\0\17\6\11\0\1\4\2\6"+ + "\1\6\1\4\4\0\2\6\1\0\15\6\1\u0197\21\6"+ + "\4\0\1\4\3\6\1\u02d2\2\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\1\6\1\u02af\35\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\14\6\1\u010c\22\6\4\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\21\6\1\u0239\15\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\6\6\1\u02d3\30\6"+ + "\36\0\1\u02d4\117\0\1\u01c9\51\0\1\u026d\44\0\1\u026f"+ + "\1\u02d5\4\u026f\1\u02d5\17\u026f\3\u02d5\1\u026f\1\u02d5\2\0"+ + "\2\u02d5\1\0\2\u026f\2\0\3\u026f\1\0\1\u02d5\2\u026f"+ + "\1\u02d5\1\u026f\1\0\1\u02d5\1\u026f\5\u02d5\2\u026f\1\u02d5"+ + "\37\u026f\2\0\1\u02d5\33\0\1\u02d6\117\0\1\u01cd\51\0"+ + "\1\u0270\44\0\1\u0272\1\u02d7\4\u0272\1\u02d7\17\u0272\3\u02d7"+ + "\1\u0272\1\u02d7\2\0\2\u02d7\1\0\2\u0272\2\0\3\u0272"+ + "\1\0\1\u02d7\2\u0272\1\u02d7\1\u0272\1\0\1\u02d7\1\u0272"+ + "\5\u02d7\2\u0272\1\u02d7\37\u0272\2\0\1\u02d7\1\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\3\6\1\u02b0\33\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\1\u02b1\1\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\1\6\1\u02b2\35\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\10\6\1\u020e\26\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\10\6\1\u02b3\26\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\31\6\1\u02b4\5\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\1\6\1\u02b5\35\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\16\6\1\u0235\20\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\1\6\1\u02b6\35\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\2\6\1\u02b7\34\6\4\0\1\4\3\6"+ - "\1\u02b8\2\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\3\6"+ - "\1\u02b9\2\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\4\0\2\6\1\0\1\6\1\344\35\6\4\0\1\4"+ + "\5\6\1\302\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\1\u02ba\16\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\5\6\1\147\31\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\1\6"+ - "\1\342\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\u02d8\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\31\6\1\u02bb\5\6\4\0\1\4\5\6\1\u02bc\1\0"+ + "\30\6\1\u01e9\6\6\4\0\1\4\5\6\1\u02d9\1\0"+ "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\11\6"+ - "\1\147\3\6\1\u0192\21\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\1\u02bd"+ + "\1\0\14\6\1\u02da\22\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\1\u02db"+ "\1\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\13\6\1\u02be\23\6\4\0\1\4\6\6\1\0\17\6"+ + "\13\6\1\u02dc\23\6\4\0\1\4\6\6\1\0\17\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\15\6\1\u0267\21\6\4\0\1\4\6\6\1\0\17\6"+ + "\5\6\1\u02dd\31\6\4\0\1\4\6\6\1\0\17\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\31\6\1\147\5\6\4\0\1\4\6\6\1\0\17\6"+ + "\15\6\1\u02ba\21\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\2\6\1\u0161\34\6\4\0\1\4\5\6\1\u0237\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\14\6\1\157"+ + "\2\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\223"+ + "\15\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\u02de"+ + "\1\6\1\u02df\13\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\4\6\1\u02e0\12\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\12\6\1\u02e1\4\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\10\6\1\u02e2\6\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\2\6\1\u02e3\14\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\6"+ + "\1\u028e\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\1\6\1\u0124\1\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\6"+ + "\1\u0207\15\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\3\6"+ + "\1\u02e4\13\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\15\6\1\u02bf\21\6\4\0\1\4\6\6\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\1\6\1\u02c0"+ + "\12\6\1\u02e5\24\6\4\0\1\4\6\6\1\0\10\6"+ + "\1\u02e6\6\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\1\6\1\u02e7"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\u02e8"+ + "\15\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\3\6\1\u02e9"+ + "\13\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\11\6\1\u013e"+ + "\5\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\13\6\1\151"+ + "\3\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\6\6\1\u02ea"+ + "\10\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\1\u02eb\11\6"+ + "\1\u0290\4\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\36\6\1\151\4\0\1\4\6\6\1\0"+ + "\12\6\1\u0142\4\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\4\6\1\223\12\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\1\6\1\u02ec\15\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\4\6\1\u02ed\12\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\5\6\1\210\11\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\5\6\1\u02ee\11\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\6"+ + "\1\u02ef\1\0\37\6\4\0\1\4\6\6\1\0\7\6"+ + "\1\u029b\7\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\1\6\1\u02f0"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\15\6\1\u013e"+ + "\1\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\u02f1"+ + "\15\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\u02f2"+ + "\15\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\4\6"+ - "\1\147\32\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\3\6"+ - "\1\u02c1\33\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\1\256\1\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\5\6\1\u0198\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\5\6"+ - "\1\u02c2\31\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\5\6"+ - "\1\u02c3\31\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\1\6"+ - "\1\u010c\35\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\6\6"+ - "\1\u024a\30\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\15\6"+ - "\1\u0192\21\6\4\0\1\4\3\6\1\u02c4\2\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\u02f3\21\6\4\0\1\4\6\6\1\0\17\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\6\6"+ - "\1\u02c5\30\6\36\0\1\u02c6\117\0\1\u01c1\51\0\1\u0261"+ - "\44\0\1\u0263\1\u02c7\4\u0263\1\u02c7\17\u0263\3\u02c7\1\u0263"+ - "\1\u02c7\2\0\2\u02c7\1\0\2\u0263\2\0\3\u0263\1\0"+ - "\1\u02c7\2\u0263\1\u02c7\1\u0263\1\0\1\u02c7\1\u0263\5\u02c7"+ - "\2\u0263\1\u02c7\37\u0263\2\0\1\u02c7\33\0\1\u02c8\117\0"+ - "\1\u01c5\51\0\1\u0264\44\0\1\u0266\1\u02c9\4\u0266\1\u02c9"+ - "\17\u0266\3\u02c9\1\u0266\1\u02c9\2\0\2\u02c9\1\0\2\u0266"+ - "\2\0\3\u0266\1\0\1\u02c9\2\u0266\1\u02c9\1\u0266\1\0"+ - "\1\u02c9\1\u0266\5\u02c9\2\u0266\1\u02c9\37\u0266\2\0\1\u02c9"+ - "\1\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\1\6\1\342\35\6"+ - "\4\0\1\4\5\6\1\300\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\u02ca\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\14\6"+ + "\1\u02f4\22\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\11\6"+ + "\1\u02f5\25\6\4\0\7\4\1\0\7\4\1\u02a3\7\4"+ + "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ + "\1\0\3\4\4\0\2\4\1\0\37\4\4\0\7\4"+ + "\1\0\12\4\1\u02f6\4\4\11\0\3\4\2\0\3\4"+ + "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ + "\1\0\37\4\4\0\7\4\1\0\16\4\1\u02f7\11\0"+ + "\3\4\2\0\3\4\2\0\2\4\1\0\1\4\1\0"+ + "\3\4\4\0\2\4\1\0\37\4\17\0\1\u02a8\132\0"+ + "\1\u02f8\132\0\1\u02f8\142\0\1\u02f9\124\0\1\u02a8\137\0"+ + "\1\u02fa\143\0\1\u02fb\106\0\1\4\6\6\1\0\7\6"+ + "\1\u02fc\7\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\30\6\1\u01e1\6\6\4\0\1\4\5\6"+ - "\1\u02cb\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\14\6\1\u02cc\22\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\1\u02cd\1\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\14\6"+ + "\1\u02fd\2\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\13\6\1\u02ce\23\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\1\6\1\u02fe\1\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\5\6\1\u02cf\31\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\6"+ + "\1\u02ff\15\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\15\6\1\u02ac\21\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\14\6"+ + "\1\u01c3\2\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\2\6\1\u015d\34\6\4\0\1\4\5\6"+ - "\1\u022d\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\14\6\1\155\2\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\1\u0300"+ + "\5\6\1\151\10\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\1\6\1\221\15\6\11\0\1\4\2\6\2\0\3\6"+ + "\14\6\1\u022d\2\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\1\6\1\u02d0\1\6\1\u02d1\13\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\4\6\1\u02d2\12\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\12\6\1\u02d3\4\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\10\6\1\u02d4\6\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\2\6\1\u02d5\14\6\11\0\1\4\2\6"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\6"+ + "\1\u0301\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\17\6\1\u0197\17\6\4\0\1\4\5\6\1\u0302\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\14\6"+ + "\1\u0303\22\6\4\0\1\4\5\6\1\u0304\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\13\6\1\u0305"+ + "\23\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\1\u0198\1\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\15\6\1\u0306\21\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\1\6\1\u0307\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\1\6\1\326\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\1\6\1\u0281\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\1\6\1\u0120"+ - "\1\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\1\6\1\u01fe\15\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\3\6\1\u02d6\13\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\12\6\1\u02d7\24\6\4\0\1\4\6\6"+ - "\1\0\10\6\1\u02d8\6\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\1\6\1\u02d9\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\3\6\1\u02da\13\6\11\0\1\4\2\6\2\0\3\6"+ + "\4\0\2\6\1\0\10\6\1\u0308\26\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\11\6\1\u013a\5\6\11\0\1\4\2\6\2\0\3\6"+ + "\4\0\2\6\1\0\3\6\1\u0309\33\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\13\6\1\147\3\6\11\0\1\4\2\6\2\0\3\6"+ + "\4\0\2\6\1\0\20\6\1\151\16\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\6\6\1\u02db\10\6\11\0\1\4\2\6\2\0\3\6"+ + "\4\0\2\6\1\0\4\6\1\u0197\32\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\1\u02dc\11\6\1\u0283\4\6\11\0\1\4\2\6\2\0"+ + "\4\0\2\6\1\0\13\6\1\302\23\6\4\0\1\4"+ + "\5\6\1\u030a\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\36\6\1\147\4\0\1\4"+ - "\6\6\1\0\12\6\1\u013e\4\6\11\0\1\4\2\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\3\6"+ + "\1\u030b\2\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\1\u02c2\1\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\36\6\1\151\4\0"+ + "\1\4\5\6\1\u02d9\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\4\6\1\221\12\6\11\0\1\4\2\6"+ + "\6\6\1\0\1\6\1\u02de\15\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\1\6\1\u02dd\15\6\11\0\1\4\2\6"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\5\6\1\u030c\31\6\4\0\1\4"+ + "\3\6\1\u030d\2\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\4\6\1\u02de\12\6\11\0\1\4\2\6"+ + "\1\6\1\4\4\0\2\6\1\0\3\6\1\151\33\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\5\6\1\206\11\6\11\0\1\4\2\6"+ + "\1\6\1\4\4\0\2\6\1\0\2\6\1\u030e\34\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\5\6\1\u02df\11\6\11\0\1\4\2\6"+ + "\1\6\1\4\4\0\2\6\1\0\1\6\1\u01c2\35\6"+ + "\4\0\1\4\5\6\1\u030f\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\1\6\1\u0310\35\6\4\0"+ + "\1\4\5\6\1\u0311\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\1\6\1\u02e0\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\7\6\1\u028e\7\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\1\6\1\u02e1\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\15\6\1\u013a\1\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\1\6\1\u02e2\15\6\11\0\1\4\2\6\2\0\3\6"+ + "\4\0\2\6\1\0\10\6\1\u02d1\26\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\1\6\1\u02e3\15\6\11\0\1\4\2\6\2\0\3\6"+ + "\4\0\2\6\1\0\15\6\1\u0312\21\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\15\6\1\u02e4\21\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\14\6\1\u02e5\22\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\11\6\1\u02e6\25\6\4\0\7\4\1\0\7\4"+ - "\1\u0296\7\4\11\0\3\4\2\0\3\4\2\0\2\4"+ - "\1\0\1\4\1\0\3\4\4\0\2\4\1\0\37\4"+ - "\4\0\7\4\1\0\12\4\1\u02e7\4\4\11\0\3\4"+ - "\2\0\3\4\2\0\2\4\1\0\1\4\1\0\3\4"+ - "\4\0\2\4\1\0\37\4\4\0\7\4\1\0\16\4"+ - "\1\u02e8\11\0\3\4\2\0\3\4\2\0\2\4\1\0"+ - "\1\4\1\0\3\4\4\0\2\4\1\0\37\4\17\0"+ - "\1\u029b\132\0\1\u02e9\132\0\1\u02e9\142\0\1\u02ea\124\0"+ - "\1\u029b\137\0\1\u02eb\143\0\1\u02ec\106\0\1\4\6\6"+ - "\1\0\7\6\1\u02ed\7\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\14\6\1\u02ee\2\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\1\6\1\u02ef"+ - "\1\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\1\6\1\u02f0\15\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\14\6\1\u02f1\2\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\1\u02f2\5\6\1\147\10\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\14\6\1\u0224\2\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\4\0\2\6\1\0\1\6\1\u025b\35\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\1\6\1\u02f3\1\0\37\6\4\0\1\4\6\6"+ + "\4\0\2\6\1\0\15\6\1\u0313\21\6\36\0\1\u026f"+ + "\133\0\1\u0272\101\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\11\6"+ + "\1\u0314\7\6\1\u0315\1\u0316\14\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\17\6\1\u0192\17\6\4\0\1\4\5\6"+ - "\1\u02f4\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\1\6\1\u0317\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\14\6\1\u02f5\22\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\13\6\1\u02f6\23\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\1\u0193"+ - "\1\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\15\6\1\u02f7\21\6\4\0\1\4\6\6\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\1\6\1\u02f8"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\1\151\1\0\1\4\1\6\1\4\4\0\2\6"+ "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\1\6\1\324\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\10\6\1\u02f9"+ - "\26\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\3\6\1\u02fa"+ - "\33\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\20\6\1\147"+ - "\16\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\4\6\1\u0192"+ - "\32\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\13\6\1\300"+ - "\23\6\4\0\1\4\5\6\1\u02fb\1\0\17\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\3\6\1\u02fc\2\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\1\u02b4\1\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\36\6\1\147\4\0\1\4\5\6\1\u02cb\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\1\6\1\u02d0\15\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\5\6\1\u02fd"+ - "\31\6\4\0\1\4\3\6\1\u02fe\2\6\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\3\6\1\147\33\6\4\0\1\4\6\6\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\2\6\1\u02ff\34\6\4\0\1\4\6\6\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\1\6\1\u0300\35\6\4\0\1\4\5\6\1\u0301\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\2\6"+ + "\1\u0318\34\6\4\0\1\4\6\6\1\0\17\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\1\6"+ - "\1\u0302\35\6\4\0\1\4\5\6\1\u0303\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\10\6\1\u02c3"+ - "\26\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\15\6\1\u0304"+ - "\21\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\11\6"+ + "\1\u0314\7\6\1\u0315\1\u0316\1\6\1\u0319\12\6\4\0"+ + "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\13\6\1\u010e\23\6\4\0"+ + "\1\4\6\6\1\0\5\6\1\u031a\11\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\1\6\1\u0250"+ - "\35\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\2\6\1\151\14\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\15\6\1\u0305"+ - "\21\6\36\0\1\u0263\133\0\1\u0266\101\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\11\6\1\u0306\7\6\1\u0307\1\u0308\14\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\1\6\1\u0309\1\0\1\6\1\0"+ "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\147\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\1\4\6\6\1\0\16\6\1\u031b\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\1\u031c\11\6\1\u031d"+ + "\10\6\1\u031e\13\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\1\6\1\u031f\1\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\2\6\1\u030a\34\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\4\6"+ + "\1\u0116\12\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\11\6\1\u0306\7\6\1\u0307\1\u0308\1\6"+ - "\1\u030b\12\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\13\6"+ - "\1\u010a\23\6\4\0\1\4\6\6\1\0\5\6\1\u030c"+ - "\11\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\2\6\1\147"+ - "\14\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\16\6"+ + "\1\u031b\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\16\6\1\u030d"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\1\u030e\11\6\1\u030f\10\6\1\u0310\13\6\4\0\1\4"+ - "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\1\6"+ - "\1\u0311\1\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\0\12\6\1\u031d\10\6\1\u031e\13\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\33\6\1\u013e\3\6\4\0\1\4"+ + "\6\6\1\0\13\6\1\u013e\3\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\4\6\1\u0112\12\6\11\0\1\4\2\6"+ + "\6\6\1\0\2\6\1\u0152\14\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\6\6\1\0\16\6\1\u030d\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\12\6\1\u030f\10\6\1\u0310"+ - "\13\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\33\6\1\u013a"+ - "\3\6\4\0\1\4\6\6\1\0\13\6\1\u013a\3\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\2\6\1\u014e\14\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\10\6\1\u0226\6\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\1\6\1\u0312\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\1\6\1\u014e\15\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\10\6\1\u0313\6\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\6\6\1\0\10\6\1\u022f\6\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\1\6\1\u0314\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\15\6\1\147\1\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\14\6\1\161\2\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\1\6\1\u0315\15\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\3\6\1\u0316\13\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\7\6\1\u0317\7\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\7\6\1\u0318\7\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\5\6\1\u0253\31\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\11\6\1\u0320\5\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\1\6\1\u0321\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\1\6\1\u0152\15\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\32\6\1\u0192\4\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\10\6\1\u0322\6\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\20\6\1\u0192\16\6\4\0"+ - "\7\4\1\0\1\u0212\16\4\11\0\3\4\2\0\3\4"+ - "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\37\4\4\0\7\4\1\0\14\4\1\u0296\2\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\37\4\23\0\1\u02e9"+ - "\136\0\1\u0319\137\0\1\u031a\105\0\1\4\6\6\1\0"+ - "\11\6\1\u031b\5\6\11\0\1\4\2\6\2\0\3\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\1\6\1\u0323\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\15\6\1\151\1\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\12\6\1\u0120\24\6\4\0\1\4\6\6\1\0"+ - "\5\6\1\u013a\11\6\11\0\1\4\2\6\2\0\3\6"+ + "\14\6\1\163\2\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\15\6\1\u0120\1\6\11\0\1\4\2\6\2\0\3\6"+ + "\1\6\1\u0324\15\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\7\6\1\u01fe\7\6\11\0\1\4\2\6\2\0\3\6"+ + "\3\6\1\u0325\13\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\14\6\1\u031c\2\6\11\0\1\4\2\6\2\0\3\6"+ + "\7\6\1\u0326\7\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ - "\1\6\1\u031d\15\6\11\0\1\4\2\6\2\0\3\6"+ + "\7\6\1\u0327\7\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\10\6\1\u031e\26\6\4\0\1\4\6\6\1\0"+ + "\1\0\5\6\1\u025e\31\6\4\0\1\4\6\6\1\0"+ "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\15\6\1\u031f\21\6\4\0\1\4\6\6\1\0"+ + "\1\0\32\6\1\u0197\4\6\4\0\1\4\6\6\1\0"+ "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\17\6\1\147\17\6\4\0\1\4\5\6\1\u0320"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\1\0\20\6\1\u0197\16\6\4\0\7\4\1\0\1\u021b"+ + "\16\4\11\0\3\4\2\0\3\4\2\0\2\4\1\0"+ + "\1\4\1\0\3\4\4\0\2\4\1\0\37\4\4\0"+ + "\7\4\1\0\14\4\1\u02a3\2\4\11\0\3\4\2\0"+ + "\3\4\2\0\2\4\1\0\1\4\1\0\3\4\4\0"+ + "\2\4\1\0\37\4\23\0\1\u02f8\136\0\1\u0328\137\0"+ + "\1\u0329\105\0\1\4\6\6\1\0\11\6\1\u032a\5\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\12\6\1\u0124"+ + "\24\6\4\0\1\4\6\6\1\0\5\6\1\u013e\11\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\1\6\1\253\35\6\4\0\1\4\6\6\1\0\17\6"+ + "\37\6\4\0\1\4\6\6\1\0\15\6\1\u0124\1\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\4\6\1\u0321\32\6\4\0\1\4\5\6\1\u01ba\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\15\6"+ - "\1\u0322\21\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\37\6\4\0\1\4\6\6\1\0\14\6\1\u032b\2\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\1\6\1\u032c\15\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\10\6\1\u032d"+ + "\26\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\15\6\1\u032e"+ + "\21\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\4\6\1\u032f"+ + "\32\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\17\6\1\151"+ + "\17\6\4\0\1\4\5\6\1\u0330\1\0\17\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\5\6"+ - "\1\u0323\31\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\u01ba"+ "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\1\6\1\u0324\35\6"+ + "\1\6\1\4\4\0\2\6\1\0\1\6\1\255\35\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\1\6\1\u0192\1\0\1\6\1\0"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\4\6\1\u0331\32\6"+ + "\4\0\1\4\5\6\1\u01bf\1\0\17\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\10\6\1\u022d\26\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\17\6\1\u015d\17\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\11\6\1\u015d\25\6\4\0"+ + "\1\4\4\0\2\6\1\0\15\6\1\u0332\21\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\10\6\1\u0325\26\6\4\0"+ + "\1\4\4\0\2\6\1\0\5\6\1\u0333\31\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\14\6\1\u0326\22\6\4\0"+ - "\1\4\5\6\1\u0327\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ - "\5\6\1\324\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\3\6\2\0\2\6\1\0\1\u01bf\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\5\6\1\u0328\31\6\4\0\1\4\6\6"+ + "\2\6\1\0\1\6\1\u0334\35\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\1\u0329\1\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\1\6\1\u0197\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\15\6\1\u032a\21\6\4\0\1\4\3\6\1\u032b"+ - "\2\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ - "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\37\6\4\0\1\4\5\6\1\u032c"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\1\6\1\u032d"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\10\6\1\u032e"+ - "\6\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\17\6\1\u0161\17\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\u032f"+ - "\15\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\11\6\1\u0161\25\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\206"+ - "\15\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\10\6\1\u0335\26\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\12\6\1\u0330"+ - "\4\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\14\6\1\u0336\22\6\4\0\1\4\5\6\1\u0337"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\37\6\4\0\1\4\5\6\1\326\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\1\u0331\16\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\5\6"+ + "\1\u0338\31\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\1\u0339\1\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\1\u0115\36\6"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\15\6\1\u033a"+ + "\21\6\4\0\1\4\3\6\1\u033b\2\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\37\6\4\0\1\4\5\6\1\u033c\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\1\u0332\36\6\4\0"+ - "\1\4\6\6\1\0\4\6\1\u0331\12\6\11\0\1\4"+ + "\1\6\1\4\4\0\1\6\1\u033d\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\10\6\1\u033e\6\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\10\6\1\u0115\6\6\11\0\1\4"+ + "\1\4\6\6\1\0\1\6\1\u033f\15\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\1\u0333\5\6\1\0\1\u0334\16\6\11\0\1\4"+ + "\1\4\6\6\1\0\1\6\1\210\15\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\14\6\1\u028e\2\6\11\0\1\4"+ + "\1\4\6\6\1\0\12\6\1\u0340\4\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\14\0"+ - "\1\u029c\147\0\1\u02e9\107\0\1\4\6\6\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\1\u01fe\1\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\1\6\1\u0335\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\1\u0336\16\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\1\6\1\u02c3\35\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\13\6\1\u032b\23\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\6\6\1\u022d\30\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ - "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\24\6\1\u0337\12\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\1\u0341\16\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\24\6\1\u010c\12\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\3\6\1\u0342\13\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\15\6\1\u0338\21\6"+ - "\4\0\1\4\3\6\1\u0339\2\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\34\6"+ - "\1\u033a\2\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\5\6"+ - "\1\u010c\31\6\4\0\1\4\3\6\1\u033b\2\6\1\0"+ - "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ - "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\13\6"+ - "\1\u026f\23\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\1\6"+ - "\1\u033c\35\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\1\6"+ - "\1\147\35\6\4\0\1\4\6\6\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\1\6"+ - "\1\u025e\35\6\4\0\1\4\5\6\1\u033d\1\0\17\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\14\6\1\147\2\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\4\6\1\u0279\12\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\1\6\1\u033e\15\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\14\6\1\u033f\2\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\14\6\1\u0203\2\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\1\6\1\u0340\15\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\10\6\1\u0341\6\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\1\6\1\u0342\15\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\14\6\1\u0343\2\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\14\6\1\u0344\2\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\5\6\1\u0345\1\0\17\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\1\u0119\36\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\1\u0343\36\6\4\0\1\4\6\6\1\0"+ + "\4\6\1\u0341\12\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\10\6\1\u0119\6\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\1\u0344\5\6"+ + "\1\0\1\u0345\16\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\14\6\1\u029b\2\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\14\0\1\u02a9\147\0\1\u02f8"+ + "\107\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ - "\1\6\1\4\4\0\2\6\1\0\1\6\1\u0346\35\6"+ - "\4\0\1\4\5\6\1\u0347\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\5\6\1\u0348\31\6\4\0"+ + "\1\6\1\4\4\0\1\u0207\1\6\1\0\37\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\1\6\1\u0349\35\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\1\4\4\0\1\6\1\u0346\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\1\u0347\16\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\10\6\1\u034a\26\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\1\6\1\u02d1\35\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\14\6\1\u0348\22\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\13\6\1\u033b\23\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\6\6\1\u0237\30\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\24\6\1\u0349\12\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\24\6\1\u0110\12\6\4\0\1\4\6\6"+ + "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ + "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ + "\2\6\1\0\15\6\1\u034a\21\6\4\0\1\4\3\6"+ + "\1\u034b\2\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\25\6\1\147\11\6\4\0"+ + "\1\4\4\0\2\6\1\0\34\6\1\u034c\2\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\26\6\1\147\10\6\4\0"+ - "\1\4\6\6\1\0\7\6\1\u034b\7\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\1\6\1\u0115\15\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\1\6\1\u034c\1\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\13\6\1\u034d\3\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\2\6\1\u034e\3\6\1\147\10\6"+ - "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ - "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\1\220\2\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\5\6\1\u010c\1\0\17\6\11\0\1\4"+ + "\1\4\4\0\2\6\1\0\5\6\1\u0110\31\6\4\0"+ + "\1\4\3\6\1\u034d\2\6\1\0\17\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\u034f\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\3\6\1\147\33\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\20\6\1\u0350\16\6\4\0"+ - "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\2\6\1\u0351\34\6\4\0"+ + "\1\4\4\0\2\6\1\0\13\6\1\u027b\23\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\16\6\1\306\20\6\4\0"+ + "\1\4\4\0\2\6\1\0\1\6\1\u034e\35\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\15\6\1\u015d\21\6\4\0"+ + "\1\4\4\0\2\6\1\0\1\6\1\151\35\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\1\6\1\u0120\1\0\37\6\4\0\1\4"+ + "\1\4\4\0\2\6\1\0\1\6\1\u0269\35\6\4\0"+ + "\1\4\5\6\1\u034f\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\14\6\1\151\2\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\4\6\1\u0285\12\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\1\6\1\u0350\15\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\14\6\1\u0351\2\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\14\6\1\u020c\2\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\6\6\1\u013e\10\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\1\6\1\u0352\15\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\10\6\1\u0353\6\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\1\6\1\u0354\15\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\14\6\1\u0355\2\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\14\6\1\u0356\2\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\1\6\1\u0352\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\14\6\1\u0353\2\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\3\6\1\u0354\13\6\11\0\1\4\2\6\2\0"+ + "\4\0\2\6\1\0\3\6\1\u0197\33\6\4\0\1\4"+ + "\5\6\1\u0357\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\14\6\1\u0355\22\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\1\6\1\u0356\35\6\4\0\1\4\6\6"+ - "\1\0\17\6\11\0\1\4\2\6\2\0\3\6\2\0"+ - "\2\6\1\0\1\6\1\0\1\4\1\6\1\4\4\0"+ - "\2\6\1\0\15\6\1\u0357\21\6\4\0\1\4\6\6"+ - "\1\0\3\6\1\u0358\13\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\7\6\1\u0359\7\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ - "\1\0\1\6\1\u0116\15\6\11\0\1\4\2\6\2\0"+ - "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\2\6\1\0\1\6\1\u0358\35\6\4\0\1\4\5\6"+ + "\1\u0359\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\5\6\1\u035a\31\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\1\6\1\u035b\35\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\10\6\1\u035c\26\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\25\6\1\151\11\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\26\6\1\151\10\6\4\0\1\4\6\6\1\0"+ + "\7\6\1\u035d\7\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\1\6\1\u0119\15\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\1\6\1\u035e\1\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\13\6\1\u035f\3\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\2\6\1\u0360\3\6\1\151\10\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\1\222"+ + "\2\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\5\6"+ - "\1\u0162\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\1\u0110\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\u0361\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\3\6\1\151\33\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\20\6\1\u0362\16\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\2\6\1\u0363\34\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\10\6\1\u035a\26\6\4\0\1\4\6\6\1\0"+ + "\1\0\16\6\1\310\20\6\4\0\1\4\6\6\1\0"+ "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\14\6\1\u035b\22\6\4\0\1\4\6\6\1\0"+ + "\1\0\15\6\1\u0161\21\6\4\0\1\4\6\6\1\0"+ "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\6"+ - "\1\u035c\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\1\u0124\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ - "\1\6\1\0\1\4\1\6\1\4\4\0\1\6\1\u035d"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\1\6\1\u0364"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\14\6\1\u0365"+ + "\2\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\3\6\1\u0366"+ + "\13\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ "\1\0\37\6\4\0\1\4\6\6\1\0\17\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\15\6"+ - "\1\u035e\21\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\14\6"+ + "\1\u0367\22\6\4\0\1\4\6\6\1\0\17\6\11\0"+ + "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ + "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\1\6"+ + "\1\u0368\35\6\4\0\1\4\6\6\1\0\17\6\11\0"+ "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\15\6"+ - "\1\u035f\21\6\4\0\1\4\6\6\1\0\5\6\1\u0273"+ - "\11\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\u0369\21\6\4\0\1\4\6\6\1\0\3\6\1\u036a"+ + "\13\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\7\6\1\u036b"+ + "\7\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\37\6\4\0\1\4\6\6\1\0\1\6\1\u011a"+ + "\15\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ - "\1\0\37\6\4\0\1\4\6\6\1\0\16\6\1\u0360"+ + "\1\0\37\6\4\0\1\4\5\6\1\u0166\1\0\17\6"+ "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ "\37\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\21\6\1\u0361"+ - "\15\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ - "\2\6\2\0\3\6\2\0\1\6\1\u0268\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\6\6\1\0\1\6\1\u0362\15\6\11\0"+ - "\1\4\2\6\2\0\3\6\2\0\2\6\1\0\1\6"+ - "\1\0\1\4\1\6\1\4\4\0\2\6\1\0\37\6"+ - "\4\0\1\4\5\6\1\u0363\1\0\17\6\11\0\1\4"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\10\6\1\u036c"+ + "\26\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ - "\1\4\6\6\1\0\4\6\1\u0364\12\6\11\0\1\4"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\14\6\1\u036d"+ + "\22\6\4\0\1\4\6\6\1\0\17\6\11\0\1\4"+ "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ - "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ + "\1\4\1\6\1\4\4\0\1\6\1\u036e\1\0\37\6"+ + "\4\0\1\4\6\6\1\0\17\6\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\1\6\1\u036f\1\0\37\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\2\6\1\0\13\6\1\u0365\23\6\4\0"+ + "\1\4\4\0\2\6\1\0\15\6\1\u0370\21\6\4\0"+ "\1\4\6\6\1\0\17\6\11\0\1\4\2\6\2\0"+ "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ - "\1\4\4\0\1\6\1\221\1\0\37\6\4\0\1\4"+ + "\1\4\4\0\2\6\1\0\15\6\1\u0371\21\6\4\0"+ + "\1\4\6\6\1\0\5\6\1\u027f\11\6\11\0\1\4"+ + "\2\6\2\0\3\6\2\0\2\6\1\0\1\6\1\0"+ + "\1\4\1\6\1\4\4\0\2\6\1\0\37\6\4\0"+ + "\1\4\6\6\1\0\16\6\1\u0372\11\0\1\4\2\6"+ + "\2\0\3\6\2\0\2\6\1\0\1\6\1\0\1\4"+ + "\1\6\1\4\4\0\2\6\1\0\37\6\4\0\1\4"+ + "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\21\6\1\u0373\15\6\4\0\1\4"+ "\6\6\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\1\6\1\u0274\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\6\6"+ + "\1\0\1\6\1\u0374\15\6\11\0\1\4\2\6\2\0"+ + "\3\6\2\0\2\6\1\0\1\6\1\0\1\4\1\6"+ + "\1\4\4\0\2\6\1\0\37\6\4\0\1\4\5\6"+ + "\1\u0375\1\0\17\6\11\0\1\4\2\6\2\0\3\6"+ + "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\4\6\1\u0376\12\6\11\0\1\4\2\6\2\0\3\6"+ "\2\0\2\6\1\0\1\6\1\0\1\4\1\6\1\4"+ - "\4\0\2\6\1\0\15\6\1\300\21\6\4\0"; + "\4\0\2\6\1\0\37\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\2\6"+ + "\1\0\13\6\1\u0377\23\6\4\0\1\4\6\6\1\0"+ + "\17\6\11\0\1\4\2\6\2\0\3\6\2\0\2\6"+ + "\1\0\1\6\1\0\1\4\1\6\1\4\4\0\1\6"+ + "\1\223\1\0\37\6\4\0\1\4\6\6\1\0\17\6"+ + "\11\0\1\4\2\6\2\0\3\6\2\0\2\6\1\0"+ + "\1\6\1\0\1\4\1\6\1\4\4\0\2\6\1\0"+ + "\15\6\1\302\21\6\4\0"; private static int [] zzUnpackTrans() { - int [] result = new int[77372]; + int [] result = new int[79028]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -2626,16 +2683,16 @@ public class FormulaTokenMaker extends AbstractJFlexCTokenMaker { private static final String ZZ_ATTRIBUTE_PACKED_0 = "\3\0\30\1\1\11\4\1\1\11\2\1\1\11\11\1"+ - "\1\11\1\1\1\11\31\1\1\11\5\1\1\11\110\1"+ + "\1\11\1\1\1\11\33\1\1\11\5\1\1\11\110\1"+ "\1\0\2\11\2\1\1\11\3\1\1\11\24\1\1\0"+ - "\75\1\2\0\1\11\6\0\2\1\1\0\117\1\1\11"+ - "\7\1\1\11\24\1\6\0\115\1\10\0\2\1\1\0"+ - "\114\1\4\0\1\1\4\0\101\1\2\0\1\1\2\0"+ - "\64\1\7\0\45\1\4\0\37\1\1\11\3\0\54\1"+ - "\2\0\113\1"; + "\77\1\2\0\1\11\6\0\2\1\1\0\117\1\1\11"+ + "\7\1\1\11\24\1\6\0\121\1\10\0\2\1\1\0"+ + "\115\1\4\0\1\1\4\0\104\1\2\0\1\1\2\0"+ + "\65\1\7\0\46\1\4\0\40\1\1\11\3\0\54\1"+ + "\2\0\116\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[869]; + int [] result = new int[887]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -3203,15 +3260,15 @@ public class FormulaTokenMaker extends AbstractJFlexCTokenMaker { case EOL_COMMENT: { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } - case 870: break; + case 888: break; case YYINITIAL: { addNullToken(); return firstToken; } - case 871: break; + case 889: break; case MLC: { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - case 872: break; + case 890: break; default: return null; } diff --git a/designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FormulaTokenMaker.flex b/designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FormulaTokenMaker.flex index 724e6b5de..f73852366 100644 --- a/designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FormulaTokenMaker.flex +++ b/designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FormulaTokenMaker.flex @@ -578,7 +578,13 @@ FunctionNames = "ABS"| "YEAR"| "year"| "YEARDELTA"| - "yeardelta" + "yeardelta"| + "SUMPRECISE"| + "sumprecise"| + "QUERY"| + "query"| + "WEBIMAGE"| + "webimage" %state MLC From 9cd34528b45489340b60353d5f94262823c2937c Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 19 Sep 2019 09:23:06 +0800 Subject: [PATCH 56/58] ct --- .../design/actions/file/PreferencePane.java | 383 +++++++++++++++--- 1 file changed, 321 insertions(+), 62 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index 180e5a50e..968d395f4 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -1,9 +1,10 @@ package com.fr.design.actions.file; +import com.fr.cluster.engine.base.FineClusterConfig; import com.fr.config.Configuration; +import com.fr.config.ServerPreferenceConfig; import com.fr.design.DesignerEnvManager; import com.fr.design.RestartHelper; -import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; @@ -17,19 +18,20 @@ import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icombobox.UIDictionaryComboBox; import com.fr.design.gui.ilable.ActionLabel; import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.iprogressbar.UIProgressBarUI; import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.layout.VerticalFlowLayout; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.vcs.VcsConfigManager; import com.fr.design.mainframe.vcs.common.VcsHelper; import com.fr.design.update.push.DesignerPushUpdateManager; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.widget.FRWidgetFactory; -import com.fr.general.CloudCenter; import com.fr.general.ComparatorUtils; import com.fr.general.FRFont; import com.fr.general.IOUtils; @@ -37,24 +39,38 @@ import com.fr.general.Inter; import com.fr.general.log.Log4jConfig; import com.fr.locale.InterProviderFactory; import com.fr.log.FineLoggerFactory; +import com.fr.stable.Constants; +import com.fr.stable.StringUtils; import com.fr.third.apache.log4j.Level; import com.fr.transaction.Configurations; import com.fr.transaction.Worker; +import com.fr.workspace.WorkContext; +import com.fr.workspace.server.vcs.VcsOperator; +import com.fr.workspace.server.vcs.git.config.GcConfig; import javax.swing.BorderFactory; import javax.swing.JFileChooser; import javax.swing.JOptionPane; +import javax.swing.BoxLayout; import javax.swing.JPanel; +import javax.swing.JProgressBar; +import javax.swing.JDialog; + +import javax.swing.Timer; +import javax.swing.SwingWorker; +import javax.swing.UIManager; import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.BorderLayout; import java.awt.Component; -import java.awt.Cursor; -import java.awt.Desktop; +import java.awt.Dialog; +import java.awt.Color; import java.awt.Dimension; import java.awt.Font; +import java.awt.FlowLayout; + import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -62,10 +78,15 @@ import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.awt.event.WindowEvent; + +import java.awt.event.WindowAdapter; import java.io.File; -import java.net.URI; +import java.text.DecimalFormat; import java.util.Locale; import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ExecutionException; /** * 选项对话框 @@ -111,7 +132,6 @@ public class PreferencePane extends BasicPane { private static final String DISPLAY_EQUALS = "+"; private static final String MINUS = "MINUS"; private static final String DISPLAY_MINUS = "-"; - private static final String PRIVACY_POLICY = "design.privacy"; private static final Level[] LOG = {Level.FATAL, Level.ERROR, Level.WARN, Level.INFO, Level.DEBUG}; @@ -153,10 +173,17 @@ public class PreferencePane extends BasicPane { private UICheckBox saveCommitCheckBox; private UICheckBox useIntervalCheckBox; private IntegerEditor saveIntervalEditor; + private UICheckBox gcEnableCheckBox; + private UIButton gcButton; private UILabel remindVcsLabel; - private UILabel linkLabel; - + private JDialog gcDialog; + private UILabel gcMessage = new UILabel(); + private JPanel gcDialogDownPane = new JPanel(); + private JPanel gcProgressBarPanel = new JPanel(); + private JProgressBar gcProgressBar; + private Timer gcProgressTimer; + private UIButton gcOkButton = new UIButton(Toolkit.i18nText("Fine-Design_Report_OK")); public PreferencePane() { this.initComponents(); @@ -196,44 +223,25 @@ public class PreferencePane extends BasicPane { oracleSpace = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Show_All_Oracle_Tables")); oraclePane.add(oracleSpace); -// JPanel debuggerPane = FRGUIPaneFactory.createTitledBorderPane(Toolkit.i18nText("Fine-Design_Basic_Develop_Tools")); -// openDebugComboBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Basic_Open_Debug_Window")); -// debuggerPane.add(openDebugComboBox, BorderLayout.CENTER); -// advancePane.add(debuggerPane); -// -// JPanel upmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager")); -// useOptimizedUPMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_New_Update_Plugin_Manager")); -// upmSelectorPane.add(useOptimizedUPMCheckbox); -// advancePane.add(upmSelectorPane); -// -// JPanel dbmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Database_Manager")); -// useUniverseDBMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_Universe_Database_Manager")); -// dbmSelectorPane.add(useUniverseDBMCheckbox); -// advancePane.add(dbmSelectorPane); + JPanel debuggerPane = FRGUIPaneFactory.createTitledBorderPane(Toolkit.i18nText("Fine-Design_Basic_Develop_Tools")); + openDebugComboBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Basic_Open_Debug_Window")); + debuggerPane.add(openDebugComboBox, BorderLayout.CENTER); + advancePane.add(debuggerPane); + + JPanel upmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager")); + useOptimizedUPMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_New_Update_Plugin_Manager")); + upmSelectorPane.add(useOptimizedUPMCheckbox); + advancePane.add(upmSelectorPane); + + JPanel dbmSelectorPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Database_Manager")); + useUniverseDBMCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Use_Universe_Database_Manager")); + dbmSelectorPane.add(useUniverseDBMCheckbox); + advancePane.add(dbmSelectorPane); JPanel improvePane = FRGUIPaneFactory.createVerticalTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Product_Improve")); joinProductImproveCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Join_Product_Improve")); - linkLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Privacy_Policy")); - linkLabel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); - linkLabel.setForeground(UIConstants.NORMAL_BLUE); - linkLabel.addMouseListener(new MouseAdapter(){ - @Override - public void mouseClicked(MouseEvent e) { - try { - Desktop.getDesktop().browse(new URI(CloudCenter.getInstance().acquireUrlByKind(PRIVACY_POLICY))); - } catch (Exception e1) { - FineLoggerFactory.getLogger().error(e1.getMessage(), e1); - } - } - }); - double p = TableLayout.PREFERRED; - double rowSize[] = {p}; - double columnSize[] = {p, p}; - Component[][] components = { - {joinProductImproveCheckBox, linkLabel}, - }; - JPanel choosePane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - improvePane.add(choosePane); + improvePane.add(joinProductImproveCheckBox); + if (DesignerPushUpdateManager.getInstance().isAutoPushUpdateSupported()) { autoPushUpdateCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Automatic_Push_Update")); improvePane.add(autoPushUpdateCheckBox); @@ -255,6 +263,10 @@ public class PreferencePane extends BasicPane { saveCommitCheckBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Vcs_No_Delete")); saveIntervalEditor = new IntegerEditor(60); useIntervalCheckBox = new UICheckBox(); + + //gc面板 + JPanel gcControlPane = createGcControlPane(); + JPanel enableVcsPanel = new JPanel(FRGUIPaneFactory.createLeftZeroLayout()); enableVcsPanel.add(vcsEnableCheckBox); enableVcsPanel.add(remindVcsLabel); @@ -287,6 +299,42 @@ public class PreferencePane extends BasicPane { vcsPane.add(enableVcsPanel); vcsPane.add(intervalPanel); vcsPane.add(saveCommitCheckBox); + vcsPane.add(gcControlPane); + } + + /** + * 模创建板版本gc 配置操作面板 + * + * @return 面板 + */ + private JPanel createGcControlPane() { + //gc面板 + JPanel gcControlPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); + JPanel gcButtonPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 40, 0)); + gcEnableCheckBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Vcs_Storage_Optimization")); + gcButton = initGcButton(); + gcButtonPane.add(gcButton); + gcControlPane.add(gcEnableCheckBox); + gcControlPane.add(gcButtonPane); + gcButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent evt) { + tryGc(); + } + }); + gcEnableCheckBox.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + gcButton.setEnabled(gcEnableCheckBox.isSelected()); + } + }); + + //集群下禁用 + if (FineClusterConfig.getInstance().isCluster()) { + gcEnableCheckBox.setEnabled(false); + gcButton.setEnabled(false); + } + return gcControlPane; } private void createFunctionPane(JPanel generalPane) { @@ -654,7 +702,8 @@ public class PreferencePane extends BasicPane { saveIntervalEditor.setValue(vcsConfigManager.getSaveInterval()); saveCommitCheckBox.setSelected(vcsConfigManager.isSaveCommit()); useIntervalCheckBox.setSelected(vcsConfigManager.isUseInterval()); - + gcEnableCheckBox.setSelected(GcConfig.getInstance().isGcEnable()); + gcButton.setEnabled(gcEnableCheckBox.isSelected()); supportCellEditorDefCheckBox.setSelected(designerEnvManager.isSupportCellEditorDef()); isDragPermitedCheckBox.setSelected(designerEnvManager.isDragPermited()); @@ -673,10 +722,10 @@ public class PreferencePane extends BasicPane { this.portEditor.setValue(new Integer(designerEnvManager.getEmbedServerPort())); -// openDebugComboBox.setSelected(designerEnvManager.isOpenDebug()); -// useOptimizedUPMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseOptimizedUPM()); -// -// useUniverseDBMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseUniverseDBM()); + openDebugComboBox.setSelected(designerEnvManager.isOpenDebug()); + useOptimizedUPMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseOptimizedUPM()); + + useUniverseDBMCheckbox.setSelected(ServerPreferenceConfig.getInstance().isUseUniverseDBM()); this.oracleSpace.setSelected(designerEnvManager.isOracleSystemSpace()); this.cachingTemplateSpinner.setValue(designerEnvManager.getCachingTemplateLimit()); @@ -741,7 +790,7 @@ public class PreferencePane extends BasicPane { designerEnvManager.setJettyServerPort(portEditor.getValue().intValue()); -// designerEnvManager.setOpenDebug(openDebugComboBox.isSelected()); + designerEnvManager.setOpenDebug(openDebugComboBox.isSelected()); designerEnvManager.setOracleSystemSpace(this.oracleSpace.isSelected()); designerEnvManager.setCachingTemplateLimit((int) this.cachingTemplateSpinner.getValue()); @@ -751,6 +800,18 @@ public class PreferencePane extends BasicPane { vcsConfigManager.setVcsEnable(this.vcsEnableCheckBox.isSelected()); vcsConfigManager.setSaveCommit(this.saveCommitCheckBox.isSelected()); vcsConfigManager.setUseInterval(this.useIntervalCheckBox.isSelected()); + Configurations.update(new Worker() { + @Override + public void run() { + GcConfig.getInstance().setGcEnable(gcEnableCheckBox.isSelected()); + } + + @Override + public Class[] targets() { + return new Class[]{GcConfig.class}; + } + }); + if (this.autoPushUpdateCheckBox != null) { designerEnvManager.setAutoPushUpdateEnabled(this.autoPushUpdateCheckBox.isSelected()); } @@ -772,21 +833,20 @@ public class PreferencePane extends BasicPane { } }); -// Configurations.update(new Worker() { -// @Override -// public void run() { -// ServerPreferenceConfig.getInstance().setUseOptimizedUPM(useOptimizedUPMCheckbox.isSelected()); -// ServerPreferenceConfig.getInstance().setUseUniverseDBM(useUniverseDBMCheckbox.isSelected()); -// } -// -// @Override -// public Class[] targets() { -// return new Class[] {ServerPreferenceConfig.class}; -// } -// }); + Configurations.update(new Worker() { + @Override + public void run() { + ServerPreferenceConfig.getInstance().setUseOptimizedUPM(useOptimizedUPMCheckbox.isSelected()); + ServerPreferenceConfig.getInstance().setUseUniverseDBM(useUniverseDBMCheckbox.isSelected()); + } - } + @Override + public Class[] targets() { + return new Class[] {ServerPreferenceConfig.class}; + } + }); + } // 如果语言设置改变了,则显示重启对话框 public void showRestartDialog() { @@ -822,4 +882,203 @@ public class PreferencePane extends BasicPane { public BasicDialog showWindow(Window window, DialogActionListener l) { return showWindowWithCustomSize(window, l, new Dimension(BasicDialog.DEFAULT.width, this.getPreferredSize().height + OFFSET_HEIGHT)); } + + private void tryGc() { + final SwingWorker worker = new SwingWorker() { + private long size = 0; + + @Override + protected Boolean doInBackground() { + size = WorkContext.getCurrent().get(VcsOperator.class).immediatelyGc(); + return true; + } + + @Override + protected void done() { + try { + get(); + } catch (ExecutionException e) { + updateGcDialogPanelInfo(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Vcs_Need_Update_Remote_Server_Jar")); + return; + } catch (InterruptedException e) { + FineLoggerFactory.getLogger().error(e, e.getMessage()); + } + updateGcDialogPanelInfo(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Vcs_Reduce_File_Size") + fileSizeConvert(size)); + gcDialogDownPane.revalidate(); + gcDialogDownPane.repaint(); + gcDialogDownPane.add(gcOkButton); + } + }; + worker.execute(); + initGcDialog(); + gcOkButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + gcDialog.dispose(); + } + }); + gcDialog.addWindowListener(new WindowAdapter() { + @Override + public void windowClosed(WindowEvent e) { + stopGcProgressTimer(); + worker.cancel(true); + } + }); + gcDialog.setVisible(true); + gcDialog.dispose(); + } + + /** + * gc 后更新进度条面板信息 + * + * @param message + */ + private void updateGcDialogPanelInfo(String message) { + stopGcProgressTimer(); + gcMessage.setText(message); + if (null != gcProgressBar) { + gcProgressBarPanel.remove(gcProgressBar); + } + if (null != gcDialog) { + gcDialog.setTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Joption_News")); + } + } + + /** + * 初始化 gc 对话框 + */ + private void initGcDialog() { + gcDialog = new JDialog((Dialog) SwingUtilities.getWindowAncestor(PreferencePane.this), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Vcs_Clean_Progress") + "...", true); + gcDialog.setSize(new Dimension(340, 140)); + + JPanel jp = new JPanel(); + //中上 + JPanel gcUpPane = new JPanel(); + gcUpPane.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10)); + gcUpPane.add(new UILabel(UIManager.getIcon("OptionPane.informationIcon"))); + gcProgressBarPanel = createProgressBarPane(); + gcUpPane.add(gcProgressBarPanel); + + //中下 + gcDialogDownPane = new JPanel(); + gcDialogDownPane.setLayout(new FlowLayout(FlowLayout.CENTER, 6, 0)); + + jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS)); + jp.add(gcUpPane); + jp.add(gcDialogDownPane); + gcDialog.add(jp); + gcDialog.setResizable(false); + gcDialog.setLocationRelativeTo(SwingUtilities.getWindowAncestor(PreferencePane.this)); + } + + /** + * gc 进度条面板 + * + * @return + */ + private JPanel createProgressBarPane() { + JPanel jp = new JPanel(); + VerticalFlowLayout layout = new VerticalFlowLayout(); + layout.setAlignLeft(true); + jp.setLayout(layout); + + //提示 + gcMessage = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Vcs_Cleaning")); + // 创建一个进度条 + gcProgressBar = createGcProgressBar(0, 30, 240, 15, Color.GREEN); + gcProgressTimer = createGcProgressTimer(500, gcProgressBar); + gcProgressTimer.start(); + jp.add(gcMessage); + jp.add(gcProgressBar); + return jp; + } + + /** + * 创建 gc 进度条 + * + * @param min 最小值 + * @param max 最大值 + * @param width 宽度 + * @param height 高度 + * @param color 填充的图片颜色 + * @return + */ + private JProgressBar createGcProgressBar(int min, int max, int width, int height, Color color) { + // 创建一个进度条 + JProgressBar progressBar = new JProgressBar(min, max); + UIProgressBarUI progressBarUI = new UIProgressBarUI(); + progressBar.setUI(progressBarUI); + + //颜色(进度条里的小方块) + progressBar.setForeground(color); + + progressBar.setOpaque(false); + progressBar.setPreferredSize(new Dimension(width, height)); + return progressBar; + } + + /** + * @param delay 每隔 delay 毫秒更新进度 + * @param progressBar 要更新的进度条 + * @return + */ + private Timer createGcProgressTimer(int delay, final JProgressBar progressBar) { + if (null == progressBar) { + return null; + } + // 模拟延时操作进度, 每隔 delay / 1000 秒更新进度 + Timer timer = new Timer(delay, new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + int currentProgress = progressBar.getValue() + 1; + if (currentProgress > progressBar.getMaximum()) { + currentProgress = progressBar.getMinimum(); + } + progressBar.setValue(currentProgress); + } + }); + + return timer; + } + + /** + * 停止进度条模拟计时器 + */ + private void stopGcProgressTimer() { + if (null == gcProgressTimer) { + return; + } + gcProgressTimer.stop(); + } + + /** + * 将字节转换成 KB or MB or GB 保留两位小数 + * + * @param size + * @return + */ + private String fileSizeConvert(long size) { + DecimalFormat df = new DecimalFormat("0.00"); + double n = 1024d; + if (size > Math.pow(n, 3)) { + return df.format(size / Math.pow(n, 3)) + "GB"; + } + if (size > Math.pow(n, 2)) { + return df.format(size / Math.pow(n, 2)) + "MB"; + } + return new StringBuilder().append(df.format(size / n)).append("KB").toString(); + } + + /** + * 立即清理的Button + * + * @return + */ + private UIButton initGcButton() { + UIButton gcButton = new UIButton(Toolkit.i18nText("Fine-Design_Vcs_Clean")); + gcButton.setPreferredSize(new Dimension(100, 15)); + gcButton.setRoundBorder(true, Constants.LEFT); + return gcButton; + } + } From b955d8ce11cf5396b2633efbf7feda2909d9cfbb Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 19 Sep 2019 09:23:24 +0800 Subject: [PATCH 57/58] . --- .../main/java/com/fr/design/actions/file/SwitchExistEnv.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java b/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java index 2b55da479..568e713bb 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java @@ -21,7 +21,7 @@ public class SwitchExistEnv extends MenuDef { initMenuDef(); } - private void initMenuDef() { + private void initMenuDef() { Iterator nameIt = DesignerEnvManager.getEnvManager().getEnvNameIterator(); while (nameIt.hasNext()) { String name = nameIt.next(); From e04fd4abc356ddeed9bee5b5203e66726c8c8cdf Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 19 Sep 2019 09:31:15 +0800 Subject: [PATCH 58/58] =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/InformationCollector.java | 99 +++++------------ .../com/fr/start/module/DesignerStartup.java | 104 +----------------- 2 files changed, 35 insertions(+), 168 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java b/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java index 7c3ca2dac..25c8a493e 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java @@ -1,3 +1,6 @@ +/** + * + */ package com.fr.design.mainframe; import com.fr.base.FRContext; @@ -6,7 +9,6 @@ import com.fr.config.MarketConfig; import com.fr.design.DesignerEnvManager; import com.fr.design.mainframe.errorinfo.ErrorInfoUploader; import com.fr.design.mainframe.messagecollect.impl.FocusPointMessageUploader; -import com.fr.design.mainframe.messagecollect.solid.SolidCollector; import com.fr.design.mainframe.template.info.TemplateInfoCollector; import com.fr.general.CloudCenter; import com.fr.general.ComparatorUtils; @@ -28,7 +30,6 @@ import com.fr.stable.xml.XMLTools; import com.fr.stable.xml.XMLWriter; import com.fr.stable.xml.XMLableReader; import com.fr.third.javax.xml.stream.XMLStreamException; -import com.sun.management.OperatingSystemMXBean; import java.io.BufferedWriter; import java.io.ByteArrayInputStream; @@ -42,8 +43,6 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; -import java.lang.management.ManagementFactory; -import java.nio.charset.StandardCharsets; import java.text.DateFormat; import java.util.ArrayList; import java.util.Date; @@ -54,19 +53,14 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; /** - * 设计器信息收集 - * * @author neil * @date: 2015-4-8-下午5:11:46 */ public class InformationCollector implements XMLReadable, XMLWriter { - /** - * 24小时上传一次 - */ + // 24小时上传一次 private static final long DELTA = 24 * 3600 * 1000L; private static final long SEND_DELAY = 300 * 1000L; - private static final int BYTE_TO_MB = 1024 * 1024; private static final String FILE_NAME = "fr.info"; private static final String XML_START_STOP_LIST = "StartStopList"; private static final String XML_START_STOP = "StartStop"; @@ -79,19 +73,12 @@ public class InformationCollector implements XMLReadable, XMLWriter { private static final String XML_UUID = "UUID"; private static final String XML_KEY = "ActiveKey"; private static final String XML_OS = "OS"; - private static final String XML_ARCH = "arch"; - private static final String XML_AVAILABLE_PROCESSORS = "cpu"; - private static final String XML_PHYSICAL_MEMORY = "systemMemory"; private static InformationCollector collector; - /** - * 启动时间与关闭时间列表 - */ - private List startStop = new ArrayList<>(); - /** - * 上一次的发送时间 - */ + //启动时间与关闭时间列表 + private List startStop = new ArrayList(); + //上一次的发送时间 private String lastTime; private StartStopTime current = new StartStopTime(); @@ -122,11 +109,11 @@ public class InformationCollector implements XMLReadable, XMLWriter { } xmlInputStream.close(); } catch (FileNotFoundException e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } catch (IOException e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } catch (XMLStreamException e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e.getMessage(), e); } } @@ -150,41 +137,28 @@ public class InformationCollector implements XMLReadable, XMLWriter { } - private JSONObject getJSONContentAsByte(){ + private JSONObject getJSONContentAsByte() { JSONObject content = new JSONObject(); JSONArray startStopArray = new JSONArray(); - for (StartStopTime startStopTime : startStop) { + for (int i = 0; i < startStop.size(); i++) { JSONObject jo = new JSONObject(); - jo.put(ATTR_START, startStopTime.getStartDate()); - jo.put(ATTR_STOP, startStopTime.getStopDate()); + jo.put(ATTR_START, startStop.get(i).getStartDate()); + jo.put(ATTR_STOP, startStop.get(i).getStopDate()); startStopArray.put(jo); + DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); + content.put(XML_START_STOP, startStopArray); + content.put(XML_UUID, envManager.getUUID()); + content.put(XML_JAR, GeneralUtils.readBuildNO()); + content.put(XML_VERSION, ProductConstants.RELEASE_VERSION); + content.put(XML_USERNAME, MarketConfig.getInstance().getBbsUsername()); + content.put(XML_KEY, envManager.getActivationKey()); + content.put(XML_OS, System.getProperty("os.name")); } - DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); - content.put(XML_START_STOP, startStopArray); - content.put(XML_UUID, envManager.getUUID()); - content.put(XML_JAR, GeneralUtils.readBuildNO()); - content.put(XML_VERSION, ProductConstants.RELEASE_VERSION); - content.put(XML_USERNAME, MarketConfig.getInstance().getBbsUsername()); - content.put(XML_KEY, envManager.getActivationKey()); - content.put(XML_OS, System.getProperty("os.name")); - content.put(XML_ARCH, System.getProperty("os.arch")); - content.put(XML_AVAILABLE_PROCESSORS, Runtime.getRuntime().availableProcessors()); - content.put(XML_PHYSICAL_MEMORY, getTotalPhysicalMemorySize()); return content; } - /** - * 获取物理内存,单位GB - * - * @return 物理内存 - */ - private static long getTotalPhysicalMemorySize() { - OperatingSystemMXBean bean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); - return bean.getTotalPhysicalMemorySize() / BYTE_TO_MB; - } - - private void sendUserInfo(){ + private void sendUserInfo() { long currentTime = new Date().getTime(); long lastTime = getLastTimeMillis(); @@ -203,7 +177,7 @@ public class InformationCollector implements XMLReadable, XMLWriter { } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); } - if (success){ + if (success) { this.reset(); } } @@ -226,7 +200,6 @@ public class InformationCollector implements XMLReadable, XMLWriter { service.schedule(new Runnable() { @Override public void run() { - SolidCollector.getInstance().sendToCloudCenterAndDeleteFile(); sendUserInfo(); FocusPointMessageUploader.getInstance().sendToCloudCenter(); TemplateInfoCollector.getInstance().sendTemplateInfo(); @@ -266,7 +239,7 @@ public class InformationCollector implements XMLReadable, XMLWriter { XMLTools.writeOutputStreamXML(this, out); out.flush(); out.close(); - String fileContent = new String(out.toByteArray(), StandardCharsets.UTF_8); + String fileContent = new String(out.toByteArray(), EncodeConstants.ENCODING_UTF_8); String encodeCotent = DesUtils.getEncString(fileContent); writeEncodeContentToFile(encodeCotent, xmlFile); } catch (Exception e) { @@ -279,21 +252,12 @@ public class InformationCollector implements XMLReadable, XMLWriter { * 将文件内容写到输出流中 */ private static void writeEncodeContentToFile(String fileContent, File file) { - BufferedWriter bw = null; - try { - FileOutputStream fos = new FileOutputStream(file); - OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8); - bw = new BufferedWriter(osw); + try (FileOutputStream fos = new FileOutputStream(file); + OutputStreamWriter osw = new OutputStreamWriter(fos, EncodeConstants.ENCODING_UTF_8); + BufferedWriter bw = new BufferedWriter(osw)) { bw.write(fileContent); } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); - } finally { - if (bw != null) { - try { - bw.close(); - } catch (IOException ignore) { - } - } } } @@ -312,8 +276,8 @@ public class InformationCollector implements XMLReadable, XMLWriter { private void writeStartStopList(XMLPrintWriter writer) { //启停 writer.startTAG(XML_START_STOP_LIST); - for (StartStopTime startStopTime : startStop) { - startStopTime.writeXML(writer); + for (int i = 0; i < startStop.size(); i++) { + startStop.get(i).writeXML(writer); } writer.end(); } @@ -351,7 +315,6 @@ public class InformationCollector implements XMLReadable, XMLWriter { startStop.clear(); reader.readXMLObject(new XMLReadable() { - @Override public void readXML(XMLableReader reader) { if (XML_START_STOP.equals(reader.getTagName())) { StartStopTime startStopTime = new StartStopTime(); @@ -383,7 +346,6 @@ public class InformationCollector implements XMLReadable, XMLWriter { this.stopDate = endDate; } - @Override public void writeXML(XMLPrintWriter writer) { writer.startTAG(XML_START_STOP); if (StringUtils.isNotEmpty(startDate)) { @@ -395,7 +357,6 @@ public class InformationCollector implements XMLReadable, XMLWriter { writer.end(); } - @Override public void readXML(XMLableReader reader) { this.startDate = reader.getAttrAsString(ATTR_START, StringUtils.EMPTY); this.stopDate = reader.getAttrAsString(ATTR_STOP, StringUtils.EMPTY); diff --git a/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java b/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java index 5f8fe7023..60c899daa 100644 --- a/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java +++ b/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java @@ -1,25 +1,11 @@ package com.fr.start.module; -import com.fr.concurrent.NamedThreadFactory; -import com.fr.design.file.HistoryTemplateListCache; -import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.messagecollect.StartupMessageCollector; -import com.fr.event.Event; -import com.fr.event.Listener; import com.fr.module.Activator; import com.fr.record.analyzer.EnableMetrics; import com.fr.record.analyzer.Metrics; -import com.fr.start.Designer; +import com.fr.runtime.FineRuntime; import com.fr.start.ServerStarter; -import com.fr.start.SplashContext; -import com.fr.start.server.FineEmbedServer; -import com.fr.startup.activators.BasicActivator; -import com.fr.workspace.Workspace; -import com.fr.workspace.WorkspaceEvent; - -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; /** * Created by juhaoyu on 2018/1/8. @@ -32,101 +18,21 @@ public class DesignerStartup extends Activator { public void start() { startSub(PreStartActivator.class); - //启动基础部分 - startSub(BasicActivator.class); - final String[] args = getModule().upFindSingleton(StartupArgs.class).get(); - final Designer designer = new Designer(args); - - startSub(DesignerWorkspaceProvider.class); - registerEnvListener(); - //启动env - startSub(EnvBasedModule.class); + startSub("parallel"); //designer模块启动好后,查看demo browserDemo(); - ExecutorService service = Executors.newSingleThreadExecutor(new NamedThreadFactory("FineEmbedServerStart")); - service.submit(new Runnable() { - @Override - public void run() { - FineEmbedServer.start(); - } - }); - service.submit(new Runnable() { - - @Override - public void run() { - try { - designer.show(args); - } finally { - DesignerContext.getDesignerFrame().getProgressDialog().dispose(); - } - } - }); - service.shutdown(); - DesignerContext.getDesignerFrame().setVisible(true); - //启动画面结束 - SplashContext.getInstance().hide(); - - DesignerContext.getDesignerFrame().getProgressDialog().setVisible(true); + startSub(DesignerShowActivator.class); startSub(StartFinishActivator.class); - StartupMessageCollector.getInstance().recordStartupLog(); + FineRuntime.startFinish(); } private void browserDemo() { - if (getModule().leftFindSingleton(StartupArgs.class) != null && getModule().leftFindSingleton(StartupArgs.class).isDemo()) { + if (findSingleton(StartupArgs.class) != null && findSingleton(StartupArgs.class).isDemo()) { ServerStarter.browserDemoURL(); } } - /** - * 注册切换环境前后事件监听 - */ - private void registerEnvListener() { - - /*切换环境前,关闭所有相关模块,最后执行*/ - listenEvent(WorkspaceEvent.BeforeSwitch, new Listener(Integer.MIN_VALUE) { - - @Override - public void on(Event event, Workspace current) { - stopSub(EnvBasedModule.class); - } - }); - /*切换环境后,重新启动所有相关模块,最先执行*/ - listenEvent(WorkspaceEvent.AfterSwitch, new Listener(Integer.MAX_VALUE) { - - @Override - public void on(Event event, Workspace current) { - startSub(EnvBasedModule.class); - // 切换后的环境是本地环境才启动内置服务器 - if (current.isLocal()) { - ExecutorService service = Executors.newSingleThreadExecutor(); - service.submit(new Runnable() { - @Override - public void run() { - FineEmbedServer.start(); - } - }); - service.shutdown(); - } - } - }); - /*切换环境前,存储一下打开的所有文件对象,要先于 关闭相关模块部分 被触发*/ - listenEvent(WorkspaceEvent.BeforeSwitch, new Listener(Integer.MAX_VALUE) { - @Override - public void on(Event event, Workspace workspace) { - HistoryTemplateListCache.getInstance().stash(); - } - }); - - /*切换环境后,装载一下打开的所有文件对象,优先级低于默认优先级,要后于 启动相关模块部分 被触发*/ - listenEvent(WorkspaceEvent.AfterSwitch, new Listener(Integer.MIN_VALUE) { - @Override - public void on(Event event, Workspace workspace) { - HistoryTemplateListCache.getInstance().load(); - } - }); - } - @Override public void stop() {