Browse Source

Merge pull request #9 in PG/plugin-report-doc-demo from ~ZACK/plugin-report-doc-demo:release/10.0 to release/10.0

* commit 'a57cdb8e4484ccbf0f17a230fa069fec1e5c9243':
  无JIRA任务 文档demo单元测试
pull/2/head
zack 5 years ago
parent
commit
2e7bc0820e
  1. 8
      src/main/java/com/fr/demo/SaveReportToDatabase.java
  2. 8
      src/main/java/com/fr/function/ReportCheck.java
  3. 8
      src/main/java/com/fr/io/CreateGenericTemplate.java
  4. 8
      src/main/java/com/fr/io/ExcelToCpt.java
  5. 8
      src/main/java/com/fr/io/ExcuteDemo.java
  6. 8
      src/main/java/com/fr/io/ExportApi.java
  7. 8
      src/main/java/com/fr/io/ExportBatch.java
  8. 8
      src/main/java/com/fr/io/ExportExcel.java
  9. 8
      src/main/java/com/fr/io/ExportReports.java
  10. 17
      src/main/java/com/fr/io/JavaPrint.java
  11. 6
      src/main/java/com/fr/io/SaveReportToDatabase.java
  12. 8
      src/main/java/com/fr/io/SetParameterWindow.java
  13. 8
      src/main/java/com/fr/io/SimpleDemo.java
  14. 376
      src/test/java/WEB-INF/assist/phantomjs/lib/format.js
  15. 15
      src/test/java/WEB-INF/assist/phantomjs/lib/van-convert.js
  16. 1533
      src/test/java/WEB-INF/assist/phantomjs/lib/vancharts-all.js
  17. 401
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux32/ChangeLog
  18. 22
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux32/LICENSE.BSD
  19. 29
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux32/README.md
  20. BIN
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux32/bin/phantomjs
  21. 36
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux32/third-party.txt
  22. 401
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux64/ChangeLog
  23. 22
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux64/LICENSE.BSD
  24. 29
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux64/README.md
  25. BIN
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux64/bin/phantomjs
  26. 36
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux64/third-party.txt
  27. 401
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-macos/ChangeLog
  28. 22
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-macos/LICENSE.BSD
  29. 29
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-macos/README.md
  30. BIN
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-macos/bin/phantomjs
  31. 36
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-macos/third-party.txt
  32. 401
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-windows/ChangeLog
  33. 22
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-windows/LICENSE.BSD
  34. 29
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-windows/README.md
  35. BIN
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-windows/bin/phantomjs.exe
  36. 36
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-windows/third-party.txt
  37. BIN
      src/test/java/WEB-INF/assist/phantomjs/phantomjs-winxp/bin/phantomjs.exe
  38. 43
      src/test/java/WEB-INF/reportlets/demo.cpt
  39. 80
      src/test/java/com/fr/demo/ModuleStartTest.java
  40. 51
      src/test/java/com/fr/demo/TestLogAppender.java

8
src/main/java/com/fr/demo/SaveReportToDatabase.java

@ -2,14 +2,17 @@ package com.fr.demo;
import com.fr.base.operator.common.CommonOperator; import com.fr.base.operator.common.CommonOperator;
import com.fr.chart.activator.ChartBaseActivator; import com.fr.chart.activator.ChartBaseActivator;
import com.fr.cluster.engine.activator.standalone.StandaloneModeActivator;
import com.fr.config.activator.BaseDBActivator; import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator; import com.fr.config.activator.ConfigurationActivator;
import com.fr.env.operator.CommonOperatorImpl; import com.fr.env.operator.CommonOperatorImpl;
import com.fr.general.I18nResource;
import com.fr.module.Module; import com.fr.module.Module;
import com.fr.module.tool.ActivatorToolBox; import com.fr.module.tool.ActivatorToolBox;
import com.fr.report.ReportActivator; import com.fr.report.ReportActivator;
import com.fr.report.RestrictionActivator; import com.fr.report.RestrictionActivator;
import com.fr.report.module.ReportBaseActivator; import com.fr.report.module.ReportBaseActivator;
import com.fr.scheduler.SchedulerActivator;
import com.fr.store.StateServerActivator; import com.fr.store.StateServerActivator;
import com.fr.workspace.simple.SimpleWork; import com.fr.workspace.simple.SimpleWork;
@ -30,7 +33,9 @@ public class SaveReportToDatabase {
// 定义报表运行环境,用于执行报表 // 定义报表运行环境,用于执行报表
Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(), Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
new ConfigurationActivator(), new ConfigurationActivator(),
new StandaloneModeActivator(),
new StateServerActivator(), new StateServerActivator(),
new SchedulerActivator(),
new ReportBaseActivator(), new ReportBaseActivator(),
new RestrictionActivator(), new RestrictionActivator(),
new ReportActivator(), new ReportActivator(),
@ -38,7 +43,10 @@ public class SaveReportToDatabase {
SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl()); SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径 String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径
SimpleWork.checkIn(envpath); SimpleWork.checkIn(envpath);
I18nResource.getInstance();
module.start(); module.start();
// 连接数据库 // 连接数据库
String driver = "com.mysql.jdbc.Driver"; String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://review.finedevelop.com:3306/susie"; String url = "jdbc:mysql://review.finedevelop.com:3306/susie";

8
src/main/java/com/fr/function/ReportCheck.java

@ -4,9 +4,11 @@ package com.fr.function;
import com.fr.base.ResultFormula; import com.fr.base.ResultFormula;
import com.fr.base.operator.common.CommonOperator; import com.fr.base.operator.common.CommonOperator;
import com.fr.chart.activator.ChartBaseActivator; import com.fr.chart.activator.ChartBaseActivator;
import com.fr.cluster.engine.activator.standalone.StandaloneModeActivator;
import com.fr.config.activator.BaseDBActivator; import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator; import com.fr.config.activator.ConfigurationActivator;
import com.fr.env.operator.CommonOperatorImpl; import com.fr.env.operator.CommonOperatorImpl;
import com.fr.general.I18nResource;
import com.fr.io.TemplateWorkBookIO; import com.fr.io.TemplateWorkBookIO;
import com.fr.json.JSONArray; import com.fr.json.JSONArray;
import com.fr.json.JSONObject; import com.fr.json.JSONObject;
@ -19,6 +21,7 @@ import com.fr.report.RestrictionActivator;
import com.fr.report.cell.CellElement; import com.fr.report.cell.CellElement;
import com.fr.report.module.ReportBaseActivator; import com.fr.report.module.ReportBaseActivator;
import com.fr.report.report.ResultReport; import com.fr.report.report.ResultReport;
import com.fr.scheduler.SchedulerActivator;
import com.fr.script.AbstractFunction; import com.fr.script.AbstractFunction;
import com.fr.stable.WriteActor; import com.fr.stable.WriteActor;
import com.fr.store.StateServerActivator; import com.fr.store.StateServerActivator;
@ -40,7 +43,9 @@ public class ReportCheck extends AbstractFunction {
// 定义报表运行环境,用于执行报表 // 定义报表运行环境,用于执行报表
Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(), Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
new ConfigurationActivator(), new ConfigurationActivator(),
new StandaloneModeActivator(),
new StateServerActivator(), new StateServerActivator(),
new SchedulerActivator(),
new ReportBaseActivator(), new ReportBaseActivator(),
new RestrictionActivator(), new RestrictionActivator(),
new ReportActivator(), new ReportActivator(),
@ -48,7 +53,10 @@ public class ReportCheck extends AbstractFunction {
SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl()); SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径 String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径
SimpleWork.checkIn(envpath); SimpleWork.checkIn(envpath);
I18nResource.getInstance();
module.start(); module.start();
try { try {
ResultWorkBook rworkbook = null; ResultWorkBook rworkbook = null;
// 读取模板 // 读取模板

8
src/main/java/com/fr/io/CreateGenericTemplate.java

@ -3,11 +3,13 @@ package com.fr.io;
import com.fr.base.TableData; import com.fr.base.TableData;
import com.fr.base.operator.common.CommonOperator; import com.fr.base.operator.common.CommonOperator;
import com.fr.chart.activator.ChartBaseActivator; import com.fr.chart.activator.ChartBaseActivator;
import com.fr.cluster.engine.activator.standalone.StandaloneModeActivator;
import com.fr.config.activator.BaseDBActivator; import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator; import com.fr.config.activator.ConfigurationActivator;
import com.fr.data.impl.DBTableData; import com.fr.data.impl.DBTableData;
import com.fr.data.impl.NameDatabaseConnection; import com.fr.data.impl.NameDatabaseConnection;
import com.fr.env.operator.CommonOperatorImpl; import com.fr.env.operator.CommonOperatorImpl;
import com.fr.general.I18nResource;
import com.fr.general.data.TableDataColumn; import com.fr.general.data.TableDataColumn;
import com.fr.main.impl.WorkBook; import com.fr.main.impl.WorkBook;
import com.fr.module.Module; import com.fr.module.Module;
@ -19,6 +21,7 @@ import com.fr.report.cell.TemplateCellElement;
import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.report.cell.cellattr.core.group.DSColumn;
import com.fr.report.module.ReportBaseActivator; import com.fr.report.module.ReportBaseActivator;
import com.fr.report.worksheet.WorkSheet; import com.fr.report.worksheet.WorkSheet;
import com.fr.scheduler.SchedulerActivator;
import com.fr.store.StateServerActivator; import com.fr.store.StateServerActivator;
import com.fr.workspace.simple.SimpleWork; import com.fr.workspace.simple.SimpleWork;
@ -32,7 +35,9 @@ public class CreateGenericTemplate {
// 定义报表运行环境,用于执行报表 // 定义报表运行环境,用于执行报表
Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(), Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
new ConfigurationActivator(), new ConfigurationActivator(),
new StandaloneModeActivator(),
new StateServerActivator(), new StateServerActivator(),
new SchedulerActivator(),
new ReportBaseActivator(), new ReportBaseActivator(),
new RestrictionActivator(), new RestrictionActivator(),
new ReportActivator(), new ReportActivator(),
@ -40,7 +45,10 @@ public class CreateGenericTemplate {
SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl()); SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径 String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径
SimpleWork.checkIn(envpath); SimpleWork.checkIn(envpath);
I18nResource.getInstance();
module.start(); module.start();
WorkBook wb = new WorkBook(); WorkBook wb = new WorkBook();
//添加新的模板数据集 //添加新的模板数据集
TableData td = genericTableData("FRDemo", "SELECT * FROM Equipment"); TableData td = genericTableData("FRDemo", "SELECT * FROM Equipment");

8
src/main/java/com/fr/io/ExcelToCpt.java

@ -2,9 +2,11 @@ package com.fr.io;
import com.fr.base.operator.common.CommonOperator; import com.fr.base.operator.common.CommonOperator;
import com.fr.chart.activator.ChartBaseActivator; import com.fr.chart.activator.ChartBaseActivator;
import com.fr.cluster.engine.activator.standalone.StandaloneModeActivator;
import com.fr.config.activator.BaseDBActivator; import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator; import com.fr.config.activator.ConfigurationActivator;
import com.fr.env.operator.CommonOperatorImpl; import com.fr.env.operator.CommonOperatorImpl;
import com.fr.general.I18nResource;
import com.fr.io.importer.Excel2007ReportImporter; import com.fr.io.importer.Excel2007ReportImporter;
import com.fr.main.TemplateWorkBook; import com.fr.main.TemplateWorkBook;
import com.fr.main.impl.WorkBook; import com.fr.main.impl.WorkBook;
@ -13,6 +15,7 @@ import com.fr.module.tool.ActivatorToolBox;
import com.fr.report.ReportActivator; import com.fr.report.ReportActivator;
import com.fr.report.RestrictionActivator; import com.fr.report.RestrictionActivator;
import com.fr.report.module.ReportBaseActivator; import com.fr.report.module.ReportBaseActivator;
import com.fr.scheduler.SchedulerActivator;
import com.fr.store.StateServerActivator; import com.fr.store.StateServerActivator;
import com.fr.workspace.simple.SimpleWork; import com.fr.workspace.simple.SimpleWork;
@ -27,7 +30,9 @@ public class ExcelToCpt {
// 定义报表运行环境,用于执行报表 // 定义报表运行环境,用于执行报表
Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(), Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
new ConfigurationActivator(), new ConfigurationActivator(),
new StandaloneModeActivator(),
new StateServerActivator(), new StateServerActivator(),
new SchedulerActivator(),
new ReportBaseActivator(), new ReportBaseActivator(),
new RestrictionActivator(), new RestrictionActivator(),
new ReportActivator(), new ReportActivator(),
@ -35,7 +40,10 @@ public class ExcelToCpt {
SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl()); SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径 String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径
SimpleWork.checkIn(envpath); SimpleWork.checkIn(envpath);
I18nResource.getInstance();
module.start(); module.start();
File excelFile = new File("//Users//susie//Downloads//aa.xlsx"); // 获取EXCEL文件 File excelFile = new File("//Users//susie//Downloads//aa.xlsx"); // 获取EXCEL文件
FileInputStream a = new FileInputStream(excelFile); FileInputStream a = new FileInputStream(excelFile);

8
src/main/java/com/fr/io/ExcuteDemo.java

@ -2,9 +2,11 @@ package com.fr.io;
import com.fr.base.operator.common.CommonOperator; import com.fr.base.operator.common.CommonOperator;
import com.fr.chart.activator.ChartBaseActivator; import com.fr.chart.activator.ChartBaseActivator;
import com.fr.cluster.engine.activator.standalone.StandaloneModeActivator;
import com.fr.config.activator.BaseDBActivator; import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator; import com.fr.config.activator.ConfigurationActivator;
import com.fr.env.operator.CommonOperatorImpl; import com.fr.env.operator.CommonOperatorImpl;
import com.fr.general.I18nResource;
import com.fr.io.exporter.ExcelExporter; import com.fr.io.exporter.ExcelExporter;
import com.fr.main.TemplateWorkBook; import com.fr.main.TemplateWorkBook;
import com.fr.main.workbook.ResultWorkBook; import com.fr.main.workbook.ResultWorkBook;
@ -13,6 +15,7 @@ import com.fr.module.tool.ActivatorToolBox;
import com.fr.report.ReportActivator; import com.fr.report.ReportActivator;
import com.fr.report.RestrictionActivator; import com.fr.report.RestrictionActivator;
import com.fr.report.module.ReportBaseActivator; import com.fr.report.module.ReportBaseActivator;
import com.fr.scheduler.SchedulerActivator;
import com.fr.stable.WriteActor; import com.fr.stable.WriteActor;
import com.fr.store.StateServerActivator; import com.fr.store.StateServerActivator;
import com.fr.workspace.simple.SimpleWork; import com.fr.workspace.simple.SimpleWork;
@ -28,7 +31,9 @@ public class ExcuteDemo {
// 定义报表运行环境,用于执行报表 // 定义报表运行环境,用于执行报表
Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(), Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
new ConfigurationActivator(), new ConfigurationActivator(),
new StandaloneModeActivator(),
new StateServerActivator(), new StateServerActivator(),
new SchedulerActivator(),
new ReportBaseActivator(), new ReportBaseActivator(),
new RestrictionActivator(), new RestrictionActivator(),
new ReportActivator(), new ReportActivator(),
@ -36,7 +41,10 @@ public class ExcuteDemo {
SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl()); SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径 String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径
SimpleWork.checkIn(envpath); SimpleWork.checkIn(envpath);
I18nResource.getInstance();
module.start(); module.start();
// 读取模板 // 读取模板
TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook("//doc//Primary//Parameter//Parameter.cpt"); TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook("//doc//Primary//Parameter//Parameter.cpt");
/* /*

8
src/main/java/com/fr/io/ExportApi.java

@ -3,9 +3,11 @@ package com.fr.io;
import com.fr.base.Parameter; import com.fr.base.Parameter;
import com.fr.base.operator.common.CommonOperator; import com.fr.base.operator.common.CommonOperator;
import com.fr.chart.activator.ChartBaseActivator; import com.fr.chart.activator.ChartBaseActivator;
import com.fr.cluster.engine.activator.standalone.StandaloneModeActivator;
import com.fr.config.activator.BaseDBActivator; import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator; import com.fr.config.activator.ConfigurationActivator;
import com.fr.env.operator.CommonOperatorImpl; import com.fr.env.operator.CommonOperatorImpl;
import com.fr.general.I18nResource;
import com.fr.io.exporter.CSVExporter; import com.fr.io.exporter.CSVExporter;
import com.fr.io.exporter.EmbeddedTableDataExporter; import com.fr.io.exporter.EmbeddedTableDataExporter;
import com.fr.io.exporter.ExcelExporter; import com.fr.io.exporter.ExcelExporter;
@ -22,6 +24,7 @@ import com.fr.module.tool.ActivatorToolBox;
import com.fr.report.ReportActivator; import com.fr.report.ReportActivator;
import com.fr.report.RestrictionActivator; import com.fr.report.RestrictionActivator;
import com.fr.report.module.ReportBaseActivator; import com.fr.report.module.ReportBaseActivator;
import com.fr.scheduler.SchedulerActivator;
import com.fr.stable.WriteActor; import com.fr.stable.WriteActor;
import com.fr.store.StateServerActivator; import com.fr.store.StateServerActivator;
import com.fr.workspace.simple.SimpleWork; import com.fr.workspace.simple.SimpleWork;
@ -35,7 +38,9 @@ public class ExportApi {
// 定义报表运行环境,用于执行报表 // 定义报表运行环境,用于执行报表
Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(), Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
new ConfigurationActivator(), new ConfigurationActivator(),
new StandaloneModeActivator(),
new StateServerActivator(), new StateServerActivator(),
new SchedulerActivator(),
new ReportBaseActivator(), new ReportBaseActivator(),
new RestrictionActivator(), new RestrictionActivator(),
new ReportActivator(), new ReportActivator(),
@ -43,7 +48,10 @@ public class ExportApi {
SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl()); SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径 String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径
SimpleWork.checkIn(envpath); SimpleWork.checkIn(envpath);
I18nResource.getInstance();
module.start(); module.start();
ResultWorkBook rworkbook = null; ResultWorkBook rworkbook = null;
try { try {
// 未执行模板工作薄 // 未执行模板工作薄

8
src/main/java/com/fr/io/ExportBatch.java

@ -2,9 +2,11 @@ package com.fr.io;
import com.fr.base.operator.common.CommonOperator; import com.fr.base.operator.common.CommonOperator;
import com.fr.chart.activator.ChartBaseActivator; import com.fr.chart.activator.ChartBaseActivator;
import com.fr.cluster.engine.activator.standalone.StandaloneModeActivator;
import com.fr.config.activator.BaseDBActivator; import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator; import com.fr.config.activator.ConfigurationActivator;
import com.fr.env.operator.CommonOperatorImpl; import com.fr.env.operator.CommonOperatorImpl;
import com.fr.general.I18nResource;
import com.fr.io.exporter.ExcelExporter; import com.fr.io.exporter.ExcelExporter;
import com.fr.main.TemplateWorkBook; import com.fr.main.TemplateWorkBook;
import com.fr.main.workbook.ResultWorkBook; import com.fr.main.workbook.ResultWorkBook;
@ -13,6 +15,7 @@ import com.fr.module.tool.ActivatorToolBox;
import com.fr.report.ReportActivator; import com.fr.report.ReportActivator;
import com.fr.report.RestrictionActivator; import com.fr.report.RestrictionActivator;
import com.fr.report.module.ReportBaseActivator; import com.fr.report.module.ReportBaseActivator;
import com.fr.scheduler.SchedulerActivator;
import com.fr.stable.StableUtils; import com.fr.stable.StableUtils;
import com.fr.stable.WriteActor; import com.fr.stable.WriteActor;
import com.fr.store.StateServerActivator; import com.fr.store.StateServerActivator;
@ -33,7 +36,9 @@ public class ExportBatch {
// 定义报表运行环境,用于执行报表 // 定义报表运行环境,用于执行报表
Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(), Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
new ConfigurationActivator(), new ConfigurationActivator(),
new StandaloneModeActivator(),
new StateServerActivator(), new StateServerActivator(),
new SchedulerActivator(),
new ReportBaseActivator(), new ReportBaseActivator(),
new RestrictionActivator(), new RestrictionActivator(),
new ReportActivator(), new ReportActivator(),
@ -41,7 +46,10 @@ public class ExportBatch {
SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl()); SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径 String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径
SimpleWork.checkIn(envpath); SimpleWork.checkIn(envpath);
I18nResource.getInstance();
module.start(); module.start();
// 读取环境下的模板文件 // 读取环境下的模板文件
TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook( TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook(
"//doc//Primary//Parameter//Parameter.cpt"); "//doc//Primary//Parameter//Parameter.cpt");

8
src/main/java/com/fr/io/ExportExcel.java

@ -3,9 +3,11 @@ package com.fr.io;
import com.fr.base.Parameter; import com.fr.base.Parameter;
import com.fr.base.operator.common.CommonOperator; import com.fr.base.operator.common.CommonOperator;
import com.fr.chart.activator.ChartBaseActivator; import com.fr.chart.activator.ChartBaseActivator;
import com.fr.cluster.engine.activator.standalone.StandaloneModeActivator;
import com.fr.config.activator.BaseDBActivator; import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator; import com.fr.config.activator.ConfigurationActivator;
import com.fr.env.operator.CommonOperatorImpl; import com.fr.env.operator.CommonOperatorImpl;
import com.fr.general.I18nResource;
import com.fr.io.exporter.ExcelExporter; import com.fr.io.exporter.ExcelExporter;
import com.fr.io.exporter.LargeDataPageExcelExporter; import com.fr.io.exporter.LargeDataPageExcelExporter;
import com.fr.io.exporter.PageExcel2007Exporter; import com.fr.io.exporter.PageExcel2007Exporter;
@ -21,6 +23,7 @@ import com.fr.report.ReportActivator;
import com.fr.report.RestrictionActivator; import com.fr.report.RestrictionActivator;
import com.fr.report.core.ReportUtils; import com.fr.report.core.ReportUtils;
import com.fr.report.module.ReportBaseActivator; import com.fr.report.module.ReportBaseActivator;
import com.fr.scheduler.SchedulerActivator;
import com.fr.stable.WriteActor; import com.fr.stable.WriteActor;
import com.fr.store.StateServerActivator; import com.fr.store.StateServerActivator;
import com.fr.workspace.simple.SimpleWork; import com.fr.workspace.simple.SimpleWork;
@ -35,7 +38,9 @@ public class ExportExcel {
// 定义报表运行环境,用于执行报表 // 定义报表运行环境,用于执行报表
Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(), Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
new ConfigurationActivator(), new ConfigurationActivator(),
new StandaloneModeActivator(),
new StateServerActivator(), new StateServerActivator(),
new SchedulerActivator(),
new ReportBaseActivator(), new ReportBaseActivator(),
new RestrictionActivator(), new RestrictionActivator(),
new ReportActivator(), new ReportActivator(),
@ -43,7 +48,10 @@ public class ExportExcel {
SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl()); SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径 String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径
SimpleWork.checkIn(envpath); SimpleWork.checkIn(envpath);
I18nResource.getInstance();
module.start(); module.start();
ResultWorkBook rworkbook = null; ResultWorkBook rworkbook = null;
try { try {
// 未执行模板工作薄 // 未执行模板工作薄

8
src/main/java/com/fr/io/ExportReports.java

@ -3,9 +3,11 @@ package com.fr.io;
import com.fr.base.Parameter; import com.fr.base.Parameter;
import com.fr.base.operator.common.CommonOperator; import com.fr.base.operator.common.CommonOperator;
import com.fr.chart.activator.ChartBaseActivator; import com.fr.chart.activator.ChartBaseActivator;
import com.fr.cluster.engine.activator.standalone.StandaloneModeActivator;
import com.fr.config.activator.BaseDBActivator; import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator; import com.fr.config.activator.ConfigurationActivator;
import com.fr.env.operator.CommonOperatorImpl; import com.fr.env.operator.CommonOperatorImpl;
import com.fr.general.I18nResource;
import com.fr.io.exporter.PageExcelExporter; import com.fr.io.exporter.PageExcelExporter;
import com.fr.main.TemplateWorkBook; import com.fr.main.TemplateWorkBook;
import com.fr.main.workbook.PageWorkBook; import com.fr.main.workbook.PageWorkBook;
@ -16,6 +18,7 @@ import com.fr.report.RestrictionActivator;
import com.fr.report.core.ReportUtils; import com.fr.report.core.ReportUtils;
import com.fr.report.module.ReportBaseActivator; import com.fr.report.module.ReportBaseActivator;
import com.fr.report.report.PageReport; import com.fr.report.report.PageReport;
import com.fr.scheduler.SchedulerActivator;
import com.fr.stable.PageActor; import com.fr.stable.PageActor;
import com.fr.store.StateServerActivator; import com.fr.store.StateServerActivator;
import com.fr.workspace.simple.SimpleWork; import com.fr.workspace.simple.SimpleWork;
@ -30,7 +33,9 @@ public class ExportReports {
// 定义报表运行环境,用于执行报表 // 定义报表运行环境,用于执行报表
Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(), Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
new ConfigurationActivator(), new ConfigurationActivator(),
new StandaloneModeActivator(),
new StateServerActivator(), new StateServerActivator(),
new SchedulerActivator(),
new ReportBaseActivator(), new ReportBaseActivator(),
new RestrictionActivator(), new RestrictionActivator(),
new ReportActivator(), new ReportActivator(),
@ -38,7 +43,10 @@ public class ExportReports {
SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl()); SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径 String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径
SimpleWork.checkIn(envpath); SimpleWork.checkIn(envpath);
I18nResource.getInstance();
module.start(); module.start();
// 进行程序的一些必要初始化 // 进行程序的一些必要初始化
try { try {
// 未执行模板工作薄 // 未执行模板工作薄

17
src/main/java/com/fr/io/JavaPrint.java

@ -1,8 +1,13 @@
package com.fr.io; package com.fr.io;
import com.fr.base.Parameter; import com.fr.base.Parameter;
import com.fr.base.operator.common.CommonOperator;
import com.fr.chart.activator.ChartBaseActivator;
import com.fr.cluster.engine.activator.standalone.StandaloneModeActivator;
import com.fr.config.activator.BaseDBActivator; import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator; import com.fr.config.activator.ConfigurationActivator;
import com.fr.env.operator.CommonOperatorImpl;
import com.fr.general.I18nResource;
import com.fr.main.TemplateWorkBook; import com.fr.main.TemplateWorkBook;
import com.fr.module.Module; import com.fr.module.Module;
import com.fr.module.tool.ActivatorToolBox; import com.fr.module.tool.ActivatorToolBox;
@ -10,6 +15,7 @@ import com.fr.print.PrintUtils;
import com.fr.report.ReportActivator; import com.fr.report.ReportActivator;
import com.fr.report.RestrictionActivator; import com.fr.report.RestrictionActivator;
import com.fr.report.module.ReportBaseActivator; import com.fr.report.module.ReportBaseActivator;
import com.fr.scheduler.SchedulerActivator;
import com.fr.store.StateServerActivator; import com.fr.store.StateServerActivator;
import com.fr.workspace.simple.SimpleWork; import com.fr.workspace.simple.SimpleWork;
@ -21,14 +27,19 @@ public class JavaPrint {
// 定义报表运行环境,用于执行报表 // 定义报表运行环境,用于执行报表
Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(), Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
new ConfigurationActivator(), new ConfigurationActivator(),
new StandaloneModeActivator(),
new StateServerActivator(), new StateServerActivator(),
new SchedulerActivator(),
new ReportBaseActivator(), new ReportBaseActivator(),
new RestrictionActivator(), new RestrictionActivator(),
new ReportActivator()); new ReportActivator(),
String envpath;//工程路径 new ChartBaseActivator());
envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF"; SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径
SimpleWork.checkIn(envpath); SimpleWork.checkIn(envpath);
I18nResource.getInstance();
module.start(); module.start();
try { try {
TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook("GettingStarted.cpt"); TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook("GettingStarted.cpt");
// 参数传值 // 参数传值

6
src/main/java/com/fr/io/SaveReportToDatabase.java

@ -2,14 +2,17 @@ package com.fr.io;
import com.fr.base.operator.common.CommonOperator; import com.fr.base.operator.common.CommonOperator;
import com.fr.chart.activator.ChartBaseActivator; import com.fr.chart.activator.ChartBaseActivator;
import com.fr.cluster.engine.activator.standalone.StandaloneModeActivator;
import com.fr.config.activator.BaseDBActivator; import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator; import com.fr.config.activator.ConfigurationActivator;
import com.fr.env.operator.CommonOperatorImpl; import com.fr.env.operator.CommonOperatorImpl;
import com.fr.general.I18nResource;
import com.fr.module.Module; import com.fr.module.Module;
import com.fr.module.tool.ActivatorToolBox; import com.fr.module.tool.ActivatorToolBox;
import com.fr.report.ReportActivator; import com.fr.report.ReportActivator;
import com.fr.report.RestrictionActivator; import com.fr.report.RestrictionActivator;
import com.fr.report.module.ReportBaseActivator; import com.fr.report.module.ReportBaseActivator;
import com.fr.scheduler.SchedulerActivator;
import com.fr.store.StateServerActivator; import com.fr.store.StateServerActivator;
import com.fr.workspace.simple.SimpleWork; import com.fr.workspace.simple.SimpleWork;
@ -40,7 +43,9 @@ public class SaveReportToDatabase {
// 定义报表运行环境,用于执行报表 // 定义报表运行环境,用于执行报表
Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(), Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
new ConfigurationActivator(), new ConfigurationActivator(),
new StandaloneModeActivator(),
new StateServerActivator(), new StateServerActivator(),
new SchedulerActivator(),
new ReportBaseActivator(), new ReportBaseActivator(),
new RestrictionActivator(), new RestrictionActivator(),
new ReportActivator(), new ReportActivator(),
@ -48,6 +53,7 @@ public class SaveReportToDatabase {
SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl()); SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径 String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径
SimpleWork.checkIn(envpath); SimpleWork.checkIn(envpath);
I18nResource.getInstance();
module.start(); module.start();
File cptfile = new File("//doc//Primary//Parameter//Parameter.cpt"); File cptfile = new File("//doc//Primary//Parameter//Parameter.cpt");

8
src/main/java/com/fr/io/SetParameterWindow.java

@ -3,10 +3,12 @@ package com.fr.io;
import com.fr.base.background.ColorBackground; import com.fr.base.background.ColorBackground;
import com.fr.base.operator.common.CommonOperator; import com.fr.base.operator.common.CommonOperator;
import com.fr.chart.activator.ChartBaseActivator; import com.fr.chart.activator.ChartBaseActivator;
import com.fr.cluster.engine.activator.standalone.StandaloneModeActivator;
import com.fr.config.activator.BaseDBActivator; import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator; import com.fr.config.activator.ConfigurationActivator;
import com.fr.env.operator.CommonOperatorImpl; import com.fr.env.operator.CommonOperatorImpl;
import com.fr.general.Background; import com.fr.general.Background;
import com.fr.general.I18nResource;
import com.fr.io.exporter.EmbeddedTableDataExporter; import com.fr.io.exporter.EmbeddedTableDataExporter;
import com.fr.main.impl.WorkBook; import com.fr.main.impl.WorkBook;
import com.fr.main.parameter.ReportParameterAttr; import com.fr.main.parameter.ReportParameterAttr;
@ -15,6 +17,7 @@ import com.fr.module.tool.ActivatorToolBox;
import com.fr.report.ReportActivator; import com.fr.report.ReportActivator;
import com.fr.report.RestrictionActivator; import com.fr.report.RestrictionActivator;
import com.fr.report.module.ReportBaseActivator; import com.fr.report.module.ReportBaseActivator;
import com.fr.scheduler.SchedulerActivator;
import com.fr.store.StateServerActivator; import com.fr.store.StateServerActivator;
import com.fr.workspace.simple.SimpleWork; import com.fr.workspace.simple.SimpleWork;
@ -28,7 +31,9 @@ public class SetParameterWindow {
// 定义报表运行环境,用于执行报表 // 定义报表运行环境,用于执行报表
Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(), Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
new ConfigurationActivator(), new ConfigurationActivator(),
new StandaloneModeActivator(),
new StateServerActivator(), new StateServerActivator(),
new SchedulerActivator(),
new ReportBaseActivator(), new ReportBaseActivator(),
new RestrictionActivator(), new RestrictionActivator(),
new ReportActivator(), new ReportActivator(),
@ -36,7 +41,10 @@ public class SetParameterWindow {
SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl()); SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径 String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径
SimpleWork.checkIn(envpath); SimpleWork.checkIn(envpath);
I18nResource.getInstance();
module.start(); module.start();
WorkBook workbook = (WorkBook) TemplateWorkBookIO WorkBook workbook = (WorkBook) TemplateWorkBookIO
.readTemplateWorkBook( .readTemplateWorkBook(
"//doc//Primary//Parameter//Parameter.cpt"); "//doc//Primary//Parameter//Parameter.cpt");

8
src/main/java/com/fr/io/SimpleDemo.java

@ -3,10 +3,12 @@ package com.fr.io;
import com.fr.base.Style; import com.fr.base.Style;
import com.fr.base.operator.common.CommonOperator; import com.fr.base.operator.common.CommonOperator;
import com.fr.chart.activator.ChartBaseActivator; import com.fr.chart.activator.ChartBaseActivator;
import com.fr.cluster.engine.activator.standalone.StandaloneModeActivator;
import com.fr.config.activator.BaseDBActivator; import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator; import com.fr.config.activator.ConfigurationActivator;
import com.fr.env.operator.CommonOperatorImpl; import com.fr.env.operator.CommonOperatorImpl;
import com.fr.general.FRFont; import com.fr.general.FRFont;
import com.fr.general.I18nResource;
import com.fr.main.impl.WorkBook; import com.fr.main.impl.WorkBook;
import com.fr.module.Module; import com.fr.module.Module;
import com.fr.module.tool.ActivatorToolBox; import com.fr.module.tool.ActivatorToolBox;
@ -15,6 +17,7 @@ import com.fr.report.RestrictionActivator;
import com.fr.report.cell.CellElement; import com.fr.report.cell.CellElement;
import com.fr.report.elementcase.TemplateElementCase; import com.fr.report.elementcase.TemplateElementCase;
import com.fr.report.module.ReportBaseActivator; import com.fr.report.module.ReportBaseActivator;
import com.fr.scheduler.SchedulerActivator;
import com.fr.store.StateServerActivator; import com.fr.store.StateServerActivator;
import com.fr.workspace.simple.SimpleWork; import com.fr.workspace.simple.SimpleWork;
@ -28,7 +31,9 @@ public class SimpleDemo {
// 定义报表运行环境,用于执行报表 // 定义报表运行环境,用于执行报表
Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(), Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
new ConfigurationActivator(), new ConfigurationActivator(),
new StandaloneModeActivator(),
new StateServerActivator(), new StateServerActivator(),
new SchedulerActivator(),
new ReportBaseActivator(), new ReportBaseActivator(),
new RestrictionActivator(), new RestrictionActivator(),
new ReportActivator(), new ReportActivator(),
@ -36,7 +41,10 @@ public class SimpleDemo {
SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl()); SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径 String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路径
SimpleWork.checkIn(envpath); SimpleWork.checkIn(envpath);
I18nResource.getInstance();
module.start(); module.start();
try { try {
WorkBook workbook = (WorkBook) TemplateWorkBookIO WorkBook workbook = (WorkBook) TemplateWorkBookIO
.readTemplateWorkBook( .readTemplateWorkBook(

376
src/test/java/WEB-INF/assist/phantomjs/lib/format.js

@ -0,0 +1,376 @@
/*!
* Includes Sizzle.js
* http://sizzlejs.com/
*
* Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors
* Released under the MIT license
* http://jquery.org/license
*
* Date: 2013-2-4
*/
(function(a2,aG){var ai,w,aC=typeof aG,l=a2.document,aL=a2.location,bi=a2.jQuery,H=a2.$,aa={},a6=[],s="1.9.1",aI=a6.concat,ao=a6.push,a4=a6.slice,aM=a6.indexOf,z=aa.toString,V=aa.hasOwnProperty,aQ=s.trim,bJ=function(e,b3){return new bJ.fn.init(e,b3,w)},bA=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ac=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,br=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,a=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,bh=/^[\],:{}\s]*$/,bk=/(?:^|:|,)(?:\s*\[)+/g,bG=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,aZ=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,bS=/^-ms-/,aV=/-([\da-z])/gi,M=function(e,b3){return b3.toUpperCase()
},bW=function(e){if(l.addEventListener||e.type==="load"||l.readyState==="complete"){bl();bJ.ready()}},bl=function(){if(l.addEventListener){l.removeEventListener("DOMContentLoaded",bW,false);a2.removeEventListener("load",bW,false)}else{l.detachEvent("onreadystatechange",bW);a2.detachEvent("onload",bW)}};bJ.fn=bJ.prototype={jquery:s,constructor:bJ,init:function(e,b5,b4){var b3,b6;if(!e){return this}if(typeof e==="string"){if(e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3){b3=[null,e,null]
}else{b3=br.exec(e)}if(b3&&(b3[1]||!b5)){if(b3[1]){b5=b5 instanceof bJ?b5[0]:b5;bJ.merge(this,bJ.parseHTML(b3[1],b5&&b5.nodeType?b5.ownerDocument||b5:l,true));if(a.test(b3[1])&&bJ.isPlainObject(b5)){for(b3 in b5){if(bJ.isFunction(this[b3])){this[b3](b5[b3])}else{this.attr(b3,b5[b3])}}}return this}else{b6=l.getElementById(b3[2]);if(b6&&b6.parentNode){if(b6.id!==b3[2]){return b4.find(e)}this.length=1;this[0]=b6}this.context=l;this.selector=e;return this}}else{if(!b5||b5.jquery){return(b5||b4).find(e)
}else{return this.constructor(b5).find(e)}}}else{if(e.nodeType){this.context=this[0]=e;this.length=1;return this}else{if(bJ.isFunction(e)){return b4.ready(e)}}}if(e.selector!==aG){this.selector=e.selector;this.context=e.context}return bJ.makeArray(e,this)},selector:"",length:0,size:function(){return this.length},toArray:function(){return a4.call(this)},get:function(e){return e==null?this.toArray():(e<0?this[this.length+e]:this[e])},pushStack:function(e){var b3=bJ.merge(this.constructor(),e);b3.prevObject=this;
b3.context=this.context;return b3},each:function(b3,e){return bJ.each(this,b3,e)},ready:function(e){bJ.ready.promise().done(e);return this},slice:function(){return this.pushStack(a4.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(b4){var e=this.length,b3=+b4+(b4<0?e:0);return this.pushStack(b3>=0&&b3<e?[this[b3]]:[])},map:function(e){return this.pushStack(bJ.map(this,function(b4,b3){return e.call(b4,b3,b4)}))},end:function(){return this.prevObject||this.constructor(null)
},push:ao,sort:[].sort,splice:[].splice};bJ.fn.init.prototype=bJ.fn;bJ.extend=bJ.fn.extend=function(){var e,b8,b3,b4,cb,b9,b7=arguments[0]||{},b6=1,b5=arguments.length,ca=false;if(typeof b7==="boolean"){ca=b7;b7=arguments[1]||{};b6=2}if(typeof b7!=="object"&&!bJ.isFunction(b7)){b7={}}if(b5===b6){b7=this;--b6}for(;b6<b5;b6++){if((cb=arguments[b6])!=null){for(b4 in cb){e=b7[b4];b3=cb[b4];if(b7===b3){continue}if(ca&&b3&&(bJ.isPlainObject(b3)||(b8=bJ.isArray(b3)))){if(b8){b8=false;b9=e&&bJ.isArray(e)?e:[]
}else{b9=e&&bJ.isPlainObject(e)?e:{}}b7[b4]=bJ.extend(ca,b9,b3)}else{if(b3!==aG){b7[b4]=b3}}}}}return b7};bJ.extend({noConflict:function(e){if(a2.$===bJ){a2.$=H}if(e&&a2.jQuery===bJ){a2.jQuery=bi}return bJ},isReady:false,readyWait:1,holdReady:function(e){if(e){bJ.readyWait++}else{bJ.ready(true)}},ready:function(e){if(e===true?--bJ.readyWait:bJ.isReady){return}if(!l.body){return setTimeout(bJ.ready)}bJ.isReady=true;if(e!==true&&--bJ.readyWait>0){return}ai.resolveWith(l,[bJ]);if(bJ.fn.trigger){bJ(l).trigger("ready").off("ready")
}},isFunction:function(e){return bJ.type(e)==="function"},isArray:Array.isArray||function(e){return bJ.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return !isNaN(parseFloat(e))&&isFinite(e)},type:function(e){if(e==null){return String(e)}return typeof e==="object"||typeof e==="function"?aa[z.call(e)]||"object":typeof e},isPlainObject:function(b5){if(!b5||bJ.type(b5)!=="object"||b5.nodeType||bJ.isWindow(b5)){return false}try{if(b5.constructor&&!V.call(b5,"constructor")&&!V.call(b5.constructor.prototype,"isPrototypeOf")){return false
}}catch(b4){return false}var b3;for(b3 in b5){}return b3===aG||V.call(b5,b3)},isEmptyObject:function(b3){var e;for(e in b3){return false}return true},error:function(e){throw new Error(e)},parseHTML:function(b6,b4,b5){if(!b6||typeof b6!=="string"){return null}if(typeof b4==="boolean"){b5=b4;b4=false}b4=b4||l;var b3=a.exec(b6),e=!b5&&[];if(b3){return[b4.createElement(b3[1])]}b3=bJ.buildFragment([b6],b4,e);if(e){bJ(e).remove()}return bJ.merge([],b3.childNodes)},parseJSON:function(e){if(a2.JSON&&a2.JSON.parse){return a2.JSON.parse(e)
}if(e===null){return e}if(typeof e==="string"){e=bJ.trim(e);if(e){if(bh.test(e.replace(bG,"@").replace(aZ,"]").replace(bk,""))){return(new Function("return "+e))()}}}bJ.error("Invalid JSON: "+e)},parseXML:function(b5){var b3,b4;if(!b5||typeof b5!=="string"){return null}try{if(a2.DOMParser){b4=new DOMParser();b3=b4.parseFromString(b5,"text/xml")}else{b3=new ActiveXObject("Microsoft.XMLDOM");b3.async="false";b3.loadXML(b5)}}catch(b6){b3=aG}if(!b3||!b3.documentElement||b3.getElementsByTagName("parsererror").length){bJ.error("Invalid XML: "+b5)
}return b3},noop:function(){},globalEval:function(e){if(e&&bJ.trim(e)){(a2.execScript||function(b3){a2["eval"].call(a2,b3)})(e)}},camelCase:function(e){return e.replace(bS,"ms-").replace(aV,M)},nodeName:function(b3,e){return b3.nodeName&&b3.nodeName.toLowerCase()===e.toLowerCase()},each:function(b7,b8,b3){var b6,b4=0,b5=b7.length,e=ab(b7);if(b3){if(e){for(;b4<b5;b4++){b6=b8.apply(b7[b4],b3);if(b6===false){break}}}else{for(b4 in b7){b6=b8.apply(b7[b4],b3);if(b6===false){break}}}}else{if(e){for(;b4<b5;
b4++){b6=b8.call(b7[b4],b4,b7[b4]);if(b6===false){break}}}else{for(b4 in b7){b6=b8.call(b7[b4],b4,b7[b4]);if(b6===false){break}}}}return b7},trim:aQ&&!aQ.call("\uFEFF\xA0")?function(e){return e==null?"":aQ.call(e)}:function(e){return e==null?"":(e+"").replace(C,"")},makeArray:function(e,b4){var b3=b4||[];if(e!=null){if(ab(Object(e))){bJ.merge(b3,typeof e==="string"?[e]:e)}else{ao.call(b3,e)}}return b3},inArray:function(b5,b3,b4){var e;if(b3){if(aM){return aM.call(b3,b5,b4)}e=b3.length;b4=b4?b4<0?Math.max(0,e+b4):b4:0;
for(;b4<e;b4++){if(b4 in b3&&b3[b4]===b5){return b4}}}return -1},merge:function(b6,b4){var e=b4.length,b5=b6.length,b3=0;if(typeof e==="number"){for(;b3<e;b3++){b6[b5++]=b4[b3]}}else{while(b4[b3]!==aG){b6[b5++]=b4[b3++]}}b6.length=b5;return b6},grep:function(b3,b8,e){var b7,b4=[],b5=0,b6=b3.length;e=!!e;for(;b5<b6;b5++){b7=!!b8(b3[b5],b5);if(e!==b7){b4.push(b3[b5])}}return b4},map:function(b4,b9,e){var b8,b6=0,b7=b4.length,b3=ab(b4),b5=[];if(b3){for(;b6<b7;b6++){b8=b9(b4[b6],b6,e);if(b8!=null){b5[b5.length]=b8
}}}else{for(b6 in b4){b8=b9(b4[b6],b6,e);if(b8!=null){b5[b5.length]=b8}}}return aI.apply([],b5)},guid:1,proxy:function(b6,b5){var e,b4,b3;if(typeof b5==="string"){b3=b6[b5];b5=b6;b6=b3}if(!bJ.isFunction(b6)){return aG}e=a4.call(arguments,2);b4=function(){return b6.apply(b5||this,e.concat(a4.call(arguments)))};b4.guid=b6.guid=b6.guid||bJ.guid++;return b4},access:function(e,b7,b9,b8,b5,cb,ca){var b4=0,b3=e.length,b6=b9==null;if(bJ.type(b9)==="object"){b5=true;for(b4 in b9){bJ.access(e,b7,b4,b9[b4],true,cb,ca)
}}else{if(b8!==aG){b5=true;if(!bJ.isFunction(b8)){ca=true}if(b6){if(ca){b7.call(e,b8);b7=null}else{b6=b7;b7=function(cd,cc,ce){return b6.call(bJ(cd),ce)}}}if(b7){for(;b4<b3;b4++){b7(e[b4],b9,ca?b8:b8.call(e[b4],b4,b7(e[b4],b9)))}}}}return b5?e:b6?b7.call(e):b3?b7(e[0],b9):cb},now:function(){return(new Date()).getTime()}});bJ.ready.promise=function(b6){if(!ai){ai=bJ.Deferred();if(l.readyState==="complete"){setTimeout(bJ.ready)}else{if(l.addEventListener){l.addEventListener("DOMContentLoaded",bW,false);
a2.addEventListener("load",bW,false)}else{l.attachEvent("onreadystatechange",bW);a2.attachEvent("onload",bW);var b5=false;try{b5=a2.frameElement==null&&l.documentElement}catch(b4){}if(b5&&b5.doScroll){(function b3(){if(!bJ.isReady){try{b5.doScroll("left")}catch(b7){return setTimeout(b3,50)}bl();bJ.ready()}})()}}}}return ai.promise(b6)};bJ.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(b3,e){aa["[object "+e+"]"]=e.toLowerCase()});function ab(b4){var b3=b4.length,e=bJ.type(b4);
if(bJ.isWindow(b4)){return false}if(b4.nodeType===1&&b3){return true}return e==="array"||e!=="function"&&(b3===0||typeof b3==="number"&&b3>0&&(b3-1) in b4)}w=bJ(l);var bY={};function ae(b3){var e=bY[b3]={};bJ.each(b3.match(ac)||[],function(b5,b4){e[b4]=true});return e}bJ.Callbacks=function(cc){cc=typeof cc==="string"?(bY[cc]||ae(cc)):bJ.extend({},cc);var b6,b5,e,b7,b8,b4,b9=[],ca=!cc.once&&[],b3=function(cd){b5=cc.memory&&cd;e=true;b8=b4||0;b4=0;b7=b9.length;b6=true;for(;b9&&b8<b7;b8++){if(b9[b8].apply(cd[0],cd[1])===false&&cc.stopOnFalse){b5=false;
break}}b6=false;if(b9){if(ca){if(ca.length){b3(ca.shift())}}else{if(b5){b9=[]}else{cb.disable()}}}},cb={add:function(){if(b9){var ce=b9.length;(function cd(cf){bJ.each(cf,function(ch,cg){var ci=bJ.type(cg);if(ci==="function"){if(!cc.unique||!cb.has(cg)){b9.push(cg)}}else{if(cg&&cg.length&&ci!=="string"){cd(cg)}}})})(arguments);if(b6){b7=b9.length}else{if(b5){b4=ce;b3(b5)}}}return this},remove:function(){if(b9){bJ.each(arguments,function(cf,cd){var ce;while((ce=bJ.inArray(cd,b9,ce))>-1){b9.splice(ce,1);
if(b6){if(ce<=b7){b7--}if(ce<=b8){b8--}}}})}return this},has:function(cd){return cd?bJ.inArray(cd,b9)>-1:!!(b9&&b9.length)},empty:function(){b9=[];return this},disable:function(){b9=ca=b5=aG;return this},disabled:function(){return !b9},lock:function(){ca=aG;if(!b5){cb.disable()}return this},locked:function(){return !ca},fireWith:function(ce,cd){cd=cd||[];cd=[ce,cd.slice?cd.slice():cd];if(b9&&(!e||ca)){if(b6){ca.push(cd)}else{b3(cd)}}return this},fire:function(){cb.fireWith(this,arguments);return this
},fired:function(){return !!e}};return cb};bJ.extend({Deferred:function(b4){var b3=[["resolve","done",bJ.Callbacks("once memory"),"resolved"],["reject","fail",bJ.Callbacks("once memory"),"rejected"],["notify","progress",bJ.Callbacks("memory")]],b5="pending",b6={state:function(){return b5},always:function(){e.done(arguments).fail(arguments);return this},then:function(){var b7=arguments;return bJ.Deferred(function(b8){bJ.each(b3,function(ca,b9){var cc=b9[0],cb=bJ.isFunction(b7[ca])&&b7[ca];e[b9[1]](function(){var cd=cb&&cb.apply(this,arguments);
if(cd&&bJ.isFunction(cd.promise)){cd.promise().done(b8.resolve).fail(b8.reject).progress(b8.notify)}else{b8[cc+"With"](this===b6?b8.promise():this,cb?[cd]:arguments)}})});b7=null}).promise()},promise:function(b7){return b7!=null?bJ.extend(b7,b6):b6}},e={};b6.pipe=b6.then;bJ.each(b3,function(b8,b7){var ca=b7[2],b9=b7[3];b6[b7[1]]=ca.add;if(b9){ca.add(function(){b5=b9},b3[b8^1][2].disable,b3[2][2].lock)}e[b7[0]]=function(){e[b7[0]+"With"](this===e?b6:this,arguments);return this};e[b7[0]+"With"]=ca.fireWith
});b6.promise(e);if(b4){b4.call(e,e)}return e},when:function(b6){var b4=0,b8=a4.call(arguments),e=b8.length,b3=e!==1||(b6&&bJ.isFunction(b6.promise))?e:0,cb=b3===1?b6:bJ.Deferred(),b5=function(cd,ce,cc){return function(cf){ce[cd]=this;cc[cd]=arguments.length>1?a4.call(arguments):cf;if(cc===ca){cb.notifyWith(ce,cc)}else{if(!(--b3)){cb.resolveWith(ce,cc)}}}},ca,b7,b9;if(e>1){ca=new Array(e);b7=new Array(e);b9=new Array(e);for(;b4<e;b4++){if(b8[b4]&&bJ.isFunction(b8[b4].promise)){b8[b4].promise().done(b5(b4,b9,b8)).fail(cb.reject).progress(b5(b4,b7,ca))
}else{--b3}}}if(!b3){cb.resolveWith(b9,b8)}return cb.promise()}});bJ.support=(function(){var ce,cd,cb,ca,cc,b9,b5,b7,b4,b6,b3=l.createElement("div");b3.setAttribute("className","t");b3.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";cd=b3.getElementsByTagName("*");cb=b3.getElementsByTagName("a")[0];if(!cd||!cb||!cd.length){return{}}cc=l.createElement("select");b5=cc.appendChild(l.createElement("option"));ca=b3.getElementsByTagName("input")[0];cb.style.cssText="top:1px;float:left;opacity:.5";
ce={getSetAttribute:b3.className!=="t",leadingWhitespace:b3.firstChild.nodeType===3,tbody:!b3.getElementsByTagName("tbody").length,htmlSerialize:!!b3.getElementsByTagName("link").length,style:/top/.test(cb.getAttribute("style")),hrefNormalized:cb.getAttribute("href")==="/a",opacity:/^0.5/.test(cb.style.opacity),cssFloat:!!cb.style.cssFloat,checkOn:!!ca.value,optSelected:b5.selected,enctype:!!l.createElement("form").enctype,html5Clone:l.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",boxModel:l.compatMode==="CSS1Compat",deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true,boxSizingReliable:true,pixelPosition:false};
ca.checked=true;ce.noCloneChecked=ca.cloneNode(true).checked;cc.disabled=true;ce.optDisabled=!b5.disabled;try{delete b3.test}catch(b8){ce.deleteExpando=false}ca=l.createElement("input");ca.setAttribute("value","");ce.input=ca.getAttribute("value")==="";ca.value="t";ca.setAttribute("type","radio");ce.radioValue=ca.value==="t";ca.setAttribute("checked","t");ca.setAttribute("name","t");b9=l.createDocumentFragment();b9.appendChild(ca);ce.appendChecked=ca.checked;ce.checkClone=b9.cloneNode(true).cloneNode(true).lastChild.checked;
if(b3.attachEvent){b3.attachEvent("onclick",function(){ce.noCloneEvent=false});b3.cloneNode(true).click()}for(b6 in {submit:true,change:true,focusin:true}){b3.setAttribute(b7="on"+b6,"t");ce[b6+"Bubbles"]=b7 in a2||b3.attributes[b7].expando===false}b3.style.backgroundClip="content-box";b3.cloneNode(true).style.backgroundClip="";ce.clearCloneStyle=b3.style.backgroundClip==="content-box";bJ(function(){var cf,ci,ch,cg="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",e=l.getElementsByTagName("body")[0];
if(!e){return}cf=l.createElement("div");cf.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";e.appendChild(cf).appendChild(b3);b3.innerHTML="<table><tr><td></td><td>t</td></tr></table>";ch=b3.getElementsByTagName("td");ch[0].style.cssText="padding:0;margin:0;border:0;display:none";b4=(ch[0].offsetHeight===0);ch[0].style.display="";ch[1].style.display="none";ce.reliableHiddenOffsets=b4&&(ch[0].offsetHeight===0);b3.innerHTML="";b3.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
ce.boxSizing=(b3.offsetWidth===4);ce.doesNotIncludeMarginInBodyOffset=(e.offsetTop!==1);if(a2.getComputedStyle){ce.pixelPosition=(a2.getComputedStyle(b3,null)||{}).top!=="1%";ce.boxSizingReliable=(a2.getComputedStyle(b3,null)||{width:"4px"}).width==="4px";ci=b3.appendChild(l.createElement("div"));ci.style.cssText=b3.style.cssText=cg;ci.style.marginRight=ci.style.width="0";b3.style.width="1px";ce.reliableMarginRight=!parseFloat((a2.getComputedStyle(ci,null)||{}).marginRight)}if(typeof b3.style.zoom!==aC){b3.innerHTML="";
b3.style.cssText=cg+"width:1px;padding:1px;display:inline;zoom:1";ce.inlineBlockNeedsLayout=(b3.offsetWidth===3);b3.style.display="block";b3.innerHTML="<div></div>";b3.firstChild.style.width="5px";ce.shrinkWrapBlocks=(b3.offsetWidth!==3);if(ce.inlineBlockNeedsLayout){e.style.zoom=1}}e.removeChild(cf);cf=b3=ch=ci=null});cd=cc=b9=b5=cb=ca=null;return ce})();var bw=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,aN=/([A-Z])/g;function ba(b5,b3,b7,b6){if(!bJ.acceptData(b5)){return}var b8,ca,cb=bJ.expando,b9=typeof b3==="string",cc=b5.nodeType,e=cc?bJ.cache:b5,b4=cc?b5[cb]:b5[cb]&&cb;
if((!b4||!e[b4]||(!b6&&!e[b4].data))&&b9&&b7===aG){return}if(!b4){if(cc){b5[cb]=b4=a6.pop()||bJ.guid++}else{b4=cb}}if(!e[b4]){e[b4]={};if(!cc){e[b4].toJSON=bJ.noop}}if(typeof b3==="object"||typeof b3==="function"){if(b6){e[b4]=bJ.extend(e[b4],b3)}else{e[b4].data=bJ.extend(e[b4].data,b3)}}b8=e[b4];if(!b6){if(!b8.data){b8.data={}}b8=b8.data}if(b7!==aG){b8[bJ.camelCase(b3)]=b7}if(b9){ca=b8[b3];if(ca==null){ca=b8[bJ.camelCase(b3)]}}else{ca=b8}return ca}function Z(b5,b3,b6){if(!bJ.acceptData(b5)){return
}var b8,b7,b9,ca=b5.nodeType,e=ca?bJ.cache:b5,b4=ca?b5[bJ.expando]:bJ.expando;if(!e[b4]){return}if(b3){b9=b6?e[b4]:e[b4].data;if(b9){if(!bJ.isArray(b3)){if(b3 in b9){b3=[b3]}else{b3=bJ.camelCase(b3);if(b3 in b9){b3=[b3]}else{b3=b3.split(" ")}}}else{b3=b3.concat(bJ.map(b3,bJ.camelCase))}for(b8=0,b7=b3.length;b8<b7;b8++){delete b9[b3[b8]]}if(!(b6?N:bJ.isEmptyObject)(b9)){return}}}if(!b6){delete e[b4].data;if(!N(e[b4])){return}}if(ca){bJ.cleanData([b5],true)}else{if(bJ.support.deleteExpando||e!=e.window){delete e[b4]
}else{e[b4]=null}}}bJ.extend({cache:{},expando:"jQuery"+(s+Math.random()).replace(/\D/g,""),noData:{"embed":true,"object":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000","applet":true},hasData:function(e){e=e.nodeType?bJ.cache[e[bJ.expando]]:e[bJ.expando];return !!e&&!N(e)},data:function(b3,e,b4){return ba(b3,e,b4)},removeData:function(b3,e){return Z(b3,e)},_data:function(b3,e,b4){return ba(b3,e,b4,true)},_removeData:function(b3,e){return Z(b3,e,true)},acceptData:function(b3){if(b3.nodeType&&b3.nodeType!==1&&b3.nodeType!==9){return false
}var e=b3.nodeName&&bJ.noData[b3.nodeName.toLowerCase()];return !e||e!==true&&b3.getAttribute("classid")===e}});bJ.fn.extend({data:function(b5,b8){var b3,e,b6=this[0],b4=0,b7=null;if(b5===aG){if(this.length){b7=bJ.data(b6);if(b6.nodeType===1&&!bJ._data(b6,"parsedAttrs")){b3=b6.attributes;for(;b4<b3.length;b4++){e=b3[b4].name;if(!e.indexOf("data-")){e=bJ.camelCase(e.slice(5));by(b6,e,b7[e])}}bJ._data(b6,"parsedAttrs",true)}}return b7}if(typeof b5==="object"){return this.each(function(){bJ.data(this,b5)
})}return bJ.access(this,function(b9){if(b9===aG){return b6?by(b6,b5,bJ.data(b6,b5)):null}this.each(function(){bJ.data(this,b5,b9)})},null,b8,arguments.length>1,null,true)},removeData:function(e){return this.each(function(){bJ.removeData(this,e)})}});function by(b5,b4,b6){if(b6===aG&&b5.nodeType===1){var b3="data-"+b4.replace(aN,"-$1").toLowerCase();b6=b5.getAttribute(b3);if(typeof b6==="string"){try{b6=b6==="true"?true:b6==="false"?false:b6==="null"?null:+b6+""===b6?+b6:bw.test(b6)?bJ.parseJSON(b6):b6
}catch(b7){}bJ.data(b5,b4,b6)}else{b6=aG}}return b6}function N(b3){var e;for(e in b3){if(e==="data"&&bJ.isEmptyObject(b3[e])){continue}if(e!=="toJSON"){return false}}return true}bJ.extend({queue:function(b4,b3,b5){var e;if(b4){b3=(b3||"fx")+"queue";e=bJ._data(b4,b3);if(b5){if(!e||bJ.isArray(b5)){e=bJ._data(b4,b3,bJ.makeArray(b5))}else{e.push(b5)}}return e||[]}},dequeue:function(b7,b6){b6=b6||"fx";var b3=bJ.queue(b7,b6),b8=b3.length,b5=b3.shift(),e=bJ._queueHooks(b7,b6),b4=function(){bJ.dequeue(b7,b6)
};if(b5==="inprogress"){b5=b3.shift();b8--}e.cur=b5;if(b5){if(b6==="fx"){b3.unshift("inprogress")}delete e.stop;b5.call(b7,b4,e)}if(!b8&&e){e.empty.fire()}},_queueHooks:function(b4,b3){var e=b3+"queueHooks";return bJ._data(b4,e)||bJ._data(b4,e,{empty:bJ.Callbacks("once memory").add(function(){bJ._removeData(b4,b3+"queue");bJ._removeData(b4,e)})})}});bJ.fn.extend({queue:function(e,b3){var b4=2;if(typeof e!=="string"){b3=e;e="fx";b4--}if(arguments.length<b4){return bJ.queue(this[0],e)}return b3===aG?this:this.each(function(){var b5=bJ.queue(this,e,b3);
bJ._queueHooks(this,e);if(e==="fx"&&b5[0]!=="inprogress"){bJ.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){bJ.dequeue(this,e)})},delay:function(b3,e){b3=bJ.fx?bJ.fx.speeds[b3]||b3:b3;e=e||"fx";return this.queue(e,function(b5,b4){var b6=setTimeout(b5,b3);b4.stop=function(){clearTimeout(b6)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(b4,b8){var b3,b5=1,b9=bJ.Deferred(),b7=this,e=this.length,b6=function(){if(!(--b5)){b9.resolveWith(b7,[b7])}};if(typeof b4!=="string"){b8=b4;
b4=aG}b4=b4||"fx";while(e--){b3=bJ._data(b7[e],b4+"queueHooks");if(b3&&b3.empty){b5++;b3.empty.add(b6)}}b6();return b9.promise(b8)}});var a8,bZ,bM=/[\t\r\n]/g,ak=/\r/g,aF=/^(?:input|select|textarea|button|object)$/i,D=/^(?:a|area)$/i,L=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,aq=/^(?:checked|selected)$/i,bP=bJ.support.getSetAttribute,bF=bJ.support.input;bJ.fn.extend({attr:function(e,b3){return bJ.access(this,bJ.attr,e,b3,arguments.length>1)
},removeAttr:function(e){return this.each(function(){bJ.removeAttr(this,e)})},prop:function(e,b3){return bJ.access(this,bJ.prop,e,b3,arguments.length>1)},removeProp:function(e){e=bJ.propFix[e]||e;return this.each(function(){try{this[e]=aG;delete this[e]}catch(b3){}})},addClass:function(b9){var b3,e,ca,b6,b4,b5=0,b7=this.length,b8=typeof b9==="string"&&b9;if(bJ.isFunction(b9)){return this.each(function(cb){bJ(this).addClass(b9.call(this,cb,this.className))})}if(b8){b3=(b9||"").match(ac)||[];for(;b5<b7;
b5++){e=this[b5];ca=e.nodeType===1&&(e.className?(" "+e.className+" ").replace(bM," "):" ");if(ca){b4=0;while((b6=b3[b4++])){if(ca.indexOf(" "+b6+" ")<0){ca+=b6+" "}}e.className=bJ.trim(ca)}}}return this},removeClass:function(b9){var b3,e,ca,b6,b4,b5=0,b7=this.length,b8=arguments.length===0||typeof b9==="string"&&b9;if(bJ.isFunction(b9)){return this.each(function(cb){bJ(this).removeClass(b9.call(this,cb,this.className))})}if(b8){b3=(b9||"").match(ac)||[];for(;b5<b7;b5++){e=this[b5];ca=e.nodeType===1&&(e.className?(" "+e.className+" ").replace(bM," "):"");
if(ca){b4=0;while((b6=b3[b4++])){while(ca.indexOf(" "+b6+" ")>=0){ca=ca.replace(" "+b6+" "," ")}}e.className=b9?bJ.trim(ca):""}}}return this},toggleClass:function(b5,b3){var b4=typeof b5,e=typeof b3==="boolean";if(bJ.isFunction(b5)){return this.each(function(b6){bJ(this).toggleClass(b5.call(this,b6,this.className,b3),b3)})}return this.each(function(){if(b4==="string"){var b8,b7=0,b6=bJ(this),b9=b3,ca=b5.match(ac)||[];while((b8=ca[b7++])){b9=e?b9:!b6.hasClass(b8);b6[b9?"addClass":"removeClass"](b8)
}}else{if(b4===aC||b4==="boolean"){if(this.className){bJ._data(this,"__className__",this.className)}this.className=this.className||b5===false?"":bJ._data(this,"__className__")||""}}})},hasClass:function(e){var b5=" "+e+" ",b4=0,b3=this.length;for(;b4<b3;b4++){if(this[b4].nodeType===1&&(" "+this[b4].className+" ").replace(bM," ").indexOf(b5)>=0){return true}}return false},val:function(b5){var b3,e,b6,b4=this[0];if(!arguments.length){if(b4){e=bJ.valHooks[b4.type]||bJ.valHooks[b4.nodeName.toLowerCase()];
if(e&&"get" in e&&(b3=e.get(b4,"value"))!==aG){return b3}b3=b4.value;return typeof b3==="string"?b3.replace(ak,""):b3==null?"":b3}return}b6=bJ.isFunction(b5);return this.each(function(b8){var b9,b7=bJ(this);if(this.nodeType!==1){return}if(b6){b9=b5.call(this,b8,b7.val())}else{b9=b5}if(b9==null){b9=""}else{if(typeof b9==="number"){b9+=""}else{if(bJ.isArray(b9)){b9=bJ.map(b9,function(ca){return ca==null?"":ca+""})}}}e=bJ.valHooks[this.type]||bJ.valHooks[this.nodeName.toLowerCase()];if(!e||!("set" in e)||e.set(this,b9,"value")===aG){this.value=b9
}})}});bJ.extend({valHooks:{option:{get:function(e){var b3=e.attributes.value;return !b3||b3.specified?e.value:e.text}},select:{get:function(e){var b8,b4,ca=e.options,b6=e.selectedIndex,b5=e.type==="select-one"||b6<0,b9=b5?null:[],b7=b5?b6+1:ca.length,b3=b6<0?b7:b5?b6:0;for(;b3<b7;b3++){b4=ca[b3];if((b4.selected||b3===b6)&&(bJ.support.optDisabled?!b4.disabled:b4.getAttribute("disabled")===null)&&(!b4.parentNode.disabled||!bJ.nodeName(b4.parentNode,"optgroup"))){b8=bJ(b4).val();if(b5){return b8}b9.push(b8)
}}return b9},set:function(b3,b4){var e=bJ.makeArray(b4);bJ(b3).find("option").each(function(){this.selected=bJ.inArray(bJ(this).val(),e)>=0});if(!e.length){b3.selectedIndex=-1}return e}}},attr:function(b7,b5,b8){var e,b6,b4,b3=b7.nodeType;if(!b7||b3===3||b3===8||b3===2){return}if(typeof b7.getAttribute===aC){return bJ.prop(b7,b5,b8)}b6=b3!==1||!bJ.isXMLDoc(b7);if(b6){b5=b5.toLowerCase();e=bJ.attrHooks[b5]||(L.test(b5)?bZ:a8)}if(b8!==aG){if(b8===null){bJ.removeAttr(b7,b5)}else{if(e&&b6&&"set" in e&&(b4=e.set(b7,b8,b5))!==aG){return b4
}else{b7.setAttribute(b5,b8+"");return b8}}}else{if(e&&b6&&"get" in e&&(b4=e.get(b7,b5))!==null){return b4}else{if(typeof b7.getAttribute!==aC){b4=b7.getAttribute(b5)}return b4==null?aG:b4}}},removeAttr:function(b4,b6){var e,b5,b3=0,b7=b6&&b6.match(ac);if(b7&&b4.nodeType===1){while((e=b7[b3++])){b5=bJ.propFix[e]||e;if(L.test(e)){if(!bP&&aq.test(e)){b4[bJ.camelCase("default-"+e)]=b4[b5]=false}else{b4[b5]=false}}else{bJ.attr(b4,e,"")}b4.removeAttribute(bP?e:b5)}}},attrHooks:{type:{set:function(e,b3){if(!bJ.support.radioValue&&b3==="radio"&&bJ.nodeName(e,"input")){var b4=e.value;
e.setAttribute("type",b3);if(b4){e.value=b4}return b3}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(b7,b5,b8){var b4,e,b6,b3=b7.nodeType;if(!b7||b3===3||b3===8||b3===2){return}b6=b3!==1||!bJ.isXMLDoc(b7);if(b6){b5=bJ.propFix[b5]||b5;e=bJ.propHooks[b5]}if(b8!==aG){if(e&&"set" in e&&(b4=e.set(b7,b8,b5))!==aG){return b4
}else{return(b7[b5]=b8)}}else{if(e&&"get" in e&&(b4=e.get(b7,b5))!==null){return b4}else{return b7[b5]}}},propHooks:{tabIndex:{get:function(b3){var e=b3.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):aF.test(b3.nodeName)||D.test(b3.nodeName)&&b3.href?0:aG}}}});bZ={get:function(b5,b3){var b6=bJ.prop(b5,b3),e=typeof b6==="boolean"&&b5.getAttribute(b3),b4=typeof b6==="boolean"?bF&&bP?e!=null:aq.test(b3)?b5[bJ.camelCase("default-"+b3)]:!!e:b5.getAttributeNode(b3);return b4&&b4.value!==false?b3.toLowerCase():aG
},set:function(b3,b4,e){if(b4===false){bJ.removeAttr(b3,e)}else{if(bF&&bP||!aq.test(e)){b3.setAttribute(!bP&&bJ.propFix[e]||e,e)}else{b3[bJ.camelCase("default-"+e)]=b3[e]=true}}return e}};if(!bF||!bP){bJ.attrHooks.value={get:function(b4,b3){var e=b4.getAttributeNode(b3);return bJ.nodeName(b4,"input")?b4.defaultValue:e&&e.specified?e.value:aG},set:function(b3,b4,e){if(bJ.nodeName(b3,"input")){b3.defaultValue=b4}else{return a8&&a8.set(b3,b4,e)}}}}if(!bP){a8=bJ.valHooks.button={get:function(b4,b3){var e=b4.getAttributeNode(b3);
return e&&(b3==="id"||b3==="name"||b3==="coords"?e.value!=="":e.specified)?e.value:aG},set:function(b4,b5,b3){var e=b4.getAttributeNode(b3);if(!e){b4.setAttributeNode((e=b4.ownerDocument.createAttribute(b3)))}e.value=b5+="";return b3==="value"||b5===b4.getAttribute(b3)?b5:aG}};bJ.attrHooks.contenteditable={get:a8.get,set:function(b3,b4,e){a8.set(b3,b4===""?false:b4,e)}};bJ.each(["width","height"],function(b3,e){bJ.attrHooks[e]=bJ.extend(bJ.attrHooks[e],{set:function(b4,b5){if(b5===""){b4.setAttribute(e,"auto");
return b5}}})})}if(!bJ.support.hrefNormalized){bJ.each(["href","src","width","height"],function(b3,e){bJ.attrHooks[e]=bJ.extend(bJ.attrHooks[e],{get:function(b5){var b4=b5.getAttribute(e,2);return b4==null?aG:b4}})});bJ.each(["href","src"],function(b3,e){bJ.propHooks[e]={get:function(b4){return b4.getAttribute(e,4)}}})}if(!bJ.support.style){bJ.attrHooks.style={get:function(e){return e.style.cssText||aG},set:function(e,b3){return(e.style.cssText=b3+"")}}}if(!bJ.support.optSelected){bJ.propHooks.selected=bJ.extend(bJ.propHooks.selected,{get:function(b3){var e=b3.parentNode;
if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!bJ.support.enctype){bJ.propFix.enctype="encoding"}if(!bJ.support.checkOn){bJ.each(["radio","checkbox"],function(){bJ.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}bJ.each(["radio","checkbox"],function(){bJ.valHooks[this]=bJ.extend(bJ.valHooks[this],{set:function(e,b3){if(bJ.isArray(b3)){return(e.checked=bJ.inArray(bJ(e).val(),b3)>=0)}}})});var bH=/^(?:input|select|textarea)$/i,a3=/^key/,bN=/^(?:mouse|contextmenu)|click/,bB=/^(?:focusinfocus|focusoutblur)$/,bu=/^([^.]*)(?:\.(.+)|)$/;
function R(){return true}function X(){return false}bJ.event={global:{},add:function(b6,cb,cg,b8,b7){var b9,ch,ci,b4,cd,ca,cf,b5,ce,e,b3,cc=bJ._data(b6);if(!cc){return}if(cg.handler){b4=cg;cg=b4.handler;b7=b4.selector}if(!cg.guid){cg.guid=bJ.guid++}if(!(ch=cc.events)){ch=cc.events={}}if(!(ca=cc.handle)){ca=cc.handle=function(cj){return typeof bJ!==aC&&(!cj||bJ.event.triggered!==cj.type)?bJ.event.dispatch.apply(ca.elem,arguments):aG};ca.elem=b6}cb=(cb||"").match(ac)||[""];ci=cb.length;while(ci--){b9=bu.exec(cb[ci])||[];
ce=b3=b9[1];e=(b9[2]||"").split(".").sort();cd=bJ.event.special[ce]||{};ce=(b7?cd.delegateType:cd.bindType)||ce;cd=bJ.event.special[ce]||{};cf=bJ.extend({type:ce,origType:b3,data:b8,handler:cg,guid:cg.guid,selector:b7,needsContext:b7&&bJ.expr.match.needsContext.test(b7),namespace:e.join(".")},b4);if(!(b5=ch[ce])){b5=ch[ce]=[];b5.delegateCount=0;if(!cd.setup||cd.setup.call(b6,b8,e,ca)===false){if(b6.addEventListener){b6.addEventListener(ce,ca,false)}else{if(b6.attachEvent){b6.attachEvent("on"+ce,ca)
}}}}if(cd.add){cd.add.call(b6,cf);if(!cf.handler.guid){cf.handler.guid=cg.guid}}if(b7){b5.splice(b5.delegateCount++,0,cf)}else{b5.push(cf)}bJ.event.global[ce]=true}b6=null},remove:function(b5,cb,ci,b6,ca){var b8,cf,b9,b7,ch,cg,cd,b4,ce,e,b3,cc=bJ.hasData(b5)&&bJ._data(b5);if(!cc||!(cg=cc.events)){return}cb=(cb||"").match(ac)||[""];ch=cb.length;while(ch--){b9=bu.exec(cb[ch])||[];ce=b3=b9[1];e=(b9[2]||"").split(".").sort();if(!ce){for(ce in cg){bJ.event.remove(b5,ce+cb[ch],ci,b6,true)}continue}cd=bJ.event.special[ce]||{};
ce=(b6?cd.delegateType:cd.bindType)||ce;b4=cg[ce]||[];b9=b9[2]&&new RegExp("(^|\\.)"+e.join("\\.(?:.*\\.|)")+"(\\.|$)");b7=b8=b4.length;while(b8--){cf=b4[b8];if((ca||b3===cf.origType)&&(!ci||ci.guid===cf.guid)&&(!b9||b9.test(cf.namespace))&&(!b6||b6===cf.selector||b6==="**"&&cf.selector)){b4.splice(b8,1);if(cf.selector){b4.delegateCount--}if(cd.remove){cd.remove.call(b5,cf)}}}if(b7&&!b4.length){if(!cd.teardown||cd.teardown.call(b5,e,cc.handle)===false){bJ.removeEvent(b5,ce,cc.handle)}delete cg[ce]
}}if(bJ.isEmptyObject(cg)){delete cc.handle;bJ._removeData(b5,"events")}},trigger:function(b3,ca,b6,ch){var cb,b5,cf,cg,cd,b9,b8,b7=[b6||l],ce=V.call(b3,"type")?b3.type:b3,b4=V.call(b3,"namespace")?b3.namespace.split("."):[];cf=b9=b6=b6||l;if(b6.nodeType===3||b6.nodeType===8){return}if(bB.test(ce+bJ.event.triggered)){return}if(ce.indexOf(".")>=0){b4=ce.split(".");ce=b4.shift();b4.sort()}b5=ce.indexOf(":")<0&&"on"+ce;b3=b3[bJ.expando]?b3:new bJ.Event(ce,typeof b3==="object"&&b3);b3.isTrigger=true;
b3.namespace=b4.join(".");b3.namespace_re=b3.namespace?new RegExp("(^|\\.)"+b4.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;b3.result=aG;if(!b3.target){b3.target=b6}ca=ca==null?[b3]:bJ.makeArray(ca,[b3]);cd=bJ.event.special[ce]||{};if(!ch&&cd.trigger&&cd.trigger.apply(b6,ca)===false){return}if(!ch&&!cd.noBubble&&!bJ.isWindow(b6)){cg=cd.delegateType||ce;if(!bB.test(cg+ce)){cf=cf.parentNode}for(;cf;cf=cf.parentNode){b7.push(cf);b9=cf}if(b9===(b6.ownerDocument||l)){b7.push(b9.defaultView||b9.parentWindow||a2)
}}b8=0;while((cf=b7[b8++])&&!b3.isPropagationStopped()){b3.type=b8>1?cg:cd.bindType||ce;cb=(bJ._data(cf,"events")||{})[b3.type]&&bJ._data(cf,"handle");if(cb){cb.apply(cf,ca)}cb=b5&&cf[b5];if(cb&&bJ.acceptData(cf)&&cb.apply&&cb.apply(cf,ca)===false){b3.preventDefault()}}b3.type=ce;if(!ch&&!b3.isDefaultPrevented()){if((!cd._default||cd._default.apply(b6.ownerDocument,ca)===false)&&!(ce==="click"&&bJ.nodeName(b6,"a"))&&bJ.acceptData(b6)){if(b5&&b6[ce]&&!bJ.isWindow(b6)){b9=b6[b5];if(b9){b6[b5]=null}bJ.event.triggered=ce;
try{b6[ce]()}catch(cc){}bJ.event.triggered=aG;if(b9){b6[b5]=b9}}}}return b3.result},dispatch:function(e){e=bJ.event.fix(e);var b7,b8,cc,b3,b5,cb=[],ca=a4.call(arguments),b4=(bJ._data(this,"events")||{})[e.type]||[],b9=bJ.event.special[e.type]||{};ca[0]=e;e.delegateTarget=this;if(b9.preDispatch&&b9.preDispatch.call(this,e)===false){return}cb=bJ.event.handlers.call(this,e,b4);b7=0;while((b3=cb[b7++])&&!e.isPropagationStopped()){e.currentTarget=b3.elem;b5=0;while((cc=b3.handlers[b5++])&&!e.isImmediatePropagationStopped()){if(!e.namespace_re||e.namespace_re.test(cc.namespace)){e.handleObj=cc;
e.data=cc.data;var b6=((bJ.event.special[cc.origType]||{}).handle||cc.handler);if(b6.apply){b8=b6.apply(b3.elem,ca)}if(b8!==aG){if((e.result=b8)===false){e.preventDefault();e.stopPropagation()}}}}}if(b9.postDispatch){b9.postDispatch.call(this,e)}return e.result},handlers:function(e,b4){var b3,b9,b7,b6,b8=[],b5=b4.delegateCount,ca=e.target;if(b5&&ca.nodeType&&(!e.button||e.type!=="click")){for(;ca!=this;ca=ca.parentNode||this){if(ca.nodeType===1&&(ca.disabled!==true||e.type!=="click")){b7=[];for(b6=0;
b6<b5;b6++){b9=b4[b6];b3=b9.selector+" ";if(b7[b3]===aG){b7[b3]=b9.needsContext?bJ(b3,this).index(ca)>=0:bJ.find(b3,this,null,[ca]).length}if(b7[b3]){b7.push(b9)}}if(b7.length){b8.push({elem:ca,handlers:b7})}}}}if(b5<b4.length){b8.push({elem:this,handlers:b4.slice(b5)})}return b8},fix:function(b5){if(b5[bJ.expando]){return b5}var b3,b8,b7,b4=b5.type,e=b5,b6=this.fixHooks[b4];if(!b6){this.fixHooks[b4]=b6=bN.test(b4)?this.mouseHooks:a3.test(b4)?this.keyHooks:{}}b7=b6.props?this.props.concat(b6.props):this.props;
b5=new bJ.Event(e);b3=b7.length;while(b3--){b8=b7[b3];b5[b8]=e[b8]}if(!b5.target){b5.target=e.srcElement||l}if(b5.target.nodeType===3){b5.target=b5.target.parentNode}b5.metaKey=!!b5.metaKey;return b6.filter?b6.filter(b5,e):b5},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(b3,e){if(b3.which==null){b3.which=e.charCode!=null?e.charCode:e.keyCode
}return b3}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(b5,b4){var e,b6,b7,b3=b4.button,b8=b4.fromElement;if(b5.pageX==null&&b4.clientX!=null){b6=b5.target.ownerDocument||l;b7=b6.documentElement;e=b6.body;b5.pageX=b4.clientX+(b7&&b7.scrollLeft||e&&e.scrollLeft||0)-(b7&&b7.clientLeft||e&&e.clientLeft||0);b5.pageY=b4.clientY+(b7&&b7.scrollTop||e&&e.scrollTop||0)-(b7&&b7.clientTop||e&&e.clientTop||0)
}if(!b5.relatedTarget&&b8){b5.relatedTarget=b8===b5.target?b4.toElement:b8}if(!b5.which&&b3!==aG){b5.which=(b3&1?1:(b3&2?3:(b3&4?2:0)))}return b5}},special:{load:{noBubble:true},click:{trigger:function(){if(bJ.nodeName(this,"input")&&this.type==="checkbox"&&this.click){this.click();return false}}},focus:{trigger:function(){if(this!==l.activeElement&&this.focus){try{this.focus();return false}catch(b3){}}},delegateType:"focusin"},blur:{trigger:function(){if(this===l.activeElement&&this.blur){this.blur();
return false}},delegateType:"focusout"},beforeunload:{postDispatch:function(e){if(e.result!==aG){e.originalEvent.returnValue=e.result}}}},simulate:function(b4,b6,b5,b3){var b7=bJ.extend(new bJ.Event(),b5,{type:b4,isSimulated:true,originalEvent:{}});if(b3){bJ.event.trigger(b7,null,b6)}else{bJ.event.dispatch.call(b6,b7)}if(b7.isDefaultPrevented()){b5.preventDefault()}}};bJ.removeEvent=l.removeEventListener?function(b3,e,b4){if(b3.removeEventListener){b3.removeEventListener(e,b4,false)}}:function(b4,b3,b5){var e="on"+b3;
if(b4.detachEvent){if(typeof b4[e]===aC){b4[e]=null}b4.detachEvent(e,b5)}};bJ.Event=function(b3,e){if(!(this instanceof bJ.Event)){return new bJ.Event(b3,e)}if(b3&&b3.type){this.originalEvent=b3;this.type=b3.type;this.isDefaultPrevented=(b3.defaultPrevented||b3.returnValue===false||b3.getPreventDefault&&b3.getPreventDefault())?R:X}else{this.type=b3}if(e){bJ.extend(this,e)}this.timeStamp=b3&&b3.timeStamp||bJ.now();this[bJ.expando]=true};bJ.Event.prototype={isDefaultPrevented:X,isPropagationStopped:X,isImmediatePropagationStopped:X,preventDefault:function(){var b3=this.originalEvent;
this.isDefaultPrevented=R;if(!b3){return}if(b3.preventDefault){b3.preventDefault()}else{b3.returnValue=false}},stopPropagation:function(){var b3=this.originalEvent;this.isPropagationStopped=R;if(!b3){return}if(b3.stopPropagation){b3.stopPropagation()}b3.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=R;this.stopPropagation()}};bJ.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(b3,e){bJ.event.special[b3]={delegateType:e,bindType:e,handle:function(b6){var b4,b8=this,b7=b6.relatedTarget,b5=b6.handleObj;
if(!b7||(b7!==b8&&!bJ.contains(b8,b7))){b6.type=b5.origType;b4=b5.handler.apply(this,arguments);b6.type=e}return b4}}});if(!bJ.support.submitBubbles){bJ.event.special.submit={setup:function(){if(bJ.nodeName(this,"form")){return false}bJ.event.add(this,"click._submit keypress._submit",function(b5){var b4=b5.target,b3=bJ.nodeName(b4,"input")||bJ.nodeName(b4,"button")?b4.form:aG;if(b3&&!bJ._data(b3,"submitBubbles")){bJ.event.add(b3,"submit._submit",function(e){e._submit_bubble=true});bJ._data(b3,"submitBubbles",true)
}})},postDispatch:function(e){if(e._submit_bubble){delete e._submit_bubble;if(this.parentNode&&!e.isTrigger){bJ.event.simulate("submit",this.parentNode,e,true)}}},teardown:function(){if(bJ.nodeName(this,"form")){return false}bJ.event.remove(this,"._submit")}}}if(!bJ.support.changeBubbles){bJ.event.special.change={setup:function(){if(bH.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){bJ.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true
}});bJ.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false}bJ.event.simulate("change",this,e,true)})}return false}bJ.event.add(this,"beforeactivate._change",function(b4){var b3=b4.target;if(bH.test(b3.nodeName)&&!bJ._data(b3,"changeBubbles")){bJ.event.add(b3,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){bJ.event.simulate("change",this.parentNode,e,true)}});bJ._data(b3,"changeBubbles",true)}})},handle:function(b3){var e=b3.target;
if(this!==e||b3.isSimulated||b3.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return b3.handleObj.handler.apply(this,arguments)}},teardown:function(){bJ.event.remove(this,"._change");return !bH.test(this.nodeName)}}}if(!bJ.support.focusinBubbles){bJ.each({focus:"focusin",blur:"focusout"},function(b5,e){var b3=0,b4=function(b6){bJ.event.simulate(e,b6.target,bJ.event.fix(b6),true)};bJ.event.special[e]={setup:function(){if(b3++===0){l.addEventListener(b5,b4,true)}},teardown:function(){if(--b3===0){l.removeEventListener(b5,b4,true)
}}}})}bJ.fn.extend({on:function(b4,e,b7,b6,b3){var b5,b8;if(typeof b4==="object"){if(typeof e!=="string"){b7=b7||e;e=aG}for(b5 in b4){this.on(b5,e,b7,b4[b5],b3)}return this}if(b7==null&&b6==null){b6=e;b7=e=aG}else{if(b6==null){if(typeof e==="string"){b6=b7;b7=aG}else{b6=b7;b7=e;e=aG}}}if(b6===false){b6=X}else{if(!b6){return this}}if(b3===1){b8=b6;b6=function(b9){bJ().off(b9);return b8.apply(this,arguments)};b6.guid=b8.guid||(b8.guid=bJ.guid++)}return this.each(function(){bJ.event.add(this,b4,b6,b7,e)
})},one:function(b3,e,b5,b4){return this.on(b3,e,b5,b4,1)},off:function(b4,e,b6){var b3,b5;if(b4&&b4.preventDefault&&b4.handleObj){b3=b4.handleObj;bJ(b4.delegateTarget).off(b3.namespace?b3.origType+"."+b3.namespace:b3.origType,b3.selector,b3.handler);return this}if(typeof b4==="object"){for(b5 in b4){this.off(b5,e,b4[b5])}return this}if(e===false||typeof e==="function"){b6=e;e=aG}if(b6===false){b6=X}return this.each(function(){bJ.event.remove(this,b4,b6,e)})},bind:function(e,b4,b3){return this.on(e,null,b4,b3)
},unbind:function(e,b3){return this.off(e,null,b3)},delegate:function(e,b3,b5,b4){return this.on(b3,e,b5,b4)},undelegate:function(e,b3,b4){return arguments.length===1?this.off(e,"**"):this.off(b3,e||"**",b4)},trigger:function(e,b3){return this.each(function(){bJ.event.trigger(e,b3,this)})},triggerHandler:function(e,b4){var b3=this[0];if(b3){return bJ.event.trigger(e,b4,b3,true)}}});
/*!
* Sizzle CSS Selector Engine
* Copyright 2012 jQuery Foundation and other contributors
* Released under the MIT license
* http://sizzlejs.com/
*/
(function(da,ch){var cx,cb,cn,cH,cJ,cS,cT,dg,cV,cB,co,cd,cZ,db,ca,cF,cD,c5="sizzle"+-(new Date()),cI=da.document,dd={},de=0,c0=0,b5=cz(),c4=cz(),cG=cz(),c9=typeof ch,cN=1<<31,c7=[],c8=c7.pop,b4=c7.push,cm=c7.slice,b9=c7.indexOf||function(di){var dh=0,e=this.length;
for(;dh<e;dh++){if(this[dh]===di){return dh}}return -1},cp="[\\x20\\t\\r\\n\\f]",b3="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",cK=b3.replace("w","w#"),ci="([*^$|!~]?=)",c2="\\["+cp+"*("+b3+")"+cp+"*(?:"+ci+cp+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+cK+")|)|)"+cp+"*\\]",ck=":("+b3+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+c2.replace(3,8)+")*)|.*)\\)|)",cr=new RegExp("^"+cp+"+|((?:^|[^\\\\])(?:\\\\.)*)"+cp+"+$","g"),cu=new RegExp("^"+cp+"*,"+cp+"*"),cA=new RegExp("^"+cp+"*([\\x20\\t\\r\\n\\f>+~])"+cp+"*"),cP=new RegExp(ck),cQ=new RegExp("^"+cK+"$"),cY={"ID":new RegExp("^#("+b3+")"),"CLASS":new RegExp("^\\.("+b3+")"),"NAME":new RegExp("^\\[name=['\"]?("+b3+")['\"]?\\]"),"TAG":new RegExp("^("+b3.replace("w","w*")+")"),"ATTR":new RegExp("^"+c2),"PSEUDO":new RegExp("^"+ck),"CHILD":new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+cp+"*(even|odd|(([+-]|)(\\d*)n|)"+cp+"*(?:([+-]|)"+cp+"*(\\d+)|))"+cp+"*\\)|)","i"),"needsContext":new RegExp("^"+cp+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+cp+"*((?:-\\d)?\\d*)"+cp+"*\\)|)(?=[^-]|$)","i")},cW=/[\x20\t\r\n\f]*[+~]/,cM=/^[^{]+\{\s*\[native code/,cO=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,b8=/^(?:input|select|textarea|button)$/i,cl=/^h\d$/i,cL=/'|\\/g,ct=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,cs=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,c1=function(e,di){var dh="0x"+di-65536;
return dh!==dh?di:dh<0?String.fromCharCode(dh+65536):String.fromCharCode(dh>>10|55296,dh&1023|56320)};try{cm.call(cI.documentElement.childNodes,0)[0].nodeType}catch(cC){cm=function(dh){var di,e=[];while((di=this[dh++])){e.push(di)}return e}}function cE(e){return cM.test(e+"")}function cz(){var e,dh=[];return(e=function(di,dj){if(dh.push(di+=" ")>cn.cacheLength){delete e[dh.shift()]}return(e[di]=dj)})}function cj(e){e[c5]=true;return e}function cc(dh){var dj=cB.createElement("div");try{return dh(dj)
}catch(di){return false}finally{dj=null}}function cv(dp,dh,dt,dv){var du,dl,dm,dr,ds,dk,dj,e,di,dq;if((dh?dh.ownerDocument||dh:cI)!==cB){cV(dh)}dh=dh||cB;dt=dt||[];if(!dp||typeof dp!=="string"){return dt}if((dr=dh.nodeType)!==1&&dr!==9){return[]}if(!cd&&!dv){if((du=cO.exec(dp))){if((dm=du[1])){if(dr===9){dl=dh.getElementById(dm);if(dl&&dl.parentNode){if(dl.id===dm){dt.push(dl);return dt}}else{return dt}}else{if(dh.ownerDocument&&(dl=dh.ownerDocument.getElementById(dm))&&cF(dh,dl)&&dl.id===dm){dt.push(dl);
return dt}}}else{if(du[2]){b4.apply(dt,cm.call(dh.getElementsByTagName(dp),0));return dt}else{if((dm=du[3])&&dd.getByClassName&&dh.getElementsByClassName){b4.apply(dt,cm.call(dh.getElementsByClassName(dm),0));return dt}}}}if(dd.qsa&&!cZ.test(dp)){dj=true;e=c5;di=dh;dq=dr===9&&dp;if(dr===1&&dh.nodeName.toLowerCase()!=="object"){dk=cf(dp);if((dj=dh.getAttribute("id"))){e=dj.replace(cL,"\\$&")}else{dh.setAttribute("id",e)}e="[id='"+e+"'] ";ds=dk.length;while(ds--){dk[ds]=e+cg(dk[ds])}di=cW.test(dp)&&dh.parentNode||dh;
dq=dk.join(",")}if(dq){try{b4.apply(dt,cm.call(di.querySelectorAll(dq),0));return dt}catch(dn){}finally{if(!dj){dh.removeAttribute("id")}}}}}return dc(dp.replace(cr,"$1"),dh,dt,dv)}cJ=cv.isXML=function(e){var dh=e&&(e.ownerDocument||e).documentElement;return dh?dh.nodeName!=="HTML":false};cV=cv.setDocument=function(e){var dh=e?e.ownerDocument||e:cI;if(dh===cB||dh.nodeType!==9||!dh.documentElement){return cB}cB=dh;co=dh.documentElement;cd=cJ(dh);dd.tagNameNoComments=cc(function(di){di.appendChild(dh.createComment(""));
return !di.getElementsByTagName("*").length});dd.attributes=cc(function(dj){dj.innerHTML="<select></select>";var di=typeof dj.lastChild.getAttribute("multiple");return di!=="boolean"&&di!=="string"});dd.getByClassName=cc(function(di){di.innerHTML="<div class='hidden e'></div><div class='hidden'></div>";if(!di.getElementsByClassName||!di.getElementsByClassName("e").length){return false}di.lastChild.className="e";return di.getElementsByClassName("e").length===2});dd.getByName=cc(function(dj){dj.id=c5+0;
dj.innerHTML="<a name='"+c5+"'></a><div name='"+c5+"'></div>";co.insertBefore(dj,co.firstChild);var di=dh.getElementsByName&&dh.getElementsByName(c5).length===2+dh.getElementsByName(c5+0).length;dd.getIdNotName=!dh.getElementById(c5);co.removeChild(dj);return di});cn.attrHandle=cc(function(di){di.innerHTML="<a href='#'></a>";return di.firstChild&&typeof di.firstChild.getAttribute!==c9&&di.firstChild.getAttribute("href")==="#"})?{}:{"href":function(di){return di.getAttribute("href",2)},"type":function(di){return di.getAttribute("type")
}};if(dd.getIdNotName){cn.find["ID"]=function(dk,dj){if(typeof dj.getElementById!==c9&&!cd){var di=dj.getElementById(dk);return di&&di.parentNode?[di]:[]}};cn.filter["ID"]=function(dj){var di=dj.replace(cs,c1);return function(dk){return dk.getAttribute("id")===di}}}else{cn.find["ID"]=function(dk,dj){if(typeof dj.getElementById!==c9&&!cd){var di=dj.getElementById(dk);return di?di.id===dk||typeof di.getAttributeNode!==c9&&di.getAttributeNode("id").value===dk?[di]:ch:[]}};cn.filter["ID"]=function(dj){var di=dj.replace(cs,c1);
return function(dl){var dk=typeof dl.getAttributeNode!==c9&&dl.getAttributeNode("id");return dk&&dk.value===di}}}cn.find["TAG"]=dd.tagNameNoComments?function(di,dj){if(typeof dj.getElementsByTagName!==c9){return dj.getElementsByTagName(di)}}:function(di,dm){var dn,dl=[],dk=0,dj=dm.getElementsByTagName(di);if(di==="*"){while((dn=dj[dk++])){if(dn.nodeType===1){dl.push(dn)}}return dl}return dj};cn.find["NAME"]=dd.getByName&&function(di,dj){if(typeof dj.getElementsByName!==c9){return dj.getElementsByName(name)
}};cn.find["CLASS"]=dd.getByClassName&&function(dj,di){if(typeof di.getElementsByClassName!==c9&&!cd){return di.getElementsByClassName(dj)}};db=[];cZ=[":focus"];if((dd.qsa=cE(dh.querySelectorAll))){cc(function(di){di.innerHTML="<select><option selected=''></option></select>";if(!di.querySelectorAll("[selected]").length){cZ.push("\\["+cp+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)")}if(!di.querySelectorAll(":checked").length){cZ.push(":checked")}});cc(function(di){di.innerHTML="<input type='hidden' i=''/>";
if(di.querySelectorAll("[i^='']").length){cZ.push("[*^$]="+cp+"*(?:\"\"|'')")}if(!di.querySelectorAll(":enabled").length){cZ.push(":enabled",":disabled")}di.querySelectorAll("*,:x");cZ.push(",.*:")})}if((dd.matchesSelector=cE((ca=co.matchesSelector||co.mozMatchesSelector||co.webkitMatchesSelector||co.oMatchesSelector||co.msMatchesSelector)))){cc(function(di){dd.disconnectedMatch=ca.call(di,"div");ca.call(di,"[s!='']:x");db.push("!=",ck)})}cZ=new RegExp(cZ.join("|"));db=new RegExp(db.join("|"));cF=cE(co.contains)||co.compareDocumentPosition?function(dj,di){var dl=dj.nodeType===9?dj.documentElement:dj,dk=di&&di.parentNode;
return dj===dk||!!(dk&&dk.nodeType===1&&(dl.contains?dl.contains(dk):dj.compareDocumentPosition&&dj.compareDocumentPosition(dk)&16))}:function(dj,di){if(di){while((di=di.parentNode)){if(di===dj){return true}}}return false};cD=co.compareDocumentPosition?function(dj,di){var dk;if(dj===di){cT=true;return 0}if((dk=di.compareDocumentPosition&&dj.compareDocumentPosition&&dj.compareDocumentPosition(di))){if(dk&1||dj.parentNode&&dj.parentNode.nodeType===11){if(dj===dh||cF(cI,dj)){return -1}if(di===dh||cF(cI,di)){return 1
}return 0}return dk&4?-1:1}return dj.compareDocumentPosition?-1:1}:function(dj,di){var dq,dm=0,dp=dj.parentNode,dl=di.parentNode,dk=[dj],dn=[di];if(dj===di){cT=true;return 0}else{if(!dp||!dl){return dj===dh?-1:di===dh?1:dp?-1:dl?1:0}else{if(dp===dl){return b6(dj,di)}}}dq=dj;while((dq=dq.parentNode)){dk.unshift(dq)}dq=di;while((dq=dq.parentNode)){dn.unshift(dq)}while(dk[dm]===dn[dm]){dm++}return dm?b6(dk[dm],dn[dm]):dk[dm]===cI?-1:dn[dm]===cI?1:0};cT=false;[0,0].sort(cD);dd.detectDuplicates=cT;return cB
};cv.matches=function(dh,e){return cv(dh,null,null,e)};cv.matchesSelector=function(di,dk){if((di.ownerDocument||di)!==cB){cV(di)}dk=dk.replace(ct,"='$1']");if(dd.matchesSelector&&!cd&&(!db||!db.test(dk))&&!cZ.test(dk)){try{var dh=ca.call(di,dk);if(dh||dd.disconnectedMatch||di.document&&di.document.nodeType!==11){return dh}}catch(dj){}}return cv(dk,cB,null,[di]).length>0};cv.contains=function(e,dh){if((e.ownerDocument||e)!==cB){cV(e)}return cF(e,dh)};cv.attr=function(dh,e){var di;if((dh.ownerDocument||dh)!==cB){cV(dh)
}if(!cd){e=e.toLowerCase()}if((di=cn.attrHandle[e])){return di(dh)}if(cd||dd.attributes){return dh.getAttribute(e)}return((di=dh.getAttributeNode(e))||dh.getAttribute(e))&&dh[e]===true?e:di&&di.specified?di.value:null};cv.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};cv.uniqueSort=function(di){var dj,dk=[],dh=1,e=0;cT=!dd.detectDuplicates;di.sort(cD);if(cT){for(;(dj=di[dh]);dh++){if(dj===di[dh-1]){e=dk.push(dh)}}while(e--){di.splice(dk[e],1)}}return di};function b6(dh,e){var dj=e&&dh,di=dj&&(~e.sourceIndex||cN)-(~dh.sourceIndex||cN);
if(di){return di}if(dj){while((dj=dj.nextSibling)){if(dj===e){return -1}}}return dh?1:-1}function cw(e){return function(di){var dh=di.nodeName.toLowerCase();return dh==="input"&&di.type===e}}function b7(e){return function(di){var dh=di.nodeName.toLowerCase();return(dh==="input"||dh==="button")&&di.type===e}}function c3(e){return cj(function(dh){dh=+dh;return cj(function(di,dm){var dk,dj=e([],di.length,dh),dl=dj.length;while(dl--){if(di[(dk=dj[dl])]){di[dk]=!(dm[dk]=di[dk])}}})})}cH=cv.getText=function(dk){var dj,dh="",di=0,e=dk.nodeType;
if(!e){for(;(dj=dk[di]);di++){dh+=cH(dj)}}else{if(e===1||e===9||e===11){if(typeof dk.textContent==="string"){return dk.textContent}else{for(dk=dk.firstChild;dk;dk=dk.nextSibling){dh+=cH(dk)}}}else{if(e===3||e===4){return dk.nodeValue}}}return dh};cn=cv.selectors={cacheLength:50,createPseudo:cj,match:cY,find:{},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{"ATTR":function(e){e[1]=e[1].replace(cs,c1);
e[3]=(e[4]||e[5]||"").replace(cs,c1);if(e[2]==="~="){e[3]=" "+e[3]+" "}return e.slice(0,4)},"CHILD":function(e){e[1]=e[1].toLowerCase();if(e[1].slice(0,3)==="nth"){if(!e[3]){cv.error(e[0])}e[4]=+(e[4]?e[5]+(e[6]||1):2*(e[3]==="even"||e[3]==="odd"));e[5]=+((e[7]+e[8])||e[3]==="odd")}else{if(e[3]){cv.error(e[0])}}return e},"PSEUDO":function(dh){var e,di=!dh[5]&&dh[2];if(cY["CHILD"].test(dh[0])){return null}if(dh[4]){dh[2]=dh[4]}else{if(di&&cP.test(di)&&(e=cf(di,true))&&(e=di.indexOf(")",di.length-e)-di.length)){dh[0]=dh[0].slice(0,e);
dh[2]=di.slice(0,e)}}return dh.slice(0,3)}},filter:{"TAG":function(e){if(e==="*"){return function(){return true}}e=e.replace(cs,c1).toLowerCase();return function(dh){return dh.nodeName&&dh.nodeName.toLowerCase()===e}},"CLASS":function(e){var dh=b5[e+" "];return dh||(dh=new RegExp("(^|"+cp+")"+e+"("+cp+"|$)"))&&b5(e,function(di){return dh.test(di.className||(typeof di.getAttribute!==c9&&di.getAttribute("class"))||"")})},"ATTR":function(di,dh,e){return function(dk){var dj=cv.attr(dk,di);if(dj==null){return dh==="!="
}if(!dh){return true}dj+="";return dh==="="?dj===e:dh==="!="?dj!==e:dh==="^="?e&&dj.indexOf(e)===0:dh==="*="?e&&dj.indexOf(e)>-1:dh==="$="?e&&dj.slice(-e.length)===e:dh==="~="?(" "+dj+" ").indexOf(e)>-1:dh==="|="?dj===e||dj.slice(0,e.length+1)===e+"-":false}},"CHILD":function(dh,dk,dj,dl,di){var dn=dh.slice(0,3)!=="nth",e=dh.slice(-4)!=="last",dm=dk==="of-type";return dl===1&&di===0?function(dp){return !!dp.parentNode}:function(dv,dt,dy){var dp,dB,dw,dA,dx,ds,du=dn!==e?"nextSibling":"previousSibling",dz=dv.parentNode,dr=dm&&dv.nodeName.toLowerCase(),dq=!dy&&!dm;
if(dz){if(dn){while(du){dw=dv;while((dw=dw[du])){if(dm?dw.nodeName.toLowerCase()===dr:dw.nodeType===1){return false}}ds=du=dh==="only"&&!ds&&"nextSibling"}return true}ds=[e?dz.firstChild:dz.lastChild];if(e&&dq){dB=dz[c5]||(dz[c5]={});dp=dB[dh]||[];dx=dp[0]===de&&dp[1];dA=dp[0]===de&&dp[2];dw=dx&&dz.childNodes[dx];while((dw=++dx&&dw&&dw[du]||(dA=dx=0)||ds.pop())){if(dw.nodeType===1&&++dA&&dw===dv){dB[dh]=[de,dx,dA];break}}}else{if(dq&&(dp=(dv[c5]||(dv[c5]={}))[dh])&&dp[0]===de){dA=dp[1]}else{while((dw=++dx&&dw&&dw[du]||(dA=dx=0)||ds.pop())){if((dm?dw.nodeName.toLowerCase()===dr:dw.nodeType===1)&&++dA){if(dq){(dw[c5]||(dw[c5]={}))[dh]=[de,dA]
}if(dw===dv){break}}}}}dA-=di;return dA===dl||(dA%dl===0&&dA/dl>=0)}}},"PSEUDO":function(dj,di){var e,dh=cn.pseudos[dj]||cn.setFilters[dj.toLowerCase()]||cv.error("unsupported pseudo: "+dj);if(dh[c5]){return dh(di)}if(dh.length>1){e=[dj,dj,"",di];return cn.setFilters.hasOwnProperty(dj.toLowerCase())?cj(function(dm,dp){var dl,dk=dh(dm,di),dn=dk.length;while(dn--){dl=b9.call(dm,dk[dn]);dm[dl]=!(dp[dl]=dk[dn])}}):function(dk){return dh(dk,0,e)}}return dh}},pseudos:{"not":cj(function(e){var dh=[],di=[],dj=cS(e.replace(cr,"$1"));
return dj[c5]?cj(function(dl,dr,dp,dm){var dq,dk=dj(dl,null,dm,[]),dn=dl.length;while(dn--){if((dq=dk[dn])){dl[dn]=!(dr[dn]=dq)}}}):function(dm,dl,dk){dh[0]=dm;dj(dh,null,dk,di);return !di.pop()}}),"has":cj(function(e){return function(dh){return cv(e,dh).length>0}}),"contains":cj(function(e){return function(dh){return(dh.textContent||dh.innerText||cH(dh)).indexOf(e)>-1}}),"lang":cj(function(e){if(!cQ.test(e||"")){cv.error("unsupported lang: "+e)}e=e.replace(cs,c1).toLowerCase();return function(di){var dh;
do{if((dh=cd?di.getAttribute("xml:lang")||di.getAttribute("lang"):di.lang)){dh=dh.toLowerCase();return dh===e||dh.indexOf(e+"-")===0}}while((di=di.parentNode)&&di.nodeType===1);return false}}),"target":function(e){var dh=da.location&&da.location.hash;return dh&&dh.slice(1)===e.id},"root":function(e){return e===co},"focus":function(e){return e===cB.activeElement&&(!cB.hasFocus||cB.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},"enabled":function(e){return e.disabled===false},"disabled":function(e){return e.disabled===true
},"checked":function(e){var dh=e.nodeName.toLowerCase();return(dh==="input"&&!!e.checked)||(dh==="option"&&!!e.selected)},"selected":function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},"empty":function(e){for(e=e.firstChild;e;e=e.nextSibling){if(e.nodeName>"@"||e.nodeType===3||e.nodeType===4){return false}}return true},"parent":function(e){return !cn.pseudos["empty"](e)},"header":function(e){return cl.test(e.nodeName)},"input":function(e){return b8.test(e.nodeName)},"button":function(dh){var e=dh.nodeName.toLowerCase();
return e==="input"&&dh.type==="button"||e==="button"},"text":function(dh){var e;return dh.nodeName.toLowerCase()==="input"&&dh.type==="text"&&((e=dh.getAttribute("type"))==null||e.toLowerCase()===dh.type)},"first":c3(function(){return[0]}),"last":c3(function(e,dh){return[dh-1]}),"eq":c3(function(e,di,dh){return[dh<0?dh+di:dh]}),"even":c3(function(e,di){var dh=0;for(;dh<di;dh+=2){e.push(dh)}return e}),"odd":c3(function(e,di){var dh=1;for(;dh<di;dh+=2){e.push(dh)}return e}),"lt":c3(function(e,dj,di){var dh=di<0?di+dj:di;
for(;--dh>=0;){e.push(dh)}return e}),"gt":c3(function(e,dj,di){var dh=di<0?di+dj:di;for(;++dh<dj;){e.push(dh)}return e})}};for(cx in {radio:true,checkbox:true,file:true,password:true,image:true}){cn.pseudos[cx]=cw(cx)}for(cx in {submit:true,reset:true}){cn.pseudos[cx]=b7(cx)}function cf(dk,dq){var dh,dl,dn,dp,dm,di,e,dj=c4[dk+" "];if(dj){return dq?0:dj.slice(0)}dm=dk;di=[];e=cn.preFilter;while(dm){if(!dh||(dl=cu.exec(dm))){if(dl){dm=dm.slice(dl[0].length)||dm}di.push(dn=[])}dh=false;if((dl=cA.exec(dm))){dh=dl.shift();
dn.push({value:dh,type:dl[0].replace(cr," ")});dm=dm.slice(dh.length)}for(dp in cn.filter){if((dl=cY[dp].exec(dm))&&(!e[dp]||(dl=e[dp](dl)))){dh=dl.shift();dn.push({value:dh,type:dp,matches:dl});dm=dm.slice(dh.length)}}if(!dh){break}}return dq?dm.length:dm?cv.error(dk):c4(dk,di).slice(0)}function cg(dj){var di=0,dh=dj.length,e="";for(;di<dh;di++){e+=dj[di].value}return e}function cq(dk,di,dj){var e=di.dir,dl=dj&&e==="parentNode",dh=c0++;return di.first?function(dp,dn,dm){while((dp=dp[e])){if(dp.nodeType===1||dl){return dk(dp,dn,dm)
}}}:function(dr,dp,dn){var dt,dm,dq,ds=de+" "+dh;if(dn){while((dr=dr[e])){if(dr.nodeType===1||dl){if(dk(dr,dp,dn)){return true}}}}else{while((dr=dr[e])){if(dr.nodeType===1||dl){dq=dr[c5]||(dr[c5]={});if((dm=dq[e])&&dm[0]===ds){if((dt=dm[1])===true||dt===cb){return dt===true}}else{dm=dq[e]=[ds];dm[1]=dk(dr,dp,dn)||cb;if(dm[1]===true){return true}}}}}}}function df(e){return e.length>1?function(dk,dj,dh){var di=e.length;while(di--){if(!e[di](dk,dj,dh)){return false}}return true}:e[0]}function cX(e,dh,di,dj,dm){var dk,dq=[],dl=0,dn=e.length,dp=dh!=null;
for(;dl<dn;dl++){if((dk=e[dl])){if(!di||di(dk,dj,dm)){dq.push(dk);if(dp){dh.push(dl)}}}}return dq}function ce(di,dh,dk,dj,dl,e){if(dj&&!dj[c5]){dj=ce(dj)}if(dl&&!dl[c5]){dl=ce(dl,e)}return cj(function(dx,du,dp,dw){var dz,dv,dr,dq=[],dy=[],dn=du.length,dm=dx||cy(dh||"*",dp.nodeType?[dp]:dp,[]),ds=di&&(dx||!dh)?cX(dm,dq,di,dp,dw):dm,dt=dk?dl||(dx?di:dn||dj)?[]:du:ds;if(dk){dk(ds,dt,dp,dw)}if(dj){dz=cX(dt,dy);dj(dz,[],dp,dw);dv=dz.length;while(dv--){if((dr=dz[dv])){dt[dy[dv]]=!(ds[dy[dv]]=dr)}}}if(dx){if(dl||di){if(dl){dz=[];
dv=dt.length;while(dv--){if((dr=dt[dv])){dz.push((ds[dv]=dr))}}dl(null,(dt=[]),dz,dw)}dv=dt.length;while(dv--){if((dr=dt[dv])&&(dz=dl?b9.call(dx,dr):dq[dv])>-1){dx[dz]=!(du[dz]=dr)}}}}else{dt=cX(dt===du?dt.splice(dn,dt.length):dt);if(dl){dl(null,du,dt,dw)}else{b4.apply(du,dt)}}})}function c6(dm){var dh,dk,di,dl=dm.length,dq=cn.relative[dm[0].type],dr=dq||cn.relative[" "],dj=dq?1:0,dn=cq(function(ds){return ds===dh},dr,true),dp=cq(function(ds){return b9.call(dh,ds)>-1},dr,true),e=[function(du,dt,ds){return(!dq&&(ds||dt!==dg))||((dh=dt).nodeType?dn(du,dt,ds):dp(du,dt,ds))
}];for(;dj<dl;dj++){if((dk=cn.relative[dm[dj].type])){e=[cq(df(e),dk)]}else{dk=cn.filter[dm[dj].type].apply(null,dm[dj].matches);if(dk[c5]){di=++dj;for(;di<dl;di++){if(cn.relative[dm[di].type]){break}}return ce(dj>1&&df(e),dj>1&&cg(dm.slice(0,dj-1)).replace(cr,"$1"),dk,dj<di&&c6(dm.slice(dj,di)),di<dl&&c6((dm=dm.slice(di))),di<dl&&cg(dm))}e.push(dk)}}return df(e)}function cU(dj,di){var dl=0,e=di.length>0,dk=dj.length>0,dh=function(dw,dq,dv,du,dC){var dr,ds,dx,dB=[],dA=0,dt="0",dm=dw&&[],dy=dC!=null,dz=dg,dp=dw||dk&&cn.find["TAG"]("*",dC&&dq.parentNode||dq),dn=(de+=dz==null?1:Math.random()||0.1);
if(dy){dg=dq!==cB&&dq;cb=dl}for(;(dr=dp[dt])!=null;dt++){if(dk&&dr){ds=0;while((dx=dj[ds++])){if(dx(dr,dq,dv)){du.push(dr);break}}if(dy){de=dn;cb=++dl}}if(e){if((dr=!dx&&dr)){dA--}if(dw){dm.push(dr)}}}dA+=dt;if(e&&dt!==dA){ds=0;while((dx=di[ds++])){dx(dm,dB,dq,dv)}if(dw){if(dA>0){while(dt--){if(!(dm[dt]||dB[dt])){dB[dt]=c8.call(du)}}}dB=cX(dB)}b4.apply(du,dB);if(dy&&!dw&&dB.length>0&&(dA+di.length)>1){cv.uniqueSort(du)}}if(dy){de=dn;dg=dz}return dm};return e?cj(dh):dh}cS=cv.compile=function(e,dl){var di,dh=[],dk=[],dj=cG[e+" "];
if(!dj){if(!dl){dl=cf(e)}di=dl.length;while(di--){dj=c6(dl[di]);if(dj[c5]){dh.push(dj)}else{dk.push(dj)}}dj=cG(e,cU(dk,dh))}return dj};function cy(dh,dk,dj){var di=0,e=dk.length;for(;di<e;di++){cv(dh,dk[di],dj)}return dj}function dc(di,e,dj,dm){var dk,dp,dh,dq,dn,dl=cf(di);if(!dm){if(dl.length===1){dp=dl[0]=dl[0].slice(0);if(dp.length>2&&(dh=dp[0]).type==="ID"&&e.nodeType===9&&!cd&&cn.relative[dp[1].type]){e=cn.find["ID"](dh.matches[0].replace(cs,c1),e)[0];if(!e){return dj}di=di.slice(dp.shift().value.length)
}dk=cY["needsContext"].test(di)?0:dp.length;while(dk--){dh=dp[dk];if(cn.relative[(dq=dh.type)]){break}if((dn=cn.find[dq])){if((dm=dn(dh.matches[0].replace(cs,c1),cW.test(dp[0].type)&&e.parentNode||e))){dp.splice(dk,1);di=dm.length&&cg(dp);if(!di){b4.apply(dj,cm.call(dm,0));return dj}break}}}}}cS(di,dl)(dm,e,cd,dj,cW.test(di));return dj}cn.pseudos["nth"]=cn.pseudos["eq"];function cR(){}cn.filters=cR.prototype=cn.pseudos;cn.setFilters=new cR();cV();cv.attr=bJ.attr;bJ.find=cv;bJ.expr=cv.selectors;bJ.expr[":"]=bJ.expr.pseudos;
bJ.unique=cv.uniqueSort;bJ.text=cv.getText;bJ.isXMLDoc=cv.isXML;bJ.contains=cv.contains})(a2);var aj=/Until$/,bt=/^(?:parents|prev(?:Until|All))/,an=/^.[^:#\[\.,]*$/,y=bJ.expr.match.needsContext,bx={children:true,contents:true,next:true,prev:true};bJ.fn.extend({find:function(b3){var b6,b5,b4,e=this.length;if(typeof b3!=="string"){b4=this;return this.pushStack(bJ(b3).filter(function(){for(b6=0;b6<e;b6++){if(bJ.contains(b4[b6],this)){return true}}}))}b5=[];for(b6=0;b6<e;b6++){bJ.find(b3,this[b6],b5)
}b5=this.pushStack(e>1?bJ.unique(b5):b5);b5.selector=(this.selector?this.selector+" ":"")+b3;return b5},has:function(b5){var b4,b3=bJ(b5,this),e=b3.length;return this.filter(function(){for(b4=0;b4<e;b4++){if(bJ.contains(this,b3[b4])){return true}}})},not:function(e){return this.pushStack(aO(this,e,false))},filter:function(e){return this.pushStack(aO(this,e,true))},is:function(e){return !!e&&(typeof e==="string"?y.test(e)?bJ(e,this.context).index(this[0])>=0:bJ.filter(e,this).length>0:this.filter(e).length>0)
},closest:function(b6,b5){var b7,b4=0,e=this.length,b3=[],b8=y.test(b6)||typeof b6!=="string"?bJ(b6,b5||this.context):0;for(;b4<e;b4++){b7=this[b4];while(b7&&b7.ownerDocument&&b7!==b5&&b7.nodeType!==11){if(b8?b8.index(b7)>-1:bJ.find.matchesSelector(b7,b6)){b3.push(b7);break}b7=b7.parentNode}}return this.pushStack(b3.length>1?bJ.unique(b3):b3)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.first().prevAll().length:-1}if(typeof e==="string"){return bJ.inArray(this[0],bJ(e))}return bJ.inArray(e.jquery?e[0]:e,this)
},add:function(e,b3){var b5=typeof e==="string"?bJ(e,b3):bJ.makeArray(e&&e.nodeType?[e]:e),b4=bJ.merge(this.get(),b5);return this.pushStack(bJ.unique(b4))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}});bJ.fn.andSelf=bJ.fn.addBack;function aX(b3,e){do{b3=b3[e]}while(b3&&b3.nodeType!==1);return b3}bJ.each({parent:function(b3){var e=b3.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return bJ.dir(e,"parentNode")},parentsUntil:function(b3,e,b4){return bJ.dir(b3,"parentNode",b4)
},next:function(e){return aX(e,"nextSibling")},prev:function(e){return aX(e,"previousSibling")},nextAll:function(e){return bJ.dir(e,"nextSibling")},prevAll:function(e){return bJ.dir(e,"previousSibling")},nextUntil:function(b3,e,b4){return bJ.dir(b3,"nextSibling",b4)},prevUntil:function(b3,e,b4){return bJ.dir(b3,"previousSibling",b4)},siblings:function(e){return bJ.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return bJ.sibling(e.firstChild)},contents:function(e){return bJ.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:bJ.merge([],e.childNodes)
}},function(e,b3){bJ.fn[e]=function(b6,b4){var b5=bJ.map(this,b3,b6);if(!aj.test(e)){b4=b6}if(b4&&typeof b4==="string"){b5=bJ.filter(b4,b5)}b5=this.length>1&&!bx[e]?bJ.unique(b5):b5;if(this.length>1&&bt.test(e)){b5=b5.reverse()}return this.pushStack(b5)}});bJ.extend({filter:function(b4,e,b3){if(b3){b4=":not("+b4+")"}return e.length===1?bJ.find.matchesSelector(e[0],b4)?[e[0]]:[]:bJ.find.matches(b4,e)},dir:function(b4,b3,b6){var e=[],b5=b4[b3];while(b5&&b5.nodeType!==9&&(b6===aG||b5.nodeType!==1||!bJ(b5).is(b6))){if(b5.nodeType===1){e.push(b5)
}b5=b5[b3]}return e},sibling:function(b4,b3){var e=[];for(;b4;b4=b4.nextSibling){if(b4.nodeType===1&&b4!==b3){e.push(b4)}}return e}});function aO(b5,b4,e){b4=b4||0;if(bJ.isFunction(b4)){return bJ.grep(b5,function(b7,b6){var b8=!!b4.call(b7,b6,b7);return b8===e})}else{if(b4.nodeType){return bJ.grep(b5,function(b6){return(b6===b4)===e})}else{if(typeof b4==="string"){var b3=bJ.grep(b5,function(b6){return b6.nodeType===1});if(an.test(b4)){return bJ.filter(b4,b3,!e)}else{b4=bJ.filter(b4,b3)}}}}return bJ.grep(b5,function(b6){return(bJ.inArray(b6,b4)>=0)===e
})}function A(e){var b4=d.split("|"),b3=e.createDocumentFragment();if(b3.createElement){while(b4.length){b3.createElement(b4.pop())}}return b3}var d="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|"+"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",aA=/ jQuery\d+="(?:null|\d+)"/g,J=new RegExp("<(?:"+d+")[\\s/>]","i"),b2=/^\s+/,aD=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,m=/<([\w:]+)/,bX=/<tbody/i,I=/<|&#?\w+;/,al=/<(?:script|style|link)/i,q=/^(?:checkbox|radio)$/i,bU=/checked\s*(?:[^=]|=\s*.checked.)/i,bz=/^$|\/(?:java|ecma)script/i,ar=/^true\/(.*)/,aK=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,T={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:bJ.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},aS=A(l),j=aS.appendChild(l.createElement("div"));
T.optgroup=T.option;T.tbody=T.tfoot=T.colgroup=T.caption=T.thead;T.th=T.td;bJ.fn.extend({text:function(e){return bJ.access(this,function(b3){return b3===aG?bJ.text(this):this.empty().append((this[0]&&this[0].ownerDocument||l).createTextNode(b3))},null,e,arguments.length)},wrapAll:function(e){if(bJ.isFunction(e)){return this.each(function(b4){bJ(this).wrapAll(e.call(this,b4))})}if(this[0]){var b3=bJ(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){b3.insertBefore(this[0])}b3.map(function(){var b4=this;
while(b4.firstChild&&b4.firstChild.nodeType===1){b4=b4.firstChild}return b4}).append(this)}return this},wrapInner:function(e){if(bJ.isFunction(e)){return this.each(function(b3){bJ(this).wrapInner(e.call(this,b3))})}return this.each(function(){var b3=bJ(this),b4=b3.contents();if(b4.length){b4.wrapAll(e)}else{b3.append(e)}})},wrap:function(e){var b3=bJ.isFunction(e);return this.each(function(b4){bJ(this).wrapAll(b3?e.call(this,b4):e)})},unwrap:function(){return this.parent().each(function(){if(!bJ.nodeName(this,"body")){bJ(this).replaceWith(this.childNodes)
}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){this.insertBefore(e,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(e){if(this.parentNode){this.parentNode.insertBefore(e,this)}})},after:function(){return this.domManip(arguments,false,function(e){if(this.parentNode){this.parentNode.insertBefore(e,this.nextSibling)
}})},remove:function(e,b5){var b4,b3=0;for(;(b4=this[b3])!=null;b3++){if(!e||bJ.filter(e,[b4]).length>0){if(!b5&&b4.nodeType===1){bJ.cleanData(k(b4))}if(b4.parentNode){if(b5&&bJ.contains(b4.ownerDocument,b4)){bs(k(b4,"script"))}b4.parentNode.removeChild(b4)}}}return this},empty:function(){var b3,e=0;for(;(b3=this[e])!=null;e++){if(b3.nodeType===1){bJ.cleanData(k(b3,false))}while(b3.firstChild){b3.removeChild(b3.firstChild)}if(b3.options&&bJ.nodeName(b3,"select")){b3.options.length=0}}return this},clone:function(b3,e){b3=b3==null?false:b3;
e=e==null?b3:e;return this.map(function(){return bJ.clone(this,b3,e)})},html:function(e){return bJ.access(this,function(b6){var b5=this[0]||{},b4=0,b3=this.length;if(b6===aG){return b5.nodeType===1?b5.innerHTML.replace(aA,""):aG}if(typeof b6==="string"&&!al.test(b6)&&(bJ.support.htmlSerialize||!J.test(b6))&&(bJ.support.leadingWhitespace||!b2.test(b6))&&!T[(m.exec(b6)||["",""])[1].toLowerCase()]){b6=b6.replace(aD,"<$1></$2>");try{for(;b4<b3;b4++){b5=this[b4]||{};if(b5.nodeType===1){bJ.cleanData(k(b5,false));
b5.innerHTML=b6}}b5=0}catch(b7){}}if(b5){this.empty().append(b6)}},null,e,arguments.length)},replaceWith:function(b3){var e=bJ.isFunction(b3);if(!e&&typeof b3!=="string"){b3=bJ(b3).not(this).detach()}return this.domManip([b3],true,function(b6){var b5=this.nextSibling,b4=this.parentNode;if(b4){bJ(this).remove();b4.insertBefore(b6,b5)}})},detach:function(e){return this.remove(e,true)},domManip:function(ca,cg,cf){ca=aI.apply([],ca);var b8,b4,e,b6,cd,b9,b7=0,b5=this.length,cc=this,ce=b5-1,cb=ca[0],b3=bJ.isFunction(cb);
if(b3||!(b5<=1||typeof cb!=="string"||bJ.support.checkClone||!bU.test(cb))){return this.each(function(ci){var ch=cc.eq(ci);if(b3){ca[0]=cb.call(this,ci,cg?ch.html():aG)}ch.domManip(ca,cg,cf)})}if(b5){b9=bJ.buildFragment(ca,this[0].ownerDocument,false,this);b8=b9.firstChild;if(b9.childNodes.length===1){b9=b8}if(b8){cg=cg&&bJ.nodeName(b8,"tr");b6=bJ.map(k(b9,"script"),t);e=b6.length;for(;b7<b5;b7++){b4=b9;if(b7!==ce){b4=bJ.clone(b4,true,true);if(e){bJ.merge(b6,k(b4,"script"))}}cf.call(cg&&bJ.nodeName(this[b7],"table")?x(this[b7],"tbody"):this[b7],b4,b7)
}if(e){cd=b6[b6.length-1].ownerDocument;bJ.map(b6,bc);for(b7=0;b7<e;b7++){b4=b6[b7];if(bz.test(b4.type||"")&&!bJ._data(b4,"globalEval")&&bJ.contains(cd,b4)){if(b4.src){bJ.ajax({url:b4.src,type:"GET",dataType:"script",async:false,global:false,"throws":true})}else{bJ.globalEval((b4.text||b4.textContent||b4.innerHTML||"").replace(aK,""))}}}}b9=b8=null}}return this}});function x(b3,e){return b3.getElementsByTagName(e)[0]||b3.appendChild(b3.ownerDocument.createElement(e))}function t(b3){var e=b3.getAttributeNode("type");
b3.type=(e&&e.specified)+"/"+b3.type;return b3}function bc(b3){var e=ar.exec(b3.type);if(e){b3.type=e[1]}else{b3.removeAttribute("type")}return b3}function bs(e,b4){var b5,b3=0;for(;(b5=e[b3])!=null;b3++){bJ._data(b5,"globalEval",!b4||bJ._data(b4[b3],"globalEval"))}}function at(b9,b3){if(b3.nodeType!==1||!bJ.hasData(b9)){return}var b6,b5,e,b8=bJ._data(b9),b7=bJ._data(b3,b8),b4=b8.events;if(b4){delete b7.handle;b7.events={};for(b6 in b4){for(b5=0,e=b4[b6].length;b5<e;b5++){bJ.event.add(b3,b6,b4[b6][b5])
}}}if(b7.data){b7.data=bJ.extend({},b7.data)}}function Q(b6,b3){var b7,b5,b4;if(b3.nodeType!==1){return}b7=b3.nodeName.toLowerCase();if(!bJ.support.noCloneEvent&&b3[bJ.expando]){b4=bJ._data(b3);for(b5 in b4.events){bJ.removeEvent(b3,b5,b4.handle)}b3.removeAttribute(bJ.expando)}if(b7==="script"&&b3.text!==b6.text){t(b3).text=b6.text;bc(b3)}else{if(b7==="object"){if(b3.parentNode){b3.outerHTML=b6.outerHTML}if(bJ.support.html5Clone&&(b6.innerHTML&&!bJ.trim(b3.innerHTML))){b3.innerHTML=b6.innerHTML}}else{if(b7==="input"&&q.test(b6.type)){b3.defaultChecked=b3.checked=b6.checked;
if(b3.value!==b6.value){b3.value=b6.value}}else{if(b7==="option"){b3.defaultSelected=b3.selected=b6.defaultSelected}else{if(b7==="input"||b7==="textarea"){b3.defaultValue=b6.defaultValue}}}}}}bJ.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,b3){bJ.fn[e]=function(b4){var b5,b7=0,b6=[],b9=bJ(b4),b8=b9.length-1;for(;b7<=b8;b7++){b5=b7===b8?this:this.clone(true);bJ(b9[b7])[b3](b5);ao.apply(b6,b5.get())}return this.pushStack(b6)
}});function k(b5,e){var b3,b6,b4=0,b7=typeof b5.getElementsByTagName!==aC?b5.getElementsByTagName(e||"*"):typeof b5.querySelectorAll!==aC?b5.querySelectorAll(e||"*"):aG;if(!b7){for(b7=[],b3=b5.childNodes||b5;(b6=b3[b4])!=null;b4++){if(!e||bJ.nodeName(b6,e)){b7.push(b6)}else{bJ.merge(b7,k(b6,e))}}}return e===aG||e&&bJ.nodeName(b5,e)?bJ.merge([b5],b7):b7}function bV(e){if(q.test(e.type)){e.defaultChecked=e.checked}}bJ.extend({clone:function(b3,b5,e){var b7,b4,ca,b6,b8,b9=bJ.contains(b3.ownerDocument,b3);
if(bJ.support.html5Clone||bJ.isXMLDoc(b3)||!J.test("<"+b3.nodeName+">")){ca=b3.cloneNode(true)}else{j.innerHTML=b3.outerHTML;j.removeChild(ca=j.firstChild)}if((!bJ.support.noCloneEvent||!bJ.support.noCloneChecked)&&(b3.nodeType===1||b3.nodeType===11)&&!bJ.isXMLDoc(b3)){b7=k(ca);b8=k(b3);for(b6=0;(b4=b8[b6])!=null;++b6){if(b7[b6]){Q(b4,b7[b6])}}}if(b5){if(e){b8=b8||k(b3);b7=b7||k(ca);for(b6=0;(b4=b8[b6])!=null;b6++){at(b4,b7[b6])}}else{at(b3,ca)}}b7=k(ca,"script");if(b7.length>0){bs(b7,!b9&&k(b3,"script"))
}b7=b8=b4=null;return ca},buildFragment:function(b3,b5,ca,cf){var cb,b7,b9,ce,cg,cd,b4,b8=b3.length,b6=A(b5),e=[],cc=0;for(;cc<b8;cc++){b7=b3[cc];if(b7||b7===0){if(bJ.type(b7)==="object"){bJ.merge(e,b7.nodeType?[b7]:b7)}else{if(!I.test(b7)){e.push(b5.createTextNode(b7))}else{ce=ce||b6.appendChild(b5.createElement("div"));cg=(m.exec(b7)||["",""])[1].toLowerCase();b4=T[cg]||T._default;ce.innerHTML=b4[1]+b7.replace(aD,"<$1></$2>")+b4[2];cb=b4[0];while(cb--){ce=ce.lastChild}if(!bJ.support.leadingWhitespace&&b2.test(b7)){e.push(b5.createTextNode(b2.exec(b7)[0]))
}if(!bJ.support.tbody){b7=cg==="table"&&!bX.test(b7)?ce.firstChild:b4[1]==="<table>"&&!bX.test(b7)?ce:0;cb=b7&&b7.childNodes.length;while(cb--){if(bJ.nodeName((cd=b7.childNodes[cb]),"tbody")&&!cd.childNodes.length){b7.removeChild(cd)}}}bJ.merge(e,ce.childNodes);ce.textContent="";while(ce.firstChild){ce.removeChild(ce.firstChild)}ce=b6.lastChild}}}}if(ce){b6.removeChild(ce)}if(!bJ.support.appendChecked){bJ.grep(k(e,"input"),bV)}cc=0;while((b7=e[cc++])){if(cf&&bJ.inArray(b7,cf)!==-1){continue}b9=bJ.contains(b7.ownerDocument,b7);
ce=k(b6.appendChild(b7),"script");if(b9){bs(ce)}if(ca){cb=0;while((b7=ce[cb++])){if(bz.test(b7.type||"")){ca.push(b7)}}}}ce=null;return b6},cleanData:function(b3,cb){var b5,ca,b4,b6,b7=0,cc=bJ.expando,e=bJ.cache,b8=bJ.support.deleteExpando,b9=bJ.event.special;for(;(b5=b3[b7])!=null;b7++){if(cb||bJ.acceptData(b5)){b4=b5[cc];b6=b4&&e[b4];if(b6){if(b6.events){for(ca in b6.events){if(b9[ca]){bJ.event.remove(b5,ca)}else{bJ.removeEvent(b5,ca,b6.handle)}}}if(e[b4]){delete e[b4];if(b8){delete b5[cc]}else{if(typeof b5.removeAttribute!==aC){b5.removeAttribute(cc)
}else{b5[cc]=null}}a6.push(b4)}}}}}});var aE,bo,E,bg=/alpha\([^)]*\)/i,aT=/opacity\s*=\s*([^)]*)/,bn=/^(top|right|bottom|left)$/,F=/^(none|table(?!-c[ea]).+)/,aY=/^margin/,a9=new RegExp("^("+bA+")(.*)$","i"),W=new RegExp("^("+bA+")(?!px)[a-z%]+$","i"),S=new RegExp("^([+-])=("+bA+")","i"),bj={BODY:"block"},bb={position:"absolute",visibility:"hidden",display:"block"},bC={letterSpacing:0,fontWeight:400},bT=["Top","Right","Bottom","Left"],av=["Webkit","O","Moz","ms"];function b(b5,b3){if(b3 in b5){return b3
}var b6=b3.charAt(0).toUpperCase()+b3.slice(1),e=b3,b4=av.length;while(b4--){b3=av[b4]+b6;if(b3 in b5){return b3}}return e}function P(b3,e){b3=e||b3;return bJ.css(b3,"display")==="none"||!bJ.contains(b3.ownerDocument,b3)}function p(b8,e){var b9,b6,b7,b3=[],b4=0,b5=b8.length;for(;b4<b5;b4++){b6=b8[b4];if(!b6.style){continue}b3[b4]=bJ._data(b6,"olddisplay");b9=b6.style.display;if(e){if(!b3[b4]&&b9==="none"){b6.style.display=""}if(b6.style.display===""&&P(b6)){b3[b4]=bJ._data(b6,"olddisplay",bE(b6.nodeName))
}}else{if(!b3[b4]){b7=P(b6);if(b9&&b9!=="none"||!b7){bJ._data(b6,"olddisplay",b7?b9:bJ.css(b6,"display"))}}}}for(b4=0;b4<b5;b4++){b6=b8[b4];if(!b6.style){continue}if(!e||b6.style.display==="none"||b6.style.display===""){b6.style.display=e?b3[b4]||"":"none"}}return b8}bJ.fn.extend({css:function(e,b3){return bJ.access(this,function(b8,b5,b9){var b4,b7,ca={},b6=0;if(bJ.isArray(b5)){b7=bo(b8);b4=b5.length;for(;b6<b4;b6++){ca[b5[b6]]=bJ.css(b8,b5[b6],false,b7)}return ca}return b9!==aG?bJ.style(b8,b5,b9):bJ.css(b8,b5)
},e,b3,arguments.length>1)},show:function(){return p(this,true)},hide:function(){return p(this)},toggle:function(b3){var e=typeof b3==="boolean";return this.each(function(){if(e?b3:P(this)){bJ(this).show()}else{bJ(this).hide()}})}});bJ.extend({cssHooks:{opacity:{get:function(b4,b3){if(b3){var e=E(b4,"opacity");return e===""?"1":e}}}},cssNumber:{"columnCount":true,"fillOpacity":true,"fontWeight":true,"lineHeight":true,"opacity":true,"orphans":true,"widows":true,"zIndex":true,"zoom":true},cssProps:{"float":bJ.support.cssFloat?"cssFloat":"styleFloat"},style:function(b5,b4,cb,b6){if(!b5||b5.nodeType===3||b5.nodeType===8||!b5.style){return
}var b9,ca,cc,b7=bJ.camelCase(b4),b3=b5.style;b4=bJ.cssProps[b7]||(bJ.cssProps[b7]=b(b3,b7));cc=bJ.cssHooks[b4]||bJ.cssHooks[b7];if(cb!==aG){ca=typeof cb;if(ca==="string"&&(b9=S.exec(cb))){cb=(b9[1]+1)*b9[2]+parseFloat(bJ.css(b5,b4));ca="number"}if(cb==null||ca==="number"&&isNaN(cb)){return}if(ca==="number"&&!bJ.cssNumber[b7]){cb+="px"}if(!bJ.support.clearCloneStyle&&cb===""&&b4.indexOf("background")===0){b3[b4]="inherit"}if(!cc||!("set" in cc)||(cb=cc.set(b5,cb,b6))!==aG){try{b3[b4]=cb}catch(b8){}}}else{if(cc&&"get" in cc&&(b9=cc.get(b5,false,b6))!==aG){return b9
}return b3[b4]}},css:function(b8,b6,b3,b7){var b5,b9,e,b4=bJ.camelCase(b6);b6=bJ.cssProps[b4]||(bJ.cssProps[b4]=b(b8.style,b4));e=bJ.cssHooks[b6]||bJ.cssHooks[b4];if(e&&"get" in e){b9=e.get(b8,true,b3)}if(b9===aG){b9=E(b8,b6,b7)}if(b9==="normal"&&b6 in bC){b9=bC[b6]}if(b3===""||b3){b5=parseFloat(b9);return b3===true||bJ.isNumeric(b5)?b5||0:b9}return b9},swap:function(b7,b6,b8,b5){var b4,b3,e={};for(b3 in b6){e[b3]=b7.style[b3];b7.style[b3]=b6[b3]}b4=b8.apply(b7,b5||[]);for(b3 in b6){b7.style[b3]=e[b3]
}return b4}});if(a2.getComputedStyle){bo=function(e){return a2.getComputedStyle(e,null)};E=function(b6,b4,b8){var b5,b3,ca,b7=b8||bo(b6),b9=b7?b7.getPropertyValue(b4)||b7[b4]:aG,e=b6.style;if(b7){if(b9===""&&!bJ.contains(b6.ownerDocument,b6)){b9=bJ.style(b6,b4)}if(W.test(b9)&&aY.test(b4)){b5=e.width;b3=e.minWidth;ca=e.maxWidth;e.minWidth=e.maxWidth=e.width=b9;b9=b7.width;e.width=b5;e.minWidth=b3;e.maxWidth=ca}}return b9}}else{if(l.documentElement.currentStyle){bo=function(e){return e.currentStyle
};E=function(b5,b3,b8){var b4,b7,b9,b6=b8||bo(b5),ca=b6?b6[b3]:aG,e=b5.style;if(ca==null&&e&&e[b3]){ca=e[b3]}if(W.test(ca)&&!bn.test(b3)){b4=e.left;b7=b5.runtimeStyle;b9=b7&&b7.left;if(b9){b7.left=b5.currentStyle.left}e.left=b3==="fontSize"?"1em":ca;ca=e.pixelLeft+"px";e.left=b4;if(b9){b7.left=b9}}return ca===""?"auto":ca}}}function aJ(e,b4,b5){var b3=a9.exec(b4);return b3?Math.max(0,b3[1]-(b5||0))+(b3[2]||"px"):b4}function aw(b6,b3,e,b8,b5){var b4=e===(b8?"border":"content")?4:b3==="width"?1:0,b7=0;
for(;b4<4;b4+=2){if(e==="margin"){b7+=bJ.css(b6,e+bT[b4],true,b5)}if(b8){if(e==="content"){b7-=bJ.css(b6,"padding"+bT[b4],true,b5)}if(e!=="margin"){b7-=bJ.css(b6,"border"+bT[b4]+"Width",true,b5)}}else{b7+=bJ.css(b6,"padding"+bT[b4],true,b5);if(e!=="padding"){b7+=bJ.css(b6,"border"+bT[b4]+"Width",true,b5)}}}return b7}function u(b6,b3,e){var b5=true,b7=b3==="width"?b6.offsetWidth:b6.offsetHeight,b4=bo(b6),b8=bJ.support.boxSizing&&bJ.css(b6,"boxSizing",false,b4)==="border-box";if(b7<=0||b7==null){b7=E(b6,b3,b4);
if(b7<0||b7==null){b7=b6.style[b3]}if(W.test(b7)){return b7}b5=b8&&(bJ.support.boxSizingReliable||b7===b6.style[b3]);b7=parseFloat(b7)||0}return(b7+aw(b6,b3,e||(b8?"border":"content"),b5,b4))+"px"}function bE(b4){var b3=l,e=bj[b4];if(!e){e=a1(b4,b3);if(e==="none"||!e){aE=(aE||bJ("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(b3.documentElement);b3=(aE[0].contentWindow||aE[0].contentDocument).document;b3.write("<!doctype html><html><body>");b3.close();
e=a1(b4,b3);aE.detach()}bj[b4]=e}return e}function a1(e,b5){var b3=bJ(b5.createElement(e)).appendTo(b5.body),b4=bJ.css(b3[0],"display");b3.remove();return b4}bJ.each(["height","width"],function(b3,e){bJ.cssHooks[e]={get:function(b6,b5,b4){if(b5){return b6.offsetWidth===0&&F.test(bJ.css(b6,"display"))?bJ.swap(b6,bb,function(){return u(b6,e,b4)}):u(b6,e,b4)}},set:function(b6,b7,b4){var b5=b4&&bo(b6);return aJ(b6,b7,b4?aw(b6,e,b4,bJ.support.boxSizing&&bJ.css(b6,"boxSizing",false,b5)==="border-box",b5):0)
}}});if(!bJ.support.opacity){bJ.cssHooks.opacity={get:function(b3,e){return aT.test((e&&b3.currentStyle?b3.currentStyle.filter:b3.style.filter)||"")?(0.01*parseFloat(RegExp.$1))+"":e?"1":""},set:function(b6,b7){var b5=b6.style,b3=b6.currentStyle,e=bJ.isNumeric(b7)?"alpha(opacity="+b7*100+")":"",b4=b3&&b3.filter||b5.filter||"";b5.zoom=1;if((b7>=1||b7==="")&&bJ.trim(b4.replace(bg,""))===""&&b5.removeAttribute){b5.removeAttribute("filter");if(b7===""||b3&&!b3.filter){return}}b5.filter=bg.test(b4)?b4.replace(bg,e):b4+" "+e
}}}bJ(function(){if(!bJ.support.reliableMarginRight){bJ.cssHooks.marginRight={get:function(b3,e){if(e){return bJ.swap(b3,{"display":"inline-block"},E,[b3,"marginRight"])}}}}if(!bJ.support.pixelPosition&&bJ.fn.position){bJ.each(["top","left"],function(e,b3){bJ.cssHooks[b3]={get:function(b5,b4){if(b4){b4=E(b5,b3);return W.test(b4)?bJ(b5).position()[b3]+"px":b4}}}})}});if(bJ.expr&&bJ.expr.filters){bJ.expr.filters.hidden=function(e){return e.offsetWidth<=0&&e.offsetHeight<=0||(!bJ.support.reliableHiddenOffsets&&((e.style&&e.style.display)||bJ.css(e,"display"))==="none")
};bJ.expr.filters.visible=function(e){return !bJ.expr.filters.hidden(e)}}bJ.each({margin:"",padding:"",border:"Width"},function(e,b3){bJ.cssHooks[e+b3]={expand:function(b6){var b5=0,b4={},b7=typeof b6==="string"?b6.split(" "):[b6];for(;b5<4;b5++){b4[e+bT[b5]+b3]=b7[b5]||b7[b5-2]||b7[0]}return b4}};if(!aY.test(e)){bJ.cssHooks[e+b3].set=aJ}});var bv=/%20/g,aR=/\[\]$/,U=/\r?\n/g,c=/^(?:submit|button|image|reset|file)$/i,au=/^(?:input|select|textarea|keygen)/i;bJ.fn.extend({serialize:function(){return bJ.param(this.serializeArray())
},serializeArray:function(){return this.map(function(){var e=bJ.prop(this,"elements");return e?bJ.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!bJ(this).is(":disabled")&&au.test(this.nodeName)&&!c.test(e)&&(this.checked||!q.test(e))}).map(function(e,b3){var b4=bJ(this).val();return b4==null?null:bJ.isArray(b4)?bJ.map(b4,function(b5){return{name:b3.name,value:b5.replace(U,"\r\n")}}):{name:b3.name,value:b4.replace(U,"\r\n")}}).get()}});bJ.param=function(e,b4){var b5,b3=[],b6=function(b7,b8){b8=bJ.isFunction(b8)?b8():(b8==null?"":b8);
b3[b3.length]=encodeURIComponent(b7)+"="+encodeURIComponent(b8)};if(b4===aG){b4=bJ.ajaxSettings&&bJ.ajaxSettings.traditional}if(bJ.isArray(e)||(e.jquery&&!bJ.isPlainObject(e))){bJ.each(e,function(){b6(this.name,this.value)})}else{for(b5 in e){i(b5,e[b5],b4,b6)}}return b3.join("&").replace(bv,"+")};function i(b4,b6,b3,b5){var e;if(bJ.isArray(b6)){bJ.each(b6,function(b8,b7){if(b3||aR.test(b4)){b5(b4,b7)}else{i(b4+"["+(typeof b7==="object"?b8:"")+"]",b7,b3,b5)}})}else{if(!b3&&bJ.type(b6)==="object"){for(e in b6){i(b4+"["+e+"]",b6[e],b3,b5)
}}else{b5(b4,b6)}}}bJ.each(("blur focus focusin focusout load resize scroll unload click dblclick "+"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave "+"change select submit keydown keypress keyup error contextmenu").split(" "),function(b3,e){bJ.fn[e]=function(b5,b4){return arguments.length>0?this.on(e,null,b5,b4):this.trigger(e)}});bJ.fn.hover=function(e,b3){return this.mouseenter(e).mouseleave(b3||e)};var b1,Y,bO=bJ.now(),az=/\?/,ap=/#.*$/,O=/([?&])_=[^&]*/,ag=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,B=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,o=/^(?:GET|HEAD)$/,aH=/^\/\//,aU=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,b0=bJ.fn.load,v={},a7={},aW="*/".concat("*");
try{Y=aL.href}catch(bf){Y=l.createElement("a");Y.href="";Y=Y.href}b1=aU.exec(Y.toLowerCase())||[];function bL(e){return function(b6,b7){if(typeof b6!=="string"){b7=b6;b6="*"}var b3,b4=0,b5=b6.toLowerCase().match(ac)||[];if(bJ.isFunction(b7)){while((b3=b5[b4++])){if(b3[0]==="+"){b3=b3.slice(1)||"*";(e[b3]=e[b3]||[]).unshift(b7)}else{(e[b3]=e[b3]||[]).push(b7)}}}}}function n(e,b4,b8,b5){var b3={},b6=(e===a7);function b7(b9){var ca;b3[b9]=true;bJ.each(e[b9]||[],function(cc,cb){var cd=cb(b4,b8,b5);if(typeof cd==="string"&&!b6&&!b3[cd]){b4.dataTypes.unshift(cd);
b7(cd);return false}else{if(b6){return !(ca=cd)}}});return ca}return b7(b4.dataTypes[0])||!b3["*"]&&b7("*")}function r(b4,b5){var e,b3,b6=bJ.ajaxSettings.flatOptions||{};for(b3 in b5){if(b5[b3]!==aG){(b6[b3]?b4:(e||(e={})))[b3]=b5[b3]}}if(e){bJ.extend(true,b4,e)}return b4}bJ.fn.load=function(b5,b8,b9){if(typeof b5!=="string"&&b0){return b0.apply(this,arguments)}var e,b4,b6,b3=this,b7=b5.indexOf(" ");if(b7>=0){e=b5.slice(b7,b5.length);b5=b5.slice(0,b7)}if(bJ.isFunction(b8)){b9=b8;b8=aG}else{if(b8&&typeof b8==="object"){b6="POST"
}}if(b3.length>0){bJ.ajax({url:b5,type:b6,dataType:"html",data:b8}).done(function(ca){b4=arguments;b3.html(e?bJ("<div>").append(bJ.parseHTML(ca)).find(e):ca)}).complete(b9&&function(cb,ca){b3.each(b9,b4||[cb.responseText,ca,cb])})}return this};bJ.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,b3){bJ.fn[b3]=function(b4){return this.on(b3,b4)}});bJ.each(["get","post"],function(e,b3){bJ[b3]=function(b4,b6,b7,b5){if(bJ.isFunction(b6)){b5=b5||b7;b7=b6;b6=aG
}return bJ.ajax({url:b4,type:b3,dataType:b5,data:b6,success:b7})}});bJ.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Y,type:"GET",isLocal:B.test(b1[1]),global:true,processData:true,async:true,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":aW,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a2.String,"text html":true,"text json":bJ.parseJSON,"text xml":bJ.parseXML},flatOptions:{url:true,context:true}},ajaxSetup:function(b3,e){return e?r(r(b3,bJ.ajaxSettings),e):r(bJ.ajaxSettings,b3)
},ajaxPrefilter:bL(v),ajaxTransport:bL(a7),ajax:function(b7,b4){if(typeof b7==="object"){b4=b7;b7=aG}b4=b4||{};var cg,ci,b8,cn,cc,b3,cj,b5,cb=bJ.ajaxSetup({},b4),cp=cb.context||cb,ce=cb.context&&(cp.nodeType||cp.jquery)?bJ(cp):bJ.event,co=bJ.Deferred(),cl=bJ.Callbacks("once memory"),b9=cb.statusCode||{},cf={},cm={},b6=0,ca="canceled",ch={readyState:0,getResponseHeader:function(cq){var e;if(b6===2){if(!b5){b5={};while((e=ag.exec(cn))){b5[e[1].toLowerCase()]=e[2]}}e=b5[cq.toLowerCase()]}return e==null?null:e
},getAllResponseHeaders:function(){return b6===2?cn:null},setRequestHeader:function(cq,cr){var e=cq.toLowerCase();if(!b6){cq=cm[e]=cm[e]||cq;cf[cq]=cr}return this},overrideMimeType:function(e){if(!b6){cb.mimeType=e}return this},statusCode:function(cq){var e;if(cq){if(b6<2){for(e in cq){b9[e]=[b9[e],cq[e]]}}else{ch.always(cq[ch.status])}}return this},abort:function(cq){var e=cq||ca;if(cj){cj.abort(e)}cd(0,e);return this}};co.promise(ch).complete=cl.add;ch.success=ch.done;ch.error=ch.fail;cb.url=((b7||cb.url||Y)+"").replace(ap,"").replace(aH,b1[1]+"//");
cb.type=b4.method||b4.type||cb.method||cb.type;cb.dataTypes=bJ.trim(cb.dataType||"*").toLowerCase().match(ac)||[""];if(cb.crossDomain==null){cg=aU.exec(cb.url.toLowerCase());cb.crossDomain=!!(cg&&(cg[1]!==b1[1]||cg[2]!==b1[2]||(cg[3]||(cg[1]==="http:"?80:443))!=(b1[3]||(b1[1]==="http:"?80:443))))}if(cb.data&&cb.processData&&typeof cb.data!=="string"){cb.data=bJ.param(cb.data,cb.traditional)}n(v,cb,b4,ch);if(b6===2){return ch}b3=cb.global;if(b3&&bJ.active++===0){bJ.event.trigger("ajaxStart")}cb.type=cb.type.toUpperCase();
cb.hasContent=!o.test(cb.type);b8=cb.url;if(!cb.hasContent){if(cb.data){b8=(cb.url+=(az.test(b8)?"&":"?")+cb.data);delete cb.data}if(cb.cache===false){cb.url=O.test(b8)?b8.replace(O,"$1_="+bO++):b8+(az.test(b8)?"&":"?")+"_="+bO++}}if(cb.ifModified){if(bJ.lastModified[b8]){ch.setRequestHeader("If-Modified-Since",bJ.lastModified[b8])}if(bJ.etag[b8]){ch.setRequestHeader("If-None-Match",bJ.etag[b8])}}if(cb.data&&cb.hasContent&&cb.contentType!==false||b4.contentType){ch.setRequestHeader("Content-Type",cb.contentType)
}ch.setRequestHeader("Accept",cb.dataTypes[0]&&cb.accepts[cb.dataTypes[0]]?cb.accepts[cb.dataTypes[0]]+(cb.dataTypes[0]!=="*"?", "+aW+"; q=0.01":""):cb.accepts["*"]);for(ci in cb.headers){ch.setRequestHeader(ci,cb.headers[ci])}if(cb.beforeSend&&(cb.beforeSend.call(cp,ch,cb)===false||b6===2)){return ch.abort()}ca="abort";for(ci in {success:1,error:1,complete:1}){ch[ci](cb[ci])}cj=n(a7,cb,b4,ch);if(!cj){cd(-1,"No Transport")}else{ch.readyState=1;if(b3){ce.trigger("ajaxSend",[ch,cb])}if(cb.async&&cb.timeout>0){cc=setTimeout(function(){ch.abort("timeout")
},cb.timeout)}try{b6=1;cj.send(cf,cd)}catch(ck){if(b6<2){cd(-1,ck)}else{throw ck}}}function cd(cu,cq,cv,cs){var e,cy,cw,ct,cx,cr=cq;if(b6===2){return}b6=2;if(cc){clearTimeout(cc)}cj=aG;cn=cs||"";ch.readyState=cu>0?4:0;if(cv){ct=g(cb,ch,cv)}if(cu>=200&&cu<300||cu===304){if(cb.ifModified){cx=ch.getResponseHeader("Last-Modified");if(cx){bJ.lastModified[b8]=cx}cx=ch.getResponseHeader("etag");if(cx){bJ.etag[b8]=cx}}if(cu===204){e=true;cr="nocontent"}else{if(cu===304){e=true;cr="notmodified"}else{e=af(cb,ct);
cr=e.state;cy=e.data;cw=e.error;e=!cw}}}else{cw=cr;if(cu||!cr){cr="error";if(cu<0){cu=0}}}ch.status=cu;ch.statusText=(cq||cr)+"";if(e){co.resolveWith(cp,[cy,cr,ch])}else{co.rejectWith(cp,[ch,cr,cw])}ch.statusCode(b9);b9=aG;if(b3){ce.trigger(e?"ajaxSuccess":"ajaxError",[ch,cb,e?cy:cw])}cl.fireWith(cp,[ch,cr]);if(b3){ce.trigger("ajaxComplete",[ch,cb]);if(!(--bJ.active)){bJ.event.trigger("ajaxStop")}}}return ch},getScript:function(e,b3){return bJ.get(e,aG,b3,"script")},getJSON:function(e,b3,b4){return bJ.get(e,b3,b4,"json")
}});function g(cb,ca,b7){var e,b6,b5,b8,b3=cb.contents,b9=cb.dataTypes,b4=cb.responseFields;for(b8 in b4){if(b8 in b7){ca[b4[b8]]=b7[b8]}}while(b9[0]==="*"){b9.shift();if(b6===aG){b6=cb.mimeType||ca.getResponseHeader("Content-Type")}}if(b6){for(b8 in b3){if(b3[b8]&&b3[b8].test(b6)){b9.unshift(b8);break}}}if(b9[0] in b7){b5=b9[0]}else{for(b8 in b7){if(!b9[0]||cb.converters[b8+" "+b9[0]]){b5=b8;break}if(!e){e=b8}}b5=b5||e}if(b5){if(b5!==b9[0]){b9.unshift(b5)}return b7[b5]}}function af(cd,b5){var b3,b9,cb,b6,cc={},b7=0,ca=cd.dataTypes.slice(),b4=ca[0];
if(cd.dataFilter){b5=cd.dataFilter(b5,cd.dataType)}if(ca[1]){for(cb in cd.converters){cc[cb.toLowerCase()]=cd.converters[cb]}}for(;(b9=ca[++b7]);){if(b9!=="*"){if(b4!=="*"&&b4!==b9){cb=cc[b4+" "+b9]||cc["* "+b9];if(!cb){for(b3 in cc){b6=b3.split(" ");if(b6[1]===b9){cb=cc[b4+" "+b6[0]]||cc["* "+b6[0]];if(cb){if(cb===true){cb=cc[b3]}else{if(cc[b3]!==true){b9=b6[0];ca.splice(b7--,0,b9)}}break}}}}if(cb!==true){if(cb&&cd["throws"]){b5=cb(b5)}else{try{b5=cb(b5)}catch(b8){return{state:"parsererror",error:cb?b8:"No conversion from "+b4+" to "+b9}
}}}}b4=b9}}return{state:"success",data:b5}}bJ.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){bJ.globalEval(e);return e}}});bJ.ajaxPrefilter("script",function(e){if(e.cache===aG){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});bJ.ajaxTransport("script",function(b4){if(b4.crossDomain){var e,b3=l.head||bJ("head")[0]||l.documentElement;return{send:function(b5,b6){e=l.createElement("script");
e.async=true;if(b4.scriptCharset){e.charset=b4.scriptCharset}e.src=b4.url;e.onload=e.onreadystatechange=function(b8,b7){if(b7||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(e.parentNode){e.parentNode.removeChild(e)}e=null;if(!b7){b6(200,"success")}}};b3.insertBefore(e,b3.firstChild)},abort:function(){if(e){e.onload(aG,true)}}}}});var bq=[],a5=/(=)\?(?=&|$)|\?\?/;bJ.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=bq.pop()||(bJ.expando+"_"+(bO++));
this[e]=true;return e}});bJ.ajaxPrefilter("json jsonp",function(b5,e,b6){var b8,b3,b4,b7=b5.jsonp!==false&&(a5.test(b5.url)?"url":typeof b5.data==="string"&&!(b5.contentType||"").indexOf("application/x-www-form-urlencoded")&&a5.test(b5.data)&&"data");if(b7||b5.dataTypes[0]==="jsonp"){b8=b5.jsonpCallback=bJ.isFunction(b5.jsonpCallback)?b5.jsonpCallback():b5.jsonpCallback;if(b7){b5[b7]=b5[b7].replace(a5,"$1"+b8)}else{if(b5.jsonp!==false){b5.url+=(az.test(b5.url)?"&":"?")+b5.jsonp+"="+b8}}b5.converters["script json"]=function(){if(!b4){bJ.error(b8+" was not called")
}return b4[0]};b5.dataTypes[0]="json";b3=a2[b8];a2[b8]=function(){b4=arguments};b6.always(function(){a2[b8]=b3;if(b5[b8]){b5.jsonpCallback=e.jsonpCallback;bq.push(b8)}if(b4&&bJ.isFunction(b3)){b3(b4[0])}b4=b3=aG});return"script"}});var ah,ax,ay=0,aP=a2.ActiveXObject&&function(){var e;for(e in ah){ah[e](aG,true)}};function bD(){try{return new a2.XMLHttpRequest()}catch(b3){}}function bd(){try{return new a2.ActiveXObject("Microsoft.XMLHTTP")}catch(b3){}}bJ.ajaxSettings.xhr=a2.ActiveXObject?function(){return !this.isLocal&&bD()||bd()
}:bD;ax=bJ.ajaxSettings.xhr();bJ.support.cors=!!ax&&("withCredentials" in ax);ax=bJ.support.ajax=!!ax;if(ax){bJ.ajaxTransport(function(e){if(!e.crossDomain||bJ.support.cors){var b3;return{send:function(b9,b4){var b7,b5,b8=e.xhr();if(e.username){b8.open(e.type,e.url,e.async,e.username,e.password)}else{b8.open(e.type,e.url,e.async)}if(e.xhrFields){for(b5 in e.xhrFields){b8[b5]=e.xhrFields[b5]}}if(e.mimeType&&b8.overrideMimeType){b8.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!b9["X-Requested-With"]){b9["X-Requested-With"]="XMLHttpRequest"
}try{for(b5 in b9){b8.setRequestHeader(b5,b9[b5])}}catch(b6){}b8.send((e.hasContent&&e.data)||null);b3=function(cc,cb){var ca,cd,cg,ce;try{if(b3&&(cb||b8.readyState===4)){b3=aG;if(b7){b8.onreadystatechange=bJ.noop;if(aP){delete ah[b7]}}if(cb){if(b8.readyState!==4){b8.abort()}}else{ce={};ca=b8.status;cd=b8.getAllResponseHeaders();if(typeof b8.responseText==="string"){ce.text=b8.responseText}try{cg=b8.statusText}catch(cf){cg=""}if(!ca&&e.isLocal&&!e.crossDomain){ca=ce.text?200:404}else{if(ca===1223){ca=204
}}}}}catch(ch){if(!cb){b4(-1,ch)}}if(ce){b4(ca,cg,ce,cd)}};if(!e.async){b3()}else{if(b8.readyState===4){setTimeout(b3)}else{b7=++ay;if(aP){if(!ah){ah={};bJ(a2).unload(aP)}ah[b7]=b3}b8.onreadystatechange=b3}}},abort:function(){if(b3){b3(aG,true)}}}}})}var K,ad,bR=/^(?:toggle|show|hide)$/,bK=new RegExp("^(?:([+-])=|)("+bA+")([a-z%]*)$","i"),bQ=/queueHooks$/,aB=[h],a0={"*":[function(e,b9){var b5,ca,cb=this.createTween(e,b9),b6=bK.exec(b9),b7=cb.cur(),b3=+b7||0,b4=1,b8=20;if(b6){b5=+b6[2];ca=b6[3]||(bJ.cssNumber[e]?"":"px");
if(ca!=="px"&&b3){b3=bJ.css(cb.elem,e,true)||b5||1;do{b4=b4||".5";b3=b3/b4;bJ.style(cb.elem,e,b3+ca)}while(b4!==(b4=cb.cur()/b7)&&b4!==1&&--b8)}cb.unit=ca;cb.start=b3;cb.end=b6[1]?b3+(b6[1]+1)*b5:b5}return cb}]};function bm(){setTimeout(function(){K=aG});return(K=bJ.now())}function be(b3,e){bJ.each(e,function(b8,b6){var b7=(a0[b8]||[]).concat(a0["*"]),b4=0,b5=b7.length;for(;b4<b5;b4++){if(b7[b4].call(b3,b8,b6)){return}}})}function f(b4,b8,cb){var cc,e,b7=0,b3=aB.length,ca=bJ.Deferred().always(function(){delete b6.elem
}),b6=function(){if(e){return false}var ci=K||bm(),cf=Math.max(0,b5.startTime+b5.duration-ci),cd=cf/b5.duration||0,ch=1-cd,ce=0,cg=b5.tweens.length;for(;ce<cg;ce++){b5.tweens[ce].run(ch)}ca.notifyWith(b4,[b5,ch,cf]);if(ch<1&&cg){return cf}else{ca.resolveWith(b4,[b5]);return false}},b5=ca.promise({elem:b4,props:bJ.extend({},b8),opts:bJ.extend(true,{specialEasing:{}},cb),originalProperties:b8,originalOptions:cb,startTime:K||bm(),duration:cb.duration,tweens:[],createTween:function(cf,cd){var ce=bJ.Tween(b4,b5.opts,cf,cd,b5.opts.specialEasing[cf]||b5.opts.easing);
b5.tweens.push(ce);return ce},stop:function(ce){var cd=0,cf=ce?b5.tweens.length:0;if(e){return this}e=true;for(;cd<cf;cd++){b5.tweens[cd].run(1)}if(ce){ca.resolveWith(b4,[b5,ce])}else{ca.rejectWith(b4,[b5,ce])}return this}}),b9=b5.props;am(b9,b5.opts.specialEasing);for(;b7<b3;b7++){cc=aB[b7].call(b5,b4,b9,b5.opts);if(cc){return cc}}be(b5,b9);if(bJ.isFunction(b5.opts.start)){b5.opts.start.call(b4,b5)}bJ.fx.timer(bJ.extend(b6,{elem:b4,anim:b5,queue:b5.opts.queue}));return b5.progress(b5.opts.progress).done(b5.opts.done,b5.opts.complete).fail(b5.opts.fail).always(b5.opts.always)
}function am(b5,b7){var b6,b4,b3,b8,e;for(b3 in b5){b4=bJ.camelCase(b3);b8=b7[b4];b6=b5[b3];if(bJ.isArray(b6)){b8=b6[1];b6=b5[b3]=b6[0]}if(b3!==b4){b5[b4]=b6;delete b5[b3]}e=bJ.cssHooks[b4];if(e&&"expand" in e){b6=e.expand(b6);delete b5[b4];for(b3 in b6){if(!(b3 in b5)){b5[b3]=b6[b3];b7[b3]=b8}}}else{b7[b4]=b8}}}bJ.Animation=bJ.extend(f,{tweener:function(b3,b6){if(bJ.isFunction(b3)){b6=b3;b3=["*"]}else{b3=b3.split(" ")}var b5,e=0,b4=b3.length;for(;e<b4;e++){b5=b3[e];a0[b5]=a0[b5]||[];a0[b5].unshift(b6)
}},prefilter:function(b3,e){if(e){aB.unshift(b3)}else{aB.push(b3)}}});function h(b6,cc,e){var b4,cb,b5,ce,ci,b8,ch,cg,cf,b7=this,b3=b6.style,cd={},ca=[],b9=b6.nodeType&&P(b6);if(!e.queue){cg=bJ._queueHooks(b6,"fx");if(cg.unqueued==null){cg.unqueued=0;cf=cg.empty.fire;cg.empty.fire=function(){if(!cg.unqueued){cf()}}}cg.unqueued++;b7.always(function(){b7.always(function(){cg.unqueued--;if(!bJ.queue(b6,"fx").length){cg.empty.fire()}})})}if(b6.nodeType===1&&("height" in cc||"width" in cc)){e.overflow=[b3.overflow,b3.overflowX,b3.overflowY];
if(bJ.css(b6,"display")==="inline"&&bJ.css(b6,"float")==="none"){if(!bJ.support.inlineBlockNeedsLayout||bE(b6.nodeName)==="inline"){b3.display="inline-block"}else{b3.zoom=1}}}if(e.overflow){b3.overflow="hidden";if(!bJ.support.shrinkWrapBlocks){b7.always(function(){b3.overflow=e.overflow[0];b3.overflowX=e.overflow[1];b3.overflowY=e.overflow[2]})}}for(cb in cc){ce=cc[cb];if(bR.exec(ce)){delete cc[cb];b8=b8||ce==="toggle";if(ce===(b9?"hide":"show")){continue}ca.push(cb)}}b5=ca.length;if(b5){ci=bJ._data(b6,"fxshow")||bJ._data(b6,"fxshow",{});
if("hidden" in ci){b9=ci.hidden}if(b8){ci.hidden=!b9}if(b9){bJ(b6).show()}else{b7.done(function(){bJ(b6).hide()})}b7.done(function(){var cj;bJ._removeData(b6,"fxshow");for(cj in cd){bJ.style(b6,cj,cd[cj])}});for(cb=0;cb<b5;cb++){b4=ca[cb];ch=b7.createTween(b4,b9?ci[b4]:0);cd[b4]=ci[b4]||bJ.style(b6,b4);if(!(b4 in ci)){ci[b4]=ch.start;if(b9){ch.end=ch.start;ch.start=b4==="width"||b4==="height"?1:0}}}}}function G(b4,b3,b6,e,b5){return new G.prototype.init(b4,b3,b6,e,b5)}bJ.Tween=G;G.prototype={constructor:G,init:function(b5,b3,b7,e,b6,b4){this.elem=b5;
this.prop=b7;this.easing=b6||"swing";this.options=b3;this.start=this.now=this.cur();this.end=e;this.unit=b4||(bJ.cssNumber[b7]?"":"px")},cur:function(){var e=G.propHooks[this.prop];return e&&e.get?e.get(this):G.propHooks._default.get(this)},run:function(b4){var b3,e=G.propHooks[this.prop];if(this.options.duration){this.pos=b3=bJ.easing[this.easing](b4,this.options.duration*b4,0,1,this.options.duration)}else{this.pos=b3=b4}this.now=(this.end-this.start)*b3+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this)
}if(e&&e.set){e.set(this)}else{G.propHooks._default.set(this)}return this}};G.prototype.init.prototype=G.prototype;G.propHooks={_default:{get:function(b3){var e;if(b3.elem[b3.prop]!=null&&(!b3.elem.style||b3.elem.style[b3.prop]==null)){return b3.elem[b3.prop]}e=bJ.css(b3.elem,b3.prop,"");return !e||e==="auto"?0:e},set:function(e){if(bJ.fx.step[e.prop]){bJ.fx.step[e.prop](e)}else{if(e.elem.style&&(e.elem.style[bJ.cssProps[e.prop]]!=null||bJ.cssHooks[e.prop])){bJ.style(e.elem,e.prop,e.now+e.unit)}else{e.elem[e.prop]=e.now
}}}}};G.propHooks.scrollTop=G.propHooks.scrollLeft={set:function(e){if(e.elem.nodeType&&e.elem.parentNode){e.elem[e.prop]=e.now}}};bJ.each(["toggle","show","hide"],function(b3,e){var b4=bJ.fn[e];bJ.fn[e]=function(b5,b7,b6){return b5==null||typeof b5==="boolean"?b4.apply(this,arguments):this.animate(bI(e,true),b5,b7,b6)}});bJ.fn.extend({fadeTo:function(e,b5,b4,b3){return this.filter(P).css("opacity",0).show().end().animate({opacity:b5},e,b4,b3)},animate:function(b8,b5,b7,b6){var b4=bJ.isEmptyObject(b8),e=bJ.speed(b5,b7,b6),b3=function(){var b9=f(this,bJ.extend({},b8),e);
b3.finish=function(){b9.stop(true)};if(b4||bJ._data(this,"finish")){b9.stop(true)}};b3.finish=b3;return b4||e.queue===false?this.each(b3):this.queue(e.queue,b3)},stop:function(b4,b3,e){var b5=function(b6){var b7=b6.stop;delete b6.stop;b7(e)};if(typeof b4!=="string"){e=b3;b3=b4;b4=aG}if(b3&&b4!==false){this.queue(b4||"fx",[])}return this.each(function(){var b9=true,b6=b4!=null&&b4+"queueHooks",b8=bJ.timers,b7=bJ._data(this);if(b6){if(b7[b6]&&b7[b6].stop){b5(b7[b6])}}else{for(b6 in b7){if(b7[b6]&&b7[b6].stop&&bQ.test(b6)){b5(b7[b6])
}}}for(b6=b8.length;b6--;){if(b8[b6].elem===this&&(b4==null||b8[b6].queue===b4)){b8[b6].anim.stop(e);b9=false;b8.splice(b6,1)}}if(b9||!e){bJ.dequeue(this,b4)}})},finish:function(e){if(e!==false){e=e||"fx"}return this.each(function(){var b5,b8=bJ._data(this),b4=b8[e+"queue"],b3=b8[e+"queueHooks"],b7=bJ.timers,b6=b4?b4.length:0;b8.finish=true;bJ.queue(this,e,[]);if(b3&&b3.cur&&b3.cur.finish){b3.cur.finish.call(this)}for(b5=b7.length;b5--;){if(b7[b5].elem===this&&b7[b5].queue===e){b7[b5].anim.stop(true);
b7.splice(b5,1)}}for(b5=0;b5<b6;b5++){if(b4[b5]&&b4[b5].finish){b4[b5].finish.call(this)}}delete b8.finish})}});function bI(b4,b6){var b5,e={height:b4},b3=0;b6=b6?1:0;for(;b3<4;b3+=2-b6){b5=bT[b3];e["margin"+b5]=e["padding"+b5]=b4}if(b6){e.opacity=e.width=b4}return e}bJ.each({slideDown:bI("show"),slideUp:bI("hide"),slideToggle:bI("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,b3){bJ.fn[e]=function(b4,b6,b5){return this.animate(b3,b4,b6,b5)}});
bJ.speed=function(b4,b5,b3){var e=b4&&typeof b4==="object"?bJ.extend({},b4):{complete:b3||!b3&&b5||bJ.isFunction(b4)&&b4,duration:b4,easing:b3&&b5||b5&&!bJ.isFunction(b5)&&b5};e.duration=bJ.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in bJ.fx.speeds?bJ.fx.speeds[e.duration]:bJ.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(){if(bJ.isFunction(e.old)){e.old.call(this)}if(e.queue){bJ.dequeue(this,e.queue)}};return e};bJ.easing={linear:function(e){return e
},swing:function(e){return 0.5-Math.cos(e*Math.PI)/2}};bJ.timers=[];bJ.fx=G.prototype.init;bJ.fx.tick=function(){var b4,b3=bJ.timers,e=0;K=bJ.now();for(;e<b3.length;e++){b4=b3[e];if(!b4()&&b3[e]===b4){b3.splice(e--,1)}}if(!b3.length){bJ.fx.stop()}K=aG};bJ.fx.timer=function(e){if(e()&&bJ.timers.push(e)){bJ.fx.start()}};bJ.fx.interval=13;bJ.fx.start=function(){if(!ad){ad=setInterval(bJ.fx.tick,bJ.fx.interval)}};bJ.fx.stop=function(){clearInterval(ad);ad=null};bJ.fx.speeds={slow:600,fast:200,_default:400};
bJ.fx.step={};if(bJ.expr&&bJ.expr.filters){bJ.expr.filters.animated=function(e){return bJ.grep(bJ.timers,function(b3){return e===b3.elem}).length}}bJ.fn.offset=function(b3){if(arguments.length){return b3===aG?this:this.each(function(b8){bJ.offset.setOffset(this,b3,b8)})}var e,b7,b5={top:0,left:0},b4=this[0],b6=b4&&b4.ownerDocument;if(!b6){return}e=b6.documentElement;if(!bJ.contains(e,b4)){return b5}if(typeof b4.getBoundingClientRect!==aC){b5=b4.getBoundingClientRect()}b7=bp(b6);return{top:b5.top+(b7.pageYOffset||e.scrollTop)-(e.clientTop||0),left:b5.left+(b7.pageXOffset||e.scrollLeft)-(e.clientLeft||0)}
};bJ.offset={setOffset:function(b5,ce,b8){var b9=bJ.css(b5,"position");if(b9==="static"){b5.style.position="relative"}var b7=bJ(b5),b3=b7.offset(),e=bJ.css(b5,"top"),cc=bJ.css(b5,"left"),cd=(b9==="absolute"||b9==="fixed")&&bJ.inArray("auto",[e,cc])>-1,cb={},ca={},b4,b6;if(cd){ca=b7.position();b4=ca.top;b6=ca.left}else{b4=parseFloat(e)||0;b6=parseFloat(cc)||0}if(bJ.isFunction(ce)){ce=ce.call(b5,b8,b3)}if(ce.top!=null){cb.top=(ce.top-b3.top)+b4}if(ce.left!=null){cb.left=(ce.left-b3.left)+b6}if("using" in ce){ce.using.call(b5,cb)
}else{b7.css(cb)}}};bJ.fn.extend({position:function(){if(!this[0]){return}var b4,b5,e={top:0,left:0},b3=this[0];if(bJ.css(b3,"position")==="fixed"){b5=b3.getBoundingClientRect()}else{b4=this.offsetParent();b5=this.offset();if(!bJ.nodeName(b4[0],"html")){e=b4.offset()}e.top+=bJ.css(b4[0],"borderTopWidth",true);e.left+=bJ.css(b4[0],"borderLeftWidth",true)}return{top:b5.top-e.top-bJ.css(b3,"marginTop",true),left:b5.left-e.left-bJ.css(b3,"marginLeft",true)}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||l.documentElement;
while(e&&(!bJ.nodeName(e,"html")&&bJ.css(e,"position")==="static")){e=e.offsetParent}return e||l.documentElement})}});bJ.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b4,b3){var e=/Y/.test(b3);bJ.fn[b4]=function(b5){return bJ.access(this,function(b6,b9,b8){var b7=bp(b6);if(b8===aG){return b7?(b3 in b7)?b7[b3]:b7.document.documentElement[b9]:b6[b9]}if(b7){b7.scrollTo(!e?b8:bJ(b7).scrollLeft(),e?b8:bJ(b7).scrollTop())}else{b6[b9]=b8}},b4,b5,arguments.length,null)}});function bp(e){return bJ.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false
}bJ.each({Height:"height",Width:"width"},function(e,b3){bJ.each({padding:"inner"+e,content:b3,"":"outer"+e},function(b4,b5){bJ.fn[b5]=function(b9,b8){var b7=arguments.length&&(b4||typeof b9!=="boolean"),b6=b4||(b9===true||b8===true?"margin":"border");return bJ.access(this,function(cb,ca,cc){var cd;if(bJ.isWindow(cb)){return cb.document.documentElement["client"+e]}if(cb.nodeType===9){cd=cb.documentElement;return Math.max(cb.body["scroll"+e],cd["scroll"+e],cb.body["offset"+e],cd["offset"+e],cd["client"+e])
}return cc===aG?bJ.css(cb,ca,b6):bJ.style(cb,ca,cc,b6)},b3,b7?b9:aG,b7,null)}})});a2.jQuery=a2.$=bJ;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return bJ})}})(window);
$(function(){if(!Array.prototype.lastIndexOf){Array.prototype.lastIndexOf=function(c){if(this===void 0||this===null){throw new TypeError()}var e,b,d=Object(this),a=d.length>>>0;if(a===0){return -1}e=a-1;if(arguments.length>1){e=Number(arguments[1]);if(e!=e){e=0}else{if(e!==0&&e!==(1/0)&&e!==-(1/0)){e=(e>0||-1)*Math.floor(Math.abs(e))}}}for(b=e>=0?Math.min(e,a-1):a-Math.abs(e);b>=0;b--){if(b in d&&d[b]===c){return b}}return -1}}if(!Array.prototype.indexOf){Array.prototype.indexOf=function(b){var a=this.length>>>0;
var c=Number(arguments[1])||0;c=(c<0)?Math.ceil(c):Math.floor(c);if(c<0){c+=a}for(;c<a;c++){if(c in this&&this[c]===b){return c}}return -1}}});$.extend(Array.prototype,{weakIndexOf:function(c){for(var b=0,a=this.length;b<a;b++){if(FR.equals(c,this[b])){return b}}return -1},weakLastIndexOf:function(c){for(var a=this.length,b=a-1;b>=0;b--){if(FR.equals(c,this[b])){return b}}return -1},remove:function(b){var a=this.weakIndexOf(b);if(a!=-1){this.splice(a,1)}return this},removeWeakEqual:function(b){var a=this.weakIndexOf(b);
if(a!=-1){this.splice(a,1)}return this},clear:function(){while(this.length>0){this.pop()}}});(function(){$.fn.swapClass=function(b,a){return b==undefined?this.removeClass().addClass(a):this.removeClass(b).addClass(a)};$.fn.switchClass=function(b,a){if(this.hasClass(b)){return(a||a===0)?this.swapClass(b,a):false}else{return this.swapClass(a,b)}};$.fn.isChildOf=function(a){var c=this;var e=c[0];var d=a[0];var f=e.parentNode;while(f){if(f==d){return true}else{if(!f.tagName||f.tagName.toUpperCase()=="HTML"){return false
}}f=f.parentNode}return false};$.fn.isChildAndSelfOf=function(a){return(this.closest(a).length>0)};$.fn.mousewheel=function(a){return this.each(function(){var b=this;b.D=0;if(FR.Browser.isIE()||FR.Browser.r.safari||FR.Browser.r.chrome){b.onmousewheel=function(){b.D=event.wheelDelta;event.returnValue=false;a&&a.call(b)}}else{b.addEventListener("DOMMouseScroll",function(c){b.D=c.detail>0?-1:1;c.preventDefault();a&&a.call(b)},false)}})};$.extend($.Event.prototype,{stopEvent:function(){this.stopPropagation();
this.preventDefault()}})})();$.extend(String,{escape:function(a){return a.replace(/('|\\)/g,"\\$1")},leftPad:function(d,b,c){var a=String(d);if(!c){c=" "}while(a.length<b){a=c+a}return a.toString()},format:function(b){var a=Array.prototype.slice.call(arguments,1);return b.replace(/\{(\d+)\}/g,function(c,d){return a[d]})}});$.extend(String.prototype,{startWith:function(a){if(a==null||a==""||this.length===0||a.length>this.length){return false}return this.substr(0,a.length)==a},endWith:function(a){if(a==null||a==""||this.length===0||a.length>this.length){return false
}return this.substring(this.length-a.length)==a},getQuery:function(a){var b=new RegExp("(^|&)"+a+"=([^&]*)(&|$)");var c=this.substr(this.indexOf("?")+1).match(b);if(c){return unescape(c[2])}return null},appendQuery:function(a){if(!a){return this}var b=this;if(b.indexOf("?")===-1){b+="?"}if(b.endWith("?")!==false){}else{b+="&"}$.each(a,function(c,d){if(typeof(c)==="string"){b+=c+"="+d+"&"}});b=b.substr(0,b.length-1);return b},replaceAll:function(b,a){return this.replace(new RegExp(b,"gm"),a)},perfectStart:function(a){if(this.startWith(a)){return this
}else{return a+this}},allIndexOf:function(b){if(typeof b!="string"){return[]}var e=this;var a=[];var d=0;while(e.length>0){var c=e.indexOf(b);if(c===-1){break}a.push(d+c);e=e.substring(c+b.length,e.length);d+=c+b.length}return a}});$.extend(Function.prototype,{createCallback:function(){var a=arguments;var b=this;return function(){return b.apply(window,a)}},createDelegate:function(c){var d=this;var b=arguments[1];var a=arguments[2];return function(){var f=b||arguments;if(a===true){f=Array.prototype.slice.call(arguments,0);
f=f.concat(b)}else{if(typeof a=="number"){f=Array.prototype.slice.call(arguments,0);var e=[a,0].concat(b);Array.prototype.splice.apply(f,e)}}return d.apply(c||window,f)}},createInterceptor:function(b,a){if(typeof b!="function"){return this}var c=this;return function(){b.target=this;b.method=c;if(b.apply(a||this||window,arguments)===false){return}return c.apply(this||window,arguments)}},defer:function(c,e,b,a){var d=this.createDelegate(e,b,a);if(c||c===0){return setTimeout(d,c)}d();return 0},createSequence:function(b,a){if(typeof b!="function"){return this
}var c=this;return function(){var d=c.apply(this||window,arguments);b.apply(a||this||window,arguments);return d}},getNameArguments:function(){var d=this.toString();var c=/function[^\(]*\(([^\)]*)\)/.exec(d);var b=[];if(c!=null){b=c[1].split(",")}return $.map(b,function(a){return $.trim(a)})},arguments2Json:function(){var a=arguments;var b=this.getNameArguments();var c={};$.each(b,function(d,e){if(a.length>d){c[e]=a[d]}});return c}});if(window.FR==null){window.FR={}}if(window.FR.servletURL==null){window.FR.servletURL={}
}$.extend(FR,{Plugin:{validLevel:function(d,c){var a=d.version||1;var b=c.version||1;return a>=b}}});var browser=function(){var d=navigator.userAgent.toLowerCase(),b=window.opera,c={ie:/(msie\s|trident.*rv:)([\w.]+)/.test(d)||d.indexOf("edge")>-1,edge:d.indexOf("edge")>-1,opera:(!!b&&b.version),webkit:(d.indexOf(" applewebkit/")>-1),mac:(d.indexOf("macintosh")>-1),quirks:(document.compatMode=="BackCompat")};c.gecko=(navigator.product=="Gecko"&&!c.webkit&&!c.opera&&!c.ie);var a=0;c.isInnerHtmlSuitable=true;
if(c.ie&&!c.edge){var g=d.match(/(?:msie\s([\w.]+))/);var f=d.match(/(?:trident.*rv:([\w.]+))/);if(g&&f&&g[1]&&f[1]){a=Math.max(g[1]*1,f[1]*1)}else{if(g&&g[1]){a=g[1]*1}else{if(f&&f[1]){a=f[1]*1}else{a=0}}}c.ie11Compat=document.documentMode===11;c.ie9Compat=document.documentMode===9;c.ie10Compat=document.documentMode===10;c.ie8=!!document.documentMode;c.ie8Compat=document.documentMode===8;c.ie7Compat=((a===7&&!document.documentMode)||document.documentMode===7);c.isInnerHtmlSuitable=(a===9&&c.ie9Compat)||(a===10&&c.ie10Compat)||(c.ie&&a===11&&c.ie11Compat)||(a===8);
c.ie6Compat=a<7;c.ie8bellow=a<8;c.ie9above=a>8;c.ie9below=a<9;c.ie11above=a>10;c.ie11below=a<11}if(c.gecko){var e=d.match(/rv:([\d\.]+)/);if(e){e=e[1].split(".");a=e[0]*10000+(e[1]||0)*100+(e[2]||0)*1}}if(/chrome\/(\d+\.\d)/i.test(d)){c.chrome=+RegExp["\x241"]}if(/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(d)&&!/chrome/i.test(d)){c.safari=+(RegExp["\x241"]||RegExp["\x242"])}if(c.opera){a=parseFloat(b.version())}if(c.webkit){a=parseFloat(d.match(/ applewebkit\/(\d+)/)[1])}c.version=a;return c
}();$.extend(FR,{Browser:{r:browser,isIE6:function(){return browser.ie6Compat},isIE7:function(){return browser.ie7Compat},isIE8:function(){return this.getIEVersion()===8},isIE9:function(){return this.getIEVersion()===9},isIE10:function(){return this.getIEVersion()===10},isIE11:function(){return browser.ie&&browser.version===11},isIE11Before:function(){return browser.ie&&browser.version<11},isIE10Before:function(){return this.getIEVersion()<11},isIE8Before:function(){return this.getIEVersion()<9},isIE6Before:function(){return this.getIEVersion()<7
},isIE7Before:function(){return this.getIEVersion()<8},isIE9Later:function(){return browser.ie9above},getIEVersion:function(){return browser.ie?browser.version:undefined},isIE:function(){return browser.ie},isEdge:function(){return browser.edge},isSafari:function(){return browser.safari},isFirefox:function(){return $.browser.mozilla},isNotNormalBrowser:function(){return !$.browser},supportCSSAnimation:function(){var b=["animation","-webkit-animation","-moz-animation","-o-animation"];for(var a=0;a<b.length;
a++){if(b[a] in document.body.style){return true}}return false}}});(function(){$.extend(FR,{cjkEncodeDO:function(b){if($.isPlainObject(b)){var a={};$.each(b,function(d,c){if(!(typeof c=="string")){c=FR.jsonEncode(c)}d=FR.cjkEncode(d);a[d]=FR.cjkEncode(c)});return a}return b},cjkEncodeObjectForReq:function(b){var a=FR.cjkEncodeDO(b);return FR.encodePercentPlus(a)},cjkEncodeStrForReq:function(b){var a=FR.cjkEncode(b);return FR.encodePrecentPlus(a)},encodePercentPlus:function(b){if($.isPlainObject(b)){var a={};
$.each(b,function(d,c){if(!(typeof c=="string")){c=FR.jsonEncode(c)}d=FR.encodePrecentPlus(d);a[d]=FR.encodePrecentPlus(c)});return a}return b},ajax:function(b){if(FR.performance.mark){FR.performance.mark("ajaxStart")}if(b){b.data=FR.cjkEncodeObjectForReq(b.data);b.headers=b.headers||{};b.headers.Authorization="Bearer "+FR.CookieInfor.getCookieByName("fine_auth_token");FR.dealWithSessionIDParam(b);if(FR.performance.mark){var a=b.complete;var c=b.headers.sessionID;if(_g()!==undefined&&_g()!==null){c=c||_g().currentSessionID||_g().sessionID
}b.complete=function(){if(a){a.apply(this,arguments)}FR.performance.mark("ajaxEnd");FR.performance.measure("ajax","ajaxStart","ajaxEnd");var d=FR.performance.getEntriesByName("ajax");var e=d[d.length-1];if(e&&FR.socket){FR.socket.emit("ajax",{sessionID:c,startTime:FR.performance.timing.navigationStart+e.startTime,duration:e.duration})}}}}$.ajax(b)},get:function(a,c,d,b){if($.isFunction(c)){b=b||d;d=c;c=undefined}if(c){c=FR.cjkEncodeObjectForReq(c)}$.get(a,c,d,b)},post:function(a,c,d,b){if($.isFunction(c)){b=b||d;
d=c;c=undefined}if(c){c=FR.cjkEncodeObjectForReq(c)}$.post(a,c,d,b)},param:function(b){b=FR.cjkEncodeObjectForReq(b);return $.param(b)},url:function(a,b){if($.isPlainObject(b)){return a+"?"+FR.param(b)}return FR.cjkEncodeStrForReq(a)},buildServletUrl:function(b,a){if(a){b=$.extend({_:(""+new Date().getTime())},b)}return FR.url(FR.servletURL,b)},resource:function(a){return FR.buildServletUrl({op:"resource",resource:a})},tc:function(c,b,a){try{return c.apply(b,a)}catch(d){FR.Msg.toast(d.toString());
throw d}},pick:function(){var a,c=arguments.length;for(var b=0;b<c;b++){a=arguments[b];if(typeof a!=="undefined"&&a!==null){return a}}return null},dealWithSessionIDParam:function(c){if(c.data&&c.data.sessionID){if(c.headers){c.headers.sessionID=c.data.sessionID}else{c.headers={sessionID:c.data.sessionID}}delete c.data.sessionID}if(c.url&&c.url.indexOf("?")!==-1&&c.url.indexOf("sessionID=")!==-1&&(!c.type||c.type.toUpperCase()!=="GET")){var g=c.url.substr(c.url.indexOf("?")+1);var a=g.split("&");var f=null;
var b="";for(var d=0;d<a.length;d++){var e=a[d];if(e&&e.indexOf("sessionID=")===0){f=e.substr(10);continue}if(b){b+="&"+e}else{b=e}}c.url=c.url.substr(0,c.url.indexOf("?")+1)+b;if(f){if(c.headers){c.headers.sessionID=f}else{c.headers={sessionID:f}}}}},openUrlByForm:function(c){var e=$("<form>");$("body").append(e);if(c.indexOf("?")!==-1){var f=c.substr(c.indexOf("?")+1);var a=f.split("&");for(var d=0;d<a.length;d++){var g=a[d];var h=g.split("=");if(h.length===2){$("<input/>").attr("name",h[0]).val(h[1]).appendTo(e)
}}c=c.substring(0,c.indexOf("?"))}else{var b=$("<input>");e.append(b)}e.attr({"style":"display : none","target":"","method":"get","action":c});e.submit();e.remove()}})})();(function(){$.extend(FR,{formulaEvaluator:function(d,b,a){var c=b;return function(f){if(f||c==undefined||a){try{if(FR.SessionMgr.getSessionID()){c=FR.remoteEvaluate(d)}}catch(g){}}return c}},remoteEvaluateAsync:function(b,a){FR.ajax({url:FR.servletURL,type:"POST",async:true,data:{op:"fr_base",cmd:"evaluate_formula",sessionID:FR.SessionMgr.getSessionID(),expression:b},timeout:5000,complete:function(e,d){var f=FR.jsonDecode(e.responseText);
var c=f["result"];if($.isFunction(a)){a(c)}}})},remoteEvaluate:function(b){var a=null;FR.ajax({url:FR.servletURL,type:"POST",async:false,data:{op:"fr_base",cmd:"evaluate_formula",sessionID:FR.SessionMgr.getSessionID(),expression:b},timeout:5000,complete:function(d,c){a=FR.jsonDecode(d.responseText);if(a["error"]){FR.Msg.toast(FR.i18nText(a["error"]))}a=a["result"]}});return a}})})();(function(){var b=function(l,g){var d;var j=window.location.hostname;var f=g||"/consume";var h;try{h=window.top.Dec
}catch(k){}if(h===undefined||h===null){for(var e=0;e<l.length;e++){d=io.connect(j+":"+l[e]+f);if(d===undefined){continue}break}}else{d=h.socket}d.on("disconnect",function(){d=b()});return d};var a=function(){};var c=(window.performance||window.webkitPerformance)||{mark:function(){},measure:function(){},getEntriesByName:function(){return[]}};$.extend(FR,{ws:b,performance:c,loadConsume:a})})();(function($){var COL_IDS="ABCDEFGHIJKLMNOPQRSTUVWXYZ";$.extend(FR,{limitData:500,constant:{success:"success",failure:"failure"},emptyFn:function(){},parseINT:function(str){return parseInt(str,10)
},isWidthOrHeight:function(o){if(typeof o=="number"){return o>=0}else{if(typeof o=="string"){return/^\d{1,3}%$/.exec(o)||o=="auto"||/^\d+px$/.exec(o)}}},number2Percentage:function(number){return(~~(number*100))+"%"},isArray:function(a){return Object.prototype.toString.call(a)=="[object Array]"||a instanceof jQuery},applyStyles:function($el,styles){if($el instanceof jQuery&&styles){if(typeof styles=="string"){var re=/\s?([a-z\-]*)\:\s?([^;]*);?/gi;var matches;while((matches=re.exec(styles))!=null){$el.css(matches[1],matches[2])
}}else{if(typeof styles=="object"){$el.css(styles)}else{if(typeof styles=="function"){FR.applyStyles(dom,styles.call())}}}}},showMenuByEvent:function(o,evt,evtPosition){if(evtPosition===true){FR.showMenuByLocation(o,{left:evt.clientX,top:evt.clientY},{left:-5,top:-5})}else{if(evt.target){FR.showMenuByEl(o,$(evt.target))}else{FR.showMenuByLocation(o,{left:evt.clientX,top:evt.clientY+10})}}},isEmptyArray:function(array){if($.isArray(array)){if(array.length===0){return true}else{if(array.length===1){return array[0]===""
}}}return false},applyFunc:function(obj,func,param,defaultValue){if((typeof func)=="function"){return func.apply(obj,param?param:[])}return defaultValue},encodePrecentPlus:function(s){if(typeof(s)=="string"){s=s.replace(/%/gi,"%25");s=s.replace(/\+/gi,"%2B")}else{if(FR.isArray(s)){for(var i=0;i<s.length;i++){s[i]=FR.encodePrecentPlus(s[i])}}}return s},showMenuByEl:function(o,$el){var menu;if($el.fr_menu&&$el.fr_menu.menu&&(FR.equals($.extend({xxxMMenu:true},o),$el.fr_menu.opts)||$el.fr_menu.menu.close())){menu=$el.fr_menu.menu
}else{o.$el=$el;menu=FR.createShortMenu(o);delete o.$el}var modify=1;if($el.offset().top<menu.$menuRoot.height()+modify||$el.offset().top+$el.height()+modify+menu.$menuRoot.height()<document.body.clientHeight){var offsetTop=$el.offset().top+$el.height()+modify}else{var offsetTop=$el.offset().top-menu.$menuRoot.height()-modify}o.xxxMMenu=true;menu.show();menu.position($el.offset().left,offsetTop);$el.fr_menu={"menu":menu,"opts":o}},showMenuByLocation:function(o,location,modify){if(!modify){modify={left:0,top:0}
}var menu=FR.createShortMenu(o);FR.showWithMenu(menu,location,modify)},showWithMenu:function(menu,location,modify){if(location.left<menu.$menuRoot.width()+modify.left||location.left+modify.left+menu.$menuRoot.width()<document.body.clientWidth){var left=location.left+modify.left}else{var left=location.left-menu.$menuRoot.width()-modify.left}if(location.top<menu.$menuRoot.height()+modify.top||location.top+modify.top+menu.$menuRoot.height()<document.body.clientHeight){var top=location.top+modify.top
}else{var top=location.top-menu.$menuRoot.height()-modify.top}menu.show();left=FR.Browser.isIE()?left-5:left;top=FR.Browser.isIE()?top-5:top;menu.position(left,top)},versionRemind:function(o){var jo=FR.jsonDecode(o);if(jo.exception=="failpass"){var msg=FR.i18nText("Fine-Engine_FS_FailPass_Improve_Your_Version");if(jo.func){msg=jo.func+", "+msg}FR.Msg.toast(msg);return false}return true},createShortMenu:function(o){o=$.extend({minWidth:80,destroyOnClose:true},o);return new FR.frMenu(o)},doHyperlink:function(){function _doHyperlink(data){new Function(data)()
}return function(evt,obj,evtPosition){if($.isArray(obj)){switch(obj.length){case 0:return;case 1:FR.doHyperlink(evt,obj[0]);break;default:var _noMenuHyperlink=function(data){return data&&(data.indexOf("changeParameter")>=0||data.indexOf("_g().name_widgets[")>=0)};var noMenuHyperlink=[];var otherHyperlink=[];for(var i=0;i<obj.length;i++){var data=obj[i].data;if(_noMenuHyperlink(data)){noMenuHyperlink[noMenuHyperlink.length]=obj[i]}else{otherHyperlink[otherHyperlink.length]=obj[i]}}for(var i=0;i<noMenuHyperlink.length;
i++){try{_doHyperlink(noMenuHyperlink[i].data)}catch(e){FR.Msg.toast(e.message)}}switch(otherHyperlink.length){case 0:return;case 1:FR.doHyperlink(evt,otherHyperlink[0]);break;default:FR.showMenuByEvent({items:$.map(otherHyperlink,function(cfg){return{src:cfg.name,handler:_doHyperlink.createCallback(cfg.data)}})},evt,evtPosition||false)}}}else{_doHyperlink(obj.data)}}}(),doHyperlinkByGet:function(url,para,target,feature,title){if(arguments.length<1){return}var options=arguments[0];if(typeof options==="object"){url=options.url||"";
para=options.para||{};target=options.target;feature=options.feature;title=options.title}para=$.extend({_:new Date().getTime()},para);var paraURIComponent=this.encodeGetURIPara2Str(para);var para4Post=this.encodePostURIPara(para);if(url.indexOf("?")==-1){url+="?"}this._doHyperlinkByGet(url,paraURIComponent,para4Post,target,feature,title)},_doHyperlinkByGet:function(url,paraURIComponent,para4Post,target,feature,title){var targetUrl=url+paraURIComponent;if(this.shouldGet(target)){this.doHyperlinkActionByGet(targetUrl,target,feature,title)
}else{if(this.shouldPost(targetUrl,target)){if(target==="_dialog"){var t=new Date().getTime();target=target+t;this.showHyperlinkDialog("",feature,target)}var submitForm=$("<form method='post' target='"+target+"' action='"+url+"'></form>").hide().appendTo($("body"));for(var i in para4Post){$('<input type="hidden" name="'+i+'" value=""/>').attr("value",para4Post[i]).appendTo(submitForm)}submitForm.submit()}else{this.doHyperlinkActionByGet(targetUrl,target,feature,title)}}},showHyperlinkDialog:function(url,feature,target){var isIEUnder8=FR.Browser.isIE8Before();
var iframeWidth=isIEUnder8?"99%":"100%";var iframeHeight=isIEUnder8?"99%":"100%";var iframeDialog="<iframe src='' id ="+target+" name = "+target+" width="+iframeWidth+" height= "+iframeHeight+" scrolling='no' frameborder='0'></iframe>";var options={};iframeDialog=$(iframeDialog).attr("src",url)[0];var width,height;if(_.isString(feature)){if(feature.split(",").length>2){width=feature.split(",")[0];if(width.indexOf("=")!==-1){width=width.substring(width.indexOf("=")+1,width.length);options.width=parseInt(width)||600
}height=feature.split(",")[1];if(height.indexOf("=")!==-1){height=height.substring(height.indexOf("=")+1,height.length);options.height=parseInt(height)||400}}options.title=" "}else{$.extend(true,options,feature)}options.contentHtml=iframeDialog;FR.showCustomDialog(options)},doHyperlinkByGet4Reportlet:function(url,para,target,feature,title){if(arguments.length<1){return}var options=arguments[0];if(typeof options==="object"){url=options.url||"";para=options.para||{};target=options.target;feature=options.feature;
title=options.title}para=this._filterHyperLinkPara(para);para={__parameters__:FR.jsonEncode(para),_:new Date().getTime()};var paraURIComponent=this.encodeGetURIPara2Str(para);var para4Post=this.encodePostURIPara(para);if(url.indexOf("?")==-1){url+="?"}this._doHyperlinkByGet(url,paraURIComponent,para4Post,target,feature,title)},doHyperlinkByPost:function(url,para,target,feature,title){if(arguments.length<1){return}var options=arguments[0];if(typeof options==="object"){url=options.url||"";para=options.para||{};
target=options.target;feature=options.feature;title=options.title}para=this._filterHyperLinkPara(para);if(this.$hyperlinkForm){this.$hyperlinkForm.html("")}else{this.$hyperlinkForm=($("<div>").appendTo($(document.body))).css({"display":"none","position":"absolute"})}if(target==null){target="formresult"}para=encodeURIComponent(FR.jsonEncode(para));if(target==="_dialog"){var t=new Date().getTime();target=target+t;this.showHyperlinkDialog("",feature,target)}var submitForm=$("<form method='post' target='"+target+"' action='"+url+"'></form>").appendTo(this.$hyperlinkForm);
var input=$('<input type="hidden" name="__parameters__" value=""/>');input.attr("value",para);submitForm.append(input);if(this.shouldGet(target)){this.doHyperlinkActionByGet(this.getTargetUrlByPost(url,para),target,feature,title);return}submitForm.submit()},doHyperlinkActionByGet:function(targetUrl,target,feature,title){if(target&&target==="_dialog"){this.showHyperlinkDialog(targetUrl,feature,target)}else{window.open(targetUrl,target)}},getTargetUrlByPost:function(url,para){var pString="__parameters__="+encodeURIComponent(para);
url+=url.indexOf("?")==-1?"?":"&";return url+pString},shouldPost:function(targetUrl,target){if(target===undefined){return false}return !this.shouldGet()&&targetUrl.length>=2048&&FR.Browser.isIE()},shouldGet:function(target){return false},_filterHyperLinkPara:function(nativePara){var filteredNativePara={};$.each(nativePara,function(pName,pValue){if(!$.isPlainObject(pValue)){filteredNativePara[pName]=pValue}});return filteredNativePara},_processArrayValue:function(value){if(_.isArray(value)&&!FR.isEmptyArray(value)){if(_.isArray(value[0])){value=value.join(";")
}else{value=value.toString()}}return value},encodePostURIPara:function(nativePara){var encodedPara={};$.each(nativePara,function(pName,pValue){pValue=FR._processArrayValue(pValue);encodedPara[encodeURIComponent(pName)]=encodeURIComponent(pValue)});return encodedPara},encodeGetURIPara:function(nativePara){var encodedPara={};$.each(nativePara,function(pName,pValue){pValue=FR._processArrayValue(pValue);encodedPara[encodeURIComponent(encodeURIComponent(pName))]=encodeURIComponent(encodeURIComponent(pValue))
});return encodedPara},encodeGetURIPara2Str:function(nativePara){var uriComponent="";$.each(nativePara,function(pName,pValue){pValue=FR._processArrayValue(pValue);uriComponent+="&"+encodeURIComponent(encodeURIComponent(pName))+"="+encodeURIComponent(encodeURIComponent(pValue))});return uriComponent},isEmpty:function(value){var result=value===""||value===null||value===undefined;return result},isEmptyObj:function(obj){return _.isEmpty(obj)},toRE:function(str){return str.replace(/\\/g,"\\\\").replace(/\[/g,"\\[").replace(/\]/g,"\\]").replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/\{/g,"\\{").replace(/\}/g,"\\}").replace(/\*/g,"\\*").replace(/\|/g,"\\|").replace(/\?/g,"\\?").replace(/\$/g,"\\$").replace(/\^/g,"\\^")
},_executeScriptFromHtml:function(html){var html_script=html.substring(0,500);var html_script_low=html_script.toLowerCase();var begin=html_script_low.indexOf("<"+"script>");if(begin<0){return}var end=html_script_low.indexOf("</"+"script>");html_script=html_script.substring(begin+8,end);try{eval(html_script)}catch(e){}},extend:function(){return function(sb,sp,overrides){if(typeof sp=="object"){overrides=sp;sp=sb;sb=function(){sp.apply(this,arguments)}}if(sp==null){console&&console.log("empty")}var F=function(){},spp=sp.prototype;
F.prototype=spp;sb.prototype=new F();sb.superclass=spp;$.extend(sb.prototype,overrides);return sb}}(),SessionMgr:function(){var sid,cp;$(window).unload(function(){$(window).unbind("unload",arguments.callee);$.ajaxSetup({cache:false});if(sid&&cp&&FR.servletURL&&cp.rtype!="preview"&&cp.rtype!="bi"&&!cp.noClossSession){var closeSession=function(sid){FR.ajax({async:false,url:FR.servletURL,data:{op:"closesessionid",sessionID:sid}})};closeSession(sid)}});return{getSessionID:function(){return sid},getContentPane:function(){return cp
},get:function(){return cp},register:function(id,s){sid=id;cp=s}}}(),CookieInfor:{getCookies:function(){var cookieString=document.cookie;return unescape(cookieString).split(";")},addCookie:function(name,value,temp){var newCookie=name+"="+escape(value);var liveDays=temp?temp:30;var expires=new Date();expires.setDate(expires.getDate()+liveDays);newCookie+=";expires="+expires.toGMTString();document.cookie=newCookie},removeCookie:function(name){var expires=new Date();expires.setTime(expires.getTime()-1);
document.cookie=name+"="+";expires="+expires.toGMTString()},clearCookie:function(){var self=this;var $cookies=this.getCookies();$.each($cookies,function(i){var cookieName=$cookies[i].split("=")[0];self.removeCookie(cookieName)})},getCookieByName:function(name){var $cookies=this.getCookies();var re=new RegExp(name);var value=null;$.each($cookies,function(i){if($cookies[i].match(re)){value=$cookies[i].split(name+"=")[1];return false}});return value}},isCJKEncoded:function(text){var isCJKEncoded=false;
if(FR.isEmpty(text)||typeof text!=="string"){return false}else{var bracketPattern=/\[[^\]]*]/ig;var contentPattern=/^\[[0-9a-f]{2,4}]$/ig;var f=text.match(bracketPattern);if(f===null||FR.isEmpty(f.length)||f.length===0){return false}else{var content="";var index=0;var count=f.length;do{if(index>0&&count>=index){return isCJKEncoded}if(count<index){break}content=f[index];isCJKEncoded=true;index++}while(content.match(contentPattern))}}return false},cjkEncode:function(text){if(typeof text!=="string"){return text
}var newText="";for(var i=0;i<text.length;i++){var code=text.charCodeAt(i);if(code>=128||code===91||code===93){newText+="["+code.toString(16)+"]"}else{newText+=text.charAt(i)}}return newText},cjkDecode:function(text){if(text==null){return""}if(!FR.isCJKEncoded(text)){return text}if(!isNaN(text)||text.indexOf("[")==-1){return text}var newText="";for(var i=0;i<text.length;i++){var ch=text.charAt(i);if(ch=="["){var rightIdx=text.indexOf("]",i+1);if(rightIdx>i+1){var subText=text.substring(i+1,rightIdx);
if(subText.length>0){ch=String.fromCharCode(eval("0x"+subText))}i=rightIdx}}newText+=ch}return newText},htmlSpaceDecode:function(text){return(text==null)?"":String(text).replace(/&nbsp;/," ")},htmlEncode:function(text){return(text==null)?"":String(text).replace(/&/g,"&amp;").replace(/\"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},htmlDecode:function(text){return(text==null)?"":String(text).replace(/&amp;/g,"&").replace(/&quot;/g,'"').replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&nbsp;/g," ")
},jsonEncode:function(o){var useHasOwn={}.hasOwnProperty?true:false;var m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};var encodeString=function(s){if(/["\\\x00-\x1f]/.test(s)){return'"'+s.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=m[b];if(c){return c}c=b.charCodeAt();return"\\u00"+Math.floor(c/16).toString(16)+(c%16).toString(16)})+'"'}return'"'+s+'"'};var encodeArray=function(o){var a=["["],b,i,l=o.length,v;for(i=0;i<l;i+=1){v=o[i];switch(typeof v){case"undefined":case"function":case"unknown":break;
default:if(b){a.push(",")}a.push(v===null?"null":FR.jsonEncode(v));b=true}}a.push("]");return a.join("")};if(typeof o=="undefined"||o===null){return"null"}else{if($.isArray(o)){return encodeArray(o)}else{if(o instanceof Date){return FR.jsonEncode({__time__:o.getTime()})}else{if(typeof o=="string"){return encodeString(o)}else{if(typeof o=="number"){return isFinite(o)?String(o):"null"}else{if(typeof o=="boolean"){return String(o)}else{if($.isFunction(o)){return String(o)}else{var a=["{"],b,i,v;for(i in o){if(!useHasOwn||o.hasOwnProperty(i)){v=o[i];
switch(typeof v){case"undefined":case"unknown":break;default:if(b){a.push(",")}a.push(FR.jsonEncode(i),":",v===null?"null":FR.jsonEncode(v));b=true}}}a.push("}");return a.join("")}}}}}}}},jsonDecode:function(text,eCallback){try{var jo=$.parseJSON(text);if(jo==null){jo={}}}catch(e){try{jo=new Function("return "+text)()||{}}catch(e){if($.isFunction(eCallback)){try{eCallback.call(this,text)}catch(e){}}}if(jo==null){jo=[]}}if(!FR._hasDateInJson(text)){return jo}return(function(o){if(typeof o==="string"){return o
}if(o&&o.__time__!=null){return new Date(o.__time__)}for(var a in o){if(o[a]==o||typeof o[a]=="object"||$.isFunction(o[a])){break}o[a]=arguments.callee(o[a])}return o})(jo)},_hasDateInJson:function(json){if(!json||typeof json!=="string"){return false}return json.indexOf("__time__")!=-1},setBackground:function($dom,bg,height){var type=bg["type"];if((type===4||type===2)&&FR.Browser.isIE()){if(FR.ieForFixBackground()){var url=bg["url"];var bgImage=$("<img src='"+url+"' id='para-bg'>");bgImage.css({width:"100%",height:"100%"});
bgImage.appendTo($dom)}else{$.each(["background-image","background-repeat","filter","background","background-position"],function(idx,item){if(bg[item]!=null){$dom.css(item,bg[item])}})}}else{$.each(["background","background-size","background-image","background-position","background-repeat"],function(idx,item){if(bg[item]!=null){$dom.css(item,bg[item])}})}},ieForFixBackground:function(){return FR.Browser.isIE8Before()},contains:function(p,c){return FR.isAncestor(p,c)?true:((!p||!c)?false:p==c)},isAncestor:function(p,c){if(!p||!c){return false
}if(p.contains&&!(FR.Browser.r.safari||FR.Browser.r.chrome)){try{return p.contains(c)}catch(e){}}if(p.compareDocumentPosition){return !!(p.compareDocumentPosition(c)&16)}else{var parent=c.parentNode;while(parent){if(parent==p){return true}else{if(!parent.tagName||parent.tagName.toUpperCase()=="HTML"){return false}}parent=parent.parentNode}return false}},isNavKeyPress:function(event){if(!event){return false}var safariKeys={63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35};
var k=event.keyCode;k=(FR.Browser.r.safari||FR.Browser.r.chrome)?(safariKeys[k]||k):k;return(k>=33&&k<=40)||k===13||k==FR.keyCode.TAB||k==FR.keyCode.ESCAPE},isSpecialKey:function(e){if(!e){return false}var k=e.keyCode;return(e.type=="keypress"&&e.ctrlKey)||k===9||k===13||k===40||k===27||(k===16)||(k===17)||(k>=18&&k<=20)||(k>=33&&k<=35)||(k>=36&&k<=39)||k===44||(k===13||k===229)},equals:function(v1,v2){if(FR.isNull(v1)||FR.isNull(v2)){return v1==undefined&&v2==undefined||v1==null&&v2==null}if(v1===v2){return true
}else{if(v1 instanceof Date&&v2 instanceof Date){return v1.getTime()===v2.getTime()}else{if($.isArray(v1)){if(v1.length==v2.length){for(var i=0;i<v1.length;i++){if(!FR.equals(v1[i],v2[i])){return false}}}else{return false}}else{if(typeof v1=="object"){var lv1=0,lv2=0;for(var i in v1){lv1++}for(var i in v2){lv2++}if(lv1!=lv2){return false}for(var a in v1){if(!FR.equals(v1[a],v2[a])){return false}}}else{return v1===v2}}}}return true},isNull:function(v){return v==undefined||v==null},lengthenFileName:function(name,s){if(!name){return
}if(name.lastIndexOf(".")==-1){return name+s}var leftName=name.substring(0,name.lastIndexOf("."));var rightName=name.substring(name.lastIndexOf("."),name.length);return leftName+s+rightName},getCursorPosition:function(input){try{if(input.value==""){return 0}var cursurPosition=-1;if(input.selectionStart){cursurPosition=input.selectionStart}else{var rngSel=document.selection.createRange();var rngTxt=input.createTextRange();var flag=rngSel.getBookmark();rngTxt.collapse();rngTxt.moveToBookmark(flag);
rngTxt.moveStart("character",-input.value.length);cursurPosition=rngTxt.text.length}return cursurPosition}catch(e){return input.value.length}},setCursorPosition:function(input,pos){if(input.setSelectionRange){input.focus();input.setSelectionRange(pos,pos)}else{if(input.createTextRange){var lineChangeNum=input.value.length-input.value.replace(/\n/g,"").length;pos=pos-lineChangeNum+1;var range=input.createTextRange();range.collapse(true);range.moveEnd("character",pos);range.moveStart("character",pos);
range.select()}}},id2ColumnRowStr:function(id){return id.replace(/([A-Z]+\d+)-\d+-\d+/,"$1")},id2ColumnRow:function(id){return FR.cellStr2ColumnRow(FR.id2ColumnRowStr(id))},id2Location:function(id){var rt=FR.id2ColumnRow(id);var arr=id.split("-");rt.rptIdx=arr[1];return rt},cellStr2ColumnRow:function(name){name=$.trim(name.toUpperCase());if(!FR.isValidCellStr(name)){return null}var colStr=name.replace(/([A-Z]+)\d+/,"$1");var rowStr=name.replace(/[A-Z]+(\d+)/,"$1");var col=FR.letter2Digit(colStr)-1;
var row=parseInt(rowStr)-1;return{col:col,row:row}},columnRow2CellStr:function(cr){var col=parseInt(cr.col);var row=parseInt(cr.row);if(typeof col!="number"||typeof row!="number"){return""}return FR.digit2Letter(col+1)+(row+1)},isValidCellStr:function(str){if(str.match(/^[A-Z]+\d+$/)==null){return false}else{return true}},letter2Digit:function(abc){var len=abc.length;var col=0;for(var i=len-1;i>=0;i--){var c=abc.charAt(i);col+=(COL_IDS.indexOf(c)+1)*Math.pow(26,len-1-i)}return col},digit2Letter:function(k){var c,abcBuf="";
if(typeof k!="number"||k===0||isNaN(k)||!isFinite(k)){return abcBuf}for(;k!==0;){c=k%26;if(c===0){c=26}abcBuf=COL_IDS.charAt(c-1)+abcBuf;k=(k-c)/26}return abcBuf},byteLength:function(str){if(FR.isEmpty(str)){return 0}var byteLen=0,len=str.length;for(var i=0;i<len;i++){byteLen+=str.charCodeAt(i)>255?2:1}return byteLen},keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},location:function(callback){callback.call(this,"fail",FR.i18nText("Fine-Engine_Basic_Fail_Location"))
},html:function(ob,content){function transferStr(str){if(FR.isEmpty(str)){return str}return String(str).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/ /g,"&nbsp;").replace(/\'/g,"&#39;").replace(/\"/g,"&quot;").replace(/\(/g,"&#40;").replace(/\)/g,"&#41;").replace(/&lt;br&gt;/g,"<br>")}ob.html(transferStr(content));return ob}})})(jQuery);(function(b){var a={};b.shortcut=function(d,c){if(a[d]!=null){throw ("shortcut:["+d+"] has been registed")}a[d]=c;b.extend(c.prototype,{xtype:d})
};FR.Logger={error:function(f){var g,c;if(f instanceof Error){c=f.stack;g=f.message}else{c="";g=f.toString()}var d={trace:c,message:g};FR.ajax({url:FR.servletURL+"?op=js_log&cmd=log_js_error",type:"POST",data:d})}};FR.createWidget=function(d,j){if(d instanceof b){return new FR.Widget({renderEl:d})}if(d["classType"]){return new (new Function("return "+d["classType"]+";")())(d)}if(!d.type){if(j!==true){var h="config type cannot be null.";FR.Logger.error(new Error(h));return new FR.ErrorMarkWidget({renderEl:d.renderEl,message:h,width:d.width,height:d.height})
}}var i=d.type.toLowerCase();var c=a[i];try{return new c(d)}catch(g){FR.Logger.error(g);if(j===true){throw g}else{var f=d.widgetName?d.widgetName:d.type;return new FR.ErrorMarkWidget({renderEl:d.renderEl,message:f+FR.i18nText("Fine-Engine_Base_Widget_Error_Mark_Text"),detail:FR.i18nText("Fine-Engine_Detail_Message")+":"+g,width:d.width,height:d.height})}}};b.fn.extend({asComponent:function(c){c=c||{};c.renderEl=b(this);return FR.createWidget(c)}})})(jQuery);if(window._g==null){window._g=FR.SessionMgr.getContentPane
}$.extend(FR,{string2ints:function(h){var b=[];var g=h.split(",");for(var e=0;e<g.length;e++){var d=g[e];var f=d.split("-");var a=parseInt(f[0]),c=a;if(f.length>1){c=parseInt(f[1])}for(var j=a;j<=c;j++){b.push(j)}}return b}});$.extend(FR,{activeBranches:function(branches,parameters,processid,taskName,serverURL,needClose){if(processid&&taskName){var it={"id":processid,"taskname":taskName}}else{var it=this.getProcessIDAndTaskName();if(!it.processid){FR.Msg.toast(FR.i18nText("Fine-Engine_FS_Task_Has_Been_Closed"));
return}}if(!it){return}if(!$.isArray(branches)){branches=[branches]}if(parameters!=null&&!$.isArray(parameters)){parameters=[parameters]}var data=$.extend(it,{branches:branches});if(parameters){$.each(parameters,function(idx,item){if(item.value.toString().startWith("eval")){var evalValue=item.value.toString().substring(5,item.value.toString().length-1);item.value=eval(evalValue)}});data.parameters=parameters}this.ajax({url:(serverURL?serverURL:FR.servletURL)+"?op=process_exe&cmd=continue",data:data,type:"post",complete:function(res,status){if(res.responseText=="close"){FR.Msg.toast(FR.i18nText("Fine-Engine_FS_Task_Has_Been_Closed"));
return}this.refreshUserTask(it)}.createDelegate(this)})},getProcessIDAndTaskName:function(){var a={};this.ajax({url:FR.servletURL+"?op=process_exe",async:false,data:{sessionID:FR.SessionMgr.getSessionID(),cmd:"values"},complete:function(c,b){a=FR.jsonDecode(c.responseText)}});return a},refreshUserTask:function(b){var a=window.parent;if(!a||!a.FS||!a.FS.Process){location.reload(true);return}a.FS.Process.refreshTask();var c="?op=process_exe&cmd=seejob&taskname="+b.taskname+"&processexecutorid="+b.id+"&processid="+b.processid;
a.FS.tabPane.addItem({"title":FR.i18nText("Fine-Engine_FS_Handle_Affairs")+b.id,src:c})}});$.extend(FR,{logoutApp:function(){}});(function(a){a(document).ready(function(){FR.windowHeight=a(window).height();FR.windowWidth=a(window).width();if(FR.windowHeight===0||FR.windowWidth===0){FR.windowHeight=document.body.clientHeight;FR.windowWidth=document.body.clientWidth}a(window).resize(function(){if(FR.Browser.isIE()){setTimeout(function(){FR.windowHeight=a(window).height();FR.windowWidth=a(window).width();
if(FR.windowHeight===0||FR.windowWidth===0){FR.windowHeight=document.body.clientHeight;FR.windowWidth=document.body.clientWidth}},0)}else{FR.windowHeight=a(window).height();FR.windowWidth=a(window).width()}});FR.parameterContainerHeight=0;FR.toolbarHeight=0})})($);
if (window.FR == null) {
window.FR = {};
}
$.extend(FR, {
/**
* 这里添加一些必须要使用中文的键值对然后通过FR.plainText(key)进行调用
*/
chinese : {
},
i18n: {},
/**
* 根据键获取国际化后的值
* @param key
* @returns {String} 国际化后的文本
* @example
* FR.i18nText("Click");//输出结果为"点击"
* FR.i18nText("Sum({}, {}) = 3", 1,2);//输出结果为"Sum(1, 2) = 3"
*/
i18nText: function (key) {
var localeText = FR.i18n[key];
if (!localeText) {
localeText = key;
}
var len = arguments.length;
if(len > 1){
for(var i = 1;i<len;i++){
var key = len === 2 ? "{}" : "{R"+i+"}";
localeText = localeText.replaceAll(key, arguments[i]+"");
}
}
return localeText;
},
/**
* 获取不需要国际化的中文字符串
* @param key 中文字符串对应的键
* @returns {String} 中文字符串
*/
plainText : function(key) {
return this.chinese[key] || key;
},
/**
* 获取国际化字符串的字符串宽度根据当前语言环境动态变化
* @param key 国际化字符串对应的键
* @param fontWidth 字体宽度
* @returns {number} 字符串宽度
*/
i18nTextWidth: function (key, fontWidth) {
return FR.byteLength(this.i18nText(key)) * (fontWidth ? fontWidth : 6);
}
});$.extend(Date.prototype,{getTimezone:function(){var b={"-12":"IDL","-11":"MIT","-10":"HST","-9:30":"MSIT","-9":"AKST","-8":"PST","-7":"MST","-6":"CST","-5":"EST","-4":"AST","-3:30":"NST","-3":"SAT","-2":"BRT","-1":"CVT","0":"WET","1":"CET","2":"EET","3":"MSK","3:30":"IRT","4":"META","4:30":"AFT","5":"METB","5:30":"IDT","5:45":"NPT","6":"BHT","6:30":"MRT","7":"IST","8":"CST","8:30":"KRT","9":"FET","9:30":"ACST","10":"AEST","10:30":"FAST","11":"VIT","11:30":"NFT","12":"PSTC"};var c=this.getTimezoneOffset()*-1;
var a="";a=this.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/,"$1$2").replace(/[^A-Z]/g,"");if(a){return a}Object.keys(b).some(function(f){var d=f.split(":"),e=d.length>1?window.parseInt(d[1]):0;d=window.parseInt(d[0]);if(Math.abs(c-d*60-e)<0.000001){a=b[f];return true}});return a},getLastDateOfMonth:function(){return new Date(this.getFullYear(),this.getMonth(),this.getMonthDays())},getMonthDays:function(c){var b=[31,28,31,30,31,30,31,31,30,31,30,31];var a=this.getFullYear();
if(typeof c=="undefined"){c=this.getMonth()}if(((0===(a%4))&&((0!==(a%100))||(0===(a%400))))&&c===1){return 29}else{return b[c]}},getWeekNumber:function(){var c=new Date(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0);var b=c.getDay();c.setDate(c.getDate()-(b+6)%7+3);var a=c.valueOf();c.setMonth(0);c.setDate(4);return Math.round((a-c.valueOf())/(7*86400000))+1}});(function(){var compileJFmt=function(jfmt,date){var str=jfmt.str,len=jfmt.len,ch=jfmt["char"];switch(ch){case"E":str=len<4?Date._SDN[date.getDay()]:Date._DN[date.getDay()];
break;case"y":if(len<=3){str=(date.getFullYear()+"").slice(2,4)}else{str=date.getFullYear()}break;case"M":if(len>2){str=len>3?Date._MN[date.getMonth()]:Date._SMN[date.getMonth()]}else{if(len<2){str=date.getMonth()+1}else{str=String.leftPad(date.getMonth()+1+"",2,"0")}}break;case"d":if(len>1){str=String.leftPad(date.getDate()+"",2,"0")}else{str=date.getDate()}break;case"h":var hour=date.getHours()%12;if(hour===0){hour=12}if(len>1){str=String.leftPad(hour+"",2,"0")}else{str=hour}break;case"H":if(len>1){str=String.leftPad(date.getHours()+"",2,"0")
}else{str=date.getHours()}break;case"m":if(len>1){str=String.leftPad(date.getMinutes()+"",2,"0")}else{str=date.getMinutes()}break;case"s":if(len>1){str=String.leftPad(date.getSeconds()+"",2,"0")}else{str=date.getSeconds()}break;case"a":str=date.getHours()<12?Date._NN[0]:Date._NN[1];break;case"z":str=date.getTimezone();break;default:str=jfmt.str;break}return str};FR.parseFmt=function(fmt){if(!fmt){return""}fmt=String(fmt).replace(/y{4,}/g,"%Y").replace(/y{2}/g,"%y").replace(/M{4,}/g,"%b").replace(/M{3}/g,"%B").replace(/M{2}/g,"%X").replace(/M{1}/g,"%x").replace(/a{1}/g,"%p");
if(new RegExp("d{2,}","g").test(fmt)){fmt=fmt.replace(/d{2,}/g,"%d")}else{fmt=fmt.replace(/d{1}/g,"%e")}if(new RegExp("h{2,}","g").test(fmt)){fmt=fmt.replace(/h{2,}/g,"%I")}else{fmt=fmt.replace(/h{1}/g,"%I")}if(new RegExp("H{2,}","g").test(fmt)){fmt=fmt.replace(/H{2,}/g,"%H")}else{fmt=fmt.replace(/H{1}/g,"%H")}fmt=fmt.replace(/m{2,}/g,"%M").replace(/s{2,}/g,"%S");return fmt};FR.matchDateFormat=function(date,format){if(typeof date!="string"||typeof format!="string"||!date||!format){return false}var zh_yMd="["+String.fromCharCode(24180)+String.fromCharCode(26376)+String.fromCharCode(26085)+"]";
if(date.match(zh_yMd)){if(format.match(zh_yMd)){date=date.replaceAll(zh_yMd,"-");format=format.replaceAll(zh_yMd,"-");if(date.endWith("-")&&format.endWith("-")){date=date.substring(0,date.length-1);format=format.substring(0,format.length-1)}}else{return false}}else{if(format.match(zh_yMd)){return false}}var isAM=null;if(format.endWith(" a")){format=format.substring(0,format.length-2);if(date.endWith(" am")||date.endWith(" pm")){isAM=date.endWith(" am");date=date.substring(0,date.length-3)}else{return false
}}if(date.replace(/[0-9]/g,"")!=format.replace(/[YyMmDdHhSsa]/g,"")){return false}var formatStr=format;var dateStr=date;var formatArr=[];var dateArr=[];if(format.indexOf(" ")==-1){dateArr=shortMatch(dateStr,formatStr);if(!dateArr){return false}}else{var ff=format.split(" ");var dd=date.split(" ");for(var i=0;i<ff.length;i++){var temp=shortMatch(dd[i],ff[i]);if(!temp){return false}else{dateArr=dateArr.concat(temp)}}}function shortMatch(str,fmt){var da=[];var fa=[];if(fmt.match(/[-/:.]/)){fa=fmt.split(/[-/:.]/);
formatArr=formatArr.concat(fa);var da=str.split(/[-/:.]/);return da}while(fmt.length>0){var reg=new RegExp(fmt.substring(0,1)+"+");var f=fmt.match(reg).toString();fa.push(f);formatArr.push(f);fmt=fmt.substring(f.length)}var len=0;for(var i=0;i<fa.length;i++){var tmpLen=0;if(fa[i].length===1){if(i==fa.length-1){tmpLen=str.length-len}else{if(i==fa.length-2){switch(str.length-len){case 2:tmpLen=1;break;case 3:if(invalidStr(str.substring(len,len+2),fa[i])||fa[i+1].length===2){tmpLen=1}else{if(fa[i+1].length===1&&invalidStr(str.substring(len+1,len+3),fa[i+1])){tmpLen=2
}else{tmpLen=1}}break;case 4:tmpLen=2;break;default:return false}}}}else{tmpLen=fa[i].length}da[i]=str.substring(len,len+tmpLen);len+=tmpLen}return da}function invalidStr(str,fm){return str.match(/[Mh]/)&&parseInt(fm,10)>12||str.match(/[d]/)&&parseInt(fm,10)>31||str.match(/[H]/)&&parseInt(fm,10)>23||str.match(/[ms]/)&&parseInt(fm,10)>59}if(formatArr.length!=dateArr.length||dateArr[dateArr.length-1]===""){return false}else{for(var i=0;i<formatArr.length;i++){var ff=formatArr[i].replace(/ /g,"");var vv=dateArr[i].replace(/ /g,"");
if(ff.length===1&&((vv.length===2&&vv.startWith("0"))||vv.length>2)||ff.length===2&&vv.length!==2||ff.length===4&&vv.length!==4){return false}}var que=["y","M","d","h","H","m","s"];for(var i=0;i<formatArr.length;i++){if(formatArr[i].match(/[yMd]/)){for(var j=i+1;j<formatArr.length;j++){if(formatArr[j].match(/[yMd]/)&&que.indexOf(formatArr[i].substring(0,1))>que.indexOf(formatArr[j].substring(0,1))){var tmp=formatArr[i];formatArr[i]=formatArr[j];formatArr[j]=tmp;tmp=dateArr[i];dateArr[i]=dateArr[j];
dateArr[j]=tmp}}}}if(!format.match(/[hHms]/)){var dt="";for(var i=0;i<dateArr.length;i++){var yMd=formatArr[i]=="yy"?"20"+dateArr[i]:dateArr[i];dt=dt.length===0?yMd:dt+"/"+yMd}var res=new Date(dt);if(!FR.isInvalidDate(res)){if(!inMonthRange(res)){return false}return res}else{if(!FR.isInvalidDate(new Date(dt+"/01"))){return new Date(dt+"/01")}else{if(!FR.isInvalidDate(new Date(dt+"/01"+"/01"))){return new Date(dt+"/01"+"/01")}}}}else{if(checkHms(date)){return date}var dt="";var spt=false;for(var i=0;
i<formatArr.length;i++){if(formatArr[i].match(/[yMd]/)){var yMd=formatArr[i]=="yy"?"20"+dateArr[i]:dateArr[i];dt=dt.length===0?yMd:dt+"/"+yMd}else{var hms=dateArr[i];if(formatArr[i].indexOf("h")!=-1&&isAM===false&&parseInt(hms)<12){hms=parseInt(hms)+12}if(!spt){dt=dt+" "+hms;spt=true}else{dt=dt+":"+hms}}}var res=new Date(dt);if(!inMonthRange(res)){return false}return res}}function checkHms(timeStr){var parts;if(FR.isEmpty(timeStr)){return false}parts=timeStr.split(":");if(FR.isEmpty(parts)){return false
}for(i=0;i<parts.length;i++){if(isNaN(parts[i])){return false}}if(parts.length===2){h=parts[0];m=parts[1];if(format.match(/[s]/)){if(h<0||h>59){return false}if(m<0||m>59){return false}}else{if(h<0||h>23){return false}if(m<0||m>59){return false}}return true}else{if(parts.length===3){h=parts[0];m=parts[1];s=parts[3];if(h<0||h>23){return false}if(m<0||m>59){return false}if(s<0||s>59){return false}}}return true}function inMonthRange(res){var d,m;for(var i=0;i<formatArr.length;i++){if(formatArr[i].indexOf("d")!=-1){d=dateArr[i].replace(/^[0]/,"")
}else{if(formatArr[i].indexOf("M")!=-1){m=dateArr[i].replace(/^[0]/,"")}}}if(d==null||m==null){return true}return parseInt(d)==res.getDate()&&parseInt(m)==res.getMonth()+1}};FR.str2Date=function(str,format){if(typeof str!="string"||typeof format!="string"){return null}var fmt=FR.parseFmt(format);return Date.parseDateTime(str,fmt)};FR.date2Str=function(date,format){if(!date){return""}var len=format.length,result="";if(len>0){var flagch=format.charAt(0),start=0,str=flagch;for(var i=1;i<len;i++){var ch=format.charAt(i);
if(flagch!==ch){result+=compileJFmt({"char":flagch,"str":str,"len":i-start},date);flagch=ch;start=i;str=flagch}else{str+=ch}}result+=compileJFmt({"char":flagch,"str":str,"len":len-start},date)}return result};Date.patterns={ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"};Date.parseFunctions={count:0};
Date.parseRegexes=[];Date.formatFunctions={count:0};Date._MN=[FR.i18nText("Fine-Engine_Base_January"),FR.i18nText("Fine-Engine_Base_February"),FR.i18nText("Fine-Engine_Base_March"),FR.i18nText("Fine-Engine_Base_April"),FR.i18nText("Fine-Engine_Base_May"),FR.i18nText("Fine-Engine_Base_June"),FR.i18nText("Fine-Engine_Base_July"),FR.i18nText("Fine-Engine_Base_August"),FR.i18nText("Fine-Engine_Base_September"),FR.i18nText("Fine-Engine_Base_October"),FR.i18nText("Fine-Engine_Base_November"),FR.i18nText("Fine-Engine_Base_December")];
Date._SMN=[FR.i18nText("Fine-Engine_Base_Short_Jan"),FR.i18nText("Fine-Engine_Base_Short_Feb"),FR.i18nText("Fine-Engine_Base_Short_Mar"),FR.i18nText("Fine-Engine_Base_Short_Apr"),FR.i18nText("Fine-Engine_Base_Short_May"),FR.i18nText("Fine-Engine_Base_Short_Jun"),FR.i18nText("Fine-Engine_Base_Short_Jul"),FR.i18nText("Fine-Engine_Base_Short_Aug"),FR.i18nText("Fine-Engine_Base_Short_Sep"),FR.i18nText("Fine-Engine_Base_Short_Oct"),FR.i18nText("Fine-Engine_Base_Short_Nov"),FR.i18nText("Fine-Engine_Base_Short_Dec")];
Date._DN=[FR.i18nText("Fine-Engine_Base_Sche_Sunday"),FR.i18nText("Fine-Engine_Base_Sche_Monday"),FR.i18nText("Fine-Engine_Base_Sche_Tuesday"),FR.i18nText("Fine-Engine_Base_Sche_Wednesday"),FR.i18nText("Fine-Engine_Base_Sche_Thursday"),FR.i18nText("Fine-Engine_Base_Sche_Friday"),FR.i18nText("Fine-Engine_Base_Sche_Saturday")];Date._SDN=[FR.i18nText("Fine-Engine_Base_Sun"),FR.i18nText("Fine-Engine_Base_Mon"),FR.i18nText("Fine-Engine_Base_Tue"),FR.i18nText("Fine-Engine_Base_Wed"),FR.i18nText("Fine-Engine_Base_Thu"),FR.i18nText("Fine-Engine_Base_Fri"),FR.i18nText("Fine-Engine_Base_Sat")];
Date._NN=[FR.i18nText("Fine-Engine_Base_Ante_Meridian"),FR.i18nText("Fine-Engine_Base_Post_Meridian")];Date.y2kYear=50;Date.monthNumbers={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};Date.getMonthNumber=function(name){return Date.monthNumbers[name.substring(0,1).toUpperCase()+name.substring(1,3).toLowerCase()]};Date.parseDate=function(input,format){if(Date.parseFunctions[format]==null){Date.createParser(format)}var func=Date.parseFunctions[format];return Date[func](input)
};Date.createParser=function(format){var funcName="parse"+Date.parseFunctions.count++;var regexNum=Date.parseRegexes.length;var currentGroup=1;Date.parseFunctions[format]=funcName;var code="Date."+funcName+" = function(input){\n"+"var y = -1, m = -1, d = -1, h = -1, i = -1, s = -1, ms = -1, o, z, u, v;\n"+"var d = new Date();\n"+"y = d.getFullYear();\n"+"m = d.getMonth();\n"+"d = d.getDate();\n"+"var results = input.match(Date.parseRegexes["+regexNum+"]);\n"+"if (results && results.length > 0) {";
var regex="";var special=false;var ch="";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true}else{if(special){special=false;regex+=String.escape(ch)}else{var obj=Date.formatCodeToRegex(ch,currentGroup);currentGroup+=obj.g;regex+=obj.s;if(obj.g&&obj.c){code+=obj.c}}}}code+="if (u)\n"+"{v = new Date(u * 1000);}"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0 && ms >= 0)\n"+"{v = new Date(y, m, d, h, i, s, ms);}\n"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"+"{v = new Date(y, m, d, h, i, s);}\n"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"+"{v = new Date(y, m, d, h, i);}\n"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0)\n"+"{v = new Date(y, m, d, h);}\n"+"else if (y >= 0 && m >= 0 && d > 0)\n"+"{v = new Date(y, m, d);}\n"+"else if (y >= 0 && m >= 0)\n"+"{v = new Date(y, m);}\n"+"else if (y >= 0)\n"+"{v = new Date(y);}\n"+"}return (v && (z || o))?\n"+" (z ? v.add(Date.SECOND, (v.getTimezoneOffset() * 60) + (z*1)) :\n"+" v.add(Date.HOUR, (v.getGMTOffset() / 100) + (o / -100))) : v\n"+";}";
Date.parseRegexes[regexNum]=new RegExp("^"+regex+"$","i");eval(code)};Date.parseDateTime=function(str,fmt){var today=new Date();var y=0;var m=0;var d=1;var a=str.split(/\W+/);if(fmt.toLowerCase()=="%y%x"||fmt.toLowerCase()=="%y%x%d"){var tempStr=a.join("");var yearlength=4;var otherlength=2;a[0]=tempStr.substring(0,yearlength);a[1]=tempStr.substring(yearlength,yearlength+otherlength);a[2]=tempStr.substring(yearlength+otherlength,yearlength+otherlength*2)}var b=fmt.match(/%./g);var i=0,j=0;var hr=0;
var min=0;var sec=0;for(i=0;i<a.length;++i){if(!a[i]){continue}switch(b[i]){case"%d":case"%e":d=parseInt(a[i],10);break;case"%X":m=parseInt(a[i],10)-1;break;case"%x":m=parseInt(a[i],10)-1;break;case"%Y":case"%y":y=parseInt(a[i],10);(y<100)&&(y+=(y>29)?1900:2000);break;case"%b":case"%B":for(j=0;j<12;++j){if(Date._MN[j].substr(0,a[i].length).toLowerCase()==a[i].toLowerCase()){m=j;break}}break;case"%H":case"%I":case"%k":case"%l":hr=parseInt(a[i],10);break;case"%P":case"%p":if(/pm/i.test(a[i])&&hr<12){hr+=12
}else{if(/am/i.test(a[i])&&hr>=12){hr-=12}}break;case"%M":min=parseInt(a[i],10);case"%S":sec=parseInt(a[i],10);break}}if(isNaN(y)){y=today.getFullYear()}if(isNaN(m)){m=today.getMonth()}if(isNaN(d)){d=today.getDate()}if(isNaN(hr)){hr=today.getHours()}if(isNaN(min)){min=today.getMinutes()}if(isNaN(sec)){sec=today.getSeconds()}if(y!==0){return new Date(y,m,d,hr,min,sec)}y=0;m=-1;d=0;for(i=0;i<a.length;++i){if(a[i].search(/[a-zA-Z]+/)!=-1){var t=-1;for(j=0;j<12;++j){if(Date._MN[j].substr(0,a[i].length).toLowerCase()==a[i].toLowerCase()){t=j;
break}}if(t!=-1){if(m!=-1){d=m+1}m=t}}else{if(parseInt(a[i],10)<=12&&m==-1){m=a[i]-1}else{if(parseInt(a[i],10)>31&&y===0){y=parseInt(a[i],10);(y<100)&&(y+=(y>29)?1900:2000)}else{if(d===0){d=a[i]}}}}}if(y===0){y=today.getFullYear()}if(m!==-1&&d!==0){return new Date(y,m,d,hr,min,sec)}return today};Date.formatCodeToRegex=function(character,currentGroup){switch(character){case"d":return{g:1,c:"d = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{2})"};case"D":for(var a=[],i=0;i<7;a.push(Date._SDN[i]),++i){}return{g:0,c:null,s:"(?:"+a.join("|")+")"};
case"j":return{g:1,c:"d = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case"N":return{g:0,c:null,s:"[1-7]"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"[0-6]"};case"z":return{g:0,c:null,s:"(?:\\d{1,3}"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.getMonthNumber(results["+currentGroup+"]), 10);\n",s:"("+Date._MN.join("|")+")"};case"m":return{g:1,c:"m = parseInt(results["+currentGroup+"], 10) - 1;\n",s:"(\\d{2})"};
case"M":for(var a=[],i=0;i<12;a.push(Date._SMN[i]),++i){}return{g:1,c:"m = parseInt(Date.getMonthNumber(results["+currentGroup+"]), 10);\n",s:"("+a.join("|")+")"};case"n":return{g:1,c:"m = parseInt(results["+currentGroup+"], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"(?:\\d{2})"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"o":case"Y":return{g:1,c:"y = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["+currentGroup+"], 10);\n"+"y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};
case"a":return{g:1,c:"if (results["+currentGroup+"] == 'am') {\n"+"if (h == 12) { h = 0; }\n"+"} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["+currentGroup+"] == 'AM') {\n"+"if (h == 12) { h = 0; }\n"+"} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":return{g:1,c:"h = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{1,2})"};case"h":case"H":return{g:1,c:"h = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{2})"};case"i":return{g:1,c:"i = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{2})"};
case"s":return{g:1,c:"s = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{2})"};case"u":return{g:1,c:"ms = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{3})"};case"O":return{g:1,c:["o = results[",currentGroup,"];\n","var sn = o.substring(0,1);\n","var hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60);\n","var mn = o.substring(3,5) % 60;\n","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))?\n"," (sn + String.leftPad(hr, 2, 0) + String.leftPad(mn, 2, 0)) : null;\n"].join(""),s:"([+\\-]\\d{4})"};
case"P":return{g:1,c:["o = results[",currentGroup,"];\n","var sn = o.substring(0,1);\n","var hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60);\n","var mn = o.substring(4,6) % 60;\n","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))?\n"," (sn + String.leftPad(hr, 2, 0) + String.leftPad(mn, 2, 0)) : null;\n"].join(""),s:"([+\\-]\\d{2}:\\d{2})"};case"T":return{g:0,c:null,s:"[A-Z]{1,4}"};case"Z":return{g:1,c:"z = results["+currentGroup+"] * 1;\n"+"z = (-43200 <= z && z <= 50400)? z : null;\n",s:"([+\\-]?\\d{1,5})"};
case"c":var df=Date.formatCodeToRegex,calc=[];var arr=[df("Y",1),df("m",2),df("d",3),df("h",4),df("i",5),df("s",6),df("P",7)];for(var i=0,l=arr.length;i<l;++i){calc.push(arr[i].c)}return{g:1,c:calc.join(""),s:arr[0].s+"-"+arr[1].s+"-"+arr[2].s+"T"+arr[3].s+":"+arr[4].s+":"+arr[5].s+arr[6].s};case"U":return{g:1,c:"u = parseInt(results["+currentGroup+"], 10);\n",s:"(-?\\d+)"};default:return{g:0,c:null,s:character.replace(/([.*+?^$}{()|[\]\/\\])/g,"\\$1")}}};if(FR.Browser.r.safari&&!Date.brokenSetMonth){Date.brokenSetMonth=Date.prototype.setMonth;
Date.prototype.setMonth=function(num){if(num<=-1){var n=Math.ceil(-num);var back_year=Math.ceil(n/12);var month=(n%12)?12-n%12:0;this.setFullYear(this.getFullYear()-back_year);return Date.brokenSetMonth.call(this,month)}else{return Date.brokenSetMonth.apply(this,arguments)}}}})();
(function(a){a.extend(FR,{contentFormat:function(c,b){if(FR.isEmpty(c)){return""}var e=c.toString();if(FR.isEmpty(b)){return e}if(b.match(/^T/)){return e}else{if(b.match(/^D/)){if(!(c instanceof Date)){if(typeof c==="number"){c=new Date(c)}else{c=new Date(Date.parse((""+c).replace(/-|\./g,"/")))}}if(!FR.isNull(c)&&!FR.isInvalidDate(c)){var d=b.match(/^DT/);e=FR.date2Str(c,b.substring(d?2:1))}}else{if(b.match(/E/)){e=FR._eFormat(e,b)}else{e=FR._numberFormat(e,b)}}}e=e.replace(/\¤/g,"¥");return e},_dealNumberPrecision:function(g,d){if(/[eE]/.test(g)){var c=0,e=0,f;
if(/[%‰]$/.test(d)){c=/[%]$/.test(d)?2:3}for(var b=d.length;e<b;e++){if((f=d.charAt(e))=="0"||f=="#"){c++}}return Number(g).toFixed(c)}return g},_numberFormat:function(l,j){var l=l+"";if(!(/[0-9]/.test(l))||!j){return l}var m=j.indexOf(";");if(m>-1){if(l>=0){return FR._numberFormat(l+"",j.substring(0,m))}else{return FR._numberFormat((-l)+"",j.substr(m+1))}}else{if(+l<0&&j.charAt(0)!=="-"){return FR._numberFormat((-l)+"","-"+j)}}var h=j.split("."),e=h[0]||"",b=h[1]||"";l=this._dealNumberPrecision(l,b);
var i=l.split("."),c=i[0]||"",f=i[1]||"";if(/[%‰]/.test(j)){var g=/[%]/.test(j)?"00":"000";f+=g;c+=f.substr(0,g.length);c=c.charAt(0)==="-"?c.replace(/^-0+/gi,"-"):c.replace(/^0+/gi,"");f=f.substr(g.length).replace(/0+$/gi,"")}var k=FR._dealWithRight(f,b);if(k.leftPlus){c=parseInt(c)+1+"";c=isNaN(c)?"1":c}k=k.num;var d=FR._dealWithLeft(c,e);if(!(/[0-9]/.test(d))){d=d+"0"}if(!(/[0-9]/.test(k))){return d+k}else{return d+"."+k}},_eFormatOld:function(r,d){r=this.numberStringWithoutE(r);var n=d.indexOf("E");
var l=d.substr(0,n),q=d.substr(n+1);if(/^[0\.-]+$/.test(r)){r=FR._numberFormat(0,l)+"E"+FR._numberFormat(0,q)}else{var b=r<0;if(b){r=r.substr(1)}var h=(l.split(".")[0]||"").length;var o=r.indexOf(".");if(o<0){o=r.length}var j=0;r=r.replace(".","");for(var m=r.length;j<m;j++){var s=r.charAt(j);if(s<="9"&&s>="1"){break}}var p=o-j-h;var f=r.substr(j,h);var c=j+h-r.length;if(c>0){for(var g=0;g<c;g++){f+="0"}}else{f+="."+r.substr(j+h)}f=f.replace(/^[0]+/,"");if(p<0&&q.indexOf("-")<0){q+=";-"+q}r=FR._numberFormat(f,l)+"E"+FR._numberFormat(p,q);
if(b){r="-"+r}}return r},_eFormat:function(g,b){g=+g;return d(g,b);function d(m,q){var i=m<0?(m*=-1,"-"):"",k="";var o=m>0&&m<1?"floor":"ceil";var j=Math[o](Math.log(m)/Math.log(10));if(!isFinite(j)){return q.replace(/#/ig,"").replace(/\.e/ig,"E")}m=m/Math.pow(10,j);if(m>0&&m<1){m*=10;j-=1}var l=e(j,q);l>1&&(j-=l-1,m*=Math.pow(10,l-1));j<0&&(k="-",j*=-1);var n=f(q);var p=c(m);m*=Math.pow(10,n);m=Math.round(m);p&&(m/=10,j+=k==="-"?-1:1);m/=Math.pow(10,n);m=m.toFixed(n);j=h(q,j,k);return i+m+"E"+j}function h(n,k,m){k+="";
if(!/e/ig.test(n)){return k}n=n.split(/e/ig)[1];while(k.length<n.length){k="0"+k}var o=true;for(var l=0,j=k.length;l<j;l++){if(!o){continue}o=k.charAt(l)==="0"}m=o?"":m;return m+k}function f(j){if(!/e/ig.test(j)){return 0}var i=j.split(/e/ig)[0].split(".");return i.length>1?i[1].length:0}function e(n,o){if(!/e/ig.test(o)){return 0}var p=o.split(/e/ig)[0].split(".")[0],l,m,k=p.length;var j=0;for(l=0;l<k;l++){m=p.charAt(l);if(m==0||(m=="#"&&(k-l<=n+1))){j++}}return j}function c(i){var j=Math.round(i);
i=(i+"").split(".")[0];j=(j+"").split(".")[0];return i.length!==j.length}},_dealWithRight:function(l,d){var q="",h=0,k=0;for(var o=d.length;k<o;k++){var b=d.charAt(k);var p=l.charAt(h);switch(b){case"0":if(FR.isEmpty(p)){p="0"}q+=p;h++;break;case"#":q+=p;h++;break;default:q+=b;break}}var n=l.substr(h);var r={};if(!FR.isEmpty(n)&&n.charAt(0)>4){r.leftPlus=true;var f=q.match(/^[0-9]+/);if(f){var m=f[0];var e=m.length;var g=FR.parseINT(m)+1+"";if(g.length>e){g=g.substr(1)}else{g=String.leftPad(g,e,"0");
r.leftPlus=false}q=q.replace(/^[0-9]+/,g)}}r.num=q;return r},_dealWithLeft:function(e,k){var h="";var l=e.length-1;var g=-1,s=-1;var m=k.length-1;for(;m>=0;m--){var b=k.charAt(m);var r=e.charAt(l);switch(b){case"0":if(FR.isEmpty(r)){r="0"}s=-1;h=r+h;l--;break;case"#":s=m;h=r+h;l--;break;case",":if(!FR.isEmpty(r)){var d=k.match(/,[#0]+/);if(d){g=d[0].length-1}h=","+h}break;default:h=b+h;break}}if(s>-1){var t=e.substr(0,l+1);h=h.substr(0,s)+t+h.substr(s)}if(g>0){var q=h.match(/[0-9]+,/);if(q){q=q[0];
var p="",f=q.length-1-g;for(;f>=0;f=f-g){p=q.substr(f,g)+","+p}var o=q.substr(0,f+g);if(!FR.isEmpty(o)){p=o+","+p}}h=h.replace(/[0-9]+,/,p)}return h},object2Number:function(b){if(b==null){return 0}if(typeof b=="number"){return b}else{var c=b+"";if(c.indexOf(".")===-1){return parseInt(c)}else{return parseFloat(c)}}},object2Date:function(c){if(c==null){return new Date()}if(c instanceof Date){return c}else{if(typeof c=="number"){return new Date(c)}else{var d=c+"";d=d.replace(/-/g,"/");var b=new Date(d);
if(!FR.isInvalidDate(b)){return b}return new Date()}}},object2Time:function(c){if(c==null){return new Date()}if(c instanceof Date){return c}else{var d=c+"";d=d.replace(/-/g,"/");var b=new Date(d);if(!FR.isInvalidDate(b)){return b}if(d.indexOf("/")===-1&&d.indexOf(":")!==-1){b=new Date("1970/01/01 "+d);if(!FR.isInvalidDate(b)){return b}}b=FR.str2Date(d,"HH:mm:ss");if(!FR.isInvalidDate(b)){return b}return new Date()}},isInvalidDate:function(b){return b=="Invalid Date"||b=="NaN"},numberStringWithoutE:function(d){if(isNaN(Number(d))){return d
}var g=Number(d).toString().split(/[eE]/);if(g.length===1){return g[0]}var e="",c=Number(d)<0?"-":"",b=g[0].replace(".",""),f=Number(g[1])+1;if(f<0){e=c+"0.";while(f++){e+="0"}return e+b.replace(/^-/,"")}f-=b.length;while(f-->0){e+="0"}return b+e}})})(jQuery);

15
src/test/java/WEB-INF/assist/phantomjs/lib/van-convert.js

@ -0,0 +1,15 @@
var system=require("system"),fs=require("fs");var LOG_ERROR=1,LOG_WARN=2,LOG_NOTICE=3,LOG_INFO=4,LOG_DEBUG=5;var EXIT_ERROR=-1,EXIT_NORMAL=0,EXIT_REQUEST=1,EXIT_TIMEOUT=2;var statusMsg,chartType,pageMsg,renderMsg,responseMsg;var CHECK_DELAY=1000*5;var TIMEOUT=0;var INTERVAL=1000*5;var MAX_RENDER_TIME=1000*60*5;var DEFAULT_WIDTH=800;var DEFAULT_HEIGHT=600;var isOSX=/mac/i.test(system.os["name"]);var LOG_LEVEL=LOG_WARN;var LOG_FILE="";var timeLog,renderTimeLog,page,cssStr;var jsName;phantom.onError=phantomErr;
var clog=CLOG(LOG_LEVEL,LOG_FILE);if(system.args.length>=2&&/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}|localhost/.test(system.args[1])){var args=system.args;var address=args[1].split(":");var ip=address[0],port=address[1];args=args.slice(2);if(args.length%2){exit()}for(var i=0,len=args.length;i<len;i=i+2){var k=args[i][1],v=args[i+1];switch(k){case"l":if(!isNaN(v)){clog.setLevel(+v)}break;case"f":if((v||"").length>3){clog.setFile(v)}break;case"t":if(!isNaN(v)){TIMEOUT=+v}break;case"j":jsName=v;break;default:break
}}page=initPage();startServer(ip,port);setTimeout(supervisor,CHECK_DELAY)}else{console.log("example: ./PhantomJS van-convert.js 127.0.0.1:2333");exit()}function initPage(){var a=require("webpage").create();a.onError=pageErr;a.content='<!DOCTYPE html><html><head><meta charset="UTF-8"></head>'+"<style>html, body{margin: 0;padding: 0;} #bg, #container{position:absolute;width:100%;height:100%} "+"#bg{z-index:-1;background:rgba(255,255,255,0.1);opacity:0.1;display:none;}</style>"+'<body><div id="bg"></div><div id="container"></div></body></html>';
a.evaluate(function(){FR={};FR.i18nText=function(c){return c}});a.injectJs("format.js");a.injectJs("vancharts-all.js");if(jsName){var b=jsName.split(",");b.forEach(function(c){a.injectJs(c)})}a.evaluate(shim);cssStr&&a.evaluate(addStyleTag,cssStr);return a}function render(c,b){renderTimeLog=+Date.now();page.onError=function(g,f){renderTimeLog=0;clog.notice("chart type: "+c.option.chartType);b("page error");pageErr(g,f)};page.onConsoleMessage=function(h,g,f){renderTimeLog=0;renderMsg=h;if(h==="done"){clog.log(h,g,f);
window.setTimeout(function(){var j=page.renderBase64("PNG");b(j)},c.time)}else{clog.info(h,g,f)}};var e=c.zoom||1,d=c.width||DEFAULT_WIDTH,a=c.height||DEFAULT_HEIGHT;d*=e;a*=e;page.zoomFactor=(c.scale||1)*e;page.viewportSize={width:d,height:a};page.clipRect={top:0,left:0,width:d,height:a};if(c.js){page.evaluate(function(){if(Date.brokenSetMonth){Date.prototype.setMonth=Date.brokenSetMonth}});page.evaluateJavaScript("function(){"+c.js+"}")}page.evaluate(function(p,h){var g=p.width||DEFAULT_WIDTH;var o=p.height||DEFAULT_HEIGHT;
var j=p.option,n=window;n.chartBg=document.getElementById("bg");n.chartContainer=document.getElementById("container");if(j.geo&&j.borderWidth){g-=2*j.borderWidth;o-=2*j.borderWidth}try{n.vanCharts&&n.vanCharts.clear()}catch(l){}n.chartContainer.innerHTML="";n.chartContainer.style.backgroundImage="";n.chartContainer.style.borderStyle="none";n.chartContainer.style.width=g+"px";n.chartContainer.style.height=o+"px";n.chartBg.style.width=g+"px";n.chartBg.style.height=o+"px";n.chartBg.style.display="";
if(h&&j["style"]==="gradual"){n.chartBg.style.display="block"}VanCharts.initPaddingScale(j.scale);j["plotOptions"]=j["plotOptions"]||{};j["plotOptions"]["animation"]=false;var m=j.wrapperName;if(m){var f=new window[m]();n.vanCharts=f._exportInit(n.chartContainer,j);console.log("done")}else{n.vanCharts=VanCharts.init(n.chartContainer);n.vanCharts.setOptions(j)}},c,isOSX)}function addCss(b,a){page.onConsoleMessage=function(e,d,c){if(e==="done"){a('{"status": "success"}')}else{clog.error("add css error");
a('{"status": "css injected error."}')}};cssStr=b.css;page.evaluate(addStyleTag,cssStr)}function addStyleTag(a){(function(){var b=document.createElement("style");b.innerText=a;document.body.appendChild(b);console.log("done")})()}function supervisor(){if(!(INTERVAL>1)){return}if(!(TIMEOUT>1)){return}timeLog=+Date.now();renderTimeLog=0;setInterval(function(){if(Date.now()-renderTimeLog<MAX_RENDER_TIME){clog.info("Rendering img, Since:"+renderTimeLog)}else{if(Date.now()-timeLog<TIMEOUT){clog.log("Running........ Last:"+timeLog)
}else{clog.log("Time out, exit. Last:"+timeLog);exit(EXIT_TIMEOUT)}}},INTERVAL)}function startServer(b,a){var c=require("webserver").create();c.listen(b?b+":"+a:parseInt(a,10),function(j,h){h.setHeader("Access-Control-Allow-Origin","*");if(j.method==="GET"){f(page.content)}var m=timeLog=Date.now(),e=j.postRaw||j.post,g=JSON["parse"](e),o=Object.keys(g);clog.log("Request ",o);if("status" in g){var n='{"status": "OK", "info": "'+clog.popAll()+'"}';statusMsg=n;f(n);if(g.status==="close"){clog.log("close");
exit(EXIT_REQUEST)}}else{if("css" in g){addCss(g,f,l)}else{chartType=g.option.chartType;clog.info("chart type: "+g.option.chartType);render(g,d,l)}}function f(p){if(!h){return}clog.log("Response",o);h.statusCode=200;statusMsg=h.statusCode;h.write(p);h.close();timeLog=Date.now()}function d(p){f(p);page.close();page=initPage()}function l(q,p){q="Failed rendering: \n";if(p){q+=p}clog.log(q);h.statusCode=500;statusMsg=h.statusCode;h.write(q);h.close()}});console.log("OK, PhantomJS is ready.");clog.info("----- PhantomJS ready -----");
clog.warn("PhantomJS start pid:"+system.pid)}function CLOG(h,d){if(h==null){h=LOG_ERROR}var g;var a=[];function c(j){return convertDate([].concat.apply("["+(+Date.now())+"]",j).join(" ").replace(/\"/g,"'"))+"\r\n"}function e(){console.log.apply(console,arguments);a.push(c(arguments))}function f(j){g&&g.close();if(j){fs.touch(j);g=fs.open(j,"a")}}function b(j){h=+j}f();return{log:function(){if(h>=LOG_DEBUG){e.apply(this,arguments)}},info:function(){if(h>=LOG_INFO){e.apply(this,arguments)}},notice:function(){if(h>=LOG_NOTICE){e.apply(this,arguments)
}},warn:function(){if(h>=LOG_WARN){e.apply(this,arguments)}g&&g.write(c(arguments))},error:function(){if(h>=LOG_ERROR){e.apply(this,arguments)}g&&g.write(c(arguments))},setFile:f,setLevel:b,popAll:function(){var j=a.join("");a=[];return j},flush:function(){g&&g.flush()},close:function(){g&&g.close()}}}function pageErr(c,b){pageMsg=c;var a=["\r\nPAGE ERROR: "+c];if(b&&b.length){a.push("TRACE:");b.forEach(function(d){a.push(" -> "+d.file+": "+d.line+(d["function"]?' (in function "'+d["function"]+'")':""))
})}clog.notice(a.join("\r\n"));page.close();page=initPage()}function phantomErr(c,b){var a=["\r\nPHANTOM ERROR: "+c];if(b&&b.length){a.push("TRACE:");b.forEach(function(d){a.push(" -> "+(d.file||d.sourceURL)+": "+d.line+(d["function"]?" (in function "+d["function"]+")":""))})}clog.error(a.join("\r\n"));exit(EXIT_ERROR)}function exit(a){switch(a){case EXIT_ERROR:clog.error("Exit with error.");break;case EXIT_TIMEOUT:clog.warn("Exit due to timeout.");break;case EXIT_REQUEST:clog.warn("Exit by request");
break;default:case EXIT_NORMAL:clog.warn("Exit.");break}clog.warn("exit pid:"+system.pid);clog.warn("chartType:"+chartType);clog.warn("pageMsg:"+pageMsg);clog.warn("renderMsg:"+renderMsg);clog.warn("statusMsg:"+statusMsg);clog.warn("responseMsg:"+responseMsg);clog.close();phantom.exit()}function convertDate(a){return a.replace(/\d{13}/g,dateFun)}function dateFun(b){var a=new Date(+b);return a.getFullYear()+"-"+addZero(a.getMonth()+1)+"-"+addZero(a.getDate())+" "+addZero(a.getHours())+":"+addZero(a.getMinutes())+":"+addZero(a.getSeconds())
}function addZero(a){return("0"+a).slice(-2)}function shim(){if(!Function.prototype.bind){Function.prototype.bind=function(a){if(typeof this!=="function"){throw new TypeError("Function.prototype.bind -what is trying to be bound is not callable")}var e=Array.prototype.slice.call(arguments,1),d=this,b=function(){},c=function(){return d.apply(this instanceof b&&a?this:a,e.concat(Array.prototype.slice.call(arguments)))};b.prototype=this.prototype;c.prototype=new b();return c}}};

1533
src/test/java/WEB-INF/assist/phantomjs/lib/vancharts-all.js

File diff suppressed because one or more lines are too long

401
src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux32/ChangeLog

@ -0,0 +1,401 @@
Please see also http://phantomjs.org/releases.html.
2016-01-23: Version 2.1.0
New features
* Upgraded Qt to 5.5.1 (issue #13377)
* Added support for SSL Client Authentication (issue #11275)
* Added support for context menu event (issue #11429)
* Allow remote debugging to use random port assigned by the OS (issue #13432)
Improvements
* Allow outer context to access arbitrary URLs (issue #11217)
* Fixed --local-storage-path and localStoragePath config option (issue #11596)
* Restored --local-url-access=no regression (issue #13412)
* Fixed an issue with loading JS modules contains a last-line comment (issue #12868)
* Fixed an issue with returning binary content in WebServer module (issue #13026)
* Fixed encoded URL loading on Windows (issue #12953)
* Fixed building with GCC 5 (issue #13518)
* Fixed file upload (issue #12506)
* Fixed latest OS detection (issue #13829)
2015-01-23: Version 2.0.0
New features
* Switched to Qt 5 and updated WebKit (issue 10448)
* Implemented clearing of memory cache (issue 10357)
* Added support for HTTP header change for every request (issue 11299)
Improvements
* Fixed rendering of CJK text by always linking the codecs (issue 10249)
* Ensured onResourceReceived is still fired on an error (issue 11163)
* Fixed possible crash in handling network requests (issue 11252)
* Removed hardcoded GhostDriver launching message (issue 12681)
* Allowed disk cache more than 2 GB (issue 12303)
Examples
* Netsniff example should exit when fails to load (issue 11333)
2014-01-25: Version 1.9.7
* Reverted to GhostDriver 1.1.0 instead of 1.1.1 (issue 11915)
* Fixed another warning of obsolete userSpaceScaleFactor on OS X 10.9 (issue 11612)
2014-01-20: Version 1.9.6
* Updated GhostDriver to version 1.1.1 (issue 11877, 11893)
2014-01-19: Version 1.9.3
* Fixed CoreText performance note on OS X 10.9 (issue 11418)
* Fixed warning of obsolete userSpaceScaleFactor on OS X 10.9 (issue 11612)
2013-09-06: Version 1.9.2
* Fixed graphical artifacts with transparent background on Windows (issue 11276, 11007, 11366)
* Updated GhostDriver to version 1.0.4 (issue 11452)
2013-06-04: Version 1.9.1
Critical bug fixes:
* Fixed problems with specifying proxy server (issue 10811, 11117)
* Fixed UTF-8 encoding with system.stdout and system.stderr (issue 11162)
* Ensured that onResourceReceived will be always invoked (issue 11163)
* Fixed module loading from an absolute path on Windows (issue 11165)
* Fixed typo in the command-line option for setting the cache size (11219)
* Fixed possible crash when handling network requests (issue 11252, 11338)
2013-03-20: Version 1.9.0 "Sakura"
New features
* Added spawn and execFile to execute external programs (issue 10219)
* Added the ability to abort network requests (issue 10230)
* Added system access to stdin, stdout, and stderr (issue 10333)
* Added support for custom CA certificates location (issue 10916)
* Added seek function to the File stream (issue 10937)
* Implemented file read for a specified number of bytes (issue 10938)
* Added a callback to handle network error (issue 10954, 10997)
* Added custom encoding support when opening a page (issue 11043)
* Implemented require.stub() support for a factory function (issue 11044)
* Added page loading indicator and progress (issue 11091)
* Added a timeout option for network requests (issue 11129)
Improvements
* Fixed the build on FreeBSD (issue 10597)
* Ensured a consistent 72 dpi for Linux headless rendering (issue 10659)
* Fixed possible PDF error due to invalid CreationDate field (issue 10663)
* Fixed crash when uploading non existing files (issue 10941)
* Improved the autocomplete internal of the interactive/REPL mode (issue 10943)
* Fixed possible crash when accessing inline frames (issue 10947)
* Changed Linux binary package setup to be built on CentOS 5 (issue 10963)
* Extended SSL ignore setting to synchronous XHR (issue 10985)
* Added convenient constants for modifier keys (issue 11056)
* Fixed incorrect date handling in the cookies (issue 11068)
* Updated GhostDriver to version 1.0.3 (issue 11146)
Examples
* Fixed invalid data URI in the netsniff example (issue 10740)
* Implemented a new weather example (issue 10794)
* Fixed rendering issues in render_multi_url (issue 11021)
* Fixed proper event sequence in page_events example (issue 11028)
* Miscellanous tweaks (issue 11082)
2013-03-02: Version 1.8.2
Critical bug fixes:
* Fixed possible PDF error due to invalid CreationDate field (issue 663)
* Fixed crash when uploading non existing files (issue 941)
* Fixed possible crash when accessing inline frames (issue 947)
* Extended SSL ignore setting to synchronous XHR (issue 985)
* Fixed incorrect date handling in the cookies (issue 1068)
2013-01-06: Version 1.8.1
Critical bug fix:
* Mac OS X: Fix possible crash when using some TrueType fonts (issue 690)
2012-12-21: Version 1.8.0 "Blue Winter Rose"
New features
* Integrated GhostDriver as the WebDriver implementation (issue 49)
* Added an option to specify the SSL protocol (issue 174)
* Added encoding support for WebServer's response (issue 505)
* Added process ID (PID) to the System module (issue 769)
* Added properties to obtain page and frame title (issue 799)
* Added page navigation methods (issue 808)
* Added support for modifier keys in keyboard events (issue 835)
* Added onFilePicker callback for more generic file upload API (issue 843)
* Added the ability to set the page content and location (issue 909)
Improvements
* Fixed date parsing in ISO8601 format (issue 187, 267)
* Fixed window.location (issue 530, 632)
* Deregistered multiple callback handler (issue 807)
* Fixed sending of double-click events (issue 848)
* Increases maximum number of redirects (issue 849)
* Fixed keycodes sent for lowercase characters (issue 852)
* Fixed a regression in table row page break (issue 880)
* Completed the CoffeeScript version of the examples (issue 907)
* Updated Qt to version 4.8.4 (issue 918)
* Fixed potential hang in some example scripts (issue 922)
2012-09-22: Version 1.7.0 "Blazing Star"
New features
* Added a module system modelled after CommonJS/Node.js (issue 47)
* Added support for window pop-up (issue 151)
* Static build on Linux (issue 413)
* Added run-time detection of SSL support (issue 484)
* Added more events support (issue 492, 712)
* Added support for disabling automatic proxy detection (issue 580)
* Provided page closing callback (issue 678)
* Added methods to access URL, frames URL, frame Content (issue 758)
* Added more cookies-related API (issue 761)
Improvements
* Refactored command-line options handling (issue 55)
* Improved the workflow for producing release builds (issue 599)
* Improved cookies API and implementation (issue 603, 761)
* Improved frame switching API (issue 654)
* Fixed iframe handling regression (issue 683)
* Fixed OS version number with Windows 8 and Mountain Lion (issue 684, 688)
* Fixed HAR navigation info in the netsniff example (issue 733)
* Fixed compile warnings with Visual Studio (issue 744)
* Removed hacks for static linking on Windows (issue 753)
* Added ICO image handling on Windows (issue 779)
* Fixed font antialiasing on Windows (issue 785)
* Improved Jasmine test runner for Jasmine 1.2 (issue 792)
2012-07-22: Version 1.6.1
Bug fixes
* Don't build the deploy in debug mode (issue 599)
* Fixed building on Windows (issue 424)
* Fixed remote inspector when building statically (issue 430)
2012-06-20: Version 1.6.0 "Lavender"
New features
* Added support for passing arguments to WebPage's evaluate (issue 132)
* Added callbacks for JavaScript onConfirm and onPrompt (issue 133)
* Added stack trace when error occurs (issue 166)
* Added support for local storage path and quota (issue 300)
* Added initial support for cookies handling (issue 354)
* Added support for header footer when printing the page (issue 410, 512)
* Added headers support in the loading request (issue 452)
* Added support to render the web page as base64-encoded string (issue 547)
* Added hooks for navigation event (issue 562)
* Added command-line option to show debug messages (issue 575)
* Added support for the zoom factor for web page rendering (issue 579)
* Added crash reporter for Mac OS X and Linux, based on Google Breakpad (issue 576)
* Added 'os' object to the system module (issue 585)
* Added support for asynchronous evaluation (issue 593)
Improvements
* Fixed remote debugging to work on Mac OS X and Windows (issue 430)
* Fixed web server getting the dropped connection for empty response (issue 451)
* Fixed text rendered as boxes (squares) on headless Linux (issue 460)
* Updated Qt to version 4.8.2 (issue 495)
* Updated CoffeeScript compiler to version 1.3.3 (issue 496)
* Fixed the build script to detect and use MAKEFLAGS (issue 503)
* Fixed the build script to properly pass Qt config flags (issue 507)
* Changed Info.plist to be embedded in Mac OS X executable (issue 528)
* Fixed wrong module require in the imagebin example (issue 536)
* Fixed example scripts to exit with the right exit code (issue 544)
* Fixed build failure with glib 2.31.0+ (issue 559)
* Fixed error handler failures in some cases (issue 589)
* Fixed Twitter-related examples to work with the new site (issue 609)
2012-03-20: Version 1.5.0 "Ghost Flower"
New features
* Added interactive mode, also known as REPL (issue 252)
* Added setting for web security, to allow cross domain XHR (issue 28)
* Added error handler for WebPage object (issue 166)
* Added support for custom HTTP header in the network request (issue 77)
* Added support for read write encoding in the file system module (issue 367)
* Added remote debugging support on Linux (issue 6)
* Added support for proxy authentication (issue 105)
* Added System module, to retrieve environment variables (issue 271) and arguments (issue 276)
* Added fs.readLink function (issue 329)
* Added support for reading and writing binary data (issue 400)
* Added support to retrieve request data in the WebServer? module (issue 340)
* Added support for individual top/bottom/left/right print margins (issue 388)
* Added command-line option --help (issue 347)
* Added short command-line options -v and -h (issue 408)
* Removed support for Flash and other plugins (issue 418)
Bug fixes
* Fixed multiple console.log arguments (issue 36)
* Fixed file upload (issue 307)
* Fixed the web server instance to be asynchronous (issue 326) and still support Keep Alive (issue 416)
* Workaround Qt 4.8.0 crash due to empty URL scheme (issue 365)
* Fixed a Content-Type problem where POST does not work (issue 337)
* Fixed reading body request in the web server even without specific Content-Type (issue 439)
* Fixed Jasmine test runner with Jasmine 1.1 (issue 402)
* Fixed request URL formatting in the web server (issue 437)
* Don't display debugging and warning messages (issue 323)
2011-12-31: Version 1.4.1
Bug fixes
* Fix setting the proxy type (issue 266)
* Workaround for file upload regression (issue 307)
* Fix extraneous messsages in non-debug mode (issue 323)
2011-12-22: Version 1.4.0 "Glory of the Snow"
New features
* Added embedded HTTP server (issue 115)
* Added convenient build script for Linux (issue 197)
* Added support for SOCKS5 proxy (issue 266)
* Updated CoffeeScript compiler to version 1.2 (issue 312)
Bug fixes
* Fix potential crash in QUrl with Qt 4.8 (issue 304)
* Fix bug in CookieJar with QSettings and string (PyPhantomJS issue 10)
* Prevent showing the icon on Mac OS X Dock (issue 281)
Examples
* Added a new example to detect browsers sniffing (issue 263)
* Added HTTP server example (issue 115)
2011-09-23: Version 1.3.0 "Water Lily"
Bug fixes
* Fixed open() and POST method, without specifying the finished handler
* Fixed script execution warning dialog (issue 165)
* Added WebPage.release() to free the web page from memory (issue 154)
* Added special handling of about:blank (issue 235)
* Made a separate network access manager for each page (issue 190)
New features
* Introduced file system API based on CommonJS Filesystem proposal (issue 129)
* Added support for persistent cookies (issue 91)
* Added event handling, currently only for mouse events (issue 234)
* Added page scroll position (issue 162)
* Added HTTP authentication support (issue 45)
* Added callback for page initialization (issue 143)
* Added support to specify script and output encoding (issue 186)
* Added option to allow local content to do cross-domain access (issue 28)
* Added support to apply configurations from a JSON file (issue 180)
* Added a convenient WebPage initialization construction (issue 206)
* Added option to limit the size of disk cache (issue 220)
Examples
* Added a new example on using Modernizr to detect features (issue 144)
* Fixed pizza.js example to use Mobile Yelp (issue 200)
* Fixed netsniff.coffee example due to wrong indentation (issue 225)
* Added an example to show live network traffic (issue 227)
* Added an example demonstrating different output encodings (issue 186)
2011-06-21: Version 1.2.0 "Birds of Paradise"
Version 1.2.0 is a major update. It introduces a whole set of new API.
Bug fixes
* Fixed rendering a very large web page (issue 54)
* Fixed reporting of CoffeeScript compile error (issue 125)
New features
* Added callback for console message (issue 12)
* Improved security model via WebPage object (issue 41)
* Added support for POST, HEAD, PUT, and DELETE (issue 88)
* Scripts filename is now passed as phantom.scriptName
* Added callback to capture resource requests and responses (issue 2)
* Added the ability to load external JavaScript (issue 32)
Examples
* Ported examples to use WebPage object
* Added a new example to upload an image to imagebin.org
* Added a new example to show HTTP POST feature
* Added a new example to sniff network traffic and save it in HAR format
2011-04-27: Version 1.1.0 "Cherry Blossom"
Fixed the script loading to use UTF-8 encoding (Yasuhiro Matsumoto).
Added check for system proxy setting (Yasuhiro Matsumoto).
Fixed building with Cygwin and Qt 4.5 (John Dalton).
Added a new example: driver for QUnit tests (Łukasz Korecki).
Fixed issue #20: problem with JPG transparent color (Alessandro Portale).
Fixed issue #9: ignore first line starting with #! (Matthias, aka fourplusone).
Fixed issue #7: support for file upload for form submission (Matthias, aka fourplusone).
Fixed issue #35: support for disabling images loading (Ariya Hidayat).
Fixed issue #14: enable or disable plugins (Ariya Hidayat).
Added a new example: using Canvas to produce the color wheel (Ariya Hidayat).
Added support for rasterizing as GIF image (Ariya Hidayat).
Added support for CoffeeScript (Ariya Hidayat).
Fixed issue #19: option for setting the proxy (Clint Berry, Ariya Hidayat).
Python implementation using PyQt (James Roe).
Fixed issue #17: Specify paper size for PDF export (Alessandro Portale).
Fixed issue #60: Win32 and OS/2 icon files (Salvador Parra Camacho).
Added clipping rectangle to the render function (Wouter de Bie).
Added an example on sychronous waiting (Gabor Torok).
Added command line option to use disk cache (Jon Turner).
Added text extracting example (Weston Ruter).
Fixed issue #93: Build with Qt < 4.7 (Ariya Hidayat).
Ported all examples to CoffeeScript (Robert Gieseke).
2011-01-17: Version 1.0.0
Initial launch.
The API is centralized at the 'phantom' object (as child of
window object) which has the properties: args, content,
loadStatus, state, userAgent, version, viewportSize, and
the following functions: exit, open, render, sleep.
Several examples are included, among others: web page rasterizer,
weather service, headless test framework driver, and many others.

22
src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux32/LICENSE.BSD

@ -0,0 +1,22 @@
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the <organization> nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

29
src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux32/README.md

@ -0,0 +1,29 @@
# [PhantomJS](http://phantomjs.org) - Scriptable Headless WebKit
PhantomJS ([phantomjs.org](http://phantomjs.org)) is a headless WebKit scriptable with JavaScript. The latest [stable release](http://phantomjs.org/release-2.0.html) is version 2.0.
**Note**: Please **do not** create a GitHub pull request **without** reading the [Contribution Guide](https://github.com/ariya/phantomjs/blob/master/CONTRIBUTING.md) first. Failure to do so may result in the rejection of the pull request.
## Use Cases
- **Headless web testing**. Lightning-fast testing without the browser is now possible!
- **Page automation**. [Access and manipulate](http://phantomjs.org/page-automation.html) web pages with the standard DOM API, or with usual libraries like jQuery.
- **Screen capture**. Programmatically [capture web contents](http://phantomjs.org/screen-capture.html), including CSS, SVG and Canvas. Build server-side web graphics apps, from a screenshot service to a vector chart rasterizer.
- **Network monitoring**. Automate performance analysis, track [page loading](http://phantomjs.org/network-monitoring.html) and export as standard HAR format.
## Features
- **Multiplatform**, available on major operating systems: Windows, Mac OS X, Linux, and other Unices.
- **Fast and native implementation** of web standards: DOM, CSS, JavaScript, Canvas, and SVG. No emulation!
- **Pure headless (no X11) on Linux**, ideal for continuous integration systems. Also runs on Amazon EC2, Heroku, and Iron.io.
- **Easy to install**: [Download](http://phantomjs.org/download.html), unpack, and start having fun in just 5 minutes.
## Questions?
- Explore the complete [documentation](http://phantomjs.org/documentation/).
- Read tons of [user articles](http://phantomjs.org/buzz.html) on using PhantomJS.
- Join the [mailing-list](http://groups.google.com/group/phantomjs) and discuss with other PhantomJS fans.
PhantomJS is free software/open source, and is distributed under the [BSD license](http://opensource.org/licenses/BSD-3-Clause). It contains third-party code, see the included `third-party.txt` file for the license information on third-party code.
PhantomJS is created and maintained by [Ariya Hidayat](http://ariya.ofilabs.com/about) (Twitter: [@ariyahidayat](http://twitter.com/ariyahidayat)), with the help of [many contributors](https://github.com/ariya/phantomjs/contributors). Follow the official Twitter stream [@PhantomJS](http://twitter.com/PhantomJS) to get the frequent development updates.

BIN
src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux32/bin/phantomjs

Binary file not shown.

36
src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux32/third-party.txt

@ -0,0 +1,36 @@
This document contains the list of Third Party Software included with
PhantomJS, along with the license information.
Third Party Software may impose additional restrictions and it is the
user's responsibility to ensure that they have met the licensing
requirements of PhantomJS and the relevant license of the Third Party
Software they are using.
Qt - http://qt-project.org/
License: GNU Lesser General Public License (LGPL) version 2.1.
Reference: http://qt-project.org/doc/qt-4.8/lgpl.html.
WebKit - http://www.webkit.org/
License: GNU Lesser General Public License (LGPL) version 2.1 and BSD.
Reference: http://www.webkit.org/coding/lgpl-license.html and
http://www.webkit.org/coding/bsd-license.html.
Mongoose - https://github.com/cesanta/mongoose
License: MIT
Reference: https://github.com/cesanta/mongoose/commit/abbf27338ef554cce0281ac157aa71a9c1b82a55
OpenSSL - http://www.openssl.org/
License: OpenSSL License, SSLeay License.
Reference: http://www.openssl.org/source/license.html.
Linenoise - https://github.com/tadmarshall/linenoise
License: BSD.
Reference: https://github.com/tadmarshall/linenoise/blob/master/linenoise.h.
QCommandLine - http://xf.iksaif.net/dev/qcommandline.html
License: GNU Lesser General Public License (LGPL) version 2.1.
Reference: http://dev.iksaif.net/projects/qcommandline/repository/revisions/master/entry/COPYING
wkhtmlpdf - http://code.google.com/p/wkhtmltopdf/
License: GNU Lesser General Public License (LGPL)
Reference: http://code.google.com/p/wkhtmltopdf/

401
src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux64/ChangeLog

@ -0,0 +1,401 @@
Please see also http://phantomjs.org/releases.html.
2016-01-23: Version 2.1.0
New features
* Upgraded Qt to 5.5.1 (issue #13377)
* Added support for SSL Client Authentication (issue #11275)
* Added support for context menu event (issue #11429)
* Allow remote debugging to use random port assigned by the OS (issue #13432)
Improvements
* Allow outer context to access arbitrary URLs (issue #11217)
* Fixed --local-storage-path and localStoragePath config option (issue #11596)
* Restored --local-url-access=no regression (issue #13412)
* Fixed an issue with loading JS modules contains a last-line comment (issue #12868)
* Fixed an issue with returning binary content in WebServer module (issue #13026)
* Fixed encoded URL loading on Windows (issue #12953)
* Fixed building with GCC 5 (issue #13518)
* Fixed file upload (issue #12506)
* Fixed latest OS detection (issue #13829)
2015-01-23: Version 2.0.0
New features
* Switched to Qt 5 and updated WebKit (issue 10448)
* Implemented clearing of memory cache (issue 10357)
* Added support for HTTP header change for every request (issue 11299)
Improvements
* Fixed rendering of CJK text by always linking the codecs (issue 10249)
* Ensured onResourceReceived is still fired on an error (issue 11163)
* Fixed possible crash in handling network requests (issue 11252)
* Removed hardcoded GhostDriver launching message (issue 12681)
* Allowed disk cache more than 2 GB (issue 12303)
Examples
* Netsniff example should exit when fails to load (issue 11333)
2014-01-25: Version 1.9.7
* Reverted to GhostDriver 1.1.0 instead of 1.1.1 (issue 11915)
* Fixed another warning of obsolete userSpaceScaleFactor on OS X 10.9 (issue 11612)
2014-01-20: Version 1.9.6
* Updated GhostDriver to version 1.1.1 (issue 11877, 11893)
2014-01-19: Version 1.9.3
* Fixed CoreText performance note on OS X 10.9 (issue 11418)
* Fixed warning of obsolete userSpaceScaleFactor on OS X 10.9 (issue 11612)
2013-09-06: Version 1.9.2
* Fixed graphical artifacts with transparent background on Windows (issue 11276, 11007, 11366)
* Updated GhostDriver to version 1.0.4 (issue 11452)
2013-06-04: Version 1.9.1
Critical bug fixes:
* Fixed problems with specifying proxy server (issue 10811, 11117)
* Fixed UTF-8 encoding with system.stdout and system.stderr (issue 11162)
* Ensured that onResourceReceived will be always invoked (issue 11163)
* Fixed module loading from an absolute path on Windows (issue 11165)
* Fixed typo in the command-line option for setting the cache size (11219)
* Fixed possible crash when handling network requests (issue 11252, 11338)
2013-03-20: Version 1.9.0 "Sakura"
New features
* Added spawn and execFile to execute external programs (issue 10219)
* Added the ability to abort network requests (issue 10230)
* Added system access to stdin, stdout, and stderr (issue 10333)
* Added support for custom CA certificates location (issue 10916)
* Added seek function to the File stream (issue 10937)
* Implemented file read for a specified number of bytes (issue 10938)
* Added a callback to handle network error (issue 10954, 10997)
* Added custom encoding support when opening a page (issue 11043)
* Implemented require.stub() support for a factory function (issue 11044)
* Added page loading indicator and progress (issue 11091)
* Added a timeout option for network requests (issue 11129)
Improvements
* Fixed the build on FreeBSD (issue 10597)
* Ensured a consistent 72 dpi for Linux headless rendering (issue 10659)
* Fixed possible PDF error due to invalid CreationDate field (issue 10663)
* Fixed crash when uploading non existing files (issue 10941)
* Improved the autocomplete internal of the interactive/REPL mode (issue 10943)
* Fixed possible crash when accessing inline frames (issue 10947)
* Changed Linux binary package setup to be built on CentOS 5 (issue 10963)
* Extended SSL ignore setting to synchronous XHR (issue 10985)
* Added convenient constants for modifier keys (issue 11056)
* Fixed incorrect date handling in the cookies (issue 11068)
* Updated GhostDriver to version 1.0.3 (issue 11146)
Examples
* Fixed invalid data URI in the netsniff example (issue 10740)
* Implemented a new weather example (issue 10794)
* Fixed rendering issues in render_multi_url (issue 11021)
* Fixed proper event sequence in page_events example (issue 11028)
* Miscellanous tweaks (issue 11082)
2013-03-02: Version 1.8.2
Critical bug fixes:
* Fixed possible PDF error due to invalid CreationDate field (issue 663)
* Fixed crash when uploading non existing files (issue 941)
* Fixed possible crash when accessing inline frames (issue 947)
* Extended SSL ignore setting to synchronous XHR (issue 985)
* Fixed incorrect date handling in the cookies (issue 1068)
2013-01-06: Version 1.8.1
Critical bug fix:
* Mac OS X: Fix possible crash when using some TrueType fonts (issue 690)
2012-12-21: Version 1.8.0 "Blue Winter Rose"
New features
* Integrated GhostDriver as the WebDriver implementation (issue 49)
* Added an option to specify the SSL protocol (issue 174)
* Added encoding support for WebServer's response (issue 505)
* Added process ID (PID) to the System module (issue 769)
* Added properties to obtain page and frame title (issue 799)
* Added page navigation methods (issue 808)
* Added support for modifier keys in keyboard events (issue 835)
* Added onFilePicker callback for more generic file upload API (issue 843)
* Added the ability to set the page content and location (issue 909)
Improvements
* Fixed date parsing in ISO8601 format (issue 187, 267)
* Fixed window.location (issue 530, 632)
* Deregistered multiple callback handler (issue 807)
* Fixed sending of double-click events (issue 848)
* Increases maximum number of redirects (issue 849)
* Fixed keycodes sent for lowercase characters (issue 852)
* Fixed a regression in table row page break (issue 880)
* Completed the CoffeeScript version of the examples (issue 907)
* Updated Qt to version 4.8.4 (issue 918)
* Fixed potential hang in some example scripts (issue 922)
2012-09-22: Version 1.7.0 "Blazing Star"
New features
* Added a module system modelled after CommonJS/Node.js (issue 47)
* Added support for window pop-up (issue 151)
* Static build on Linux (issue 413)
* Added run-time detection of SSL support (issue 484)
* Added more events support (issue 492, 712)
* Added support for disabling automatic proxy detection (issue 580)
* Provided page closing callback (issue 678)
* Added methods to access URL, frames URL, frame Content (issue 758)
* Added more cookies-related API (issue 761)
Improvements
* Refactored command-line options handling (issue 55)
* Improved the workflow for producing release builds (issue 599)
* Improved cookies API and implementation (issue 603, 761)
* Improved frame switching API (issue 654)
* Fixed iframe handling regression (issue 683)
* Fixed OS version number with Windows 8 and Mountain Lion (issue 684, 688)
* Fixed HAR navigation info in the netsniff example (issue 733)
* Fixed compile warnings with Visual Studio (issue 744)
* Removed hacks for static linking on Windows (issue 753)
* Added ICO image handling on Windows (issue 779)
* Fixed font antialiasing on Windows (issue 785)
* Improved Jasmine test runner for Jasmine 1.2 (issue 792)
2012-07-22: Version 1.6.1
Bug fixes
* Don't build the deploy in debug mode (issue 599)
* Fixed building on Windows (issue 424)
* Fixed remote inspector when building statically (issue 430)
2012-06-20: Version 1.6.0 "Lavender"
New features
* Added support for passing arguments to WebPage's evaluate (issue 132)
* Added callbacks for JavaScript onConfirm and onPrompt (issue 133)
* Added stack trace when error occurs (issue 166)
* Added support for local storage path and quota (issue 300)
* Added initial support for cookies handling (issue 354)
* Added support for header footer when printing the page (issue 410, 512)
* Added headers support in the loading request (issue 452)
* Added support to render the web page as base64-encoded string (issue 547)
* Added hooks for navigation event (issue 562)
* Added command-line option to show debug messages (issue 575)
* Added support for the zoom factor for web page rendering (issue 579)
* Added crash reporter for Mac OS X and Linux, based on Google Breakpad (issue 576)
* Added 'os' object to the system module (issue 585)
* Added support for asynchronous evaluation (issue 593)
Improvements
* Fixed remote debugging to work on Mac OS X and Windows (issue 430)
* Fixed web server getting the dropped connection for empty response (issue 451)
* Fixed text rendered as boxes (squares) on headless Linux (issue 460)
* Updated Qt to version 4.8.2 (issue 495)
* Updated CoffeeScript compiler to version 1.3.3 (issue 496)
* Fixed the build script to detect and use MAKEFLAGS (issue 503)
* Fixed the build script to properly pass Qt config flags (issue 507)
* Changed Info.plist to be embedded in Mac OS X executable (issue 528)
* Fixed wrong module require in the imagebin example (issue 536)
* Fixed example scripts to exit with the right exit code (issue 544)
* Fixed build failure with glib 2.31.0+ (issue 559)
* Fixed error handler failures in some cases (issue 589)
* Fixed Twitter-related examples to work with the new site (issue 609)
2012-03-20: Version 1.5.0 "Ghost Flower"
New features
* Added interactive mode, also known as REPL (issue 252)
* Added setting for web security, to allow cross domain XHR (issue 28)
* Added error handler for WebPage object (issue 166)
* Added support for custom HTTP header in the network request (issue 77)
* Added support for read write encoding in the file system module (issue 367)
* Added remote debugging support on Linux (issue 6)
* Added support for proxy authentication (issue 105)
* Added System module, to retrieve environment variables (issue 271) and arguments (issue 276)
* Added fs.readLink function (issue 329)
* Added support for reading and writing binary data (issue 400)
* Added support to retrieve request data in the WebServer? module (issue 340)
* Added support for individual top/bottom/left/right print margins (issue 388)
* Added command-line option --help (issue 347)
* Added short command-line options -v and -h (issue 408)
* Removed support for Flash and other plugins (issue 418)
Bug fixes
* Fixed multiple console.log arguments (issue 36)
* Fixed file upload (issue 307)
* Fixed the web server instance to be asynchronous (issue 326) and still support Keep Alive (issue 416)
* Workaround Qt 4.8.0 crash due to empty URL scheme (issue 365)
* Fixed a Content-Type problem where POST does not work (issue 337)
* Fixed reading body request in the web server even without specific Content-Type (issue 439)
* Fixed Jasmine test runner with Jasmine 1.1 (issue 402)
* Fixed request URL formatting in the web server (issue 437)
* Don't display debugging and warning messages (issue 323)
2011-12-31: Version 1.4.1
Bug fixes
* Fix setting the proxy type (issue 266)
* Workaround for file upload regression (issue 307)
* Fix extraneous messsages in non-debug mode (issue 323)
2011-12-22: Version 1.4.0 "Glory of the Snow"
New features
* Added embedded HTTP server (issue 115)
* Added convenient build script for Linux (issue 197)
* Added support for SOCKS5 proxy (issue 266)
* Updated CoffeeScript compiler to version 1.2 (issue 312)
Bug fixes
* Fix potential crash in QUrl with Qt 4.8 (issue 304)
* Fix bug in CookieJar with QSettings and string (PyPhantomJS issue 10)
* Prevent showing the icon on Mac OS X Dock (issue 281)
Examples
* Added a new example to detect browsers sniffing (issue 263)
* Added HTTP server example (issue 115)
2011-09-23: Version 1.3.0 "Water Lily"
Bug fixes
* Fixed open() and POST method, without specifying the finished handler
* Fixed script execution warning dialog (issue 165)
* Added WebPage.release() to free the web page from memory (issue 154)
* Added special handling of about:blank (issue 235)
* Made a separate network access manager for each page (issue 190)
New features
* Introduced file system API based on CommonJS Filesystem proposal (issue 129)
* Added support for persistent cookies (issue 91)
* Added event handling, currently only for mouse events (issue 234)
* Added page scroll position (issue 162)
* Added HTTP authentication support (issue 45)
* Added callback for page initialization (issue 143)
* Added support to specify script and output encoding (issue 186)
* Added option to allow local content to do cross-domain access (issue 28)
* Added support to apply configurations from a JSON file (issue 180)
* Added a convenient WebPage initialization construction (issue 206)
* Added option to limit the size of disk cache (issue 220)
Examples
* Added a new example on using Modernizr to detect features (issue 144)
* Fixed pizza.js example to use Mobile Yelp (issue 200)
* Fixed netsniff.coffee example due to wrong indentation (issue 225)
* Added an example to show live network traffic (issue 227)
* Added an example demonstrating different output encodings (issue 186)
2011-06-21: Version 1.2.0 "Birds of Paradise"
Version 1.2.0 is a major update. It introduces a whole set of new API.
Bug fixes
* Fixed rendering a very large web page (issue 54)
* Fixed reporting of CoffeeScript compile error (issue 125)
New features
* Added callback for console message (issue 12)
* Improved security model via WebPage object (issue 41)
* Added support for POST, HEAD, PUT, and DELETE (issue 88)
* Scripts filename is now passed as phantom.scriptName
* Added callback to capture resource requests and responses (issue 2)
* Added the ability to load external JavaScript (issue 32)
Examples
* Ported examples to use WebPage object
* Added a new example to upload an image to imagebin.org
* Added a new example to show HTTP POST feature
* Added a new example to sniff network traffic and save it in HAR format
2011-04-27: Version 1.1.0 "Cherry Blossom"
Fixed the script loading to use UTF-8 encoding (Yasuhiro Matsumoto).
Added check for system proxy setting (Yasuhiro Matsumoto).
Fixed building with Cygwin and Qt 4.5 (John Dalton).
Added a new example: driver for QUnit tests (Łukasz Korecki).
Fixed issue #20: problem with JPG transparent color (Alessandro Portale).
Fixed issue #9: ignore first line starting with #! (Matthias, aka fourplusone).
Fixed issue #7: support for file upload for form submission (Matthias, aka fourplusone).
Fixed issue #35: support for disabling images loading (Ariya Hidayat).
Fixed issue #14: enable or disable plugins (Ariya Hidayat).
Added a new example: using Canvas to produce the color wheel (Ariya Hidayat).
Added support for rasterizing as GIF image (Ariya Hidayat).
Added support for CoffeeScript (Ariya Hidayat).
Fixed issue #19: option for setting the proxy (Clint Berry, Ariya Hidayat).
Python implementation using PyQt (James Roe).
Fixed issue #17: Specify paper size for PDF export (Alessandro Portale).
Fixed issue #60: Win32 and OS/2 icon files (Salvador Parra Camacho).
Added clipping rectangle to the render function (Wouter de Bie).
Added an example on sychronous waiting (Gabor Torok).
Added command line option to use disk cache (Jon Turner).
Added text extracting example (Weston Ruter).
Fixed issue #93: Build with Qt < 4.7 (Ariya Hidayat).
Ported all examples to CoffeeScript (Robert Gieseke).
2011-01-17: Version 1.0.0
Initial launch.
The API is centralized at the 'phantom' object (as child of
window object) which has the properties: args, content,
loadStatus, state, userAgent, version, viewportSize, and
the following functions: exit, open, render, sleep.
Several examples are included, among others: web page rasterizer,
weather service, headless test framework driver, and many others.

22
src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux64/LICENSE.BSD

@ -0,0 +1,22 @@
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the <organization> nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

29
src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux64/README.md

@ -0,0 +1,29 @@
# [PhantomJS](http://phantomjs.org) - Scriptable Headless WebKit
PhantomJS ([phantomjs.org](http://phantomjs.org)) is a headless WebKit scriptable with JavaScript. The latest [stable release](http://phantomjs.org/release-2.0.html) is version 2.0.
**Note**: Please **do not** create a GitHub pull request **without** reading the [Contribution Guide](https://github.com/ariya/phantomjs/blob/master/CONTRIBUTING.md) first. Failure to do so may result in the rejection of the pull request.
## Use Cases
- **Headless web testing**. Lightning-fast testing without the browser is now possible!
- **Page automation**. [Access and manipulate](http://phantomjs.org/page-automation.html) web pages with the standard DOM API, or with usual libraries like jQuery.
- **Screen capture**. Programmatically [capture web contents](http://phantomjs.org/screen-capture.html), including CSS, SVG and Canvas. Build server-side web graphics apps, from a screenshot service to a vector chart rasterizer.
- **Network monitoring**. Automate performance analysis, track [page loading](http://phantomjs.org/network-monitoring.html) and export as standard HAR format.
## Features
- **Multiplatform**, available on major operating systems: Windows, Mac OS X, Linux, and other Unices.
- **Fast and native implementation** of web standards: DOM, CSS, JavaScript, Canvas, and SVG. No emulation!
- **Pure headless (no X11) on Linux**, ideal for continuous integration systems. Also runs on Amazon EC2, Heroku, and Iron.io.
- **Easy to install**: [Download](http://phantomjs.org/download.html), unpack, and start having fun in just 5 minutes.
## Questions?
- Explore the complete [documentation](http://phantomjs.org/documentation/).
- Read tons of [user articles](http://phantomjs.org/buzz.html) on using PhantomJS.
- Join the [mailing-list](http://groups.google.com/group/phantomjs) and discuss with other PhantomJS fans.
PhantomJS is free software/open source, and is distributed under the [BSD license](http://opensource.org/licenses/BSD-3-Clause). It contains third-party code, see the included `third-party.txt` file for the license information on third-party code.
PhantomJS is created and maintained by [Ariya Hidayat](http://ariya.ofilabs.com/about) (Twitter: [@ariyahidayat](http://twitter.com/ariyahidayat)), with the help of [many contributors](https://github.com/ariya/phantomjs/contributors). Follow the official Twitter stream [@PhantomJS](http://twitter.com/PhantomJS) to get the frequent development updates.

BIN
src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux64/bin/phantomjs

Binary file not shown.

36
src/test/java/WEB-INF/assist/phantomjs/phantomjs-linux64/third-party.txt

@ -0,0 +1,36 @@
This document contains the list of Third Party Software included with
PhantomJS, along with the license information.
Third Party Software may impose additional restrictions and it is the
user's responsibility to ensure that they have met the licensing
requirements of PhantomJS and the relevant license of the Third Party
Software they are using.
Qt - http://qt-project.org/
License: GNU Lesser General Public License (LGPL) version 2.1.
Reference: http://qt-project.org/doc/qt-4.8/lgpl.html.
WebKit - http://www.webkit.org/
License: GNU Lesser General Public License (LGPL) version 2.1 and BSD.
Reference: http://www.webkit.org/coding/lgpl-license.html and
http://www.webkit.org/coding/bsd-license.html.
Mongoose - https://github.com/cesanta/mongoose
License: MIT
Reference: https://github.com/cesanta/mongoose/commit/abbf27338ef554cce0281ac157aa71a9c1b82a55
OpenSSL - http://www.openssl.org/
License: OpenSSL License, SSLeay License.
Reference: http://www.openssl.org/source/license.html.
Linenoise - https://github.com/tadmarshall/linenoise
License: BSD.
Reference: https://github.com/tadmarshall/linenoise/blob/master/linenoise.h.
QCommandLine - http://xf.iksaif.net/dev/qcommandline.html
License: GNU Lesser General Public License (LGPL) version 2.1.
Reference: http://dev.iksaif.net/projects/qcommandline/repository/revisions/master/entry/COPYING
wkhtmlpdf - http://code.google.com/p/wkhtmltopdf/
License: GNU Lesser General Public License (LGPL)
Reference: http://code.google.com/p/wkhtmltopdf/

401
src/test/java/WEB-INF/assist/phantomjs/phantomjs-macos/ChangeLog

@ -0,0 +1,401 @@
Please see also http://phantomjs.org/releases.html.
2016-01-23: Version 2.1.0
New features
* Upgraded Qt to 5.5.1 (issue #13377)
* Added support for SSL Client Authentication (issue #11275)
* Added support for context menu event (issue #11429)
* Allow remote debugging to use random port assigned by the OS (issue #13432)
Improvements
* Allow outer context to access arbitrary URLs (issue #11217)
* Fixed --local-storage-path and localStoragePath config option (issue #11596)
* Restored --local-url-access=no regression (issue #13412)
* Fixed an issue with loading JS modules contains a last-line comment (issue #12868)
* Fixed an issue with returning binary content in WebServer module (issue #13026)
* Fixed encoded URL loading on Windows (issue #12953)
* Fixed building with GCC 5 (issue #13518)
* Fixed file upload (issue #12506)
* Fixed latest OS detection (issue #13829)
2015-01-23: Version 2.0.0
New features
* Switched to Qt 5 and updated WebKit (issue 10448)
* Implemented clearing of memory cache (issue 10357)
* Added support for HTTP header change for every request (issue 11299)
Improvements
* Fixed rendering of CJK text by always linking the codecs (issue 10249)
* Ensured onResourceReceived is still fired on an error (issue 11163)
* Fixed possible crash in handling network requests (issue 11252)
* Removed hardcoded GhostDriver launching message (issue 12681)
* Allowed disk cache more than 2 GB (issue 12303)
Examples
* Netsniff example should exit when fails to load (issue 11333)
2014-01-25: Version 1.9.7
* Reverted to GhostDriver 1.1.0 instead of 1.1.1 (issue 11915)
* Fixed another warning of obsolete userSpaceScaleFactor on OS X 10.9 (issue 11612)
2014-01-20: Version 1.9.6
* Updated GhostDriver to version 1.1.1 (issue 11877, 11893)
2014-01-19: Version 1.9.3
* Fixed CoreText performance note on OS X 10.9 (issue 11418)
* Fixed warning of obsolete userSpaceScaleFactor on OS X 10.9 (issue 11612)
2013-09-06: Version 1.9.2
* Fixed graphical artifacts with transparent background on Windows (issue 11276, 11007, 11366)
* Updated GhostDriver to version 1.0.4 (issue 11452)
2013-06-04: Version 1.9.1
Critical bug fixes:
* Fixed problems with specifying proxy server (issue 10811, 11117)
* Fixed UTF-8 encoding with system.stdout and system.stderr (issue 11162)
* Ensured that onResourceReceived will be always invoked (issue 11163)
* Fixed module loading from an absolute path on Windows (issue 11165)
* Fixed typo in the command-line option for setting the cache size (11219)
* Fixed possible crash when handling network requests (issue 11252, 11338)
2013-03-20: Version 1.9.0 "Sakura"
New features
* Added spawn and execFile to execute external programs (issue 10219)
* Added the ability to abort network requests (issue 10230)
* Added system access to stdin, stdout, and stderr (issue 10333)
* Added support for custom CA certificates location (issue 10916)
* Added seek function to the File stream (issue 10937)
* Implemented file read for a specified number of bytes (issue 10938)
* Added a callback to handle network error (issue 10954, 10997)
* Added custom encoding support when opening a page (issue 11043)
* Implemented require.stub() support for a factory function (issue 11044)
* Added page loading indicator and progress (issue 11091)
* Added a timeout option for network requests (issue 11129)
Improvements
* Fixed the build on FreeBSD (issue 10597)
* Ensured a consistent 72 dpi for Linux headless rendering (issue 10659)
* Fixed possible PDF error due to invalid CreationDate field (issue 10663)
* Fixed crash when uploading non existing files (issue 10941)
* Improved the autocomplete internal of the interactive/REPL mode (issue 10943)
* Fixed possible crash when accessing inline frames (issue 10947)
* Changed Linux binary package setup to be built on CentOS 5 (issue 10963)
* Extended SSL ignore setting to synchronous XHR (issue 10985)
* Added convenient constants for modifier keys (issue 11056)
* Fixed incorrect date handling in the cookies (issue 11068)
* Updated GhostDriver to version 1.0.3 (issue 11146)
Examples
* Fixed invalid data URI in the netsniff example (issue 10740)
* Implemented a new weather example (issue 10794)
* Fixed rendering issues in render_multi_url (issue 11021)
* Fixed proper event sequence in page_events example (issue 11028)
* Miscellanous tweaks (issue 11082)
2013-03-02: Version 1.8.2
Critical bug fixes:
* Fixed possible PDF error due to invalid CreationDate field (issue 663)
* Fixed crash when uploading non existing files (issue 941)
* Fixed possible crash when accessing inline frames (issue 947)
* Extended SSL ignore setting to synchronous XHR (issue 985)
* Fixed incorrect date handling in the cookies (issue 1068)
2013-01-06: Version 1.8.1
Critical bug fix:
* Mac OS X: Fix possible crash when using some TrueType fonts (issue 690)
2012-12-21: Version 1.8.0 "Blue Winter Rose"
New features
* Integrated GhostDriver as the WebDriver implementation (issue 49)
* Added an option to specify the SSL protocol (issue 174)
* Added encoding support for WebServer's response (issue 505)
* Added process ID (PID) to the System module (issue 769)
* Added properties to obtain page and frame title (issue 799)
* Added page navigation methods (issue 808)
* Added support for modifier keys in keyboard events (issue 835)
* Added onFilePicker callback for more generic file upload API (issue 843)
* Added the ability to set the page content and location (issue 909)
Improvements
* Fixed date parsing in ISO8601 format (issue 187, 267)
* Fixed window.location (issue 530, 632)
* Deregistered multiple callback handler (issue 807)
* Fixed sending of double-click events (issue 848)
* Increases maximum number of redirects (issue 849)
* Fixed keycodes sent for lowercase characters (issue 852)
* Fixed a regression in table row page break (issue 880)
* Completed the CoffeeScript version of the examples (issue 907)
* Updated Qt to version 4.8.4 (issue 918)
* Fixed potential hang in some example scripts (issue 922)
2012-09-22: Version 1.7.0 "Blazing Star"
New features
* Added a module system modelled after CommonJS/Node.js (issue 47)
* Added support for window pop-up (issue 151)
* Static build on Linux (issue 413)
* Added run-time detection of SSL support (issue 484)
* Added more events support (issue 492, 712)
* Added support for disabling automatic proxy detection (issue 580)
* Provided page closing callback (issue 678)
* Added methods to access URL, frames URL, frame Content (issue 758)
* Added more cookies-related API (issue 761)
Improvements
* Refactored command-line options handling (issue 55)
* Improved the workflow for producing release builds (issue 599)
* Improved cookies API and implementation (issue 603, 761)
* Improved frame switching API (issue 654)
* Fixed iframe handling regression (issue 683)
* Fixed OS version number with Windows 8 and Mountain Lion (issue 684, 688)
* Fixed HAR navigation info in the netsniff example (issue 733)
* Fixed compile warnings with Visual Studio (issue 744)
* Removed hacks for static linking on Windows (issue 753)
* Added ICO image handling on Windows (issue 779)
* Fixed font antialiasing on Windows (issue 785)
* Improved Jasmine test runner for Jasmine 1.2 (issue 792)
2012-07-22: Version 1.6.1
Bug fixes
* Don't build the deploy in debug mode (issue 599)
* Fixed building on Windows (issue 424)
* Fixed remote inspector when building statically (issue 430)
2012-06-20: Version 1.6.0 "Lavender"
New features
* Added support for passing arguments to WebPage's evaluate (issue 132)
* Added callbacks for JavaScript onConfirm and onPrompt (issue 133)
* Added stack trace when error occurs (issue 166)
* Added support for local storage path and quota (issue 300)
* Added initial support for cookies handling (issue 354)
* Added support for header footer when printing the page (issue 410, 512)
* Added headers support in the loading request (issue 452)
* Added support to render the web page as base64-encoded string (issue 547)
* Added hooks for navigation event (issue 562)
* Added command-line option to show debug messages (issue 575)
* Added support for the zoom factor for web page rendering (issue 579)
* Added crash reporter for Mac OS X and Linux, based on Google Breakpad (issue 576)
* Added 'os' object to the system module (issue 585)
* Added support for asynchronous evaluation (issue 593)
Improvements
* Fixed remote debugging to work on Mac OS X and Windows (issue 430)
* Fixed web server getting the dropped connection for empty response (issue 451)
* Fixed text rendered as boxes (squares) on headless Linux (issue 460)
* Updated Qt to version 4.8.2 (issue 495)
* Updated CoffeeScript compiler to version 1.3.3 (issue 496)
* Fixed the build script to detect and use MAKEFLAGS (issue 503)
* Fixed the build script to properly pass Qt config flags (issue 507)
* Changed Info.plist to be embedded in Mac OS X executable (issue 528)
* Fixed wrong module require in the imagebin example (issue 536)
* Fixed example scripts to exit with the right exit code (issue 544)
* Fixed build failure with glib 2.31.0+ (issue 559)
* Fixed error handler failures in some cases (issue 589)
* Fixed Twitter-related examples to work with the new site (issue 609)
2012-03-20: Version 1.5.0 "Ghost Flower"
New features
* Added interactive mode, also known as REPL (issue 252)
* Added setting for web security, to allow cross domain XHR (issue 28)
* Added error handler for WebPage object (issue 166)
* Added support for custom HTTP header in the network request (issue 77)
* Added support for read write encoding in the file system module (issue 367)
* Added remote debugging support on Linux (issue 6)
* Added support for proxy authentication (issue 105)
* Added System module, to retrieve environment variables (issue 271) and arguments (issue 276)
* Added fs.readLink function (issue 329)
* Added support for reading and writing binary data (issue 400)
* Added support to retrieve request data in the WebServer? module (issue 340)
* Added support for individual top/bottom/left/right print margins (issue 388)
* Added command-line option --help (issue 347)
* Added short command-line options -v and -h (issue 408)
* Removed support for Flash and other plugins (issue 418)
Bug fixes
* Fixed multiple console.log arguments (issue 36)
* Fixed file upload (issue 307)
* Fixed the web server instance to be asynchronous (issue 326) and still support Keep Alive (issue 416)
* Workaround Qt 4.8.0 crash due to empty URL scheme (issue 365)
* Fixed a Content-Type problem where POST does not work (issue 337)
* Fixed reading body request in the web server even without specific Content-Type (issue 439)
* Fixed Jasmine test runner with Jasmine 1.1 (issue 402)
* Fixed request URL formatting in the web server (issue 437)
* Don't display debugging and warning messages (issue 323)
2011-12-31: Version 1.4.1
Bug fixes
* Fix setting the proxy type (issue 266)
* Workaround for file upload regression (issue 307)
* Fix extraneous messsages in non-debug mode (issue 323)
2011-12-22: Version 1.4.0 "Glory of the Snow"
New features
* Added embedded HTTP server (issue 115)
* Added convenient build script for Linux (issue 197)
* Added support for SOCKS5 proxy (issue 266)
* Updated CoffeeScript compiler to version 1.2 (issue 312)
Bug fixes
* Fix potential crash in QUrl with Qt 4.8 (issue 304)
* Fix bug in CookieJar with QSettings and string (PyPhantomJS issue 10)
* Prevent showing the icon on Mac OS X Dock (issue 281)
Examples
* Added a new example to detect browsers sniffing (issue 263)
* Added HTTP server example (issue 115)
2011-09-23: Version 1.3.0 "Water Lily"
Bug fixes
* Fixed open() and POST method, without specifying the finished handler
* Fixed script execution warning dialog (issue 165)
* Added WebPage.release() to free the web page from memory (issue 154)
* Added special handling of about:blank (issue 235)
* Made a separate network access manager for each page (issue 190)
New features
* Introduced file system API based on CommonJS Filesystem proposal (issue 129)
* Added support for persistent cookies (issue 91)
* Added event handling, currently only for mouse events (issue 234)
* Added page scroll position (issue 162)
* Added HTTP authentication support (issue 45)
* Added callback for page initialization (issue 143)
* Added support to specify script and output encoding (issue 186)
* Added option to allow local content to do cross-domain access (issue 28)
* Added support to apply configurations from a JSON file (issue 180)
* Added a convenient WebPage initialization construction (issue 206)
* Added option to limit the size of disk cache (issue 220)
Examples
* Added a new example on using Modernizr to detect features (issue 144)
* Fixed pizza.js example to use Mobile Yelp (issue 200)
* Fixed netsniff.coffee example due to wrong indentation (issue 225)
* Added an example to show live network traffic (issue 227)
* Added an example demonstrating different output encodings (issue 186)
2011-06-21: Version 1.2.0 "Birds of Paradise"
Version 1.2.0 is a major update. It introduces a whole set of new API.
Bug fixes
* Fixed rendering a very large web page (issue 54)
* Fixed reporting of CoffeeScript compile error (issue 125)
New features
* Added callback for console message (issue 12)
* Improved security model via WebPage object (issue 41)
* Added support for POST, HEAD, PUT, and DELETE (issue 88)
* Scripts filename is now passed as phantom.scriptName
* Added callback to capture resource requests and responses (issue 2)
* Added the ability to load external JavaScript (issue 32)
Examples
* Ported examples to use WebPage object
* Added a new example to upload an image to imagebin.org
* Added a new example to show HTTP POST feature
* Added a new example to sniff network traffic and save it in HAR format
2011-04-27: Version 1.1.0 "Cherry Blossom"
Fixed the script loading to use UTF-8 encoding (Yasuhiro Matsumoto).
Added check for system proxy setting (Yasuhiro Matsumoto).
Fixed building with Cygwin and Qt 4.5 (John Dalton).
Added a new example: driver for QUnit tests (Łukasz Korecki).
Fixed issue #20: problem with JPG transparent color (Alessandro Portale).
Fixed issue #9: ignore first line starting with #! (Matthias, aka fourplusone).
Fixed issue #7: support for file upload for form submission (Matthias, aka fourplusone).
Fixed issue #35: support for disabling images loading (Ariya Hidayat).
Fixed issue #14: enable or disable plugins (Ariya Hidayat).
Added a new example: using Canvas to produce the color wheel (Ariya Hidayat).
Added support for rasterizing as GIF image (Ariya Hidayat).
Added support for CoffeeScript (Ariya Hidayat).
Fixed issue #19: option for setting the proxy (Clint Berry, Ariya Hidayat).
Python implementation using PyQt (James Roe).
Fixed issue #17: Specify paper size for PDF export (Alessandro Portale).
Fixed issue #60: Win32 and OS/2 icon files (Salvador Parra Camacho).
Added clipping rectangle to the render function (Wouter de Bie).
Added an example on sychronous waiting (Gabor Torok).
Added command line option to use disk cache (Jon Turner).
Added text extracting example (Weston Ruter).
Fixed issue #93: Build with Qt < 4.7 (Ariya Hidayat).
Ported all examples to CoffeeScript (Robert Gieseke).
2011-01-17: Version 1.0.0
Initial launch.
The API is centralized at the 'phantom' object (as child of
window object) which has the properties: args, content,
loadStatus, state, userAgent, version, viewportSize, and
the following functions: exit, open, render, sleep.
Several examples are included, among others: web page rasterizer,
weather service, headless test framework driver, and many others.

22
src/test/java/WEB-INF/assist/phantomjs/phantomjs-macos/LICENSE.BSD

@ -0,0 +1,22 @@
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the <organization> nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

29
src/test/java/WEB-INF/assist/phantomjs/phantomjs-macos/README.md

@ -0,0 +1,29 @@
# [PhantomJS](http://phantomjs.org) - Scriptable Headless WebKit
PhantomJS ([phantomjs.org](http://phantomjs.org)) is a headless WebKit scriptable with JavaScript. The latest [stable release](http://phantomjs.org/release-2.0.html) is version 2.0.
**Note**: Please **do not** create a GitHub pull request **without** reading the [Contribution Guide](https://github.com/ariya/phantomjs/blob/master/CONTRIBUTING.md) first. Failure to do so may result in the rejection of the pull request.
## Use Cases
- **Headless web testing**. Lightning-fast testing without the browser is now possible!
- **Page automation**. [Access and manipulate](http://phantomjs.org/page-automation.html) web pages with the standard DOM API, or with usual libraries like jQuery.
- **Screen capture**. Programmatically [capture web contents](http://phantomjs.org/screen-capture.html), including CSS, SVG and Canvas. Build server-side web graphics apps, from a screenshot service to a vector chart rasterizer.
- **Network monitoring**. Automate performance analysis, track [page loading](http://phantomjs.org/network-monitoring.html) and export as standard HAR format.
## Features
- **Multiplatform**, available on major operating systems: Windows, Mac OS X, Linux, and other Unices.
- **Fast and native implementation** of web standards: DOM, CSS, JavaScript, Canvas, and SVG. No emulation!
- **Pure headless (no X11) on Linux**, ideal for continuous integration systems. Also runs on Amazon EC2, Heroku, and Iron.io.
- **Easy to install**: [Download](http://phantomjs.org/download.html), unpack, and start having fun in just 5 minutes.
## Questions?
- Explore the complete [documentation](http://phantomjs.org/documentation/).
- Read tons of [user articles](http://phantomjs.org/buzz.html) on using PhantomJS.
- Join the [mailing-list](http://groups.google.com/group/phantomjs) and discuss with other PhantomJS fans.
PhantomJS is free software/open source, and is distributed under the [BSD license](http://opensource.org/licenses/BSD-3-Clause). It contains third-party code, see the included `third-party.txt` file for the license information on third-party code.
PhantomJS is created and maintained by [Ariya Hidayat](http://ariya.ofilabs.com/about) (Twitter: [@ariyahidayat](http://twitter.com/ariyahidayat)), with the help of [many contributors](https://github.com/ariya/phantomjs/contributors). Follow the official Twitter stream [@PhantomJS](http://twitter.com/PhantomJS) to get the frequent development updates.

BIN
src/test/java/WEB-INF/assist/phantomjs/phantomjs-macos/bin/phantomjs

Binary file not shown.

36
src/test/java/WEB-INF/assist/phantomjs/phantomjs-macos/third-party.txt

@ -0,0 +1,36 @@
This document contains the list of Third Party Software included with
PhantomJS, along with the license information.
Third Party Software may impose additional restrictions and it is the
user's responsibility to ensure that they have met the licensing
requirements of PhantomJS and the relevant license of the Third Party
Software they are using.
Qt - http://qt-project.org/
License: GNU Lesser General Public License (LGPL) version 2.1.
Reference: http://qt-project.org/doc/qt-4.8/lgpl.html.
WebKit - http://www.webkit.org/
License: GNU Lesser General Public License (LGPL) version 2.1 and BSD.
Reference: http://www.webkit.org/coding/lgpl-license.html and
http://www.webkit.org/coding/bsd-license.html.
Mongoose - https://github.com/cesanta/mongoose
License: MIT
Reference: https://github.com/cesanta/mongoose/commit/abbf27338ef554cce0281ac157aa71a9c1b82a55
OpenSSL - http://www.openssl.org/
License: OpenSSL License, SSLeay License.
Reference: http://www.openssl.org/source/license.html.
Linenoise - https://github.com/tadmarshall/linenoise
License: BSD.
Reference: https://github.com/tadmarshall/linenoise/blob/master/linenoise.h.
QCommandLine - http://xf.iksaif.net/dev/qcommandline.html
License: GNU Lesser General Public License (LGPL) version 2.1.
Reference: http://dev.iksaif.net/projects/qcommandline/repository/revisions/master/entry/COPYING
wkhtmlpdf - http://code.google.com/p/wkhtmltopdf/
License: GNU Lesser General Public License (LGPL)
Reference: http://code.google.com/p/wkhtmltopdf/

401
src/test/java/WEB-INF/assist/phantomjs/phantomjs-windows/ChangeLog

@ -0,0 +1,401 @@
Please see also http://phantomjs.org/releases.html.
2016-01-23: Version 2.1.0
New features
* Upgraded Qt to 5.5.1 (issue #13377)
* Added support for SSL Client Authentication (issue #11275)
* Added support for context menu event (issue #11429)
* Allow remote debugging to use random port assigned by the OS (issue #13432)
Improvements
* Allow outer context to access arbitrary URLs (issue #11217)
* Fixed --local-storage-path and localStoragePath config option (issue #11596)
* Restored --local-url-access=no regression (issue #13412)
* Fixed an issue with loading JS modules contains a last-line comment (issue #12868)
* Fixed an issue with returning binary content in WebServer module (issue #13026)
* Fixed encoded URL loading on Windows (issue #12953)
* Fixed building with GCC 5 (issue #13518)
* Fixed file upload (issue #12506)
* Fixed latest OS detection (issue #13829)
2015-01-23: Version 2.0.0
New features
* Switched to Qt 5 and updated WebKit (issue 10448)
* Implemented clearing of memory cache (issue 10357)
* Added support for HTTP header change for every request (issue 11299)
Improvements
* Fixed rendering of CJK text by always linking the codecs (issue 10249)
* Ensured onResourceReceived is still fired on an error (issue 11163)
* Fixed possible crash in handling network requests (issue 11252)
* Removed hardcoded GhostDriver launching message (issue 12681)
* Allowed disk cache more than 2 GB (issue 12303)
Examples
* Netsniff example should exit when fails to load (issue 11333)
2014-01-25: Version 1.9.7
* Reverted to GhostDriver 1.1.0 instead of 1.1.1 (issue 11915)
* Fixed another warning of obsolete userSpaceScaleFactor on OS X 10.9 (issue 11612)
2014-01-20: Version 1.9.6
* Updated GhostDriver to version 1.1.1 (issue 11877, 11893)
2014-01-19: Version 1.9.3
* Fixed CoreText performance note on OS X 10.9 (issue 11418)
* Fixed warning of obsolete userSpaceScaleFactor on OS X 10.9 (issue 11612)
2013-09-06: Version 1.9.2
* Fixed graphical artifacts with transparent background on Windows (issue 11276, 11007, 11366)
* Updated GhostDriver to version 1.0.4 (issue 11452)
2013-06-04: Version 1.9.1
Critical bug fixes:
* Fixed problems with specifying proxy server (issue 10811, 11117)
* Fixed UTF-8 encoding with system.stdout and system.stderr (issue 11162)
* Ensured that onResourceReceived will be always invoked (issue 11163)
* Fixed module loading from an absolute path on Windows (issue 11165)
* Fixed typo in the command-line option for setting the cache size (11219)
* Fixed possible crash when handling network requests (issue 11252, 11338)
2013-03-20: Version 1.9.0 "Sakura"
New features
* Added spawn and execFile to execute external programs (issue 10219)
* Added the ability to abort network requests (issue 10230)
* Added system access to stdin, stdout, and stderr (issue 10333)
* Added support for custom CA certificates location (issue 10916)
* Added seek function to the File stream (issue 10937)
* Implemented file read for a specified number of bytes (issue 10938)
* Added a callback to handle network error (issue 10954, 10997)
* Added custom encoding support when opening a page (issue 11043)
* Implemented require.stub() support for a factory function (issue 11044)
* Added page loading indicator and progress (issue 11091)
* Added a timeout option for network requests (issue 11129)
Improvements
* Fixed the build on FreeBSD (issue 10597)
* Ensured a consistent 72 dpi for Linux headless rendering (issue 10659)
* Fixed possible PDF error due to invalid CreationDate field (issue 10663)
* Fixed crash when uploading non existing files (issue 10941)
* Improved the autocomplete internal of the interactive/REPL mode (issue 10943)
* Fixed possible crash when accessing inline frames (issue 10947)
* Changed Linux binary package setup to be built on CentOS 5 (issue 10963)
* Extended SSL ignore setting to synchronous XHR (issue 10985)
* Added convenient constants for modifier keys (issue 11056)
* Fixed incorrect date handling in the cookies (issue 11068)
* Updated GhostDriver to version 1.0.3 (issue 11146)
Examples
* Fixed invalid data URI in the netsniff example (issue 10740)
* Implemented a new weather example (issue 10794)
* Fixed rendering issues in render_multi_url (issue 11021)
* Fixed proper event sequence in page_events example (issue 11028)
* Miscellanous tweaks (issue 11082)
2013-03-02: Version 1.8.2
Critical bug fixes:
* Fixed possible PDF error due to invalid CreationDate field (issue 663)
* Fixed crash when uploading non existing files (issue 941)
* Fixed possible crash when accessing inline frames (issue 947)
* Extended SSL ignore setting to synchronous XHR (issue 985)
* Fixed incorrect date handling in the cookies (issue 1068)
2013-01-06: Version 1.8.1
Critical bug fix:
* Mac OS X: Fix possible crash when using some TrueType fonts (issue 690)
2012-12-21: Version 1.8.0 "Blue Winter Rose"
New features
* Integrated GhostDriver as the WebDriver implementation (issue 49)
* Added an option to specify the SSL protocol (issue 174)
* Added encoding support for WebServer's response (issue 505)
* Added process ID (PID) to the System module (issue 769)
* Added properties to obtain page and frame title (issue 799)
* Added page navigation methods (issue 808)
* Added support for modifier keys in keyboard events (issue 835)
* Added onFilePicker callback for more generic file upload API (issue 843)
* Added the ability to set the page content and location (issue 909)
Improvements
* Fixed date parsing in ISO8601 format (issue 187, 267)
* Fixed window.location (issue 530, 632)
* Deregistered multiple callback handler (issue 807)
* Fixed sending of double-click events (issue 848)
* Increases maximum number of redirects (issue 849)
* Fixed keycodes sent for lowercase characters (issue 852)
* Fixed a regression in table row page break (issue 880)
* Completed the CoffeeScript version of the examples (issue 907)
* Updated Qt to version 4.8.4 (issue 918)
* Fixed potential hang in some example scripts (issue 922)
2012-09-22: Version 1.7.0 "Blazing Star"
New features
* Added a module system modelled after CommonJS/Node.js (issue 47)
* Added support for window pop-up (issue 151)
* Static build on Linux (issue 413)
* Added run-time detection of SSL support (issue 484)
* Added more events support (issue 492, 712)
* Added support for disabling automatic proxy detection (issue 580)
* Provided page closing callback (issue 678)
* Added methods to access URL, frames URL, frame Content (issue 758)
* Added more cookies-related API (issue 761)
Improvements
* Refactored command-line options handling (issue 55)
* Improved the workflow for producing release builds (issue 599)
* Improved cookies API and implementation (issue 603, 761)
* Improved frame switching API (issue 654)
* Fixed iframe handling regression (issue 683)
* Fixed OS version number with Windows 8 and Mountain Lion (issue 684, 688)
* Fixed HAR navigation info in the netsniff example (issue 733)
* Fixed compile warnings with Visual Studio (issue 744)
* Removed hacks for static linking on Windows (issue 753)
* Added ICO image handling on Windows (issue 779)
* Fixed font antialiasing on Windows (issue 785)
* Improved Jasmine test runner for Jasmine 1.2 (issue 792)
2012-07-22: Version 1.6.1
Bug fixes
* Don't build the deploy in debug mode (issue 599)
* Fixed building on Windows (issue 424)
* Fixed remote inspector when building statically (issue 430)
2012-06-20: Version 1.6.0 "Lavender"
New features
* Added support for passing arguments to WebPage's evaluate (issue 132)
* Added callbacks for JavaScript onConfirm and onPrompt (issue 133)
* Added stack trace when error occurs (issue 166)
* Added support for local storage path and quota (issue 300)
* Added initial support for cookies handling (issue 354)
* Added support for header footer when printing the page (issue 410, 512)
* Added headers support in the loading request (issue 452)
* Added support to render the web page as base64-encoded string (issue 547)
* Added hooks for navigation event (issue 562)
* Added command-line option to show debug messages (issue 575)
* Added support for the zoom factor for web page rendering (issue 579)
* Added crash reporter for Mac OS X and Linux, based on Google Breakpad (issue 576)
* Added 'os' object to the system module (issue 585)
* Added support for asynchronous evaluation (issue 593)
Improvements
* Fixed remote debugging to work on Mac OS X and Windows (issue 430)
* Fixed web server getting the dropped connection for empty response (issue 451)
* Fixed text rendered as boxes (squares) on headless Linux (issue 460)
* Updated Qt to version 4.8.2 (issue 495)
* Updated CoffeeScript compiler to version 1.3.3 (issue 496)
* Fixed the build script to detect and use MAKEFLAGS (issue 503)
* Fixed the build script to properly pass Qt config flags (issue 507)
* Changed Info.plist to be embedded in Mac OS X executable (issue 528)
* Fixed wrong module require in the imagebin example (issue 536)
* Fixed example scripts to exit with the right exit code (issue 544)
* Fixed build failure with glib 2.31.0+ (issue 559)
* Fixed error handler failures in some cases (issue 589)
* Fixed Twitter-related examples to work with the new site (issue 609)
2012-03-20: Version 1.5.0 "Ghost Flower"
New features
* Added interactive mode, also known as REPL (issue 252)
* Added setting for web security, to allow cross domain XHR (issue 28)
* Added error handler for WebPage object (issue 166)
* Added support for custom HTTP header in the network request (issue 77)
* Added support for read write encoding in the file system module (issue 367)
* Added remote debugging support on Linux (issue 6)
* Added support for proxy authentication (issue 105)
* Added System module, to retrieve environment variables (issue 271) and arguments (issue 276)
* Added fs.readLink function (issue 329)
* Added support for reading and writing binary data (issue 400)
* Added support to retrieve request data in the WebServer? module (issue 340)
* Added support for individual top/bottom/left/right print margins (issue 388)
* Added command-line option --help (issue 347)
* Added short command-line options -v and -h (issue 408)
* Removed support for Flash and other plugins (issue 418)
Bug fixes
* Fixed multiple console.log arguments (issue 36)
* Fixed file upload (issue 307)
* Fixed the web server instance to be asynchronous (issue 326) and still support Keep Alive (issue 416)
* Workaround Qt 4.8.0 crash due to empty URL scheme (issue 365)
* Fixed a Content-Type problem where POST does not work (issue 337)
* Fixed reading body request in the web server even without specific Content-Type (issue 439)
* Fixed Jasmine test runner with Jasmine 1.1 (issue 402)
* Fixed request URL formatting in the web server (issue 437)
* Don't display debugging and warning messages (issue 323)
2011-12-31: Version 1.4.1
Bug fixes
* Fix setting the proxy type (issue 266)
* Workaround for file upload regression (issue 307)
* Fix extraneous messsages in non-debug mode (issue 323)
2011-12-22: Version 1.4.0 "Glory of the Snow"
New features
* Added embedded HTTP server (issue 115)
* Added convenient build script for Linux (issue 197)
* Added support for SOCKS5 proxy (issue 266)
* Updated CoffeeScript compiler to version 1.2 (issue 312)
Bug fixes
* Fix potential crash in QUrl with Qt 4.8 (issue 304)
* Fix bug in CookieJar with QSettings and string (PyPhantomJS issue 10)
* Prevent showing the icon on Mac OS X Dock (issue 281)
Examples
* Added a new example to detect browsers sniffing (issue 263)
* Added HTTP server example (issue 115)
2011-09-23: Version 1.3.0 "Water Lily"
Bug fixes
* Fixed open() and POST method, without specifying the finished handler
* Fixed script execution warning dialog (issue 165)
* Added WebPage.release() to free the web page from memory (issue 154)
* Added special handling of about:blank (issue 235)
* Made a separate network access manager for each page (issue 190)
New features
* Introduced file system API based on CommonJS Filesystem proposal (issue 129)
* Added support for persistent cookies (issue 91)
* Added event handling, currently only for mouse events (issue 234)
* Added page scroll position (issue 162)
* Added HTTP authentication support (issue 45)
* Added callback for page initialization (issue 143)
* Added support to specify script and output encoding (issue 186)
* Added option to allow local content to do cross-domain access (issue 28)
* Added support to apply configurations from a JSON file (issue 180)
* Added a convenient WebPage initialization construction (issue 206)
* Added option to limit the size of disk cache (issue 220)
Examples
* Added a new example on using Modernizr to detect features (issue 144)
* Fixed pizza.js example to use Mobile Yelp (issue 200)
* Fixed netsniff.coffee example due to wrong indentation (issue 225)
* Added an example to show live network traffic (issue 227)
* Added an example demonstrating different output encodings (issue 186)
2011-06-21: Version 1.2.0 "Birds of Paradise"
Version 1.2.0 is a major update. It introduces a whole set of new API.
Bug fixes
* Fixed rendering a very large web page (issue 54)
* Fixed reporting of CoffeeScript compile error (issue 125)
New features
* Added callback for console message (issue 12)
* Improved security model via WebPage object (issue 41)
* Added support for POST, HEAD, PUT, and DELETE (issue 88)
* Scripts filename is now passed as phantom.scriptName
* Added callback to capture resource requests and responses (issue 2)
* Added the ability to load external JavaScript (issue 32)
Examples
* Ported examples to use WebPage object
* Added a new example to upload an image to imagebin.org
* Added a new example to show HTTP POST feature
* Added a new example to sniff network traffic and save it in HAR format
2011-04-27: Version 1.1.0 "Cherry Blossom"
Fixed the script loading to use UTF-8 encoding (Yasuhiro Matsumoto).
Added check for system proxy setting (Yasuhiro Matsumoto).
Fixed building with Cygwin and Qt 4.5 (John Dalton).
Added a new example: driver for QUnit tests (Łukasz Korecki).
Fixed issue #20: problem with JPG transparent color (Alessandro Portale).
Fixed issue #9: ignore first line starting with #! (Matthias, aka fourplusone).
Fixed issue #7: support for file upload for form submission (Matthias, aka fourplusone).
Fixed issue #35: support for disabling images loading (Ariya Hidayat).
Fixed issue #14: enable or disable plugins (Ariya Hidayat).
Added a new example: using Canvas to produce the color wheel (Ariya Hidayat).
Added support for rasterizing as GIF image (Ariya Hidayat).
Added support for CoffeeScript (Ariya Hidayat).
Fixed issue #19: option for setting the proxy (Clint Berry, Ariya Hidayat).
Python implementation using PyQt (James Roe).
Fixed issue #17: Specify paper size for PDF export (Alessandro Portale).
Fixed issue #60: Win32 and OS/2 icon files (Salvador Parra Camacho).
Added clipping rectangle to the render function (Wouter de Bie).
Added an example on sychronous waiting (Gabor Torok).
Added command line option to use disk cache (Jon Turner).
Added text extracting example (Weston Ruter).
Fixed issue #93: Build with Qt < 4.7 (Ariya Hidayat).
Ported all examples to CoffeeScript (Robert Gieseke).
2011-01-17: Version 1.0.0
Initial launch.
The API is centralized at the 'phantom' object (as child of
window object) which has the properties: args, content,
loadStatus, state, userAgent, version, viewportSize, and
the following functions: exit, open, render, sleep.
Several examples are included, among others: web page rasterizer,
weather service, headless test framework driver, and many others.

22
src/test/java/WEB-INF/assist/phantomjs/phantomjs-windows/LICENSE.BSD

@ -0,0 +1,22 @@
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the <organization> nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

29
src/test/java/WEB-INF/assist/phantomjs/phantomjs-windows/README.md

@ -0,0 +1,29 @@
# [PhantomJS](http://phantomjs.org) - Scriptable Headless WebKit
PhantomJS ([phantomjs.org](http://phantomjs.org)) is a headless WebKit scriptable with JavaScript. The latest [stable release](http://phantomjs.org/release-2.0.html) is version 2.0.
**Note**: Please **do not** create a GitHub pull request **without** reading the [Contribution Guide](https://github.com/ariya/phantomjs/blob/master/CONTRIBUTING.md) first. Failure to do so may result in the rejection of the pull request.
## Use Cases
- **Headless web testing**. Lightning-fast testing without the browser is now possible!
- **Page automation**. [Access and manipulate](http://phantomjs.org/page-automation.html) web pages with the standard DOM API, or with usual libraries like jQuery.
- **Screen capture**. Programmatically [capture web contents](http://phantomjs.org/screen-capture.html), including CSS, SVG and Canvas. Build server-side web graphics apps, from a screenshot service to a vector chart rasterizer.
- **Network monitoring**. Automate performance analysis, track [page loading](http://phantomjs.org/network-monitoring.html) and export as standard HAR format.
## Features
- **Multiplatform**, available on major operating systems: Windows, Mac OS X, Linux, and other Unices.
- **Fast and native implementation** of web standards: DOM, CSS, JavaScript, Canvas, and SVG. No emulation!
- **Pure headless (no X11) on Linux**, ideal for continuous integration systems. Also runs on Amazon EC2, Heroku, and Iron.io.
- **Easy to install**: [Download](http://phantomjs.org/download.html), unpack, and start having fun in just 5 minutes.
## Questions?
- Explore the complete [documentation](http://phantomjs.org/documentation/).
- Read tons of [user articles](http://phantomjs.org/buzz.html) on using PhantomJS.
- Join the [mailing-list](http://groups.google.com/group/phantomjs) and discuss with other PhantomJS fans.
PhantomJS is free software/open source, and is distributed under the [BSD license](http://opensource.org/licenses/BSD-3-Clause). It contains third-party code, see the included `third-party.txt` file for the license information on third-party code.
PhantomJS is created and maintained by [Ariya Hidayat](http://ariya.ofilabs.com/about) (Twitter: [@ariyahidayat](http://twitter.com/ariyahidayat)), with the help of [many contributors](https://github.com/ariya/phantomjs/contributors). Follow the official Twitter stream [@PhantomJS](http://twitter.com/PhantomJS) to get the frequent development updates.

BIN
src/test/java/WEB-INF/assist/phantomjs/phantomjs-windows/bin/phantomjs.exe

Binary file not shown.

36
src/test/java/WEB-INF/assist/phantomjs/phantomjs-windows/third-party.txt

@ -0,0 +1,36 @@
This document contains the list of Third Party Software included with
PhantomJS, along with the license information.
Third Party Software may impose additional restrictions and it is the
user's responsibility to ensure that they have met the licensing
requirements of PhantomJS and the relevant license of the Third Party
Software they are using.
Qt - http://qt-project.org/
License: GNU Lesser General Public License (LGPL) version 2.1.
Reference: http://qt-project.org/doc/qt-4.8/lgpl.html.
WebKit - http://www.webkit.org/
License: GNU Lesser General Public License (LGPL) version 2.1 and BSD.
Reference: http://www.webkit.org/coding/lgpl-license.html and
http://www.webkit.org/coding/bsd-license.html.
Mongoose - https://github.com/cesanta/mongoose
License: MIT
Reference: https://github.com/cesanta/mongoose/commit/abbf27338ef554cce0281ac157aa71a9c1b82a55
OpenSSL - http://www.openssl.org/
License: OpenSSL License, SSLeay License.
Reference: http://www.openssl.org/source/license.html.
Linenoise - https://github.com/tadmarshall/linenoise
License: BSD.
Reference: https://github.com/tadmarshall/linenoise/blob/master/linenoise.h.
QCommandLine - http://xf.iksaif.net/dev/qcommandline.html
License: GNU Lesser General Public License (LGPL) version 2.1.
Reference: http://dev.iksaif.net/projects/qcommandline/repository/revisions/master/entry/COPYING
wkhtmlpdf - http://code.google.com/p/wkhtmltopdf/
License: GNU Lesser General Public License (LGPL)
Reference: http://code.google.com/p/wkhtmltopdf/

BIN
src/test/java/WEB-INF/assist/phantomjs/phantomjs-winxp/bin/phantomjs.exe

Binary file not shown.

43
src/test/java/WEB-INF/reportlets/demo.cpt

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<WorkBook xmlVersion="20170720" releaseVersion="10.0.0">
<Report class="com.fr.report.worksheet.WorkSheet" name="sheet1">
<ReportPageAttr>
<HR/>
<FR/>
<HC/>
<FC/>
</ReportPageAttr>
<ColumnPrivilegeControl/>
<RowPrivilegeControl/>
<RowHeight defaultValue="723900">
<![CDATA[723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900]]></RowHeight>
<ColumnWidth defaultValue="2743200">
<![CDATA[2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200]]></ColumnWidth>
<CellElementList>
<C c="0" r="0">
<O>
<![CDATA[demo]]></O>
<PrivilegeControl/>
<Expand/>
</C>
</CellElementList>
<ReportAttrSet>
<ReportSettings headerHeight="0" footerHeight="0">
<PaperSetting/>
<Background name="ColorBackground" color="-1"/>
</ReportSettings>
</ReportAttrSet>
<PrivilegeControl/>
</Report>
<ReportParameterAttr>
<Attributes showWindow="true" delayPlaying="true" windowPosition="1" align="0" useParamsTemplate="true"/>
<PWTitle>
<![CDATA[参数]]></PWTitle>
</ReportParameterAttr>
<StyleList/>
<DesignerVersion DesignerVersion="KAA"/>
<PreviewType PreviewType="0"/>
<TemplateIdAttMark class="com.fr.base.iofile.attr.TemplateIdAttrMark">
<TemplateIdAttMark TemplateId="ed34da3d-9031-4ce5-8576-166d8a3bcc3d"/>
</TemplateIdAttMark>
</WorkBook>

80
src/test/java/com/fr/demo/ModuleStartTest.java

@ -0,0 +1,80 @@
package com.fr.demo;
import com.fr.base.operator.common.CommonOperator;
import com.fr.chart.activator.ChartBaseActivator;
import com.fr.cluster.engine.activator.standalone.StandaloneModeActivator;
import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator;
import com.fr.env.operator.CommonOperatorImpl;
import com.fr.general.FRLogger;
import com.fr.general.I18nResource;
import com.fr.io.TemplateWorkBookIO;
import com.fr.log.FineLoggerFactory;
import com.fr.log.LogHandler;
import com.fr.main.impl.WorkBook;
import com.fr.module.Module;
import com.fr.module.tool.ActivatorToolBox;
import com.fr.report.ReportActivator;
import com.fr.report.RestrictionActivator;
import com.fr.report.module.ReportBaseActivator;
import com.fr.scheduler.SchedulerActivator;
import com.fr.store.StateServerActivator;
import com.fr.workspace.simple.SimpleWork;
import junit.framework.TestCase;
import org.junit.Assert;
public class ModuleStartTest extends TestCase {
final TestLogAppender logAppender = new TestLogAppender();
@Override
protected void setUp() throws Exception {
LogHandler logHandler = new LogHandler<TestLogAppender>() {
@Override
public TestLogAppender getHandler() {
return logAppender;
}
};
FineLoggerFactory.registerLogger(FRLogger.getLogger());
FineLoggerFactory.getLogger().addLogAppender(logHandler);
}
public void testModuleStartAndShutdown() {
for (int i = 0; i < 2; i++) {
Module module = initModule();
SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
SimpleWork.checkIn(ModuleStartTest.class.getResource("../../../WEB-INF").getPath());
I18nResource.getInstance();
module.start();
WorkBook workbook = null;
try {
workbook = (WorkBook) TemplateWorkBookIO
.readTemplateWorkBook("//demo.cpt");
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
Assert.assertNotNull(workbook);
module.stop();
}
Assert.assertEquals(logAppender.getErrorList().size(), 0);
}
private Module initModule() {
Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
new ConfigurationActivator(),
new StandaloneModeActivator(),
new StateServerActivator(),
new SchedulerActivator(),
new ReportBaseActivator(),
new RestrictionActivator(),
new ReportActivator(),
new ChartBaseActivator());
return module;
}
@Override
protected void tearDown() throws Exception {
logAppender.close();
}
}

51
src/test/java/com/fr/demo/TestLogAppender.java

@ -0,0 +1,51 @@
package com.fr.demo;
import com.fr.third.apache.log4j.AppenderSkeleton;
import com.fr.third.apache.log4j.Level;
import com.fr.third.apache.log4j.spi.LoggingEvent;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2017/7/18 0018.
*/
public class TestLogAppender extends AppenderSkeleton {
private List<String> errorList = new ArrayList<String>();
public TestLogAppender() {
this.layout = new com.fr.third.apache.log4j.PatternLayout("%d{HH:mm:ss} %t %p [%c] %m%n");
}
protected void append(LoggingEvent event) {
this.subAppend(event);
}
public boolean requiresLayout() {
return true;
}
public synchronized void close() {
if (this.closed) {
return;
}
errorList.clear();
this.closed = true;
}
public void subAppend(LoggingEvent event) {
Level level = event.getLevel();
String msg = this.layout.format(event);
System.out.println(msg);
if (Level.ERROR.equals(level)) {
errorList.add(msg);
}
}
public List<String> getErrorList() {
return errorList;
}
}
Loading…
Cancel
Save