From 74ad7a9d22bd4f2aba8967437660da5ff5041e6b Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期六, 25 三月 2023 15:41:52 +0800 Subject: [PATCH] A*寻路算法 --- src/main/resources/mapIn.json | 2052 +++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/zy/common/model/NavigateNode.java | 47 + src/main/java/com/zy/common/utils/NavigateUtils.java | 161 +++ src/main/resources/mapOut.json | 1 src/main/java/com/zy/common/utils/NavigateMapData.java | 66 + src/main/java/com/zy/common/utils/NavigatePositionConvert.java | 31 src/main/java/com/zy/common/utils/NavigateSolution.java | 212 ++++ 7 files changed, 2,570 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/zy/common/model/NavigateNode.java b/src/main/java/com/zy/common/model/NavigateNode.java new file mode 100644 index 0000000..d173410 --- /dev/null +++ b/src/main/java/com/zy/common/model/NavigateNode.java @@ -0,0 +1,47 @@ +package com.zy.common.model; + +import lombok.Data; + +/** + * A*瀵昏矾绠楁硶Node鑺傜偣 + */ +@Data +public class NavigateNode implements Comparable<NavigateNode>{ + + private int x;//鍧愭爣x + private int y;//鍧愭爣y + private int F;//缁煎悎鑺辫垂鐨勬鏁� + private int G;//宸茬粡鑺辫垂鐨勬鏁� + private int H;//灏嗚鑺辫垂鐨勬鏁� + private NavigateNode Father;//鐖惰妭鐐� + private Boolean isInflectionPoint;//鏄惁涓烘嫄鐐� + private String direction;//鎷愮偣鏂瑰悜 + + public NavigateNode(int x, int y) { + this.x = x; + this.y = y; + } + + //閫氳繃缁撶偣鐨勫潗鏍囧拰鐩爣缁撶偣鐨勫潗鏍囧彲浠ヨ绠楀嚭F锛� G锛� H涓変釜灞炴�� + //闇�瑕佷紶鍏ヨ繖涓妭鐐圭殑涓婁竴涓妭鐐瑰拰鏈�缁堢殑缁撶偣 + public void init_node(NavigateNode father, NavigateNode end) { + this.Father = father; + if (this.Father != null) { + //璧拌繃鐨勬鏁扮瓑浜庣埗鑺傜偣璧拌繃鐨勬鏁板姞涓� + this.G = father.G + 1; + } else { //鐖惰妭鐐逛负绌轰唬琛ㄥ畠鏄涓�涓粨鐐� + this.G = 0; + } + + //浠ヤ笅璁$畻鏂规涓虹畻娉曞師濮嬫柟妗堬紝娌℃湁鍘绘嫄鐐规柟妗堛�傚凡琚玈olution璁$畻鏃惰嚜鍔ㄨ鐩栥�� + //璁$畻閫氳繃鐜板湪鐨勭粨鐐圭殑浣嶇疆鍜屾渶缁堢粨鐐圭殑浣嶇疆璁$畻H鍊�(鏇煎搱椤挎硶锛氬潗鏍囧垎鍒彇宸�肩浉鍔�) + this.H = Math.abs(this.x - end.x) + Math.abs(this.y - end.y); + this.F = this.G + this.H; + } + + @Override + public int compareTo(NavigateNode o) { + return Integer.compare(this.F, o.F); + } + +} diff --git a/src/main/java/com/zy/common/utils/NavigateMapData.java b/src/main/java/com/zy/common/utils/NavigateMapData.java new file mode 100644 index 0000000..7ffae0e --- /dev/null +++ b/src/main/java/com/zy/common/utils/NavigateMapData.java @@ -0,0 +1,66 @@ +package com.zy.common.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; + +import java.io.*; +import java.util.ArrayList; + +/** + * A*绠楁硶鍦板浘鑾峰彇绫� + */ +public class NavigateMapData { + + public int[][] getData() { + return getData("in"); + } + + public int[][] getData(String mapType) { + try { + String mapFilename = ""; + if (mapType.equals("in")) { + mapFilename = "mapIn.json"; + }else { + mapFilename = "mapOut.json"; + } + + String fileName = this.getClass().getClassLoader().getResource(mapFilename).getPath();//鑾峰彇鏂囦欢璺緞 + File file = new File(fileName); + StringBuffer stringBuffer = new StringBuffer(); + if (file.isFile() && file.exists()) { + InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GBK"); + BufferedReader br = new BufferedReader(isr); + String lineTxt = null; + while ((lineTxt = br.readLine()) != null) { + stringBuffer.append(lineTxt); + } + br.close(); + + //瑙f瀽json鍦板浘鏁版嵁 + ArrayList arrayList = JSON.parseObject(stringBuffer.toString(), ArrayList.class); + int[][] map = new int[arrayList.size()][]; + int j = 0; + for (Object obj : arrayList) { + ArrayList list = JSON.parseObject(obj.toString(), ArrayList.class); + int[] tmp = new int[list.size()]; + int i = 0; + for (Object o : list) { + JSONObject jsonObject = JSON.parseObject(o.toString()); + //灏嗘暟鎹坊鍔犺繘浜岀淮鏁扮粍 + tmp[i++] = Integer.parseInt(jsonObject.get("value").toString()); + } + //鏁版嵁娣诲姞杩涗竴缁存暟缁� + map[j++] = tmp; + } + + return map; + } else { + System.out.println("鏂囦欢涓嶅瓨鍦�!"); + } + } catch (IOException ioException) { + ioException.printStackTrace(); + } + return null; + } + +} diff --git a/src/main/java/com/zy/common/utils/NavigatePositionConvert.java b/src/main/java/com/zy/common/utils/NavigatePositionConvert.java new file mode 100644 index 0000000..fe443b0 --- /dev/null +++ b/src/main/java/com/zy/common/utils/NavigatePositionConvert.java @@ -0,0 +1,31 @@ +package com.zy.common.utils; + +/** + * 搴撲綅缂栧彿鍜孉*绠楁硶鐨剎y杞磋浆鎹㈠伐鍏风被 + */ +public class NavigatePositionConvert { + + //鍧愭爣缂栧彿杞瑇y杞� + public static int[] positionToXY(String position) { + int col = Integer.parseInt(position.substring(0, 2)); + int row = Integer.parseInt(position.substring(2, 5)); + int[] newPosition = coverPosition(col,row); + //杩斿洖x鍜寉 +// return new int[]{row, col}; + return newPosition; + } + + //杞崲琛屽彿锛屽疄闄呬腑鏈�搴曞眰鍙兘鏄涓�琛岋紝鍦ㄦ暟缁勪腑鏈�搴曞眰鏄渶鍚庝竴琛岋紝鍥犳闇�瑕佽繘琛岃浆鎹㈡墠鍙互鍖归厤鏁版嵁 + public static int covertRow(int row) { + NavigateMapData mapData = new NavigateMapData(); + int[][] data = mapData.getData(); + //瀹為檯琛屾暟 + int realRow = data.length - 1; + return realRow - row; + } + + public static int[] coverPosition(int col,int row) { + return new int[]{row, col}; + } + +} diff --git a/src/main/java/com/zy/common/utils/NavigateSolution.java b/src/main/java/com/zy/common/utils/NavigateSolution.java new file mode 100644 index 0000000..89046a8 --- /dev/null +++ b/src/main/java/com/zy/common/utils/NavigateSolution.java @@ -0,0 +1,212 @@ +package com.zy.common.utils; + +import com.zy.common.model.NavigateNode; + +import java.util.ArrayList; +import java.util.PriorityQueue; + +/** + * A*绠楁硶瀹炵幇绫� + */ +public class NavigateSolution { + + // -1 -> 澧欏锛� 1 -> 璧风偣 2 -> 缁堢偣 3-> 姣嶈建 4->绔欑偣 + + int[][] map = {{}}; + + public NavigateSolution() { + //杞藉叆鍦板浘 + NavigateMapData mapData = new NavigateMapData(); + int[][] data = mapData.getData(); + this.map = data; + } + + public NavigateSolution(String mapType) { + //杞藉叆鍦板浘 + NavigateMapData mapData = new NavigateMapData(); + int[][] data = mapData.getData(mapType); + this.map = data; + } + + public NavigateSolution(int[][] data) { + this.map = data; + } + + // Open琛ㄧ敤浼樺厛闃熷垪 + public PriorityQueue<NavigateNode> Open = new PriorityQueue<NavigateNode>(); + //Close琛ㄧ敤鏅�氱殑鏁扮粍 + public ArrayList<NavigateNode> Close = new ArrayList<NavigateNode>(); + //Exist琛ㄧ敤鏉ュ瓨鏀惧凡缁忓嚭鐜拌繃鐨勭粨鐐广�� + public ArrayList<NavigateNode> Exist = new ArrayList<NavigateNode>(); + + public NavigateNode astarSearch(NavigateNode start, NavigateNode end) { + //鎶婄涓�涓紑濮嬬殑缁撶偣鍔犲叆鍒癘pen琛ㄤ腑 + this.Open.add(start); + //鎶婂嚭鐜拌繃鐨勭粨鐐瑰姞鍏ュ埌Exist琛ㄤ腑 + this.Exist.add(start); + //涓诲惊鐜� + while (Open.size() > 0) { + //鍙栦紭鍏堥槦鍒楅《閮ㄥ厓绱犲苟涓旀妸杩欎釜鍏冪礌浠嶰pen琛ㄤ腑鍒犻櫎 + NavigateNode current_node = Open.poll(); + //灏嗚繖涓粨鐐瑰姞鍏ュ埌Close琛ㄤ腑 + Close.add(current_node); + //瀵瑰綋鍓嶇粨鐐硅繘琛屾墿灞曪紝寰楀埌涓�涓洓鍛ㄧ粨鐐圭殑鏁扮粍 + ArrayList<NavigateNode> neighbour_node = extend_current_node(current_node); + //瀵硅繖涓粨鐐归亶鍘嗭紝鐪嬫槸鍚︽湁鐩爣缁撶偣鍑虹幇 + for (NavigateNode node : neighbour_node) { + // G + H + E (瀵瑰惎鍙戝嚱鏁板鍔犲幓鎷愮偣鏂规calcNodeExtraCost) + int gCost = calcNodeCost(current_node, node) * calcNodeExtraCost(current_node, node, end); + if (node.getX() == end.getX() && node.getY() == end.getY()) {//鎵惧埌鐩爣缁撶偣灏辫繑鍥� + //init_node鎿嶄綔鎶婅繖涓偦灞呯粨鐐圭殑鐖惰妭鐐硅缃负褰撳墠缁撶偣 + //骞朵笖璁$畻鍑篏锛� F锛� H绛夊�� + node.init_node(current_node, end); + return node; + } + + //(瀵瑰惎鍙戝嚱鏁板鍔犲幓鎷愮偣鏂规calcNodeExtraCost) + if (is_exist(node)) { + if (gCost < node.getG()) { + node.setFather(current_node); + node.setG(gCost); + node.setF(node.getG() + node.getH()); + } + }else { + //娌″嚭鐜拌繃鐨勭粨鐐瑰姞鍏ュ埌Open琛ㄤ腑骞朵笖璁剧疆鐖惰妭鐐� + //杩涜璁$畻瀵笹, F, H 绛夊�� + node.init_node(current_node, end); + node.setG(gCost); + node.setH(calcNodeCost(node, end)); + node.setF(node.getG() + node.getH()); + + Open.add(node); + Exist.add(node); + } + } + } + //濡傛灉閬嶅巻瀹屾墍鏈夊嚭鐜扮殑缁撶偣閮芥病鏈夋壘鍒版渶缁堢殑缁撶偣锛岃繑鍥瀗ull + return null; + } + + + public ArrayList<NavigateNode> extend_current_node(NavigateNode current_node) { + //鑾峰彇褰撳墠缁撶偣鐨剎, y + int x = current_node.getX(); + int y = current_node.getY(); + //濡傛灉褰撳墠缁撶偣鐨勯偦缁撶偣鍚堟硶锛屽氨鍔犲叆鍒皀eighbour_node + ArrayList<NavigateNode> neighbour_node = new ArrayList<NavigateNode>(); +// if (map[x][y] == 0 || map[x][y] == 3) { +// //鍙湁瀛愯建鍜屾瘝杞ㄦ墠鑳借繘琛屽乏鍙崇Щ鍔� +// if (is_valid(x, y + 1)) +// { +// Node node = new Node(x, y + 1); +// neighbour_node.add(node); +// } +// if (is_valid(x, y - 1)) +// { +// Node node = new Node(x, y - 1); +// neighbour_node.add(node); +// } +// } +// +// if (map[x][y] == 3) { +// //鍙湁姣嶈建鎵嶈兘杩涜涓婁笅绉诲姩 +// if (is_valid(x + 1, y)) +// { +// Node node = new Node(x + 1, y); +// neighbour_node.add(node); +// } +// if (is_valid(x - 1, y)) +// { +// Node node = new Node(x -1, y); +// neighbour_node.add(node); +// } +// } + if (map[x][y] == 3) { + //姣嶈建鎵嶈兘杩涜宸﹀彸绉诲姩 + if (is_valid(x, y + 1)) + { + NavigateNode node = new NavigateNode(x, y + 1); + neighbour_node.add(node); + } + if (is_valid(x, y - 1)) + { + NavigateNode node = new NavigateNode(x, y - 1); + neighbour_node.add(node); + } + } + + if (map[x][y] == 0 || map[x][y] == 3) { + //瀛愯建鍜屾瘝杞ㄦ墠鑳借繘琛屼笂涓嬬Щ鍔� + if (is_valid(x + 1, y)) + { + NavigateNode node = new NavigateNode(x + 1, y); + neighbour_node.add(node); + } + if (is_valid(x - 1, y)) + { + NavigateNode node = new NavigateNode(x -1, y); + neighbour_node.add(node); + } + } + + return neighbour_node; + } + + public boolean is_valid(int x, int y) { + // 濡傛灉缁撶偣鐨勪綅缃皬浜�0锛屽垯涓嶅悎娉� + if (map[x][y] < 0) return false; + for (NavigateNode node : Exist) { + //濡傛灉缁撶偣鍑虹幇杩囷紝涓嶅悎娉� + if (node.getX() == x && node.getY() == y) { + return false; + } + if (is_exist(new NavigateNode(x, y))) { + return false; + } + } + //浠ヤ笂鎯呭喌閮芥病鏈夊垯鍚堟硶 + return true; + } + + public boolean is_exist(NavigateNode node) + { + for (NavigateNode exist_node : Exist) { + if (node.getX() == exist_node.getX() && node.getY() == exist_node.getY()) { + return true; + } + } + return false; + } + + //------------------A*鍚彂鍑芥暟------------------// + + //璁$畻閫氳繃鐜板湪鐨勭粨鐐圭殑浣嶇疆鍜屾渶缁堢粨鐐圭殑浣嶇疆璁$畻H鍊�(鏇煎搱椤挎硶锛氬潗鏍囧垎鍒彇宸�肩浉鍔�) + private int calcNodeCost(NavigateNode node1, NavigateNode node2) { + return Math.abs(node2.getX() - node1.getX()) + Math.abs(node2.getY() - node1.getY()); + } + + //鍘婚櫎鎷愮偣绠楁硶锛岀粰鐩寸嚎澧炲姞浼樺厛绾� + private int calcNodeExtraCost(NavigateNode currNode, NavigateNode nextNode, NavigateNode endNode) { + // 绗竴涓偣鎴栫洿绾跨偣 + if (currNode.getFather() == null || nextNode.getX() == currNode.getFather().getX() + || nextNode.getY() == currNode.getFather().getY()) { + return 0; + } + + // 鎷愬悜缁堢偣鐨勭偣 + if (nextNode.getX() == endNode.getX() || nextNode.getY() == endNode.getY()) { + return 1; + } + + // 鏅�氭嫄鐐� + /* + 鎷愮偣鍒ゆ柇閫昏緫 + 鎷垮埌鐖惰妭鐐瑰拰涓嬩竴鑺傜偣 + 閫氳繃鍒ゆ柇鐖惰妭鐐瑰拰涓嬩竴鑺傜偣鐨剎鏁版嵁鍜寉鏁版嵁閮戒笉鐩稿悓鏃讹紝鍒欒〃鏄庡綋鍓嶅潗鏍囨槸涓�涓嫄鐐� + */ + return 2; + } + + //------------------A*鍚彂鍑芥暟-end------------------// + +} \ No newline at end of file diff --git a/src/main/java/com/zy/common/utils/NavigateUtils.java b/src/main/java/com/zy/common/utils/NavigateUtils.java new file mode 100644 index 0000000..d53077d --- /dev/null +++ b/src/main/java/com/zy/common/utils/NavigateUtils.java @@ -0,0 +1,161 @@ +package com.zy.common.utils; + +import com.zy.common.model.NavigateNode; + +import java.util.*; + +/** + * A*绠楁硶浣跨敤宸ュ叿 + */ +public class NavigateUtils { + + public static List<NavigateNode> calc(String startPoint, String endPoint, String mapType) { + //閫氳繃寮�濮嬬紪鍙峰拰缁撴潫缂栧彿鑾峰彇瀵瑰簲鐨剎y杞村潗鏍� + int[] startArr = NavigatePositionConvert.positionToXY(startPoint);//寮�濮嬭妭鐐� + int[] endArr = NavigatePositionConvert.positionToXY(endPoint);//缁撴潫鑺傜偣 + + //鍒濆鍖栧紑濮嬭妭鐐� + NavigateNode start = new NavigateNode(startArr[0], startArr[1]); + //寮�濮嬭妭鐐规棤鐖惰妭鐐� + start.setFather(null); + + NavigateNode end = new NavigateNode(endArr[0], endArr[1]); + NavigateSolution solution = new NavigateSolution(mapType); + NavigateNode res_node = solution.astarSearch(start, end); + if (res_node == null) { + System.out.println("鏈壘鍒拌矾寰�"); + return null; + } else { + ArrayList<NavigateNode> list = new ArrayList<>(); + + //娓叉煋 + NavigateNode fatherNode = null;//褰撳墠寰幆涓婁竴鑺傜偣锛岀敤浜庢嫄鐐硅绠� + while (res_node != null) { + HashMap<String, Object> data = new HashMap<>(); + res_node.setDirection(null); + res_node.setIsInflectionPoint(false); + + //瀵绘壘鎷愮偣 + HashMap<String, Object> result = searchInflectionPoint(res_node, fatherNode, res_node.getFather());//鍒嗗埆浼犲叆褰撳墠鑺傜偣銆佺埗鑺傜偣銆佷笅涓�鑺傜偣 + //鍒ゆ柇褰撳墠鑺傜偣鏄惁涓烘嫄鐐� + if (Boolean.parseBoolean(result.get("result").toString())) { + //褰撳墠涓烘嫄鐐� + res_node.setIsInflectionPoint(true); + //鎷愮偣鏂瑰悜 + res_node.setDirection(result.get("direction").toString()); + } + list.add(res_node); + + fatherNode = res_node;//鎶婂綋鍓嶈妭鐐逛繚瀛樻垚涓�涓埗鑺傜偣 + res_node = res_node.getFather();//杩唬鎿嶄綔 + } + + Collections.reverse(list); + + //灏嗘瘡涓妭鐐归噷闈㈢殑fatherNode鑷充负null(鏂逛究鍚庣画璁$畻鏃剁埗鑺傜偣杩囧瀵艰嚧鏄剧ず鐨勮妭鐐瑰お澶�) + for (NavigateNode navigateNode : list) { + //鐖惰妭鐐硅缃负null锛屼笉褰卞搷璁$畻缁撴灉锛屼笉褰卞搷鍚庣画鎿嶄綔銆� + //姝ゆ搷浣滀粎涓哄悗缁帓鏌ュ鐞嗘彁渚涜瑙夋柟渚裤�� + navigateNode.setFather(null); + } + + //璧峰鑺傜偣璁$畻鏂瑰悜 + String direction = calcDirection(list.get(0), list.get(1)); + NavigateNode startNode = list.get(0); + startNode.setDirection(direction); + //鏇存柊鑺傜偣鍒楄〃 + list.set(0, startNode); + return list; + } + } + + //鍒ゆ柇褰撳墠鑺傜偣鍒颁笅涓�涓妭鐐规槸鍚︿负鎷愮偣 + public static HashMap<String,Object> searchInflectionPoint(NavigateNode currentNode, NavigateNode fatherNode, NavigateNode nextNode) { + HashMap<String, Object> map = new HashMap<>(); + map.put("result", false);//鏄惁涓烘嫄鐐癸紝true锛氭嫄鐐癸紝false锛氱洿绾� + // 绗竴涓偣鎴栫洿绾跨偣 + if (fatherNode == null || nextNode == null || nextNode.getX() == fatherNode.getX() || nextNode.getY() == fatherNode.getY()) { + return map;//涓嶆槸鎷愮偣鐩存帴杩斿洖 + } + + //鎷愮偣鏂瑰悜 + String direction = calcDirection(currentNode, fatherNode); + + map.put("result", true);//鎷愮偣 + map.put("direction", direction);//鎷愮偣鏂瑰悜锛堜粠褰撳墠鑺傜偣瑙嗚鐪嬬殑鏂瑰悜锛� + return map; + } + + /** + * 璁$畻鏂瑰悜 + */ + public static String calcDirection(NavigateNode currentNode, NavigateNode fatherNode) { + //鎷愮偣鏂瑰悜 + String direction = ""; + // 鏅�氭嫄鐐� + //璁$畻鎷愮偣鏂瑰悜 + if (fatherNode.getX() != currentNode.getX()) { + //x杞存暟鎹湁宸紓锛屽垽鏂瓁杞存柟鍚� + //褰撳墠鑺傜偣X - 鐖惰妭鐐筙 + if (currentNode.getX() - fatherNode.getX() > 0) { + //澶т簬0锛屾柟鍚憈op + direction = "top"; + }else { + //灏忎簬0锛屾柟鍚慴ottom + direction = "bottom"; + } + } + + if (fatherNode.getY() != currentNode.getY()) { + //y杞存暟鎹湁宸紓锛屽垽鏂瓂杞存柟鍚� + //褰撳墠鑺傜偣Y - 鐖惰妭鐐筜 + if (currentNode.getY() - fatherNode.getY() > 0) { + //澶т簬0锛屾柟鍚憀eft + direction = "left"; + }else { + //灏忎簬0锛屾柟鍚憆ight + direction = "right"; + } + } + + return direction; + } + + /** + * 鑾峰彇鍒嗘璺緞锛屾瘡褰撴湁涓�涓嫄鐐瑰垯杩涜涓�娆″垎娈碉紝鏈�缁堣繑鍥炴�诲垎娈垫暟鎹� + */ + public static ArrayList<ArrayList<NavigateNode>> getSectionPath(List<NavigateNode> mapList) { + ArrayList<ArrayList<NavigateNode>> list = new ArrayList<>(); + ArrayList<NavigateNode> data = new ArrayList<>(); + for (NavigateNode mapNode : mapList) { + boolean isInflectionPoint = mapNode.getIsInflectionPoint(); + data.add(mapNode); + if (isInflectionPoint) { + //鎷愮偣 + //鍒嗗壊鏁版嵁 + list.add(data);//娣诲姞鏌愪竴娈垫暟鎹� + data = new ArrayList<>(); + } + } + + //灏嗘渶鍚庝竴娈垫暟鎹坊鍔犺繘鍏� + list.add(data); + + return list; + } + + public static void main(String[] args) { + //璁$畻璺緞 + List<NavigateNode> calc = calc("1000901", "0201801", "out"); + System.out.println(calc); + System.out.println("------------------------"); +// List<NavigateNode> calc = calc("0501401", "0201801", "out"); + //灏嗚矾寰勫垎鍓叉垚澶氭 + ArrayList<ArrayList<NavigateNode>> data = getSectionPath(calc); + for (ArrayList<NavigateNode> list : data) { + System.out.println(list); + } + + } + +} diff --git a/src/main/resources/mapIn.json b/src/main/resources/mapIn.json new file mode 100644 index 0000000..6670040 --- /dev/null +++ b/src/main/resources/mapIn.json @@ -0,0 +1,2052 @@ +[ + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -23, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -22, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -21, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -20, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -19, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -18, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -17, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -16, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -15, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -14, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": -13, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -12, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -11, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -10, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 4, + "data": "100" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -9, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": 4, + "data": "104" + }, { + "value": 4, + "data": "101" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -8, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": 4, + "data": "103" + }, { + "value": 4, + "data": "102" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -7, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 4, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -6, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": 3, + "data": "" + }, { + "value": -5, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -4, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -3, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -2, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": 0, + "data": "" + }, { + "value": -1, + "data": "" + }], + [{ + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }, { + "value": -1, + "data": "" + }] +] \ No newline at end of file diff --git a/src/main/resources/mapOut.json b/src/main/resources/mapOut.json new file mode 100644 index 0000000..c5f105c --- /dev/null +++ b/src/main/resources/mapOut.json @@ -0,0 +1 @@ +[[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-23,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-22,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-21,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-20,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-19,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-18,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-17,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-16,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-15,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-14,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":-1,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-12,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-11,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-10,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":4,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-9,"data":""}],[{"value":-1,"data":""},{"value":4,"data":""},{"value":4,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-8,"data":""}],[{"value":-1,"data":""},{"value":4,"data":""},{"value":4,"data":""},{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-7,"data":""}],[{"value":-1,"data":""},{"value":0,"data":""},{"value":4,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-6,"data":""}],[{"value":-1,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":3,"data":""},{"value":-5,"data":""}],[{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-4,"data":""}],[{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-3,"data":""}],[{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-2,"data":""}],[{"value":-1,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":0,"data":""},{"value":-1,"data":""}],[{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""},{"value":-1,"data":""}]] \ No newline at end of file -- Gitblit v1.9.1