Browse Source

update

main
wangshaoping 6 months ago
parent
commit
4903a7fd58
  1. 2
      erm.frontend/package.json
  2. 2
      gradle.properties
  3. 2
      io.sc.engine.mv.frontend/package.json
  4. 40
      io.sc.engine.rule.frontend/src/views/resources/designer/DecisionTreeDialog.vue
  5. 1
      io.sc.engine.rule.frontend/src/views/resources/designer/ExecutionFlowDialog.vue
  6. 61
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/controller/ParameterProcessorWebController.java
  7. 1
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/ParameterProcessorService.java
  8. 33
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ParameterProcessorServiceImpl.java
  9. 130
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor-ext/css/alert.css
  10. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor-ext/images/save.png
  11. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor-ext/images/xml.png
  12. 59
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor-ext/js/alert.js
  13. 2
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor-ext/js/alert.min.js
  14. 3
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/codemirror.css
  15. 151
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/deflate/base64.js
  16. 3
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/deflate/pako.min.js
  17. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/checkmark.gif
  18. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/clear.gif
  19. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/close.png
  20. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/collapsed.gif
  21. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/dropdown.gif
  22. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/dropdown.png
  23. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/edit.gif
  24. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/expanded.gif
  25. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/grid.gif
  26. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/handle-fixed.png
  27. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/handle-main.png
  28. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/handle-rotate.png
  29. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/handle-secondary.png
  30. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/handle-terminal.png
  31. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/help.png
  32. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/locked.png
  33. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/logo.png
  34. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/nocolor.png
  35. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/refresh.png
  36. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/round-drop.png
  37. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/search.png
  38. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/tooltip.png
  39. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/transparent.gif
  40. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/triangle-down.png
  41. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/triangle-left.png
  42. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/triangle-right.png
  43. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/triangle-up.png
  44. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/unlocked.png
  45. 110
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/index.html
  46. 1413
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Actions.js
  47. 2542
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Dialogs.js
  48. 2252
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Editor.js
  49. 4234
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/EditorUi.js
  50. 5496
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Format.js
  51. 8344
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Graph.js
  52. 30
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Init.js
  53. 1315
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Menus.js
  54. 3879
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Shapes.js
  55. 3602
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Sidebar.js
  56. 954
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Toolbar.js
  57. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/jscolor/arrow.gif
  58. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/jscolor/cross.gif
  59. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/jscolor/hs.png
  60. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/jscolor/hv.png
  61. 913
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/jscolor/jscolor.js
  62. 222
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/open.html
  63. 321
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/resources/grapheditor.txt
  64. 320
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/resources/grapheditor_de.txt
  65. 321
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/resources/grapheditor_zh.txt
  66. 20
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/resources/help.html
  67. 20
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/resources/help_de.html
  68. 91
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/sanitizer/sanitizer.min.js
  69. 849
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/arrows.xml
  70. 895
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/basic.xml
  71. 1162
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/bpmn.xml
  72. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Credit_Card_128x128.png
  73. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Database_128x128.png
  74. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Doctor1_128x128.png
  75. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Earth_globe_128x128.png
  76. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Email_128x128.png
  77. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Empty_Folder_128x128.png
  78. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Firewall_02_128x128.png
  79. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Full_Folder_128x128.png
  80. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Gear_128x128.png
  81. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Graph_128x128.png
  82. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Laptop_128x128.png
  83. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Lock_128x128.png
  84. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/MacBook_128x128.png
  85. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Monitor_Tower_128x128.png
  86. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Piggy_Bank_128x128.png
  87. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Pilot1_128x128.png
  88. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Printer_128x128.png
  89. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Router_Icon_128x128.png
  90. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Safe_128x128.png
  91. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Security1_128x128.png
  92. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Server_Tower_128x128.png
  93. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Shopping_Cart_128x128.png
  94. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Software_128x128.png
  95. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Soldier1_128x128.png
  96. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Suit1_128x128.png
  97. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Suit2_128x128.png
  98. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Suit3_128x128.png
  99. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Tech1_128x128.png
  100. BIN
      io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Telesales1_128x128.png

2
erm.frontend/package.json

@ -92,7 +92,7 @@
"luckyexcel": "1.0.1", "luckyexcel": "1.0.1",
"mockjs": "1.1.0", "mockjs": "1.1.0",
"pinia": "2.2.2", "pinia": "2.2.2",
"platform-core": "8.1.324", "platform-core": "8.1.332",
"quasar": "2.16.11", "quasar": "2.16.11",
"tailwindcss": "3.4.10", "tailwindcss": "3.4.10",
"vue": "3.5.4", "vue": "3.5.4",

2
gradle.properties

@ -38,7 +38,7 @@ application_version=1.0.0
platform_group=io.sc platform_group=io.sc
platform_version=8.1.48 platform_version=8.1.48
platform_plugin_version=8.1.48 platform_plugin_version=8.1.48
platform_core_frontend_version=8.1.324 platform_core_frontend_version=8.1.332
########################################################### ###########################################################
# dependencies version # dependencies version

2
io.sc.engine.mv.frontend/package.json

@ -92,7 +92,7 @@
"luckyexcel": "1.0.1", "luckyexcel": "1.0.1",
"mockjs": "1.1.0", "mockjs": "1.1.0",
"pinia": "2.2.2", "pinia": "2.2.2",
"platform-core": "8.1.324", "platform-core": "8.1.332",
"quasar": "2.16.11", "quasar": "2.16.11",
"tailwindcss": "3.4.10", "tailwindcss": "3.4.10",
"vue": "3.5.4", "vue": "3.5.4",

40
io.sc.engine.rule.frontend/src/views/resources/designer/DecisionTreeDialog.vue

@ -356,32 +356,30 @@ const findResourceAbstractByCodeAndVersion = (code, version) => {
const open = async (parameterId, processorId) => { const open = async (parameterId, processorId) => {
processorIdRef.value = processorId; processorIdRef.value = processorId;
// //
const response = await axios.get(Environment.apiContextPath('/api/re/resource/getAllReleasableResourceAbstract')); const resourceAbstractResponse = await axios.get(Environment.apiContextPath('/api/re/resource/getAllReleasableResourceAbstract'));
resourceAbstractsRef.value = response.data; resourceAbstractsRef.value = resourceAbstractResponse?.data;
// //
axios.get(Environment.apiContextPath('/api/re/function?pageable=false')).then((response) => { const functionResponse = await axios.get(Environment.apiContextPath('/api/re/function?pageable=false'));
const options = []; const functionOptions = [];
const items = response.data?.content; for (const item of functionResponse?.data?.content || []) {
if (items && items.length > 0) { if (item.enable) {
for (const item of items) { functionOptions.push(item);
if (item.enable) {
options.push(item);
}
}
} }
userDefinedFunctionsRef.value = options; }
}); userDefinedFunctionsRef.value = functionOptions;
// //
axios.get(Environment.apiContextPath('/api/re/common/listParameterAndValueTypeByParameterId/' + parameterId)).then((response) => { const tipResponse = await axios.get(Environment.apiContextPath('/api/re/common/listParameterAndValueTypeByParameterId/' + parameterId));
autoCompletionManager.setParameters(response.data.parameters); autoCompletionManager.setParameters(tipResponse?.data?.parameters);
autoCompletionManager.setValueTypes(response.data.valueTypes); autoCompletionManager.setValueTypes(tipResponse?.data?.valueTypes);
});
// graph xml // graph xml
axios.get(Environment.apiContextPath('api/re/model/parameter/processor/getDecisionTreeById/' + processorIdRef.value)).then((response) => { const graphResponse = await axios.get(Environment.apiContextPath('api/re/model/parameter/processor/getDecisionTreeById/' + processorIdRef.value));
modelValueRef.value = response.data; modelValueRef.value = graphResponse?.data;
dialogRef.value.show();
}); //
dialogRef.value.show();
}; };
const close = () => { const close = () => {

1
io.sc.engine.rule.frontend/src/views/resources/designer/ExecutionFlowDialog.vue

@ -361,7 +361,6 @@ const vertexDefines = [
const outputCommands = dom.getAttribute('outputCommands'); const outputCommands = dom.getAttribute('outputCommands');
const resourceAbstract = findResourceAbstractByCodeAndVersion(code, version); const resourceAbstract = findResourceAbstractByCodeAndVersion(code, version);
if (resourceAbstract) { if (resourceAbstract) {
console.log(resourceAbstract);
return { return {
resourceAbstractId: resourceAbstract.id, resourceAbstractId: resourceAbstract.id,
inputCommands: inputCommands, inputCommands: inputCommands,

61
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/controller/ParameterProcessorWebController.java

@ -8,25 +8,17 @@ import io.sc.engine.rule.server.model.service.ParameterProcessorService;
import io.sc.engine.rule.server.model.service.ParameterService; import io.sc.engine.rule.server.model.service.ParameterService;
import io.sc.engine.rule.server.model.service.support.AutoMatchObjectProperties; import io.sc.engine.rule.server.model.service.support.AutoMatchObjectProperties;
import io.sc.engine.rule.server.model.service.support.ObjectProperty; import io.sc.engine.rule.server.model.service.support.ObjectProperty;
import io.sc.engine.rule.server.model.service.support.ParemterHints;
import io.sc.engine.rule.server.model.support.processor.SqlQueryRequest; import io.sc.engine.rule.server.model.support.processor.SqlQueryRequest;
import io.sc.engine.rule.server.model.support.processor.SqlQueryResult; import io.sc.engine.rule.server.model.support.processor.SqlQueryResult;
import io.sc.engine.rule.server.model.vo.ParameterProcessorVo; import io.sc.engine.rule.server.model.vo.ParameterProcessorVo;
import io.sc.engine.rule.server.model.vo.ParameterValidatorVo;
import io.sc.engine.rule.server.util.CodeAndNameMapping; import io.sc.engine.rule.server.util.CodeAndNameMapping;
import io.sc.engine.rule.server.util.VariableCodeAndNameReplacer; import io.sc.engine.rule.server.util.VariableCodeAndNameReplacer;
import io.sc.platform.core.annotation.IgnoreResponseBodyAdvice;
import io.sc.platform.mvc.controller.support.RestCrudController; import io.sc.platform.mvc.controller.support.RestCrudController;
import io.sc.platform.orm.util.EntityVoUtil; import io.sc.platform.orm.util.EntityVoUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -34,13 +26,12 @@ import java.util.Map;
/** /**
* 模型参数处理器 Controller * 模型参数处理器 Controller
*/ */
@Controller @RestController
@RequestMapping("/api/re/model/parameter/processor") @RequestMapping("/api/re/model/parameter/processor")
public class ParameterProcessorWebController extends RestCrudController<ParameterProcessorVo,ParameterProcessorEntity,String,ParameterProcessorRepository,ParameterProcessorService> { public class ParameterProcessorWebController extends RestCrudController<ParameterProcessorVo,ParameterProcessorEntity,String,ParameterProcessorRepository,ParameterProcessorService> {
@Autowired private ParameterService parameterService; @Autowired private ParameterService parameterService;
@GetMapping("findByParameterId") @GetMapping("findByParameterId")
@ResponseBody
public List<ParameterProcessorVo> findByParameterId(@RequestParam(name="parameterId",required = false)String parameterId) throws Exception { public List<ParameterProcessorVo> findByParameterId(@RequestParam(name="parameterId",required = false)String parameterId) throws Exception {
if(!StringUtils.hasText(parameterId)){ if(!StringUtils.hasText(parameterId)){
return Collections.emptyList(); return Collections.emptyList();
@ -52,22 +43,11 @@ public class ParameterProcessorWebController extends RestCrudController<Paramete
} }
@PostMapping("autoMatch") @PostMapping("autoMatch")
@ResponseBody
public List<ObjectProperty> autoMatch(@RequestBody AutoMatchObjectProperties autoMatchObjectProperties) throws Exception { public List<ObjectProperty> autoMatch(@RequestBody AutoMatchObjectProperties autoMatchObjectProperties) throws Exception {
return service.autoMatch(autoMatchObjectProperties); return service.autoMatch(autoMatchObjectProperties);
} }
//决策树========================================================================================================== @GetMapping("getDecisionTreeById/{processorId}")
@RequestMapping(value="editDecisionTreeById/{processorId}",method=RequestMethod.GET)
public ModelAndView editDecisionTreeById(@PathVariable(name="processorId")String processorId) throws Exception{
ModelAndView mv =new ModelAndView("io/sc/engine/rule/server/view/decisionTree.html");
mv.addObject("processorId", processorId);
mv.addObject("paremterHints",parameterService.listParemterHintsByProcessorId(processorId));
return mv;
}
@RequestMapping(value="getDecisionTreeById/{processorId}",method=RequestMethod.GET)
@ResponseBody
public String getDecisionTreeById(@PathVariable(name="processorId",required=false)String processorId) throws Exception{ public String getDecisionTreeById(@PathVariable(name="processorId",required=false)String processorId) throws Exception{
ParameterProcessorEntity entity =service.findById(processorId); ParameterProcessorEntity entity =service.findById(processorId);
if(entity!=null && entity instanceof DecisionTreeParameterProcessorEntity) { if(entity!=null && entity instanceof DecisionTreeParameterProcessorEntity) {
@ -79,8 +59,7 @@ public class ParameterProcessorWebController extends RestCrudController<Paramete
return null; return null;
} }
@RequestMapping("saveDecisionTreeById/{processorId}") @PostMapping("saveDecisionTreeById/{processorId}")
@ResponseBody
public void saveDecisionTreeById(@PathVariable(name="processorId") String processorId,@RequestBody Map<String,String> map) throws Exception{ public void saveDecisionTreeById(@PathVariable(name="processorId") String processorId,@RequestBody Map<String,String> map) throws Exception{
String xml =map.get("xml"); String xml =map.get("xml");
ParameterProcessorEntity entity = service.findById(processorId); ParameterProcessorEntity entity = service.findById(processorId);
@ -92,18 +71,9 @@ public class ParameterProcessorWebController extends RestCrudController<Paramete
service.update(processorId, _entity); service.update(processorId, _entity);
} }
} }
//执行流==========================================================================================================
@RequestMapping(value="editExecutionFlowById/{processorId}",method=RequestMethod.GET)
public ModelAndView editExecutionFlowById(@PathVariable(name="processorId")String processorId) throws Exception{
ModelAndView mv =new ModelAndView("io/sc/engine/rule/server/view/executionFlow.html");
mv.addObject("processorId", processorId);
mv.addObject("paremterHints",parameterService.listParemterHintsByProcessorId(processorId));
return mv;
}
@RequestMapping(value="getExecutionFlowById/{processorId}",method=RequestMethod.GET) //执行流==========================================================================================================
@ResponseBody @GetMapping("getExecutionFlowById/{processorId}")
@IgnoreResponseBodyAdvice
public String getExecutionFlowById(@PathVariable(name="processorId",required=false)String processorId) throws Exception{ public String getExecutionFlowById(@PathVariable(name="processorId",required=false)String processorId) throws Exception{
ParameterProcessorEntity entity =service.findById(processorId); ParameterProcessorEntity entity =service.findById(processorId);
if(entity!=null && entity instanceof ExecutionFlowParameterProcessorEntity) { if(entity!=null && entity instanceof ExecutionFlowParameterProcessorEntity) {
@ -115,8 +85,7 @@ public class ParameterProcessorWebController extends RestCrudController<Paramete
return null; return null;
} }
@RequestMapping("saveExecutionFlowById/{processorId}") @PostMapping("saveExecutionFlowById/{processorId}")
@ResponseBody
public void saveExecutionFlowById(@PathVariable(name="processorId") String processorId,@RequestBody Map<String,String> map) throws Exception{ public void saveExecutionFlowById(@PathVariable(name="processorId") String processorId,@RequestBody Map<String,String> map) throws Exception{
String xml =map.get("xml"); String xml =map.get("xml");
ParameterProcessorEntity entity = service.findById(processorId); ParameterProcessorEntity entity = service.findById(processorId);
@ -129,14 +98,12 @@ public class ParameterProcessorWebController extends RestCrudController<Paramete
} }
} }
@RequestMapping(value="listObejctPropertiesByProcessorId/{processorId}",method=RequestMethod.GET) @GetMapping("listObejctPropertiesByProcessorId/{processorId}")
@ResponseBody
public List<ObjectProperty> listObejctPropertiesByProcessorId(@PathVariable(name="processorId",required=true)String processorId) throws Exception{ public List<ObjectProperty> listObejctPropertiesByProcessorId(@PathVariable(name="processorId",required=true)String processorId) throws Exception{
return service.listObejctPropertiesByProcessorId(processorId); return service.listObejctPropertiesByProcessorId(processorId);
} }
@RequestMapping(value="importFromCsv",method=RequestMethod.POST) @PostMapping("importFromCsv")
@ResponseBody
public void importFromCsv(@RequestBody Map<String,String> request) throws Exception{ public void importFromCsv(@RequestBody Map<String,String> request) throws Exception{
String parameterId =request.get("parameterId"); String parameterId =request.get("parameterId");
String csvContent =request.get("csvContent"); String csvContent =request.get("csvContent");
@ -147,16 +114,8 @@ public class ParameterProcessorWebController extends RestCrudController<Paramete
} }
} }
@RequestMapping(value="executeSql",method=RequestMethod.POST) @PostMapping("executeSql")
@ResponseBody public SqlQueryResult executeSql(@RequestBody SqlQueryRequest request) throws Exception {
public SqlQueryResult executeSql(@RequestBody SqlQueryRequest request) throws Exception{
return service.executeSql(request); return service.executeSql(request);
} }
@RequestMapping(value="generateImage/{processorId}")
public void generateImage(@PathVariable(name="processorId") String processorId,HttpServletRequest request,HttpServletResponse response) throws Exception{
response.setContentType("image/png");
BufferedOutputStream bos =new BufferedOutputStream(response.getOutputStream());
service.generateImage(processorId, bos, "png");
}
} }

1
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/ParameterProcessorService.java

@ -29,5 +29,4 @@ public interface ParameterProcessorService extends DaoService<ParameterProcessor
public List<ObjectProperty> autoMatch(AutoMatchObjectProperties autoMatchObjectProperties) throws Exception; public List<ObjectProperty> autoMatch(AutoMatchObjectProperties autoMatchObjectProperties) throws Exception;
public void importFromCsv(String parameterId,String csvContent, String splitChar) throws Exception; public void importFromCsv(String parameterId,String csvContent, String splitChar) throws Exception;
public SqlQueryResult executeSql(SqlQueryRequest request); public SqlQueryResult executeSql(SqlQueryRequest request);
public void generateImage(String parameterProcessorId,OutputStream outputStream,String format) throws Exception;
} }

33
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ParameterProcessorServiceImpl.java

@ -5,8 +5,6 @@ import com.google.common.base.CharMatcher;
import com.google.common.base.Splitter; import com.google.common.base.Splitter;
import io.sc.engine.rule.core.code.impl.support.processor.Rule; import io.sc.engine.rule.core.code.impl.support.processor.Rule;
import io.sc.engine.rule.core.enums.ParameterType; import io.sc.engine.rule.core.enums.ParameterType;
import io.sc.engine.rule.core.mxgraph.parser.DecisionTreeParser;
import io.sc.engine.rule.core.mxgraph.parser.ExecutionFlowParser;
import io.sc.engine.rule.core.util.ExpressionReplacer; import io.sc.engine.rule.core.util.ExpressionReplacer;
import io.sc.engine.rule.core.util.JacksonObjectMapper; import io.sc.engine.rule.core.util.JacksonObjectMapper;
import io.sc.engine.rule.server.dictionary.entity.DictionaryEntity; import io.sc.engine.rule.server.dictionary.entity.DictionaryEntity;
@ -16,9 +14,6 @@ import io.sc.engine.rule.server.dictionary.entity.UserDefinedJavaClassFieldEntit
import io.sc.engine.rule.server.dictionary.service.DictionaryService; import io.sc.engine.rule.server.dictionary.service.DictionaryService;
import io.sc.engine.rule.server.model.entity.ParameterEntity; import io.sc.engine.rule.server.model.entity.ParameterEntity;
import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity;
import io.sc.engine.rule.server.model.entity.processor.DecisionTreeParameterProcessorEntity;
import io.sc.engine.rule.server.model.entity.processor.ExecutionFlowParameterProcessorEntity;
import io.sc.engine.rule.server.model.entity.processor.ObjectPropertiesParameterProcessorEntity;
import io.sc.engine.rule.server.model.entity.processor.RuleParameterProcessorEntity; import io.sc.engine.rule.server.model.entity.processor.RuleParameterProcessorEntity;
import io.sc.engine.rule.server.model.repository.ParameterProcessorRepository; import io.sc.engine.rule.server.model.repository.ParameterProcessorRepository;
import io.sc.engine.rule.server.model.service.ParameterProcessorService; import io.sc.engine.rule.server.model.service.ParameterProcessorService;
@ -32,13 +27,10 @@ import io.sc.engine.rule.server.model.vo.ParameterProcessorVo;
import io.sc.engine.rule.server.model.vo.processor.ObjectPropertiesParameterProcessorVo; import io.sc.engine.rule.server.model.vo.processor.ObjectPropertiesParameterProcessorVo;
import io.sc.engine.rule.server.util.CodeAndNameMapping; import io.sc.engine.rule.server.util.CodeAndNameMapping;
import io.sc.engine.rule.server.util.VariableCodeAndNameReplacer; import io.sc.engine.rule.server.util.VariableCodeAndNameReplacer;
import io.sc.platform.core.plugins.item.ApplicationProperties;
import io.sc.platform.core.util.ObjectMapper4Json; import io.sc.platform.core.util.ObjectMapper4Json;
import io.sc.platform.orm.entity.support.EntityChangedEventType; import io.sc.platform.orm.entity.support.EntityChangedEventType;
import io.sc.platform.orm.service.impl.DaoServiceImpl; import io.sc.platform.orm.service.impl.DaoServiceImpl;
import io.sc.platform.orm.util.EntityVoUtil;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.commons.text.similarity.LevenshteinDistance;
import org.apache.commons.text.similarity.LongestCommonSubsequenceDistance; import org.apache.commons.text.similarity.LongestCommonSubsequenceDistance;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
@ -49,7 +41,6 @@ import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.OutputStream;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.*; import java.util.*;
@ -371,28 +362,4 @@ public class ParameterProcessorServiceImpl
} }
return null; return null;
} }
@Override
public void generateImage(String parameterProcessorId,OutputStream outputStream,String format) throws Exception {
if(StringUtils.hasText(parameterProcessorId)) {
ParameterProcessorEntity entity =findById(parameterProcessorId);
if(entity!=null) {
CodeAndNameMapping mapping = parameterService.loadCodeAndNameMappingByParameterId(entity.getParameter().getId());
VariableCodeAndNameReplacer.replace(entity, mapping.getCode2NameMapping());
if(entity instanceof ExecutionFlowParameterProcessorEntity) {
ExecutionFlowParameterProcessorEntity _entity =(ExecutionFlowParameterProcessorEntity)entity;
String xml =_entity.getExecutionFlow();
if(StringUtils.hasText(xml)) {
new ExecutionFlowParser().generateImage(xml, outputStream, format);
}
}else if(entity instanceof DecisionTreeParameterProcessorEntity) {
DecisionTreeParameterProcessorEntity _entity =(DecisionTreeParameterProcessorEntity)entity;
String xml =_entity.getDecisionTree();
if(StringUtils.hasText(xml)) {
new DecisionTreeParser().generateImage(xml, outputStream, format);
}
}
}
}
}
} }

130
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor-ext/css/alert.css

@ -1,130 +0,0 @@
/*为手机端定制的一款皮肤(引用此皮肤时无需引用alert.css) 最后更新2016-07-27*/
/*
alert_overlay 背景遮罩
alert_msg 消息框主体
alert_content 内容容器
alert_buttons 底部按钮容器
alert_btn 两个按钮公用class
alert_btn_ok 确定按钮
alert_btn_cancel 取消按钮
*/
.alert_overlay {
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 1000;
background: rgba(0, 0, 0, .1)
}
.alert_msg {
position: fixed;
width: 280px;
left: 50%;
margin-left: -140px;
top: 20%;
z-index: 1000;
border: 1px solid #ccc;
border-radius: 4px;
box-shadow: 0 0 15px rgba(0, 0, 0, .3);
background: #fff;
animation: alertshow .2s ease
}
.alert_content {
padding: 20px;
font-size: 14px;
text-align: left
}
.alert_buttons {
text-align: center;
border-top: 1px solid #ccc;
-webkit-user-select: none
}
.alert_buttons .alert_btn {
display: inline-block;
width: 50%;
border: none;
height: 45px;
line-height: 45px;
font-size: 14px;
outline: 0;
-webkit-appearance: none;
background: #fff;
-webkit-tap-highlight-color: transparent;
border-radius: 0 0 4px 4px;
}
.alert_buttons .alert_btn:only-child {
width: 100%
}
.alert_buttons .alert_btn:first-child + .alert_btn {
border-left: 1px solid #ccc;
border-radius: 0 0 4px 0;
}
.alert_tips {
position: fixed;
z-index: 10176523;
width: 100%;
top: 55%;
pointer-events: none;
text-align: center;
}
.alert_tips div {
box-siziong: border-box;
display: inline-block;
padding: 15px;
border-radius: 10px;
background: rgba(0, 0, 0, .7);
min-width: 50px;
max-width: 230px;
text-align: center;
color: #fff;
animation: tipsshow 3s .01s ease;
opacity: 0;
}
@keyframes alertshow {
0% {
opacity: 0;
transform: scale(.5)
}
70% {
opacity: .7;
transform: scale(1.05)
}
100% {
opacity: 1;
transform: scale(1)
}
}
@keyframes tipsshow {
0% {
opacity: 0;
transform: scale(1.4) rotateX(-360deg)
}
20% {
opacity: 1;
transform: scale(1) rotateX(0deg)
}
80% {
opacity: 1;
transform: scale(1) rotateX(0deg)
}
100% {
opacity: 0;
transform: scale(1.4) rotateX(360deg)
}
}

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor-ext/images/save.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor-ext/images/xml.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

59
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor-ext/js/alert.js

@ -1,59 +0,0 @@
/**
* jQuery/Zepto 弹窗插件
* 调用方法中括号的为可选参数
* $.alert(string[,function])
* $.confirm(string[,function])
* $.tips(string[,number])
* version:2016-11-30
*/
!function($){
//所有的css,可以自定义,css和Dom结构请参考 https://github.com/ydq/alert
var css='.alert_overlay{position:fixed;width:100%;height:100%;top:0;left:0;z-index:1000;background:rgba(0,0,0,.05);-webkit-backdrop-filter:blur(3px)}.pc .alert_msg{width:320px}.mob .alert_msg{width:260px;border-radius:4px}.alert_msg{box-sizing:border-box;position:absolute;left:50%;top:30%;border:1px solid #ccc;box-shadow:0 2px 15px rgba(0,0,0,.3);background:#fff;transition:all .2s cubic-bezier(.8,.5,.2,1.4);-webkit-transform:translate(-50%,-50%) scale(.5);opacity:0;transform:translate(-50%,-50%) scale(.5)}.alert_show .alert_msg{opacity:1;transform:translate(-50%,-50%) scale(1);-webkit-transform:translate(-50%,-50%) scale(1)}.alert_content{padding:20px 15px;font-size:14px;text-align:left}.alert_tips{position:fixed;z-index:10176523}.pc .alert_buttons{padding:6px;border-top:1px solid #ccc;text-align:right;box-shadow:0 1px 0 #fff inset;background:#eee;-webkit-user-select:none}.pc .alert_buttons .alert_btn{padding:4px 8px;margin:0 2px;border:1px solid #ccc;background:#eee;cursor:pointer;border-radius:2px;font-size:14px;outline:0;-webkit-appearance:none}.pc .alert_buttons .alert_btn:hover{border-color:#ccc;box-shadow:0 1px 2px #ccc;background:#eaeaea}.pc .alert_buttons .alert_btn:active{box-shadow:0 1px 2px #ccc inset;background:#e6e6e6}.pc.alert_tips{top:50px;right:50px}.pc.alert_tips div{background:rgba(0,0,0,.7);position:relative;color:#fff;font-size:16px;padding:10px 15px;border-radius:2px;margin-bottom:20px;box-shadow:0 0 3px #000;display:none;float:right;clear:both}.mob .alert_buttons{text-align:center;border-top:1px solid #ccc;-webkit-user-select:none}.mob .alert_buttons .alert_btn{display:inline-block;width:50%;border:0;height:40px;font-size:14px;outline:0;-webkit-appearance:none;background:#fff;-webkit-tap-highlight-color:transparent;border-radius:0 0 4px 4px}.mob .alert_buttons .alert_btn:only-child{width:100%}.mob .alert_buttons .alert_btn:first-child+.alert_btn{border-left:1px solid #ccc;border-radius:0 0 4px 0}.mob.alert_tips{width:100%;top:55%;pointer-events:none;text-align:center}.mob.alert_tips div{box-sizing:border-box;display:inline-block;padding:15px;border-radius:10px;background:rgba(0,0,0,.7);min-width:50px;max-width:230px;text-align:center;color:#fff;animation:tipsshow 3s .01s ease;-webkit-animation:tipsshow 3s .01s ease;opacity:0}@keyframes tipsshow{0%{opacity:0;transform:scale(1.4) rotateX(-360deg)}20%,80%{opacity:1;transform:scale(1) rotateX(0deg)}to{transform:scale(1.4) rotateX(360deg)}}@-webkit-keyframes tipsshow{0%,to{opacity:0}0%{-webkit-transform:scale(1.4) rotateX(-360deg)}20%,80%{opacity:1;-webkit-transform:scale(1) rotateX(0deg)}to{opacity:0;-webkit-transform:scale(1.4) rotateX(360deg)}}';
$('head').append('<style type="text/css">'+css+'</style>');
$._ismob=/i(Phone|Pod)|Android|phone/i.test(navigator.userAgent)
$._isalert=$._isload=0
$.alert=function(){
if(arguments.length){
$._isalert=1;
return $.confirm.apply($,arguments);
}
}
$.confirm=function(){
var args=arguments,d;
if(args.length){
var fn=args[1],_click = function(e){typeof fn=='function'?(fn.call(d,e.data.r)!=!1&&d.close()):d.close()};
d = $('<div class="alert_overlay '+($._ismob?'mob':'pc')+'"><div class="alert_msg"><div class="alert_content">'+args[0]+'</div><div class="alert_buttons"><button class="alert_btn alert_btn_cancel">Cancel</button><button class="alert_btn alert_btn_ok">Okey</button></div></div></div>')
.on('contextmenu',!1)
.on('click','.alert_btn_ok',{r:!0},_click)
.on('click','.alert_btn_cancel',{r:!1},_click)
$._isload?d.find('.alert_content').css('text-align','center').parent().css({width:'auto',borderRadius:'4px'}).find('.alert_buttons').remove():($._isalert&&d.find('.alert_btn_cancel').remove())
d.appendTo('body').find('.alert_btn_ok').focus();//让对话框打开后支持直接键盘回车触发确定按钮点击
d.ok = function(t){d.find('.alert_btn_ok').text(t||'Okey');return d}
d.cancel = function(t){d.find('.alert_btn_cancel').text(t||'Cancel');return d}
d.content = function(t){t&&d.find('.alert_content').html(t);return d}
d.close = function(){d.one('webkitTransitionEnd transitionEnd',function(){d.remove();}).removeClass('alert_show')}
d.addClass('alert_show')
}
$._isalert=$._isload=0;
return d;
},
$.tips=function(m,t){
if(m){
if($._ismob){
$('.alert_tips').remove();
$('<div class="alert_tips mob"><div>'+m+'</div></div>').appendTo('body').one('webkitAnimationEnd animationEnd',function(){$(this).remove()})
}else{
var tipsContainer = $('.alert_tips');
tipsContainer.length||(tipsContainer=$('<div class="alert_tips pc"></div>').appendTo('body'));
$('<div>'+m+'</div>').appendTo(tipsContainer).fadeIn('fast').delay(t||2e3).slideUp('fast',function(){$(this).remove();});
}
}
}
$.load=function(){
$('.alert_overlay').remove();
$._isload =1;
var d = $.confirm.call($,arguments[0]||"Loading...");
$.loaded = d.close;
return d;
}
}($)

2
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor-ext/js/alert.min.js

@ -1,2 +0,0 @@
/*jQuery/Zepto弹窗插件 | version:2016-11-30*/
!function(t){var e=".alert_overlay{position:fixed;width:100%;height:100%;top:0;left:0;z-index:1000;background:rgba(0,0,0,.05);-webkit-backdrop-filter:blur(3px)}.pc .alert_msg{width:320px}.mob .alert_msg{width:260px;border-radius:4px}.alert_msg{box-sizing:border-box;position:absolute;left:50%;top:30%;border:1px solid #ccc;box-shadow:0 2px 15px rgba(0,0,0,.3);background:#fff;transition:all .2s cubic-bezier(.8,.5,.2,1.4);-webkit-transform:translate(-50%,-50%) scale(.5);opacity:0;transform:translate(-50%,-50%) scale(.5)}.alert_show .alert_msg{opacity:1;transform:translate(-50%,-50%) scale(1);-webkit-transform:translate(-50%,-50%) scale(1)}.alert_content{padding:20px 15px;font-size:14px;text-align:left}.alert_tips{position:fixed;z-index:10176523}.pc .alert_buttons{padding:6px;border-top:1px solid #ccc;text-align:right;box-shadow:0 1px 0 #fff inset;background:#eee;-webkit-user-select:none}.pc .alert_buttons .alert_btn{padding:4px 8px;margin:0 2px;border:1px solid #ccc;background:#eee;cursor:pointer;border-radius:2px;font-size:14px;outline:0;-webkit-appearance:none}.pc .alert_buttons .alert_btn:hover{border-color:#ccc;box-shadow:0 1px 2px #ccc;background:#eaeaea}.pc .alert_buttons .alert_btn:active{box-shadow:0 1px 2px #ccc inset;background:#e6e6e6}.pc.alert_tips{top:50px;right:50px}.pc.alert_tips div{background:rgba(0,0,0,.7);position:relative;color:#fff;font-size:16px;padding:10px 15px;border-radius:2px;margin-bottom:20px;box-shadow:0 0 3px #000;display:none;float:right;clear:both}.mob .alert_buttons{text-align:center;border-top:1px solid #ccc;-webkit-user-select:none}.mob .alert_buttons .alert_btn{display:inline-block;width:50%;border:0;height:40px;font-size:14px;outline:0;-webkit-appearance:none;background:#fff;-webkit-tap-highlight-color:transparent;border-radius:0 0 4px 4px}.mob .alert_buttons .alert_btn:only-child{width:100%}.mob .alert_buttons .alert_btn:first-child+.alert_btn{border-left:1px solid #ccc;border-radius:0 0 4px 0}.mob.alert_tips{width:100%;top:55%;pointer-events:none;text-align:center}.mob.alert_tips div{box-sizing:border-box;display:inline-block;padding:15px;border-radius:10px;background:rgba(0,0,0,.7);min-width:50px;max-width:230px;text-align:center;color:#fff;animation:tipsshow 3s .01s ease;-webkit-animation:tipsshow 3s .01s ease;opacity:0}@keyframes tipsshow{0%{opacity:0;transform:scale(1.4) rotateX(-360deg)}20%,80%{opacity:1;transform:scale(1) rotateX(0deg)}to{transform:scale(1.4) rotateX(360deg)}}@-webkit-keyframes tipsshow{0%,to{opacity:0}0%{-webkit-transform:scale(1.4) rotateX(-360deg)}20%,80%{opacity:1;-webkit-transform:scale(1) rotateX(0deg)}to{opacity:0;-webkit-transform:scale(1.4) rotateX(360deg)}}";t("head").append('<style type="text/css">'+e+"</style>"),t._ismob=/i(Phone|Pod)|Android|phone/i.test(navigator.userAgent),t._isalert=t._isload=0,t.alert=function(){if(arguments.length)return t._isalert=1,t.confirm.apply(t,arguments)},t.confirm=function(){var e,o=arguments;if(o.length){var a=o[1],n=function(t){"function"==typeof a?0!=a.call(e,t.data.r)&&e.close():e.close()};e=t('<div class="alert_overlay '+(t._ismob?"mob":"pc")+'"><div class="alert_msg"><div class="alert_content">'+o[0]+'</div><div class="alert_buttons"><button class="alert_btn alert_btn_cancel">Cancel</button><button class="alert_btn alert_btn_ok">Okey</button></div></div></div>').on("contextmenu",!1).on("click",".alert_btn_ok",{r:!0},n).on("click",".alert_btn_cancel",{r:!1},n),t._isload?e.find(".alert_content").css("text-align","center").parent().css({width:"auto",borderRadius:"4px"}).find(".alert_buttons").remove():t._isalert&&e.find(".alert_btn_cancel").remove(),e.appendTo("body").find(".alert_btn_ok").focus(),e.ok=function(t){return e.find(".alert_btn_ok").text(t||"Okey"),e},e.cancel=function(t){return e.find(".alert_btn_cancel").text(t||"Cancel"),e},e.content=function(t){return t&&e.find(".alert_content").html(t),e},e.close=function(){e.one("webkitTransitionEnd transitionEnd",function(){e.remove()}).removeClass("alert_show")},e.addClass("alert_show")}return t._isalert=t._isload=0,e},t.tips=function(e,o){if(e)if(t._ismob)t(".alert_tips").remove(),t('<div class="alert_tips mob"><div>'+e+"</div></div>").appendTo("body").one("webkitAnimationEnd animationEnd",function(){t(this).remove()});else{var a=t(".alert_tips");a.length||(a=t('<div class="alert_tips pc"></div>').appendTo("body")),t("<div>"+e+"</div>").appendTo(a).fadeIn("fast").delay(o||2e3).slideUp("fast",function(){t(this).remove()})}},t.load=function(){t(".alert_overlay").remove(),t._isload=1;var e=t.confirm.call(t,arguments[0]||"Loading...");return t.loaded=e.close,e}}($);

3
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/codemirror.css

@ -1,3 +0,0 @@
.CodeMirror-hints{
z-index:1000000;
}

151
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/deflate/base64.js

@ -1,151 +0,0 @@
/**
*
* Base64 encode / decode
* http://www.webtoolkit.info/
*
**/
var Base64 = {
// private property
_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
// public method for encoding
encode : function (input, binary) {
binary = (binary != null) ? binary : false;
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i = 0;
if (!binary)
{
input = Base64._utf8_encode(input);
}
while (i < input.length) {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output +
this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
}
return output;
},
// public method for decoding
decode : function (input, binary) {
binary = (binary != null) ? binary : false;
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (i < input.length) {
enc1 = this._keyStr.indexOf(input.charAt(i++));
enc2 = this._keyStr.indexOf(input.charAt(i++));
enc3 = this._keyStr.indexOf(input.charAt(i++));
enc4 = this._keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
}
if (!binary)
{
output = Base64._utf8_decode(output);
}
return output;
},
// private method for UTF-8 encoding
_utf8_encode : function (string) {
string = string.replace(/\r\n/g,"\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
}
else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
},
// private method for UTF-8 decoding
_utf8_decode : function (utftext) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while ( i < utftext.length ) {
c = utftext.charCodeAt(i);
if (c < 128) {
string += String.fromCharCode(c);
i++;
}
else if((c > 191) && (c < 224)) {
c2 = utftext.charCodeAt(i+1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
}
else {
c2 = utftext.charCodeAt(i+1);
c3 = utftext.charCodeAt(i+2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return string;
}
}

3
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/deflate/pako.min.js

File diff suppressed because one or more lines are too long

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/checkmark.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/clear.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/close.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 B

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/collapsed.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/dropdown.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/dropdown.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 B

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/edit.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 B

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/expanded.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/grid.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 B

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/handle-fixed.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/handle-main.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 379 B

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/handle-rotate.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/handle-secondary.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/handle-terminal.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/help.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 338 B

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/locked.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1020 B

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/nocolor.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 948 B

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/refresh.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/round-drop.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/search.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 404 B

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/tooltip.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1006 B

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/transparent.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 B

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/triangle-down.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/triangle-left.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/triangle-right.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/triangle-up.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/images/unlocked.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

110
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/index.html

@ -1,110 +0,0 @@
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]-->
<!DOCTYPE html>
<html>
<head>
<title>Grapheditor</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" type="text/css" href="styles/grapheditor.css">
<script type="text/javascript">
// Parses URL parameters. Supported parameters are:
// - lang=xy: Specifies the language of the user interface.
// - touch=1: Enables a touch-style user interface.
// - storage=local: Enables HTML5 local storage.
// - chrome=0: Chromeless mode.
var urlParams = (function(url)
{
var result = new Object();
var idx = url.lastIndexOf('?');
if (idx > 0)
{
var params = url.substring(idx + 1).split('&');
for (var i = 0; i < params.length; i++)
{
idx = params[i].indexOf('=');
if (idx > 0)
{
result[params[i].substring(0, idx)] = params[i].substring(idx + 1);
}
}
}
return result;
})(window.location.href);
// Default resources are included in grapheditor resources
mxLoadResources = false;
</script>
<script type="text/javascript" src="js/Init.js"></script>
<script type="text/javascript" src="deflate/pako.min.js"></script>
<script type="text/javascript" src="deflate/base64.js"></script>
<script type="text/javascript" src="jscolor/jscolor.js"></script>
<script type="text/javascript" src="sanitizer/sanitizer.min.js"></script>
<script type="text/javascript" src="../../../src/js/mxClient.js"></script>
<script type="text/javascript" src="js/EditorUi.js"></script>
<script type="text/javascript" src="js/Editor.js"></script>
<script type="text/javascript" src="js/Sidebar.js"></script>
<script type="text/javascript" src="js/Graph.js"></script>
<script type="text/javascript" src="js/Format.js"></script>
<script type="text/javascript" src="js/Shapes.js"></script>
<script type="text/javascript" src="js/Actions.js"></script>
<script type="text/javascript" src="js/Menus.js"></script>
<script type="text/javascript" src="js/Toolbar.js"></script>
<script type="text/javascript" src="js/Dialogs.js"></script>
</head>
<body class="geEditor">
<script type="text/javascript">
// Extends EditorUi to update I/O action states based on availability of backend
(function()
{
var editorUiInit = EditorUi.prototype.init;
EditorUi.prototype.init = function()
{
editorUiInit.apply(this, arguments);
this.actions.get('export').setEnabled(false);
// Updates action states which require a backend
if (!Editor.useLocalStorage)
{
mxUtils.post(OPEN_URL, '', mxUtils.bind(this, function(req)
{
var enabled = req.getStatus() != 404;
this.actions.get('open').setEnabled(enabled || Graph.fileSupport);
this.actions.get('import').setEnabled(enabled || Graph.fileSupport);
this.actions.get('save').setEnabled(enabled);
this.actions.get('saveAs').setEnabled(enabled);
this.actions.get('export').setEnabled(enabled);
}));
}
};
// Adds required resources (disables loading of fallback properties, this can only
// be used if we know that all keys are defined in the language specific file)
mxResources.loadDefaultBundle = false;
var bundle = mxResources.getDefaultBundle(RESOURCE_BASE, mxLanguage) ||
mxResources.getSpecialBundle(RESOURCE_BASE, mxLanguage);
// Fixes possible asynchronous requests
mxUtils.getAll([bundle, STYLE_PATH + '/default.xml'], function(xhr)
{
// Adds bundle text to resources
mxResources.parse(xhr[0].getText());
// Configures the default graph theme
var themes = new Object();
themes[Graph.prototype.defaultThemeName] = xhr[1].getDocumentElement();
// Main
new EditorUi(new Editor(urlParams['chrome'] == '0', themes));
}, function()
{
document.body.innerHTML = '<center style="margin-top:10%;">Error loading resource files. Please check browser console.</center>';
});
})();
</script>
</body>
</html>

1413
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Actions.js

File diff suppressed because it is too large

2542
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Dialogs.js

File diff suppressed because it is too large

2252
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Editor.js

File diff suppressed because it is too large

4234
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/EditorUi.js

File diff suppressed because it is too large

5496
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Format.js

File diff suppressed because it is too large

8344
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Graph.js

File diff suppressed because one or more lines are too long

30
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Init.js

@ -1,30 +0,0 @@
// urlParams is null when used for embedding
window.urlParams = window.urlParams || {};
// Public global variables
window.MAX_REQUEST_SIZE = window.MAX_REQUEST_SIZE || 10485760;
window.MAX_AREA = window.MAX_AREA || 15000 * 15000;
// URLs for save and export
window.EXPORT_URL = window.EXPORT_URL || '/export';
window.SAVE_URL = window.SAVE_URL || '/save';
window.OPEN_URL = window.OPEN_URL || '/open';
window.RESOURCES_PATH = window.RESOURCES_PATH || 'resources';
window.RESOURCE_BASE = window.RESOURCE_BASE || window.RESOURCES_PATH + '/grapheditor';
window.STENCIL_PATH = window.STENCIL_PATH || 'stencils';
window.IMAGE_PATH = window.IMAGE_PATH || 'images';
window.STYLE_PATH = window.STYLE_PATH || 'styles';
window.CSS_PATH = window.CSS_PATH || 'styles';
window.OPEN_FORM = window.OPEN_FORM || 'open.html';
// Sets the base path, the UI language via URL param and configures the
// supported languages to avoid 404s. The loading of all core language
// resources is disabled as all required resources are in grapheditor.
// properties. Note that in this example the loading of two resource
// files (the special bundle and the default bundle) is disabled to
// save a GET request. This requires that all resources be present in
// each properties file since only one file is loaded.
window.mxBasePath = window.mxBasePath || '../../../src';
window.mxLanguage = window.mxLanguage || urlParams['lang'];
window.mxLanguages = window.mxLanguages || ['de','zh'];

1315
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Menus.js

File diff suppressed because it is too large

3879
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Shapes.js

File diff suppressed because it is too large

3602
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Sidebar.js

File diff suppressed because it is too large

954
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/js/Toolbar.js

@ -1,954 +0,0 @@
/**
* Copyright (c) 2006-2012, JGraph Ltd
*/
/**
* Construcs a new toolbar for the given editor.
*/
function Toolbar(editorUi, container)
{
this.editorUi = editorUi;
this.container = container;
this.staticElements = [];
this.init();
// Global handler to hide the current menu
this.gestureHandler = mxUtils.bind(this, function(evt)
{
if (this.editorUi.currentMenu != null && mxEvent.getSource(evt) != this.editorUi.currentMenu.div)
{
this.hideMenu();
}
});
mxEvent.addGestureListeners(document, this.gestureHandler);
};
/**
* Image for the dropdown arrow.
*/
Toolbar.prototype.dropdownImage = (!mxClient.IS_SVG) ? IMAGE_PATH + '/dropdown.gif' : 'data:image/gif;base64,R0lGODlhDQANAIABAHt7e////yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCREM1NkJFMjE0NEMxMUU1ODk1Q0M5MjQ0MTA4QjNDMSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCREM1NkJFMzE0NEMxMUU1ODk1Q0M5MjQ0MTA4QjNDMSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQzOUMzMjZCMTQ0QjExRTU4OTVDQzkyNDQxMDhCM0MxIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQzOUMzMjZDMTQ0QjExRTU4OTVDQzkyNDQxMDhCM0MxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7';
/**
* Image element for the dropdown arrow.
*/
Toolbar.prototype.dropdownImageHtml = '<img border="0" style="position:absolute;right:4px;top:' +
((!EditorUi.compactUi) ? 8 : 6) + 'px;" src="' + Toolbar.prototype.dropdownImage + '" valign="middle"/>';
/**
* Defines the background for selected buttons.
*/
Toolbar.prototype.selectedBackground = '#d0d0d0';
/**
* Defines the background for selected buttons.
*/
Toolbar.prototype.unselectedBackground = 'none';
/**
* Array that contains the DOM nodes that should never be removed.
*/
Toolbar.prototype.staticElements = null;
/**
* Adds the toolbar elements.
*/
Toolbar.prototype.init = function()
{
var sw = screen.width;
// Takes into account initial compact mode
sw -= (screen.height > 740) ? 56 : 0;
if (sw >= 700)
{
var formatMenu = this.addMenu('', mxResources.get('view') + ' (' + mxResources.get('panTooltip') + ')', true, 'viewPanels', null, true);
this.addDropDownArrow(formatMenu, 'geSprite-formatpanel', 38, 50, -4, -3, 36, -8);
this.addSeparator();
}
var viewMenu = this.addMenu('', mxResources.get('zoom') + ' (Alt+Mousewheel)', true, 'viewZoom', null, true);
viewMenu.showDisabled = true;
viewMenu.style.whiteSpace = 'nowrap';
viewMenu.style.position = 'relative';
viewMenu.style.overflow = 'hidden';
if (EditorUi.compactUi)
{
viewMenu.style.width = (mxClient.IS_QUIRKS) ? '58px' : '50px';
}
else
{
viewMenu.style.width = (mxClient.IS_QUIRKS) ? '62px' : '36px';
}
if (sw >= 420)
{
this.addSeparator();
var elts = this.addItems(['zoomIn', 'zoomOut']);
elts[0].setAttribute('title', mxResources.get('zoomIn') + ' (' + this.editorUi.actions.get('zoomIn').shortcut + ')');
elts[1].setAttribute('title', mxResources.get('zoomOut') + ' (' + this.editorUi.actions.get('zoomOut').shortcut + ')');
}
// Updates the label if the scale changes
this.updateZoom = mxUtils.bind(this, function()
{
viewMenu.innerHTML = Math.round(this.editorUi.editor.graph.view.scale * 100) + '%' +
this.dropdownImageHtml;
if (EditorUi.compactUi)
{
viewMenu.getElementsByTagName('img')[0].style.right = '1px';
viewMenu.getElementsByTagName('img')[0].style.top = '5px';
}
});
this.editorUi.editor.graph.view.addListener(mxEvent.EVENT_SCALE, this.updateZoom);
this.editorUi.editor.addListener('resetGraphView', this.updateZoom);
var elts = this.addItems(['-', 'undo', 'redo']);
elts[1].setAttribute('title', mxResources.get('undo') + ' (' + this.editorUi.actions.get('undo').shortcut + ')');
elts[2].setAttribute('title', mxResources.get('redo') + ' (' + this.editorUi.actions.get('redo').shortcut + ')');
if (sw >= 320)
{
var elts = this.addItems(['-', 'delete']);
elts[1].setAttribute('title', mxResources.get('delete') + ' (' + this.editorUi.actions.get('delete').shortcut + ')');
}
if (sw >= 550)
{
this.addItems(['-', 'toFront', 'toBack']);
}
if (sw >= 740)
{
this.addItems(['-', 'fillColor']);
if (sw >= 780)
{
this.addItems(['strokeColor']);
if (sw >= 820)
{
this.addItems(['shadow']);
}
}
}
if (sw >= 400)
{
this.addSeparator();
if (sw >= 440)
{
this.edgeShapeMenu = this.addMenuFunction('', mxResources.get('connection'), false, mxUtils.bind(this, function(menu)
{
this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_SHAPE, 'width'], [null, null], 'geIcon geSprite geSprite-connection', null, true).setAttribute('title', mxResources.get('line'));
this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_SHAPE, 'width'], ['link', null], 'geIcon geSprite geSprite-linkedge', null, true).setAttribute('title', mxResources.get('link'));
this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_SHAPE, 'width'], ['flexArrow', null], 'geIcon geSprite geSprite-arrow', null, true).setAttribute('title', mxResources.get('arrow'));
this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_SHAPE, 'width'], ['arrow', null], 'geIcon geSprite geSprite-simplearrow', null, true).setAttribute('title', mxResources.get('simpleArrow'));
}));
this.addDropDownArrow(this.edgeShapeMenu, 'geSprite-connection', 44, 50, 0, 0, 22, -4);
}
this.edgeStyleMenu = this.addMenuFunction('geSprite-orthogonal', mxResources.get('waypoints'), false, mxUtils.bind(this, function(menu)
{
this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_EDGE, mxConstants.STYLE_CURVED, mxConstants.STYLE_NOEDGESTYLE], [null, null, null], 'geIcon geSprite geSprite-straight', null, true).setAttribute('title', mxResources.get('straight'));
this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_EDGE, mxConstants.STYLE_CURVED, mxConstants.STYLE_NOEDGESTYLE], ['orthogonalEdgeStyle', null, null], 'geIcon geSprite geSprite-orthogonal', null, true).setAttribute('title', mxResources.get('orthogonal'));
this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_EDGE, mxConstants.STYLE_ELBOW, mxConstants.STYLE_CURVED, mxConstants.STYLE_NOEDGESTYLE], ['elbowEdgeStyle', null, null, null], 'geIcon geSprite geSprite-horizontalelbow', null, true).setAttribute('title', mxResources.get('simple'));
this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_EDGE, mxConstants.STYLE_ELBOW, mxConstants.STYLE_CURVED, mxConstants.STYLE_NOEDGESTYLE], ['elbowEdgeStyle', 'vertical', null, null], 'geIcon geSprite geSprite-verticalelbow', null, true).setAttribute('title', mxResources.get('simple'));
this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_EDGE, mxConstants.STYLE_ELBOW, mxConstants.STYLE_CURVED, mxConstants.STYLE_NOEDGESTYLE], ['isometricEdgeStyle', null, null, null], 'geIcon geSprite geSprite-horizontalisometric', null, true).setAttribute('title', mxResources.get('isometric'));
this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_EDGE, mxConstants.STYLE_ELBOW, mxConstants.STYLE_CURVED, mxConstants.STYLE_NOEDGESTYLE], ['isometricEdgeStyle', 'vertical', null, null], 'geIcon geSprite geSprite-verticalisometric', null, true).setAttribute('title', mxResources.get('isometric'));
this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_EDGE, mxConstants.STYLE_CURVED, mxConstants.STYLE_NOEDGESTYLE], ['orthogonalEdgeStyle', '1', null], 'geIcon geSprite geSprite-curved', null, true).setAttribute('title', mxResources.get('curved'));
this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_EDGE, mxConstants.STYLE_CURVED, mxConstants.STYLE_NOEDGESTYLE], ['entityRelationEdgeStyle', null, null], 'geIcon geSprite geSprite-entity', null, true).setAttribute('title', mxResources.get('entityRelation'));
}));
this.addDropDownArrow(this.edgeStyleMenu, 'geSprite-orthogonal', 44, 50, 0, 0, 22, -4);
}
this.addSeparator();
var insertMenu = this.addMenu('', mxResources.get('insert') + ' (' + mxResources.get('doubleClickTooltip') + ')', true, 'insert', null, true);
this.addDropDownArrow(insertMenu, 'geSprite-plus', 38, 48, -4, -3, 36, -8);
};
/**
* Adds the toolbar elements.
*/
Toolbar.prototype.addDropDownArrow = function(menu, sprite, width, atlasWidth, left, top, atlasDelta, atlasLeft)
{
atlasDelta = (atlasDelta != null) ? atlasDelta : 32;
left = (EditorUi.compactUi) ? left : atlasLeft;
menu.style.whiteSpace = 'nowrap';
menu.style.overflow = 'hidden';
menu.style.position = 'relative';
menu.innerHTML = '<div class="geSprite ' + sprite + '" style="margin-left:' + left + 'px;margin-top:' + top + 'px;"></div>' +
this.dropdownImageHtml;
menu.style.width = (mxClient.IS_QUIRKS) ? atlasWidth + 'px' : (atlasWidth - atlasDelta) + 'px';
if (mxClient.IS_QUIRKS)
{
menu.style.height = (EditorUi.compactUi) ? '24px' : '26px';
}
// Fix for item size in kennedy theme
if (EditorUi.compactUi)
{
menu.getElementsByTagName('img')[0].style.left = '24px';
menu.getElementsByTagName('img')[0].style.top = '5px';
menu.style.width = (mxClient.IS_QUIRKS) ? width + 'px' : (width - 10) + 'px';
}
};
/**
* Sets the current font name.
*/
Toolbar.prototype.setFontName = function(value)
{
if (this.fontMenu != null)
{
this.fontMenu.innerHTML = '<div style="width:60px;overflow:hidden;display:inline-block;">' +
mxUtils.htmlEntities(value) + '</div>' + this.dropdownImageHtml;
}
};
/**
* Sets the current font name.
*/
Toolbar.prototype.setFontSize = function(value)
{
if (this.sizeMenu != null)
{
this.sizeMenu.innerHTML = '<div style="width:24px;overflow:hidden;display:inline-block;">' +
value + '</div>' + this.dropdownImageHtml;
}
};
/**
* Hides the current menu.
*/
Toolbar.prototype.createTextToolbar = function()
{
var graph = this.editorUi.editor.graph;
var styleElt = this.addMenu('', mxResources.get('style'), true, 'formatBlock');
styleElt.style.position = 'relative';
styleElt.style.whiteSpace = 'nowrap';
styleElt.style.overflow = 'hidden';
styleElt.innerHTML = mxResources.get('style') + this.dropdownImageHtml;
if (EditorUi.compactUi)
{
styleElt.style.paddingRight = '18px';
styleElt.getElementsByTagName('img')[0].style.right = '1px';
styleElt.getElementsByTagName('img')[0].style.top = '5px';
}
this.addSeparator();
this.fontMenu = this.addMenu('', mxResources.get('fontFamily'), true, 'fontFamily');
this.fontMenu.style.position = 'relative';
this.fontMenu.style.whiteSpace = 'nowrap';
this.fontMenu.style.overflow = 'hidden';
this.fontMenu.style.width = (mxClient.IS_QUIRKS) ? '80px' : '60px';
this.setFontName(Menus.prototype.defaultFont);
if (EditorUi.compactUi)
{
this.fontMenu.style.paddingRight = '18px';
this.fontMenu.getElementsByTagName('img')[0].style.right = '1px';
this.fontMenu.getElementsByTagName('img')[0].style.top = '5px';
}
this.addSeparator();
this.sizeMenu = this.addMenu(Menus.prototype.defaultFontSize, mxResources.get('fontSize'), true, 'fontSize');
this.sizeMenu.style.position = 'relative';
this.sizeMenu.style.whiteSpace = 'nowrap';
this.sizeMenu.style.overflow = 'hidden';
this.sizeMenu.style.width = (mxClient.IS_QUIRKS) ? '44px' : '24px';
this.setFontSize(Menus.prototype.defaultFontSize);
if (EditorUi.compactUi)
{
this.sizeMenu.style.paddingRight = '18px';
this.sizeMenu.getElementsByTagName('img')[0].style.right = '1px';
this.sizeMenu.getElementsByTagName('img')[0].style.top = '5px';
}
var elts = this.addItems(['-', 'undo', 'redo','-', 'bold', 'italic', 'underline']);
elts[1].setAttribute('title', mxResources.get('undo') + ' (' + this.editorUi.actions.get('undo').shortcut + ')');
elts[2].setAttribute('title', mxResources.get('redo') + ' (' + this.editorUi.actions.get('redo').shortcut + ')');
elts[4].setAttribute('title', mxResources.get('bold') + ' (' + this.editorUi.actions.get('bold').shortcut + ')');
elts[5].setAttribute('title', mxResources.get('italic') + ' (' + this.editorUi.actions.get('italic').shortcut + ')');
elts[6].setAttribute('title', mxResources.get('underline') + ' (' + this.editorUi.actions.get('underline').shortcut + ')');
// KNOWN: Lost focus after click on submenu with text (not icon) in quirks and IE8. This is because the TD seems
// to catch the focus on click in these browsers. NOTE: Workaround in mxPopupMenu for icon items (without text).
var alignMenu = this.addMenuFunction('', mxResources.get('align'), false, mxUtils.bind(this, function(menu)
{
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
document.execCommand('justifyleft', false, null);
}), null, 'geIcon geSprite geSprite-left');
elt.setAttribute('title', mxResources.get('left'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
document.execCommand('justifycenter', false, null);
}), null, 'geIcon geSprite geSprite-center');
elt.setAttribute('title', mxResources.get('center'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
document.execCommand('justifyright', false, null);
}), null, 'geIcon geSprite geSprite-right');
elt.setAttribute('title', mxResources.get('right'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
document.execCommand('justifyfull', false, null);
}), null, 'geIcon geSprite geSprite-justifyfull');
elt.setAttribute('title', mxResources.get('justifyfull'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
document.execCommand('insertorderedlist', false, null);
}), null, 'geIcon geSprite geSprite-orderedlist');
elt.setAttribute('title', mxResources.get('numberedList'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
document.execCommand('insertunorderedlist', false, null);
}), null, 'geIcon geSprite geSprite-unorderedlist');
elt.setAttribute('title', mxResources.get('bulletedList'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
document.execCommand('outdent', false, null);
}), null, 'geIcon geSprite geSprite-outdent');
elt.setAttribute('title', mxResources.get('decreaseIndent'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
document.execCommand('indent', false, null);
}), null, 'geIcon geSprite geSprite-indent');
elt.setAttribute('title', mxResources.get('increaseIndent'));
}));
alignMenu.style.position = 'relative';
alignMenu.style.whiteSpace = 'nowrap';
alignMenu.style.overflow = 'hidden';
alignMenu.innerHTML = '<div class="geSprite geSprite-left" style="margin-left:-2px;"></div>' + this.dropdownImageHtml;
alignMenu.style.width = (mxClient.IS_QUIRKS) ? '50px' : '30px';
if (EditorUi.compactUi)
{
alignMenu.getElementsByTagName('img')[0].style.left = '22px';
alignMenu.getElementsByTagName('img')[0].style.top = '5px';
}
var formatMenu = this.addMenuFunction('', mxResources.get('format'), false, mxUtils.bind(this, function(menu)
{
elt = menu.addItem('', null, this.editorUi.actions.get('subscript').funct,
null, 'geIcon geSprite geSprite-subscript');
elt.setAttribute('title', mxResources.get('subscript') + ' (' + Editor.ctrlKey + '+,)');
elt = menu.addItem('', null, this.editorUi.actions.get('superscript').funct,
null, 'geIcon geSprite geSprite-superscript');
elt.setAttribute('title', mxResources.get('superscript') + ' (' + Editor.ctrlKey + '+.)');
// KNOWN: IE+FF don't return keyboard focus after color dialog (calling focus doesn't help)
elt = menu.addItem('', null, this.editorUi.actions.get('fontColor').funct,
null, 'geIcon geSprite geSprite-fontcolor');
elt.setAttribute('title', mxResources.get('fontColor'));
elt = menu.addItem('', null, this.editorUi.actions.get('backgroundColor').funct,
null, 'geIcon geSprite geSprite-fontbackground');
elt.setAttribute('title', mxResources.get('backgroundColor'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
document.execCommand('removeformat', false, null);
}), null, 'geIcon geSprite geSprite-removeformat');
elt.setAttribute('title', mxResources.get('removeFormat'));
}));
formatMenu.style.position = 'relative';
formatMenu.style.whiteSpace = 'nowrap';
formatMenu.style.overflow = 'hidden';
formatMenu.innerHTML = '<div class="geSprite geSprite-dots" style="margin-left:-2px;"></div>' +
this.dropdownImageHtml;
formatMenu.style.width = (mxClient.IS_QUIRKS) ? '50px' : '30px';
if (EditorUi.compactUi)
{
formatMenu.getElementsByTagName('img')[0].style.left = '22px';
formatMenu.getElementsByTagName('img')[0].style.top = '5px';
}
this.addSeparator();
this.addButton('geIcon geSprite geSprite-code', mxResources.get('html'), function()
{
graph.cellEditor.toggleViewMode();
if (graph.cellEditor.textarea.innerHTML.length > 0 && (graph.cellEditor.textarea.innerHTML != '&nbsp;' || !graph.cellEditor.clearOnChange))
{
window.setTimeout(function()
{
document.execCommand('selectAll', false, null);
});
}
});
this.addSeparator();
// FIXME: Uses geButton here and geLabel in main menu
var insertMenu = this.addMenuFunction('', mxResources.get('insert'), true, mxUtils.bind(this, function(menu)
{
menu.addItem(mxResources.get('insertLink'), null, mxUtils.bind(this, function()
{
this.editorUi.actions.get('link').funct();
}));
menu.addItem(mxResources.get('insertImage'), null, mxUtils.bind(this, function()
{
this.editorUi.actions.get('image').funct();
}));
menu.addItem(mxResources.get('insertHorizontalRule'), null, mxUtils.bind(this, function()
{
document.execCommand('inserthorizontalrule', false, null);
}));
}));
insertMenu.style.whiteSpace = 'nowrap';
insertMenu.style.overflow = 'hidden';
insertMenu.style.position = 'relative';
insertMenu.innerHTML = '<div class="geSprite geSprite-plus" style="margin-left:-4px;margin-top:-3px;"></div>' +
this.dropdownImageHtml;
insertMenu.style.width = (mxClient.IS_QUIRKS) ? '36px' : '16px';
// Fix for item size in kennedy theme
if (EditorUi.compactUi)
{
insertMenu.getElementsByTagName('img')[0].style.left = '24px';
insertMenu.getElementsByTagName('img')[0].style.top = '5px';
insertMenu.style.width = (mxClient.IS_QUIRKS) ? '50px' : '30px';
}
this.addSeparator();
// KNOWN: All table stuff does not work with undo/redo
// KNOWN: Lost focus after click on submenu with text (not icon) in quirks and IE8. This is because the TD seems
// to catch the focus on click in these browsers. NOTE: Workaround in mxPopupMenu for icon items (without text).
var elt = this.addMenuFunction('geIcon geSprite geSprite-table', mxResources.get('table'), false, mxUtils.bind(this, function(menu)
{
var elt = graph.getSelectedElement();
var cell = graph.getParentByName(elt, 'TD', graph.cellEditor.text2);
var row = graph.getParentByName(elt, 'TR', graph.cellEditor.text2);
if (row == null)
{
this.editorUi.menus.addInsertTableItem(menu);
}
else
{
var table = graph.getParentByName(row, 'TABLE', graph.cellEditor.text2);
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
try
{
graph.selectNode(graph.insertColumn(table, (cell != null) ? cell.cellIndex : 0));
}
catch (e)
{
mxUtils.alert(mxResources.get('error') + ': ' + e.message);
}
}), null, 'geIcon geSprite geSprite-insertcolumnbefore');
elt.setAttribute('title', mxResources.get('insertColumnBefore'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
try
{
graph.selectNode(graph.insertColumn(table, (cell != null) ? cell.cellIndex + 1 : -1));
}
catch (e)
{
mxUtils.alert(mxResources.get('error') + ': ' + e.message);
}
}), null, 'geIcon geSprite geSprite-insertcolumnafter');
elt.setAttribute('title', mxResources.get('insertColumnAfter'));
elt = menu.addItem('Delete column', null, mxUtils.bind(this, function()
{
if (cell != null)
{
try
{
graph.deleteColumn(table, cell.cellIndex);
}
catch (e)
{
mxUtils.alert(mxResources.get('error') + ': ' + e.message);
}
}
}), null, 'geIcon geSprite geSprite-deletecolumn');
elt.setAttribute('title', mxResources.get('deleteColumn'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
try
{
graph.selectNode(graph.insertRow(table, row.sectionRowIndex));
}
catch (e)
{
mxUtils.alert(mxResources.get('error') + ': ' + e.message);
}
}), null, 'geIcon geSprite geSprite-insertrowbefore');
elt.setAttribute('title', mxResources.get('insertRowBefore'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
try
{
graph.selectNode(graph.insertRow(table, row.sectionRowIndex + 1));
}
catch (e)
{
mxUtils.alert(mxResources.get('error') + ': ' + e.message);
}
}), null, 'geIcon geSprite geSprite-insertrowafter');
elt.setAttribute('title', mxResources.get('insertRowAfter'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
try
{
graph.deleteRow(table, row.sectionRowIndex);
}
catch (e)
{
mxUtils.alert(mxResources.get('error') + ': ' + e.message);
}
}), null, 'geIcon geSprite geSprite-deleterow');
elt.setAttribute('title', mxResources.get('deleteRow'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
// Converts rgb(r,g,b) values
var color = table.style.borderColor.replace(
/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,
function($0, $1, $2, $3) {
return "#" + ("0"+Number($1).toString(16)).substr(-2) + ("0"+Number($2).toString(16)).substr(-2) + ("0"+Number($3).toString(16)).substr(-2);
});
this.editorUi.pickColor(color, function(newColor)
{
if (newColor == null || newColor == mxConstants.NONE)
{
table.removeAttribute('border');
table.style.border = '';
table.style.borderCollapse = '';
}
else
{
table.setAttribute('border', '1');
table.style.border = '1px solid ' + newColor;
table.style.borderCollapse = 'collapse';
}
});
}), null, 'geIcon geSprite geSprite-strokecolor');
elt.setAttribute('title', mxResources.get('borderColor'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
// Converts rgb(r,g,b) values
var color = table.style.backgroundColor.replace(
/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,
function($0, $1, $2, $3) {
return "#" + ("0"+Number($1).toString(16)).substr(-2) + ("0"+Number($2).toString(16)).substr(-2) + ("0"+Number($3).toString(16)).substr(-2);
});
this.editorUi.pickColor(color, function(newColor)
{
if (newColor == null || newColor == mxConstants.NONE)
{
table.style.backgroundColor = '';
}
else
{
table.style.backgroundColor = newColor;
}
});
}), null, 'geIcon geSprite geSprite-fillcolor');
elt.setAttribute('title', mxResources.get('backgroundColor'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
var value = table.getAttribute('cellPadding') || 0;
var dlg = new FilenameDialog(this.editorUi, value, mxResources.get('apply'), mxUtils.bind(this, function(newValue)
{
if (newValue != null && newValue.length > 0)
{
table.setAttribute('cellPadding', newValue);
}
else
{
table.removeAttribute('cellPadding');
}
}), mxResources.get('spacing'));
this.editorUi.showDialog(dlg.container, 300, 80, true, true);
dlg.init();
}), null, 'geIcon geSprite geSprite-fit');
elt.setAttribute('title', mxResources.get('spacing'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
table.setAttribute('align', 'left');
}), null, 'geIcon geSprite geSprite-left');
elt.setAttribute('title', mxResources.get('left'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
table.setAttribute('align', 'center');
}), null, 'geIcon geSprite geSprite-center');
elt.setAttribute('title', mxResources.get('center'));
elt = menu.addItem('', null, mxUtils.bind(this, function()
{
table.setAttribute('align', 'right');
}), null, 'geIcon geSprite geSprite-right');
elt.setAttribute('title', mxResources.get('right'));
}
}));
elt.style.position = 'relative';
elt.style.whiteSpace = 'nowrap';
elt.style.overflow = 'hidden';
elt.innerHTML = '<div class="geSprite geSprite-table" style="margin-left:-2px;"></div>' + this.dropdownImageHtml;
elt.style.width = (mxClient.IS_QUIRKS) ? '50px' : '30px';
// Fix for item size in kennedy theme
if (EditorUi.compactUi)
{
elt.getElementsByTagName('img')[0].style.left = '22px';
elt.getElementsByTagName('img')[0].style.top = '5px';
}
};
/**
* Hides the current menu.
*/
Toolbar.prototype.hideMenu = function()
{
this.editorUi.hideCurrentMenu();
};
/**
* Adds a label to the toolbar.
*/
Toolbar.prototype.addMenu = function(label, tooltip, showLabels, name, c, showAll)
{
var menu = this.editorUi.menus.get(name);
var elt = this.addMenuFunction(label, tooltip, showLabels, function()
{
menu.funct.apply(menu, arguments);
}, c, showAll);
menu.addListener('stateChanged', function()
{
elt.setEnabled(menu.enabled);
});
return elt;
};
/**
* Adds a label to the toolbar.
*/
Toolbar.prototype.addMenuFunction = function(label, tooltip, showLabels, funct, c, showAll)
{
return this.addMenuFunctionInContainer((c != null) ? c : this.container, label, tooltip, showLabels, funct, showAll);
};
/**
* Adds a label to the toolbar.
*/
Toolbar.prototype.addMenuFunctionInContainer = function(container, label, tooltip, showLabels, funct, showAll)
{
var elt = (showLabels) ? this.createLabel(label) : this.createButton(label);
this.initElement(elt, tooltip);
this.addMenuHandler(elt, showLabels, funct, showAll);
container.appendChild(elt);
return elt;
};
/**
* Adds a separator to the separator.
*/
Toolbar.prototype.addSeparator = function(c)
{
c = (c != null) ? c : this.container;
var elt = document.createElement('div');
elt.className = 'geSeparator';
c.appendChild(elt);
return elt;
};
/**
* Adds given action item
*/
Toolbar.prototype.addItems = function(keys, c, ignoreDisabled)
{
var items = [];
for (var i = 0; i < keys.length; i++)
{
var key = keys[i];
if (key == '-')
{
items.push(this.addSeparator(c));
}
else
{
items.push(this.addItem('geSprite-' + key.toLowerCase(), key, c, ignoreDisabled));
}
}
return items;
};
/**
* Adds given action item
*/
Toolbar.prototype.addItem = function(sprite, key, c, ignoreDisabled)
{
var action = this.editorUi.actions.get(key);
var elt = null;
if (action != null)
{
var tooltip = action.label;
if (action.shortcut != null)
{
tooltip += ' (' + action.shortcut + ')';
}
elt = this.addButton(sprite, tooltip, action.funct, c);
if (!ignoreDisabled)
{
elt.setEnabled(action.enabled);
action.addListener('stateChanged', function()
{
elt.setEnabled(action.enabled);
});
}
}
return elt;
};
/**
* Adds a button to the toolbar.
*/
Toolbar.prototype.addButton = function(classname, tooltip, funct, c)
{
var elt = this.createButton(classname);
c = (c != null) ? c : this.container;
this.initElement(elt, tooltip);
this.addClickHandler(elt, funct);
c.appendChild(elt);
return elt;
};
/**
* Initializes the given toolbar element.
*/
Toolbar.prototype.initElement = function(elt, tooltip)
{
// Adds tooltip
if (tooltip != null)
{
elt.setAttribute('title', tooltip);
}
this.addEnabledState(elt);
};
/**
* Adds enabled state with setter to DOM node (avoids JS wrapper).
*/
Toolbar.prototype.addEnabledState = function(elt)
{
var classname = elt.className;
elt.setEnabled = function(value)
{
elt.enabled = value;
if (value)
{
elt.className = classname;
}
else
{
elt.className = classname + ' mxDisabled';
}
};
elt.setEnabled(true);
};
/**
* Adds enabled state with setter to DOM node (avoids JS wrapper).
*/
Toolbar.prototype.addClickHandler = function(elt, funct)
{
if (funct != null)
{
mxEvent.addListener(elt, 'click', function(evt)
{
if (elt.enabled)
{
funct(evt);
}
mxEvent.consume(evt);
});
if (document.documentMode != null && document.documentMode >= 9)
{
// Prevents focus
mxEvent.addListener(elt, 'mousedown', function(evt)
{
evt.preventDefault();
});
}
}
};
/**
* Creates and returns a new button.
*/
Toolbar.prototype.createButton = function(classname)
{
var elt = document.createElement('a');
elt.setAttribute('href', 'javascript:void(0);');
elt.className = 'geButton';
var inner = document.createElement('div');
if (classname != null)
{
inner.className = 'geSprite ' + classname;
}
elt.appendChild(inner);
return elt;
};
/**
* Creates and returns a new button.
*/
Toolbar.prototype.createLabel = function(label, tooltip)
{
var elt = document.createElement('a');
elt.setAttribute('href', 'javascript:void(0);');
elt.className = 'geLabel';
mxUtils.write(elt, label);
return elt;
};
/**
* Adds a handler for showing a menu in the given element.
*/
Toolbar.prototype.addMenuHandler = function(elt, showLabels, funct, showAll)
{
if (funct != null)
{
var graph = this.editorUi.editor.graph;
var menu = null;
var show = true;
mxEvent.addListener(elt, 'click', mxUtils.bind(this, function(evt)
{
if (show && (elt.enabled == null || elt.enabled))
{
graph.popupMenuHandler.hideMenu();
menu = new mxPopupMenu(funct);
menu.div.className += ' geToolbarMenu';
menu.showDisabled = showAll;
menu.labels = showLabels;
menu.autoExpand = true;
var offset = mxUtils.getOffset(elt);
menu.popup(offset.x, offset.y + elt.offsetHeight, null, evt);
this.editorUi.setCurrentMenu(menu, elt);
// Workaround for scrollbar hiding menu items
if (!showLabels && menu.div.scrollHeight > menu.div.clientHeight)
{
menu.div.style.width = '40px';
}
menu.hideMenu = mxUtils.bind(this, function()
{
mxPopupMenu.prototype.hideMenu.apply(menu, arguments);
this.editorUi.resetCurrentMenu();
menu.destroy();
});
// Extends destroy to reset global state
menu.addListener(mxEvent.EVENT_HIDE, mxUtils.bind(this, function()
{
this.currentElt = null;
}));
}
show = true;
mxEvent.consume(evt);
}));
// Hides menu if already showing
mxEvent.addListener(elt, 'mousedown', mxUtils.bind(this, function(evt)
{
show = this.currentElt != elt;
// Prevents focus
if (document.documentMode != null && document.documentMode >= 9)
{
evt.preventDefault();
}
}));
}
};
/**
* Adds a handler for showing a menu in the given element.
*/
Toolbar.prototype.destroy = function()
{
if (this.gestureHandler != null)
{
mxEvent.removeGestureListeners(document, this.gestureHandler);
this.gestureHandler = null;
}
};

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/jscolor/arrow.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 B

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/jscolor/cross.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 B

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/jscolor/hs.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/jscolor/hv.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

913
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/jscolor/jscolor.js

@ -1,913 +0,0 @@
/**
* jscolor, JavaScript Color Picker
*
* @version 1.3.13
* @license GNU Lesser General Public License, http://www.gnu.org/copyleft/lesser.html
* @author Jan Odvarko, http://odvarko.cz
* @created 2008-06-15
* @updated 2012-01-19
* @link http://jscolor.com
*/
var jscolor = {
dir : '', // location of jscolor directory (leave empty to autodetect)
bindClass : 'color', // class name
binding : true, // automatic binding via <input class="...">
preloading : true, // use image preloading?
install : function() {
//jscolor.addEvent(window, 'load', jscolor.init);
},
init : function() {
if(jscolor.preloading) {
jscolor.preload();
}
},
getDir : function() {
if(!jscolor.dir) {
var detected = jscolor.detectDir();
jscolor.dir = detected!==false ? detected : 'jscolor/';
}
return jscolor.dir;
},
detectDir : function() {
var base = location.href;
var e = document.getElementsByTagName('base');
for(var i=0; i<e.length; i+=1) {
if(e[i].href) { base = e[i].href; }
}
var e = document.getElementsByTagName('script');
for(var i=0; i<e.length; i+=1) {
if(e[i].src && /(^|\/)jscolor\.js([?#].*)?$/i.test(e[i].src)) {
var src = new jscolor.URI(e[i].src);
var srcAbs = src.toAbsolute(base);
srcAbs.path = srcAbs.path.replace(/[^\/]+$/, ''); // remove filename
srcAbs.query = null;
srcAbs.fragment = null;
return srcAbs.toString();
}
}
return false;
},
preload : function() {
for(var fn in jscolor.imgRequire) {
if(jscolor.imgRequire.hasOwnProperty(fn)) {
jscolor.loadImage(fn);
}
}
},
images : {
pad : [ 181, 101 ],
sld : [ 16, 101 ],
cross : [ 15, 15 ],
arrow : [ 7, 11 ]
},
imgRequire : {},
imgLoaded : {},
requireImage : function(filename) {
jscolor.imgRequire[filename] = true;
},
loadImage : function(filename) {
if(!jscolor.imgLoaded[filename]) {
jscolor.imgLoaded[filename] = new Image();
jscolor.imgLoaded[filename].src = jscolor.getDir()+filename;
}
},
fetchElement : function(mixed) {
return typeof mixed === 'string' ? document.getElementById(mixed) : mixed;
},
addEvent : function(el, evnt, func) {
if(el.addEventListener) {
el.addEventListener(evnt, func, false);
} else if(el.attachEvent) {
el.attachEvent('on'+evnt, func);
}
},
fireEvent : function(el, evnt) {
if(!el) {
return;
}
if(document.createEvent) {
var ev = document.createEvent('HTMLEvents');
ev.initEvent(evnt, true, true);
el.dispatchEvent(ev);
} else if(document.createEventObject) {
var ev = document.createEventObject();
el.fireEvent('on'+evnt, ev);
} else if(el['on'+evnt]) { // alternatively use the traditional event model (IE5)
el['on'+evnt]();
}
},
getElementPos : function(e) {
var e1=e, e2=e;
var x=0, y=0;
if(e1.offsetParent) {
do {
x += e1.offsetLeft;
y += e1.offsetTop;
} while(e1 = e1.offsetParent);
}
while((e2 = e2.parentNode) && e2.nodeName.toUpperCase() !== 'BODY') {
x -= e2.scrollLeft;
y -= e2.scrollTop;
}
return [x, y];
},
getElementSize : function(e) {
return [e.offsetWidth, e.offsetHeight];
},
getRelMousePos : function(e) {
var x = 0, y = 0;
if (!e) { e = window.event; }
if (typeof e.offsetX === 'number') {
x = e.offsetX;
y = e.offsetY;
} else if (typeof e.layerX === 'number') {
x = e.layerX;
y = e.layerY;
}
return { x: x, y: y };
},
getViewPos : function() {
if(typeof window.pageYOffset === 'number') {
return [window.pageXOffset, window.pageYOffset];
} else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
return [document.body.scrollLeft, document.body.scrollTop];
} else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
return [document.documentElement.scrollLeft, document.documentElement.scrollTop];
} else {
return [0, 0];
}
},
getViewSize : function() {
if(typeof window.innerWidth === 'number') {
return [window.innerWidth, window.innerHeight];
} else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
return [document.body.clientWidth, document.body.clientHeight];
} else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
return [document.documentElement.clientWidth, document.documentElement.clientHeight];
} else {
return [0, 0];
}
},
URI : function(uri) { // See RFC3986
this.scheme = null;
this.authority = null;
this.path = '';
this.query = null;
this.fragment = null;
this.parse = function(uri) {
var m = uri.match(/^(([A-Za-z][0-9A-Za-z+.-]*)(:))?((\/\/)([^\/?#]*))?([^?#]*)((\?)([^#]*))?((#)(.*))?/);
this.scheme = m[3] ? m[2] : null;
this.authority = m[5] ? m[6] : null;
this.path = m[7];
this.query = m[9] ? m[10] : null;
this.fragment = m[12] ? m[13] : null;
return this;
};
this.toString = function() {
var result = '';
if(this.scheme !== null) { result = result + this.scheme + ':'; }
if(this.authority !== null) { result = result + '//' + this.authority; }
if(this.path !== null) { result = result + this.path; }
if(this.query !== null) { result = result + '?' + this.query; }
if(this.fragment !== null) { result = result + '#' + this.fragment; }
return result;
};
this.toAbsolute = function(base) {
var base = new jscolor.URI(base);
var r = this;
var t = new jscolor.URI;
if(base.scheme === null) { return false; }
if(r.scheme !== null && r.scheme.toLowerCase() === base.scheme.toLowerCase()) {
r.scheme = null;
}
if(r.scheme !== null) {
t.scheme = r.scheme;
t.authority = r.authority;
t.path = removeDotSegments(r.path);
t.query = r.query;
} else {
if(r.authority !== null) {
t.authority = r.authority;
t.path = removeDotSegments(r.path);
t.query = r.query;
} else {
if(r.path === '') { // TODO: == or === ?
t.path = base.path;
if(r.query !== null) {
t.query = r.query;
} else {
t.query = base.query;
}
} else {
if(r.path.substr(0,1) === '/') {
t.path = removeDotSegments(r.path);
} else {
if(base.authority !== null && base.path === '') { // TODO: == or === ?
t.path = '/'+r.path;
} else {
t.path = base.path.replace(/[^\/]+$/,'')+r.path;
}
t.path = removeDotSegments(t.path);
}
t.query = r.query;
}
t.authority = base.authority;
}
t.scheme = base.scheme;
}
t.fragment = r.fragment;
return t;
};
function removeDotSegments(path) {
var out = '';
while(path) {
if(path.substr(0,3)==='../' || path.substr(0,2)==='./') {
path = path.replace(/^\.+/,'').substr(1);
} else if(path.substr(0,3)==='/./' || path==='/.') {
path = '/'+path.substr(3);
} else if(path.substr(0,4)==='/../' || path==='/..') {
path = '/'+path.substr(4);
out = out.replace(/\/?[^\/]*$/, '');
} else if(path==='.' || path==='..') {
path = '';
} else {
var rm = path.match(/^\/?[^\/]*/)[0];
path = path.substr(rm.length);
out = out + rm;
}
}
return out;
}
if(uri) {
this.parse(uri);
}
},
/*
* Usage example:
* var myColor = new jscolor.color(myInputElement)
*/
color : function(target, prop) {
this.required = true; // refuse empty values?
this.adjust = true; // adjust value to uniform notation?
this.hash = false; // prefix color with # symbol?
this.caps = true; // uppercase?
this.slider = true; // show the value/saturation slider?
this.valueElement = target; // value holder
this.styleElement = target; // where to reflect current color
this.onImmediateChange = null; // onchange callback (can be either string or function)
this.hsv = [0, 0, 1]; // read-only 0-6, 0-1, 0-1
this.rgb = [1, 1, 1]; // read-only 0-1, 0-1, 0-1
this.pickerOnfocus = true; // display picker on focus?
this.pickerMode = 'HSV'; // HSV | HVS
this.pickerPosition = 'bottom'; // left | right | top | bottom
this.pickerSmartPosition = true; // automatically adjust picker position when necessary
this.pickerButtonHeight = 20; // px
this.pickerClosable = false;
this.pickerCloseText = 'Close';
this.pickerButtonColor = 'ButtonText'; // px
this.pickerFace = 0; // px
this.pickerFaceColor = 'ThreeDFace'; // CSS color
this.pickerBorder = 1; // px
this.pickerBorderColor = 'ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight'; // CSS color
this.pickerInset = 1; // px
this.pickerInsetColor = 'ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow'; // CSS color
this.pickerZIndex = 10000;
for(var p in prop) {
if(prop.hasOwnProperty(p)) {
this[p] = prop[p];
}
}
this.hidePicker = function() {
if(isPickerOwner()) {
removePicker();
}
};
this.showPicker = function() {
if(!isPickerOwner()) {
var tp = jscolor.getElementPos(target); // target pos
var ts = jscolor.getElementSize(target); // target size
var vp = jscolor.getViewPos(); // view pos
var vs = jscolor.getViewSize(); // view size
var ps = getPickerDims(this); // picker size
var a, b, c;
switch(this.pickerPosition.toLowerCase()) {
case 'left': a=1; b=0; c=-1; break;
case 'right':a=1; b=0; c=1; break;
case 'top': a=0; b=1; c=-1; break;
default: a=0; b=1; c=1; break;
}
var l = (ts[b]+ps[b])/2;
// picker pos
if (!this.pickerSmartPosition) {
var pp = [
tp[a],
tp[b]+ts[b]-l+l*c
];
} else {
var pp = [
-vp[a]+tp[a]+ps[a] > vs[a] ?
(-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) :
tp[a],
-vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ?
(-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) :
(tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c)
];
}
drawPicker(0, 0);
}
};
this.importColor = function() {
if(!valueElement) {
this.exportColor();
} else {
if(!this.adjust) {
if(!this.fromString(valueElement.value, leaveValue)) {
styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage;
styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
styleElement.style.color = styleElement.jscStyle.color;
this.exportColor(leaveValue | leaveStyle);
}
} else if(!this.required && /^\s*$/.test(valueElement.value)) {
valueElement.value = '';
styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage;
styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
styleElement.style.color = styleElement.jscStyle.color;
this.exportColor(leaveValue | leaveStyle);
} else if(this.fromString(valueElement.value)) {
// OK
} else {
this.exportColor();
}
}
};
this.exportColor = function(flags) {
if(!(flags & leaveValue) && valueElement) {
var value = this.toString();
if(this.caps) { value = value.toUpperCase(); }
if(this.hash) { value = '#'+value; }
valueElement.value = value;
}
if(!(flags & leaveStyle) && styleElement) {
styleElement.style.backgroundImage = "none";
styleElement.style.backgroundColor =
'#'+this.toString();
styleElement.style.color =
0.213 * this.rgb[0] +
0.715 * this.rgb[1] +
0.072 * this.rgb[2]
< 0.5 ? '#FFF' : '#000';
}
if(!(flags & leavePad) && isPickerOwner()) {
redrawPad();
}
if(!(flags & leaveSld) && isPickerOwner()) {
redrawSld();
}
};
this.fromHSV = function(h, s, v, flags) { // null = don't change
h<0 && (h=0) || h>6 && (h=6);
s<0 && (s=0) || s>1 && (s=1);
v<0 && (v=0) || v>1 && (v=1);
this.rgb = HSV_RGB(
h===null ? this.hsv[0] : (this.hsv[0]=h),
s===null ? this.hsv[1] : (this.hsv[1]=s),
v===null ? this.hsv[2] : (this.hsv[2]=v)
);
this.exportColor(flags);
};
this.fromRGB = function(r, g, b, flags) { // null = don't change
r<0 && (r=0) || r>1 && (r=1);
g<0 && (g=0) || g>1 && (g=1);
b<0 && (b=0) || b>1 && (b=1);
var hsv = RGB_HSV(
r===null ? this.rgb[0] : (this.rgb[0]=r),
g===null ? this.rgb[1] : (this.rgb[1]=g),
b===null ? this.rgb[2] : (this.rgb[2]=b)
);
if(hsv[0] !== null) {
this.hsv[0] = hsv[0];
}
if(hsv[2] !== 0) {
this.hsv[1] = hsv[1];
}
this.hsv[2] = hsv[2];
this.exportColor(flags);
};
this.fromString = function(hex, flags) {
var m = hex.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);
if(!m) {
return false;
} else {
if(m[1].length === 6) { // 6-char notation
this.fromRGB(
parseInt(m[1].substr(0,2),16) / 255,
parseInt(m[1].substr(2,2),16) / 255,
parseInt(m[1].substr(4,2),16) / 255,
flags
);
} else { // 3-char notation
this.fromRGB(
parseInt(m[1].charAt(0)+m[1].charAt(0),16) / 255,
parseInt(m[1].charAt(1)+m[1].charAt(1),16) / 255,
parseInt(m[1].charAt(2)+m[1].charAt(2),16) / 255,
flags
);
}
return true;
}
};
this.toString = function() {
return (
(0x100 | Math.round(255*this.rgb[0])).toString(16).substr(1) +
(0x100 | Math.round(255*this.rgb[1])).toString(16).substr(1) +
(0x100 | Math.round(255*this.rgb[2])).toString(16).substr(1)
);
};
function RGB_HSV(r, g, b) {
var n = Math.min(Math.min(r,g),b);
var v = Math.max(Math.max(r,g),b);
var m = v - n;
if(m === 0) { return [ null, 0, v ]; }
var h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m);
return [ h===6?0:h, m/v, v ];
}
function HSV_RGB(h, s, v) {
if(h === null) { return [ v, v, v ]; }
var i = Math.floor(h);
var f = i%2 ? h-i : 1-(h-i);
var m = v * (1 - s);
var n = v * (1 - s*f);
switch(i) {
case 6:
case 0: return [v,n,m];
case 1: return [n,v,m];
case 2: return [m,v,n];
case 3: return [m,n,v];
case 4: return [n,m,v];
case 5: return [v,m,n];
}
}
function removePicker() {
delete jscolor.picker.owner;
document.getElementsByTagName('body')[0].removeChild(jscolor.picker.boxB);
}
function drawPicker(x, y) {
if(!jscolor.picker) {
jscolor.picker = {
box : document.createElement('div'),
boxB : document.createElement('div'),
pad : document.createElement('div'),
padB : document.createElement('div'),
padM : document.createElement('div'),
sld : document.createElement('div'),
sldB : document.createElement('div'),
sldM : document.createElement('div'),
btn : document.createElement('div'),
btnS : document.createElement('span'),
btnT : document.createTextNode(THIS.pickerCloseText)
};
for(var i=0,segSize=4; i<jscolor.images.sld[1]; i+=segSize) {
var seg = document.createElement('div');
seg.style.height = segSize+'px';
seg.style.fontSize = '1px';
seg.style.lineHeight = '0';
jscolor.picker.sld.appendChild(seg);
}
jscolor.picker.sldB.appendChild(jscolor.picker.sld);
jscolor.picker.box.appendChild(jscolor.picker.sldB);
jscolor.picker.box.appendChild(jscolor.picker.sldM);
jscolor.picker.padB.appendChild(jscolor.picker.pad);
jscolor.picker.box.appendChild(jscolor.picker.padB);
jscolor.picker.box.appendChild(jscolor.picker.padM);
jscolor.picker.btnS.appendChild(jscolor.picker.btnT);
jscolor.picker.btn.appendChild(jscolor.picker.btnS);
jscolor.picker.box.appendChild(jscolor.picker.btn);
jscolor.picker.boxB.appendChild(jscolor.picker.box);
}
var p = jscolor.picker;
// controls interaction
p.box.onmouseup =
p.box.onmouseout = function() { if (!mxClient.IS_TOUCH) { target.focus(); } };
p.box.onmousedown = function() { abortBlur=true; };
p.box.onmousemove = function(e) {
if (holdPad || holdSld) {
holdPad && setPad(e);
holdSld && setSld(e);
if (document.selection) {
document.selection.empty();
} else if (window.getSelection) {
window.getSelection().removeAllRanges();
}
dispatchImmediateChange();
}
};
p.padM.onmouseup =
p.padM.onmouseout = function() { if(holdPad) { holdPad=false; jscolor.fireEvent(valueElement,'change'); } };
p.padM.onmousedown = function(e) {
// if the slider is at the bottom, move it up
switch(modeID) {
case 0: if (THIS.hsv[2] === 0) { THIS.fromHSV(null, null, 1.0); }; break;
case 1: if (THIS.hsv[1] === 0) { THIS.fromHSV(null, 1.0, null); }; break;
}
holdPad=true;
setPad(e);
dispatchImmediateChange();
};
p.sldM.onmouseup =
p.sldM.onmouseout = function() { if(holdSld) { holdSld=false; jscolor.fireEvent(valueElement,'change'); } };
p.sldM.onmousedown = function(e) {
holdSld=true;
setSld(e);
dispatchImmediateChange();
};
// picker
var dims = getPickerDims(THIS);
p.box.style.width = dims[0] + 'px';
p.box.style.height = dims[1] + 'px';
// picker border
p.boxB.style.position = 'absolute';
p.boxB.style.clear = 'both';
p.boxB.style.left = x+'px';
p.boxB.style.top = y+'px';
p.boxB.style.zIndex = THIS.pickerZIndex;
p.boxB.style.border = THIS.pickerBorder+'px solid';
p.boxB.style.borderColor = THIS.pickerBorderColor;
p.boxB.style.background = THIS.pickerFaceColor;
// pad image
p.pad.style.width = jscolor.images.pad[0]+'px';
p.pad.style.height = jscolor.images.pad[1]+'px';
// pad border
p.padB.style.position = 'absolute';
p.padB.style.left = THIS.pickerFace+'px';
p.padB.style.top = THIS.pickerFace+'px';
p.padB.style.border = THIS.pickerInset+'px solid';
p.padB.style.borderColor = THIS.pickerInsetColor;
// pad mouse area
p.padM.style.position = 'absolute';
p.padM.style.left = '0';
p.padM.style.top = '0';
p.padM.style.width = THIS.pickerFace + 2*THIS.pickerInset + jscolor.images.pad[0] + jscolor.images.arrow[0] + 'px';
p.padM.style.height = p.box.style.height;
p.padM.style.cursor = 'crosshair';
// slider image
p.sld.style.overflow = 'hidden';
p.sld.style.width = jscolor.images.sld[0]+'px';
p.sld.style.height = jscolor.images.sld[1]+'px';
// slider border
p.sldB.style.display = THIS.slider ? 'block' : 'none';
p.sldB.style.position = 'absolute';
p.sldB.style.right = THIS.pickerFace+'px';
p.sldB.style.top = THIS.pickerFace+'px';
p.sldB.style.border = THIS.pickerInset+'px solid';
p.sldB.style.borderColor = THIS.pickerInsetColor;
// slider mouse area
p.sldM.style.display = THIS.slider ? 'block' : 'none';
p.sldM.style.position = 'absolute';
p.sldM.style.right = '0';
p.sldM.style.top = '0';
p.sldM.style.width = jscolor.images.sld[0] + jscolor.images.arrow[0] + THIS.pickerFace + 2*THIS.pickerInset + 'px';
p.sldM.style.height = p.box.style.height;
try {
p.sldM.style.cursor = 'pointer';
} catch(eOldIE) {
p.sldM.style.cursor = 'hand';
}
// "close" button
function setBtnBorder() {
var insetColors = THIS.pickerInsetColor.split(/\s+/);
var pickerOutsetColor = insetColors.length < 2 ? insetColors[0] : insetColors[1] + ' ' + insetColors[0] + ' ' + insetColors[0] + ' ' + insetColors[1];
p.btn.style.borderColor = pickerOutsetColor;
}
p.btn.style.display = THIS.pickerClosable ? 'block' : 'none';
p.btn.style.position = 'absolute';
p.btn.style.left = THIS.pickerFace + 'px';
p.btn.style.bottom = THIS.pickerFace + 'px';
p.btn.style.padding = '0 15px';
p.btn.style.height = '18px';
p.btn.style.border = THIS.pickerInset + 'px solid';
setBtnBorder();
p.btn.style.color = THIS.pickerButtonColor;
p.btn.style.font = '12px sans-serif';
p.btn.style.textAlign = 'center';
try {
p.btn.style.cursor = 'pointer';
} catch(eOldIE) {
p.btn.style.cursor = 'hand';
}
p.btn.onmousedown = function () {
THIS.hidePicker();
};
p.btnS.style.lineHeight = p.btn.style.height;
// load images in optimal order
switch(modeID) {
case 0: var padImg = 'hs.png'; break;
case 1: var padImg = 'hv.png'; break;
}
p.padM.style.backgroundImage = "url('"+jscolor.getDir()+"cross.gif')";
p.padM.style.backgroundRepeat = "no-repeat";
p.sldM.style.backgroundImage = "url('"+jscolor.getDir()+"arrow.gif')";
p.sldM.style.backgroundRepeat = "no-repeat";
p.pad.style.backgroundImage = "url('"+jscolor.getDir()+padImg+"')";
p.pad.style.backgroundRepeat = "no-repeat";
p.pad.style.backgroundPosition = "0 0";
// place pointers
redrawPad();
redrawSld();
jscolor.picker.owner = THIS;
document.getElementsByTagName('body')[0].appendChild(p.boxB);
}
function getPickerDims(o) {
var dims = [
2*o.pickerInset + 2*o.pickerFace + jscolor.images.pad[0] +
(o.slider ? 2*o.pickerInset + 2*jscolor.images.arrow[0] + jscolor.images.sld[0] : 0),
o.pickerClosable ?
4*o.pickerInset + 3*o.pickerFace + jscolor.images.pad[1] + o.pickerButtonHeight :
2*o.pickerInset + 2*o.pickerFace + jscolor.images.pad[1]
];
return dims;
}
function redrawPad() {
// redraw the pad pointer
switch(modeID) {
case 0: var yComponent = 1; break;
case 1: var yComponent = 2; break;
}
var x = Math.round((THIS.hsv[0]/6) * (jscolor.images.pad[0]-1));
var y = Math.round((1-THIS.hsv[yComponent]) * (jscolor.images.pad[1]-1));
jscolor.picker.padM.style.backgroundPosition =
(THIS.pickerFace+THIS.pickerInset+x - Math.floor(jscolor.images.cross[0]/2)) + 'px ' +
(THIS.pickerFace+THIS.pickerInset+y - Math.floor(jscolor.images.cross[1]/2)) + 'px';
// redraw the slider image
var seg = jscolor.picker.sld.childNodes;
switch(modeID) {
case 0:
var rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 1);
for(var i=0; i<seg.length; i+=1) {
seg[i].style.backgroundColor = 'rgb('+
(rgb[0]*(1-i/seg.length)*100)+'%,'+
(rgb[1]*(1-i/seg.length)*100)+'%,'+
(rgb[2]*(1-i/seg.length)*100)+'%)';
}
break;
case 1:
var rgb, s, c = [ THIS.hsv[2], 0, 0 ];
var i = Math.floor(THIS.hsv[0]);
var f = i%2 ? THIS.hsv[0]-i : 1-(THIS.hsv[0]-i);
switch(i) {
case 6:
case 0: rgb=[0,1,2]; break;
case 1: rgb=[1,0,2]; break;
case 2: rgb=[2,0,1]; break;
case 3: rgb=[2,1,0]; break;
case 4: rgb=[1,2,0]; break;
case 5: rgb=[0,2,1]; break;
}
for(var i=0; i<seg.length; i+=1) {
s = 1 - 1/(seg.length-1)*i;
c[1] = c[0] * (1 - s*f);
c[2] = c[0] * (1 - s);
seg[i].style.backgroundColor = 'rgb('+
(c[rgb[0]]*100)+'%,'+
(c[rgb[1]]*100)+'%,'+
(c[rgb[2]]*100)+'%)';
}
break;
}
}
function redrawSld() {
// redraw the slider pointer
switch(modeID) {
case 0: var yComponent = 2; break;
case 1: var yComponent = 1; break;
}
var y = Math.round((1-THIS.hsv[yComponent]) * (jscolor.images.sld[1]-1));
jscolor.picker.sldM.style.backgroundPosition =
'0 ' + (THIS.pickerFace+THIS.pickerInset+y - Math.floor(jscolor.images.arrow[1]/2)) + 'px';
}
function isPickerOwner() {
return jscolor.picker && jscolor.picker.owner === THIS;
}
function blurTarget() {
if(valueElement === target) {
THIS.importColor();
}
if(THIS.pickerOnfocus) {
THIS.hidePicker();
}
}
function blurValue() {
if(valueElement !== target) {
THIS.importColor();
}
}
function setPad(e) {
var mpos = jscolor.getRelMousePos(e);
var x = mpos.x - THIS.pickerFace - THIS.pickerInset;
var y = mpos.y - THIS.pickerFace - THIS.pickerInset;
switch(modeID) {
case 0: THIS.fromHSV(x*(6/(jscolor.images.pad[0]-1)), 1 - y/(jscolor.images.pad[1]-1), null, leaveSld); break;
case 1: THIS.fromHSV(x*(6/(jscolor.images.pad[0]-1)), null, 1 - y/(jscolor.images.pad[1]-1), leaveSld); break;
}
}
function setSld(e) {
var mpos = jscolor.getRelMousePos(e);
var y = mpos.y - THIS.pickerFace - THIS.pickerInset;
switch(modeID) {
case 0: THIS.fromHSV(null, null, 1 - y/(jscolor.images.sld[1]-1), leavePad); break;
case 1: THIS.fromHSV(null, 1 - y/(jscolor.images.sld[1]-1), null, leavePad); break;
}
}
function dispatchImmediateChange() {
if (THIS.onImmediateChange) {
if (typeof THIS.onImmediateChange === 'string') {
eval(THIS.onImmediateChange);
} else {
THIS.onImmediateChange(THIS);
}
}
}
var THIS = this;
var modeID = this.pickerMode.toLowerCase()==='hvs' ? 1 : 0;
var abortBlur = false;
var
valueElement = jscolor.fetchElement(this.valueElement),
styleElement = jscolor.fetchElement(this.styleElement);
var
holdPad = false,
holdSld = false;
var
leaveValue = 1<<0,
leaveStyle = 1<<1,
leavePad = 1<<2,
leaveSld = 1<<3;
// target
/*jscolor.addEvent(target, 'focus', function() {
if(THIS.pickerOnfocus) { THIS.showPicker(); }
});
jscolor.addEvent(target, 'blur', function() {
if(!abortBlur) {
window.setTimeout(function(){ abortBlur || blurTarget(); abortBlur=false; }, 0);
} else {
abortBlur = false;
}
});*/
// valueElement
if(valueElement) {
var updateField = function() {
THIS.fromString(valueElement.value, leaveValue);
dispatchImmediateChange();
};
jscolor.addEvent(valueElement, 'keyup', updateField);
jscolor.addEvent(valueElement, 'input', updateField);
jscolor.addEvent(valueElement, 'blur', blurValue);
valueElement.setAttribute('autocomplete', 'off');
}
// styleElement
if(styleElement) {
styleElement.jscStyle = {
backgroundImage : styleElement.style.backgroundImage,
backgroundColor : styleElement.style.backgroundColor,
color : styleElement.style.color
};
}
// require images
switch(modeID) {
case 0: jscolor.requireImage('hs.png'); break;
case 1: jscolor.requireImage('hv.png'); break;
}
jscolor.requireImage('cross.gif');
jscolor.requireImage('arrow.gif');
this.importColor();
}
};
jscolor.install();

222
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/open.html

@ -1,222 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Open Diagram</title>
<link rel="stylesheet" type="text/css" href="styles/grapheditor.css" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<script type="text/javascript">
// Reads files locally
function handleFiles(files)
{
for (var i = 0; i < files.length; i++)
{
(function(file)
{
// Small hack to support import
if (window.parent.openNew)
{
window.parent.open(window.parent.location.href);
}
var reader = new FileReader();
reader.onload = function(e)
{
window.parent.openFile.setData(e.target.result, file.name);
};
reader.onerror = function(e)
{
console.log(e);
};
reader.readAsText(file);
})(files[i]);
}
};
// Handles form-submit by preparing to process response
function handleSubmit()
{
var form = window.openForm || document.getElementById('openForm');
// Checks for support of the File API for local file access
// except for files where the parse is on the server
if (window.parent.Graph.fileSupport && form.upfile.files.length > 0)
{
handleFiles(form.upfile.files);
return false;
}
else
{
if (/(\.xml)$/i.test(form.upfile.value) || /(\.txt)$/i.test(form.upfile.value) ||
/(\.mxe)$/i.test(form.upfile.value))
{
// Small hack to support import
if (window.parent.openNew)
{
window.parent.open(window.parent.location.href);
}
// NOTE: File is loaded via JS injection into the iframe, which in turn sets the
// file contents in the parent window. The new window asks its opener if any file
// contents are available or waits for the contents to become available.
return true;
}
else
{
window.parent.mxUtils.alert(window.parent.mxResources.get('invalidOrMissingFile'));
return false;
}
}
};
// Hides this dialog
function hideWindow(cancel)
{
window.parent.openFile.cancel(cancel);
}
function fileChanged()
{
var form = window.openForm || document.getElementById('openForm');
var openButton = document.getElementById('openButton');
if (form.upfile.value.length > 0)
{
openButton.removeAttribute('disabled');
}
else
{
openButton.setAttribute('disabled', 'disabled');
}
}
function main()
{
if (window.parent.Editor.useLocalStorage)
{
document.body.innerHTML = '';
var div = document.createElement('div');
div.style.fontFamily = 'Arial';
if (localStorage.length == 0)
{
window.parent.mxUtils.write(div, window.parent.mxResources.get('noFiles'));
}
else
{
var keys = [];
for (var i = 0; i < localStorage.length; i++)
{
keys.push(localStorage.key(i));
}
// Sorts the array by filename (key)
keys.sort(function (a, b)
{
return a.toLowerCase().localeCompare(b.toLowerCase());
});
for (var i = 0; i < keys.length; i++)
{
var link = document.createElement('a');
link.style.fontDecoration = 'none';
link.style.fontSize = '14pt';
var key = keys[i];
window.parent.mxUtils.write(link, key);
link.setAttribute('href', 'javascript:void(0);');
div.appendChild(link);
var img = document.createElement('span');
img.className = 'geSprite geSprite-delete';
img.style.position = 'relative';
img.style.cursor = 'pointer';
img.style.display = 'inline-block';
div.appendChild(img);
window.parent.mxUtils.br(div);
window.parent.mxEvent.addListener(img, 'click', (function(k)
{
return function()
{
if (window.parent.mxUtils.confirm(window.parent.mxResources.get('delete') + ' "' + k + '"?'))
{
localStorage.removeItem(k);
window.location.reload();
}
};
})(key));
window.parent.mxEvent.addListener(link, 'click', (function(k)
{
return function()
{
try
{
window.parent.open(window.parent.location.href);
window.parent.openFile.setData(localStorage.getItem(k), k);
}
catch (e)
{
window.parent.mxUtils.alert(e.message);
}
};
})(key));
}
}
window.parent.mxUtils.br(div);
window.parent.mxUtils.br(div);
var cancelBtn = window.parent.mxUtils.button(window.parent.mxResources.get('cancel'), function()
{
hideWindow(true);
});
cancelBtn.className = 'geBtn';
div.appendChild(cancelBtn);
document.body.appendChild(div);
}
else
{
var editLink = document.getElementById('editLink');
var openButton = document.getElementById('openButton');
openButton.value = window.parent.mxResources.get(window.parent.openKey || 'open');
var cancelButton = document.getElementById('cancelButton');
cancelButton.value = window.parent.mxResources.get('cancel');
var supportedText = document.getElementById('openSupported');
supportedText.innerHTML = window.parent.mxResources.get('openSupported');
var form = window.openForm || document.getElementById('openForm');
form.setAttribute('action', window.parent.OPEN_URL);
}
};
</script>
<body onload="main();">
<form method="POST" enctype="multipart/form-data" action="" name="openForm"
id="openForm" onsubmit="return handleSubmit();" accept-charset="UTF-8">
<table style="width:100%;">
<tr>
<td style="height:40px;vertical-align:top;" colspan="2">
<input type="file" name="upfile" onchange="fileChanged()">
</td>
</tr>
<tr>
<td colspan="2" height="120px" id="openSupported" style="font-family:arial;color:grey;font-size:9pt;vertical-align:top;text-align:left;">
</td>
</tr>
<tr>
<td>
</td>
<td style="vertical-align:middle;text-align:right;white-space:nowrap;">
<input type="button" id="cancelButton" class="geBtn" value="Cancel" onclick="hideWindow(true);">
<input type="submit" id="openButton" class="geBtn gePrimaryBtn" value="Open" disabled="disabled">
</td>
</tr>
</table>
</form>
</body>
</html>

321
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/resources/grapheditor.txt

@ -1,321 +0,0 @@
# Resources from graph.properties
alreadyConnected=Nodes already connected
cancel=Cancel
close=Close
collapse-expand=Collapse/Expand
containsValidationErrors=Contains validation errors
done=Done
doubleClickOrientation=Doubleclick to Change Orientation
error=Error
errorSavingFile=Error saving file
ok=OK
updatingDocument=Updating Document. Please wait...
updatingSelection=Updating Selection. Please wait...
# Custom resources
about=About
actualSize=Actual Size
add=Add
addLayer=Add Layer
addProperty=Add Property
addToExistingDrawing=Add to Existing Drawing
addWaypoint=Add Waypoint
advanced=Advanced
align=Align
alignment=Alignment
allChangesLost=All changes will be lost!
angle=Angle
apply=Apply
arc=Arc
arrange=Arrange
arrow=Arrow
arrows=Arrows
automatic=Automatic
autosave=Autosave
autosize=Autosize
background=Background
backgroundColor=Background Color
backgroundImage=Background Image
basic=Basic
block=Block
blockquote=Blockquote
bold=Bold
border=Border
borderWidth=Borderwidth
borderColor=Border Color
bottom=Bottom
bottomAlign=Bottom Align
bottomLeft=Bottom Left
bottomRight=Bottom Right
bulletedList=Bulleted List
cannotOpenFile=Cannot open file
center=Center
change=Change
changeOrientation=Change Orientation
circle=Circle
classic=Classic
clearDefaultStyle=Clear Default Style
clearWaypoints=Clear Waypoints
clipart=Clipart
collapse=Collapse
collapseExpand=Collapse/Expand
collapsible=Collapsible
comic=Comic
configure=Configure
connect=Connect
connection=Connection
connectionPoints=Connection points
connectionArrows=Connection arrows
constrainProportions=Constrain Proportions
copy=Copy
copyConnect=Copy on Connect
copySize=Copy Size
create=Create
curved=Curved
custom=Custom
cut=Cut
dashed=Dashed
decreaseIndent=Decrease Indent
default=Default
delete=Delete
deleteColumn=Delete Column
deleteRow=Delete Row
diagram=Diagram
diamond=Diamond
diamondThin=Diamond (thin)
direction=Direction
distribute=Distribute
divider=Divider
documentProperties=Document Properties
dotted=Dotted
drawing=Drawing{1}
drawingEmpty=Drawing is empty
drawingTooLarge=Drawing is too large
duplicate=Duplicate
duplicateIt=Duplicate {1}
east=East
edit=Edit
editData=Edit Data
editDiagram=Edit Diagram
editImage=Edit Image
editLink=Edit Link
editStyle=Edit Style
editTooltip=Edit Tooltip
enterGroup=Enter Group
enterValue=Enter Value
enterName=Enter Name
enterPropertyName=Enter Property Name
entityRelation=Entity Relation
exitGroup=Exit Group
expand=Expand
export=Export
extras=Extras
file=File
fileNotFound=File not found
filename=Filename
fill=Fill
fillColor=Fill Color
fitPage=One Page
fitPageWidth=Page Width
fitTwoPages=Two Pages
fitWindow=Fit Window
flip=Flip
flipH=Flip Horizontal
flipV=Flip Vertical
font=Font
fontFamily=Font Family
fontColor=Font Color
fontSize=Font Size
format=Format
formatPanel=Format Panel
general=Allgemein
formatPdf=PDF
formatPng=PNG
formatGif=GIF
formatJpg=JPEG
formatSvg=SVG
formatXml=XML
formatted=Formatted
formattedText=Formatted Text
gap=Gap
glass=Glass
general=General
global=Global
gradient=Gradient
gradientColor=Color
grid=Grid
gridSize=Grid Size
group=Group
guides=Guides
heading=Heading
height=Height
help=Help
hide=Hide
hideIt=Hide {1}
hidden=Hidden
home=Home
horizontal=Horizontal
horizontalFlow=Horizontal Flow
horizontalTree=Horizontal Tree
html=HTML
id=ID
image=Image
images=Images
import=Import
increaseIndent=Increase Indent
insert=Insert
insertColumnBefore=Insert Column Left
insertColumnAfter=Insert Column Right
insertHorizontalRule=Insert Horizontal Rule
insertImage=Insert Image
insertLink=Insert Link
insertRowBefore=Insert Row Above
insertRowAfter=Insert Row Below
invalidName=Invalid name
invalidOrMissingFile=Invalid or missing file
isometric=Isometric
italic=Italic
layers=Layers
landscape=Landscape
laneColor=Lanecolor
layout=Layout
left=Left
leftAlign=Left Align
leftToRight=Left to Right
line=Line
link=Link
lineJumps=Line jumps
lineend=Line End
lineheight=Line Height
linestart=Line Start
linewidth=Linewidth
loading=Loading
lockUnlock=Lock/Unlock
manual=Manual
middle=Middle
misc=Misc
more=More
moreResults=More Results
move=Move
moveSelectionTo=Move Selection to {1}
navigation=Navigation
new=New
noColor=No Color
noFiles=No files
noMoreResults=No more results
none=None
noResultsFor=No results for '{1}'
normal=Normal
north=North
numberedList=Numbered List
opacity=Opacity
open=Open
openArrow=Open Arrow
openFile=Open File
openLink=Open Link
openSupported=Supported format is .XML files saved from this software
openInNewWindow=Open in New Window
openInThisWindow=Open in this Window
options=Options
organic=Organic
orthogonal=Orthogonal
outline=Outline
oval=Oval
pages=Pages
pageView=Page View
pageScale=Page Scale
pageSetup=Page Setup
panTooltip=Space+Drag to Scroll
paperSize=Paper Size
paste=Paste
pasteHere=Paste Here
pasteSize=Paste Size
pattern=Pattern
perimeter=Perimeter
placeholders=Placeholders
plusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).
portrait=Portrait
position=Position
posterPrint=Poster Print
preview=Preview
print=Print
radialTree=Radial Tree
redo=Redo
removeFormat=Clear Formatting
removeFromGroup=Remove from Group
removeIt=Remove {1}
removeWaypoint=Remove Waypoint
rename=Rename
renameIt=Rename {1}
replace=Replace
replaceIt={1} already exists. Do you want to replace it?
replaceExistingDrawing=Replace existing drawing
reset=Reset
resetView=Reset View
reverse=Reverse
right=Right
rightAlign=Right Align
rightToLeft=Right to Left
rotate=Rotate
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
rotation=Rotation
rounded=Rounded
save=Save
saveAs=Save as
saved=Saved
scrollbars=Scrollbars
search=Search
searchShapes=Search Shapes
selectAll=Select All
selectEdges=Select Edges
selectFont=Select a Font
selectNone=Select None
selectVertices=Select Vertices
setAsDefaultStyle=Set as Default Style
shadow=Shadow
shape=Shape
sharp=Sharp
sidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.
simple=Simple
simpleArrow=Simple Arrow
size=Size
solid=Solid
sourceSpacing=Source Spacing
south=South
spacing=Spacing
straight=Straight
strokeColor=Line Color
style=Style
subscript=Subscript
superscript=Superscript
table=Table
targetSpacing=Target Spacing
text=Text
textAlignment=Text Alignment
textOpacity=Text Opacity
toBack=To Back
toFront=To Front
tooltips=Tooltips
top=Top
topAlign=Top Align
topLeft=Top Left
topRight=Top Right
transparent=Transparent
turn=Rotate 90°
uml=UML
underline=Underline
undo=Undo
ungroup=Ungroup
url=URL
untitledLayer=Untitled Layer
vertical=Vertical
verticalFlow=Vertical Flow
verticalTree=Vertical Tree
view=View
waypoints=Waypoints
west=West
width=Width
wordWrap=Word Wrap
writingDirection=Writing Direction
zoom=Zoom
zoomIn=Zoom In
zoomOut=Zoom Out

320
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/resources/grapheditor_de.txt

@ -1,320 +0,0 @@
# Resources from graph.properties
alreadyConnected=Knoten schon verbunden
cancel=Abbrechen
close=Schliessen
collapse-expand=Einklappen/Ausklappen
containsValidationErrors=Enthält Validierungsfehler
done=Fertig
doubleClickOrientation=Doppelklicken um Orientierung zu ändern
error=Fehler
errorSavingFile=Fehler beim Speichern der Datei
ok=OK
updatingDocument=Aktualisiere Dokument. Bitte warten...
updatingSelection=Aktualisiere Markierung. Bitte warten...
# Custom resources
about=Über
actualSize=Tatsächliche Grösse
add=Hinzufügen
addLayer=Ebene einfügen
addProperty=Eigenschaft einfügen
addToExistingDrawing=In vorhandene Zeichnung einfügen
addWaypoint=Wegpunkt einfügen
advanced=Erweitert
align=Ausrichten
alignment=Ausrichtung
allChangesLost=Alle Änderungen gehen verloren!
angle=Winkel
apply=Anwenden
arc=Bogen
arrange=Anordnen
arrow=Pfeil
arrows=Pfeile
automatic=Automatisch
autosave=Automatisch Speichern
autosize=Grösse anpassen
background=Hintergrund
backgroundColor=Hintergrundfarbe
backgroundImage=Hintergrundbild
basic=Einfach
block=Block
blockquote=Zitat
bold=Fett
border=Rahmen
borderWidth=Rahmenbreite
borderColor=Rahmenfarbe
bottom=Unten
bottomAlign=Unten
bottomLeft=Unten links
bottomRight=Unten rechts
bulletedList=Aufzählungsliste
cannotOpenFile=Kann Datei nicht öffnen
center=Zentriert
change=Ändern
changeOrientation=Orientierung ändern
circle=Kreis
classic=Klassisch
clearDefaultStyle=Standardstyle löschen
clearWaypoints=Wegpunkte löschen
clipart=Clipart
collapse=Einklappen
collapseExpand=Ein-/Ausklappen
collapsible=Einklappbar
comic=Comic
connect=Verbinden
connection=Verbindung
connectionPoints=Verbindungspunkte
connectionArrows=Verbindungspfeile
constrainProportions=Proportionen beibehalten
copy=Kopieren
copyConnect=Beim Verbinden kopieren
copySize=Grösse kopieren
create=Erstellen
curved=Gebogen
custom=Benutzerdefiniert
cut=Ausschneiden
dashed=Gestrichelt
decreaseIndent=Einzug verringern
default=Vorgegeben
delete=Löschen
deleteColumn=Spalte löschen
deleteRow=Zeile löschen
diagram=Diagramm
diamond=Diamant
diamondThin=Diamant (Schmal)
direction=Richtung
distribute=Verteilen
divider=Treelinie
dotted=Punktiert
documentProperties=Dokumenteigenschaften
drawing=Zeichnung{1}
drawingEmpty=Zeichnung ist leer
drawingTooLarge=Zeichnung ist zu gross
duplicate=Duplizieren
duplicateIt={1} duplizieren
east=Ost
edit=Bearbeiten
editData=Metadaten bearbeiten
editDiagram=Diagramm bearbeiten
editImage=Bild bearbeiten
editLink=Link bearbeiten
editStyle=Style bearbeiten
editTooltip=Tooltip bearbeiten
enterGroup=In Gruppe hinein
enterValue=Wert eingeben
enterName=Namen eingeben
enterPropertyName=Eigenschaftsname eingeben
entityRelation=Entity Relation
exitGroup=Aus Gruppe heraus
expand=Ausklappen
export=Exportieren
extras=Extras
file=Datei
fileNotFound=Datei nicht gefunden
filename=Dateiname
fill=Füllen
fillColor=Füllfarbe
fitPage=Ganze Seite
fitPageWidth=Seitenbreite
fitTwoPages=Zwei Seiten
fitWindow=An Fenstergrösse anpassen
flip=Spiegeln
flipH=Horizontal Spiegeln
flipV=Vertikal Spiegeln
font=Schrift
fontFamily=Schriftart
fontColor=Schriftfarbe
fontSize=Schriftgrösse
format=Format
formatPanel=Bereich "Formatieren"
general=Allgemein
formatPdf=PDF
formatPng=PNG
formatGif=GIF
formatJpg=JPEG
formatSvg=SVG
formatXml=XML
formatted=Formatiert
formattedText=Formatierter Text
gap=Gap
glass=Glas
general=Allgemein
global=Global
gradient=Verlauf
gradientColor=Farbe
grid=Gitternetz
gridSize=Gitternetzgrösse
group=Gruppieren
guides=Führungslinien
heading=Überschrift
height=Höhe
help=Hilfe
hide=Verstecken
hideIt={1} verstecken
hidden=Versteckt
home=Ursprung
horizontal=Horizontal
horizontalFlow=Horizontaler Fluss
horizontalTree=Horizontaler Baum
html=HTML
id=ID
image=Bild
images=Bilder
import=Importieren
increaseIndent=Einzug vergrössern
insert=Einfügen
insertColumnBefore=Spalte links einfügen
insertColumnAfter=Spalte rechts einfügen
insertHorizontalRule=Horizontale Linie einfügen
insertImage=Bild einfügen
insertLink=Link einfügen
insertRowBefore=Zeile oberhalb einfügen
insertRowAfter=Zeile unterhalb einfügen
invalidName=Ungültiger Name
invalidOrMissingFile=Ungültige oder fehlende Datei
isometric=Isometrisch
italic=Kursiv
layers=Ebenen
landscape=Querformat
laneColor=Lane-Farbe
layout=Layout
left=Links
leftAlign=Links
leftToRight=Von links nach rechts
line=Linie
lineJumps=Liniensprünge
link=Link
lineend=Linienende
lineheight=Zeilenhöhe
linestart=Linienanfang
linewidth=Linienbreite
loading=Wird geladen
lockUnlock=Sperren/Entsperren
manual=Manuell
middle=Mitte
misc=Verschiedenes
more=Mehr
moreResults=Mehr Resultate
move=Verschieben
moveSelectionTo=Markierung in {1} einfügen
navigation=Navigation
new=Neu
noColor=Keine Farbe
noFiles=Keine Dateien
noMoreResults=Keine Weiteren Resultate
none=Ohne
noResultsFor=Keine Resultate für '{1}'
normal=Normal
north=Nord
numberedList=Nummerierte Liste
opacity=Deckkraft
open=Öffnen
openArrow=Offen
openFile=Datei öffnen
openLink=Link öffnen
openSupported=Unterstützte Formate sind mit dieser Anwendung erstellte .XML Dateien
openInNewWindow=In neuem Fenster öffnen
openInThisWindow=In diesem Fenster öffnen
options=Optionen
organic=Organisch
orthogonal=Orthogonal
outline=Übersicht
oval=Oval
pages=Seiten
pageView=Seitenansicht
pageScale=Seitenskalierung
pageSetup=Seite einrichten
panTooltip=Leertaste+Ziehen um zu scrollen
paperSize=Papiergrösse
paste=Einfügen
pasteHere=Hier einfügen
pasteSize=Grösse einfügen
pattern=Muster
perimeter=Umfang
placeholders=Platzhalter
plusTooltip=Klicken zum Verbinden und Klonen (Ctrl-Taste gedrückt halten zum Klonen, Shift+Klick zum Verbinden). Ziehen zum verbinden (Ctrl-Taste gedrückt halten zum Klonen).
portrait=Hochformat
position=Position
posterPrint=Posterdruck
preview=Vorschau
print=Drucken
radialTree=Radialer Baum
redo=Wiederherstellen
removeFormat=Formatierung entfernen
removeFromGroup=Aus Gruppe entfernen
removeIt={1} entfernen
removeWaypoint=Wegpunkt entfernen
rename=Umbenennen
renameIt={1} umbenennen
replace=Ersetzen
replaceIt={1} existiert bereits. Soll die Datei überschrieben werden?
replaceExistingDrawing=Vorhandene Zeichnung ersetzen
reset=Zurücksetzen
resetView=Ansicht zurücksetzen
reverse=Umdrehen
right=Rechts
rightAlign=Rechts
rightToLeft=Von rechts nach links
rotate=Rotieren
rotateTooltip=Klicken und ziehen um zu rotieren, klicken für 90 Grad Drehung
rotation=Rotation
rounded=Abgerundet
save=Speichern
saveAs=Speichern unter
saved=Gespeichert
scrollbars=Scrollbars
search=Suchen
searchShapes=Formen suchen
selectAll=Alles markieren
selectEdges=Kanten markieren
selectFont=Schriftart wählen
selectNone=Markierung aufheben
selectVertices=Knoten markieren
setAsDefaultStyle=Als Standardstyle festlegen
shadow=Schatten
shape=Shape
sharp=Eckig
sidebarTooltip=Klicken um zu erweitern. Objekte per Drag & Drop ins Diagramm einfügen. Shift+Klick um die Markierung zu ändern. Alt+Klick zum Einfügen und Verbinden.
simple=Einfach
simpleArrow=Einfacher Pfeil
size=Grösse
solid=Durchgehend
sourceSpacing=Anfangsabstand
south=Süd
spacing=Abstand
straight=Gerade
strokeColor=Linienfarbe
style=Style
subscript=Tiefgestellt
superscript=Hochgestellt
table=Tabelle
targetSpacing=Endabstand
text=Text
textAlignment=Text Ausrichtung
textOpacity=Text Deckkraft
toBack=Nach hinten
toFront=Nach vorne
tooltips=Tooltips
top=Oben
topLeft=Oben links
topRight=Oben rechts
topAlign=Oben
transparent=Transparent
turn=Drehen 90°
uml=UML
underline=Unterstrichen
undo=Rückgängig
ungroup=Gruppierung aufheben
untitledLayer=Unbenannte Ebene
url=URL
vertical=Vertikal
verticalFlow=Vertikaler Fluss
verticalTree=Vertikaler Baum
view=Ansicht
waypoints=Wegpunkte
west=West
width=Breite
wordWrap=Autom. Zeilenumbruch
writingDirection=Textrichtung
zoom=Zoom
zoomIn=Hineinzoomen
zoomOut=Herauszoomen

321
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/resources/grapheditor_zh.txt

@ -1,321 +0,0 @@
# Resources from graph.properties
alreadyConnected=Nodes already connected
cancel=取消
close=关闭
collapse-expand=折叠/展开
containsValidationErrors=Contains validation errors
done=完成
doubleClickOrientation=双击改变方向
error=错误
errorSavingFile=保存文件时发生错误
ok=确定
updatingDocument=正在更新文档. 请等待 ...
updatingSelection=正在更新选择的内容. 请等待 ...
# Custom resources
about=关于
actualSize=实际大小
add=添加
addLayer=添加层
addProperty=添加属性
addToExistingDrawing=添加到当前图表中
addWaypoint=添加路径点
advanced=高级
align=对齐
alignment=对齐
allChangesLost=将丢失所有更改!
angle=角度
apply=应用
arc=Arc
arrange=排列
arrow=Arrow
arrows=Arrows
automatic=自动
autosave=自动保存
autosize=自动大小
background=背景
backgroundColor=背景色
backgroundImage=背景图片
basic=基本
block=块
blockquote=块引用
bold=粗体
border=边框
borderWidth=边框宽度
borderColor=边框颜色
bottom=下
bottomAlign=底部对齐
bottomLeft=左下
bottomRight=右下
bulletedList=Bulleted List
cannotOpenFile=不能打开文件
center=水平居中
change=改变
changeOrientation=改变方向
circle=圆
classic=经典
clearDefaultStyle=清除默认样式
clearWaypoints=清除路径点
clipart=Clipart
collapse=折叠
collapseExpand=折叠/展开
collapsible=可折叠
comic=手稿
configure=配置
connect=连接
connection=连接
connectionPoints=鼠标移动到组件上时,显示连接点
connectionArrows=鼠标移动到组件上时,显示连接箭头
constrainProportions=强制比例
copy=复制
copyConnect=Copy on Connect
copySize=复制大小
create=创建
curved=弧形
custom=定制
cut=剪切
dashed=虚线
decreaseIndent=减少缩进
default=默认
delete=删除
deleteColumn=删除列
deleteRow=删除行
diagram=图表
diamond=菱形
diamondThin=Diamond (thin)
direction=Direction
distribute=Distribute
divider=Divider
documentProperties=文档属性
dotted=Dotted
drawing=Drawing{1}
drawingEmpty=Drawing is empty
drawingTooLarge=Drawing is too large
duplicate=Duplicate
duplicateIt=Duplicate {1}
east=东
edit=编辑
editData=编辑数据
editDiagram=编辑图表XML
editImage=编辑图片
editLink=编辑链接
editStyle=编辑样式
editTooltip=Edit Tooltip
enterGroup=Enter Group
enterValue=Enter Value
enterName=Enter Name
enterPropertyName=Enter Property Name
entityRelation=Entity Relation
exitGroup=Exit Group
expand=Expand
export=导出
extras=Extras
file=文件
fileNotFound=文件未发现
filename=文件名
fill=填充
fillColor=填充颜色
fitPage=一页
fitPageWidth=页宽度
fitTwoPages=两页
fitWindow=适合窗口
flip=翻转
flipH=Flip Horizontal
flipV=Flip Vertical
font=字体
fontFamily=字体族
fontColor=字体颜色
fontSize=字体大小
format=格式
formatPanel=格式面板
general=Allgemein
formatPdf=PDF
formatPng=PNG
formatGif=GIF
formatJpg=JPEG
formatSvg=SVG
formatXml=XML
formatted=Formatted
formattedText=格式化文本
gap=Gap
glass=高斯模糊
general=General
global=全局
gradient=渐变
gradientColor=渐变色
grid=网格
gridSize=网格大小
group=Group
guides=显示对齐参考线
heading=Heading
height=高度
help=帮助
hide=隐藏
hideIt=Hide {1}
hidden=隐藏
home=Home
horizontal=水平
horizontalFlow=Horizontal Flow
horizontalTree=Horizontal Tree
html=HTML
id=ID
image=图片
images=Images
import=Import
increaseIndent=增加缩进
insert=插入
insertColumnBefore=在左边插入列
insertColumnAfter=在右边插入列
insertHorizontalRule=Insert Horizontal Rule
insertImage=插入图片
insertLink=插入链接
insertRowBefore=在上面插入行
insertRowAfter=在下面插入行
invalidName=不合法的名称
invalidOrMissingFile=不合法或缺少文件
isometric=Isometric
italic=斜体
layers=Layers
landscape=横向
laneColor=Lanecolor
layout=布局
left=左
leftAlign=左对齐
leftToRight=从左到右
line=线条
link=链接
lineJumps=相交线跳跃
lineend=终点
lineheight=Line Height
linestart=起点
linewidth=Linewidth
loading=正在加载
lockUnlock=锁定/解锁
manual=手工
middle=垂直居中
misc=Misc
more=更多
moreResults=更多结果
move=移动
moveSelectionTo=Move Selection to {1}
navigation=Navigation
new=新建
noColor=No Color
noFiles=No files
noMoreResults=No more results
none=None
noResultsFor=No results for '{1}'
normal=Normal
north=North
numberedList=Numbered List
opacity=透明粗
open=打开
openArrow=Open Arrow
openFile=Open File
openLink=Open Link
openSupported=Supported format is .XML files saved from this software
openInNewWindow=在新窗口打开
openInThisWindow=在当前窗口打开
options=选项
organic=Organic
orthogonal=Orthogonal
outline=Outline
oval=Oval
pages=Pages
pageView=页面视图
pageScale=Page Scale
pageSetup=Page Setup
panTooltip=Space+Drag to Scroll
paperSize=纸张大小
paste=Paste
pasteHere=Paste Here
pasteSize=Paste Size
pattern=Pattern
perimeter=Perimeter
placeholders=Placeholders
plusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).
portrait=纵向
position=位置
posterPrint=Poster Print
preview=Preview
print=Print
radialTree=Radial Tree
redo=重做
removeFormat=Clear Formatting
removeFromGroup=Remove from Group
removeIt=Remove {1}
removeWaypoint=Remove Waypoint
rename=Rename
renameIt=Rename {1}
replace=替换
replaceIt={1} already exists. Do you want to replace it?
replaceExistingDrawing=替换当前图表
reset=Reset
resetView=Reset View
reverse=反转
right=右
rightAlign=右对齐
rightToLeft=从右到左
rotate=Rotate
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
rotation=Rotation
rounded=圆角
save=保存
saveAs=Save as
saved=Saved
scrollbars=Scrollbars
search=Search
searchShapes=搜索组件
selectAll=Select All
selectEdges=Select Edges
selectFont=Select a Font
selectNone=Select None
selectVertices=Select Vertices
setAsDefaultStyle=设置为默认样式
shadow=阴影
shape=Shape
sharp=直角
sidebarTooltip=点击展开.拖拽组件到编辑器中. Shift+click 改变选择的组件. Alt+click 插入新组件并和选择的组件进行连接.
simple=Simple
simpleArrow=Simple Arrow
size=大小
solid=Solid
sourceSpacing=Source Spacing
south=South
spacing=空白
straight=Straight
strokeColor=线条颜色
style=样式
subscript=Subscript
superscript=Superscript
table=Table
targetSpacing=Target Spacing
text=文本
textAlignment=Text Alignment
textOpacity=Text Opacity
toBack=置于底层
toFront=置于顶层
tooltips=Tooltips
top=上
topAlign=顶部对齐
topLeft=左上
topRight=右上
transparent=Transparent
turn=顺时针旋转 90°
uml=UML
underline=下划线
undo=撤销
ungroup=Ungroup
url=URL
untitledLayer=Untitled Layer
vertical=垂直
verticalFlow=Vertical Flow
verticalTree=Vertical Tree
view=视图
waypoints=路径
west=West
width=宽度
wordWrap=自动换行
writingDirection=文本方向
zoom=缩放
zoomIn=放大
zoomOut=缩小

20
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/resources/help.html

@ -1,20 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Graph Editor Help</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../styles/help.css">
</head>
<body>
<h1>Graph Editor Help</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed
diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor
sit amet.</p>
</body>
</html>

20
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/resources/help_de.html

@ -1,20 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Graph Editor Hilfe</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../styles/help.css">
</head>
<body>
<h1>Graph Editor Hilfe</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed
diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor
sit amet.</p>
</body>
</html>

91
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/sanitizer/sanitizer.min.js

@ -1,91 +0,0 @@
// NOTE: Modified to support data URIs for images, ie. data:image/*
(function(){var c=void 0,n=!0,s=null,C=!1,J=["aliceblue,antiquewhite,aqua,aquamarine,azure,beige,bisque,black,blanchedalmond,blue,blueviolet,brown,burlywood,cadetblue,chartreuse,chocolate,coral,cornflowerblue,cornsilk,crimson,cyan,darkblue,darkcyan,darkgoldenrod,darkgray,darkgreen,darkkhaki,darkmagenta,darkolivegreen,darkorange,darkorchid,darkred,darksalmon,darkseagreen,darkslateblue,darkslategray,darkturquoise,darkviolet,deeppink,deepskyblue,dimgray,dodgerblue,firebrick,floralwhite,forestgreen,fuchsia,gainsboro,ghostwhite,gold,goldenrod,gray,green,greenyellow,honeydew,hotpink,indianred,indigo,ivory,khaki,lavender,lavenderblush,lawngreen,lemonchiffon,lightblue,lightcoral,lightcyan,lightgoldenrodyellow,lightgreen,lightgrey,lightpink,lightsalmon,lightseagreen,lightskyblue,lightslategray,lightsteelblue,lightyellow,lime,limegreen,linen,magenta,maroon,mediumaquamarine,mediumblue,mediumorchid,mediumpurple,mediumseagreen,mediumslateblue,mediumspringgreen,mediumturquoise,mediumvioletred,midnightblue,mintcream,mistyrose,moccasin,navajowhite,navy,oldlace,olive,olivedrab,orange,orangered,orchid,palegoldenrod,palegreen,paleturquoise,palevioletred,papayawhip,peachpuff,peru,pink,plum,powderblue,purple,red,rosybrown,royalblue,saddlebrown,salmon,sandybrown,seagreen,seashell,sienna,silver,skyblue,slateblue,slategray,snow,springgreen,steelblue,tan,teal,thistle,tomato,transparent,turquoise,violet,wheat,white,whitesmoke,yellow,yellowgreen".split(","),
"all-scroll,col-resize,crosshair,default,e-resize,hand,help,move,n-resize,ne-resize,no-drop,not-allowed,nw-resize,pointer,progress,row-resize,s-resize,se-resize,sw-resize,text,vertical-text,w-resize,wait".split(","),"armenian,decimal,decimal-leading-zero,disc,georgian,lower-alpha,lower-greek,lower-latin,lower-roman,square,upper-alpha,upper-latin,upper-roman".split(","),"100,200,300,400,500,600,700,800,900,bold,bolder,lighter".split(","),"block-level,inline-level,table-caption,table-cell,table-column,table-column-group,table-footer-group,table-header-group,table-row,table-row-group".split(","),
"condensed,expanded,extra-condensed,extra-expanded,narrower,semi-condensed,semi-expanded,ultra-condensed,ultra-expanded,wider".split(","),"inherit,inline,inline-block,inline-box,inline-flex,inline-grid,inline-list-item,inline-stack,inline-table,run-in".split(","),"behind,center-left,center-right,far-left,far-right,left-side,leftwards,right-side,rightwards".split(","),"large,larger,small,smaller,x-large,x-small,xx-large,xx-small".split(","),"dashed,dotted,double,groove,outset,ridge,solid".split(","),
"ease,ease-in,ease-in-out,ease-out,linear,step-end,step-start".split(","),"at,closest-corner,closest-side,ellipse,farthest-corner,farthest-side".split(","),"baseline,middle,sub,super,text-bottom,text-top".split(","),"caption,icon,menu,message-box,small-caption,status-bar".split(","),"fast,faster,slow,slower,x-fast,x-slow".split(","),["above","below","higher","level","lower"],["cursive","fantasy","monospace","sans-serif","serif"],["loud","silent","soft","x-loud","x-soft"],["no-repeat","repeat-x","repeat-y",
"round","space"],["blink","line-through","overline","underline"],["block","flex","grid","table"],["high","low","x-high","x-low"],["nowrap","pre","pre-line","pre-wrap"],["absolute","relative","static"],["alternate","alternate-reverse","reverse"],["border-box","content-box","padding-box"],["capitalize","lowercase","uppercase"],["child","female","male"],["=","opacity"],["backwards","forwards"],["bidi-override","embed"],["bottom","top"],["break-all","keep-all"],["clip","ellipsis"],["contain","cover"],
["continuous","digits"],["end","start"],["flat","preserve-3d"],["hide","show"],["horizontal","vertical"],["inside","outside"],["italic","oblique"],["left","right"],["ltr","rtl"],["no-content","no-display"],["paused","running"],["suppress","unrestricted"],["thick","thin"],[","],["/"],["all"],["always"],["auto"],["avoid"],["both"],["break-word"],["center"],["circle"],["code"],["collapse"],["contents"],["fixed"],["hidden"],["infinite"],["inset"],["invert"],["justify"],["list-item"],["local"],["medium"],
["mix"],["none"],["normal"],["once"],["repeat"],["scroll"],["separate"],["small-caps"],["spell-out"],["to"],["visible"]],L={animation:{cssPropBits:517,cssLitGroup:[J[10],J[24],J[29],J[45],J[48],J[54],J[63],J[71],J[72]],cssFns:["cubic-bezier()","steps()"]},"animation-delay":{cssPropBits:5,cssLitGroup:[J[48]],cssFns:[]},"animation-direction":{cssPropBits:0,cssLitGroup:[J[24],J[48],J[72]],cssFns:[]},"animation-duration":"animation-delay","animation-fill-mode":{cssPropBits:0,cssLitGroup:[J[29],J[48],
J[54],J[71]],cssFns:[]},"animation-iteration-count":{cssPropBits:5,cssLitGroup:[J[48],J[63]],cssFns:[]},"animation-name":{cssPropBits:512,cssLitGroup:[J[48],J[71]],cssFns:[]},"animation-play-state":{cssPropBits:0,cssLitGroup:[J[45],J[48]],cssFns:[]},"animation-timing-function":{cssPropBits:0,cssLitGroup:[J[10],J[48]],cssFns:["cubic-bezier()","steps()"]},appearance:{cssPropBits:0,cssLitGroup:[J[71]],cssFns:[]},azimuth:{cssPropBits:5,cssLitGroup:[J[7],J[42],J[56]],cssFns:[]},"backface-visibility":{cssPropBits:0,
cssLitGroup:[J[59],J[62],J[80]],cssFns:[]},background:{cssPropBits:23,cssLitGroup:[J[0],J[18],J[25],J[31],J[34],J[42],J[48],J[49],J[52],J[56],J[61],J[68],J[71],J[74],J[75]],cssFns:"image(),linear-gradient(),radial-gradient(),repeating-linear-gradient(),repeating-radial-gradient(),rgb(),rgba()".split(",")},"background-attachment":{cssPropBits:0,cssLitGroup:[J[48],J[61],J[68],J[75]],cssFns:[]},"background-color":{cssPropBits:2,cssLitGroup:[J[0]],cssFns:["rgb()","rgba()"]},"background-image":{cssPropBits:16,
cssLitGroup:[J[48],J[71]],cssFns:["image()","linear-gradient()","radial-gradient()","repeating-linear-gradient()","repeating-radial-gradient()"]},"background-position":{cssPropBits:5,cssLitGroup:[J[31],J[42],J[48],J[56]],cssFns:[]},"background-repeat":{cssPropBits:0,cssLitGroup:[J[18],J[48],J[74]],cssFns:[]},"background-size":{cssPropBits:5,cssLitGroup:[J[34],J[48],J[52]],cssFns:[]},border:{cssPropBits:7,cssLitGroup:[J[0],J[9],J[47],J[62],J[64],J[69],J[71]],cssFns:["rgb()","rgba()"]},"border-bottom":"border",
"border-bottom-color":"background-color","border-bottom-left-radius":{cssPropBits:5,cssFns:[]},"border-bottom-right-radius":"border-bottom-left-radius","border-bottom-style":{cssPropBits:0,cssLitGroup:[J[9],J[62],J[64],J[71]],cssFns:[]},"border-bottom-width":{cssPropBits:5,cssLitGroup:[J[47],J[69]],cssFns:[]},"border-collapse":{cssPropBits:0,cssLitGroup:[J[59],J[76]],cssFns:[]},"border-color":"background-color","border-left":"border","border-left-color":"background-color","border-left-style":"border-bottom-style",
"border-left-width":"border-bottom-width","border-radius":{cssPropBits:5,cssLitGroup:[J[49]],cssFns:[]},"border-right":"border","border-right-color":"background-color","border-right-style":"border-bottom-style","border-right-width":"border-bottom-width","border-spacing":"border-bottom-left-radius","border-style":"border-bottom-style","border-top":"border","border-top-color":"background-color","border-top-left-radius":"border-bottom-left-radius","border-top-right-radius":"border-bottom-left-radius",
"border-top-style":"border-bottom-style","border-top-width":"border-bottom-width","border-width":"border-bottom-width",bottom:{cssPropBits:5,cssLitGroup:[J[52]],cssFns:[]},box:{cssPropBits:0,cssLitGroup:[J[60],J[71],J[72]],cssFns:[]},"box-shadow":{cssPropBits:7,cssLitGroup:[J[0],J[48],J[64],J[71]],cssFns:["rgb()","rgba()"]},"box-sizing":{cssPropBits:0,cssLitGroup:[J[25]],cssFns:[]},"caption-side":{cssPropBits:0,cssLitGroup:[J[31]],cssFns:[]},clear:{cssPropBits:0,cssLitGroup:[J[42],J[54],J[71]],cssFns:[]},
clip:{cssPropBits:0,cssLitGroup:[J[52]],cssFns:["rect()"]},color:"background-color",content:{cssPropBits:8,cssLitGroup:[J[71],J[72]],cssFns:[]},cue:{cssPropBits:16,cssLitGroup:[J[71]],cssFns:[]},"cue-after":"cue","cue-before":"cue",cursor:{cssPropBits:16,cssLitGroup:[J[1],J[48],J[52]],cssFns:[]},direction:{cssPropBits:0,cssLitGroup:[J[43]],cssFns:[]},display:{cssPropBits:0,cssLitGroup:[J[4],J[6],J[20],J[52],J[67],J[71]],cssFns:[]},"display-extras":{cssPropBits:0,cssLitGroup:[J[67],J[71]],cssFns:[]},
"display-inside":{cssPropBits:0,cssLitGroup:[J[20],J[52]],cssFns:[]},"display-outside":{cssPropBits:0,cssLitGroup:[J[4],J[71]],cssFns:[]},elevation:{cssPropBits:5,cssLitGroup:[J[15]],cssFns:[]},"empty-cells":{cssPropBits:0,cssLitGroup:[J[38]],cssFns:[]},filter:{cssPropBits:0,cssFns:["alpha()"]},"float":{cssPropBits:0,cssLitGroup:[J[42],J[71]],cssFns:[]},font:{cssPropBits:73,cssLitGroup:[J[3],J[8],J[13],J[16],J[41],J[48],J[49],J[69],J[72],J[77]],cssFns:[]},"font-family":{cssPropBits:72,cssLitGroup:[J[16],
J[48]],cssFns:[]},"font-size":{cssPropBits:1,cssLitGroup:[J[8],J[69]],cssFns:[]},"font-stretch":{cssPropBits:0,cssLitGroup:[J[5],J[72]],cssFns:[]},"font-style":{cssPropBits:0,cssLitGroup:[J[41],J[72]],cssFns:[]},"font-variant":{cssPropBits:0,cssLitGroup:[J[72],J[77]],cssFns:[]},"font-weight":{cssPropBits:0,cssLitGroup:[J[3],J[72]],cssFns:[]},height:"bottom",left:"bottom","letter-spacing":{cssPropBits:5,cssLitGroup:[J[72]],cssFns:[]},"line-height":{cssPropBits:1,cssLitGroup:[J[72]],cssFns:[]},"list-style":{cssPropBits:16,
cssLitGroup:[J[2],J[40],J[57],J[71]],cssFns:["image()","linear-gradient()","radial-gradient()","repeating-linear-gradient()","repeating-radial-gradient()"]},"list-style-image":{cssPropBits:16,cssLitGroup:[J[71]],cssFns:["image()","linear-gradient()","radial-gradient()","repeating-linear-gradient()","repeating-radial-gradient()"]},"list-style-position":{cssPropBits:0,cssLitGroup:[J[40]],cssFns:[]},"list-style-type":{cssPropBits:0,cssLitGroup:[J[2],J[57],J[71]],cssFns:[]},margin:"bottom","margin-bottom":"bottom",
"margin-left":"bottom","margin-right":"bottom","margin-top":"bottom","max-height":{cssPropBits:1,cssLitGroup:[J[52],J[71]],cssFns:[]},"max-width":"max-height","min-height":{cssPropBits:1,cssLitGroup:[J[52]],cssFns:[]},"min-width":"min-height",opacity:{cssPropBits:1,cssFns:[]},outline:{cssPropBits:7,cssLitGroup:[J[0],J[9],J[47],J[62],J[64],J[65],J[69],J[71]],cssFns:["rgb()","rgba()"]},"outline-color":{cssPropBits:2,cssLitGroup:[J[0],J[65]],cssFns:["rgb()","rgba()"]},"outline-style":"border-bottom-style",
"outline-width":"border-bottom-width",overflow:{cssPropBits:0,cssLitGroup:[J[52],J[62],J[75],J[80]],cssFns:[]},"overflow-wrap":{cssPropBits:0,cssLitGroup:[J[55],J[72]],cssFns:[]},"overflow-x":{cssPropBits:0,cssLitGroup:[J[44],J[52],J[62],J[75],J[80]],cssFns:[]},"overflow-y":"overflow-x",padding:"opacity","padding-bottom":"opacity","padding-left":"opacity","padding-right":"opacity","padding-top":"opacity","page-break-after":{cssPropBits:0,cssLitGroup:[J[42],J[51],J[52],J[53]],cssFns:[]},"page-break-before":"page-break-after",
"page-break-inside":{cssPropBits:0,cssLitGroup:[J[52],J[53]],cssFns:[]},pause:"border-bottom-left-radius","pause-after":"border-bottom-left-radius","pause-before":"border-bottom-left-radius",perspective:{cssPropBits:5,cssLitGroup:[J[71]],cssFns:[]},"perspective-origin":{cssPropBits:5,cssLitGroup:[J[31],J[42],J[56]],cssFns:[]},pitch:{cssPropBits:5,cssLitGroup:[J[21],J[69]],cssFns:[]},"pitch-range":"border-bottom-left-radius","play-during":{cssPropBits:16,cssLitGroup:[J[52],J[70],J[71],J[74]],cssFns:[]},
position:{cssPropBits:0,cssLitGroup:[J[23]],cssFns:[]},quotes:{cssPropBits:8,cssLitGroup:[J[71]],cssFns:[]},resize:{cssPropBits:0,cssLitGroup:[J[39],J[54],J[71]],cssFns:[]},richness:"border-bottom-left-radius",right:"bottom",speak:{cssPropBits:0,cssLitGroup:[J[71],J[72],J[78]],cssFns:[]},"speak-header":{cssPropBits:0,cssLitGroup:[J[51],J[73]],cssFns:[]},"speak-numeral":{cssPropBits:0,cssLitGroup:[J[35]],cssFns:[]},"speak-punctuation":{cssPropBits:0,cssLitGroup:[J[58],J[71]],cssFns:[]},"speech-rate":{cssPropBits:5,
cssLitGroup:[J[14],J[69]],cssFns:[]},stress:"border-bottom-left-radius","table-layout":{cssPropBits:0,cssLitGroup:[J[52],J[61]],cssFns:[]},"text-align":{cssPropBits:0,cssLitGroup:[J[42],J[56],J[66]],cssFns:[]},"text-decoration":{cssPropBits:0,cssLitGroup:[J[19],J[71]],cssFns:[]},"text-indent":"border-bottom-left-radius","text-overflow":{cssPropBits:8,cssLitGroup:[J[33]],cssFns:[]},"text-shadow":"box-shadow","text-transform":{cssPropBits:0,cssLitGroup:[J[26],J[71]],cssFns:[]},"text-wrap":{cssPropBits:0,
cssLitGroup:[J[46],J[71],J[72]],cssFns:[]},top:"bottom",transform:{cssPropBits:0,cssLitGroup:[J[71]],cssFns:"matrix(),perspective(),rotate(),rotate3d(),rotatex(),rotatey(),rotatez(),scale(),scale3d(),scalex(),scaley(),scalez(),skew(),skewx(),skewy(),translate(),translate3d(),translatex(),translatey(),translatez()".split(",")},"transform-origin":"perspective-origin","transform-style":{cssPropBits:0,cssLitGroup:[J[37]],cssFns:[]},transition:{cssPropBits:1029,cssLitGroup:[J[10],J[48],J[50],J[71]],cssFns:["cubic-bezier()",
"steps()"]},"transition-delay":"animation-delay","transition-duration":"animation-delay","transition-property":{cssPropBits:1024,cssLitGroup:[J[48],J[50]],cssFns:[]},"transition-timing-function":"animation-timing-function","unicode-bidi":{cssPropBits:0,cssLitGroup:[J[30],J[72]],cssFns:[]},"vertical-align":{cssPropBits:5,cssLitGroup:[J[12],J[31]],cssFns:[]},visibility:"backface-visibility","voice-family":{cssPropBits:8,cssLitGroup:[J[27],J[48]],cssFns:[]},volume:{cssPropBits:1,cssLitGroup:[J[17],J[69]],
cssFns:[]},"white-space":{cssPropBits:0,cssLitGroup:[J[22],J[72]],cssFns:[]},width:"min-height","word-break":{cssPropBits:0,cssLitGroup:[J[32],J[72]],cssFns:[]},"word-spacing":"letter-spacing","word-wrap":"overflow-wrap","z-index":"bottom",zoom:"line-height","cubic-bezier()":"animation-delay","steps()":{cssPropBits:5,cssLitGroup:[J[36],J[48]],cssFns:[]},"image()":{cssPropBits:18,cssLitGroup:[J[0],J[48]],cssFns:["rgb()","rgba()"]},"linear-gradient()":{cssPropBits:7,cssLitGroup:[J[0],J[31],J[42],J[48],
J[79]],cssFns:["rgb()","rgba()"]},"radial-gradient()":{cssPropBits:7,cssLitGroup:[J[0],J[11],J[31],J[42],J[48],J[56],J[57]],cssFns:["rgb()","rgba()"]},"repeating-linear-gradient()":"linear-gradient()","repeating-radial-gradient()":"radial-gradient()","rgb()":{cssPropBits:1,cssLitGroup:[J[48]],cssFns:[]},"rgba()":"rgb()","rect()":{cssPropBits:5,cssLitGroup:[J[48],J[52]],cssFns:[]},"alpha()":{cssPropBits:1,cssLitGroup:[J[28]],cssFns:[]},"matrix()":"animation-delay","perspective()":"border-bottom-left-radius",
"rotate()":"border-bottom-left-radius","rotate3d()":"animation-delay","rotatex()":"border-bottom-left-radius","rotatey()":"border-bottom-left-radius","rotatez()":"border-bottom-left-radius","scale()":"animation-delay","scale3d()":"animation-delay","scalex()":"border-bottom-left-radius","scaley()":"border-bottom-left-radius","scalez()":"border-bottom-left-radius","skew()":"animation-delay","skewx()":"border-bottom-left-radius","skewy()":"border-bottom-left-radius","translate()":"animation-delay","translate3d()":"animation-delay",
"translatex()":"border-bottom-left-radius","translatey()":"border-bottom-left-radius","translatez()":"border-bottom-left-radius"},O;for(O in L)"string"===typeof L[O]&&Object.hasOwnProperty.call(L,O)&&(L[O]=L[L[O]]);"undefined"!==typeof window&&(window.cssSchema=L);var U,X;
(function(){function g(a){var f=parseInt(a.substring(1),16);return 65535<f?(f-=65536,String.fromCharCode(55296+(f>>10),56320+(f&1023))):f==f?String.fromCharCode(f):" ">a[1]?"":a[1]}function w(a,f){return'"'+a.replace(/[\u0000-\u001f\\\"<>]/g,f)+'"'}function M(a){return E[a]||(E[a]="\\"+a.charCodeAt(0).toString(16)+" ")}function x(a){return e[a]||(e[a]=("\u0010">a?"%0":"%")+a.charCodeAt(0).toString(16))}var E={"\\":"\\\\"},e={"\\":"%5c"},v=RegExp("\\uFEFF|U[+][0-9A-F?]{1,6}(?:-[0-9A-F]{1,6})?|url[(][\\t\\n\\f ]*(?:\"(?:'|[^'\"\\n\\f\\\\]|\\\\[\\s\\S])*\"|'(?:\"|[^'\"\\n\\f\\\\]|\\\\[\\s\\S])*'|(?:[\\t\\x21\\x23-\\x26\\x28-\\x5b\\x5d-\\x7e]|[\\u0080-\\ud7ff\\ue000-\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]|\\\\(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]))*)[\\t\\n\\f ]*[)]|(?!url[(])-?(?:[a-zA-Z_]|[\\u0080-\\ud7ff\\ue000-\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]|\\\\(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]))(?:[a-zA-Z0-9_-]|[\\u0080-\\ud7ff\\ue000-\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]|\\\\(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]))*[(]|(?:@?-?(?:[a-zA-Z_]|[\\u0080-\\ud7ff\\ue000-\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]|\\\\(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]))|#)(?:[a-zA-Z0-9_-]|[\\u0080-\\ud7ff\\ue000-\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]|\\\\(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]))*|\"(?:'|[^'\"\\n\\f\\\\]|\\\\[\\s\\S])*\"|'(?:\"|[^'\"\\n\\f\\\\]|\\\\[\\s\\S])*'|[-+]?(?:[0-9]+(?:[.][0-9]+)?|[.][0-9]+)(?:%|-?(?:[a-zA-Z_]|[\\u0080-\\ud7ff\\ue000-\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]|\\\\(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]))(?:[a-zA-Z0-9_-]|[\\u0080-\\ud7ff\\ue000-\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]|\\\\(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]))*)?|<\!--|--\>|[\\t\\n\\f ]+|/(?:[*][^*]*[*]+(?:[^/][^*]*[*]+)*/|/[^\\n\\f]*)|[~|^$*]=|[^\"'\\\\/]|/(?![/*])","gi"),
b=RegExp("\\\\(?:(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff])|[\\n\\f])","g"),a=RegExp("^url\\([\\t\\n\\f ]*[\"']?|[\"']?[\\t\\n\\f ]*\\)$","gi");X=function(a){return a.replace(b,g)};U=function(b){for(var b=(""+b).replace(/\r\n?/g,"\n").match(v)||[],f=0,h=" ",d=0,y=b.length;d<y;++d){var l=X(b[d]),V=l.length,g=l.charCodeAt(0),l=34==g||39==g?w(l.substring(1,V-1),M):47==g&&1<V||"\\"==l||"--\>"==l||"<\!--"==l||"\ufeff"==l||32>=g?" ":
/url\(/i.test(l)?"url("+w(l.replace(a,""),x)+")":l;if(h!=l||" "!=l)b[f++]=h=l}b.length=f;return b}})();"undefined"!==typeof window&&(window.lexCss=U,window.decodeCss=X);var Y=function(){function g(d){d=(""+d).match(k);return!d?s:new e(v(d[1]),v(d[2]),v(d[3]),v(d[4]),v(d[5]),v(d[6]),v(d[7]))}function w(d,a){return"string"==typeof d?encodeURI(d).replace(a,M):s}function M(d){d=d.charCodeAt(0);return"%"+"0123456789ABCDEF".charAt(d>>4&15)+"0123456789ABCDEF".charAt(d&15)}function x(d){if(d===s)return s;for(var d=d.replace(/(^|\/)\.(?:\/|$)/g,"$1").replace(/\/{2,}/g,"/"),a=b,h;(h=d.replace(a,"$1"))!=d;d=h);return d}function E(d,h){var b=d.T(),f=h.K();f?b.ga(h.j):f=h.X();
f?b.da(h.n):f=h.Y();f?b.ea(h.k):f=h.$();var g=h.g,k=x(g);if(f)b.ca(h.V()),k=k&&k.replace(a,"");else if(f=!!g){if(47!==k.charCodeAt(0))var k=x(b.g||"").replace(a,""),e=k.lastIndexOf("/")+1,k=x((e?k.substring(0,e):"")+x(g)).replace(a,"")}else k=k&&k.replace(a,""),k!==g&&b.G(k);f?b.G(k):f=h.aa();f?b.O(h.l):f=h.Z();f&&b.fa(h.o);return b}function e(d,a,h,f,b,g,k){this.j=d;this.n=a;this.k=h;this.h=f;this.g=b;this.l=g;this.o=k}function v(d){return"string"==typeof d&&0<d.length?d:s}var b=RegExp(/(\/|^)(?:[^./][^/]*|\.{2,}(?:[^./][^/]*)|\.{3,}[^/]*)\/\.\.(?:\/|$)/),
a=/^(?:\.\.\/)*(?:\.\.$)?/;e.prototype.toString=function(){var d=[];s!==this.j&&d.push(this.j,":");s!==this.k&&(d.push("//"),s!==this.n&&d.push(this.n,"@"),d.push(this.k),s!==this.h&&d.push(":",this.h.toString()));s!==this.g&&d.push(this.g);s!==this.l&&d.push("?",this.l);s!==this.o&&d.push("#",this.o);return d.join("")};e.prototype.T=function(){return new e(this.j,this.n,this.k,this.h,this.g,this.l,this.o)};e.prototype.W=function(){return this.j&&decodeURIComponent(this.j).toLowerCase()};e.prototype.ga=
function(d){this.j=d?d:s};e.prototype.K=function(){return s!==this.j};e.prototype.da=function(d){this.n=d?d:s};e.prototype.X=function(){return s!==this.n};e.prototype.ea=function(d){this.k=d?d:s;this.G(this.g)};e.prototype.Y=function(){return s!==this.k};e.prototype.V=function(){return this.h&&decodeURIComponent(this.h)};e.prototype.ca=function(d){if(d){d=Number(d);if(d!==(d&65535))throw Error("Bad port number "+d);this.h=""+d}else this.h=s};e.prototype.$=function(){return s!==this.h};e.prototype.U=
function(){return this.g&&decodeURIComponent(this.g)};e.prototype.G=function(d){d?(d=""+d,this.g=!this.k||/^\//.test(d)?d:"/"+d):this.g=s};e.prototype.O=function(d){this.l=d?d:s};e.prototype.aa=function(){return s!==this.l};e.prototype.ba=function(d){if("object"===typeof d&&!(d instanceof Array)&&(d instanceof Object||"[object Array]"!==Object.prototype.toString.call(d))){var a=[],h=-1,f;for(f in d){var b=d[f];"string"===typeof b&&(a[++h]=f,a[++h]=b)}d=a}for(var a=[],h="",g=0;g<d.length;)f=d[g++],
b=d[g++],a.push(h,encodeURIComponent(f.toString())),h="&",b&&a.push("=",encodeURIComponent(b.toString()));this.l=a.join("")};e.prototype.fa=function(d){this.o=d?d:s};e.prototype.Z=function(){return s!==this.o};var k=/^(?:([^:/?#]+):)?(?:\/\/(?:([^/?#]*)@)?([^/?#:@]*)(?::([0-9]+))?)?([^?#]+)?(?:\?([^#]*))?(?:#(.*))?$/,f=/[#\/\?@]/g,h=/[\#\?]/g;e.parse=g;e.create=function(d,a,b,g,k,Q,N){d=new e(w(d,f),w(a,f),"string"==typeof b?encodeURIComponent(b):s,0<g?g.toString():s,w(k,h),s,"string"==typeof N?encodeURIComponent(N):
s);Q&&("string"===typeof Q?d.O(Q.replace(/[^?&=0-9A-Za-z_\-~.%]/g,M)):d.ba(Q));return d};e.N=E;e.ma=x;e.ha={ua:function(d){return/\.html$/.test(g(d).U())?"text/html":"application/javascript"},N:function(d,a){return d?E(g(d),g(a)).toString():""+a}};return e}();"undefined"!==typeof window&&(window.URI=Y);var aa=c,ba=c,da=c,Z=c;
(function(){function g(a){return"string"===typeof a?'url("'+a.replace(e,w)+'")':'url("about:blank")'}function w(a){return v[a]}function M(a,d){return a?Y.ha.N(a,d):d}function x(h,d,f){if(!f)return s;var g=(""+h).match(b);return g&&(!g[1]||a.test(g[1]))?f(h,d):s}function E(a){return a.replace(/^-(?:apple|css|epub|khtml|moz|mso?|o|rim|wap|webkit|xv)-(?=[a-z])/,"")}var e=/[\n\f\r\"\'()*<>]/g,v={"\n":"%0a","\u000c":"%0c","\r":"%0d",'"':"%22","'":"%27","(":"%28",")":"%29","*":"%2a","<":"%3c",">":"%3e"},
b=/^(?:([^:/?# ]+):)?/,a=/^(?:https?|mailto|data)$/i;aa=function(){var a={};return function y(f,b,k,e,N){var f=E(f),u=L[f];if(!u||"object"!==typeof u)b.length=0;else{for(var i=u.cssPropBits,q=i&80,B=i&1536,F=NaN,r=0,o=0;r<b.length;++r){var j=b[r].toLowerCase(),I=j.charCodeAt(0),R,v,P,S,D,w;if(32===I)j="";else if(34===I)j=16===q?k?g(x(M(e,X(b[r].substring(1,j.length-1))),f,k)):"":i&8&&!(q&q-1)?j:"";else if("inherit"!==j){if(D=u.cssLitGroup){var G;if(!(G=u.cssLitMap)){G={};for(var K=D.length;0<=--K;)for(var A=
D[K],T=A.length;0<=--T;)G[A[T]]=a;G=u.cssLitMap=G}D=G}else D=a;if(!(w=D,w[E(j)]===a))if(35===I&&/^#(?:[0-9a-f]{3}){1,2}$/.test(j))j=i&2?j:"";else if(48<=I&&57>=I)j=i&1?j:"";else if(R=j.charCodeAt(1),v=j.charCodeAt(2),P=48<=R&&57>=R,S=48<=v&&57>=v,43===I&&(P||46===R&&S))j=i&1?(P?"":"0")+j.substring(1):"";else if(45===I&&(P||46===R&&S))j=i&4?(P?"-":"-0")+j.substring(1):i&1?"0":"";else if(46===I&&P)j=i&1?"0"+j:"";else if('url("'===j.substring(0,5))j=k&&i&16?g(x(M(e,b[r].substring(5,j.length-2)),f,k)):
"";else if("("===j.charAt(j.length-1))a:{D=b;G=r;j=1;K=G+1;for(I=D.length;K<I&&j;)A=D[K++],j+=")"===A?-1:/^[^"']*\($/.test(A);if(!j){j=D[G].toLowerCase();I=E(j);D=D.splice(G,K-G,"");G=u.cssFns;K=0;for(A=G.length;K<A;++K)if(G[K].substring(0,I.length)==I){D[0]=D[D.length-1]="";y(G[K],D,k,e);j=j+D.join(" ")+")";break a}}j=""}else j=B&&/^-?[a-z_][\w\-]*$/.test(j)&&!/__$/.test(j)?N&&512===B?b[r]+N:1024===B&&L[j]&&"number"===typeof L[j].oa?j:"":/^\w+$/.test(j)&&64===q&&i&8?F+1===o?(b[F]=b[F].substring(0,
b[F].length-1)+" "+j+'"',""):(F=o,'"'+j+'"'):""}j&&(b[o++]=j)}1===o&&'url("about:blank")'===b[0]&&(o=0);b.length=o}}}();var k=RegExp("^(active|after|before|blank|checked|default|disabled|drop|empty|enabled|first|first-child|first-letter|first-line|first-of-type|fullscreen|focus|hover|in-range|indeterminate|invalid|last-child|last-of-type|left|link|only-child|only-of-type|optional|out-of-range|placeholder-shown|read-only|read-write|required|right|root|scope|user-error|valid|visited)$"),f={};f[">"]=
f["+"]=f["~"]=f;ba=function(a,d,b){function g(i,r){function o(b,f,g){var y,e,i,l,o,m=n;y="";if(b<f)if(o=a[b],"*"===o)++b,y=o;else if(/^[a-zA-Z]/.test(o)&&(e=x(o.toLowerCase(),[])))"tagName"in e&&(o=e.tagName),++b,y=o;for(l=i=e="";m&&b<f;++b)if(o=a[b],"#"===o.charAt(0))/^#_|__$|[^\w#:\-]/.test(o)?m=C:e+=o+v;else if("."===o)++b<f&&/^[0-9A-Za-z:_\-]+$/.test(o=a[b])&&!/^_|__$/.test(o)?e+="."+o:m=C;else if(b+1<f&&"["===a[b]){++b;var H=a[b++].toLowerCase();o=$.m[y+"::"+H];o!==+o&&(o=$.m["*::"+H]);var W;
d.ia?(W=d.ia(y,H),"string"!==typeof W&&(m=C,W=H),m&&o!==+o&&(o=$.d.NONE)):(W=H,o!==+o&&(m=C));var p=H="",ca=C;/^[~^$*|]?=$/.test(a[b])&&(H=a[b++],p=a[b++],/^[0-9A-Za-z:_\-]+$/.test(p)?p='"'+p+'"':"]"===p&&(p='""',--b),/^"([^\"\\]|\\.)*"$/.test(p)||(m=C),(ca="i"===a[b])&&++b);"]"!==a[b]&&(++b,m=C);switch(o){case $.d.CLASSES:case $.d.LOCAL_NAME:case $.d.NONE:break;case $.d.GLOBAL_NAME:case $.d.ID:case $.d.IDREF:("="===H||"~="===H||"$="===H)&&'""'!=p&&!ca?p='"'+p.substring(1,p.length-1)+v+'"':"|="===
H||""===H||(m=C);break;case $.d.URI:case $.d.URI_FRAGMENT:""!==H&&(m=C);break;default:m=C}m&&(i+="["+W.replace(/[^\w-]/g,"\\$&")+H+p+(ca?" i]":"]"))}else if(b<f&&":"===a[b])if(o=a[++b],k.test(o))l+=":"+o;else break;else break;b!==f&&(m=C);m&&(b=(y+e).replace(/[^ .*#\w-]/g,"\\$&")+i+l+g)&&j.push(b);return m}" "===a[i]&&++i;r-1!==i&&" "===a[r]&&--r;for(var j=[],l=i,q=n,u=i;q&&u<r;++u){var B=a[u];if(f[B]===f||" "===B)o(l,u,B)?l=u+1:q=C}o(l,r,"")||(q=C);return q?(j.length&&(l=j.join(""),e!==s&&(l="."+
e+" "+l),N.push(l)),n):!b||b(a.slice(i,r))}var e=d.na,v=d.L,x=d.Aa,N=[],u=0,i,q=0,B;for(i=0;i<a.length;++i)if(B=a[i],"("==B||"["==B?(++q,n):")"==B||"]"==B?(q&&--q,n):!(" "==a[i]&&(q||f[a[i-1]]===f||f[a[i+1]]===f)))a[u++]=a[i];a.length=u;u=a.length;for(i=q=0;i<u;++i)if(","===a[i]){if(!g(q,i))return s;q=i+1}return!g(q,u)?s:N};(function(){var a=/^\w/,d=RegExp("^(?:(?:(?:(?:only|not) )?(?:all|aural|braille|embossed|handheld|print|projection|screen|speech|tty|tv)|\\( (?:(?:min-|max-)?(?:(?:device-)?(?:aspect-ratio|height|width)|color(?:-index)?|monochrome|orientation|resolution)|grid|hover|luminosity|pointer|scan|script) (?:: -?(?:[a-z]\\w+(?:-\\w+)*|\\d+(?: / \\d+|(?:\\.\\d+)?(?:p[cxt]|[cem]m|in|dpi|dppx|dpcm|%)?)) )?\\))(?: and ?\\( (?:(?:min-|max-)?(?:(?:device-)?(?:aspect-ratio|height|width)|color(?:-index)?|monochrome|orientation|resolution)|grid|hover|luminosity|pointer|scan|script) (?:: -?(?:[a-z]\\w+(?:-\\w+)*|\\d+(?: / \\d+|(?:\\.\\d+)?(?:p[cxt]|[cem]m|in|dpi|dppx|dpcm|%)?)) )?\\))*)(?: , (?:(?:(?:(?:only|not) )?(?:all|aural|braille|embossed|handheld|print|projection|screen|speech|tty|tv)|\\( (?:(?:min-|max-)?(?:(?:device-)?(?:aspect-ratio|height|width)|color(?:-index)?|monochrome|orientation|resolution)|grid|hover|luminosity|pointer|scan|script) (?:: -?(?:[a-z]\\w+(?:-\\w+)*|\\d+(?: / \\d+|(?:\\.\\d+)?(?:p[cxt]|[cem]m|in|dpi|dppx|dpcm|%)?)) )?\\))(?: and ?\\( (?:(?:min-|max-)?(?:(?:device-)?(?:aspect-ratio|height|width)|color(?:-index)?|monochrome|orientation|resolution)|grid|hover|luminosity|pointer|scan|script) (?:: -?(?:[a-z]\\w+(?:-\\w+)*|\\d+(?: / \\d+|(?:\\.\\d+)?(?:p[cxt]|[cem]m|in|dpi|dppx|dpcm|%)?)) )?\\))*))*$",
"i");Z=function(b){for(var b=b.slice(),f=b.length,g=0,k=0;k<f;++k){var e=b[k];" "!=e&&(b[g++]=e)}b.length=g;b=b.join(" ");return b=!b.length?"":!d.test(b)?"not all":a.test(b)?b:"not all , "+b}})();(function(){function a(b){var d=/^\s*[']([^']*)[']\s*$/,f=/^\s*url\s*[(]["]([^"]*)["][)]\s*$/,g=/^\s*url\s*[(][']([^']*)['][)]\s*$/,h=/^\s*url\s*[(]([^)]*)[)]\s*$/,k;return(k=/^\s*["]([^"]*)["]\s*$/.exec(b))||(k=d.exec(b))||(k=f.exec(b))||(k=g.exec(b))||(k=h.exec(b))?k[1]:s}function b(f,g,k,e,v,w,u){function i(){r=
F.length&&F[F.length-1]===s}var q=c,B=u||[0],F=[],r=C;fa(g,{startStylesheet:function(){q=[]},endStylesheet:function(){},startAtrule:function(g,j){if(r)g=s;else if("@media"===g)q.push("@media"," ",Z(j));else if("@keyframes"===g||"@-webkit-keyframes"===g){var i=j[0];1===j.length&&!/__$|[^\w\-]/.test(i)?(q.push(g," ",i+k.L),g="@keyframes"):g=s}else if("@import"===g&&0<j.length)if(g=s,"function"===typeof w){var l=Z(j.slice(1));if("not all"!==l){++B[0];var u=[];q.push(u);var E=x(M(f,a(j[0])),function(a){var f=
b(E,a.qa,k,e,v,w,B);--B[0];a=l?{toString:function(){return"@media "+l+" {"+f.result+"}"}}:f.result;u[0]=a;w(a,!!B[0])},v)}}else window.console&&window.console.log("@import "+j.join(" ")+" elided");r=!g;F.push(g)},endAtrule:function(){F.pop();r||q.push(";");i()},startBlock:function(){r||q.push("{")},endBlock:function(){r||(q.push("}"),r=n)},startRuleset:function(a){if(!r){var b=c;"@keyframes"===F[F.length-1]?(b=a.join(" ").match(/^ *(?:from|to|\d+(?:\.\d+)?%) *(?:, *(?:from|to|\d+(?:\.\d+)?%) *)*$/i),
r=!b,b&&(b=b[0].replace(/ +/g,""))):(a=ba(a,k),!a||!a.length?r=n:b=a.join(", "));r||q.push(b,"{")}F.push(s)},endRuleset:function(){F.pop();r||q.push("}");i()},declaration:function(a,b){if(!r){var d=C,g=b.length;2<=g&&"!"===b[g-2]&&"important"===b[g-1].toLowerCase()&&(d=n,b.length-=2);aa(a,b,e,f,k.L);b.length&&q.push(a,":",b.join(" "),d?" !important;":";")}}});return{result:{toString:function(){return q.join("")}},va:!!B[0]}}da=function(a,f,g,k){return b(a,f,g,k,c,c).result.toString()}})()})();
"undefined"!==typeof window&&(window.sanitizeCssProperty=aa,window.sanitizeCssSelectorList=ba,window.sanitizeStylesheet=da,window.sanitizeMediaQuery=Z);var fa,ga;
(function(){function g(b,a,g,f,h){for(var d=a++;a<g&&"{"!==b[a]&&";"!==b[a];)++a;if(a<g&&(h||";"===b[a])){var h=d+1,e=a;h<g&&" "===b[h]&&++h;e>h&&" "===b[e-1]&&--e;f.startAtrule&&f.startAtrule(b[d].toLowerCase(),b.slice(h,e));a="{"===b[a]?w(b,a,g,f):a+1;f.endAtrule&&f.endAtrule()}return a}function w(b,a,k,f){++a;for(f.startBlock&&f.startBlock();a<k;){var h=b[a].charAt(0);if("}"==h){++a;break}a=" "===h||";"===h?a+1:"@"===h?g(b,a,k,f,C):"{"===h?w(b,a,k,f):M(b,a,k,f)}f.endBlock&&f.endBlock();return a}
function M(b,a,g,f){var h=a,d=x(b,a,g,n);if(0>d)return d=~d,d===h?d+1:d;var y=b[d];if("{"!==y)return d===h?d+1:d;a=d+1;d>h&&" "===b[d-1]&&--d;for(f.startRuleset&&f.startRuleset(b.slice(h,d));a<g;){y=b[a];if("}"===y){++a;break}a=" "===y?a+1:e(b,a,g,f)}f.endRuleset&&f.endRuleset();return a}function x(b,a,g,f){for(var h,d=[],e=-1;a<g;++a)if(h=b[a].charAt(0),"["===h||"("===h)d[++e]=h;else if("]"===h&&"["===d[e]||")"===h&&"("===d[e])--e;else if("{"===h||"}"===h||";"===h||"@"===h||":"===h&&!f)break;0<=
e&&(a=~(a+1));return a}function E(b,a,g){for(;a<g&&";"!==b[a]&&"}"!==b[a];)++a;return a<g&&";"===b[a]?a+1:a}function e(b,a,g,f){var h=b[a++];if(!v.test(h))return E(b,a,g);a<g&&" "===b[a]&&++a;if(a==g||":"!==b[a])return E(b,a,g);++a;a<g&&" "===b[a]&&++a;var d=x(b,a,g,C);if(0>d)d=~d;else{for(var e=[],l=0,w=a;w<d;++w)a=b[w]," "!==a&&(e[l++]=a);if(d<g){do{a=b[d];if(";"===a||"}"===a)break;l=0}while(++d<g);";"===a&&++d}l&&f.declaration&&f.declaration(h.toLowerCase(),e)}return d}fa=function(b,a){var e=U(b);
a.startStylesheet&&a.startStylesheet();for(var f=0,h=e.length;f<h;)f=" "===e[f]?f+1:f<h?"@"===e[f].charAt(0)?g(e,f,h,a,n):M(e,f,h,a):f;a.endStylesheet&&a.endStylesheet()};var v=/^-?[a-z]/i;ga=function(b,a){for(var g=U(b),f=0,h=g.length;f<h;)f=" "!==g[f]?e(g,f,h,a):f+1}})();"undefined"!==typeof window&&(window.parseCssStylesheet=fa,window.parseCssDeclarations=ga);var $={d:{NONE:0,URI:1,URI_FRAGMENT:11,SCRIPT:2,STYLE:3,HTML:12,ID:4,IDREF:5,IDREFS:6,GLOBAL_NAME:7,LOCAL_NAME:8,CLASSES:9,FRAME_TARGET:10,MEDIA_QUERY:13}};$.atype=$.d;
$.m={"*::class":9,"*::dir":0,"*::draggable":0,"*::hidden":0,"*::id":4,"*::inert":0,"*::itemprop":0,"*::itemref":6,"*::itemscope":0,"*::lang":0,"*::onblur":2,"*::onchange":2,"*::onclick":2,"*::ondblclick":2,"*::onerror":2,"*::onfocus":2,"*::onkeydown":2,"*::onkeypress":2,"*::onkeyup":2,"*::onload":2,"*::onmousedown":2,"*::onmousemove":2,"*::onmouseout":2,"*::onmouseover":2,"*::onmouseup":2,"*::onreset":2,"*::onscroll":2,"*::onselect":2,"*::onsubmit":2,"*::ontouchcancel":2,"*::ontouchend":2,"*::ontouchenter":2,
"*::ontouchleave":2,"*::ontouchmove":2,"*::ontouchstart":2,"*::onunload":2,"*::spellcheck":0,"*::style":3,"*::tabindex":0,"*::title":0,"*::translate":0,"a::accesskey":0,"a::coords":0,"a::href":1,"a::hreflang":0,"a::name":7,"a::onblur":2,"a::onfocus":2,"a::shape":0,"a::target":10,"a::type":0,"area::accesskey":0,"area::alt":0,"area::coords":0,"area::href":1,"area::nohref":0,"area::onblur":2,"area::onfocus":2,"area::shape":0,"area::target":10,"audio::controls":0,"audio::loop":0,"audio::mediagroup":5,
"audio::muted":0,"audio::preload":0,"audio::src":1,"bdo::dir":0,"blockquote::cite":1,"br::clear":0,"button::accesskey":0,"button::disabled":0,"button::name":8,"button::onblur":2,"button::onfocus":2,"button::type":0,"button::value":0,"canvas::height":0,"canvas::width":0,"caption::align":0,"col::align":0,"col::char":0,"col::charoff":0,"col::span":0,"col::valign":0,"col::width":0,"colgroup::align":0,"colgroup::char":0,"colgroup::charoff":0,"colgroup::span":0,"colgroup::valign":0,"colgroup::width":0,
"command::checked":0,"command::command":5,"command::disabled":0,"command::icon":1,"command::label":0,"command::radiogroup":0,"command::type":0,"data::value":0,"del::cite":1,"del::datetime":0,"details::open":0,"dir::compact":0,"div::align":0,"dl::compact":0,"fieldset::disabled":0,"font::color":0,"font::face":0,"font::size":0,"form::accept":0,"form::action":1,"form::autocomplete":0,"form::enctype":0,"form::method":0,"form::name":7,"form::novalidate":0,"form::onreset":2,"form::onsubmit":2,"form::target":10,
"h1::align":0,"h2::align":0,"h3::align":0,"h4::align":0,"h5::align":0,"h6::align":0,"hr::align":0,"hr::noshade":0,"hr::size":0,"hr::width":0,"iframe::align":0,"iframe::frameborder":0,"iframe::height":0,"iframe::marginheight":0,"iframe::marginwidth":0,"iframe::width":0,"img::align":0,"img::alt":0,"img::border":0,"img::height":0,"img::hspace":0,"img::ismap":0,"img::name":7,"img::src":1,"img::usemap":11,"img::vspace":0,"img::width":0,"input::accept":0,"input::accesskey":0,"input::align":0,"input::alt":0,
"input::autocomplete":0,"input::checked":0,"input::disabled":0,"input::inputmode":0,"input::ismap":0,"input::list":5,"input::max":0,"input::maxlength":0,"input::min":0,"input::multiple":0,"input::name":8,"input::onblur":2,"input::onchange":2,"input::onfocus":2,"input::onselect":2,"input::pattern":0,"input::placeholder":0,"input::readonly":0,"input::required":0,"input::size":0,"input::src":1,"input::step":0,"input::type":0,"input::usemap":11,"input::value":0,"ins::cite":1,"ins::datetime":0,"label::accesskey":0,
"label::for":5,"label::onblur":2,"label::onfocus":2,"legend::accesskey":0,"legend::align":0,"li::type":0,"li::value":0,"map::name":7,"menu::compact":0,"menu::label":0,"menu::type":0,"meter::high":0,"meter::low":0,"meter::max":0,"meter::min":0,"meter::value":0,"ol::compact":0,"ol::reversed":0,"ol::start":0,"ol::type":0,"optgroup::disabled":0,"optgroup::label":0,"option::disabled":0,"option::label":0,"option::selected":0,"option::value":0,"output::for":6,"output::name":8,"p::align":0,"pre::width":0,
"progress::max":0,"progress::min":0,"progress::value":0,"q::cite":1,"select::autocomplete":0,"select::disabled":0,"select::multiple":0,"select::name":8,"select::onblur":2,"select::onchange":2,"select::onfocus":2,"select::required":0,"select::size":0,"source::type":0,"table::align":0,"table::bgcolor":0,"table::border":0,"table::cellpadding":0,"table::cellspacing":0,"table::frame":0,"table::rules":0,"table::summary":0,"table::width":0,"tbody::align":0,"tbody::char":0,"tbody::charoff":0,"tbody::valign":0,
"td::abbr":0,"td::align":0,"td::axis":0,"td::bgcolor":0,"td::char":0,"td::charoff":0,"td::colspan":0,"td::headers":6,"td::height":0,"td::nowrap":0,"td::rowspan":0,"td::scope":0,"td::valign":0,"td::width":0,"textarea::accesskey":0,"textarea::autocomplete":0,"textarea::cols":0,"textarea::disabled":0,"textarea::inputmode":0,"textarea::name":8,"textarea::onblur":2,"textarea::onchange":2,"textarea::onfocus":2,"textarea::onselect":2,"textarea::placeholder":0,"textarea::readonly":0,"textarea::required":0,
"textarea::rows":0,"textarea::wrap":0,"tfoot::align":0,"tfoot::char":0,"tfoot::charoff":0,"tfoot::valign":0,"th::abbr":0,"th::align":0,"th::axis":0,"th::bgcolor":0,"th::char":0,"th::charoff":0,"th::colspan":0,"th::headers":6,"th::height":0,"th::nowrap":0,"th::rowspan":0,"th::scope":0,"th::valign":0,"th::width":0,"thead::align":0,"thead::char":0,"thead::charoff":0,"thead::valign":0,"tr::align":0,"tr::bgcolor":0,"tr::char":0,"tr::charoff":0,"tr::valign":0,"track::default":0,"track::kind":0,"track::label":0,
"track::srclang":0,"ul::compact":0,"ul::type":0,"video::controls":0,"video::height":0,"video::loop":0,"video::mediagroup":5,"video::muted":0,"video::poster":1,"video::preload":0,"video::src":1,"video::width":0};$.ATTRIBS=$.m;$.c={OPTIONAL_ENDTAG:1,EMPTY:2,CDATA:4,RCDATA:8,UNSAFE:16,FOLDABLE:32,SCRIPT:64,STYLE:128,VIRTUALIZED:256};$.eflags=$.c;
$.f={a:0,abbr:0,acronym:0,address:0,applet:272,area:2,article:0,aside:0,audio:0,b:0,base:274,basefont:274,bdi:0,bdo:0,big:0,blockquote:0,body:305,br:2,button:0,canvas:0,caption:0,center:0,cite:0,code:0,col:2,colgroup:1,command:2,data:0,datalist:0,dd:1,del:0,details:0,dfn:0,dialog:272,dir:0,div:0,dl:0,dt:1,em:0,fieldset:0,figcaption:0,figure:0,font:0,footer:0,form:0,frame:274,frameset:272,h1:0,h2:0,h3:0,h4:0,h5:0,h6:0,head:305,header:0,hgroup:0,hr:2,html:305,i:0,iframe:4,img:2,input:2,ins:0,isindex:274,
kbd:0,keygen:274,label:0,legend:0,li:1,link:274,map:0,mark:0,menu:0,meta:274,meter:0,nav:0,nobr:0,noembed:276,noframes:276,noscript:276,object:272,ol:0,optgroup:0,option:1,output:0,p:1,param:274,pre:0,progress:0,q:0,s:0,samp:0,script:84,section:0,select:0,small:0,source:2,span:0,strike:0,strong:0,style:148,sub:0,summary:0,sup:0,table:0,tbody:1,td:1,textarea:8,tfoot:1,th:1,thead:1,time:0,title:280,tr:1,track:2,tt:0,u:0,ul:0,"var":0,video:0,wbr:2};$.ELEMENTS=$.f;
$.Q={a:"HTMLAnchorElement",abbr:"HTMLElement",acronym:"HTMLElement",address:"HTMLElement",applet:"HTMLAppletElement",area:"HTMLAreaElement",article:"HTMLElement",aside:"HTMLElement",audio:"HTMLAudioElement",b:"HTMLElement",base:"HTMLBaseElement",basefont:"HTMLBaseFontElement",bdi:"HTMLElement",bdo:"HTMLElement",big:"HTMLElement",blockquote:"HTMLQuoteElement",body:"HTMLBodyElement",br:"HTMLBRElement",button:"HTMLButtonElement",canvas:"HTMLCanvasElement",caption:"HTMLTableCaptionElement",center:"HTMLElement",
cite:"HTMLElement",code:"HTMLElement",col:"HTMLTableColElement",colgroup:"HTMLTableColElement",command:"HTMLCommandElement",data:"HTMLElement",datalist:"HTMLDataListElement",dd:"HTMLElement",del:"HTMLModElement",details:"HTMLDetailsElement",dfn:"HTMLElement",dialog:"HTMLDialogElement",dir:"HTMLDirectoryElement",div:"HTMLDivElement",dl:"HTMLDListElement",dt:"HTMLElement",em:"HTMLElement",fieldset:"HTMLFieldSetElement",figcaption:"HTMLElement",figure:"HTMLElement",font:"HTMLFontElement",footer:"HTMLElement",
form:"HTMLFormElement",frame:"HTMLFrameElement",frameset:"HTMLFrameSetElement",h1:"HTMLHeadingElement",h2:"HTMLHeadingElement",h3:"HTMLHeadingElement",h4:"HTMLHeadingElement",h5:"HTMLHeadingElement",h6:"HTMLHeadingElement",head:"HTMLHeadElement",header:"HTMLElement",hgroup:"HTMLElement",hr:"HTMLHRElement",html:"HTMLHtmlElement",i:"HTMLElement",iframe:"HTMLIFrameElement",img:"HTMLImageElement",input:"HTMLInputElement",ins:"HTMLModElement",isindex:"HTMLUnknownElement",kbd:"HTMLElement",keygen:"HTMLKeygenElement",
label:"HTMLLabelElement",legend:"HTMLLegendElement",li:"HTMLLIElement",link:"HTMLLinkElement",map:"HTMLMapElement",mark:"HTMLElement",menu:"HTMLMenuElement",meta:"HTMLMetaElement",meter:"HTMLMeterElement",nav:"HTMLElement",nobr:"HTMLElement",noembed:"HTMLElement",noframes:"HTMLElement",noscript:"HTMLElement",object:"HTMLObjectElement",ol:"HTMLOListElement",optgroup:"HTMLOptGroupElement",option:"HTMLOptionElement",output:"HTMLOutputElement",p:"HTMLParagraphElement",param:"HTMLParamElement",pre:"HTMLPreElement",
progress:"HTMLProgressElement",q:"HTMLQuoteElement",s:"HTMLElement",samp:"HTMLElement",script:"HTMLScriptElement",section:"HTMLElement",select:"HTMLSelectElement",small:"HTMLElement",source:"HTMLSourceElement",span:"HTMLSpanElement",strike:"HTMLElement",strong:"HTMLElement",style:"HTMLStyleElement",sub:"HTMLElement",summary:"HTMLElement",sup:"HTMLElement",table:"HTMLTableElement",tbody:"HTMLTableSectionElement",td:"HTMLTableDataCellElement",textarea:"HTMLTextAreaElement",tfoot:"HTMLTableSectionElement",
th:"HTMLTableHeaderCellElement",thead:"HTMLTableSectionElement",time:"HTMLTimeElement",title:"HTMLTitleElement",tr:"HTMLTableRowElement",track:"HTMLTrackElement",tt:"HTMLElement",u:"HTMLElement",ul:"HTMLUListElement","var":"HTMLElement",video:"HTMLVideoElement",wbr:"HTMLElement"};$.ELEMENT_DOM_INTERFACES=$.Q;$.P={NOT_LOADED:0,SAME_DOCUMENT:1,NEW_DOCUMENT:2};$.ueffects=$.P;
$.J={"a::href":2,"area::href":2,"audio::src":1,"blockquote::cite":0,"command::icon":1,"del::cite":0,"form::action":2,"img::src":1,"input::src":1,"ins::cite":0,"q::cite":0,"video::poster":1,"video::src":1};$.URIEFFECTS=$.J;$.M={UNSANDBOXED:2,SANDBOXED:1,DATA:0};$.ltypes=$.M;$.I={"a::href":2,"area::href":2,"audio::src":2,"blockquote::cite":2,"command::icon":1,"del::cite":2,"form::action":2,"img::src":1,"input::src":1,"ins::cite":2,"q::cite":2,"video::poster":1,"video::src":2};$.LOADERTYPES=$.I;
"undefined"!==typeof window&&(window.html4=$);var ha=function(g){function w(a){if(i.hasOwnProperty(a))return i[a];var b=a.match(q);return b?String.fromCharCode(parseInt(b[1],10)):(b=a.match(B))?String.fromCharCode(parseInt(b[1],16)):r&&F.test(a)?(r.innerHTML="&"+a+";",b=r.textContent,i[a]=b):"&"+a+";"}function M(a,b){return w(b)}function x(a){return a.replace(j,M)}function E(a){return(""+a).replace(R,"&amp;").replace(P,"&lt;").replace(S,"&gt;").replace(D,"&#34;")}function e(a){return a.replace(ia,"&amp;$1").replace(P,"&lt;").replace(S,"&gt;")}
function v(b){var d={z:b.z||b.cdata,A:b.A||b.comment,B:b.B||b.endDoc,t:b.t||b.endTag,e:b.e||b.pcdata,F:b.F||b.rcdata,H:b.H||b.startDoc,w:b.w||b.startTag};return function(b,g){var f;var H=/(<\/|<\!--|<[!?]|[&<>])/g;f=b+"";if(G)f=f.split(H);else{for(var e=[],h=0,j;(j=H.exec(f))!==s;)e.push(f.substring(h,j.index)),e.push(j[0]),h=j.index+j[0].length;e.push(f.substring(h));f=e}a(d,f,0,{r:C,C:C},g)}}function b(b,d,g,f,t){return function(){a(b,d,g,f,t)}}function a(a,d,p,e,t){try{a.H&&0==p&&a.H(t);for(var h,
z,j,i=d.length;p<i;){var o=d[p++],l=d[p];switch(o){case "&":I.test(l)?(a.e&&a.e("&"+l,t,A,b(a,d,p,e,t)),p++):a.e&&a.e("&amp;",t,A,b(a,d,p,e,t));break;case "</":if(h=/^([-\w:]+)[^\'\"]*/.exec(l))if(h[0].length===l.length&&">"===d[p+1])p+=2,j=h[1].toLowerCase(),a.t&&a.t(j,t,A,b(a,d,p,e,t));else{var m=d,q=p,r=a,u=t,v=A,y=e,w=f(m,q);w?(r.t&&r.t(w.name,u,v,b(r,m,q,y,u)),p=w.next):p=m.length}else a.e&&a.e("&lt;/",t,A,b(a,d,p,e,t));break;case "<":if(h=/^([-\w:]+)\s*\/?/.exec(l))if(h[0].length===l.length&&
">"===d[p+1]){p+=2;j=h[1].toLowerCase();a.w&&a.w(j,[],t,A,b(a,d,p,e,t));var B=g.f[j];B&K&&(p=k(d,{name:j,next:p,c:B},a,t,A,e))}else{var m=d,q=a,r=t,u=A,v=e,x=f(m,p);x?(q.w&&q.w(x.name,x.R,r,u,b(q,m,x.next,v,r)),p=x.c&K?k(m,x,q,r,u,v):x.next):p=m.length}else a.e&&a.e("&lt;",t,A,b(a,d,p,e,t));break;case "<\!--":if(!e.C){for(z=p+1;z<i&&!(">"===d[z]&&/--$/.test(d[z-1]));z++);if(z<i){if(a.A){var D=d.slice(p,z).join("");a.A(D.substr(0,D.length-2),t,A,b(a,d,z+1,e,t))}p=z+1}else e.C=n}e.C&&a.e&&a.e("&lt;!--",
t,A,b(a,d,p,e,t));break;case "<!":if(/^\w/.test(l)){if(!e.r){for(z=p+1;z<i&&">"!==d[z];z++);z<i?p=z+1:e.r=n}e.r&&a.e&&a.e("&lt;!",t,A,b(a,d,p,e,t))}else a.e&&a.e("&lt;!",t,A,b(a,d,p,e,t));break;case "<?":if(!e.r){for(z=p+1;z<i&&">"!==d[z];z++);z<i?p=z+1:e.r=n}e.r&&a.e&&a.e("&lt;?",t,A,b(a,d,p,e,t));break;case ">":a.e&&a.e("&gt;",t,A,b(a,d,p,e,t));break;case "":break;default:a.e&&a.e(o,t,A,b(a,d,p,e,t))}}a.B&&a.B(t)}catch(E){if(E!==A)throw E;}}function k(a,d,f,h,t,j){var z=a.length;T.hasOwnProperty(d.name)||
(T[d.name]=RegExp("^"+d.name+"(?:[\\s\\/]|$)","i"));for(var i=T[d.name],k=d.next,l=d.next+1;l<z&&!("</"===a[l-1]&&i.test(a[l]));l++);l<z&&(l-=1);z=a.slice(k,l).join("");if(d.c&g.c.CDATA)f.z&&f.z(z,h,t,b(f,a,l,j,h));else if(d.c&g.c.RCDATA)f.F&&f.F(e(z),h,t,b(f,a,l,j,h));else throw Error("bug");return l}function f(a,b){var d=/^([-\w:]+)/.exec(a[b]),f={};f.name=d[1].toLowerCase();f.c=g.f[f.name];for(var e=a[b].substr(d[0].length),h=b+1,j=a.length;h<j&&">"!==a[h];h++)e+=a[h];if(!(j<=h)){for(var l=[];""!==
e;)if(d=ja.exec(e))if(d[4]&&!d[5]||d[6]&&!d[7]){for(var d=d[4]||d[6],i=C,e=[e,a[h++]];h<j;h++){if(i){if(">"===a[h])break}else 0<=a[h].indexOf(d)&&(i=n);e.push(a[h])}if(j<=h)break;e=e.join("")}else{var i=d[1].toLowerCase(),k;if(d[2]){k=d[3];var m=k.charCodeAt(0);if(34===m||39===m)k=k.substr(1,k.length-2);k=x(k.replace(o,""))}else k="";l.push(i,k);e=e.substr(d[0].length)}else e=e.replace(/^[\s\S][^a-z\s]*/,"");f.R=l;f.next=h+1;return f}}function h(a){function b(a,d){f||d.push(a)}var d,f;return v({startDoc:function(){d=
[];f=C},startTag:function(b,e,h){if(!f&&g.f.hasOwnProperty(b)){var j=g.f[b];if(!(j&g.c.FOLDABLE)){var k=a(b,e);if(k){if("object"!==typeof k)throw Error("tagPolicy did not return object (old API?)");if("attribs"in k)e=k.attribs;else throw Error("tagPolicy gave no attribs");var i;"tagName"in k?(i=k.tagName,k=g.f[i]):(i=b,k=j);if(j&g.c.OPTIONAL_ENDTAG){var l=d[d.length-1];l&&l.D===b&&(l.v!==i||b!==i)&&h.push("</",l.v,">")}j&g.c.EMPTY||d.push({D:b,v:i});h.push("<",i);b=0;for(l=e.length;b<l;b+=2){var m=
e[b],o=e[b+1];o!==s&&o!==c&&h.push(" ",m,'="',E(o),'"')}h.push(">");j&g.c.EMPTY&&!(k&g.c.EMPTY)&&h.push("</",i,">")}else f=!(j&g.c.EMPTY)}}},endTag:function(a,b){if(f)f=C;else if(g.f.hasOwnProperty(a)){var e=g.f[a];if(!(e&(g.c.EMPTY|g.c.FOLDABLE))){if(e&g.c.OPTIONAL_ENDTAG)for(e=d.length;0<=--e;){var h=d[e].D;if(h===a)break;if(!(g.f[h]&g.c.OPTIONAL_ENDTAG))return}else for(e=d.length;0<=--e&&d[e].D!==a;);if(!(0>e)){for(h=d.length;--h>e;){var j=d[h].v;g.f[j]&g.c.OPTIONAL_ENDTAG||b.push("</",j,">")}e<
d.length&&(a=d[e].v);d.length=e;b.push("</",a,">")}}}},pcdata:b,rcdata:b,cdata:b,endDoc:function(a){for(;d.length;d.length--)a.push("</",d[d.length-1].v,">")}})}function d(a,b,d,f,e){if(!e)return s;try{var g=Y.parse(""+a);if(g&&(!g.K()||ka.test(g.W()))){var h=e(g,b,d,f);return h?h.toString():s}}catch(j){}return s}function y(a,b,d,f,e){d||a(b+" removed",{S:"removed",tagName:b});if(f!==e){var g="changed";f&&!e?g="removed":!f&&e&&(g="added");a(b+"."+d+" "+g,{S:g,tagName:b,la:d,oldValue:f,newValue:e})}}
function l(a,b,d){b=b+"::"+d;if(a.hasOwnProperty(b))return a[b];b="*::"+d;if(a.hasOwnProperty(b))return a[b]}function V(a,b,f,e,h){for(var j=0;j<b.length;j+=2){var k=b[j],i=b[j+1],m=i,o=s,q;if((q=a+"::"+k,g.m.hasOwnProperty(q))||(q="*::"+k,g.m.hasOwnProperty(q)))o=g.m[q];if(o!==s)switch(o){case g.d.NONE:break;case g.d.SCRIPT:i=s;h&&y(h,a,k,m,i);break;case g.d.STYLE:if("undefined"===typeof N){i=s;h&&y(h,a,k,m,i);break}var r=[];N(i,{declaration:function(a,b){var e=a.toLowerCase();u(e,b,f?function(a){return d(a,
g.P.ja,g.M.ka,{TYPE:"CSS",CSS_PROP:e},f)}:s);b.length&&r.push(e+": "+b.join(" "))}});i=0<r.length?r.join(" ; "):s;h&&y(h,a,k,m,i);break;case g.d.ID:case g.d.IDREF:case g.d.IDREFS:case g.d.GLOBAL_NAME:case g.d.LOCAL_NAME:case g.d.CLASSES:i=e?e(i):i;h&&y(h,a,k,m,i);break;case g.d.URI:i=d(i,l(g.J,a,k),l(g.I,a,k),{TYPE:"MARKUP",XML_ATTR:k,XML_TAG:a},f);h&&y(h,a,k,m,i);break;case g.d.URI_FRAGMENT:i&&"#"===i.charAt(0)?(i=i.substring(1),i=e?e(i):i,i!==s&&i!==c&&(i="#"+i)):i=s;h&&y(h,a,k,m,i);break;default:i=
s,h&&y(h,a,k,m,i)}else i=s,h&&y(h,a,k,m,i);b[j+1]=i}return b}function ea(a,b,d){return function(e,f){if(g.f[e]&g.c.UNSAFE)d&&y(d,e,c,c,c);else return{attribs:V(e,f,a,b,d)}}}function Q(a,b){var d=[];h(b)(a,d);return d.join("")}var N,u;"undefined"!==typeof window&&(N=window.parseCssDeclarations,u=window.sanitizeCssProperty);var i={lt:"<",LT:"<",gt:">",GT:">",amp:"&",AMP:"&",quot:'"',apos:"'",nbsp:"\u00a0"},q=/^#(\d+)$/,B=/^#x([0-9A-Fa-f]+)$/,F=/^[A-Za-z][A-za-z0-9]+$/,r="undefined"!==typeof window&&
window.document?window.document.createElement("textarea"):s,o=/\0/g,j=/&(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/g,I=/^(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/,R=/&/g,ia=/&([^a-z#]|#(?:[^0-9x]|x(?:[^0-9a-f]|$)|$)|$)/gi,P=/[<]/g,S=/>/g,D=/\"/g,ja=/^\s*([-.:\w]+)(?:\s*(=)\s*((")[^"]*("|$)|(')[^']*('|$)|(?=[a-z][-\w]*\s*=)|[^"'\s]*))?/i,G=3==="a,b".split(/(,)/).length,K=g.c.CDATA|g.c.RCDATA,A={},T={},ka=/^(?:https?|mailto|data)$/i,m={};m.pa=m.escapeAttrib=E;m.ra=m.makeHtmlSanitizer=h;m.sa=m.makeSaxParser=v;m.ta=m.makeTagPolicy=
ea;m.wa=m.normalizeRCData=e;m.xa=m.sanitize=function(a,b,d,e){return Q(a,ea(b,d,e))};m.ya=m.sanitizeAttribs=V;m.za=m.sanitizeWithPolicy=Q;m.Ba=m.unescapeEntities=x;return m}($),la=ha.sanitize;"undefined"!==typeof window&&(window.html=ha,window.html_sanitize=la);})();

849
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/arrows.xml

@ -1,849 +0,0 @@
<shapes name="mxGraph.arrows">
<shape name="Arrow Down" h="97.5" w="70" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
</connections>
<background>
<path>
<move x="20" y="0"/>
<line x="20" y="59"/>
<line x="0" y="59"/>
<line x="35" y="97.5"/>
<line x="70" y="59"/>
<line x="50" y="59"/>
<line x="50" y="0"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Arrow Left" h="70" w="97.5" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="97.5" y="20"/>
<line x="38.5" y="20"/>
<line x="38.5" y="0"/>
<line x="0" y="35"/>
<line x="38.5" y="70"/>
<line x="38.5" y="50"/>
<line x="97.5" y="50"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Arrow Right" h="70" w="97.5" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="0" y="20"/>
<line x="59" y="20"/>
<line x="59" y="0"/>
<line x="97.5" y="35"/>
<line x="59" y="70"/>
<line x="59" y="50"/>
<line x="0" y="50"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Arrow Up" h="97.5" w="70" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
</connections>
<background>
<path>
<move x="20" y="97.5"/>
<line x="20" y="38.5"/>
<line x="0" y="38.5"/>
<line x="35" y="0"/>
<line x="70" y="38.5"/>
<line x="50" y="38.5"/>
<line x="50" y="97.5"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Bent Left Arrow" h="97" w="97.01" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.85" y="1" perimeter="0" name="S"/>
<constraint x="0" y="0.29" perimeter="0" name="W"/>
</connections>
<background>
<path>
<move x="68" y="97"/>
<line x="68" y="48"/>
<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="63" y="43"/>
<line x="38" y="43"/>
<line x="38" y="56"/>
<line x="0" y="28"/>
<line x="38" y="0"/>
<line x="38" y="13"/>
<line x="63" y="13"/>
<arc rx="35" ry="35" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="97" y="48"/>
<line x="97" y="97"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Bent Right Arrow" h="97" w="97.01" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.15" y="1" perimeter="0" name="S"/>
<constraint x="1" y="0.29" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="29.01" y="97"/>
<line x="29.01" y="48"/>
<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="34.01" y="43"/>
<line x="59.01" y="43"/>
<line x="59.01" y="56"/>
<line x="97.01" y="28"/>
<line x="59.01" y="0"/>
<line x="59.01" y="13"/>
<line x="34.01" y="13"/>
<arc rx="35" ry="35" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="0.01" y="48"/>
<line x="0.01" y="97"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Bent Up Arrow" h="83.5" w="97" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.71" y="0" perimeter="0" name="N"/>
<constraint x="0" y="0.82" perimeter="0" name="W"/>
</connections>
<background>
<path>
<move x="0" y="53.5"/>
<line x="54" y="53.5"/>
<line x="54" y="23.5"/>
<line x="42" y="23.5"/>
<line x="69" y="0"/>
<line x="97" y="23.5"/>
<line x="84" y="23.5"/>
<line x="84" y="83.5"/>
<line x="0" y="83.5"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Callout Double Arrow" h="97.5" w="50" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
</connections>
<background>
<path>
<move x="15" y="24"/>
<line x="15" y="19"/>
<line x="6" y="19"/>
<line x="25" y="0"/>
<line x="44" y="19"/>
<line x="35" y="19"/>
<line x="35" y="24"/>
<line x="50" y="24"/>
<line x="50" y="74"/>
<line x="35" y="74"/>
<line x="35" y="79"/>
<line x="44" y="79"/>
<line x="25" y="97.5"/>
<line x="6" y="79"/>
<line x="15" y="79"/>
<line x="15" y="74"/>
<line x="0" y="74"/>
<line x="0" y="24"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Callout Quad Arrow" h="97" w="97" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="38.5" y="23.5"/>
<line x="38.5" y="18.5"/>
<line x="29.5" y="18.5"/>
<line x="48.5" y="0"/>
<line x="67.5" y="18.5"/>
<line x="58.5" y="18.5"/>
<line x="58.5" y="23.5"/>
<line x="73.5" y="23.5"/>
<line x="73.5" y="38.5"/>
<line x="78.5" y="38.5"/>
<line x="78.5" y="29.5"/>
<line x="97" y="48.5"/>
<line x="78.5" y="67.5"/>
<line x="78.5" y="58.5"/>
<line x="73.5" y="58.5"/>
<line x="73.5" y="73.5"/>
<line x="58.5" y="73.5"/>
<line x="58.5" y="78.5"/>
<line x="67.5" y="78.5"/>
<line x="48.5" y="97"/>
<line x="29.5" y="78.5"/>
<line x="38.5" y="78.5"/>
<line x="38.5" y="73.5"/>
<line x="23.5" y="73.5"/>
<line x="23.5" y="58.5"/>
<line x="18.5" y="58.5"/>
<line x="18.5" y="67.5"/>
<line x="0" y="48.5"/>
<line x="18.5" y="29.5"/>
<line x="18.5" y="38.5"/>
<line x="23.5" y="38.5"/>
<line x="23.5" y="23.5"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Callout Up Arrow" h="98" w="60" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
</connections>
<background>
<path>
<move x="20" y="39"/>
<line x="20" y="19"/>
<line x="11" y="19"/>
<line x="30" y="0"/>
<line x="49" y="19"/>
<line x="40" y="19"/>
<line x="40" y="39"/>
<line x="60" y="39"/>
<line x="60" y="98"/>
<line x="0" y="98"/>
<line x="0" y="39"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Chevron Arrow" h="60" w="96" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.31" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="30" y="30"/>
<line x="0" y="0"/>
<line x="66" y="0"/>
<line x="96" y="30"/>
<line x="66" y="60"/>
<line x="0" y="60"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Circular Arrow" h="69.5" w="97" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.12" y="0.64" perimeter="0" name="SW"/>
<constraint x="0.794" y="1" perimeter="0" name="SE"/>
</connections>
<background>
<path>
<move x="0" y="44.5"/>
<arc rx="44.5" ry="44.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="89" y="44.5"/>
<line x="97" y="44.5"/>
<line x="77" y="69.5"/>
<line x="57" y="44.5"/>
<line x="65" y="44.5"/>
<arc rx="20.5" ry="20.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="24" y="44.5"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Jump-in Arrow 1" h="99.41" w="96" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0" y="0.024" perimeter="0" name="NW"/>
<constraint x="0.657" y="1" perimeter="0" name="S"/>
</connections>
<background>
<linejoin join="round"/>
<path>
<move x="30" y="60.41"/>
<line x="48" y="60.41"/>
<arc rx="60" ry="60" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="0" y="2.41"/>
<arc rx="75" ry="75" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="78" y="60.41"/>
<line x="96" y="60.41"/>
<line x="63" y="99.41"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Jump-in Arrow 2" h="99.41" w="96" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="1" y="0.024" perimeter="0" name="NE"/>
<constraint x="0.343" y="1" perimeter="0" name="S"/>
</connections>
<background>
<linejoin join="round"/>
<path>
<move x="66" y="60.41"/>
<line x="48" y="60.41"/>
<arc rx="60" ry="60" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="96" y="2.41"/>
<arc rx="75" ry="75" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="18" y="60.41"/>
<line x="0" y="60.41"/>
<line x="33" y="99.41"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Left and Up Arrow" h="96.5" w="96.5" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0" y="0.71" perimeter="0" name="W"/>
<constraint x="0.71" y="0" perimeter="0" name="N"/>
</connections>
<background>
<path>
<move x="23.5" y="53.5"/>
<line x="53.5" y="53.5"/>
<line x="53.5" y="23.5"/>
<line x="41.5" y="23.5"/>
<line x="68.5" y="0"/>
<line x="96.5" y="23.5"/>
<line x="83.5" y="23.5"/>
<line x="83.5" y="83.5"/>
<line x="23.5" y="83.5"/>
<line x="23.5" y="96.5"/>
<line x="0" y="68.5"/>
<line x="23.5" y="41.5"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Left Sharp Edged Head Arrow" h="60" w="97.5" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="97.5" y="20"/>
<line x="18.5" y="20"/>
<line x="30.5" y="0"/>
<line x="18.5" y="0"/>
<line x="0" y="30"/>
<line x="18.5" y="60"/>
<line x="30.5" y="60"/>
<line x="18.5" y="40"/>
<line x="97.5" y="40"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Notched Signal-in Arrow" h="30" w="96.5" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.13" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="0" y="0"/>
<line x="83" y="0"/>
<line x="96.5" y="15"/>
<line x="83" y="30"/>
<line x="0" y="30"/>
<line x="13" y="15"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Quad Arrow" h="97.5" w="97.5" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="39" y="39"/>
<line x="39" y="19"/>
<line x="30" y="19"/>
<line x="49" y="0"/>
<line x="68" y="19"/>
<line x="59" y="19"/>
<line x="59" y="39"/>
<line x="79" y="39"/>
<line x="79" y="30"/>
<line x="97.5" y="49"/>
<line x="79" y="68"/>
<line x="79" y="59"/>
<line x="59" y="59"/>
<line x="59" y="79"/>
<line x="68" y="79"/>
<line x="49" y="97.5"/>
<line x="30" y="79"/>
<line x="39" y="79"/>
<line x="39" y="59"/>
<line x="19" y="59"/>
<line x="19" y="68"/>
<line x="0" y="49"/>
<line x="19" y="30"/>
<line x="19" y="39"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Right Notched Arrow" h="70" w="96.5" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.13" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="0" y="20"/>
<line x="58" y="20"/>
<line x="58" y="0"/>
<line x="96.5" y="35"/>
<line x="58" y="70"/>
<line x="58" y="50"/>
<line x="0" y="50"/>
<line x="13" y="35"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Sharp Edged Arrow" h="60" w="97.5" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="97.5" y="20"/>
<line x="18.5" y="20"/>
<line x="27.5" y="5"/>
<line x="18.5" y="0"/>
<line x="0" y="30"/>
<line x="18.5" y="60"/>
<line x="27.5" y="55"/>
<line x="18.5" y="40"/>
<line x="97.5" y="40"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Signal-in Arrow" h="30" w="97.5" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="0" y="0"/>
<line x="84" y="0"/>
<line x="97.5" y="15"/>
<line x="84" y="30"/>
<line x="0" y="30"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Slender Left Arrow" h="60" w="97.5" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="97.5" y="20"/>
<line x="18.5" y="20"/>
<line x="18.5" y="0"/>
<line x="0" y="30"/>
<line x="18.5" y="60"/>
<line x="18.5" y="40"/>
<line x="97.5" y="40"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Slender Two Way Arrow" h="60" w="97.5" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="78.5" y="20"/>
<line x="18.5" y="20"/>
<line x="18.5" y="0"/>
<line x="0" y="30"/>
<line x="18.5" y="60"/>
<line x="18.5" y="40"/>
<line x="78.5" y="40"/>
<line x="78.5" y="60"/>
<line x="97.5" y="30"/>
<line x="78.5" y="0"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Slender Wide Tailed Arrow" h="60" w="96.5" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="0.8" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="58.5" y="20"/>
<line x="18.5" y="20"/>
<line x="18.5" y="0"/>
<line x="0" y="30"/>
<line x="18.5" y="60"/>
<line x="18.5" y="40"/>
<line x="58.5" y="40"/>
<line x="73.5" y="60"/>
<line x="96.5" y="60"/>
<line x="76.5" y="30"/>
<line x="96.5" y="0"/>
<line x="73.5" y="0"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Striped Arrow" h="70" w="97.5" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="24" y="20"/>
<line x="59" y="20"/>
<line x="59" y="0"/>
<line x="97.5" y="35"/>
<line x="59" y="70"/>
<line x="59" y="50"/>
<line x="24" y="50"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
<rect x="8" y="20" w="12" h="30"/>
<fillstroke/>
<rect x="0" y="20" w="4" h="30"/>
<fillstroke/>
</foreground>
</shape>
<shape name="Stylised Notched Arrow" h="60" w="96.5" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.13" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<miterlimit limit="8"/>
<path>
<move x="0" y="5"/>
<line x="68" y="20"/>
<line x="58" y="0"/>
<line x="96.5" y="30"/>
<line x="58" y="60"/>
<line x="68" y="45"/>
<line x="0" y="55"/>
<line x="13" y="30"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Triad Arrow" h="68" w="97.5" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0" y="0.72" perimeter="0" name="W"/>
<constraint x="1" y="0.72" perimeter="0" name="E"/>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
</connections>
<background>
<path>
<move x="39" y="39"/>
<line x="39" y="19"/>
<line x="30" y="19"/>
<line x="49" y="0"/>
<line x="68" y="19"/>
<line x="59" y="19"/>
<line x="59" y="39"/>
<line x="79" y="39"/>
<line x="79" y="30"/>
<line x="97.5" y="49"/>
<line x="79" y="68"/>
<line x="79" y="59"/>
<line x="39" y="59"/>
<line x="19" y="59"/>
<line x="19" y="68"/>
<line x="0" y="49"/>
<line x="19" y="30"/>
<line x="19" y="39"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Two Way Arrow Horizontal" h="60" w="96" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="63" y="15"/>
<line x="63" y="0"/>
<line x="96" y="30"/>
<line x="63" y="60"/>
<line x="63" y="45"/>
<line x="33" y="45"/>
<line x="33" y="60"/>
<line x="0" y="30"/>
<line x="33" y="0"/>
<line x="33" y="15"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Two Way Arrow Vertical" h="96" w="60" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
</connections>
<background>
<path>
<move x="15" y="63"/>
<line x="0" y="63"/>
<line x="30" y="96"/>
<line x="60" y="63"/>
<line x="45" y="63"/>
<line x="45" y="33"/>
<line x="60" y="33"/>
<line x="30" y="0"/>
<line x="0" y="33"/>
<line x="15" y="33"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="U Turn Arrow" h="98" w="97" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.12" y="1" perimeter="0" name="SW"/>
<constraint x="0.792" y="0.71" perimeter="0" name="SE"/>
</connections>
<background>
<path>
<move x="0" y="44.5"/>
<arc rx="44.5" ry="44.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="89" y="44.5"/>
<line x="97" y="44.5"/>
<line x="77" y="69.5"/>
<line x="57" y="44.5"/>
<line x="65" y="44.5"/>
<arc rx="20.5" ry="20.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="24" y="44.83"/>
<line x="24" y="98"/>
<line x="0" y="98"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="U Turn Down Arrow" h="62" w="97" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.91" y="1" perimeter="0" name="SE"/>
<constraint x="0.237" y="1" perimeter="0" name="SW"/>
</connections>
<background>
<path>
<move x="97" y="62"/>
<line x="97" y="32"/>
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="33" y="32"/>
<line x="46" y="32"/>
<line x="23" y="62"/>
<line x="0" y="32"/>
<line x="13" y="32"/>
<arc rx="32" ry="32" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="45" y="0"/>
<line x="65" y="0"/>
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="53" y="3"/>
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="78" y="32"/>
<line x="78" y="62"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="U Turn Left Arrow" h="97.07" w="62.23" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0" y="0.76" perimeter="0" name="SW"/>
<constraint x="0" y="0.1" perimeter="0" name="NW"/>
</connections>
<background>
<path>
<move x="0" y="0.19"/>
<line x="30" y="0.07"/>
<arc rx="30" ry="30" x-axis-rotation="-90.22" large-arc-flag="0" sweep-flag="1" x="30.25" y="64.07"/>
<line x="30.2" y="51.07"/>
<line x="0.29" y="74.19"/>
<line x="30.37" y="97.07"/>
<line x="30.32" y="84.07"/>
<arc rx="32" ry="32" x-axis-rotation="-90.22" large-arc-flag="0" sweep-flag="0" x="62.2" y="51.95"/>
<line x="62.13" y="31.95"/>
<arc rx="30" ry="30" x-axis-rotation="-90.22" large-arc-flag="0" sweep-flag="1" x="59.17" y="43.96"/>
<arc rx="30" ry="30" x-axis-rotation="-90.22" large-arc-flag="0" sweep-flag="0" x="30.08" y="19.07"/>
<line x="0.08" y="19.19"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="U Turn Right Arrow" h="97.07" w="62.23" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="1" y="0.76" perimeter="0" name="SW"/>
<constraint x="1" y="0.1" perimeter="0" name="NW"/>
</connections>
<background>
<path>
<move x="62.23" y="0.19"/>
<line x="32.23" y="0.07"/>
<arc rx="30" ry="30" x-axis-rotation="-89.78" large-arc-flag="0" sweep-flag="0" x="31.99" y="64.07"/>
<line x="32.03" y="51.07"/>
<line x="61.95" y="74.19"/>
<line x="31.86" y="97.07"/>
<line x="31.91" y="84.07"/>
<arc rx="32" ry="32" x-axis-rotation="-89.78" large-arc-flag="0" sweep-flag="1" x="0.03" y="51.95"/>
<line x="0.11" y="31.95"/>
<arc rx="30" ry="30" x-axis-rotation="-89.78" large-arc-flag="0" sweep-flag="0" x="3.06" y="43.96"/>
<arc rx="30" ry="30" x-axis-rotation="-89.78" large-arc-flag="0" sweep-flag="1" x="32.16" y="19.07"/>
<line x="62.16" y="19.19"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="U Turn Up Arrow" h="62" w="97" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.91" y="0" perimeter="0" name="NE"/>
<constraint x="0.237" y="0" perimeter="0" name="NW"/>
</connections>
<background>
<path>
<move x="97" y="0"/>
<line x="97" y="30"/>
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="33" y="30"/>
<line x="46" y="30"/>
<line x="23" y="0"/>
<line x="0" y="30"/>
<line x="13" y="30"/>
<arc rx="32" ry="32" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="45" y="62"/>
<line x="65" y="62"/>
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="53" y="59"/>
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="78" y="30"/>
<line x="78" y="0"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
</shapes>

895
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/basic.xml

@ -1,895 +0,0 @@
<shapes name="mxgraph.basic">
<shape name="4 Point Star" h="92" w="92" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="46" y="0"/>
<line x="56" y="36"/>
<line x="92" y="46"/>
<line x="56" y="56"/>
<line x="46" y="92"/>
<line x="36" y="56"/>
<line x="0" y="46"/>
<line x="36" y="36"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="6 Point Star" h="84.5" w="96" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.24" y="0" perimeter="0" name="N1"/>
<constraint x="0.24" y="1" perimeter="0" name="S1"/>
<constraint x="0.76" y="0" perimeter="0" name="N2"/>
<constraint x="0.76" y="1" perimeter="0" name="S2"/>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="23" y="28.9"/>
<line x="23" y="0"/>
<line x="48" y="14.4"/>
<line x="73" y="0"/>
<line x="73" y="28.9"/>
<line x="96" y="42.2"/>
<line x="73" y="55.6"/>
<line x="73" y="84.5"/>
<line x="48" y="70"/>
<line x="23" y="84.5"/>
<line x="23" y="55.6"/>
<line x="0" y="42.2"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="8 Point Star" h="96" w="96" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.29" y="0" perimeter="0" name="N1"/>
<constraint x="0.29" y="1" perimeter="0" name="S1"/>
<constraint x="0.71" y="0" perimeter="0" name="N2"/>
<constraint x="0.71" y="1" perimeter="0" name="S2"/>
<constraint x="0" y="0.29" perimeter="0" name="W1"/>
<constraint x="0" y="0.71" perimeter="0" name="W2"/>
<constraint x="1" y="0.29" perimeter="0" name="E1"/>
<constraint x="1" y="0.71" perimeter="0" name="E2"/>
</connections>
<background>
<path>
<move x="28" y="28"/>
<line x="28" y="0"/>
<line x="48" y="20"/>
<line x="68" y="0"/>
<line x="68" y="28"/>
<line x="96" y="28"/>
<line x="76" y="48"/>
<line x="96" y="68"/>
<line x="68" y="68"/>
<line x="68" y="96"/>
<line x="48" y="76"/>
<line x="28" y="96"/>
<line x="28" y="68"/>
<line x="0" y="68"/>
<line x="20" y="48"/>
<line x="0" y="28"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Banner" h="50" w="96" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="0.8" perimeter="0" name="S"/>
<constraint x="0.13" y="0.6" perimeter="0" name="W"/>
<constraint x="0.87" y="0.6" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="0" y="50"/>
<line x="38" y="50"/>
<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="40.5" y="47.5"/>
<line x="40.5" y="40"/>
<line x="55.5" y="40"/>
<line x="55.5" y="47.5"/>
<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="58" y="50"/>
<line x="96" y="50"/>
<line x="83" y="30"/>
<line x="96" y="10"/>
<line x="70.5" y="10"/>
<line x="70.5" y="2.5"/>
<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="68" y="0"/>
<line x="28" y="0"/>
<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="25.5" y="2.5"/>
<line x="25.5" y="10"/>
<line x="0" y="10"/>
<line x="13" y="30"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
<path>
<move x="40.5" y="47.5"/>
<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="38" y="45"/>
<line x="28" y="45"/>
<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="1" sweep-flag="1" x="28" y="40"/>
<line x="68" y="40"/>
<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="68" y="45"/>
<line x="58" y="45"/>
<arc rx="2.5" ry="2.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="55.5" y="47.5"/>
<move x="25.5" y="42.5"/>
<line x="25.5" y="10"/>
<move x="70.5" y="42.5"/>
<line x="70.5" y="10"/>
</path>
<stroke/>
</foreground>
</shape>
<shape name="Cloud Callout" h="61.4" w="90.41" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="0.74" perimeter="0" name="S"/>
<constraint x="0.015" y="0.4" perimeter="0" name="W"/>
<constraint x="0.993" y="0.4" perimeter="0" name="E"/>
<constraint x="0.01" y="0.995" perimeter="0" name="SW"/>
</connections>
<background>
<save/>
<linejoin join="round"/>
<path>
<move x="12.1" y="31.8"/>
<arc rx="8" ry="8" x-axis-rotation="0" large-arc-flag="1" sweep-flag="1" x="12.1" y="16.8"/>
<arc rx="12" ry="12" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="33.1" y="8.8"/>
<arc rx="14" ry="14" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="59.1" y="8.8"/>
<arc rx="12" ry="12" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="79.1" y="16.8"/>
<arc rx="8" ry="8" x-axis-rotation="0" large-arc-flag="1" sweep-flag="1" x="79.1" y="31.8"/>
<arc rx="12" ry="12" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="58.1" y="38.8"/>
<arc rx="14" ry="14" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="34.1" y="38.8"/>
<arc rx="10" ry="8" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="12.1" y="31.8"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
<restore/>
<linejoin join="miter"/>
<ellipse x="9.1" y="46.1" w="12" h="5.4"/>
<fillstroke/>
<ellipse x="4.3" y="53.5" w="7.6" h="3.6"/>
<fillstroke/>
<ellipse x="0" y="58.8" w="4.8" h="2.6"/>
<fillstroke/>
</foreground>
</shape>
<shape name="Cone" h="96.91" w="99" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
</connections>
<background>
<path>
<move x="49.5" y="0"/>
<line x="99" y="88"/>
<arc rx="25" ry="4.5" x-axis-rotation="0" large-arc-flag="1" sweep-flag="1" x="0" y="88"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
<path>
<move x="0" y="88"/>
<arc rx="25" ry="4.5" x-axis-rotation="0" large-arc-flag="1" sweep-flag="1" x="99" y="88"/>
</path>
<fillstroke/>
</foreground>
</shape>
<shape name="Cross" h="98" w="98" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="0" y="34"/>
<line x="34" y="34"/>
<line x="34" y="0"/>
<line x="64" y="0"/>
<line x="64" y="34"/>
<line x="98" y="34"/>
<line x="98" y="64"/>
<line x="64" y="64"/>
<line x="64" y="98"/>
<line x="34" y="98"/>
<line x="34" y="64"/>
<line x="0" y="64"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Document" h="98" w="98" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="98" y="14"/>
<line x="98" y="98"/>
<line x="0" y="98"/>
<line x="0" y="0"/>
<line x="84" y="0"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
<path>
<move x="84" y="0"/>
<arc rx="18" ry="10" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="79" y="9"/>
<line x="98" y="14"/>
</path>
<stroke/>
</foreground>
</shape>
<shape name="Flash" h="95.5" w="60" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.565" y="0" perimeter="0" name="N"/>
<constraint x="0" y="0.995" perimeter="0" name="SW"/>
</connections>
<background>
<miterlimit limit="6"/>
<path>
<move x="0" y="95.5"/>
<line x="20" y="75.5"/>
<line x="3" y="61.5"/>
<line x="20" y="49.5"/>
<line x="3" y="31.5"/>
<line x="34" y="0"/>
<line x="60" y="25.5"/>
<line x="36" y="39.5"/>
<line x="50" y="53.5"/>
<line x="29" y="65.5"/>
<line x="42" y="76.5"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Half Circle" h="49" w="98" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
</connections>
<background>
<path>
<move x="0" y="0"/>
<arc rx="44.5" ry="44.5" x-axis-rotation="0" large-arc-flag="1" sweep-flag="0" x="98" y="0"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Heart" h="94.74" w="103.89" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0.115" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
<constraint x="0.07" y="0.5" perimeter="0" name="W"/>
<constraint x="0.93" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="51.94" y="94.74"/>
<curve x1="55.79" y1="90.78" x2="77.8" y2="68.16" x3="91.56" y3="54.03"/>
<curve x1="103.89" y1="41.37" x2="103.62" y2="22.91" x3="92.42" y3="11.46"/>
<curve x1="81.21" y1="0" x2="63.09" y2="0.05" x3="51.94" y3="11.56"/>
<curve x1="40.79" y1="0.05" x2="22.67" y2="0" x3="11.47" y3="11.45"/>
<curve x1="0.26" y1="22.9" x2="0" y2="41.36" x3="12.32" y3="54.03"/>
<curve x1="26.08" y1="68.16" x2="48.09" y2="90.78" x3="51.94" y3="94.74"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Loud Callout" h="59.9" w="93.3" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.49" y="0" perimeter="0" name="N"/>
<constraint x="0.52" y="0.91" perimeter="0" name="S"/>
<constraint x="0" y="0.51" perimeter="0" name="W"/>
<constraint x="0.99" y="0.503" perimeter="0" name="E"/>
<constraint x="0.04" y="1" perimeter="0" name="SE"/>
</connections>
<background>
<miterlimit limit="10"/>
<path>
<move x="14.9" y="43.9"/>
<line x="9.3" y="46.7"/>
<line x="11.1" y="40.9"/>
<line x="6.6" y="43.9"/>
<line x="8.3" y="39.2"/>
<line x="2.8" y="40.8"/>
<line x="6.6" y="36.4"/>
<line x="0.9" y="36.2"/>
<line x="5.8" y="32.7"/>
<line x="0" y="30.8"/>
<line x="5.3" y="28.2"/>
<line x="0.3" y="25.6"/>
<line x="5.9" y="24.19"/>
<line x="0.8" y="19.9"/>
<line x="6.5" y="19.8"/>
<line x="2.8" y="15.1"/>
<line x="8.2" y="16.1"/>
<line x="5.9" y="11.3"/>
<line x="11.5" y="13.2"/>
<line x="10.2" y="8.7"/>
<line x="15.7" y="10.6"/>
<line x="14.9" y="6.15"/>
<line x="19.2" y="9.3"/>
<line x="19.8" y="4.3"/>
<line x="23.4" y="8"/>
<line x="23.8" y="3.4"/>
<line x="28.5" y="6.9"/>
<line x="30.3" y="1.3"/>
<line x="33.3" y="6.2"/>
<line x="34.7" y="0.6"/>
<line x="38.2" y="6"/>
<line x="40.6" y="0"/>
<line x="42.8" y="5.8"/>
<line x="45.6" y="0"/>
<line x="47.1" y="6"/>
<line x="51.3" y="1"/>
<line x="50.8" y="6.3"/>
<line x="55.4" y="0.6"/>
<line x="55.1" y="6.6"/>
<line x="60.5" y="1.4"/>
<line x="61.1" y="7.1"/>
<line x="66.1" y="2.7"/>
<line x="66.2" y="8.7"/>
<line x="71.9" y="4.4"/>
<line x="70.5" y="10"/>
<line x="77.6" y="6.2"/>
<line x="74.9" y="11.8"/>
<line x="83.9" y="7.8"/>
<line x="80.1" y="13.6"/>
<line x="88.1" y="11.9"/>
<line x="85.2" y="17"/>
<line x="91.2" y="16.9"/>
<line x="87" y="20.1"/>
<line x="93.3" y="21.2"/>
<line x="87.9" y="24"/>
<line x="93.2" y="25.8"/>
<line x="86.8" y="26.8"/>
<line x="92.4" y="30.3"/>
<line x="86.6" y="30.8"/>
<line x="90.9" y="34.8"/>
<line x="84.2" y="33.5"/>
<line x="87.8" y="38.8"/>
<line x="82" y="36.6"/>
<line x="84.7" y="41.7"/>
<line x="79.2" y="40.7"/>
<line x="79.8" y="46"/>
<line x="76.3" y="42.9"/>
<line x="75.6" y="48.6"/>
<line x="72" y="44.7"/>
<line x="71.7" y="51.2"/>
<line x="68" y="46"/>
<line x="66.2" y="52.1"/>
<line x="63.7" y="46.6"/>
<line x="61.2" y="53.7"/>
<line x="59.7" y="47.6"/>
<line x="56.9" y="53.8"/>
<line x="55" y="48.1"/>
<line x="52.8" y="53.9"/>
<line x="50.9" y="48.1"/>
<line x="48.4" y="54.5"/>
<line x="47" y="48.1"/>
<line x="44.4" y="53.7"/>
<line x="43.2" y="47.4"/>
<line x="40.1" y="54.2"/>
<line x="38.8" y="47.4"/>
<line x="36.3" y="54.7"/>
<line x="35.6" y="47.8"/>
<line x="32.4" y="55.1"/>
<line x="30.9" y="46.6"/>
<line x="28.6" y="53.3"/>
<line x="26.8" y="47.8"/>
<line x="3.8" y="59.9"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Moon" h="103.05" w="77.05" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.48" y="0" perimeter="0" name="N"/>
<constraint x="1" y="0.89" perimeter="0" name="SE"/>
</connections>
<background>
<path>
<move x="37.05" y="0"/>
<arc rx="48" ry="48" x-axis-rotation="0" large-arc-flag="1" sweep-flag="0" x="77.05" y="92"/>
<arc rx="60" ry="60" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="37.05" y="0"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="No Symbol" h="100" w="100" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
<constraint x="0.145" y="0.145" perimeter="0" name="NW"/>
<constraint x="0.145" y="0.855" perimeter="0" name="SW"/>
<constraint x="0.855" y="0.145" perimeter="0" name="NE"/>
<constraint x="0.855" y="0.855" perimeter="0" name="SE"/>
</connections>
<background>
<path>
<move x="0" y="50"/>
<arc rx="35" ry="35" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="100" y="50"/>
<arc rx="35" ry="35" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0" y="50"/>
<close/>
<move x="78.95" y="69.7"/>
<arc rx="35" ry="35" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="30.3" y="21.05"/>
<close/>
<move x="21.15" y="30.3"/>
<arc rx="35" ry="35" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="69.7" y="79"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Octagon" h="98" w="98" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="0" y="29"/>
<line x="29" y="0"/>
<line x="69" y="0"/>
<line x="98" y="29"/>
<line x="98" y="69"/>
<line x="69" y="98"/>
<line x="29" y="98"/>
<line x="0" y="69"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Orthogonal Triangle" h="97" w="97" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0" y="0" perimeter="0" name="NW"/>
<constraint x="0" y="1" perimeter="0" name="SW"/>
<constraint x="1" y="1" perimeter="0" name="SE"/>
<constraint x="0.5" y="0.5" perimeter="0" name="center"/>
</connections>
<background>
<path>
<move x="0" y="97"/>
<line x="0" y="0"/>
<line x="97" y="97"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Oval Callout" h="63.15" w="109.43" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0.045" perimeter="0" name="N"/>
<constraint x="0.5" y="0.84" perimeter="0" name="S"/>
<constraint x="0.045" y="0.45" perimeter="0" name="W"/>
<constraint x="0.945" y="0.45" perimeter="0" name="E"/>
<constraint x="0.08" y="1" perimeter="0" name="SW"/>
</connections>
<background>
<miterlimit limit="15"/>
<path>
<move x="20.53" y="46.15"/>
<arc rx="49" ry="25" x-axis-rotation="0" large-arc-flag="1" sweep-flag="1" x="31.53" y="50.15"/>
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="9.03" y="63.15"/>
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="20.53" y="46.15"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Parallelepiped" h="60" w="97" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
<constraint x="0.12" y="0.5" perimeter="0" name="W"/>
<constraint x="0.88" y="0.5" perimeter="0" name="E"/>
<constraint x="0.24" y="0" perimeter="0" name="NW"/>
<constraint x="1" y="0" perimeter="0" name="NE"/>
<constraint x="0.76" y="1" perimeter="0" name="SE"/>
<constraint x="0" y="1" perimeter="0" name="SW"/>
</connections>
<background>
<path>
<move x="0" y="60"/>
<line x="23.5" y="0"/>
<line x="97" y="0"/>
<line x="73.5" y="60"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Pentagon" h="90" w="97" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0" y="0.365" perimeter="0" name="W"/>
<constraint x="1" y="0.365" perimeter="0" name="E"/>
<constraint x="0.81" y="1" perimeter="0" name="SE"/>
<constraint x="0.19" y="1" perimeter="0" name="SW"/>
</connections>
<background>
<path>
<move x="18.5" y="90"/>
<line x="0" y="33"/>
<line x="48.5" y="0"/>
<line x="97" y="33"/>
<line x="78.5" y="90"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Rectangular Callout" h="60" w="98" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="0.715" perimeter="0" name="S"/>
<constraint x="0" y="0.355" perimeter="0" name="W"/>
<constraint x="1" y="0.355" perimeter="0" name="E"/>
<constraint x="0.04" y="1" perimeter="0" name="SW"/>
</connections>
<background>
<miterlimit limit="10"/>
<path>
<move x="15" y="43"/>
<line x="0" y="43"/>
<line x="0" y="0"/>
<line x="98" y="0"/>
<line x="98" y="43"/>
<line x="29" y="43"/>
<line x="4" y="60"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Rounded Rectangular Callout" h="60" w="98" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="0.715" perimeter="0" name="S"/>
<constraint x="0" y="0.355" perimeter="0" name="W"/>
<constraint x="1" y="0.355" perimeter="0" name="E"/>
<constraint x="0.04" y="1" perimeter="0" name="SW"/>
</connections>
<background>
<miterlimit limit="15"/>
<path>
<move x="15.5" y="43"/>
<line x="5" y="43"/>
<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0" y="38"/>
<line x="0" y="5"/>
<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="5" y="0"/>
<line x="93" y="0"/>
<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="98" y="5"/>
<line x="98" y="38"/>
<arc rx="5" ry="5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="93" y="43"/>
<line x="29" y="43"/>
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="4" y="60"/>
<arc rx="30" ry="30" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="15.5" y="43"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Smiley" h="98" w="98" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
<constraint x="0.145" y="0.145" perimeter="0" name="NW"/>
<constraint x="0.145" y="0.855" perimeter="0" name="SW"/>
<constraint x="0.855" y="0.145" perimeter="0" name="NE"/>
<constraint x="0.855" y="0.855" perimeter="0" name="SE"/>
</connections>
<background>
<ellipse x="0" y="0" w="98" h="98"/>
</background>
<foreground>
<fillstroke/>
<save/>
<path>
<move x="11" y="54"/>
<arc rx="38" ry="27" x-axis-rotation="0" large-arc-flag="1" sweep-flag="0" x="87" y="54"/>
</path>
<stroke/>
<restore/>
<strokewidth width="1"/>
<path>
<move x="16" y="51"/>
<line x="6" y="57"/>
</path>
<stroke/>
<path>
<move x="82" y="51"/>
<line x="92" y="57"/>
</path>
<stroke/>
<strokewidth width="6"/>
<ellipse x="24" y="27" w="6" h="16"/>
<fillstroke/>
<ellipse x="68" y="27" w="6" h="16"/>
<fillstroke/>
</foreground>
</shape>
<shape name="Star" h="90" w="95" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="0.76" perimeter="0" name="S"/>
<constraint x="0" y="0.367" perimeter="0" name="W"/>
<constraint x="1" y="0.367" perimeter="0" name="E"/>
<constraint x="0.185" y="1" perimeter="0" name="SW"/>
<constraint x="0.815" y="1" perimeter="0" name="SE"/>
</connections>
<background>
<path>
<move x="0" y="33"/>
<line x="36.4" y="33"/>
<line x="47.5" y="0"/>
<line x="58.6" y="33"/>
<line x="95" y="33"/>
<line x="66" y="55.1"/>
<line x="77.5" y="90"/>
<line x="47.5" y="68.4"/>
<line x="17.5" y="90"/>
<line x="29" y="55.1"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Sun" h="95" w="95" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
<constraint x="0.145" y="0.145" perimeter="0" name="NW"/>
<constraint x="0.145" y="0.855" perimeter="0" name="SW"/>
<constraint x="0.855" y="0.145" perimeter="0" name="NE"/>
<constraint x="0.855" y="0.855" perimeter="0" name="SE"/>
</connections>
<background>
<ellipse x="17.5" y="17.5" w="60" h="60"/>
</background>
<foreground>
<fillstroke/>
<path>
<move x="42.5" y="14.5"/>
<line x="47.5" y="0"/>
<line x="52.5" y="14.5"/>
<close/>
</path>
<fillstroke/>
<path>
<move x="42.5" y="80.5"/>
<line x="47.5" y="95"/>
<line x="52.5" y="80.5"/>
<close/>
</path>
<fillstroke/>
<path>
<move x="14.5" y="42.5"/>
<line x="0" y="47.5"/>
<line x="14.5" y="52.5"/>
<close/>
</path>
<fillstroke/>
<path>
<move x="80.5" y="42.5"/>
<line x="95" y="47.5"/>
<line x="80.5" y="52.5"/>
<close/>
</path>
<fillstroke/>
<path>
<move x="67.5" y="20.5"/>
<line x="81.2" y="13.9"/>
<line x="74.5" y="27.5"/>
<close/>
</path>
<fillstroke/>
<path>
<move x="67.5" y="74.5"/>
<line x="81.2" y="81.1"/>
<line x="74.5" y="67.5"/>
<close/>
</path>
<fillstroke/>
<path>
<move x="27.5" y="20.5"/>
<line x="13.8" y="13.9"/>
<line x="20.5" y="27.5"/>
<close/>
</path>
<fillstroke/>
<path>
<move x="27.5" y="74.5"/>
<line x="13.8" y="81.1"/>
<line x="20.5" y="67.5"/>
<close/>
</path>
<fillstroke/>
</foreground>
</shape>
<shape name="Tick" h="97.54" w="84.4" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.9" y="0.01" perimeter="0" name="N"/>
<constraint x="0.32" y="0.992" perimeter="0" name="S"/>
<constraint x="0" y="0.7" perimeter="0" name="W"/>
<constraint x="1" y="0.06" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="0.36" y="66.69"/>
<arc rx="12" ry="12" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="16.36" y="58.69"/>
<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="26.36" y="69.69"/>
<arc rx="200" ry="200" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="63.36" y="5.69"/>
<arc rx="18" ry="18" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="80.36" y="1.69"/>
<arc rx="4.5" ry="4.5" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="83.36" y="8.69"/>
<arc rx="230" ry="230" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="35.36" y="94.69"/>
<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="17.36" y="94.69"/>
<arc rx="100" ry="100" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="0.36" y="68.69"/>
<arc rx="2" ry="2" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="0.36" y="66.69"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Trapezoid" h="98" w="97" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
<constraint x="0.12" y="0.5" perimeter="0" name="W"/>
<constraint x="0.88" y="0.5" perimeter="0" name="E"/>
<constraint x="0.24" y="0" perimeter="0" name="NW"/>
<constraint x="0" y="1" perimeter="0" name="SW"/>
<constraint x="0.76" y="0" perimeter="0" name="NE"/>
<constraint x="1" y="1" perimeter="0" name="SE"/>
</connections>
<background>
<path>
<move x="0" y="98"/>
<line x="23.5" y="0"/>
<line x="73.5" y="0"/>
<line x="97" y="98"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="Wave" h="56.7" w="98" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0.295" perimeter="0" name="N"/>
<constraint x="0.5" y="1" perimeter="0" name="S"/>
<constraint x="0" y="0.5" perimeter="0" name="W"/>
<constraint x="1" y="0.5" perimeter="0" name="E"/>
</connections>
<background>
<path>
<move x="0" y="8.7"/>
<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="33" y="8.7"/>
<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="65" y="8.7"/>
<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="98" y="8.7"/>
<line x="98" y="48.7"/>
<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="65" y="48.7"/>
<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="1" x="33" y="48.7"/>
<arc rx="20" ry="20" x-axis-rotation="0" large-arc-flag="0" sweep-flag="0" x="0" y="48.7"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
<shape name="X" h="98" w="96" aspect="variable" strokewidth="inherit">
<connections>
<constraint x="0.5" y="0.29" perimeter="0" name="N"/>
<constraint x="0.5" y="0.71" perimeter="0" name="S"/>
<constraint x="0.33" y="0.5" perimeter="0" name="W"/>
<constraint x="0.65" y="0.5" perimeter="0" name="E"/>
<constraint x="0" y="0" perimeter="0" name="NW"/>
<constraint x="0" y="1" perimeter="0" name="SW"/>
<constraint x="1" y="0" perimeter="0" name="NE"/>
<constraint x="1" y="1" perimeter="0" name="SE"/>
</connections>
<background>
<path>
<move x="0" y="0"/>
<line x="28" y="0"/>
<line x="48" y="29"/>
<line x="68" y="0"/>
<line x="96" y="0"/>
<line x="62" y="49"/>
<line x="96" y="98"/>
<line x="68" y="98"/>
<line x="48" y="69"/>
<line x="28" y="98"/>
<line x="0" y="98"/>
<line x="32" y="49"/>
<close/>
</path>
</background>
<foreground>
<fillstroke/>
</foreground>
</shape>
</shapes>

1162
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/bpmn.xml

File diff suppressed because it is too large

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Credit_Card_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Database_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Doctor1_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Earth_globe_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Email_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Empty_Folder_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Firewall_02_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Full_Folder_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Gear_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Graph_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Laptop_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Lock_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/MacBook_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Monitor_Tower_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Piggy_Bank_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Pilot1_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Printer_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Router_Icon_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Safe_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Security1_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Server_Tower_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Shopping_Cart_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Software_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Soldier1_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Suit1_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Suit2_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Suit3_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Tech1_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

BIN
io.sc.engine.rule.server/src/main/resources/static/tools/graph-editor/stencils/clipart/Telesales1_128x128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save