add update from EMDN button
This commit is contained in:
@@ -6,6 +6,9 @@ import org.zeromq.ZMQ;
|
||||
import org.zeromq.ZMQException;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.zip.DataFormatException;
|
||||
import java.util.zip.Inflater;
|
||||
|
||||
@@ -13,35 +16,80 @@ public class EMDN {
|
||||
private final static Logger LOG = LoggerFactory.getLogger(EMDN.class);
|
||||
|
||||
private final String subServer;
|
||||
private final Market cache = new Market();
|
||||
private ZMQ.Context context = null;
|
||||
private ZMQ.Socket subscriber = null;
|
||||
private ScheduledExecutorService executor;
|
||||
private boolean clear;
|
||||
|
||||
public EMDN(String subServer) {
|
||||
public EMDN(String subServer, boolean clearOnShutdown) {
|
||||
this.subServer = subServer;
|
||||
clear = clearOnShutdown;
|
||||
}
|
||||
|
||||
private void init(){
|
||||
context = ZMQ.context(1);
|
||||
subscriber = context.socket(ZMQ.SUB);
|
||||
}
|
||||
|
||||
public void start(){
|
||||
if (subscriber!=null) shutdown();
|
||||
init();
|
||||
LOG.info("Connect to server {}", subServer);
|
||||
subscriber.connect(subServer);
|
||||
LOG.trace("Subscribe");
|
||||
subscriber.subscribe(new byte[0]);
|
||||
executor = Executors.newSingleThreadScheduledExecutor();
|
||||
executor.scheduleWithFixedDelay(() -> {
|
||||
try {
|
||||
byte[] receivedData = subscriber.recv(0);
|
||||
LOG.trace("Received data: {}", receivedData);
|
||||
if (receivedData == null) return;
|
||||
//receivedData = decompress(receivedData);
|
||||
String market_csv = new String(receivedData, "UTF-8");
|
||||
parseCSV(market_csv);
|
||||
} catch (ZMQException | UnsupportedEncodingException ex) {
|
||||
if (!executor.isShutdown())
|
||||
LOG.error("Error on get data from EMDN", ex);
|
||||
}
|
||||
}, 0, 1, TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
public void shutdown() {
|
||||
if (subscriber!=null){
|
||||
LOG.info("Shutdown EMDN client");
|
||||
executor.shutdown();
|
||||
subscriber.close();
|
||||
context.term();
|
||||
}
|
||||
subscriber = null;
|
||||
context = null;
|
||||
if (clear)
|
||||
cache.clear();
|
||||
}
|
||||
|
||||
|
||||
public void getData(){
|
||||
ZMQ.Context context = ZMQ.context(1);
|
||||
try (ZMQ.Socket socket = context.socket(ZMQ.SUB)) {
|
||||
socket.setReceiveTimeOut(10000);
|
||||
LOG.debug("Connect to server {}", subServer);
|
||||
socket.connect(subServer);
|
||||
|
||||
LOG.trace("Subscribe");
|
||||
socket.subscribe(new byte[0]);
|
||||
for (int i = 0; i < 5; i++) {
|
||||
try {
|
||||
byte[] receivedData = socket.recv(0);
|
||||
LOG.trace("Recived data: {}", receivedData);
|
||||
if (receivedData == null) continue;
|
||||
//receivedData = decompress(receivedData);
|
||||
String market_json = new String(receivedData, "UTF-8");
|
||||
LOG.trace("JSON: {}", market_json);
|
||||
} catch (ZMQException | UnsupportedEncodingException ex) {
|
||||
LOG.error("Error on get data from EMDN", ex);
|
||||
}
|
||||
}
|
||||
private void parseCSV(String csv) {
|
||||
LOG.debug("Parse csv: {}", csv);
|
||||
if (csv.isEmpty()) return;
|
||||
String[] flds = csv.split(",");
|
||||
// buyPrice,sellPrice,demand,demandLevel,stationStock,stationStockLevel,categoryName,itemName,stationName,timestamp
|
||||
ItemData item = new ItemData(flds[7]);
|
||||
item.setBuy(Double.valueOf(flds[0]), Long.valueOf(flds[4]));
|
||||
item.setSell(Double.valueOf(flds[1]), Long.valueOf(flds[2]));
|
||||
LOG.trace("Item: {}", item);
|
||||
String stName = flds[8].split("\\(")[0].trim();
|
||||
LOG.trace("Station: {}", stName);
|
||||
Station station = cache.getVendor(stName);
|
||||
if (station != null){
|
||||
LOG.trace("Is old, update");
|
||||
station.update(item);
|
||||
} else {
|
||||
LOG.trace("Is new, create");
|
||||
station = new Station(stName);
|
||||
station.update(item);
|
||||
cache.addVendor(station);
|
||||
}
|
||||
context.term();
|
||||
}
|
||||
|
||||
private byte[] decompress(byte[] input){
|
||||
@@ -61,4 +109,9 @@ public class EMDN {
|
||||
System.arraycopy(decompressed, 0, res, 0, decompressedLength);
|
||||
return res;
|
||||
}
|
||||
|
||||
public Station getVendor(String name){
|
||||
return cache.getVendor(name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
69
utils/src/main/java/ru/trader/emdn/ItemData.java
Normal file
69
utils/src/main/java/ru/trader/emdn/ItemData.java
Normal file
@@ -0,0 +1,69 @@
|
||||
package ru.trader.emdn;
|
||||
|
||||
public class ItemData {
|
||||
private final String name;
|
||||
private double buy;
|
||||
private double sell;
|
||||
private long demand;
|
||||
private long stock;
|
||||
|
||||
|
||||
public ItemData(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void setSell(double price, long count){
|
||||
sell = price;
|
||||
demand = count;
|
||||
}
|
||||
|
||||
public void setBuy(double price, long count){
|
||||
buy = price;
|
||||
stock = count;
|
||||
}
|
||||
|
||||
public double getBuy() {
|
||||
return buy;
|
||||
}
|
||||
|
||||
public double getSell() {
|
||||
return sell;
|
||||
}
|
||||
|
||||
public long getDemand() {
|
||||
return demand;
|
||||
}
|
||||
|
||||
public long getStock() {
|
||||
return stock;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (!(o instanceof ItemData)) return false;
|
||||
ItemData itemData = (ItemData) o;
|
||||
return !(name != null ? !name.equals(itemData.name) : itemData.name != null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return name != null ? name.hashCode() : 0;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
final StringBuilder sb = new StringBuilder("{");
|
||||
sb.append(name);
|
||||
sb.append(" buy=").append(buy);
|
||||
sb.append(" (").append(stock).append(")");
|
||||
sb.append(" sell=").append(sell);
|
||||
sb.append(" (").append(demand).append(")");
|
||||
sb.append('}');
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
19
utils/src/main/java/ru/trader/emdn/Market.java
Normal file
19
utils/src/main/java/ru/trader/emdn/Market.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package ru.trader.emdn;
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class Market {
|
||||
private final ConcurrentHashMap<String, Station> vendors = new ConcurrentHashMap<>(40, 0.9f, 1);
|
||||
|
||||
public Station getVendor(String name){
|
||||
return vendors.get(name);
|
||||
}
|
||||
|
||||
public void addVendor(Station vendor){
|
||||
vendors.put(vendor.getName(), vendor);
|
||||
}
|
||||
|
||||
public void clear(){
|
||||
vendors.clear();
|
||||
}
|
||||
}
|
||||
37
utils/src/main/java/ru/trader/emdn/Station.java
Normal file
37
utils/src/main/java/ru/trader/emdn/Station.java
Normal file
@@ -0,0 +1,37 @@
|
||||
package ru.trader.emdn;
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class Station {
|
||||
private final String name;
|
||||
private final ConcurrentHashMap<String, ItemData> items = new ConcurrentHashMap<>(15, 0.9f, 1);
|
||||
|
||||
public Station(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public ItemData getData(String name){
|
||||
return items.get(name);
|
||||
}
|
||||
|
||||
void update(ItemData item){
|
||||
items.put(item.getName(), item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (!(o instanceof Station)) return false;
|
||||
Station station = (Station) o;
|
||||
return name.equals(station.name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return name.hashCode();
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
136
utils/src/test/java/ru/trader/emdn/EMDNEmul.java
Normal file
136
utils/src/test/java/ru/trader/emdn/EMDNEmul.java
Normal file
@@ -0,0 +1,136 @@
|
||||
package ru.trader.emdn;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.zeromq.ZMQ;
|
||||
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class EMDNEmul {
|
||||
private final static Logger LOG = LoggerFactory.getLogger(EMDNEmul.class);
|
||||
|
||||
private ZMQ.Context context = null;
|
||||
private ZMQ.Socket publisher = null;
|
||||
private ScheduledExecutorService executor;
|
||||
private final String bindAddress;
|
||||
|
||||
private final static byte[][] messages = new byte[][]{
|
||||
{49, 56, 52, 44, 49, 54, 54, 44, 48, 44, 48, 44, 49, 55, 49, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 102, 114, 117, 105, 116, 97, 110, 100, 118, 101, 103, 101, 116, 97, 98, 108, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 55, 55, 49, 48, 48, 48},
|
||||
{56, 55, 44, 55, 52, 44, 48, 44, 48, 44, 55, 51, 51, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 103, 114, 97, 105, 110, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 55, 57, 49, 48, 48, 48},
|
||||
{49, 49, 49, 52, 44, 49, 48, 54, 55, 44, 48, 44, 48, 44, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 97, 110, 105, 109, 97, 108, 109, 101, 97, 116, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 56, 48, 51, 48, 48, 48},
|
||||
{48, 44, 54, 52, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 102, 111, 111, 100, 115, 44, 102, 105, 115, 104, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 56, 49, 53, 48, 48, 48},
|
||||
{49, 50, 57, 55, 44, 49, 50, 52, 51, 44, 48, 44, 48, 44, 49, 49, 44, 49, 44, 102, 111, 111, 100, 115, 44, 116, 101, 97, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 56, 51, 52, 48, 48, 48},
|
||||
{49, 49, 49, 52, 44, 49, 48, 54, 55, 44, 48, 44, 48, 44, 54, 44, 49, 44, 102, 111, 111, 100, 115, 44, 99, 111, 102, 102, 101, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 56, 52, 54, 48, 48, 48},
|
||||
{53, 56, 44, 52, 54, 44, 48, 44, 48, 44, 49, 56, 56, 48, 51, 44, 49, 44, 116, 101, 120, 116, 105, 108, 101, 115, 44, 108, 101, 97, 116, 104, 101, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 56, 53, 55, 48, 48, 48},
|
||||
{50, 53, 54, 44, 50, 51, 55, 44, 48, 44, 48, 44, 49, 48, 49, 56, 57, 44, 49, 44, 116, 101, 120, 116, 105, 108, 101, 115, 44, 110, 97, 116, 117, 114, 97, 108, 102, 97, 98, 114, 105, 99, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 56, 54, 57, 48, 48, 48},
|
||||
{48, 44, 53, 54, 44, 54, 55, 48, 56, 51, 44, 49, 44, 48, 44, 48, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 104, 121, 100, 114, 111, 103, 101, 110, 102, 117, 101, 108, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 56, 56, 57, 48, 48, 48},
|
||||
{55, 51, 44, 54, 50, 44, 48, 44, 48, 44, 49, 55, 49, 55, 44, 49, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 109, 105, 110, 101, 114, 97, 108, 111, 105, 108, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 48, 48, 48, 48, 48},
|
||||
{48, 44, 49, 57, 57, 44, 53, 51, 56, 48, 56, 44, 50, 44, 48, 44, 48, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 112, 101, 115, 116, 105, 99, 105, 100, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 49, 50, 48, 48, 48},
|
||||
{48, 44, 57, 52, 55, 44, 49, 52, 51, 51, 44, 49, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 97, 103, 114, 105, 99, 117, 108, 116, 117, 114, 97, 108, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 50, 51, 48, 48, 48},
|
||||
{48, 44, 55, 49, 49, 53, 44, 49, 48, 50, 55, 55, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 112, 101, 114, 102, 111, 114, 109, 97, 110, 99, 101, 101, 110, 104, 97, 110, 99, 101, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 51, 52, 48, 48, 48},
|
||||
{48, 44, 51, 48, 54, 44, 49, 55, 51, 56, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 98, 97, 115, 105, 99, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 52, 54, 48, 48, 48},
|
||||
{48, 44, 52, 54, 55, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 116, 111, 98, 97, 99, 99, 111, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 53, 55, 48, 48, 48},
|
||||
{48, 44, 49, 52, 51, 44, 49, 56, 56, 48, 52, 44, 50, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 98, 101, 101, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 54, 57, 48, 48, 48},
|
||||
{48, 44, 50, 53, 54, 44, 48, 44, 48, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 119, 105, 110, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 56, 49, 48, 48, 48},
|
||||
{48, 44, 54, 53, 57, 44, 49, 57, 56, 54, 44, 50, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 108, 105, 113, 117, 111, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 48, 49, 48, 48, 48},
|
||||
{48, 44, 50, 51, 49, 56, 44, 49, 54, 52, 55, 50, 44, 50, 44, 48, 44, 48, 44, 109, 97, 99, 104, 105, 110, 101, 114, 121, 44, 99, 114, 111, 112, 104, 97, 114, 118, 101, 115, 116, 101, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 49, 52, 48, 48, 48},
|
||||
{48, 44, 50, 56, 57, 44, 49, 50, 50, 55, 55, 44, 50, 44, 48, 44, 48, 44, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 97, 110, 105, 109, 97, 108, 109, 111, 110, 105, 116, 111, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 50, 54, 48, 48, 48},
|
||||
{48, 44, 52, 54, 55, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 116, 101, 114, 114, 97, 105, 110, 101, 110, 114, 105, 99, 104, 109, 101, 110, 116, 115, 121, 115, 116, 101, 109, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 51, 55, 48, 48, 48},
|
||||
{48, 44, 52, 52, 57, 49, 44, 50, 56, 49, 50, 44, 50, 44, 48, 44, 48, 44, 119, 101, 97, 112, 111, 110, 115, 44, 112, 101, 114, 115, 111, 110, 97, 108, 119, 101, 97, 112, 111, 110, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 52, 57, 48, 48, 48},
|
||||
{48, 44, 53, 53, 48, 44, 54, 50, 49, 54, 44, 50, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 100, 111, 109, 101, 115, 116, 105, 99, 97, 112, 112, 108, 105, 97, 110, 99, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 54, 48, 48, 48, 48},
|
||||
{48, 44, 55, 48, 56, 52, 44, 53, 50, 55, 51, 44, 50, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 99, 111, 110, 115, 117, 109, 101, 114, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 55, 50, 48, 48, 48},
|
||||
{48, 44, 50, 53, 50, 44, 48, 44, 49, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 99, 108, 111, 116, 104, 105, 110, 103, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 56, 53, 48, 48, 48},
|
||||
{48, 44, 54, 56, 44, 51, 48, 49, 54, 49, 44, 50, 44, 48, 44, 48, 44, 119, 97, 115, 116, 101, 44, 98, 105, 111, 119, 97, 115, 116, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 57, 54, 48, 48, 48},
|
||||
{48, 44, 55, 49, 49, 53, 44, 55, 50, 55, 48, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 112, 114, 111, 103, 101, 110, 105, 116, 111, 114, 99, 101, 108, 108, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 49, 48, 56, 48, 48, 48},
|
||||
{49, 56, 52, 44, 49, 54, 54, 44, 48, 44, 48, 44, 49, 55, 49, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 102, 114, 117, 105, 116, 97, 110, 100, 118, 101, 103, 101, 116, 97, 98, 108, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 54, 52, 57, 48, 48, 48},
|
||||
{56, 55, 44, 55, 52, 44, 48, 44, 48, 44, 55, 51, 51, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 103, 114, 97, 105, 110, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 54, 54, 54, 48, 48, 48},
|
||||
{49, 49, 49, 52, 44, 49, 48, 54, 55, 44, 48, 44, 48, 44, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 97, 110, 105, 109, 97, 108, 109, 101, 97, 116, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 54, 55, 52, 48, 48, 48},
|
||||
{48, 44, 54, 52, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 102, 111, 111, 100, 115, 44, 102, 105, 115, 104, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 54, 56, 48, 48, 48, 48},
|
||||
{49, 50, 57, 55, 44, 49, 50, 52, 51, 44, 48, 44, 48, 44, 49, 49, 44, 49, 44, 102, 111, 111, 100, 115, 44, 116, 101, 97, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 54, 57, 54, 48, 48, 48},
|
||||
{49, 49, 49, 52, 44, 49, 48, 54, 55, 44, 48, 44, 48, 44, 54, 44, 49, 44, 102, 111, 111, 100, 115, 44, 99, 111, 102, 102, 101, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 48, 51, 48, 48, 48},
|
||||
{53, 56, 44, 52, 54, 44, 48, 44, 48, 44, 49, 56, 56, 48, 51, 44, 49, 44, 116, 101, 120, 116, 105, 108, 101, 115, 44, 108, 101, 97, 116, 104, 101, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 49, 48, 48, 48, 48},
|
||||
{50, 53, 54, 44, 50, 51, 55, 44, 48, 44, 48, 44, 49, 48, 49, 56, 57, 44, 49, 44, 116, 101, 120, 116, 105, 108, 101, 115, 44, 110, 97, 116, 117, 114, 97, 108, 102, 97, 98, 114, 105, 99, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 49, 54, 48, 48, 48},
|
||||
{48, 44, 53, 54, 44, 54, 55, 48, 56, 51, 44, 49, 44, 48, 44, 48, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 104, 121, 100, 114, 111, 103, 101, 110, 102, 117, 101, 108, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 51, 49, 48, 48, 48},
|
||||
{55, 51, 44, 54, 50, 44, 48, 44, 48, 44, 49, 55, 49, 55, 44, 49, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 109, 105, 110, 101, 114, 97, 108, 111, 105, 108, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 51, 56, 48, 48, 48},
|
||||
{48, 44, 49, 57, 57, 44, 53, 51, 56, 48, 56, 44, 50, 44, 48, 44, 48, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 112, 101, 115, 116, 105, 99, 105, 100, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 52, 53, 48, 48, 48},
|
||||
{48, 44, 57, 52, 55, 44, 49, 52, 51, 51, 44, 49, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 97, 103, 114, 105, 99, 117, 108, 116, 117, 114, 97, 108, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 53, 49, 48, 48, 48},
|
||||
{48, 44, 55, 49, 49, 53, 44, 49, 48, 50, 55, 55, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 112, 101, 114, 102, 111, 114, 109, 97, 110, 99, 101, 101, 110, 104, 97, 110, 99, 101, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 53, 56, 48, 48, 48},
|
||||
{48, 44, 51, 48, 54, 44, 49, 55, 51, 56, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 98, 97, 115, 105, 99, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 54, 52, 48, 48, 48},
|
||||
{48, 44, 52, 54, 55, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 116, 111, 98, 97, 99, 99, 111, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 55, 48, 48, 48, 48},
|
||||
{48, 44, 49, 52, 51, 44, 49, 56, 56, 48, 52, 44, 50, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 98, 101, 101, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 55, 54, 48, 48, 48},
|
||||
{48, 44, 50, 53, 54, 44, 48, 44, 48, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 119, 105, 110, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 56, 50, 48, 48, 48},
|
||||
{48, 44, 54, 53, 57, 44, 49, 57, 56, 54, 44, 50, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 108, 105, 113, 117, 111, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 57, 54, 48, 48, 48},
|
||||
{48, 44, 50, 51, 49, 56, 44, 49, 54, 52, 55, 50, 44, 50, 44, 48, 44, 48, 44, 109, 97, 99, 104, 105, 110, 101, 114, 121, 44, 99, 114, 111, 112, 104, 97, 114, 118, 101, 115, 116, 101, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 48, 50, 48, 48, 48},
|
||||
{48, 44, 50, 56, 57, 44, 49, 50, 50, 55, 55, 44, 50, 44, 48, 44, 48, 44, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 97, 110, 105, 109, 97, 108, 109, 111, 110, 105, 116, 111, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 48, 57, 48, 48, 48},
|
||||
{48, 44, 52, 54, 55, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 116, 101, 114, 114, 97, 105, 110, 101, 110, 114, 105, 99, 104, 109, 101, 110, 116, 115, 121, 115, 116, 101, 109, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 49, 54, 48, 48, 48},
|
||||
{48, 44, 52, 52, 57, 49, 44, 50, 56, 49, 50, 44, 50, 44, 48, 44, 48, 44, 119, 101, 97, 112, 111, 110, 115, 44, 112, 101, 114, 115, 111, 110, 97, 108, 119, 101, 97, 112, 111, 110, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 50, 51, 48, 48, 48},
|
||||
{48, 44, 53, 53, 48, 44, 54, 50, 49, 54, 44, 50, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 100, 111, 109, 101, 115, 116, 105, 99, 97, 112, 112, 108, 105, 97, 110, 99, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 51, 48, 48, 48, 48},
|
||||
{48, 44, 55, 48, 56, 52, 44, 53, 50, 55, 51, 44, 50, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 99, 111, 110, 115, 117, 109, 101, 114, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 51, 54, 48, 48, 48},
|
||||
{48, 44, 50, 53, 50, 44, 48, 44, 49, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 99, 108, 111, 116, 104, 105, 110, 103, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 52, 50, 48, 48, 48},
|
||||
{48, 44, 54, 56, 44, 51, 48, 49, 54, 49, 44, 50, 44, 48, 44, 48, 44, 119, 97, 115, 116, 101, 44, 98, 105, 111, 119, 97, 115, 116, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 52, 56, 48, 48, 48},
|
||||
{48, 44, 55, 49, 49, 53, 44, 55, 50, 55, 48, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 112, 114, 111, 103, 101, 110, 105, 116, 111, 114, 99, 101, 108, 108, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 53, 52, 48, 48, 48},
|
||||
{49, 56, 52, 44, 49, 54, 54, 44, 48, 44, 48, 44, 49, 55, 49, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 102, 114, 117, 105, 116, 97, 110, 100, 118, 101, 103, 101, 116, 97, 98, 108, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 49, 55, 52, 48, 48, 48},
|
||||
{56, 55, 44, 55, 52, 44, 48, 44, 48, 44, 55, 51, 51, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 103, 114, 97, 105, 110, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 49, 57, 52, 48, 48, 48},
|
||||
{49, 49, 49, 52, 44, 49, 48, 54, 55, 44, 48, 44, 48, 44, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 97, 110, 105, 109, 97, 108, 109, 101, 97, 116, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 50, 48, 54, 48, 48, 48},
|
||||
{48, 44, 54, 52, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 102, 111, 111, 100, 115, 44, 102, 105, 115, 104, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 50, 49, 56, 48, 48, 48},
|
||||
{49, 50, 57, 55, 44, 49, 50, 52, 51, 44, 48, 44, 48, 44, 49, 49, 44, 49, 44, 102, 111, 111, 100, 115, 44, 116, 101, 97, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 50, 51, 57, 48, 48, 48},
|
||||
{49, 49, 49, 52, 44, 49, 48, 54, 55, 44, 48, 44, 48, 44, 54, 44, 49, 44, 102, 111, 111, 100, 115, 44, 99, 111, 102, 102, 101, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 50, 53, 50, 48, 48, 48},
|
||||
{53, 56, 44, 52, 54, 44, 48, 44, 48, 44, 49, 56, 56, 48, 51, 44, 49, 44, 116, 101, 120, 116, 105, 108, 101, 115, 44, 108, 101, 97, 116, 104, 101, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 50, 54, 52, 48, 48, 48},
|
||||
{50, 53, 54, 44, 50, 51, 55, 44, 48, 44, 48, 44, 49, 48, 49, 56, 57, 44, 49, 44, 116, 101, 120, 116, 105, 108, 101, 115, 44, 110, 97, 116, 117, 114, 97, 108, 102, 97, 98, 114, 105, 99, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 50, 55, 54, 48, 48, 48},
|
||||
{48, 44, 53, 54, 44, 54, 55, 48, 56, 51, 44, 49, 44, 48, 44, 48, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 104, 121, 100, 114, 111, 103, 101, 110, 102, 117, 101, 108, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 50, 57, 54, 48, 48, 48},
|
||||
{55, 51, 44, 54, 50, 44, 48, 44, 48, 44, 49, 55, 49, 55, 44, 49, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 109, 105, 110, 101, 114, 97, 108, 111, 105, 108, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 48, 56, 48, 48, 48},
|
||||
{48, 44, 49, 57, 57, 44, 53, 51, 56, 48, 56, 44, 50, 44, 48, 44, 48, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 112, 101, 115, 116, 105, 99, 105, 100, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 50, 48, 48, 48, 48},
|
||||
{48, 44, 57, 52, 55, 44, 49, 52, 51, 51, 44, 49, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 97, 103, 114, 105, 99, 117, 108, 116, 117, 114, 97, 108, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 51, 49, 48, 48, 48},
|
||||
{48, 44, 55, 49, 49, 53, 44, 49, 48, 50, 55, 55, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 112, 101, 114, 102, 111, 114, 109, 97, 110, 99, 101, 101, 110, 104, 97, 110, 99, 101, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 52, 51, 48, 48, 48},
|
||||
{48, 44, 51, 48, 54, 44, 49, 55, 51, 56, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 98, 97, 115, 105, 99, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 53, 52, 48, 48, 48},
|
||||
{48, 44, 52, 54, 55, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 116, 111, 98, 97, 99, 99, 111, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 54, 54, 48, 48, 48},
|
||||
{48, 44, 49, 52, 51, 44, 49, 56, 56, 48, 52, 44, 50, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 98, 101, 101, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 55, 55, 48, 48, 48},
|
||||
{48, 44, 50, 53, 54, 44, 48, 44, 48, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 119, 105, 110, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 56, 57, 48, 48, 48},
|
||||
{48, 44, 54, 53, 57, 44, 49, 57, 56, 54, 44, 50, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 108, 105, 113, 117, 111, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 49, 49, 48, 48, 48},
|
||||
{48, 44, 50, 51, 49, 56, 44, 49, 54, 52, 55, 50, 44, 50, 44, 48, 44, 48, 44, 109, 97, 99, 104, 105, 110, 101, 114, 121, 44, 99, 114, 111, 112, 104, 97, 114, 118, 101, 115, 116, 101, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 50, 53, 48, 48, 48},
|
||||
{48, 44, 50, 56, 57, 44, 49, 50, 50, 55, 55, 44, 50, 44, 48, 44, 48, 44, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 97, 110, 105, 109, 97, 108, 109, 111, 110, 105, 116, 111, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 51, 55, 48, 48, 48},
|
||||
{48, 44, 52, 54, 55, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 116, 101, 114, 114, 97, 105, 110, 101, 110, 114, 105, 99, 104, 109, 101, 110, 116, 115, 121, 115, 116, 101, 109, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 52, 57, 48, 48, 48},
|
||||
{48, 44, 52, 52, 57, 49, 44, 50, 56, 49, 50, 44, 50, 44, 48, 44, 48, 44, 119, 101, 97, 112, 111, 110, 115, 44, 112, 101, 114, 115, 111, 110, 97, 108, 119, 101, 97, 112, 111, 110, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 54, 48, 48, 48, 48},
|
||||
{48, 44, 53, 53, 48, 44, 54, 50, 49, 54, 44, 50, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 100, 111, 109, 101, 115, 116, 105, 99, 97, 112, 112, 108, 105, 97, 110, 99, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 55, 50, 48, 48, 48},
|
||||
{48, 44, 55, 48, 56, 52, 44, 53, 50, 55, 51, 44, 50, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 99, 111, 110, 115, 117, 109, 101, 114, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 56, 50, 48, 48, 48},
|
||||
{48, 44, 50, 53, 50, 44, 48, 44, 49, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 99, 108, 111, 116, 104, 105, 110, 103, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 57, 52, 48, 48, 48},
|
||||
{48, 44, 54, 56, 44, 51, 48, 49, 54, 49, 44, 50, 44, 48, 44, 48, 44, 119, 97, 115, 116, 101, 44, 98, 105, 111, 119, 97, 115, 116, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 53, 48, 53, 48, 48, 48},
|
||||
{48, 44, 55, 49, 49, 53, 44, 55, 50, 55, 48, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 112, 114, 111, 103, 101, 110, 105, 116, 111, 114, 99, 101, 108, 108, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 53, 49, 54, 48, 48, 48}
|
||||
};
|
||||
|
||||
public EMDNEmul(String bindAddress) {
|
||||
this.bindAddress = bindAddress;
|
||||
}
|
||||
|
||||
public void start(){
|
||||
if (publisher != null) shutdown();
|
||||
context = ZMQ.context(1);
|
||||
publisher = context.socket(ZMQ.PUB);
|
||||
|
||||
LOG.debug("Start EMDN emul server, address {}", bindAddress);
|
||||
publisher.bind(bindAddress);
|
||||
|
||||
executor = Executors.newSingleThreadScheduledExecutor();
|
||||
executor.scheduleAtFixedRate(()->{
|
||||
for (byte[] message : messages) {
|
||||
LOG.trace("Publish message: {}", message);
|
||||
publisher.send(message);
|
||||
}
|
||||
LOG.trace("Sleep... ");
|
||||
}, 1, 5, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
public void shutdown(){
|
||||
if (publisher!=null){
|
||||
LOG.debug("Shutdown EMDN emul server");
|
||||
executor.shutdown();
|
||||
publisher.close();
|
||||
context.term();
|
||||
}
|
||||
publisher = null;
|
||||
context = null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,98 +1,39 @@
|
||||
package ru.trader.emdn;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
public class EMDNTest extends Assert {
|
||||
private final static EMDN markettool = new EMDN("tcp://firehose.elite-market-data.net:9050");
|
||||
/* Example dates
|
||||
[49, 56, 52, 44, 49, 54, 54, 44, 48, 44, 48, 44, 49, 55, 49, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 102, 114, 117, 105, 116, 97, 110, 100, 118, 101, 103, 101, 116, 97, 98, 108, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 55, 55, 49, 48, 48, 48]
|
||||
[56, 55, 44, 55, 52, 44, 48, 44, 48, 44, 55, 51, 51, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 103, 114, 97, 105, 110, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 55, 57, 49, 48, 48, 48]
|
||||
[49, 49, 49, 52, 44, 49, 48, 54, 55, 44, 48, 44, 48, 44, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 97, 110, 105, 109, 97, 108, 109, 101, 97, 116, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 56, 48, 51, 48, 48, 48]
|
||||
[48, 44, 54, 52, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 102, 111, 111, 100, 115, 44, 102, 105, 115, 104, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 56, 49, 53, 48, 48, 48]
|
||||
[49, 50, 57, 55, 44, 49, 50, 52, 51, 44, 48, 44, 48, 44, 49, 49, 44, 49, 44, 102, 111, 111, 100, 115, 44, 116, 101, 97, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 56, 51, 52, 48, 48, 48]
|
||||
[49, 49, 49, 52, 44, 49, 48, 54, 55, 44, 48, 44, 48, 44, 54, 44, 49, 44, 102, 111, 111, 100, 115, 44, 99, 111, 102, 102, 101, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 56, 52, 54, 48, 48, 48]
|
||||
[53, 56, 44, 52, 54, 44, 48, 44, 48, 44, 49, 56, 56, 48, 51, 44, 49, 44, 116, 101, 120, 116, 105, 108, 101, 115, 44, 108, 101, 97, 116, 104, 101, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 56, 53, 55, 48, 48, 48]
|
||||
[50, 53, 54, 44, 50, 51, 55, 44, 48, 44, 48, 44, 49, 48, 49, 56, 57, 44, 49, 44, 116, 101, 120, 116, 105, 108, 101, 115, 44, 110, 97, 116, 117, 114, 97, 108, 102, 97, 98, 114, 105, 99, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 56, 54, 57, 48, 48, 48]
|
||||
[48, 44, 53, 54, 44, 54, 55, 48, 56, 51, 44, 49, 44, 48, 44, 48, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 104, 121, 100, 114, 111, 103, 101, 110, 102, 117, 101, 108, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 56, 56, 57, 48, 48, 48]
|
||||
[55, 51, 44, 54, 50, 44, 48, 44, 48, 44, 49, 55, 49, 55, 44, 49, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 109, 105, 110, 101, 114, 97, 108, 111, 105, 108, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 48, 48, 48, 48, 48]
|
||||
[48, 44, 49, 57, 57, 44, 53, 51, 56, 48, 56, 44, 50, 44, 48, 44, 48, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 112, 101, 115, 116, 105, 99, 105, 100, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 49, 50, 48, 48, 48]
|
||||
[48, 44, 57, 52, 55, 44, 49, 52, 51, 51, 44, 49, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 97, 103, 114, 105, 99, 117, 108, 116, 117, 114, 97, 108, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 50, 51, 48, 48, 48]
|
||||
[48, 44, 55, 49, 49, 53, 44, 49, 48, 50, 55, 55, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 112, 101, 114, 102, 111, 114, 109, 97, 110, 99, 101, 101, 110, 104, 97, 110, 99, 101, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 51, 52, 48, 48, 48]
|
||||
[48, 44, 51, 48, 54, 44, 49, 55, 51, 56, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 98, 97, 115, 105, 99, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 52, 54, 48, 48, 48]
|
||||
[48, 44, 52, 54, 55, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 116, 111, 98, 97, 99, 99, 111, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 53, 55, 48, 48, 48]
|
||||
[48, 44, 49, 52, 51, 44, 49, 56, 56, 48, 52, 44, 50, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 98, 101, 101, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 54, 57, 48, 48, 48]
|
||||
[48, 44, 50, 53, 54, 44, 48, 44, 48, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 119, 105, 110, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 52, 46, 57, 56, 49, 48, 48, 48]
|
||||
[48, 44, 54, 53, 57, 44, 49, 57, 56, 54, 44, 50, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 108, 105, 113, 117, 111, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 48, 49, 48, 48, 48]
|
||||
[48, 44, 50, 51, 49, 56, 44, 49, 54, 52, 55, 50, 44, 50, 44, 48, 44, 48, 44, 109, 97, 99, 104, 105, 110, 101, 114, 121, 44, 99, 114, 111, 112, 104, 97, 114, 118, 101, 115, 116, 101, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 49, 52, 48, 48, 48]
|
||||
[48, 44, 50, 56, 57, 44, 49, 50, 50, 55, 55, 44, 50, 44, 48, 44, 48, 44, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 97, 110, 105, 109, 97, 108, 109, 111, 110, 105, 116, 111, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 50, 54, 48, 48, 48]
|
||||
[48, 44, 52, 54, 55, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 116, 101, 114, 114, 97, 105, 110, 101, 110, 114, 105, 99, 104, 109, 101, 110, 116, 115, 121, 115, 116, 101, 109, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 51, 55, 48, 48, 48]
|
||||
[48, 44, 52, 52, 57, 49, 44, 50, 56, 49, 50, 44, 50, 44, 48, 44, 48, 44, 119, 101, 97, 112, 111, 110, 115, 44, 112, 101, 114, 115, 111, 110, 97, 108, 119, 101, 97, 112, 111, 110, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 52, 57, 48, 48, 48]
|
||||
[48, 44, 53, 53, 48, 44, 54, 50, 49, 54, 44, 50, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 100, 111, 109, 101, 115, 116, 105, 99, 97, 112, 112, 108, 105, 97, 110, 99, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 54, 48, 48, 48, 48]
|
||||
[48, 44, 55, 48, 56, 52, 44, 53, 50, 55, 51, 44, 50, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 99, 111, 110, 115, 117, 109, 101, 114, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 55, 50, 48, 48, 48]
|
||||
[48, 44, 50, 53, 50, 44, 48, 44, 49, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 99, 108, 111, 116, 104, 105, 110, 103, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 56, 53, 48, 48, 48]
|
||||
[48, 44, 54, 56, 44, 51, 48, 49, 54, 49, 44, 50, 44, 48, 44, 48, 44, 119, 97, 115, 116, 101, 44, 98, 105, 111, 119, 97, 115, 116, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 48, 57, 54, 48, 48, 48]
|
||||
[48, 44, 55, 49, 49, 53, 44, 55, 50, 55, 48, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 112, 114, 111, 103, 101, 110, 105, 116, 111, 114, 99, 101, 108, 108, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 53, 53, 46, 49, 48, 56, 48, 48, 48]
|
||||
[49, 56, 52, 44, 49, 54, 54, 44, 48, 44, 48, 44, 49, 55, 49, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 102, 114, 117, 105, 116, 97, 110, 100, 118, 101, 103, 101, 116, 97, 98, 108, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 54, 52, 57, 48, 48, 48]
|
||||
[56, 55, 44, 55, 52, 44, 48, 44, 48, 44, 55, 51, 51, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 103, 114, 97, 105, 110, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 54, 54, 54, 48, 48, 48]
|
||||
[49, 49, 49, 52, 44, 49, 48, 54, 55, 44, 48, 44, 48, 44, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 97, 110, 105, 109, 97, 108, 109, 101, 97, 116, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 54, 55, 52, 48, 48, 48]
|
||||
[48, 44, 54, 52, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 102, 111, 111, 100, 115, 44, 102, 105, 115, 104, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 54, 56, 48, 48, 48, 48]
|
||||
[49, 50, 57, 55, 44, 49, 50, 52, 51, 44, 48, 44, 48, 44, 49, 49, 44, 49, 44, 102, 111, 111, 100, 115, 44, 116, 101, 97, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 54, 57, 54, 48, 48, 48]
|
||||
[49, 49, 49, 52, 44, 49, 48, 54, 55, 44, 48, 44, 48, 44, 54, 44, 49, 44, 102, 111, 111, 100, 115, 44, 99, 111, 102, 102, 101, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 48, 51, 48, 48, 48]
|
||||
[53, 56, 44, 52, 54, 44, 48, 44, 48, 44, 49, 56, 56, 48, 51, 44, 49, 44, 116, 101, 120, 116, 105, 108, 101, 115, 44, 108, 101, 97, 116, 104, 101, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 49, 48, 48, 48, 48]
|
||||
[50, 53, 54, 44, 50, 51, 55, 44, 48, 44, 48, 44, 49, 48, 49, 56, 57, 44, 49, 44, 116, 101, 120, 116, 105, 108, 101, 115, 44, 110, 97, 116, 117, 114, 97, 108, 102, 97, 98, 114, 105, 99, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 49, 54, 48, 48, 48]
|
||||
[48, 44, 53, 54, 44, 54, 55, 48, 56, 51, 44, 49, 44, 48, 44, 48, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 104, 121, 100, 114, 111, 103, 101, 110, 102, 117, 101, 108, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 51, 49, 48, 48, 48]
|
||||
[55, 51, 44, 54, 50, 44, 48, 44, 48, 44, 49, 55, 49, 55, 44, 49, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 109, 105, 110, 101, 114, 97, 108, 111, 105, 108, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 51, 56, 48, 48, 48]
|
||||
[48, 44, 49, 57, 57, 44, 53, 51, 56, 48, 56, 44, 50, 44, 48, 44, 48, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 112, 101, 115, 116, 105, 99, 105, 100, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 52, 53, 48, 48, 48]
|
||||
[48, 44, 57, 52, 55, 44, 49, 52, 51, 51, 44, 49, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 97, 103, 114, 105, 99, 117, 108, 116, 117, 114, 97, 108, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 53, 49, 48, 48, 48]
|
||||
[48, 44, 55, 49, 49, 53, 44, 49, 48, 50, 55, 55, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 112, 101, 114, 102, 111, 114, 109, 97, 110, 99, 101, 101, 110, 104, 97, 110, 99, 101, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 53, 56, 48, 48, 48]
|
||||
[48, 44, 51, 48, 54, 44, 49, 55, 51, 56, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 98, 97, 115, 105, 99, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 54, 52, 48, 48, 48]
|
||||
[48, 44, 52, 54, 55, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 116, 111, 98, 97, 99, 99, 111, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 55, 48, 48, 48, 48]
|
||||
[48, 44, 49, 52, 51, 44, 49, 56, 56, 48, 52, 44, 50, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 98, 101, 101, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 55, 54, 48, 48, 48]
|
||||
[48, 44, 50, 53, 54, 44, 48, 44, 48, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 119, 105, 110, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 56, 50, 48, 48, 48]
|
||||
[48, 44, 54, 53, 57, 44, 49, 57, 56, 54, 44, 50, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 108, 105, 113, 117, 111, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 55, 57, 54, 48, 48, 48]
|
||||
[48, 44, 50, 51, 49, 56, 44, 49, 54, 52, 55, 50, 44, 50, 44, 48, 44, 48, 44, 109, 97, 99, 104, 105, 110, 101, 114, 121, 44, 99, 114, 111, 112, 104, 97, 114, 118, 101, 115, 116, 101, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 48, 50, 48, 48, 48]
|
||||
[48, 44, 50, 56, 57, 44, 49, 50, 50, 55, 55, 44, 50, 44, 48, 44, 48, 44, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 97, 110, 105, 109, 97, 108, 109, 111, 110, 105, 116, 111, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 48, 57, 48, 48, 48]
|
||||
[48, 44, 52, 54, 55, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 116, 101, 114, 114, 97, 105, 110, 101, 110, 114, 105, 99, 104, 109, 101, 110, 116, 115, 121, 115, 116, 101, 109, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 49, 54, 48, 48, 48]
|
||||
[48, 44, 52, 52, 57, 49, 44, 50, 56, 49, 50, 44, 50, 44, 48, 44, 48, 44, 119, 101, 97, 112, 111, 110, 115, 44, 112, 101, 114, 115, 111, 110, 97, 108, 119, 101, 97, 112, 111, 110, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 50, 51, 48, 48, 48]
|
||||
[48, 44, 53, 53, 48, 44, 54, 50, 49, 54, 44, 50, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 100, 111, 109, 101, 115, 116, 105, 99, 97, 112, 112, 108, 105, 97, 110, 99, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 51, 48, 48, 48, 48]
|
||||
[48, 44, 55, 48, 56, 52, 44, 53, 50, 55, 51, 44, 50, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 99, 111, 110, 115, 117, 109, 101, 114, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 51, 54, 48, 48, 48]
|
||||
[48, 44, 50, 53, 50, 44, 48, 44, 49, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 99, 108, 111, 116, 104, 105, 110, 103, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 52, 50, 48, 48, 48]
|
||||
[48, 44, 54, 56, 44, 51, 48, 49, 54, 49, 44, 50, 44, 48, 44, 48, 44, 119, 97, 115, 116, 101, 44, 98, 105, 111, 119, 97, 115, 116, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 52, 56, 48, 48, 48]
|
||||
[48, 44, 55, 49, 49, 53, 44, 55, 50, 55, 48, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 112, 114, 111, 103, 101, 110, 105, 116, 111, 114, 99, 101, 108, 108, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 55, 58, 52, 55, 46, 56, 53, 52, 48, 48, 48]
|
||||
[49, 56, 52, 44, 49, 54, 54, 44, 48, 44, 48, 44, 49, 55, 49, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 102, 114, 117, 105, 116, 97, 110, 100, 118, 101, 103, 101, 116, 97, 98, 108, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 49, 55, 52, 48, 48, 48]
|
||||
[56, 55, 44, 55, 52, 44, 48, 44, 48, 44, 55, 51, 51, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 103, 114, 97, 105, 110, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 49, 57, 52, 48, 48, 48]
|
||||
[49, 49, 49, 52, 44, 49, 48, 54, 55, 44, 48, 44, 48, 44, 57, 44, 49, 44, 102, 111, 111, 100, 115, 44, 97, 110, 105, 109, 97, 108, 109, 101, 97, 116, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 50, 48, 54, 48, 48, 48]
|
||||
[48, 44, 54, 52, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 102, 111, 111, 100, 115, 44, 102, 105, 115, 104, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 50, 49, 56, 48, 48, 48]
|
||||
[49, 50, 57, 55, 44, 49, 50, 52, 51, 44, 48, 44, 48, 44, 49, 49, 44, 49, 44, 102, 111, 111, 100, 115, 44, 116, 101, 97, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 50, 51, 57, 48, 48, 48]
|
||||
[49, 49, 49, 52, 44, 49, 48, 54, 55, 44, 48, 44, 48, 44, 54, 44, 49, 44, 102, 111, 111, 100, 115, 44, 99, 111, 102, 102, 101, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 50, 53, 50, 48, 48, 48]
|
||||
[53, 56, 44, 52, 54, 44, 48, 44, 48, 44, 49, 56, 56, 48, 51, 44, 49, 44, 116, 101, 120, 116, 105, 108, 101, 115, 44, 108, 101, 97, 116, 104, 101, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 50, 54, 52, 48, 48, 48]
|
||||
[50, 53, 54, 44, 50, 51, 55, 44, 48, 44, 48, 44, 49, 48, 49, 56, 57, 44, 49, 44, 116, 101, 120, 116, 105, 108, 101, 115, 44, 110, 97, 116, 117, 114, 97, 108, 102, 97, 98, 114, 105, 99, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 50, 55, 54, 48, 48, 48]
|
||||
[48, 44, 53, 54, 44, 54, 55, 48, 56, 51, 44, 49, 44, 48, 44, 48, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 104, 121, 100, 114, 111, 103, 101, 110, 102, 117, 101, 108, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 50, 57, 54, 48, 48, 48]
|
||||
[55, 51, 44, 54, 50, 44, 48, 44, 48, 44, 49, 55, 49, 55, 44, 49, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 109, 105, 110, 101, 114, 97, 108, 111, 105, 108, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 48, 56, 48, 48, 48]
|
||||
[48, 44, 49, 57, 57, 44, 53, 51, 56, 48, 56, 44, 50, 44, 48, 44, 48, 44, 99, 104, 101, 109, 105, 99, 97, 108, 115, 44, 112, 101, 115, 116, 105, 99, 105, 100, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 50, 48, 48, 48, 48]
|
||||
[48, 44, 57, 52, 55, 44, 49, 52, 51, 51, 44, 49, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 97, 103, 114, 105, 99, 117, 108, 116, 117, 114, 97, 108, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 51, 49, 48, 48, 48]
|
||||
[48, 44, 55, 49, 49, 53, 44, 49, 48, 50, 55, 55, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 112, 101, 114, 102, 111, 114, 109, 97, 110, 99, 101, 101, 110, 104, 97, 110, 99, 101, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 52, 51, 48, 48, 48]
|
||||
[48, 44, 51, 48, 54, 44, 49, 55, 51, 56, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 98, 97, 115, 105, 99, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 53, 52, 48, 48, 48]
|
||||
[48, 44, 52, 54, 55, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 116, 111, 98, 97, 99, 99, 111, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 54, 54, 48, 48, 48]
|
||||
[48, 44, 49, 52, 51, 44, 49, 56, 56, 48, 52, 44, 50, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 98, 101, 101, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 55, 55, 48, 48, 48]
|
||||
[48, 44, 50, 53, 54, 44, 48, 44, 48, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 119, 105, 110, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 51, 56, 57, 48, 48, 48]
|
||||
[48, 44, 54, 53, 57, 44, 49, 57, 56, 54, 44, 50, 44, 48, 44, 48, 44, 100, 114, 117, 103, 115, 44, 108, 105, 113, 117, 111, 114, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 49, 49, 48, 48, 48]
|
||||
[48, 44, 50, 51, 49, 56, 44, 49, 54, 52, 55, 50, 44, 50, 44, 48, 44, 48, 44, 109, 97, 99, 104, 105, 110, 101, 114, 121, 44, 99, 114, 111, 112, 104, 97, 114, 118, 101, 115, 116, 101, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 50, 53, 48, 48, 48]
|
||||
[48, 44, 50, 56, 57, 44, 49, 50, 50, 55, 55, 44, 50, 44, 48, 44, 48, 44, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 97, 110, 105, 109, 97, 108, 109, 111, 110, 105, 116, 111, 114, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 51, 55, 48, 48, 48]
|
||||
[48, 44, 52, 54, 55, 53, 44, 48, 44, 49, 44, 48, 44, 48, 44, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 116, 101, 114, 114, 97, 105, 110, 101, 110, 114, 105, 99, 104, 109, 101, 110, 116, 115, 121, 115, 116, 101, 109, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 52, 57, 48, 48, 48]
|
||||
[48, 44, 52, 52, 57, 49, 44, 50, 56, 49, 50, 44, 50, 44, 48, 44, 48, 44, 119, 101, 97, 112, 111, 110, 115, 44, 112, 101, 114, 115, 111, 110, 97, 108, 119, 101, 97, 112, 111, 110, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 54, 48, 48, 48, 48]
|
||||
[48, 44, 53, 53, 48, 44, 54, 50, 49, 54, 44, 50, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 100, 111, 109, 101, 115, 116, 105, 99, 97, 112, 112, 108, 105, 97, 110, 99, 101, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 55, 50, 48, 48, 48]
|
||||
[48, 44, 55, 48, 56, 52, 44, 53, 50, 55, 51, 44, 50, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 99, 111, 110, 115, 117, 109, 101, 114, 116, 101, 99, 104, 110, 111, 108, 111, 103, 121, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 56, 50, 48, 48, 48]
|
||||
[48, 44, 50, 53, 50, 44, 48, 44, 49, 44, 48, 44, 48, 44, 99, 111, 110, 115, 117, 109, 101, 114, 95, 105, 116, 101, 109, 115, 44, 99, 108, 111, 116, 104, 105, 110, 103, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 52, 57, 52, 48, 48, 48]
|
||||
[48, 44, 54, 56, 44, 51, 48, 49, 54, 49, 44, 50, 44, 48, 44, 48, 44, 119, 97, 115, 116, 101, 44, 98, 105, 111, 119, 97, 115, 116, 101, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 53, 48, 53, 48, 48, 48]
|
||||
[48, 44, 55, 49, 49, 53, 44, 55, 50, 55, 48, 44, 50, 44, 48, 44, 48, 44, 109, 101, 100, 105, 99, 105, 110, 101, 115, 44, 112, 114, 111, 103, 101, 110, 105, 116, 111, 114, 99, 101, 108, 108, 115, 44, 69, 114, 97, 110, 105, 110, 32, 40, 65, 90, 69, 66, 65, 78, 32, 67, 73, 84, 89, 41, 44, 50, 48, 49, 52, 45, 48, 56, 45, 50, 55, 84, 49, 53, 58, 48, 56, 58, 48, 51, 46, 53, 49, 54, 48, 48, 48]
|
||||
private final static EMDN markettool = new EMDN("tcp://localhost:9050", true);
|
||||
|
||||
private final static EMDNEmul server = new EMDNEmul("tcp://localhost:9050");
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
server.start();
|
||||
markettool.start();
|
||||
}
|
||||
|
||||
*/
|
||||
@Test
|
||||
public void testGetData() throws Exception {
|
||||
markettool.getData();
|
||||
// wait submit
|
||||
Thread.sleep(4000);
|
||||
Station station = markettool.getVendor("Eranin");
|
||||
assertNotNull(station);
|
||||
ItemData itemData = station.getData("cropharvesters");
|
||||
assertNotNull(itemData);
|
||||
assertEquals(0,itemData.getBuy(), 0.0001);
|
||||
assertEquals(0,itemData.getStock());
|
||||
assertEquals(2318,itemData.getSell(), 0.0001);
|
||||
assertEquals(16472,itemData.getDemand());
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
markettool.shutdown();
|
||||
server.shutdown();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,4 +6,3 @@ log4j.appender.stdout.layout.ConversionPattern=%p: %d{dd.MM.yyyy HH:mm:ss} (%F:%
|
||||
|
||||
log4j.logger.ru.trader.emdn.EMDN = TRACE
|
||||
|
||||
log4j.logger.org.zeromq = TRACE
|
||||
Reference in New Issue
Block a user