import java.util.*;
import java.io.*;
import java.lang.*;
class Figure
{
protected Figure
(String color
) { this.color = color;
}
return this.color;
}
}
class Pawn extends Figure
{
super(color);
}
return color.charAt(0) + "P";
}
}
class Queen extends Figure
{
super(color);
}
return color.charAt(0) + "Q";
}
}
class None extends Figure
{
public None() {
super("None");
}
return "__";
}
}
class BoardRow
{
List<Figure> row = new ArrayList<>();
public BoardRow() {
for (int i = 0; i < 10; i++) {
row.add(new None());
}
}
public boolean setFigure(int n, Figure figure) {
if (n < row.size()) {
row.set(n, figure);
return true;
} else {
return false;
}
}
public String checkFigure
(int n
) { return "Figure at " + n + " position is " + row.get(n);
}
public Figure getFigure(int n) {
return row.get(n);
}
for(int n = 0; n < row.size(); n++) {
s += "|" + row.get(n);
}
s = s + "|";
return s;
}
}
class Board
{
BoardRow r = new BoardRow();
List<BoardRow> board = new ArrayList<>();
public Board() {
for (int i = 0; i < 10; i++) {
board.add(new BoardRow());
}
}
public boolean setFigure(Figure f, int x, int y) {
if ((x < board.size()) && (y < board.size())) {
board.get(y).setFigure(x, f);
return true;
} else {
return false;
}
}
public Figure getFigure(int x, int y) {
return board.get(y).row.get(x); // WTF
}
public int maxX() {
return board.size() - 1;
}
public int maxY() {
return r.row.size() - 1;
}
public void showBoard() {
String columns
[] = {"1 ",
"2 ",
"3 ",
"4 ",
"5 ",
"6 ",
"7 ",
"8 ",
"9 ",
"10"}; System.
out.
println("__|A |B |C |D |E |F |G |H |I |J |"); for(int n = 0; n < board.size(); n++) {
System.
out.
println(columns
[n
] + board.
get(n
)); }
}
public void initBoard
(String figuresOnTop
) { if (figuresOnTop == "random") {
int random = randomize.nextInt(2);
if (random == 0) {
figuresOnTop = "white";
} else {
figuresOnTop = "black";
}
}
if (figuresOnTop == "white") {
for(int i = 0; i < r.row.size(); i++) {
setFigure(new Pawn("white"), i, 0);
setFigure(new Pawn("white"), i, 2);
setFigure(new Pawn("white"), i + 1, 1);
setFigure(new Pawn("black"), i + 1, 7);
setFigure(new Pawn("black"), i, 8);
setFigure(new Pawn("black"), i+ 1, 9);
i++;
}
}
else if (figuresOnTop == "black") {
for(int i = 0; i < r.row.size(); i++) {
setFigure(new Pawn("black"), i, 0);
setFigure(new Pawn("black"), i, 2);
setFigure(new Pawn("black"), i + 1, 1);
setFigure(new Pawn("white"), i + 1, 7);
setFigure(new Pawn("white"), i, 8);
setFigure(new Pawn("white"), i+ 1, 9);
i++;
}
} else {
System.
out.
println("Wrong command!"); }
this.figuresOnTop = figuresOnTop;
}
public String getFiguresOnTop
() { return figuresOnTop;
}
}
class Checkers
{
Board board;
board = new Board();
board.initBoard(figuresOnTop);
this.player1 = player1;
this.player2 = player2;
}
return currentTurn.equals("black") ? "white" : "black";
}
private boolean possibleMove(int x1, int y1, int x2, int y2) {
if (((x2 == x1+1) && (y2 == y1+1)) ||
((x2 == x1+1) && (y2 == y1-1)) ||
((x2 == x1-1) && (y2 == y1+1)) ||
((x2 == x1-1) && (y2 == y1-1))) {
return true;
} else {
return false;
}
}
private boolean possibleMoveOver(int x1, int y1, int x2, int y2) {
boolean result = false;
if ((x2 == x1 + 2) && (y2 == y1 + 2)) {
Figure f = board.getFigure(x1+1, y1+1);
if ((f instanceof Pawn || f instanceof Queen) &&
(f.getColor().equals(getOppositeColor(currentTurn)))) {
result = true;
}
} else if ((x2 == x1 + 2) && (y2 == y1 - 2)) {
Figure f = board.getFigure(x1+1, y1-1);
if ((f instanceof Pawn || f instanceof Queen) &&
(f.getColor().equals(getOppositeColor(currentTurn)))) {
result = true;
}
} else if ((x2 == x1 - 2) && (y2 == y1 + 2)) {
Figure f = board.getFigure(x1-1, y1+1);
if ((f instanceof Pawn || f instanceof Queen) &&
(f.getColor().equals(getOppositeColor(currentTurn)))) {
result = true;
}
} else if ((x2 == x1 - 2) && (y2 == y1 - 2)) {
Figure f = board.getFigure(x1-1, y1-1);
if ((f instanceof Pawn || f instanceof Queen) &&
(f.getColor().equals(getOppositeColor(currentTurn)))) {
result = true;
}
}
return result;
}
private boolean isOnBoard(int x, int y) {
if ((x >= 0) && (y >= 0) && (x <= board.maxX()) && (y <= board.maxY())) {
return true;
} else {
return false;
}
}
private boolean isEmpty(int x, int y) {
if (board.getFigure(x, y) instanceof None) {
return true;
} else {
return false;
}
}
private boolean ownFigure(int x, int y) {
Figure f = board.getFigure(x, y);
if (f.getColor().equals(currentTurn)) {
return true;
} else {
return false;
}
}
public boolean move(int x1, int y1, int x2, int y2) {
if ((possibleMove(x1, y1, x2, y2) || possibleMoveOver(x1, y1, x2, y2)) &&
isOnBoard(x2, y2) &&
isEmpty(x2, y2) &&
ownFigure(x1, y1)) {
//movement
Figure start = board.getFigure(x1, y1);
Figure end = board.getFigure(x2, y2);
board.setFigure(start, x2, y2);
return true;
} else {
return false;
}
}
public void showBoard() {
board.showBoard();
}
}
class App
{
public static void main
(String[] args
) { Checkers checkers = new Checkers("play1","play2","white");
checkers.showBoard();
checkers.move(0, 2, 1, 3);
checkers.board.setFigure(new Queen("black"), 0, 9);
checkers.showBoard();
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5pby4qOwppbXBvcnQgamF2YS5sYW5nLio7CgpjbGFzcyBGaWd1cmUKewoJU3RyaW5nIGNvbG9yOwoJCglwcm90ZWN0ZWQgRmlndXJlKFN0cmluZyBjb2xvcikgewoJCXRoaXMuY29sb3IgPSBjb2xvcjsKCX0KCXB1YmxpYyBTdHJpbmcgZ2V0Q29sb3IoKSB7CgkJcmV0dXJuIHRoaXMuY29sb3I7Cgl9Cn0KY2xhc3MgUGF3biBleHRlbmRzIEZpZ3VyZQp7CglwdWJsaWMgUGF3bihTdHJpbmcgY29sb3IpIHsKCQlzdXBlcihjb2xvcik7Cgl9CglwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewoJCXJldHVybiBjb2xvci5jaGFyQXQoMCkgKyAiUCI7Cgl9Cn0KY2xhc3MgUXVlZW4gZXh0ZW5kcyBGaWd1cmUKewoJcHVibGljIFF1ZWVuKFN0cmluZyBjb2xvcikgewoJCXN1cGVyKGNvbG9yKTsKCX0KCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CgkJcmV0dXJuIGNvbG9yLmNoYXJBdCgwKSArICJRIjsKCX0KfQpjbGFzcyBOb25lIGV4dGVuZHMgRmlndXJlCnsKCXB1YmxpYyBOb25lKCkgewoJCXN1cGVyKCJOb25lIik7Cgl9CglwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewoJCXJldHVybiAiX18iOwoJfQp9CmNsYXNzIEJvYXJkUm93CnsKCUxpc3Q8RmlndXJlPiByb3cgPSBuZXcgQXJyYXlMaXN0PD4oKTsKCQoJcHVibGljIEJvYXJkUm93KCkgewoJCWZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykgewoJCQlyb3cuYWRkKG5ldyBOb25lKCkpOwoJCX0KCX0KCXB1YmxpYyBib29sZWFuIHNldEZpZ3VyZShpbnQgbiwgRmlndXJlIGZpZ3VyZSkgewoJCWlmIChuIDwgcm93LnNpemUoKSkgewoJCQlyb3cuc2V0KG4sIGZpZ3VyZSk7CgkJCXJldHVybiB0cnVlOwoJCX0gZWxzZSB7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CglwdWJsaWMgU3RyaW5nIGNoZWNrRmlndXJlKGludCBuKSB7CgkJcmV0dXJuICJGaWd1cmUgYXQgIiArIG4gKyAiIHBvc2l0aW9uIGlzICIgKyByb3cuZ2V0KG4pOwoJfQoJcHVibGljIEZpZ3VyZSBnZXRGaWd1cmUoaW50IG4pIHsKCQlyZXR1cm4gcm93LmdldChuKTsKCX0KCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CgkJU3RyaW5nIHMgPSAiIjsKCQlmb3IoaW50IG4gPSAwOyBuIDwgcm93LnNpemUoKTsgbisrKSB7CgkJCXMgKz0gInwiICsgcm93LmdldChuKTsKCQl9CgkJcyA9IHMgKyAifCI7CgkJcmV0dXJuIHM7Cgl9Cn0KY2xhc3MgQm9hcmQKewoJcHJpdmF0ZSBTdHJpbmcgZmlndXJlc09uVG9wOwoJQm9hcmRSb3cgciA9IG5ldyBCb2FyZFJvdygpOwoJTGlzdDxCb2FyZFJvdz4gYm9hcmQgPSBuZXcgQXJyYXlMaXN0PD4oKTsKCXB1YmxpYyBCb2FyZCgpIHsKCQlmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHsKCQkJYm9hcmQuYWRkKG5ldyBCb2FyZFJvdygpKTsKCQl9Cgl9CglwdWJsaWMgYm9vbGVhbiBzZXRGaWd1cmUoRmlndXJlIGYsIGludCB4LCBpbnQgeSkgewoJCWlmICgoeCA8IGJvYXJkLnNpemUoKSkgJiYgKHkgPCBib2FyZC5zaXplKCkpKSB7CgkJCWJvYXJkLmdldCh5KS5zZXRGaWd1cmUoeCwgZik7CgkJCXJldHVybiB0cnVlOwoJCX0gZWxzZSB7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CglwdWJsaWMgRmlndXJlIGdldEZpZ3VyZShpbnQgeCwgaW50IHkpIHsKCQlyZXR1cm4gYm9hcmQuZ2V0KHkpLnJvdy5nZXQoeCk7ICAgICAgICAgLy8gV1RGCgl9CglwdWJsaWMgaW50IG1heFgoKSB7CgkJcmV0dXJuIGJvYXJkLnNpemUoKSAtIDE7Cgl9CglwdWJsaWMgaW50IG1heFkoKSB7CgkJcmV0dXJuIHIucm93LnNpemUoKSAtIDE7Cgl9CglwdWJsaWMgdm9pZCBzaG93Qm9hcmQoKSB7CgkJU3RyaW5nIGNvbHVtbnNbXSA9IHsiMSAiLCAiMiAiLCAiMyAiLCAiNCAiLCAiNSAiLCAiNiAiLCAiNyAiLCAiOCAiLCAiOSAiLCAiMTAifTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIl9ffEEgfEIgfEMgfEQgfEUgfEYgfEcgfEggfEkgfEogfCIpOwoJCWZvcihpbnQgbiA9IDA7IG4gPCBib2FyZC5zaXplKCk7IG4rKykgewoJCQlTeXN0ZW0ub3V0LnByaW50bG4oY29sdW1uc1tuXSArIGJvYXJkLmdldChuKSk7CgkJfQoJfQoJcHVibGljIHZvaWQgaW5pdEJvYXJkKFN0cmluZyBmaWd1cmVzT25Ub3ApIHsKCQlpZiAoZmlndXJlc09uVG9wID09ICJyYW5kb20iKSB7CgkJCVJhbmRvbSByYW5kb21pemUgPSBuZXcgUmFuZG9tKCk7CgkJCWludCByYW5kb20gPSByYW5kb21pemUubmV4dEludCgyKTsKCQkJaWYgKHJhbmRvbSA9PSAwKSB7CgkJCQlmaWd1cmVzT25Ub3AgPSAid2hpdGUiOwoJCQl9IGVsc2UgewoJCQkJZmlndXJlc09uVG9wID0gImJsYWNrIjsKCQkJfQoJCX0KCQlpZiAoZmlndXJlc09uVG9wID09ICJ3aGl0ZSIpIHsKCQkJZm9yKGludCBpID0gMDsgaSA8IHIucm93LnNpemUoKTsgaSsrKSB7CgkJCQlzZXRGaWd1cmUobmV3IFBhd24oIndoaXRlIiksIGksIDApOwoJCQkJc2V0RmlndXJlKG5ldyBQYXduKCJ3aGl0ZSIpLCBpLCAyKTsKCQkJCXNldEZpZ3VyZShuZXcgUGF3bigid2hpdGUiKSwgaSArIDEsIDEpOwoJCQkJc2V0RmlndXJlKG5ldyBQYXduKCJibGFjayIpLCBpICsgMSwgNyk7CgkJCQlzZXRGaWd1cmUobmV3IFBhd24oImJsYWNrIiksIGksIDgpOwoJCQkJc2V0RmlndXJlKG5ldyBQYXduKCJibGFjayIpLCBpKyAxLCA5KTsKCQkJCWkrKzsKCQkJfQoJCX0KCQllbHNlIGlmIChmaWd1cmVzT25Ub3AgPT0gImJsYWNrIikgewoJCQlmb3IoaW50IGkgPSAwOyBpIDwgci5yb3cuc2l6ZSgpOyBpKyspIHsKCQkJCXNldEZpZ3VyZShuZXcgUGF3bigiYmxhY2siKSwgaSwgMCk7CgkJCQlzZXRGaWd1cmUobmV3IFBhd24oImJsYWNrIiksIGksIDIpOwoJCQkJc2V0RmlndXJlKG5ldyBQYXduKCJibGFjayIpLCBpICsgMSwgMSk7CgkJCQlzZXRGaWd1cmUobmV3IFBhd24oIndoaXRlIiksIGkgKyAxLCA3KTsKCQkJCXNldEZpZ3VyZShuZXcgUGF3bigid2hpdGUiKSwgaSwgOCk7CgkJCQlzZXRGaWd1cmUobmV3IFBhd24oIndoaXRlIiksIGkrIDEsIDkpOwoJCQkJaSsrOwoJCQl9CgkJfSBlbHNlIHsKCQkJU3lzdGVtLm91dC5wcmludGxuKCJXcm9uZyBjb21tYW5kISIpOwoJCX0KCQl0aGlzLmZpZ3VyZXNPblRvcCA9IGZpZ3VyZXNPblRvcDsKCX0KCXB1YmxpYyBTdHJpbmcgZ2V0RmlndXJlc09uVG9wKCkgewoJCXJldHVybiBmaWd1cmVzT25Ub3A7Cgl9Cn0KY2xhc3MgQ2hlY2tlcnMKewoJQm9hcmQgYm9hcmQ7CglTdHJpbmcgcGxheWVyMTsKCVN0cmluZyBwbGF5ZXIyOwoJU3RyaW5nIGN1cnJlbnRUdXJuID0gIndoaXRlIjsKCXB1YmxpYyBDaGVja2VycyhTdHJpbmcgcGxheWVyMSwgU3RyaW5nIHBsYXllcjIsIFN0cmluZyBmaWd1cmVzT25Ub3ApewoJCWJvYXJkID0gbmV3IEJvYXJkKCk7CgkJYm9hcmQuaW5pdEJvYXJkKGZpZ3VyZXNPblRvcCk7CgkJdGhpcy5wbGF5ZXIxID0gcGxheWVyMTsKCQl0aGlzLnBsYXllcjIgPSBwbGF5ZXIyOwoJfQoJcHVibGljIFN0cmluZyBnZXRPcHBvc2l0ZUNvbG9yKFN0cmluZyBjdXJyZW50VHVybikgewoJCXJldHVybiBjdXJyZW50VHVybi5lcXVhbHMoImJsYWNrIikgPyAid2hpdGUiIDogImJsYWNrIjsKCX0KCXByaXZhdGUgYm9vbGVhbiBwb3NzaWJsZU1vdmUoaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyKSB7CgkJaWYgKCgoeDIgPT0geDErMSkgJiYgKHkyID09IHkxKzEpKSB8fAogICAgICAgCQkoKHgyID09IHgxKzEpICYmICh5MiA9PSB5MS0xKSkgfHwKICAgICAgIAkJKCh4MiA9PSB4MS0xKSAmJiAoeTIgPT0geTErMSkpIHx8CiAgICAgICAJCSgoeDIgPT0geDEtMSkgJiYgKHkyID09IHkxLTEpKSkgewoJCQlyZXR1cm4gdHJ1ZTsKCQl9IGVsc2UgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJfQoJcHJpdmF0ZSBib29sZWFuIHBvc3NpYmxlTW92ZU92ZXIoaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyKSB7CgkJYm9vbGVhbiByZXN1bHQgPSBmYWxzZTsKCQlpZiAoKHgyID09IHgxICsgMikgJiYgKHkyID09IHkxICsgMikpIHsKCQkJRmlndXJlIGYgPSBib2FyZC5nZXRGaWd1cmUoeDErMSwgeTErMSk7CgkJCWlmICgoZiBpbnN0YW5jZW9mIFBhd24gfHwgZiBpbnN0YW5jZW9mIFF1ZWVuKSAmJgoJCQkJCShmLmdldENvbG9yKCkuZXF1YWxzKGdldE9wcG9zaXRlQ29sb3IoY3VycmVudFR1cm4pKSkpIHsKCQkJCXJlc3VsdCA9IHRydWU7CgkJCX0KCQl9IGVsc2UgaWYgKCh4MiA9PSB4MSArIDIpICYmICh5MiA9PSB5MSAtIDIpKSB7CgkJCUZpZ3VyZSBmID0gYm9hcmQuZ2V0RmlndXJlKHgxKzEsIHkxLTEpOwoJCQlpZiAoKGYgaW5zdGFuY2VvZiBQYXduIHx8IGYgaW5zdGFuY2VvZiBRdWVlbikgJiYgCgkJCQkJKGYuZ2V0Q29sb3IoKS5lcXVhbHMoZ2V0T3Bwb3NpdGVDb2xvcihjdXJyZW50VHVybikpKSkgewoJCQkJcmVzdWx0ID0gdHJ1ZTsKCQkJfQoJCX0gZWxzZSBpZiAoKHgyID09IHgxIC0gMikgJiYgKHkyID09IHkxICsgMikpIHsKCQkJRmlndXJlIGYgPSBib2FyZC5nZXRGaWd1cmUoeDEtMSwgeTErMSk7CgkJCWlmICgoZiBpbnN0YW5jZW9mIFBhd24gfHwgZiBpbnN0YW5jZW9mIFF1ZWVuKSAmJiAKCQkJCQkoZi5nZXRDb2xvcigpLmVxdWFscyhnZXRPcHBvc2l0ZUNvbG9yKGN1cnJlbnRUdXJuKSkpKSB7CgkJCQlyZXN1bHQgPSB0cnVlOwoJCQl9CgkJfSBlbHNlIGlmICgoeDIgPT0geDEgLSAyKSAmJiAoeTIgPT0geTEgLSAyKSkgewoJCQlGaWd1cmUgZiA9IGJvYXJkLmdldEZpZ3VyZSh4MS0xLCB5MS0xKTsKCQkJaWYgKChmIGluc3RhbmNlb2YgUGF3biB8fCBmIGluc3RhbmNlb2YgUXVlZW4pICYmIAoJCQkJCShmLmdldENvbG9yKCkuZXF1YWxzKGdldE9wcG9zaXRlQ29sb3IoY3VycmVudFR1cm4pKSkpIHsKCQkJCXJlc3VsdCA9IHRydWU7CgkJCX0KCQl9CgkJcmV0dXJuIHJlc3VsdDsKCX0KCXByaXZhdGUgYm9vbGVhbiBpc09uQm9hcmQoaW50IHgsIGludCB5KSB7CgkJaWYgKCh4ID49IDApICYmICh5ID49IDApICYmICh4IDw9IGJvYXJkLm1heFgoKSkgJiYgKHkgPD0gYm9hcmQubWF4WSgpKSkgewoJCQlyZXR1cm4gdHJ1ZTsKCQl9IGVsc2UgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJfQoJcHJpdmF0ZSBib29sZWFuIGlzRW1wdHkoaW50IHgsIGludCB5KSB7CgkJaWYgKGJvYXJkLmdldEZpZ3VyZSh4LCB5KSBpbnN0YW5jZW9mIE5vbmUpIHsKCQkJcmV0dXJuIHRydWU7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCXByaXZhdGUgYm9vbGVhbiBvd25GaWd1cmUoaW50IHgsIGludCB5KSB7CgkJRmlndXJlIGYgPSBib2FyZC5nZXRGaWd1cmUoeCwgeSk7CgkJaWYgKGYuZ2V0Q29sb3IoKS5lcXVhbHMoY3VycmVudFR1cm4pKSB7CgkJCXJldHVybiB0cnVlOwoJCX0gZWxzZSB7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CglwdWJsaWMgYm9vbGVhbiBtb3ZlKGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MikgewoJCWlmICgocG9zc2libGVNb3ZlKHgxLCB5MSwgeDIsIHkyKSB8fCBwb3NzaWJsZU1vdmVPdmVyKHgxLCB5MSwgeDIsIHkyKSkgJiYKCQkJCWlzT25Cb2FyZCh4MiwgeTIpICYmCgkJCQlpc0VtcHR5KHgyLCB5MikgJiYKCQkJCW93bkZpZ3VyZSh4MSwgeTEpKSB7CgkJCS8vbW92ZW1lbnQKCQkJRmlndXJlIHN0YXJ0ID0gYm9hcmQuZ2V0RmlndXJlKHgxLCB5MSk7CgkJCUZpZ3VyZSBlbmQgPSBib2FyZC5nZXRGaWd1cmUoeDIsIHkyKTsKCQkJYm9hcmQuc2V0RmlndXJlKHN0YXJ0LCB4MiwgeTIpOwoJCQlTeXN0ZW0ub3V0LnByaW50bG4oc3RhcnQpOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9IGVsc2UgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJfQoJcHVibGljIHZvaWQgc2hvd0JvYXJkKCkgewoJCWJvYXJkLnNob3dCb2FyZCgpOwoJfQp9CmNsYXNzIEFwcAp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CgkJQ2hlY2tlcnMgY2hlY2tlcnMgPSBuZXcgQ2hlY2tlcnMoInBsYXkxIiwicGxheTIiLCJ3aGl0ZSIpOwoJCWNoZWNrZXJzLnNob3dCb2FyZCgpOwoJCWNoZWNrZXJzLm1vdmUoMCwgMiwgMSwgMyk7CgkJY2hlY2tlcnMuYm9hcmQuc2V0RmlndXJlKG5ldyBRdWVlbigiYmxhY2siKSwgMCwgOSk7CgkJY2hlY2tlcnMuc2hvd0JvYXJkKCk7CgkJCgl9Cn0=