@oathompsonjones/mini-games 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/base/board.d.ts +0 -7
- package/build/base/board.js +1 -10
- package/build/base/controller.d.ts +13 -13
- package/build/base/controller.js +2 -3
- package/build/games/connect4/controller.d.ts +2 -2
- package/build/games/connect4/controller.js +2 -2
- package/build/games/tictactoe/controller.d.ts +2 -2
- package/build/games/tictactoe/controller.js +2 -2
- package/package.json +1 -1
package/build/base/board.d.ts
CHANGED
|
@@ -19,8 +19,6 @@ export declare const enum GridLines {
|
|
|
19
19
|
}
|
|
20
20
|
/** Represents a game board. */
|
|
21
21
|
export default abstract class Board<T extends BitBoard = BitBoard> {
|
|
22
|
-
/** Contains the ID of the game. */
|
|
23
|
-
gameID: unknown;
|
|
24
22
|
/** Contains the data stored in a BitBoard. */
|
|
25
23
|
protected readonly bitBoard: T;
|
|
26
24
|
/** The width of the board. */
|
|
@@ -58,11 +56,6 @@ export default abstract class Board<T extends BitBoard = BitBoard> {
|
|
|
58
56
|
get emptyCells(): Position[];
|
|
59
57
|
/** Calculates the heuristic score for a given board state. */
|
|
60
58
|
abstract get heuristic(): number;
|
|
61
|
-
/**
|
|
62
|
-
* Sets the game ID.
|
|
63
|
-
* @param id The ID of the game.
|
|
64
|
-
*/
|
|
65
|
-
setGameID(id: unknown): void;
|
|
66
59
|
/**
|
|
67
60
|
* Makes a move on the board.
|
|
68
61
|
* @param move The position of the move.
|
package/build/base/board.js
CHANGED
|
@@ -3,8 +3,6 @@ import LongInt from "../bitBoard/longInt.js";
|
|
|
3
3
|
import LongIntBitBoard from "../bitBoard/longIntBitBoard.js";
|
|
4
4
|
/** Represents a game board. */
|
|
5
5
|
export default class Board {
|
|
6
|
-
/** Contains the ID of the game. */
|
|
7
|
-
gameID = "";
|
|
8
6
|
/** Contains the data stored in a BitBoard. */
|
|
9
7
|
bitBoard;
|
|
10
8
|
/** The width of the board. */
|
|
@@ -86,13 +84,6 @@ export default class Board {
|
|
|
86
84
|
}
|
|
87
85
|
return emptyCells;
|
|
88
86
|
}
|
|
89
|
-
/**
|
|
90
|
-
* Sets the game ID.
|
|
91
|
-
* @param id The ID of the game.
|
|
92
|
-
*/
|
|
93
|
-
setGameID(id) {
|
|
94
|
-
this.gameID = id;
|
|
95
|
-
}
|
|
96
87
|
/**
|
|
97
88
|
* Makes a move on the board.
|
|
98
89
|
* @param move The position of the move.
|
|
@@ -275,4 +266,4 @@ export default class Board {
|
|
|
275
266
|
return position.x >= 0 && position.x < this.boardWidth && position.y >= 0 && position.y < this.boardHeight;
|
|
276
267
|
}
|
|
277
268
|
}
|
|
278
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmFzZS9ib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFdBQVcsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRCxPQUFPLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUM3QyxPQUFPLGVBQWUsTUFBTSxnQ0FBZ0MsQ0FBQztBQXNCN0QsK0JBQStCO0FBQy9CLE1BQU0sQ0FBQyxPQUFPLE9BQWdCLEtBQUs7SUFDL0IsbUNBQW1DO0lBQzVCLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFFNUIsOENBQThDO0lBQzNCLFFBQVEsQ0FBSTtJQUUvQiw4QkFBOEI7SUFDWCxVQUFVLENBQVM7SUFFdEMsK0JBQStCO0lBQ1osV0FBVyxDQUFTO0lBRXZDLHdCQUF3QjtJQUNMLEtBQUssR0FBYSxFQUFFLENBQUM7SUFFeEMsK0VBQStFO0lBQzlELG9CQUFvQixDQUFTO0lBRTlDLHNEQUFzRDtJQUNyQyxjQUFjLENBQVM7SUFLeEM7Ozs7OztPQU1HO0lBQ0gsWUFBc0IsS0FBYSxFQUFFLE1BQWMsRUFBRSxtQkFBMkIsQ0FBQyxFQUFFLGtCQUEwQixDQUFDO1FBQzFHLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxlQUFlLENBQUM7UUFDbEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFFM0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFLENBQU0sQ0FBQztJQUMvRyxDQUFDO0lBRUQsbURBQW1EO0lBQ25ELElBQVcsTUFBTTtRQUNiLElBQUksTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsWUFBWSxlQUFlO1lBQ2xELENBQUMsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN6RSxDQUFDLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBTSxDQUFDO1FBRTlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFO1lBQzlDLE1BQU0sR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxZQUFZLGVBQWU7WUFDdEQsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDO2dCQUNWLEdBQUcsS0FBSyxDQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZGLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7YUFDaEgsQ0FBQztZQUNGLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFcEQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsSUFBVyxPQUFPO1FBQ2QsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxZQUFZLGVBQWU7WUFDbkQsQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLENBQUMsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFNLENBQUM7UUFFOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLEVBQUU7WUFDOUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxJQUFXLE1BQU07UUFDYixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFOUMsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckMsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ3ZDLE9BQU8sQ0FBQyxDQUFDO1lBRWIsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ3ZDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQ1gsT0FBTyxJQUFJLENBQUM7UUFFaEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxJQUFXLFVBQVU7UUFDakIsTUFBTSxVQUFVLEdBQWUsRUFBRSxDQUFDO1FBRWxDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDeEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSTtvQkFDcEMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUtEOzs7T0FHRztJQUNJLFNBQVMsQ0FBQyxFQUFXO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLElBQWMsRUFBRSxRQUFnQjtRQUM1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsOEJBQThCO0lBQ3ZCLFlBQVk7UUFDZixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWxDLElBQUksUUFBUSxLQUFLLFNBQVM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLElBQWM7UUFDN0IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDO0lBQzFFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksWUFBWSxDQUFDLElBQWM7UUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUNyRCxPQUFPLENBQUMsQ0FBQztRQUNqQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksUUFBUSxDQUNYLE9BQWdCLElBQUksRUFDcEIsU0FBa0IsSUFBSSxFQUN0QixTQUFrQixJQUFJLEVBQ3RCLFVBQW9CLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUM5QixTQUFrQixJQUFJO1FBRXRCLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsb0JBQW9CO1lBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUV6QyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFFLENBQUMsTUFBTSxDQUFDO1FBRXhDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUM7WUFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBRXhELE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLEtBQUssWUFBWSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sUUFBUSxHQUFHLHNEQUFzRCxDQUFDO1FBQ3hFLE1BQU0sT0FBTyxHQUFHLE1BQU07WUFDbEIsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQztpQkFDbEMsS0FBSyxDQUFDLEVBQUUsQ0FBQztpQkFDVCxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO2lCQUNyRCxJQUFJLENBQUMsRUFBRSxDQUFDO2lCQUNSLEtBQUssQ0FBQyxjQUFjLENBQUU7aUJBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUM7aUJBQ1QsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUNyRSxJQUFJO1lBQ0osQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNULE1BQU0sU0FBUyxHQUFHLElBQUk7WUFDbEIsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxnQ0FBaUIsR0FBRztpQkFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQzVDLEtBQUssQ0FBQyxjQUFjLENBQUU7aUJBQ3RCLElBQUksK0JBQWdCLEdBQUcsaUNBQWtCLElBQUk7WUFDbEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNULE1BQU0sWUFBWSxHQUFHLElBQUk7WUFDckIsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxtQ0FBb0IsR0FBRztpQkFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQzVDLEtBQUssQ0FBQyxjQUFjLENBQUU7aUJBQ3RCLElBQUksa0NBQW1CLEdBQUcsb0NBQXFCLEVBQUU7WUFDdEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNULE1BQU0sWUFBWSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxnQ0FBaUIsQ0FBQyxDQUFDLEVBQUUsR0FBRzthQUNyRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM1QyxLQUFLLENBQUMsY0FBYyxDQUFFO2FBQ3RCLElBQUksZ0NBQWlCLEdBQUcsSUFBSSxDQUFDLENBQUMsaUNBQWtCLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQztRQUM5RCxNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7UUFFMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN4QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDeEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsbUNBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUMsbUNBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkQsSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFFbkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsa0NBQW1CLENBQUM7Z0JBQ2hFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTdDLElBQUksWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUN4QixHQUFHLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNqRCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osR0FBRyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDekQsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7d0JBQzFCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDNUMsQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLFdBQVcsSUFBSSxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUVELE9BQU8sR0FBRyxPQUFPLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE9BQU8sQ0FBQyxRQUFnQixFQUFFLE1BQWMsRUFBRSxVQUFrQixDQUFDO1FBQ2hFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3BELE9BQU8sQ0FBQyxDQUFDO1FBRWIsTUFBTSxVQUFVLEdBQTZDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0gsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksSUFBSSxHQUFxQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksT0FBTyxHQUFxQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxTQUF3QixFQUFRLEVBQUU7WUFDdkUsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFjLENBQUM7WUFFbEMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTdDLElBQUksWUFBWSxLQUFLLElBQUk7b0JBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO3FCQUNqQixJQUFJLFlBQVksS0FBSyxRQUFRO29CQUM5QixPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM3QixDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN2QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDcEIsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFrQixFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQzt3QkFDMUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTzs0QkFDakIsU0FBUzt3QkFFYixTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFFL0QsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTTs0QkFDckIsU0FBUyxFQUFFLENBQUM7b0JBQ3BCLENBQUM7Z0JBQ0wsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sV0FBVyxDQUFDLElBQWMsRUFBRSxRQUFnQjtRQUNsRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFFcEYsT0FBTyxpQkFBaUIsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGNBQWMsQ0FBQyxRQUFnQjtRQUNyQyxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLFlBQVksZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNyRyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFckQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxHQUFHLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLFFBQVEsQ0FBQyxJQUFjO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssZUFBZSxDQUFDLFFBQWtCO1FBQ3RDLE9BQU8sUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMvRyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBCaXRCb2FyZCBmcm9tIFwiLi4vYml0Qm9hcmQvYml0Qm9hcmQuanNcIjtcbmltcG9ydCBJbnRCaXRCb2FyZCBmcm9tIFwiLi4vYml0Qm9hcmQvaW50Qml0Qm9hcmQuanNcIjtcbmltcG9ydCBMb25nSW50IGZyb20gXCIuLi9iaXRCb2FyZC9sb25nSW50LmpzXCI7XG5pbXBvcnQgTG9uZ0ludEJpdEJvYXJkIGZyb20gXCIuLi9iaXRCb2FyZC9sb25nSW50Qml0Qm9hcmQuanNcIjtcblxuZXhwb3J0IHR5cGUgUG9zaXRpb24gPSB7XG4gICAgeTogbnVtYmVyO1xuICAgIHg6IG51bWJlcjtcbn07XG5cbi8qKiBEZWZpbmVzIHRoZSBjaGFyYWN0ZXJzIHVzZWQgdG8gZHJhdyBhIGdyaWQuICovXG5leHBvcnQgY29uc3QgZW51bSBHcmlkTGluZXMge1xuICAgIEhvcml6b250YWwgPSBcIlxcdTI1MDBcIixcbiAgICBWZXJ0aWNhbCA9IFwiXFx1MjUwMlwiLFxuICAgIFRvcExlZnQgPSBcIlxcdTI1MENcIixcbiAgICBUb3BSaWdodCA9IFwiXFx1MjUxMFwiLFxuICAgIEJvdHRvbUxlZnQgPSBcIlxcdTI1MTRcIixcbiAgICBCb3R0b21SaWdodCA9IFwiXFx1MjUxOFwiLFxuICAgIFRMZWZ0ID0gXCJcXHUyNTFDXCIsXG4gICAgVFJpZ2h0ID0gXCJcXHUyNTI0XCIsXG4gICAgVFRvcCA9IFwiXFx1MjUyQ1wiLFxuICAgIFRCb3R0b20gPSBcIlxcdTI1MzRcIixcbiAgICBDcm9zcyA9IFwiXFx1MjUzQ1wiLFxufVxuXG4vKiogUmVwcmVzZW50cyBhIGdhbWUgYm9hcmQuICovXG5leHBvcnQgZGVmYXVsdCBhYnN0cmFjdCBjbGFzcyBCb2FyZDxUIGV4dGVuZHMgQml0Qm9hcmQgPSBCaXRCb2FyZD4ge1xuICAgIC8qKiBDb250YWlucyB0aGUgSUQgb2YgdGhlIGdhbWUuICovXG4gICAgcHVibGljIGdhbWVJRDogdW5rbm93biA9IFwiXCI7XG5cbiAgICAvKiogQ29udGFpbnMgdGhlIGRhdGEgc3RvcmVkIGluIGEgQml0Qm9hcmQuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGJpdEJvYXJkOiBUO1xuXG4gICAgLyoqIFRoZSB3aWR0aCBvZiB0aGUgYm9hcmQuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGJvYXJkV2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBUaGUgaGVpZ2h0IG9mIHRoZSBib2FyZC4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYm9hcmRIZWlnaHQ6IG51bWJlcjtcblxuICAgIC8qKiBBIHN0YWNrIG9mIG1vdmVzLiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtb3ZlczogbnVtYmVyW10gPSBbXTtcblxuICAgIC8qKiBIb3cgbWFueSBib2FyZHMgdGhlcmUgYXJlIHJlcHJlc2VudGluZyBwbGF5ZXIgcG9zaXRpb25zIChtb3N0IGxpa2VseSAyKS4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG51bWJlck9mUGxheWVyQm9hcmRzOiBudW1iZXI7XG5cbiAgICAvKiogTnVtYmVyIG9mIGJvYXJkcyBpbiB0b3RhbCAobW9zdCBsaWtlbHkgYWxzbyAyKS4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG51bWJlck9mQm9hcmRzOiBudW1iZXI7XG5cbiAgICAvKiogVGhlIGJvYXJkIHN0YXRlcyB3aGljaCByZXByZXNlbnQgYSB3aW5uaW5nIHN0YXRlLiAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSB3aW5uaW5nU3RhdGVzOiBUW107XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEJvYXJkLlxuICAgICAqIEBwYXJhbSB3aWR0aCBUaGUgd2lkdGggb2YgdGhlIGJvYXJkLlxuICAgICAqIEBwYXJhbSBoZWlnaHQgVGhlIGhlaWdodCBvZiB0aGUgYm9hcmQuXG4gICAgICogQHBhcmFtIHBsYXllckJvYXJkQ291bnQgSG93IG1hbnkgYm9hcmRzIHRoZXJlIGFyZSByZXByZXNlbnRpbmcgcGxheWVyIHBvc2l0aW9ucyAobW9zdCBsaWtlbHkgMikuXG4gICAgICogQHBhcmFtIGV4dHJhQm9hcmRDb3VudCBOdW1iZXIgb2YgZXh0cmEgYm9hcmRzIChtb3N0IGxpa2VseSAwKS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3Iod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIHBsYXllckJvYXJkQ291bnQ6IG51bWJlciA9IDIsIGV4dHJhQm9hcmRDb3VudDogbnVtYmVyID0gMCkge1xuICAgICAgICB0aGlzLmJvYXJkV2lkdGggPSB3aWR0aDtcbiAgICAgICAgdGhpcy5ib2FyZEhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgdGhpcy5udW1iZXJPZlBsYXllckJvYXJkcyA9IHBsYXllckJvYXJkQ291bnQ7XG4gICAgICAgIHRoaXMubnVtYmVyT2ZCb2FyZHMgPSB0aGlzLm51bWJlck9mUGxheWVyQm9hcmRzICsgZXh0cmFCb2FyZENvdW50O1xuICAgICAgICBjb25zdCB0b3RhbEJpdHMgPSB0aGlzLmJvYXJkV2lkdGggKiB0aGlzLmJvYXJkSGVpZ2h0ICogdGhpcy5udW1iZXJPZkJvYXJkcztcblxuICAgICAgICB0aGlzLmJpdEJvYXJkID0gKHRvdGFsQml0cyA+IDMyID8gbmV3IExvbmdJbnRCaXRCb2FyZChNYXRoLmNlaWwodG90YWxCaXRzIC8gMzIpKSA6IG5ldyBJbnRCaXRCb2FyZCgpKSBhcyBUO1xuICAgIH1cblxuICAgIC8qKiBDYWxjdWxhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBib2FyZCBpcyBmdWxsLiAqL1xuICAgIHB1YmxpYyBnZXQgaXNGdWxsKCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgaXNGdWxsID0gKHRoaXMuYml0Qm9hcmQgaW5zdGFuY2VvZiBMb25nSW50Qml0Qm9hcmRcbiAgICAgICAgICAgID8gbmV3IExvbmdJbnRCaXRCb2FyZChNYXRoLmNlaWwodGhpcy5ib2FyZFdpZHRoICogdGhpcy5ib2FyZEhlaWdodCAvIDMyKSlcbiAgICAgICAgICAgIDogbmV3IEludEJpdEJvYXJkKCkpIGFzIFQ7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm51bWJlck9mUGxheWVyQm9hcmRzOyBpKyspXG4gICAgICAgICAgICBpc0Z1bGwgPSBpc0Z1bGwub3IodGhpcy5nZXRQbGF5ZXJCb2FyZChpKSk7XG4gICAgICAgIGNvbnN0IGZ1bGxWYWx1ZSA9IHRoaXMuYml0Qm9hcmQgaW5zdGFuY2VvZiBMb25nSW50Qml0Qm9hcmRcbiAgICAgICAgICAgID8gbmV3IExvbmdJbnQoW1xuICAgICAgICAgICAgICAgIC4uLkFycmF5PG51bWJlcj4oTWF0aC5jZWlsKHRoaXMuYm9hcmRXaWR0aCAqIHRoaXMuYm9hcmRIZWlnaHQgLyAzMikgLSAxKS5maWxsKH4wID4+PiAwKSxcbiAgICAgICAgICAgICAgICAyICoqICh0aGlzLmJvYXJkV2lkdGggKiB0aGlzLmJvYXJkSGVpZ2h0IC0gKE1hdGguY2VpbCh0aGlzLmJvYXJkV2lkdGggKiB0aGlzLmJvYXJkSGVpZ2h0IC8gMzIpIC0gMSkgKiAzMikgLSAxLFxuICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIDogMiAqKiAodGhpcy5ib2FyZFdpZHRoICogdGhpcy5ib2FyZEhlaWdodCkgLSAxO1xuXG4gICAgICAgIHJldHVybiBpc0Z1bGwuZXF1YWxzKGZ1bGxWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIENhbGN1bGF0ZXMgd2hldGhlciBvciBub3QgdGhlIGJvYXJkIGlzIGVtcHR5LiAqL1xuICAgIHB1YmxpYyBnZXQgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGlzRW1wdHkgPSAodGhpcy5iaXRCb2FyZCBpbnN0YW5jZW9mIExvbmdJbnRCaXRCb2FyZFxuICAgICAgICAgICAgPyBuZXcgTG9uZ0ludEJpdEJvYXJkKE1hdGguY2VpbCh0aGlzLmJvYXJkV2lkdGggKiB0aGlzLmJvYXJkSGVpZ2h0IC8gMzIpKVxuICAgICAgICAgICAgOiBuZXcgSW50Qml0Qm9hcmQoKSkgYXMgVDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubnVtYmVyT2ZQbGF5ZXJCb2FyZHM7IGkrKylcbiAgICAgICAgICAgIGlzRW1wdHkgPSBpc0VtcHR5Lm9yKHRoaXMuZ2V0UGxheWVyQm9hcmQoaSkpO1xuXG4gICAgICAgIHJldHVybiBpc0VtcHR5LmVxdWFscygwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHdobyB0aGUgd2lubmVyIGlzLlxuICAgICAqIElmIHRoZSBnYW1lIGlzIG5vdCBvdmVyLCB0aGUgb3V0cHV0IGlzIGZhbHNlLlxuICAgICAqIElmIHRoZXJlIGlzIGEgd2lubmVyLCB0aGUgb3V0cHV0IGlzIHRoZWlyIElELlxuICAgICAqIElmIHRoZXJlIGlzIGEgZHJhdywgdGhlIG91dHB1dCBpcyBudWxsLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgd2lubmVyKCk6IDAgfCAxIHwgZmFsc2UgfCBudWxsIHtcbiAgICAgICAgY29uc3QgcGxheWVyT25lQm9hcmQgPSB0aGlzLmdldFBsYXllckJvYXJkKDApO1xuICAgICAgICBjb25zdCBwbGF5ZXJUd29Cb2FyZCA9IHRoaXMuZ2V0UGxheWVyQm9hcmQoMSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBzdGF0ZSBvZiB0aGlzLndpbm5pbmdTdGF0ZXMpIHtcbiAgICAgICAgICAgIGlmIChwbGF5ZXJPbmVCb2FyZC5hbmQoc3RhdGUpLmVxdWFscyhzdGF0ZSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG5cbiAgICAgICAgICAgIGlmIChwbGF5ZXJUd29Cb2FyZC5hbmQoc3RhdGUpLmVxdWFscyhzdGF0ZSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0Z1bGwpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIENhbGN1bGF0ZXMgd2hpY2ggY2VsbHMgYXJlIGVtcHR5LiAqL1xuICAgIHB1YmxpYyBnZXQgZW1wdHlDZWxscygpOiBQb3NpdGlvbltdIHtcbiAgICAgICAgY29uc3QgZW1wdHlDZWxsczogUG9zaXRpb25bXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IHkgPSAwOyB5IDwgdGhpcy5ib2FyZEhlaWdodDsgeSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IHRoaXMuYm9hcmRXaWR0aDsgeCsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2VsbE9jY3VwaWVyKHsgeCwgeSB9KSA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgZW1wdHlDZWxscy5wdXNoKHsgeCwgeSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbXB0eUNlbGxzO1xuICAgIH1cblxuICAgIC8qKiBDYWxjdWxhdGVzIHRoZSBoZXVyaXN0aWMgc2NvcmUgZm9yIGEgZ2l2ZW4gYm9hcmQgc3RhdGUuICovXG4gICAgcHVibGljIGFic3RyYWN0IGdldCBoZXVyaXN0aWMoKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgZ2FtZSBJRC5cbiAgICAgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBnYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRHYW1lSUQoaWQ6IHVua25vd24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nYW1lSUQgPSBpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYWtlcyBhIG1vdmUgb24gdGhlIGJvYXJkLlxuICAgICAqIEBwYXJhbSBtb3ZlIFRoZSBwb3NpdGlvbiBvZiB0aGUgbW92ZS5cbiAgICAgKiBAcGFyYW0gcGxheWVySWQgVGhlIHBsYXllciB3aG8ncyBtYWtpbmcgdGhlIG1vdmUuXG4gICAgICovXG4gICAgcHVibGljIG1ha2VNb3ZlKG1vdmU6IFBvc2l0aW9uLCBwbGF5ZXJJZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJpdCA9IHRoaXMuZ2V0Qml0SW5kZXgobW92ZSwgcGxheWVySWQpO1xuXG4gICAgICAgIHRoaXMubW92ZXMucHVzaChiaXQpO1xuICAgICAgICB0aGlzLmJpdEJvYXJkLnNldEJpdChiaXQpO1xuICAgIH1cblxuICAgIC8qKiBSZXZlcnNlcyB0aGUgbGFzdCBtb3ZlLiAqL1xuICAgIHB1YmxpYyB1bmRvTGFzdE1vdmUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxhc3RNb3ZlID0gdGhpcy5tb3Zlcy5wb3AoKTtcblxuICAgICAgICBpZiAobGFzdE1vdmUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG1vdmUgdG8gdW5kby5cIik7XG5cbiAgICAgICAgdGhpcy5iaXRCb2FyZC5jbGVhckJpdChsYXN0TW92ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgbW92ZSBpcyB2YWxpZC5cbiAgICAgKiBAcGFyYW0gbW92ZSBUaGUgbW92ZS5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCBpdCdzIHZhbGlkLlxuICAgICAqL1xuICAgIHB1YmxpYyBtb3ZlSXNWYWxpZChtb3ZlOiBQb3NpdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkUG9zaXRpb24obW92ZSkgJiYgdGhpcy5jZWxsT2NjdXBpZXIobW92ZSkgPT09IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoaWNoIHBsYXllciBpcyBvY2N1cHlpbmcgYSBnaXZlbiBjZWxsLlxuICAgICAqIEBwYXJhbSBjZWxsIFRoZSBjZWxsIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIElmIHRoZSBjZWxsIGlzIGVtcHR5LCB0aGUgb3V0cHV0IGlzIG51bGwsIG90aGVyd2lzZSB0aGUgb3V0cHV0IGlzIHRoZSBwbGF5ZXIncyBJRC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2VsbE9jY3VwaWVyKGNlbGw6IFBvc2l0aW9uKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5udW1iZXJPZlBsYXllckJvYXJkczsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5iaXRCb2FyZC5nZXRCaXQodGhpcy5nZXRCaXRJbmRleChjZWxsLCBpKSkgPT09IDEpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBib2FyZC5cbiAgICAgKiBAcGFyYW0gd3JhcCBXaGV0aGVyIG9yIG5vdCB0byBwcm92aWRlIGEgYm9yZGVyIGZvciB0aGUgYm9hcmQuXG4gICAgICogQHBhcmFtIGxhYmVsWCBXaGV0aGVyIG9yIG5vdCB0byBsYWJlbCB4LlxuICAgICAqIEBwYXJhbSBsYWJlbFkgV2hldGhlciBvciBub3QgdG8gbGFiZWwgeS5cbiAgICAgKiBAcGFyYW0gc3ltYm9scyBUaGUgc3ltYm9scyB0byB1c2UgYXMgYm9hcmQgcGllY2VzLlxuICAgICAqIEBwYXJhbSBjb2xvdXIgV2hldGhlciBvciBub3QgdG8gY29sb3VyIHRoZSBwaWVjZXMuXG4gICAgICogQHJldHVybnMgVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgdG9TdHJpbmcoXG4gICAgICAgIHdyYXA6IGJvb2xlYW4gPSB0cnVlLFxuICAgICAgICBsYWJlbFg6IGJvb2xlYW4gPSB0cnVlLFxuICAgICAgICBsYWJlbFk6IGJvb2xlYW4gPSB0cnVlLFxuICAgICAgICBzeW1ib2xzOiBzdHJpbmdbXSA9IFtcIlhcIiwgXCJPXCJdLFxuICAgICAgICBjb2xvdXI6IGJvb2xlYW4gPSB0cnVlLFxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGlmIChzeW1ib2xzLmxlbmd0aCAhPT0gdGhpcy5udW1iZXJPZlBsYXllckJvYXJkcylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRvbyBtYW55IHN5bWJvbHMuXCIpO1xuXG4gICAgICAgIGNvbnN0IHN5bWJvbExlbmd0aCA9IHN5bWJvbHNbMF0hLmxlbmd0aDtcblxuICAgICAgICBpZiAoc3ltYm9scy5zb21lKChzKSA9PiBzLmxlbmd0aCAhPT0gc3ltYm9sTGVuZ3RoKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlN5bWJvbHMgbXVzdCBiZSB0aGUgc2FtZSBsZW5ndGguXCIpO1xuXG4gICAgICAgIGNvbnN0IG1hdGNoQ2VsbFNwYWNlID0gbmV3IFJlZ0V4cChgLnske3N5bWJvbExlbmd0aCArIDJ9fWAsIFwiZ3VcIik7XG4gICAgICAgIGNvbnN0IGFscGhhYmV0ID0gXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XCI7XG4gICAgICAgIGNvbnN0IHhMYWJlbHMgPSBsYWJlbFhcbiAgICAgICAgICAgID8gYCR7YWxwaGFiZXQuc2xpY2UoMCwgdGhpcy5ib2FyZFdpZHRoKVxuICAgICAgICAgICAgICAgIC5zcGxpdChcIlwiKVxuICAgICAgICAgICAgICAgIC5tYXAoKGxldHRlcikgPT4gYCAke2xldHRlci5wYWRTdGFydChzeW1ib2xMZW5ndGgpfSBgKVxuICAgICAgICAgICAgICAgIC5qb2luKFwiXCIpXG4gICAgICAgICAgICAgICAgLm1hdGNoKG1hdGNoQ2VsbFNwYWNlKSFcbiAgICAgICAgICAgICAgICAuam9pbihcIiBcIilcbiAgICAgICAgICAgICAgICAucGFkU3RhcnQoNCAqIHRoaXMuYm9hcmRXaWR0aCAtIDEgKyBOdW1iZXIod3JhcCkgKyBOdW1iZXIobGFiZWxZKSlcbiAgICAgICAgICAgIH1cXG5gXG4gICAgICAgICAgICA6IFwiXCI7XG4gICAgICAgIGNvbnN0IHRvcEJvcmRlciA9IHdyYXBcbiAgICAgICAgICAgID8gYCR7bGFiZWxZID8gXCIgXCIgOiBcIlwifSR7R3JpZExpbmVzLlRvcExlZnR9JHtHcmlkTGluZXMuSG9yaXpvbnRhbFxuICAgICAgICAgICAgICAgIC5yZXBlYXQodGhpcy5ib2FyZFdpZHRoICogKHN5bWJvbExlbmd0aCArIDIpKVxuICAgICAgICAgICAgICAgIC5tYXRjaChtYXRjaENlbGxTcGFjZSkhXG4gICAgICAgICAgICAgICAgLmpvaW4oR3JpZExpbmVzLlRUb3ApfSR7R3JpZExpbmVzLlRvcFJpZ2h0fVxcbmBcbiAgICAgICAgICAgIDogXCJcIjtcbiAgICAgICAgY29uc3QgYm90dG9tQm9yZGVyID0gd3JhcFxuICAgICAgICAgICAgPyBgJHtsYWJlbFkgPyBcIiBcIiA6IFwiXCJ9JHtHcmlkTGluZXMuQm90dG9tTGVmdH0ke0dyaWRMaW5lcy5Ib3Jpem9udGFsXG4gICAgICAgICAgICAgICAgLnJlcGVhdCh0aGlzLmJvYXJkV2lkdGggKiAoc3ltYm9sTGVuZ3RoICsgMikpXG4gICAgICAgICAgICAgICAgLm1hdGNoKG1hdGNoQ2VsbFNwYWNlKSFcbiAgICAgICAgICAgICAgICAuam9pbihHcmlkTGluZXMuVEJvdHRvbSl9JHtHcmlkTGluZXMuQm90dG9tUmlnaHR9YFxuICAgICAgICAgICAgOiBcIlwiO1xuICAgICAgICBjb25zdCByb3dTZXBhcmF0b3IgPSBgJHtsYWJlbFkgPyBcIiBcIiA6IFwiXCJ9JHt3cmFwID8gR3JpZExpbmVzLlRMZWZ0IDogXCJcIn0ke0dyaWRMaW5lcy5Ib3Jpem9udGFsXG4gICAgICAgICAgICAucmVwZWF0KHRoaXMuYm9hcmRXaWR0aCAqIChzeW1ib2xMZW5ndGggKyAyKSlcbiAgICAgICAgICAgIC5tYXRjaChtYXRjaENlbGxTcGFjZSkhXG4gICAgICAgICAgICAuam9pbihHcmlkTGluZXMuQ3Jvc3MpfSR7d3JhcCA/IEdyaWRMaW5lcy5UUmlnaHQgOiBcIlwifVxcbmA7XG4gICAgICAgIGNvbnN0IHJvd3M6IHN0cmluZ1tdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCB0aGlzLmJvYXJkSGVpZ2h0OyB5KyspIHtcbiAgICAgICAgICAgIGNvbnN0IHlMYWJlbCA9IGxhYmVsWSA/IGAke3kgKyAxfWAgOiBcIlwiO1xuICAgICAgICAgICAgY29uc3QgbGVmdEJvcmRlciA9IHdyYXAgPyBHcmlkTGluZXMuVmVydGljYWwgOiBcIlwiO1xuICAgICAgICAgICAgY29uc3QgcmlnaHRCb3JkZXIgPSB3cmFwID8gR3JpZExpbmVzLlZlcnRpY2FsIDogXCJcIjtcbiAgICAgICAgICAgIGxldCByb3cgPSBgJHt5TGFiZWx9JHtsZWZ0Qm9yZGVyfWA7XG5cbiAgICAgICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgdGhpcy5ib2FyZFdpZHRoOyB4KyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsID0geyB4LCB5IH07XG4gICAgICAgICAgICAgICAgY29uc3QgYmFyID0geCA9PT0gdGhpcy5ib2FyZFdpZHRoIC0gMSA/IFwiXCIgOiBHcmlkTGluZXMuVmVydGljYWw7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbE9jY3VwaWVyID0gdGhpcy5jZWxsT2NjdXBpZXIoY2VsbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2VsbE9jY3VwaWVyID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdyArPSBgICR7XCIgXCIucmVwZWF0KHN5bWJvbExlbmd0aCl9ICR7YmFyfWA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcm93ICs9IGAgJHtjb2xvdXIgPyBgXFx4MWJbJHtbOTEsIDkzXVtjZWxsT2NjdXBpZXJdIX1tYCA6IFwiXCJ9YCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtzeW1ib2xzW2NlbGxPY2N1cGllcl19YCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtjb2xvdXIgPyBcIlxceDFiWzBtXCIgOiBcIlwifSAke2Jhcn1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJvd3MucHVzaChgJHtyb3d9JHtyaWdodEJvcmRlcn1cXG5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBgJHt4TGFiZWxzfSR7dG9wQm9yZGVyfSR7cm93cy5qb2luKHJvd1NlcGFyYXRvcil9JHtib3R0b21Cb3JkZXJ9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gcGxheWVyIGhhcyBhIGxpbmUgb2YgcGllY2VzIG9uIHRoZSBib2FyZC5cbiAgICAgKiBAcGFyYW0gcGxheWVySWQgVGhlIElEIG9mIHRoZSBwbGF5ZXIuXG4gICAgICogQHBhcmFtIGxlbmd0aCBUaGUgbnVtYmVyIG9mIHBpZWNlcyBuZWVkZWQuXG4gICAgICogQHBhcmFtIG1heEdhcHMgVGhlIG51bWJlciBvZiBnYXBzIGFsbG93ZWQgZm9yIGEgbGluZSB0byBiZSB2YWxpZC4gRGVmYXVsdHMgdG8gMC5cbiAgICAgKiBAcmV0dXJucyBIb3cgbWFueSBsaW5lcyBleGlzdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzTGluZShwbGF5ZXJJZDogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbWF4R2FwczogbnVtYmVyID0gMCk6IG51bWJlciB7XG4gICAgICAgIGlmIChsZW5ndGggPiBNYXRoLm1heCh0aGlzLmJvYXJkV2lkdGgsIHRoaXMuYm9hcmRIZWlnaHQpKVxuICAgICAgICAgICAgcmV0dXJuIDA7XG5cbiAgICAgICAgY29uc3QgRElSRUNUSU9OUzogW1Bvc2l0aW9uLCBQb3NpdGlvbiwgUG9zaXRpb24sIFBvc2l0aW9uXSA9IFt7IHg6IDEsIHk6IDAgfSwgeyB4OiAwLCB5OiAxIH0sIHsgeDogMSwgeTogMSB9LCB7IHg6IDEsIHk6IC0xIH1dO1xuICAgICAgICBsZXQgbGluZUNvdW50ID0gMDtcbiAgICAgICAgbGV0IGdhcHM6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzAsIDAsIDAsIDBdO1xuICAgICAgICBsZXQgbGVuZ3RoczogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbMCwgMCwgMCwgMF07XG4gICAgICAgIGNvbnN0IGNoZWNrQ2VsbCA9ICh4OiBudW1iZXIsIHk6IG51bWJlciwgZGlyZWN0aW9uOiAwIHwgMSB8IDIgfCAzKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBjZWxsID0geyB4LCB5IH0gYXMgUG9zaXRpb247XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRQb3NpdGlvbihjZWxsKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxPY2N1cGllciA9IHRoaXMuY2VsbE9jY3VwaWVyKGNlbGwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNlbGxPY2N1cGllciA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgZ2Fwc1tkaXJlY3Rpb25dKys7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2VsbE9jY3VwaWVyID09PSBwbGF5ZXJJZClcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3Roc1tkaXJlY3Rpb25dKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCB0aGlzLmJvYXJkV2lkdGg7IHgrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCB0aGlzLmJvYXJkSGVpZ2h0OyB5KyspIHtcbiAgICAgICAgICAgICAgICBnYXBzID0gWzAsIDAsIDAsIDBdO1xuICAgICAgICAgICAgICAgIGxlbmd0aHMgPSBbMCwgMCwgMCwgMF07XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMCBhcyAwIHwgMSB8IDIgfCAzOyBqIDwgNDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2Fwc1tqXSA+IG1heEdhcHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrQ2VsbCh4ICsgaSAqIERJUkVDVElPTlNbal0ueCwgeSArIGkgKiBESVJFQ1RJT05TW2pdLnksIGopO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuZ3Roc1tqXSA9PT0gbGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVDb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxpbmVDb3VudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgYml0IGluZGV4IGZyb20gaXRzIGNvb3JkaW5hdGVzIGFuZCBwbGF5ZXIgSUQuXG4gICAgICogQHBhcmFtIG1vdmUgVGhlIGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSBwbGF5ZXJJZCBUaGUgcGxheWVyIElELlxuICAgICAqIEByZXR1cm5zIFRoZSBiaXQgaW5kZXguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldEJpdEluZGV4KG1vdmU6IFBvc2l0aW9uLCBwbGF5ZXJJZDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgbW92ZUluZGV4ID0gdGhpcy5nZXRJbmRleChtb3ZlKTtcbiAgICAgICAgY29uc3QgYml0Qm9hcmRNb3ZlSW5kZXggPSBtb3ZlSW5kZXggKyB0aGlzLmJvYXJkV2lkdGggKiB0aGlzLmJvYXJkSGVpZ2h0ICogcGxheWVySWQ7XG5cbiAgICAgICAgcmV0dXJuIGJpdEJvYXJkTW92ZUluZGV4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgQml0Qm9hcmQgY29udGFpbmluZyBvbmx5IHRoZSBwbGF5ZXIncyBiaXRzLlxuICAgICAqIEBwYXJhbSBwbGF5ZXJJZCBUaGUgcGxheWVyJ3MgSUQuXG4gICAgICogQHJldHVybnMgVGhlIHBsYXllcidzIGJpdHMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFBsYXllckJvYXJkKHBsYXllcklkOiBudW1iZXIpOiBUIHtcbiAgICAgICAgY29uc3QgdG90YWxCaXRzID0gKHRoaXMuYml0Qm9hcmQgaW5zdGFuY2VvZiBMb25nSW50Qml0Qm9hcmQgPyB0aGlzLmJpdEJvYXJkLmRhdGEud29yZENvdW50IDogMSkgKiAzMjtcbiAgICAgICAgY29uc3QgYm9hcmRTaXplID0gdGhpcy5ib2FyZFdpZHRoICogdGhpcy5ib2FyZEhlaWdodDtcblxuICAgICAgICByZXR1cm4gdGhpcy5iaXRCb2FyZC5sZWZ0U2hpZnQodG90YWxCaXRzIC0gYm9hcmRTaXplICogKHBsYXllcklkICsgMSkpLnJpZ2h0U2hpZnQodG90YWxCaXRzIC0gYm9hcmRTaXplKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgYml0IGluZGV4IGZyb20gaXRzIGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSBtb3ZlIFRoZSBjb29yZGluYXRlcy5cbiAgICAgKiBAcmV0dXJucyBUaGUgYml0IGluZGV4LlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0SW5kZXgobW92ZTogUG9zaXRpb24pOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5ib2FyZFdpZHRoICogbW92ZS55ICsgbW92ZS54O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIG1vdmUgaXMgdmFsaWQgZm9yIHRoZSBnaXZlbiBib2FyZC5cbiAgICAgKiBEb2VzIG5vdCBjaGVjayBpZiB0aGF0IGNlbGwgaXMgYWxyZWFkeSBvY2N1cGllZC5cbiAgICAgKiBAcGFyYW0gcG9zaXRpb24gVGhlIHBvc2l0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoYXQgY2VsbCBleGlzdHMgb24gdGhlIGJvYXJkLlxuICAgICAqL1xuICAgIHByaXZhdGUgaXNWYWxpZFBvc2l0aW9uKHBvc2l0aW9uOiBQb3NpdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcG9zaXRpb24ueCA+PSAwICYmIHBvc2l0aW9uLnggPCB0aGlzLmJvYXJkV2lkdGggJiYgcG9zaXRpb24ueSA+PSAwICYmIHBvc2l0aW9uLnkgPCB0aGlzLmJvYXJkSGVpZ2h0O1xuICAgIH1cbn1cbiJdfQ==
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmFzZS9ib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFdBQVcsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRCxPQUFPLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUM3QyxPQUFPLGVBQWUsTUFBTSxnQ0FBZ0MsQ0FBQztBQXNCN0QsK0JBQStCO0FBQy9CLE1BQU0sQ0FBQyxPQUFPLE9BQWdCLEtBQUs7SUFDL0IsOENBQThDO0lBQzNCLFFBQVEsQ0FBSTtJQUUvQiw4QkFBOEI7SUFDWCxVQUFVLENBQVM7SUFFdEMsK0JBQStCO0lBQ1osV0FBVyxDQUFTO0lBRXZDLHdCQUF3QjtJQUNMLEtBQUssR0FBYSxFQUFFLENBQUM7SUFFeEMsK0VBQStFO0lBQzlELG9CQUFvQixDQUFTO0lBRTlDLHNEQUFzRDtJQUNyQyxjQUFjLENBQVM7SUFLeEM7Ozs7OztPQU1HO0lBQ0gsWUFBc0IsS0FBYSxFQUFFLE1BQWMsRUFBRSxtQkFBMkIsQ0FBQyxFQUFFLGtCQUEwQixDQUFDO1FBQzFHLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxlQUFlLENBQUM7UUFDbEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFFM0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElB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O1FBQ3JDLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsWUFBWSxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3JHLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUVyRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssUUFBUSxDQUFDLElBQWM7UUFDM0IsT0FBTyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxlQUFlLENBQUMsUUFBa0I7UUFDdEMsT0FBTyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQy9HLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIEJpdEJvYXJkIGZyb20gXCIuLi9iaXRCb2FyZC9iaXRCb2FyZC5qc1wiO1xuaW1wb3J0IEludEJpdEJvYXJkIGZyb20gXCIuLi9iaXRCb2FyZC9pbnRCaXRCb2FyZC5qc1wiO1xuaW1wb3J0IExvbmdJbnQgZnJvbSBcIi4uL2JpdEJvYXJkL2xvbmdJbnQuanNcIjtcbmltcG9ydCBMb25nSW50Qml0Qm9hcmQgZnJvbSBcIi4uL2JpdEJvYXJkL2xvbmdJbnRCaXRCb2FyZC5qc1wiO1xuXG5leHBvcnQgdHlwZSBQb3NpdGlvbiA9IHtcbiAgICB5OiBudW1iZXI7XG4gICAgeDogbnVtYmVyO1xufTtcblxuLyoqIERlZmluZXMgdGhlIGNoYXJhY3RlcnMgdXNlZCB0byBkcmF3IGEgZ3JpZC4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIEdyaWRMaW5lcyB7XG4gICAgSG9yaXpvbnRhbCA9IFwiXFx1MjUwMFwiLFxuICAgIFZlcnRpY2FsID0gXCJcXHUyNTAyXCIsXG4gICAgVG9wTGVmdCA9IFwiXFx1MjUwQ1wiLFxuICAgIFRvcFJpZ2h0ID0gXCJcXHUyNTEwXCIsXG4gICAgQm90dG9tTGVmdCA9IFwiXFx1MjUxNFwiLFxuICAgIEJvdHRvbVJpZ2h0ID0gXCJcXHUyNTE4XCIsXG4gICAgVExlZnQgPSBcIlxcdTI1MUNcIixcbiAgICBUUmlnaHQgPSBcIlxcdTI1MjRcIixcbiAgICBUVG9wID0gXCJcXHUyNTJDXCIsXG4gICAgVEJvdHRvbSA9IFwiXFx1MjUzNFwiLFxuICAgIENyb3NzID0gXCJcXHUyNTNDXCIsXG59XG5cbi8qKiBSZXByZXNlbnRzIGEgZ2FtZSBib2FyZC4gKi9cbmV4cG9ydCBkZWZhdWx0IGFic3RyYWN0IGNsYXNzIEJvYXJkPFQgZXh0ZW5kcyBCaXRCb2FyZCA9IEJpdEJvYXJkPiB7XG4gICAgLyoqIENvbnRhaW5zIHRoZSBkYXRhIHN0b3JlZCBpbiBhIEJpdEJvYXJkLiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBiaXRCb2FyZDogVDtcblxuICAgIC8qKiBUaGUgd2lkdGggb2YgdGhlIGJvYXJkLiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBib2FyZFdpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogVGhlIGhlaWdodCBvZiB0aGUgYm9hcmQuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGJvYXJkSGVpZ2h0OiBudW1iZXI7XG5cbiAgICAvKiogQSBzdGFjayBvZiBtb3Zlcy4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW92ZXM6IG51bWJlcltdID0gW107XG5cbiAgICAvKiogSG93IG1hbnkgYm9hcmRzIHRoZXJlIGFyZSByZXByZXNlbnRpbmcgcGxheWVyIHBvc2l0aW9ucyAobW9zdCBsaWtlbHkgMikuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBudW1iZXJPZlBsYXllckJvYXJkczogbnVtYmVyO1xuXG4gICAgLyoqIE51bWJlciBvZiBib2FyZHMgaW4gdG90YWwgKG1vc3QgbGlrZWx5IGFsc28gMikuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBudW1iZXJPZkJvYXJkczogbnVtYmVyO1xuXG4gICAgLyoqIFRoZSBib2FyZCBzdGF0ZXMgd2hpY2ggcmVwcmVzZW50IGEgd2lubmluZyBzdGF0ZS4gKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgd2lubmluZ1N0YXRlczogVFtdO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBCb2FyZC5cbiAgICAgKiBAcGFyYW0gd2lkdGggVGhlIHdpZHRoIG9mIHRoZSBib2FyZC5cbiAgICAgKiBAcGFyYW0gaGVpZ2h0IFRoZSBoZWlnaHQgb2YgdGhlIGJvYXJkLlxuICAgICAqIEBwYXJhbSBwbGF5ZXJCb2FyZENvdW50IEhvdyBtYW55IGJvYXJkcyB0aGVyZSBhcmUgcmVwcmVzZW50aW5nIHBsYXllciBwb3NpdGlvbnMgKG1vc3QgbGlrZWx5IDIpLlxuICAgICAqIEBwYXJhbSBleHRyYUJvYXJkQ291bnQgTnVtYmVyIG9mIGV4dHJhIGJvYXJkcyAobW9zdCBsaWtlbHkgMCkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBwbGF5ZXJCb2FyZENvdW50OiBudW1iZXIgPSAyLCBleHRyYUJvYXJkQ291bnQ6IG51bWJlciA9IDApIHtcbiAgICAgICAgdGhpcy5ib2FyZFdpZHRoID0gd2lkdGg7XG4gICAgICAgIHRoaXMuYm9hcmRIZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIHRoaXMubnVtYmVyT2ZQbGF5ZXJCb2FyZHMgPSBwbGF5ZXJCb2FyZENvdW50O1xuICAgICAgICB0aGlzLm51bWJlck9mQm9hcmRzID0gdGhpcy5udW1iZXJPZlBsYXllckJvYXJkcyArIGV4dHJhQm9hcmRDb3VudDtcbiAgICAgICAgY29uc3QgdG90YWxCaXRzID0gdGhpcy5ib2FyZFdpZHRoICogdGhpcy5ib2FyZEhlaWdodCAqIHRoaXMubnVtYmVyT2ZCb2FyZHM7XG5cbiAgICAgICAgdGhpcy5iaXRCb2FyZCA9ICh0b3RhbEJpdHMgPiAzMiA/IG5ldyBMb25nSW50Qml0Qm9hcmQoTWF0aC5jZWlsKHRvdGFsQml0cyAvIDMyKSkgOiBuZXcgSW50Qml0Qm9hcmQoKSkgYXMgVDtcbiAgICB9XG5cbiAgICAvKiogQ2FsY3VsYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgYm9hcmQgaXMgZnVsbC4gKi9cbiAgICBwdWJsaWMgZ2V0IGlzRnVsbCgpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGlzRnVsbCA9ICh0aGlzLmJpdEJvYXJkIGluc3RhbmNlb2YgTG9uZ0ludEJpdEJvYXJkXG4gICAgICAgICAgICA/IG5ldyBMb25nSW50Qml0Qm9hcmQoTWF0aC5jZWlsKHRoaXMuYm9hcmRXaWR0aCAqIHRoaXMuYm9hcmRIZWlnaHQgLyAzMikpXG4gICAgICAgICAgICA6IG5ldyBJbnRCaXRCb2FyZCgpKSBhcyBUO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5udW1iZXJPZlBsYXllckJvYXJkczsgaSsrKVxuICAgICAgICAgICAgaXNGdWxsID0gaXNGdWxsLm9yKHRoaXMuZ2V0UGxheWVyQm9hcmQoaSkpO1xuICAgICAgICBjb25zdCBmdWxsVmFsdWUgPSB0aGlzLmJpdEJvYXJkIGluc3RhbmNlb2YgTG9uZ0ludEJpdEJvYXJkXG4gICAgICAgICAgICA/IG5ldyBMb25nSW50KFtcbiAgICAgICAgICAgICAgICAuLi5BcnJheTxudW1iZXI+KE1hdGguY2VpbCh0aGlzLmJvYXJkV2lkdGggKiB0aGlzLmJvYXJkSGVpZ2h0IC8gMzIpIC0gMSkuZmlsbCh+MCA+Pj4gMCksXG4gICAgICAgICAgICAgICAgMiAqKiAodGhpcy5ib2FyZFdpZHRoICogdGhpcy5ib2FyZEhlaWdodCAtIChNYXRoLmNlaWwodGhpcy5ib2FyZFdpZHRoICogdGhpcy5ib2FyZEhlaWdodCAvIDMyKSAtIDEpICogMzIpIC0gMSxcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgICA6IDIgKiogKHRoaXMuYm9hcmRXaWR0aCAqIHRoaXMuYm9hcmRIZWlnaHQpIC0gMTtcblxuICAgICAgICByZXR1cm4gaXNGdWxsLmVxdWFscyhmdWxsVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBDYWxjdWxhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBib2FyZCBpcyBlbXB0eS4gKi9cbiAgICBwdWJsaWMgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBpc0VtcHR5ID0gKHRoaXMuYml0Qm9hcmQgaW5zdGFuY2VvZiBMb25nSW50Qml0Qm9hcmRcbiAgICAgICAgICAgID8gbmV3IExvbmdJbnRCaXRCb2FyZChNYXRoLmNlaWwodGhpcy5ib2FyZFdpZHRoICogdGhpcy5ib2FyZEhlaWdodCAvIDMyKSlcbiAgICAgICAgICAgIDogbmV3IEludEJpdEJvYXJkKCkpIGFzIFQ7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm51bWJlck9mUGxheWVyQm9hcmRzOyBpKyspXG4gICAgICAgICAgICBpc0VtcHR5ID0gaXNFbXB0eS5vcih0aGlzLmdldFBsYXllckJvYXJkKGkpKTtcblxuICAgICAgICByZXR1cm4gaXNFbXB0eS5lcXVhbHMoMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB3aG8gdGhlIHdpbm5lciBpcy5cbiAgICAgKiBJZiB0aGUgZ2FtZSBpcyBub3Qgb3ZlciwgdGhlIG91dHB1dCBpcyBmYWxzZS5cbiAgICAgKiBJZiB0aGVyZSBpcyBhIHdpbm5lciwgdGhlIG91dHB1dCBpcyB0aGVpciBJRC5cbiAgICAgKiBJZiB0aGVyZSBpcyBhIGRyYXcsIHRoZSBvdXRwdXQgaXMgbnVsbC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHdpbm5lcigpOiAwIHwgMSB8IGZhbHNlIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHBsYXllck9uZUJvYXJkID0gdGhpcy5nZXRQbGF5ZXJCb2FyZCgwKTtcbiAgICAgICAgY29uc3QgcGxheWVyVHdvQm9hcmQgPSB0aGlzLmdldFBsYXllckJvYXJkKDEpO1xuXG4gICAgICAgIGZvciAoY29uc3Qgc3RhdGUgb2YgdGhpcy53aW5uaW5nU3RhdGVzKSB7XG4gICAgICAgICAgICBpZiAocGxheWVyT25lQm9hcmQuYW5kKHN0YXRlKS5lcXVhbHMoc3RhdGUpKVxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuXG4gICAgICAgICAgICBpZiAocGxheWVyVHdvQm9hcmQuYW5kKHN0YXRlKS5lcXVhbHMoc3RhdGUpKVxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNGdWxsKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBDYWxjdWxhdGVzIHdoaWNoIGNlbGxzIGFyZSBlbXB0eS4gKi9cbiAgICBwdWJsaWMgZ2V0IGVtcHR5Q2VsbHMoKTogUG9zaXRpb25bXSB7XG4gICAgICAgIGNvbnN0IGVtcHR5Q2VsbHM6IFBvc2l0aW9uW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IHRoaXMuYm9hcmRIZWlnaHQ7IHkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCB0aGlzLmJvYXJkV2lkdGg7IHgrKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNlbGxPY2N1cGllcih7IHgsIHkgfSkgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgIGVtcHR5Q2VsbHMucHVzaCh7IHgsIHkgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW1wdHlDZWxscztcbiAgICB9XG5cbiAgICAvKiogQ2FsY3VsYXRlcyB0aGUgaGV1cmlzdGljIHNjb3JlIGZvciBhIGdpdmVuIGJvYXJkIHN0YXRlLiAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXQgaGV1cmlzdGljKCk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIE1ha2VzIGEgbW92ZSBvbiB0aGUgYm9hcmQuXG4gICAgICogQHBhcmFtIG1vdmUgVGhlIHBvc2l0aW9uIG9mIHRoZSBtb3ZlLlxuICAgICAqIEBwYXJhbSBwbGF5ZXJJZCBUaGUgcGxheWVyIHdobydzIG1ha2luZyB0aGUgbW92ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWFrZU1vdmUobW92ZTogUG9zaXRpb24sIHBsYXllcklkOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYml0ID0gdGhpcy5nZXRCaXRJbmRleChtb3ZlLCBwbGF5ZXJJZCk7XG5cbiAgICAgICAgdGhpcy5tb3Zlcy5wdXNoKGJpdCk7XG4gICAgICAgIHRoaXMuYml0Qm9hcmQuc2V0Qml0KGJpdCk7XG4gICAgfVxuXG4gICAgLyoqIFJldmVyc2VzIHRoZSBsYXN0IG1vdmUuICovXG4gICAgcHVibGljIHVuZG9MYXN0TW92ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdE1vdmUgPSB0aGlzLm1vdmVzLnBvcCgpO1xuXG4gICAgICAgIGlmIChsYXN0TW92ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gbW92ZSB0byB1bmRvLlwiKTtcblxuICAgICAgICB0aGlzLmJpdEJvYXJkLmNsZWFyQml0KGxhc3RNb3ZlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBtb3ZlIGlzIHZhbGlkLlxuICAgICAqIEBwYXJhbSBtb3ZlIFRoZSBtb3ZlLlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IGl0J3MgdmFsaWQuXG4gICAgICovXG4gICAgcHVibGljIG1vdmVJc1ZhbGlkKG1vdmU6IFBvc2l0aW9uKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRQb3NpdGlvbihtb3ZlKSAmJiB0aGlzLmNlbGxPY2N1cGllcihtb3ZlKSA9PT0gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hpY2ggcGxheWVyIGlzIG9jY3VweWluZyBhIGdpdmVuIGNlbGwuXG4gICAgICogQHBhcmFtIGNlbGwgVGhlIGNlbGwgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMgSWYgdGhlIGNlbGwgaXMgZW1wdHksIHRoZSBvdXRwdXQgaXMgbnVsbCwgb3RoZXJ3aXNlIHRoZSBvdXRwdXQgaXMgdGhlIHBsYXllcidzIElELlxuICAgICAqL1xuICAgIHB1YmxpYyBjZWxsT2NjdXBpZXIoY2VsbDogUG9zaXRpb24pOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm51bWJlck9mUGxheWVyQm9hcmRzOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmJpdEJvYXJkLmdldEJpdCh0aGlzLmdldEJpdEluZGV4KGNlbGwsIGkpKSA9PT0gMSlcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJvYXJkLlxuICAgICAqIEBwYXJhbSB3cmFwIFdoZXRoZXIgb3Igbm90IHRvIHByb3ZpZGUgYSBib3JkZXIgZm9yIHRoZSBib2FyZC5cbiAgICAgKiBAcGFyYW0gbGFiZWxYIFdoZXRoZXIgb3Igbm90IHRvIGxhYmVsIHguXG4gICAgICogQHBhcmFtIGxhYmVsWSBXaGV0aGVyIG9yIG5vdCB0byBsYWJlbCB5LlxuICAgICAqIEBwYXJhbSBzeW1ib2xzIFRoZSBzeW1ib2xzIHRvIHVzZSBhcyBib2FyZCBwaWVjZXMuXG4gICAgICogQHBhcmFtIGNvbG91ciBXaGV0aGVyIG9yIG5vdCB0byBjb2xvdXIgdGhlIHBpZWNlcy5cbiAgICAgKiBAcmV0dXJucyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1N0cmluZyhcbiAgICAgICAgd3JhcDogYm9vbGVhbiA9IHRydWUsXG4gICAgICAgIGxhYmVsWDogYm9vbGVhbiA9IHRydWUsXG4gICAgICAgIGxhYmVsWTogYm9vbGVhbiA9IHRydWUsXG4gICAgICAgIHN5bWJvbHM6IHN0cmluZ1tdID0gW1wiWFwiLCBcIk9cIl0sXG4gICAgICAgIGNvbG91cjogYm9vbGVhbiA9IHRydWUsXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHN5bWJvbHMubGVuZ3RoICE9PSB0aGlzLm51bWJlck9mUGxheWVyQm9hcmRzKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVG9vIG1hbnkgc3ltYm9scy5cIik7XG5cbiAgICAgICAgY29uc3Qgc3ltYm9sTGVuZ3RoID0gc3ltYm9sc1swXSEubGVuZ3RoO1xuXG4gICAgICAgIGlmIChzeW1ib2xzLnNvbWUoKHMpID0+IHMubGVuZ3RoICE9PSBzeW1ib2xMZW5ndGgpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3ltYm9scyBtdXN0IGJlIHRoZSBzYW1lIGxlbmd0aC5cIik7XG5cbiAgICAgICAgY29uc3QgbWF0Y2hDZWxsU3BhY2UgPSBuZXcgUmVnRXhwKGAueyR7c3ltYm9sTGVuZ3RoICsgMn19YCwgXCJndVwiKTtcbiAgICAgICAgY29uc3QgYWxwaGFiZXQgPSBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcbiAgICAgICAgY29uc3QgeExhYmVscyA9IGxhYmVsWFxuICAgICAgICAgICAgPyBgJHthbHBoYWJldC5zbGljZSgwLCB0aGlzLmJvYXJkV2lkdGgpXG4gICAgICAgICAgICAgICAgLnNwbGl0KFwiXCIpXG4gICAgICAgICAgICAgICAgLm1hcCgobGV0dGVyKSA9PiBgICR7bGV0dGVyLnBhZFN0YXJ0KHN5bWJvbExlbmd0aCl9IGApXG4gICAgICAgICAgICAgICAgLmpvaW4oXCJcIilcbiAgICAgICAgICAgICAgICAubWF0Y2gobWF0Y2hDZWxsU3BhY2UpIVxuICAgICAgICAgICAgICAgIC5qb2luKFwiIFwiKVxuICAgICAgICAgICAgICAgIC5wYWRTdGFydCg0ICogdGhpcy5ib2FyZFdpZHRoIC0gMSArIE51bWJlcih3cmFwKSArIE51bWJlcihsYWJlbFkpKVxuICAgICAgICAgICAgfVxcbmBcbiAgICAgICAgICAgIDogXCJcIjtcbiAgICAgICAgY29uc3QgdG9wQm9yZGVyID0gd3JhcFxuICAgICAgICAgICAgPyBgJHtsYWJlbFkgPyBcIiBcIiA6IFwiXCJ9JHtHcmlkTGluZXMuVG9wTGVmdH0ke0dyaWRMaW5lcy5Ib3Jpem9udGFsXG4gICAgICAgICAgICAgICAgLnJlcGVhdCh0aGlzLmJvYXJkV2lkdGggKiAoc3ltYm9sTGVuZ3RoICsgMikpXG4gICAgICAgICAgICAgICAgLm1hdGNoKG1hdGNoQ2VsbFNwYWNlKSFcbiAgICAgICAgICAgICAgICAuam9pbihHcmlkTGluZXMuVFRvcCl9JHtHcmlkTGluZXMuVG9wUmlnaHR9XFxuYFxuICAgICAgICAgICAgOiBcIlwiO1xuICAgICAgICBjb25zdCBib3R0b21Cb3JkZXIgPSB3cmFwXG4gICAgICAgICAgICA/IGAke2xhYmVsWSA/IFwiIFwiIDogXCJcIn0ke0dyaWRMaW5lcy5Cb3R0b21MZWZ0fSR7R3JpZExpbmVzLkhvcml6b250YWxcbiAgICAgICAgICAgICAgICAucmVwZWF0KHRoaXMuYm9hcmRXaWR0aCAqIChzeW1ib2xMZW5ndGggKyAyKSlcbiAgICAgICAgICAgICAgICAubWF0Y2gobWF0Y2hDZWxsU3BhY2UpIVxuICAgICAgICAgICAgICAgIC5qb2luKEdyaWRMaW5lcy5UQm90dG9tKX0ke0dyaWRMaW5lcy5Cb3R0b21SaWdodH1gXG4gICAgICAgICAgICA6IFwiXCI7XG4gICAgICAgIGNvbnN0IHJvd1NlcGFyYXRvciA9IGAke2xhYmVsWSA/IFwiIFwiIDogXCJcIn0ke3dyYXAgPyBHcmlkTGluZXMuVExlZnQgOiBcIlwifSR7R3JpZExpbmVzLkhvcml6b250YWxcbiAgICAgICAgICAgIC5yZXBlYXQodGhpcy5ib2FyZFdpZHRoICogKHN5bWJvbExlbmd0aCArIDIpKVxuICAgICAgICAgICAgLm1hdGNoKG1hdGNoQ2VsbFNwYWNlKSFcbiAgICAgICAgICAgIC5qb2luKEdyaWRMaW5lcy5Dcm9zcyl9JHt3cmFwID8gR3JpZExpbmVzLlRSaWdodCA6IFwiXCJ9XFxuYDtcbiAgICAgICAgY29uc3Qgcm93czogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IHRoaXMuYm9hcmRIZWlnaHQ7IHkrKykge1xuICAgICAgICAgICAgY29uc3QgeUxhYmVsID0gbGFiZWxZID8gYCR7eSArIDF9YCA6IFwiXCI7XG4gICAgICAgICAgICBjb25zdCBsZWZ0Qm9yZGVyID0gd3JhcCA/IEdyaWRMaW5lcy5WZXJ0aWNhbCA6IFwiXCI7XG4gICAgICAgICAgICBjb25zdCByaWdodEJvcmRlciA9IHdyYXAgPyBHcmlkTGluZXMuVmVydGljYWwgOiBcIlwiO1xuICAgICAgICAgICAgbGV0IHJvdyA9IGAke3lMYWJlbH0ke2xlZnRCb3JkZXJ9YDtcblxuICAgICAgICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCB0aGlzLmJvYXJkV2lkdGg7IHgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGwgPSB7IHgsIHkgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBiYXIgPSB4ID09PSB0aGlzLmJvYXJkV2lkdGggLSAxID8gXCJcIiA6IEdyaWRMaW5lcy5WZXJ0aWNhbDtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsT2NjdXBpZXIgPSB0aGlzLmNlbGxPY2N1cGllcihjZWxsKTtcblxuICAgICAgICAgICAgICAgIGlmIChjZWxsT2NjdXBpZXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93ICs9IGAgJHtcIiBcIi5yZXBlYXQoc3ltYm9sTGVuZ3RoKX0gJHtiYXJ9YDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByb3cgKz0gYCAke2NvbG91ciA/IGBcXHgxYlske1s5MSwgOTNdW2NlbGxPY2N1cGllcl0hfW1gIDogXCJcIn1gICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGAke3N5bWJvbHNbY2VsbE9jY3VwaWVyXX1gICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGAke2NvbG91ciA/IFwiXFx4MWJbMG1cIiA6IFwiXCJ9ICR7YmFyfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm93cy5wdXNoKGAke3Jvd30ke3JpZ2h0Qm9yZGVyfVxcbmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGAke3hMYWJlbHN9JHt0b3BCb3JkZXJ9JHtyb3dzLmpvaW4ocm93U2VwYXJhdG9yKX0ke2JvdHRvbUJvcmRlcn1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgaWYgYSBnaXZlbiBwbGF5ZXIgaGFzIGEgbGluZSBvZiBwaWVjZXMgb24gdGhlIGJvYXJkLlxuICAgICAqIEBwYXJhbSBwbGF5ZXJJZCBUaGUgSUQgb2YgdGhlIHBsYXllci5cbiAgICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBudW1iZXIgb2YgcGllY2VzIG5lZWRlZC5cbiAgICAgKiBAcGFyYW0gbWF4R2FwcyBUaGUgbnVtYmVyIG9mIGdhcHMgYWxsb3dlZCBmb3IgYSBsaW5lIHRvIGJlIHZhbGlkLiBEZWZhdWx0cyB0byAwLlxuICAgICAqIEByZXR1cm5zIEhvdyBtYW55IGxpbmVzIGV4aXN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXNMaW5lKHBsYXllcklkOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBtYXhHYXBzOiBudW1iZXIgPSAwKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGxlbmd0aCA+IE1hdGgubWF4KHRoaXMuYm9hcmRXaWR0aCwgdGhpcy5ib2FyZEhlaWdodCkpXG4gICAgICAgICAgICByZXR1cm4gMDtcblxuICAgICAgICBjb25zdCBESVJFQ1RJT05TOiBbUG9zaXRpb24sIFBvc2l0aW9uLCBQb3NpdGlvbiwgUG9zaXRpb25dID0gW3sgeDogMSwgeTogMCB9LCB7IHg6IDAsIHk6IDEgfSwgeyB4OiAxLCB5OiAxIH0sIHsgeDogMSwgeTogLTEgfV07XG4gICAgICAgIGxldCBsaW5lQ291bnQgPSAwO1xuICAgICAgICBsZXQgZ2FwczogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbMCwgMCwgMCwgMF07XG4gICAgICAgIGxldCBsZW5ndGhzOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFswLCAwLCAwLCAwXTtcbiAgICAgICAgY29uc3QgY2hlY2tDZWxsID0gKHg6IG51bWJlciwgeTogbnVtYmVyLCBkaXJlY3Rpb246IDAgfCAxIHwgMiB8IDMpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGwgPSB7IHgsIHkgfSBhcyBQb3NpdGlvbjtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZFBvc2l0aW9uKGNlbGwpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbE9jY3VwaWVyID0gdGhpcy5jZWxsT2NjdXBpZXIoY2VsbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2VsbE9jY3VwaWVyID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICBnYXBzW2RpcmVjdGlvbl0rKztcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjZWxsT2NjdXBpZXIgPT09IHBsYXllcklkKVxuICAgICAgICAgICAgICAgICAgICBsZW5ndGhzW2RpcmVjdGlvbl0rKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IHRoaXMuYm9hcmRXaWR0aDsgeCsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IHRoaXMuYm9hcmRIZWlnaHQ7IHkrKykge1xuICAgICAgICAgICAgICAgIGdhcHMgPSBbMCwgMCwgMCwgMF07XG4gICAgICAgICAgICAgICAgbGVuZ3RocyA9IFswLCAwLCAwLCAwXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwIGFzIDAgfCAxIHwgMiB8IDM7IGogPCA0OyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnYXBzW2pdID4gbWF4R2FwcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tDZWxsKHggKyBpICogRElSRUNUSU9OU1tqXS54LCB5ICsgaSAqIERJUkVDVElPTlNbal0ueSwgaik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGhzW2pdID09PSBsZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZUNvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbGluZUNvdW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBiaXQgaW5kZXggZnJvbSBpdHMgY29vcmRpbmF0ZXMgYW5kIHBsYXllciBJRC5cbiAgICAgKiBAcGFyYW0gbW92ZSBUaGUgY29vcmRpbmF0ZXMuXG4gICAgICogQHBhcmFtIHBsYXllcklkIFRoZSBwbGF5ZXIgSUQuXG4gICAgICogQHJldHVybnMgVGhlIGJpdCBpbmRleC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0Qml0SW5kZXgobW92ZTogUG9zaXRpb24sIHBsYXllcklkOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBtb3ZlSW5kZXggPSB0aGlzLmdldEluZGV4KG1vdmUpO1xuICAgICAgICBjb25zdCBiaXRCb2FyZE1vdmVJbmRleCA9IG1vdmVJbmRleCArIHRoaXMuYm9hcmRXaWR0aCAqIHRoaXMuYm9hcmRIZWlnaHQgKiBwbGF5ZXJJZDtcblxuICAgICAgICByZXR1cm4gYml0Qm9hcmRNb3ZlSW5kZXg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBCaXRCb2FyZCBjb250YWluaW5nIG9ubHkgdGhlIHBsYXllcidzIGJpdHMuXG4gICAgICogQHBhcmFtIHBsYXllcklkIFRoZSBwbGF5ZXIncyBJRC5cbiAgICAgKiBAcmV0dXJucyBUaGUgcGxheWVyJ3MgYml0cy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0UGxheWVyQm9hcmQocGxheWVySWQ6IG51bWJlcik6IFQge1xuICAgICAgICBjb25zdCB0b3RhbEJpdHMgPSAodGhpcy5iaXRCb2FyZCBpbnN0YW5jZW9mIExvbmdJbnRCaXRCb2FyZCA/IHRoaXMuYml0Qm9hcmQuZGF0YS53b3JkQ291bnQgOiAxKSAqIDMyO1xuICAgICAgICBjb25zdCBib2FyZFNpemUgPSB0aGlzLmJvYXJkV2lkdGggKiB0aGlzLmJvYXJkSGVpZ2h0O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmJpdEJvYXJkLmxlZnRTaGlmdCh0b3RhbEJpdHMgLSBib2FyZFNpemUgKiAocGxheWVySWQgKyAxKSkucmlnaHRTaGlmdCh0b3RhbEJpdHMgLSBib2FyZFNpemUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBiaXQgaW5kZXggZnJvbSBpdHMgY29vcmRpbmF0ZXMuXG4gICAgICogQHBhcmFtIG1vdmUgVGhlIGNvb3JkaW5hdGVzLlxuICAgICAqIEByZXR1cm5zIFRoZSBiaXQgaW5kZXguXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRJbmRleChtb3ZlOiBQb3NpdGlvbik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmJvYXJkV2lkdGggKiBtb3ZlLnkgKyBtb3ZlLng7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgbW92ZSBpcyB2YWxpZCBmb3IgdGhlIGdpdmVuIGJvYXJkLlxuICAgICAqIERvZXMgbm90IGNoZWNrIGlmIHRoYXQgY2VsbCBpcyBhbHJlYWR5IG9jY3VwaWVkLlxuICAgICAqIEBwYXJhbSBwb3NpdGlvbiBUaGUgcG9zaXRpb24gdG8gY2hlY2suXG4gICAgICogQHJldHVybnMgV2hldGhlciBvciBub3QgdGhhdCBjZWxsIGV4aXN0cyBvbiB0aGUgYm9hcmQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc1ZhbGlkUG9zaXRpb24ocG9zaXRpb246IFBvc2l0aW9uKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBwb3NpdGlvbi54ID49IDAgJiYgcG9zaXRpb24ueCA8IHRoaXMuYm9hcmRXaWR0aCAmJiBwb3NpdGlvbi55ID49IDAgJiYgcG9zaXRpb24ueSA8IHRoaXMuYm9hcmRIZWlnaHQ7XG4gICAgfVxufVxuIl19
|
|
@@ -3,32 +3,32 @@ import { EventEmitter } from "eventemitter3";
|
|
|
3
3
|
import type { Position } from "./board.js";
|
|
4
4
|
export type PlayerType = "easyCPU" | "hardCPU" | "human" | "impossibleCPU" | "mediumCPU";
|
|
5
5
|
export type Algorithm = "alphabeta" | "minimax";
|
|
6
|
-
export type GameConstructorOptions = {
|
|
7
|
-
id
|
|
6
|
+
export type GameConstructorOptions<T> = {
|
|
7
|
+
id: T;
|
|
8
8
|
onEnd?: (winner: number | null) => Promise<void> | void;
|
|
9
9
|
onInvalidInput?: (position: Position) => Promise<void> | void;
|
|
10
|
-
renderer?: (controller: Controller) => Promise<void> | void;
|
|
10
|
+
renderer?: (controller: Controller<T>) => Promise<void> | void;
|
|
11
11
|
};
|
|
12
|
-
export type GameConstructor = {
|
|
13
|
-
new (playerOneType: PlayerType, playerTwoType: PlayerType, options
|
|
12
|
+
export type GameConstructor<T> = {
|
|
13
|
+
new (playerOneType: PlayerType, playerTwoType: PlayerType, options: GameConstructorOptions<T>): Controller<T>;
|
|
14
14
|
};
|
|
15
15
|
/**
|
|
16
16
|
* Decorator to check that the constructor type for the given class is correct.
|
|
17
17
|
* @param constructor The class to check.
|
|
18
18
|
*/
|
|
19
|
-
export declare function Game(constructor: GameConstructor): void;
|
|
19
|
+
export declare function Game<T>(constructor: GameConstructor<T>): void;
|
|
20
20
|
/** Represents a game controller. */
|
|
21
|
-
export default abstract class Controller extends EventEmitter<{
|
|
22
|
-
end: GameConstructorOptions["onEnd"];
|
|
23
|
-
input: GameConstructorOptions["onInvalidInput"];
|
|
24
|
-
invalidInput: GameConstructorOptions["onInvalidInput"];
|
|
21
|
+
export default abstract class Controller<T> extends EventEmitter<{
|
|
22
|
+
end: GameConstructorOptions<T>["onEnd"];
|
|
23
|
+
input: GameConstructorOptions<T>["onInvalidInput"];
|
|
24
|
+
invalidInput: GameConstructorOptions<T>["onInvalidInput"];
|
|
25
25
|
}> {
|
|
26
26
|
/** Contains the ID of the game. */
|
|
27
|
-
readonly gameID:
|
|
27
|
+
readonly gameID: T;
|
|
28
28
|
/** Contains the board. */
|
|
29
29
|
readonly board: Board;
|
|
30
30
|
/** Contains the view object. */
|
|
31
|
-
readonly render: Required<GameConstructorOptions
|
|
31
|
+
readonly render: Required<GameConstructorOptions<T>>["renderer"];
|
|
32
32
|
/** Contains the player objects. */
|
|
33
33
|
protected readonly players: Array<{
|
|
34
34
|
id: number;
|
|
@@ -43,7 +43,7 @@ export default abstract class Controller extends EventEmitter<{
|
|
|
43
43
|
* @param gameID The ID of the game.
|
|
44
44
|
* @param board The board.
|
|
45
45
|
*/
|
|
46
|
-
protected constructor(playerTypes: PlayerType[], board: Board, render: Controller["render"], gameID:
|
|
46
|
+
protected constructor(playerTypes: PlayerType[], board: Board, render: Controller<T>["render"], gameID: T, onEnd?: GameConstructorOptions<T>["onEnd"], onInvalidInput?: GameConstructorOptions<T>["onInvalidInput"]);
|
|
47
47
|
/** Gets the current player object. */
|
|
48
48
|
get currentPlayer(): {
|
|
49
49
|
id: number;
|
package/build/base/controller.js
CHANGED
|
@@ -28,9 +28,8 @@ export default class Controller extends EventEmitter {
|
|
|
28
28
|
// eslint-disable-next-line @typescript-eslint/max-params, require-jsdoc
|
|
29
29
|
constructor(playerTypes, board, render, gameID, onEnd, onInvalidInput) {
|
|
30
30
|
super();
|
|
31
|
-
this.gameID = gameID
|
|
31
|
+
this.gameID = gameID;
|
|
32
32
|
this.board = board;
|
|
33
|
-
this.board.setGameID(this.gameID);
|
|
34
33
|
this.players = playerTypes.map((playerType, id) => ({ id, playerType }));
|
|
35
34
|
this.render = render;
|
|
36
35
|
if (onEnd !== undefined)
|
|
@@ -170,4 +169,4 @@ export default class Controller extends EventEmitter {
|
|
|
170
169
|
this.nextTurn();
|
|
171
170
|
}
|
|
172
171
|
}
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlL2NvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWU3Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsSUFBSSxDQUFDLFdBQTRCO0lBQzdDLEtBQUssV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLE9BQU8sT0FBZ0IsVUFBVyxTQUFRLFlBSS9DO0lBQ0UsbUNBQW1DO0lBQ25CLE1BQU0sQ0FBVTtJQUVoQywwQkFBMEI7SUFDVixLQUFLLENBQVE7SUFFN0IsZ0NBQWdDO0lBQ2hCLE1BQU0sQ0FBK0M7SUFFckUsbUNBQW1DO0lBQ2hCLE9BQU8sQ0FBaUQ7SUFFM0UsNkNBQTZDO0lBQ3JDLGVBQWUsR0FBVyxDQUFDLENBQUM7SUFFcEM7Ozs7OztPQU1HO0lBQ0gsd0VBQXdFO0lBQ3hFLFlBQ0ksV0FBeUIsRUFDekIsS0FBWSxFQUNaLE1BQTRCLEVBQzVCLE1BQWUsRUFDZixLQUF1QyxFQUN2QyxjQUF5RDtRQUV6RCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxNQUFNLEdBQUcs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SSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUU5QixJQUFJLE1BQU0sS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztZQUV6QixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDO0NBZ0JKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgQm9hcmQgZnJvbSBcIi4vYm9hcmQuanNcIjtcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCJldmVudGVtaXR0ZXIzXCI7XG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uIH0gZnJvbSBcIi4vYm9hcmQuanNcIjtcblxuZXhwb3J0IHR5cGUgUGxheWVyVHlwZSA9IFwiZWFzeUNQVVwiIHwgXCJoYXJkQ1BVXCIgfCBcImh1bWFuXCIgfCBcImltcG9zc2libGVDUFVcIiB8IFwibWVkaXVtQ1BVXCI7XG5leHBvcnQgdHlwZSBBbGdvcml0aG0gPSBcImFscGhhYmV0YVwiIHwgXCJtaW5pbWF4XCI7XG5leHBvcnQgdHlwZSBHYW1lQ29uc3RydWN0b3JPcHRpb25zID0ge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIG9uRW5kPzogKHdpbm5lcjogbnVtYmVyIHwgbnVsbCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG4gICAgb25JbnZhbGlkSW5wdXQ/OiAocG9zaXRpb246IFBvc2l0aW9uKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcbiAgICByZW5kZXJlcj86IChjb250cm9sbGVyOiBDb250cm9sbGVyKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcbn07XG5leHBvcnQgdHlwZSBHYW1lQ29uc3RydWN0b3IgPSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItZnVuY3Rpb24tdHlwZVxuICAgIG5ldyAocGxheWVyT25lVHlwZTogUGxheWVyVHlwZSwgcGxheWVyVHdvVHlwZTogUGxheWVyVHlwZSwgb3B0aW9ucz86IEdhbWVDb25zdHJ1Y3Rvck9wdGlvbnMpOiBDb250cm9sbGVyO1xufTtcbi8qKlxuICogRGVjb3JhdG9yIHRvIGNoZWNrIHRoYXQgdGhlIGNvbnN0cnVjdG9yIHR5cGUgZm9yIHRoZSBnaXZlbiBjbGFzcyBpcyBjb3JyZWN0LlxuICogQHBhcmFtIGNvbnN0cnVjdG9yIFRoZSBjbGFzcyB0byBjaGVjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdhbWUoY29uc3RydWN0b3I6IEdhbWVDb25zdHJ1Y3Rvcik6IHZvaWQge1xuICAgIHZvaWQgY29uc3RydWN0b3I7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgZ2FtZSBjb250cm9sbGVyLiAqL1xuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgQ29udHJvbGxlciBleHRlbmRzIEV2ZW50RW1pdHRlcjx7XG4gICAgZW5kOiBHYW1lQ29uc3RydWN0b3JPcHRpb25zW1wib25FbmRcIl07XG4gICAgaW5wdXQ6IEdhbWVDb25zdHJ1Y3Rvck9wdGlvbnNbXCJvbkludmFsaWRJbnB1dFwiXTtcbiAgICBpbnZhbGlkSW5wdXQ6IEdhbWVDb25zdHJ1Y3Rvck9wdGlvbnNbXCJvbkludmFsaWRJbnB1dFwiXTtcbn0+IHtcbiAgICAvKiogQ29udGFpbnMgdGhlIElEIG9mIHRoZSBnYW1lLiAqL1xuICAgIHB1YmxpYyByZWFkb25seSBnYW1lSUQ6IHVua25vd247XG5cbiAgICAvKiogQ29udGFpbnMgdGhlIGJvYXJkLiAqL1xuICAgIHB1YmxpYyByZWFkb25seSBib2FyZDogQm9hcmQ7XG5cbiAgICAvKiogQ29udGFpbnMgdGhlIHZpZXcgb2JqZWN0LiAqL1xuICAgIHB1YmxpYyByZWFkb25seSByZW5kZXI6IFJlcXVpcmVkPEdhbWVDb25zdHJ1Y3Rvck9wdGlvbnM+W1wicmVuZGVyZXJcIl07XG5cbiAgICAvKiogQ29udGFpbnMgdGhlIHBsYXllciBvYmplY3RzLiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwbGF5ZXJzOiBBcnJheTx7IGlkOiBudW1iZXI7IHBsYXllclR5cGU6IFBsYXllclR5cGU7IH0+O1xuXG4gICAgLyoqIENvbnRhaW5zIHRoZSBJRCBvZiB0aGUgY3VycmVudCBwbGF5ZXIuICovXG4gICAgcHJpdmF0ZSBjdXJyZW50UGxheWVySWQ6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIENvbnRyb2xsZXIuXG4gICAgICogQHBhcmFtIHBsYXllclR5cGVzIFRoZSB0eXBlcyBvZiBwbGF5ZXIuXG4gICAgICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgb2JqZWN0LlxuICAgICAqIEBwYXJhbSBnYW1lSUQgVGhlIElEIG9mIHRoZSBnYW1lLlxuICAgICAqIEBwYXJhbSBib2FyZCBUaGUgYm9hcmQuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tYXgtcGFyYW1zLCByZXF1aXJlLWpzZG9jXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBwbGF5ZXJUeXBlczogUGxheWVyVHlwZVtdLFxuICAgICAgICBib2FyZDogQm9hcmQsXG4gICAgICAgIHJlbmRlcjogQ29udHJvbGxlcltcInJlbmRlclwiXSxcbiAgICAgICAgZ2FtZUlEOiB1bmtub3duLFxuICAgICAgICBvbkVuZD86IEdhbWVDb25zdHJ1Y3Rvck9wdGlvbnNbXCJvbkVuZFwiXSxcbiAgICAgICAgb25JbnZhbGlkSW5wdXQ/OiBHYW1lQ29uc3RydWN0b3JPcHRpb25zW1wib25JbnZhbGlkSW5wdXRcIl0sXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZ2FtZUlEID0gZ2FtZUlEID8/IERhdGUubm93KCkudG9TdHJpbmcoMTYpO1xuICAgICAgICB0aGlzLmJvYXJkID0gYm9hcmQ7XG4gICAgICAgIHRoaXMuYm9hcmQuc2V0R2FtZUlEKHRoaXMuZ2FtZUlEKTtcbiAgICAgICAgdGhpcy5wbGF5ZXJzID0gcGxheWVyVHlwZXMubWFwKChwbGF5ZXJUeXBlLCBpZCkgPT4gKHsgaWQsIHBsYXllclR5cGUgfSkpO1xuICAgICAgICB0aGlzLnJlbmRlciA9IHJlbmRlcjtcblxuICAgICAgICBpZiAob25FbmQgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRoaXMub24oXCJlbmRcIiwgb25FbmQpO1xuXG4gICAgICAgIGlmIChvbkludmFsaWRJbnB1dCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhpcy5vbihcImludmFsaWRJbnB1dFwiLCBvbkludmFsaWRJbnB1dCk7XG4gICAgfVxuXG4gICAgLyoqIEdldHMgdGhlIGN1cnJlbnQgcGxheWVyIG9iamVjdC4gKi9cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnRQbGF5ZXIoKTogeyBpZDogbnVtYmVyOyBwbGF5ZXJUeXBlOiBQbGF5ZXJUeXBlOyB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxheWVyc1t0aGlzLmN1cnJlbnRQbGF5ZXJJZF0hO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHRoZSBtYWluIGdhbWUgZmxvdy5cbiAgICAgKiBAcGFyYW0gYWxnb3JpdGhtIFRoZSBhbGdvcml0aG0gdG8gdXNlLlxuICAgICAqIEByZXR1cm5zIFRoZSB3aW5uZXIgb3IgbnVsbCBpbiB0aGUgZXZlbnQgb2YgYSB0aWUuXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHBsYXkoYWxnb3JpdGhtOiBBbGdvcml0aG0gPSBcImFscGhhYmV0YVwiKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVuZGVyKHRoaXMpO1xuICAgICAgICB0aGlzLm9uKFwiaW5wdXRcIiwgYXN5bmMgKG1vdmU6IFBvc2l0aW9uKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1ha2VNb3ZlKG1vdmUpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50UGxheWVyLnBsYXllclR5cGUgIT09IFwiaHVtYW5cIilcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1ha2VNb3ZlKGFsZ29yaXRobSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHdoaWxlICh0aGlzLmN1cnJlbnRQbGF5ZXIucGxheWVyVHlwZSAhPT0gXCJodW1hblwiICYmIHRoaXMuYm9hcmQud2lubmVyID09PSBmYWxzZSlcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1ha2VNb3ZlKGFsZ29yaXRobSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJvZyBzdGFuZGFyZCBtaW5pbWF4IGFsZ29yaXRobS4gTGVmdCBpbiBmb3IgcmVmZXJlbmNlLlxuICAgICAqIEBsaW5rIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbmltYXhcbiAgICAgKiBAcGFyYW0gZGVwdGggVGhlIGRlcHRoIG9mIHRoZSBhbGdvcml0aG0uXG4gICAgICogQHBhcmFtIG1heGltaXNpbmdQbGF5ZXIgV2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgcGxheWVyIGlzIHRoZSBtYXhpbWlzaW5nIHBsYXllci5cbiAgICAgKiBAcmV0dXJucyBUaGUgb3B0aW1hbCBtb3ZlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBtaW5pbWF4KGRlcHRoOiBudW1iZXIgPSBJbmZpbml0eSwgbWF4aW1pc2luZ1BsYXllcjogYm9vbGVhbiA9IHRydWUpOiB7IG1vdmU6IFBvc2l0aW9uOyBzY29yZTogbnVtYmVyOyB9IHtcbiAgICAgICAgY29uc3QgcGxheWVySWRzID0gWyh0aGlzLmN1cnJlbnRQbGF5ZXJJZCArIDEpICUgMiwgdGhpcy5jdXJyZW50UGxheWVySWRdIGFzIGNvbnN0O1xuXG4gICAgICAgIGlmIChkZXB0aCA9PT0gMCB8fCB0aGlzLmJvYXJkLndpbm5lciAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbW92ZTogeyB4OiBOYU4sIHk6IE5hTiB9LFxuICAgICAgICAgICAgICAgIHNjb3JlOiB0aGlzLmJvYXJkLmhldXJpc3RpYyAqICh0aGlzLmN1cnJlbnRQbGF5ZXJJZCA9PT0gMCA/IDEgOiAtMSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGJlc3RNb3ZlOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLm1pbmltYXg+ID0ge1xuICAgICAgICAgICAgbW92ZTogeyB4OiBOYU4sIHk6IE5hTiB9LFxuICAgICAgICAgICAgc2NvcmU6IG1heGltaXNpbmdQbGF5ZXIgPyAtSW5maW5pdHkgOiBJbmZpbml0eSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgeyBlbXB0eUNlbGxzIH0gPSB0aGlzLmJvYXJkO1xuXG4gICAgICAgIGZvciAoY29uc3QgbW92ZSBvZiBlbXB0eUNlbGxzKSB7XG4gICAgICAgICAgICB0aGlzLmJvYXJkLm1ha2VNb3ZlKG1vdmUsIHBsYXllcklkc1tOdW1iZXIobWF4aW1pc2luZ1BsYXllcildISk7XG4gICAgICAgICAgICBjb25zdCBzY29yZSA9ICg5IC0gZW1wdHlDZWxscy5sZW5ndGgpICogdGhpcy5taW5pbWF4KGRlcHRoIC0gMSwgIW1heGltaXNpbmdQbGF5ZXIpLnNjb3JlO1xuXG4gICAgICAgICAgICB0aGlzLmJvYXJkLnVuZG9MYXN0TW92ZSgpO1xuXG4gICAgICAgICAgICBpZiAobWF4aW1pc2luZ1BsYXllcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJlc3RTY29yZSA9IE1hdGgubWF4KHNjb3JlLCBiZXN0TW92ZS5zY29yZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoYmVzdFNjb3JlICE9PSBiZXN0TW92ZS5zY29yZSlcbiAgICAgICAgICAgICAgICAgICAgYmVzdE1vdmUgPSB7IG1vdmUsIHNjb3JlIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJlc3RTY29yZSA9IE1hdGgubWluKHNjb3JlLCBiZXN0TW92ZS5zY29yZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoYmVzdFNjb3JlICE9PSBiZXN0TW92ZS5zY29yZSlcbiAgICAgICAgICAgICAgICAgICAgYmVzdE1vdmUgPSB7IG1vdmUsIHNjb3JlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYmVzdE1vdmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG1pbmltYXggYWxnb3JpdGhtIHdpdGggYWxwaGEtYmV0YSBwcnVuaW5nLlxuICAgICAqIEBsaW5rIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbmltYXhcbiAgICAgKiBAcGFyYW0gZGVwdGggVGhlIGRlcHRoIG9mIHRoZSBhbGdvcml0aG0uXG4gICAgICogQHBhcmFtIGFscGhhIFRoZSBib3VuZHMgZm9yIHRoZSBhbHBoYS1iZXRhIHZhcmlhdGlvbiBvZiB0aGUgYWxnb3JpdGhtLlxuICAgICAqIEBwYXJhbSBiZXRhIFRoZSBib3VuZHMgZm9yIHRoZSBhbHBoYS1iZXRhIHZhcmlhdGlvbiBvZiB0aGUgYWxnb3JpdGhtLlxuICAgICAqIEBwYXJhbSBtYXhpbWlzaW5nUGxheWVyIFdoZXRoZXIgb3Igbm90IHRoZSBjdXJyZW50IHBsYXllciBpcyB0aGUgbWF4aW1pc2luZyBwbGF5ZXIuXG4gICAgICogQHJldHVybnMgVGhlIG9wdGltYWwgbW92ZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWxwaGFiZXRhKFxuICAgICAgICBkZXB0aDogbnVtYmVyID0gSW5maW5pdHksXG4gICAgICAgIGFscGhhOiBudW1iZXIgPSAtSW5maW5pdHksXG4gICAgICAgIGJldGE6IG51bWJlciA9IEluZmluaXR5LFxuICAgICAgICBtYXhpbWlzaW5nUGxheWVyOiBib29sZWFuID0gdHJ1ZSxcbiAgICApOiB7IG1vdmU6IFBvc2l0aW9uOyBzY29yZTogbnVtYmVyOyB9IHtcbiAgICAgICAgY29uc3QgcGxheWVySWRzID0gWyh0aGlzLmN1cnJlbnRQbGF5ZXJJZCArIDEpICUgMiwgdGhpcy5jdXJyZW50UGxheWVySWRdIGFzIGNvbnN0O1xuXG4gICAgICAgIGlmIChkZXB0aCA9PT0gMCB8fCB0aGlzLmJvYXJkLndpbm5lciAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbW92ZTogeyB4OiBOYU4sIHk6IE5hTiB9LFxuICAgICAgICAgICAgICAgIHNjb3JlOiB0aGlzLmJvYXJkLmhldXJpc3RpYyAqICh0aGlzLmN1cnJlbnRQbGF5ZXJJZCA9PT0gMCA/IDEgOiAtMSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGJlc3RNb3ZlOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmFscGhhYmV0YT4gPSB7XG4gICAgICAgICAgICBtb3ZlOiB7IHg6IE5hTiwgeTogTmFOIH0sXG4gICAgICAgICAgICBzY29yZTogbWF4aW1pc2luZ1BsYXllciA/IC1JbmZpbml0eSA6IEluZmluaXR5LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB7IGVtcHR5Q2VsbHMgfSA9IHRoaXMuYm9hcmQ7XG5cbiAgICAgICAgZm9yIChjb25zdCBtb3ZlIG9mIGVtcHR5Q2VsbHMpIHtcbiAgICAgICAgICAgIHRoaXMuYm9hcmQubWFrZU1vdmUobW92ZSwgcGxheWVySWRzW051bWJlcihtYXhpbWlzaW5nUGxheWVyKV0hKTtcbiAgICAgICAgICAgIGNvbnN0IHNjb3JlID0gKDkgLSBlbXB0eUNlbGxzLmxlbmd0aCkgKiB0aGlzLmFscGhhYmV0YShkZXB0aCAtIDEsIGFscGhhLCBiZXRhLCAhbWF4aW1pc2luZ1BsYXllcikuc2NvcmU7XG5cbiAgICAgICAgICAgIHRoaXMuYm9hcmQudW5kb0xhc3RNb3ZlKCk7XG5cbiAgICAgICAgICAgIGlmIChtYXhpbWlzaW5nUGxheWVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmVzdFNjb3JlID0gTWF0aC5tYXgoc2NvcmUsIGJlc3RNb3ZlLnNjb3JlKTtcblxuICAgICAgICAgICAgICAgIGlmIChiZXN0U2NvcmUgIT09IGJlc3RNb3ZlLnNjb3JlKVxuICAgICAgICAgICAgICAgICAgICBiZXN0TW92ZSA9IHsgbW92ZSwgc2NvcmUgfTtcblxuICAgICAgICAgICAgICAgIGlmIChiZXN0TW92ZS5zY29yZSA+IGJldGEpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICAgICAgYWxwaGEgPSBNYXRoLm1heChhbHBoYSwgYmVzdFNjb3JlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmVzdFNjb3JlID0gTWF0aC5taW4oc2NvcmUsIGJlc3RNb3ZlLnNjb3JlKTtcblxuICAgICAgICAgICAgICAgIGlmIChiZXN0U2NvcmUgIT09IGJlc3RNb3ZlLnNjb3JlKVxuICAgICAgICAgICAgICAgICAgICBiZXN0TW92ZSA9IHsgbW92ZSwgc2NvcmUgfTtcblxuICAgICAgICAgICAgICAgIGlmIChiZXN0TW92ZS5zY29yZSA8IGFscGhhKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgICAgICAgIGJldGEgPSBNYXRoLm1pbihiZXRhLCBiZXN0U2NvcmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJlc3RNb3ZlO1xuICAgIH1cblxuICAgIC8qKiBDaGFuZ2VzIHdoaWNoIHBsYXllcidzIHR1cm4gaXQgaXMuICovXG4gICAgcHJpdmF0ZSBuZXh0VHVybigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGxheWVySWQgPSAodGhpcy5jdXJyZW50UGxheWVySWQgKyAxKSAlIHRoaXMucGxheWVycy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBtb3ZlLlxuICAgICAqIEBwYXJhbSBpbnB1dCBFaXRoZXIgdGhlIGFsZ29yaXRobSB0byB1c2UgdG8gY2FsY3VsYXRlIHRoZSBtb3ZlIG9yIHRoZSBtb3ZlIGl0c2VsZi5cbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIG1ha2VNb3ZlKGlucHV0OiBBbGdvcml0aG0gfCBQb3NpdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0aGlzLmJvYXJkLm1ha2VNb3ZlKHRoaXMuZGV0ZXJtaW5lQ1BVTW92ZSh0aGlzLmN1cnJlbnRQbGF5ZXIucGxheWVyVHlwZSwgaW5wdXQpLCB0aGlzLmN1cnJlbnRQbGF5ZXIuaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFBsYXllci5wbGF5ZXJUeXBlICE9PSBcImh1bWFuXCIgfHwgIXRoaXMuYm9hcmQubW92ZUlzVmFsaWQoaW5wdXQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KFwiaW52YWxpZElucHV0XCIsIGlucHV0KTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ib2FyZC5tYWtlTW92ZShpbnB1dCwgdGhpcy5jdXJyZW50UGxheWVyLmlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMucmVuZGVyKHRoaXMpO1xuICAgICAgICBjb25zdCB7IHdpbm5lciB9ID0gdGhpcy5ib2FyZDtcblxuICAgICAgICBpZiAod2lubmVyICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5lbWl0KFwiZW5kXCIsIHdpbm5lcik7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubmV4dFR1cm4oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHRoZSBDUFUgbW92ZS5cbiAgICAgKiBAcGFyYW0gZGlmZmljdWx0eSBUaGUgZGlmZmljdWx0eSBvZiB0aGUgQUkuXG4gICAgICogQHBhcmFtIGFsZ29yaXRobSBUaGUgYWxnb3JpdGhtIHRvIHVzZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgbW92ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZGV0ZXJtaW5lQ1BVTW92ZShkaWZmaWN1bHR5OiBPbWl0PFBsYXllclR5cGUsIFwiaHVtYW5cIj4sIGFsZ29yaXRobT86IEFsZ29yaXRobSk6IFBvc2l0aW9uO1xuXG4gICAgLyoqXG4gICAgICogRmluZHMgdGhlIG9wdGltYWwgbW92ZS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucy5cbiAgICAgKiBAcmV0dXJucyBUaGUgb3B0aW1hbCBtb3ZlLlxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBmaW5kT3B0aW1hbE1vdmUob3B0aW9ucz86IHsgYWxnb3JpdGhtPzogQWxnb3JpdGhtOyBtYXhEZXB0aD86IG51bWJlcjsgcmFuZG9tTW92ZT86IFBvc2l0aW9uOyB9KTogUG9zaXRpb247XG59XG4iXX0=
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlL2NvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWU3Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsSUFBSSxDQUFJLFdBQStCO0lBQ25ELEtBQUssV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLE9BQU8sT0FBZ0IsVUFBYyxTQUFRLFlBSWxEO0lBQ0UsbUNBQW1DO0lBQ25CLE1BQU0sQ0FBSTtJQUUxQiwwQkFBMEI7SUFDVixLQUFLLENBQVE7SUFFN0IsZ0NBQWdDO0lBQ2hCLE1BQU0sQ0FBa0Q7SUFFeEUsbUNBQW1DO0lBQ2hCLE9BQU8sQ0FBaUQ7SUFFM0UsNkNBQTZDO0lBQ3JDLGVBQWUsR0FBVyxDQUFDLENBQUM7SUFFcEM7Ozs7OztPQU1HO0lBQ0gsd0VBQXdFO0lBQ3hFLFlBQ0ksV0FBeUIsRUFDekIsS0FBWSxFQUNaLE1BQStCLEVBQy9CLE1BQVMsRUFDVCxLQUEwQyxFQUMxQyxjQUE0RDtRQUU1RCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRXJCLElBQUksS0FBSyxLQUFLLFNBQVM7WUFDbkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFMUIsSUFBSSxjQUFjLEtBQUssU0FB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QUUsQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztZQUV6QixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDO0NBZ0JKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgQm9hcmQgZnJvbSBcIi4vYm9hcmQuanNcIjtcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCJldmVudGVtaXR0ZXIzXCI7XG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uIH0gZnJvbSBcIi4vYm9hcmQuanNcIjtcblxuZXhwb3J0IHR5cGUgUGxheWVyVHlwZSA9IFwiZWFzeUNQVVwiIHwgXCJoYXJkQ1BVXCIgfCBcImh1bWFuXCIgfCBcImltcG9zc2libGVDUFVcIiB8IFwibWVkaXVtQ1BVXCI7XG5leHBvcnQgdHlwZSBBbGdvcml0aG0gPSBcImFscGhhYmV0YVwiIHwgXCJtaW5pbWF4XCI7XG5leHBvcnQgdHlwZSBHYW1lQ29uc3RydWN0b3JPcHRpb25zPFQ+ID0ge1xuICAgIGlkOiBUO1xuICAgIG9uRW5kPzogKHdpbm5lcjogbnVtYmVyIHwgbnVsbCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG4gICAgb25JbnZhbGlkSW5wdXQ/OiAocG9zaXRpb246IFBvc2l0aW9uKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcbiAgICByZW5kZXJlcj86IChjb250cm9sbGVyOiBDb250cm9sbGVyPFQ+KSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcbn07XG5leHBvcnQgdHlwZSBHYW1lQ29uc3RydWN0b3I8VD4gPSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItZnVuY3Rpb24tdHlwZVxuICAgIG5ldyAocGxheWVyT25lVHlwZTogUGxheWVyVHlwZSwgcGxheWVyVHdvVHlwZTogUGxheWVyVHlwZSwgb3B0aW9uczogR2FtZUNvbnN0cnVjdG9yT3B0aW9uczxUPik6IENvbnRyb2xsZXI8VD47XG59O1xuLyoqXG4gKiBEZWNvcmF0b3IgdG8gY2hlY2sgdGhhdCB0aGUgY29uc3RydWN0b3IgdHlwZSBmb3IgdGhlIGdpdmVuIGNsYXNzIGlzIGNvcnJlY3QuXG4gKiBAcGFyYW0gY29uc3RydWN0b3IgVGhlIGNsYXNzIHRvIGNoZWNrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gR2FtZTxUPihjb25zdHJ1Y3RvcjogR2FtZUNvbnN0cnVjdG9yPFQ+KTogdm9pZCB7XG4gICAgdm9pZCBjb25zdHJ1Y3Rvcjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBnYW1lIGNvbnRyb2xsZXIuICovXG5leHBvcnQgZGVmYXVsdCBhYnN0cmFjdCBjbGFzcyBDb250cm9sbGVyPFQ+IGV4dGVuZHMgRXZlbnRFbWl0dGVyPHtcbiAgICBlbmQ6IEdhbWVDb25zdHJ1Y3Rvck9wdGlvbnM8VD5bXCJvbkVuZFwiXTtcbiAgICBpbnB1dDogR2FtZUNvbnN0cnVjdG9yT3B0aW9uczxUPltcIm9uSW52YWxpZElucHV0XCJdO1xuICAgIGludmFsaWRJbnB1dDogR2FtZUNvbnN0cnVjdG9yT3B0aW9uczxUPltcIm9uSW52YWxpZElucHV0XCJdO1xufT4ge1xuICAgIC8qKiBDb250YWlucyB0aGUgSUQgb2YgdGhlIGdhbWUuICovXG4gICAgcHVibGljIHJlYWRvbmx5IGdhbWVJRDogVDtcblxuICAgIC8qKiBDb250YWlucyB0aGUgYm9hcmQuICovXG4gICAgcHVibGljIHJlYWRvbmx5IGJvYXJkOiBCb2FyZDtcblxuICAgIC8qKiBDb250YWlucyB0aGUgdmlldyBvYmplY3QuICovXG4gICAgcHVibGljIHJlYWRvbmx5IHJlbmRlcjogUmVxdWlyZWQ8R2FtZUNvbnN0cnVjdG9yT3B0aW9uczxUPj5bXCJyZW5kZXJlclwiXTtcblxuICAgIC8qKiBDb250YWlucyB0aGUgcGxheWVyIG9iamVjdHMuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsYXllcnM6IEFycmF5PHsgaWQ6IG51bWJlcjsgcGxheWVyVHlwZTogUGxheWVyVHlwZTsgfT47XG5cbiAgICAvKiogQ29udGFpbnMgdGhlIElEIG9mIHRoZSBjdXJyZW50IHBsYXllci4gKi9cbiAgICBwcml2YXRlIGN1cnJlbnRQbGF5ZXJJZDogbnVtYmVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgQ29udHJvbGxlci5cbiAgICAgKiBAcGFyYW0gcGxheWVyVHlwZXMgVGhlIHR5cGVzIG9mIHBsYXllci5cbiAgICAgKiBAcGFyYW0gdmlldyBUaGUgdmlldyBvYmplY3QuXG4gICAgICogQHBhcmFtIGdhbWVJRCBUaGUgSUQgb2YgdGhlIGdhbWUuXG4gICAgICogQHBhcmFtIGJvYXJkIFRoZSBib2FyZC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21heC1wYXJhbXMsIHJlcXVpcmUtanNkb2NcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgICAgIHBsYXllclR5cGVzOiBQbGF5ZXJUeXBlW10sXG4gICAgICAgIGJvYXJkOiBCb2FyZCxcbiAgICAgICAgcmVuZGVyOiBDb250cm9sbGVyPFQ+W1wicmVuZGVyXCJdLFxuICAgICAgICBnYW1lSUQ6IFQsXG4gICAgICAgIG9uRW5kPzogR2FtZUNvbnN0cnVjdG9yT3B0aW9uczxUPltcIm9uRW5kXCJdLFxuICAgICAgICBvbkludmFsaWRJbnB1dD86IEdhbWVDb25zdHJ1Y3Rvck9wdGlvbnM8VD5bXCJvbkludmFsaWRJbnB1dFwiXSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nYW1lSUQgPSBnYW1lSUQ7XG4gICAgICAgIHRoaXMuYm9hcmQgPSBib2FyZDtcbiAgICAgICAgdGhpcy5wbGF5ZXJzID0gcGxheWVyVHlwZXMubWFwKChwbGF5ZXJUeXBlLCBpZCkgPT4gKHsgaWQsIHBsYXllclR5cGUgfSkpO1xuICAgICAgICB0aGlzLnJlbmRlciA9IHJlbmRlcjtcblxuICAgICAgICBpZiAob25FbmQgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRoaXMub24oXCJlbmRcIiwgb25FbmQpO1xuXG4gICAgICAgIGlmIChvbkludmFsaWRJbnB1dCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhpcy5vbihcImludmFsaWRJbnB1dFwiLCBvbkludmFsaWRJbnB1dCk7XG4gICAgfVxuXG4gICAgLyoqIEdldHMgdGhlIGN1cnJlbnQgcGxheWVyIG9iamVjdC4gKi9cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnRQbGF5ZXIoKTogeyBpZDogbnVtYmVyOyBwbGF5ZXJUeXBlOiBQbGF5ZXJUeXBlOyB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxheWVyc1t0aGlzLmN1cnJlbnRQbGF5ZXJJZF0hO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHRoZSBtYWluIGdhbWUgZmxvdy5cbiAgICAgKiBAcGFyYW0gYWxnb3JpdGhtIFRoZSBhbGdvcml0aG0gdG8gdXNlLlxuICAgICAqIEByZXR1cm5zIFRoZSB3aW5uZXIgb3IgbnVsbCBpbiB0aGUgZXZlbnQgb2YgYSB0aWUuXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHBsYXkoYWxnb3JpdGhtOiBBbGdvcml0aG0gPSBcImFscGhhYmV0YVwiKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVuZGVyKHRoaXMpO1xuICAgICAgICB0aGlzLm9uKFwiaW5wdXRcIiwgYXN5bmMgKG1vdmU6IFBvc2l0aW9uKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1ha2VNb3ZlKG1vdmUpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50UGxheWVyLnBsYXllclR5cGUgIT09IFwiaHVtYW5cIilcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1ha2VNb3ZlKGFsZ29yaXRobSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHdoaWxlICh0aGlzLmN1cnJlbnRQbGF5ZXIucGxheWVyVHlwZSAhPT0gXCJodW1hblwiICYmIHRoaXMuYm9hcmQud2lubmVyID09PSBmYWxzZSlcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1ha2VNb3ZlKGFsZ29yaXRobSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJvZyBzdGFuZGFyZCBtaW5pbWF4IGFsZ29yaXRobS4gTGVmdCBpbiBmb3IgcmVmZXJlbmNlLlxuICAgICAqIEBsaW5rIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbmltYXhcbiAgICAgKiBAcGFyYW0gZGVwdGggVGhlIGRlcHRoIG9mIHRoZSBhbGdvcml0aG0uXG4gICAgICogQHBhcmFtIG1heGltaXNpbmdQbGF5ZXIgV2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgcGxheWVyIGlzIHRoZSBtYXhpbWlzaW5nIHBsYXllci5cbiAgICAgKiBAcmV0dXJucyBUaGUgb3B0aW1hbCBtb3ZlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBtaW5pbWF4KGRlcHRoOiBudW1iZXIgPSBJbmZpbml0eSwgbWF4aW1pc2luZ1BsYXllcjogYm9vbGVhbiA9IHRydWUpOiB7IG1vdmU6IFBvc2l0aW9uOyBzY29yZTogbnVtYmVyOyB9IHtcbiAgICAgICAgY29uc3QgcGxheWVySWRzID0gWyh0aGlzLmN1cnJlbnRQbGF5ZXJJZCArIDEpICUgMiwgdGhpcy5jdXJyZW50UGxheWVySWRdIGFzIGNvbnN0O1xuXG4gICAgICAgIGlmIChkZXB0aCA9PT0gMCB8fCB0aGlzLmJvYXJkLndpbm5lciAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbW92ZTogeyB4OiBOYU4sIHk6IE5hTiB9LFxuICAgICAgICAgICAgICAgIHNjb3JlOiB0aGlzLmJvYXJkLmhldXJpc3RpYyAqICh0aGlzLmN1cnJlbnRQbGF5ZXJJZCA9PT0gMCA/IDEgOiAtMSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGJlc3RNb3ZlOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLm1pbmltYXg+ID0ge1xuICAgICAgICAgICAgbW92ZTogeyB4OiBOYU4sIHk6IE5hTiB9LFxuICAgICAgICAgICAgc2NvcmU6IG1heGltaXNpbmdQbGF5ZXIgPyAtSW5maW5pdHkgOiBJbmZpbml0eSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgeyBlbXB0eUNlbGxzIH0gPSB0aGlzLmJvYXJkO1xuXG4gICAgICAgIGZvciAoY29uc3QgbW92ZSBvZiBlbXB0eUNlbGxzKSB7XG4gICAgICAgICAgICB0aGlzLmJvYXJkLm1ha2VNb3ZlKG1vdmUsIHBsYXllcklkc1tOdW1iZXIobWF4aW1pc2luZ1BsYXllcildISk7XG4gICAgICAgICAgICBjb25zdCBzY29yZSA9ICg5IC0gZW1wdHlDZWxscy5sZW5ndGgpICogdGhpcy5taW5pbWF4KGRlcHRoIC0gMSwgIW1heGltaXNpbmdQbGF5ZXIpLnNjb3JlO1xuXG4gICAgICAgICAgICB0aGlzLmJvYXJkLnVuZG9MYXN0TW92ZSgpO1xuXG4gICAgICAgICAgICBpZiAobWF4aW1pc2luZ1BsYXllcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJlc3RTY29yZSA9IE1hdGgubWF4KHNjb3JlLCBiZXN0TW92ZS5zY29yZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoYmVzdFNjb3JlICE9PSBiZXN0TW92ZS5zY29yZSlcbiAgICAgICAgICAgICAgICAgICAgYmVzdE1vdmUgPSB7IG1vdmUsIHNjb3JlIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJlc3RTY29yZSA9IE1hdGgubWluKHNjb3JlLCBiZXN0TW92ZS5zY29yZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoYmVzdFNjb3JlICE9PSBiZXN0TW92ZS5zY29yZSlcbiAgICAgICAgICAgICAgICAgICAgYmVzdE1vdmUgPSB7IG1vdmUsIHNjb3JlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYmVzdE1vdmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG1pbmltYXggYWxnb3JpdGhtIHdpdGggYWxwaGEtYmV0YSBwcnVuaW5nLlxuICAgICAqIEBsaW5rIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbmltYXhcbiAgICAgKiBAcGFyYW0gZGVwdGggVGhlIGRlcHRoIG9mIHRoZSBhbGdvcml0aG0uXG4gICAgICogQHBhcmFtIGFscGhhIFRoZSBib3VuZHMgZm9yIHRoZSBhbHBoYS1iZXRhIHZhcmlhdGlvbiBvZiB0aGUgYWxnb3JpdGhtLlxuICAgICAqIEBwYXJhbSBiZXRhIFRoZSBib3VuZHMgZm9yIHRoZSBhbHBoYS1iZXRhIHZhcmlhdGlvbiBvZiB0aGUgYWxnb3JpdGhtLlxuICAgICAqIEBwYXJhbSBtYXhpbWlzaW5nUGxheWVyIFdoZXRoZXIgb3Igbm90IHRoZSBjdXJyZW50IHBsYXllciBpcyB0aGUgbWF4aW1pc2luZyBwbGF5ZXIuXG4gICAgICogQHJldHVybnMgVGhlIG9wdGltYWwgbW92ZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWxwaGFiZXRhKFxuICAgICAgICBkZXB0aDogbnVtYmVyID0gSW5maW5pdHksXG4gICAgICAgIGFscGhhOiBudW1iZXIgPSAtSW5maW5pdHksXG4gICAgICAgIGJldGE6IG51bWJlciA9IEluZmluaXR5LFxuICAgICAgICBtYXhpbWlzaW5nUGxheWVyOiBib29sZWFuID0gdHJ1ZSxcbiAgICApOiB7IG1vdmU6IFBvc2l0aW9uOyBzY29yZTogbnVtYmVyOyB9IHtcbiAgICAgICAgY29uc3QgcGxheWVySWRzID0gWyh0aGlzLmN1cnJlbnRQbGF5ZXJJZCArIDEpICUgMiwgdGhpcy5jdXJyZW50UGxheWVySWRdIGFzIGNvbnN0O1xuXG4gICAgICAgIGlmIChkZXB0aCA9PT0gMCB8fCB0aGlzLmJvYXJkLndpbm5lciAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbW92ZTogeyB4OiBOYU4sIHk6IE5hTiB9LFxuICAgICAgICAgICAgICAgIHNjb3JlOiB0aGlzLmJvYXJkLmhldXJpc3RpYyAqICh0aGlzLmN1cnJlbnRQbGF5ZXJJZCA9PT0gMCA/IDEgOiAtMSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGJlc3RNb3ZlOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmFscGhhYmV0YT4gPSB7XG4gICAgICAgICAgICBtb3ZlOiB7IHg6IE5hTiwgeTogTmFOIH0sXG4gICAgICAgICAgICBzY29yZTogbWF4aW1pc2luZ1BsYXllciA/IC1JbmZpbml0eSA6IEluZmluaXR5LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB7IGVtcHR5Q2VsbHMgfSA9IHRoaXMuYm9hcmQ7XG5cbiAgICAgICAgZm9yIChjb25zdCBtb3ZlIG9mIGVtcHR5Q2VsbHMpIHtcbiAgICAgICAgICAgIHRoaXMuYm9hcmQubWFrZU1vdmUobW92ZSwgcGxheWVySWRzW051bWJlcihtYXhpbWlzaW5nUGxheWVyKV0hKTtcbiAgICAgICAgICAgIGNvbnN0IHNjb3JlID0gKDkgLSBlbXB0eUNlbGxzLmxlbmd0aCkgKiB0aGlzLmFscGhhYmV0YShkZXB0aCAtIDEsIGFscGhhLCBiZXRhLCAhbWF4aW1pc2luZ1BsYXllcikuc2NvcmU7XG5cbiAgICAgICAgICAgIHRoaXMuYm9hcmQudW5kb0xhc3RNb3ZlKCk7XG5cbiAgICAgICAgICAgIGlmIChtYXhpbWlzaW5nUGxheWVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmVzdFNjb3JlID0gTWF0aC5tYXgoc2NvcmUsIGJlc3RNb3ZlLnNjb3JlKTtcblxuICAgICAgICAgICAgICAgIGlmIChiZXN0U2NvcmUgIT09IGJlc3RNb3ZlLnNjb3JlKVxuICAgICAgICAgICAgICAgICAgICBiZXN0TW92ZSA9IHsgbW92ZSwgc2NvcmUgfTtcblxuICAgICAgICAgICAgICAgIGlmIChiZXN0TW92ZS5zY29yZSA+IGJldGEpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICAgICAgYWxwaGEgPSBNYXRoLm1heChhbHBoYSwgYmVzdFNjb3JlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmVzdFNjb3JlID0gTWF0aC5taW4oc2NvcmUsIGJlc3RNb3ZlLnNjb3JlKTtcblxuICAgICAgICAgICAgICAgIGlmIChiZXN0U2NvcmUgIT09IGJlc3RNb3ZlLnNjb3JlKVxuICAgICAgICAgICAgICAgICAgICBiZXN0TW92ZSA9IHsgbW92ZSwgc2NvcmUgfTtcblxuICAgICAgICAgICAgICAgIGlmIChiZXN0TW92ZS5zY29yZSA8IGFscGhhKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgICAgICAgIGJldGEgPSBNYXRoLm1pbihiZXRhLCBiZXN0U2NvcmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJlc3RNb3ZlO1xuICAgIH1cblxuICAgIC8qKiBDaGFuZ2VzIHdoaWNoIHBsYXllcidzIHR1cm4gaXQgaXMuICovXG4gICAgcHJpdmF0ZSBuZXh0VHVybigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGxheWVySWQgPSAodGhpcy5jdXJyZW50UGxheWVySWQgKyAxKSAlIHRoaXMucGxheWVycy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBtb3ZlLlxuICAgICAqIEBwYXJhbSBpbnB1dCBFaXRoZXIgdGhlIGFsZ29yaXRobSB0byB1c2UgdG8gY2FsY3VsYXRlIHRoZSBtb3ZlIG9yIHRoZSBtb3ZlIGl0c2VsZi5cbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIG1ha2VNb3ZlKGlucHV0OiBBbGdvcml0aG0gfCBQb3NpdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0aGlzLmJvYXJkLm1ha2VNb3ZlKHRoaXMuZGV0ZXJtaW5lQ1BVTW92ZSh0aGlzLmN1cnJlbnRQbGF5ZXIucGxheWVyVHlwZSwgaW5wdXQpLCB0aGlzLmN1cnJlbnRQbGF5ZXIuaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFBsYXllci5wbGF5ZXJUeXBlICE9PSBcImh1bWFuXCIgfHwgIXRoaXMuYm9hcmQubW92ZUlzVmFsaWQoaW5wdXQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KFwiaW52YWxpZElucHV0XCIsIGlucHV0KTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ib2FyZC5tYWtlTW92ZShpbnB1dCwgdGhpcy5jdXJyZW50UGxheWVyLmlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMucmVuZGVyKHRoaXMpO1xuICAgICAgICBjb25zdCB7IHdpbm5lciB9ID0gdGhpcy5ib2FyZDtcblxuICAgICAgICBpZiAod2lubmVyICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5lbWl0KFwiZW5kXCIsIHdpbm5lcik7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubmV4dFR1cm4oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHRoZSBDUFUgbW92ZS5cbiAgICAgKiBAcGFyYW0gZGlmZmljdWx0eSBUaGUgZGlmZmljdWx0eSBvZiB0aGUgQUkuXG4gICAgICogQHBhcmFtIGFsZ29yaXRobSBUaGUgYWxnb3JpdGhtIHRvIHVzZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgbW92ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZGV0ZXJtaW5lQ1BVTW92ZShkaWZmaWN1bHR5OiBPbWl0PFBsYXllclR5cGUsIFwiaHVtYW5cIj4sIGFsZ29yaXRobT86IEFsZ29yaXRobSk6IFBvc2l0aW9uO1xuXG4gICAgLyoqXG4gICAgICogRmluZHMgdGhlIG9wdGltYWwgbW92ZS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucy5cbiAgICAgKiBAcmV0dXJucyBUaGUgb3B0aW1hbCBtb3ZlLlxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBmaW5kT3B0aW1hbE1vdmUob3B0aW9ucz86IHsgYWxnb3JpdGhtPzogQWxnb3JpdGhtOyBtYXhEZXB0aD86IG51bWJlcjsgcmFuZG9tTW92ZT86IFBvc2l0aW9uOyB9KTogUG9zaXRpb247XG59XG4iXX0=
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
import Base from "../../base/controller.js";
|
|
3
3
|
import type { Position } from "../../base/board.js";
|
|
4
4
|
/** Represents the controller for connect 4. */
|
|
5
|
-
export default class Connect4 extends Base {
|
|
5
|
+
export default class Connect4<T> extends Base<T> {
|
|
6
6
|
/**
|
|
7
7
|
* Creates an instance of Connect4.
|
|
8
8
|
* @param playerOneType The type of player one.
|
|
9
9
|
* @param playerTwoType The type of player two.
|
|
10
10
|
* @param options The options for the game.
|
|
11
11
|
* */
|
|
12
|
-
constructor(playerOneType: PlayerType, playerTwoType: PlayerType, options
|
|
12
|
+
constructor(playerOneType: PlayerType, playerTwoType: PlayerType, options: GameConstructorOptions<T>);
|
|
13
13
|
/**
|
|
14
14
|
* Calculates the CPU's move.
|
|
15
15
|
* @param difficulty The difficulty of the CPU.
|
|
@@ -26,7 +26,7 @@ let Connect4 = class Connect4 extends Base {
|
|
|
26
26
|
* @param options The options for the game.
|
|
27
27
|
* */
|
|
28
28
|
constructor(playerOneType, playerTwoType, options) {
|
|
29
|
-
super([playerOneType, playerTwoType], new Board(), options
|
|
29
|
+
super([playerOneType, playerTwoType], new Board(), options.renderer ?? defaultRender, options.id, options.onEnd, options.onInvalidInput);
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* Calculates the CPU's move.
|
|
@@ -68,4 +68,4 @@ Connect4 = __decorate([
|
|
|
68
68
|
/** Represents the controller for connect 4. */
|
|
69
69
|
], Connect4);
|
|
70
70
|
export default Connect4;
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nYW1lcy9jb25uZWN0NC9jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLE9BQU8sSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBR3ZDOzs7R0FHRztBQUNILFNBQVMsYUFBYSxDQUFJLFVBQXVCO0lBQzdDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQixPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUVwQyxJQUFJLE1BQU0sS0FBSyxLQUFLO1FBQ2hCLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxVQUFVLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFJYyxJQUFNLFFBQVEsR0FBZCxNQUFNLFFBQVksU0FBUSxJQUFPO0lBQzVDOzs7OztTQUtLO0lBQ0wsWUFBbUIsYUFBeUIsRUFBRSxhQUF5QixFQUFFLE9BQWtDO1FBQ3ZHLEtBQUssQ0FDRCxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsRUFDOUIsSUFBSSxLQUFLLEVBQUUsRUFDWCxPQUFPLENBQUMsUUFBUSxJQUFJLGFBQWEsRUFDakMsT0FBTyxDQUFDLEVBQUUsRUFDVixPQUFPLENBQUMsS0FBSyxFQUNiLE9BQU8sQ0FBQyxjQUFjLENBQ3pCLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxnQkFBZ0IsQ0FBQyxVQUFxQyxFQUFFLFlBQXVCLFdBQVc7UUFDN0YsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbEMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBRSxDQUFDO1FBRTlFLFFBQVEsVUFBVSxFQUFFLENBQUM7WUFDakIsS0FBSyxlQUFlO2dCQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0QsS0FBSyxTQUFTO2dCQUNWLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RCxLQUFLLFdBQVc7Z0JBQ1osT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVELEtBQUssU0FBUztnQkFDVixPQUFPLFVBQVUsQ0FBQztZQUN0QjtnQkFDSSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksZUFBZSxDQUFDLE9BR3RCO1FBQ0csTUFBTSxFQUFFLFFBQVEsR0FBRyxRQUFRLEVBQUUsU0FBUyxHQUFHLFdBQVcsRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFdkUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87WUFDbEIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRTFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDeEIsQ0FBQztDQUNKLENBQUE7QUE1RG9CLFFBQVE7SUFGNUIsSUFBSTtJQUNMLCtDQUErQztHQUMxQixRQUFRLENBNEQ1QjtlQTVEb0IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWxnb3JpdGhtLCBHYW1lQ29uc3RydWN0b3JPcHRpb25zLCBQbGF5ZXJUeXBlIH0gZnJvbSBcIi4uLy4uL2Jhc2UvY29udHJvbGxlci5qc1wiO1xuaW1wb3J0IEJhc2UsIHsgR2FtZSB9IGZyb20gXCIuLi8uLi9iYXNlL2NvbnRyb2xsZXIuanNcIjtcbmltcG9ydCBCb2FyZCBmcm9tIFwiLi9ib2FyZC5qc1wiO1xuaW1wb3J0IENvbnNvbGUgZnJvbSBcIi4uLy4uL2NvbnNvbGUuanNcIjtcbmltcG9ydCB0eXBlIHsgUG9zaXRpb24gfSBmcm9tIFwiLi4vLi4vYmFzZS9ib2FyZC5qc1wiO1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IHJlbmRlcmVyIGZvciBjb25uZWN0IDQuXG4gKiBAcGFyYW0gY29udHJvbGxlciBUaGUgY29udHJvbGxlciB0byByZW5kZXIuXG4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRSZW5kZXI8VD4oY29udHJvbGxlcjogQ29ubmVjdDQ8VD4pOiB2b2lkIHtcbiAgICBDb25zb2xlLmNsZWFyKCk7XG4gICAgQ29uc29sZS53cml0ZUxpbmUoY29udHJvbGxlci5ib2FyZC50b1N0cmluZyh0cnVlLCB0cnVlLCBmYWxzZSwgW1wi4qykIFwiLCBcIuKspCBcIl0pKTtcbiAgICBjb25zdCB7IHdpbm5lciB9ID0gY29udHJvbGxlci5ib2FyZDtcblxuICAgIGlmICh3aW5uZXIgIT09IGZhbHNlKVxuICAgICAgICBDb25zb2xlLndyaXRlTGluZSh3aW5uZXIgPT09IG51bGwgPyBcIkl0J3MgYSB0aWUhXCIgOiBgUGxheWVyICR7d2lubmVyICsgMX0gd2lucyFgKTtcbn1cblxuQEdhbWVcbi8qKiBSZXByZXNlbnRzIHRoZSBjb250cm9sbGVyIGZvciBjb25uZWN0IDQuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25uZWN0NDxUPiBleHRlbmRzIEJhc2U8VD4ge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgQ29ubmVjdDQuXG4gICAgICogQHBhcmFtIHBsYXllck9uZVR5cGUgVGhlIHR5cGUgb2YgcGxheWVyIG9uZS5cbiAgICAgKiBAcGFyYW0gcGxheWVyVHdvVHlwZSBUaGUgdHlwZSBvZiBwbGF5ZXIgdHdvLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgZ2FtZS5cbiAgICAgKiAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwbGF5ZXJPbmVUeXBlOiBQbGF5ZXJUeXBlLCBwbGF5ZXJUd29UeXBlOiBQbGF5ZXJUeXBlLCBvcHRpb25zOiBHYW1lQ29uc3RydWN0b3JPcHRpb25zPFQ+KSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgW3BsYXllck9uZVR5cGUsIHBsYXllclR3b1R5cGVdLFxuICAgICAgICAgICAgbmV3IEJvYXJkKCksXG4gICAgICAgICAgICBvcHRpb25zLnJlbmRlcmVyID8/IGRlZmF1bHRSZW5kZXIsXG4gICAgICAgICAgICBvcHRpb25zLmlkLFxuICAgICAgICAgICAgb3B0aW9ucy5vbkVuZCxcbiAgICAgICAgICAgIG9wdGlvbnMub25JbnZhbGlkSW5wdXQsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgQ1BVJ3MgbW92ZS5cbiAgICAgKiBAcGFyYW0gZGlmZmljdWx0eSBUaGUgZGlmZmljdWx0eSBvZiB0aGUgQ1BVLlxuICAgICAqIEBwYXJhbSBhbGdvcml0aG0gVGhlIGFsZ29yaXRobSB0byB1c2UuXG4gICAgICogQHJldHVybnMgVGhlIENQVSdzIG1vdmUuXG4gICAgICovXG4gICAgcHVibGljIGRldGVybWluZUNQVU1vdmUoZGlmZmljdWx0eTogT21pdDxQbGF5ZXJUeXBlLCBcImh1bWFuXCI+LCBhbGdvcml0aG06IEFsZ29yaXRobSA9IFwiYWxwaGFiZXRhXCIpOiBQb3NpdGlvbiB7XG4gICAgICAgIGNvbnN0IHsgZW1wdHlDZWxscyB9ID0gdGhpcy5ib2FyZDtcbiAgICAgICAgY29uc3QgcmFuZG9tTW92ZSA9IGVtcHR5Q2VsbHNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogZW1wdHlDZWxscy5sZW5ndGgpXSE7XG5cbiAgICAgICAgc3dpdGNoIChkaWZmaWN1bHR5KSB7XG4gICAgICAgICAgICBjYXNlIFwiaW1wb3NzaWJsZUNQVVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRPcHRpbWFsTW92ZSh7IGFsZ29yaXRobSwgbWF4RGVwdGg6IDEwIH0pO1xuICAgICAgICAgICAgY2FzZSBcImhhcmRDUFVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kT3B0aW1hbE1vdmUoeyBhbGdvcml0aG0sIG1heERlcHRoOiA1IH0pO1xuICAgICAgICAgICAgY2FzZSBcIm1lZGl1bUNQVVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRPcHRpbWFsTW92ZSh7IGFsZ29yaXRobSwgbWF4RGVwdGg6IDMgfSk7XG4gICAgICAgICAgICBjYXNlIFwiZWFzeUNQVVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiByYW5kb21Nb3ZlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGRpZmZpY3VsdHkuXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgdGhlIG9wdGltYWwgbW92ZSBmb3IgdGhlIGN1cnJlbnQgYm9hcmQgc3RhdGUuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSBhbGdvcml0aG0uXG4gICAgICogQHJldHVybnMgVGhlIG9wdGltYWwgbW92ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZmluZE9wdGltYWxNb3ZlKG9wdGlvbnM/OiB7XG4gICAgICAgIGFsZ29yaXRobT86IEFsZ29yaXRobTtcbiAgICAgICAgbWF4RGVwdGg/OiBudW1iZXI7XG4gICAgfSk6IFBvc2l0aW9uIHtcbiAgICAgICAgY29uc3QgeyBtYXhEZXB0aCA9IEluZmluaXR5LCBhbGdvcml0aG0gPSBcImFscGhhYmV0YVwiIH0gPSBvcHRpb25zID8/IHt9O1xuXG4gICAgICAgIGlmICh0aGlzLmJvYXJkLmlzRW1wdHkpXG4gICAgICAgICAgICByZXR1cm4geyB4OiAzLCB5OiA1IH07XG5cbiAgICAgICAgY29uc3QgbWluaW1heCA9IHRoaXNbYWxnb3JpdGhtXShtYXhEZXB0aCk7XG5cbiAgICAgICAgcmV0dXJuIG1pbmltYXgubW92ZTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
import Base from "../../base/controller.js";
|
|
3
3
|
import type { Position } from "../../base/board.js";
|
|
4
4
|
/** A game of TicTacToe. */
|
|
5
|
-
export default class TicTacToe extends Base {
|
|
5
|
+
export default class TicTacToe<T> extends Base<T> {
|
|
6
6
|
/**
|
|
7
7
|
* Creates a new TicTacToe game.
|
|
8
8
|
* @param playerOneType The type of player one.
|
|
9
9
|
* @param playerTwoType The type of player two.
|
|
10
10
|
* @param options The options for the game.
|
|
11
11
|
*/
|
|
12
|
-
constructor(playerOneType: PlayerType, playerTwoType: PlayerType, options
|
|
12
|
+
constructor(playerOneType: PlayerType, playerTwoType: PlayerType, options: GameConstructorOptions<T>);
|
|
13
13
|
/**
|
|
14
14
|
* Calculates the CPU's move.
|
|
15
15
|
* @param difficulty The difficulty of the CPU.
|
|
@@ -26,7 +26,7 @@ let TicTacToe = class TicTacToe extends Base {
|
|
|
26
26
|
* @param options The options for the game.
|
|
27
27
|
*/
|
|
28
28
|
constructor(playerOneType, playerTwoType, options) {
|
|
29
|
-
super([playerOneType, playerTwoType], new Board(), options
|
|
29
|
+
super([playerOneType, playerTwoType], new Board(), options.renderer ?? defaultRender, options.id, options.onEnd, options.onInvalidInput);
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* Calculates the CPU's move.
|
|
@@ -70,4 +70,4 @@ TicTacToe = __decorate([
|
|
|
70
70
|
/** A game of TicTacToe. */
|
|
71
71
|
], TicTacToe);
|
|
72
72
|
export default TicTacToe;
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nYW1lcy90aWN0YWN0b2UvY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxPQUFPLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUd2Qzs7O0dBR0c7QUFDSCxTQUFTLGFBQWEsQ0FBSSxVQUF3QjtJQUM5QyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBRXBDLElBQUksTUFBTSxLQUFLLEtBQUs7UUFDaEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFVBQVUsTUFBTSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUYsQ0FBQztBQUljLElBQU0sU0FBUyxHQUFmLE1BQU0sU0FBYSxTQUFRLElBQU87SUFDN0M7Ozs7O09BS0c7SUFDSCxZQUFtQixhQUF5QixFQUFFLGFBQXlCLEVBQUUsT0FBa0M7UUFDdkcsS0FBSyxDQUNELENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxFQUM5QixJQUFJLEtBQUssRUFBRSxFQUNYLE9BQU8sQ0FBQyxRQUFRLElBQUksYUFBYSxFQUNqQyxPQUFPLENBQUMsRUFBRSxFQUNWLE9BQU8sQ0FBQyxLQUFLLEVBQ2IsT0FBTyxDQUFDLGNBQWMsQ0FDekIsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGdCQUFnQixDQUFDLFVBQXFDLEVBQUUsWUFBdUIsV0FBVztRQUM3RixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNsQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFFLENBQUM7UUFDOUUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRXBFLFFBQVEsVUFBVSxFQUFFLENBQUM7WUFDakIsS0FBSyxlQUFlO2dCQUNoQixPQUFPLFdBQVcsQ0FBQztZQUN2QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUMxRCxLQUFLLFdBQVc7Z0JBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUMxRCxLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxVQUFVLENBQUM7WUFDdEI7Z0JBQ0ksTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksZUFBZSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsS0FHMUMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO1lBQ2xCLE9BQU8sVUFBVSxDQUFDO1FBRXRCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBRWxDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0NBQ0osQ0FBQTtBQTdEb0IsU0FBUztJQUY3QixJQUFJO0lBQ0wsMkJBQTJCO0dBQ04sU0FBUyxDQTZEN0I7ZUE3RG9CLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFsZ29yaXRobSwgR2FtZUNvbnN0cnVjdG9yT3B0aW9ucywgUGxheWVyVHlwZSB9IGZyb20gXCIuLi8uLi9iYXNlL2NvbnRyb2xsZXIuanNcIjtcbmltcG9ydCBCYXNlLCB7IEdhbWUgfSBmcm9tIFwiLi4vLi4vYmFzZS9jb250cm9sbGVyLmpzXCI7XG5pbXBvcnQgQm9hcmQgZnJvbSBcIi4vYm9hcmQuanNcIjtcbmltcG9ydCBDb25zb2xlIGZyb20gXCIuLi8uLi9jb25zb2xlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uIH0gZnJvbSBcIi4uLy4uL2Jhc2UvYm9hcmQuanNcIjtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCByZW5kZXJpbmcgZnVuY3Rpb24gZm9yIFRpY1RhY1RvZS5cbiAqIEBwYXJhbSBjb250cm9sbGVyIFRoZSBjb250cm9sbGVyIHRvIHJlbmRlci5cbiAqL1xuZnVuY3Rpb24gZGVmYXVsdFJlbmRlcjxUPihjb250cm9sbGVyOiBUaWNUYWNUb2U8VD4pOiB2b2lkIHtcbiAgICBDb25zb2xlLmNsZWFyKCk7XG4gICAgQ29uc29sZS53cml0ZUxpbmUoY29udHJvbGxlci5ib2FyZC50b1N0cmluZyhmYWxzZSkpO1xuICAgIGNvbnN0IHsgd2lubmVyIH0gPSBjb250cm9sbGVyLmJvYXJkO1xuXG4gICAgaWYgKHdpbm5lciAhPT0gZmFsc2UpXG4gICAgICAgIENvbnNvbGUud3JpdGVMaW5lKHdpbm5lciA9PT0gbnVsbCA/IFwiSXQncyBhIHRpZSFcIiA6IGBQbGF5ZXIgJHt3aW5uZXIgKyAxfSB3aW5zIWApO1xufVxuXG5AR2FtZVxuLyoqIEEgZ2FtZSBvZiBUaWNUYWNUb2UuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUaWNUYWNUb2U8VD4gZXh0ZW5kcyBCYXNlPFQ+IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IFRpY1RhY1RvZSBnYW1lLlxuICAgICAqIEBwYXJhbSBwbGF5ZXJPbmVUeXBlIFRoZSB0eXBlIG9mIHBsYXllciBvbmUuXG4gICAgICogQHBhcmFtIHBsYXllclR3b1R5cGUgVGhlIHR5cGUgb2YgcGxheWVyIHR3by5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgdGhlIGdhbWUuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBsYXllck9uZVR5cGU6IFBsYXllclR5cGUsIHBsYXllclR3b1R5cGU6IFBsYXllclR5cGUsIG9wdGlvbnM6IEdhbWVDb25zdHJ1Y3Rvck9wdGlvbnM8VD4pIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBbcGxheWVyT25lVHlwZSwgcGxheWVyVHdvVHlwZV0sXG4gICAgICAgICAgICBuZXcgQm9hcmQoKSxcbiAgICAgICAgICAgIG9wdGlvbnMucmVuZGVyZXIgPz8gZGVmYXVsdFJlbmRlcixcbiAgICAgICAgICAgIG9wdGlvbnMuaWQsXG4gICAgICAgICAgICBvcHRpb25zLm9uRW5kLFxuICAgICAgICAgICAgb3B0aW9ucy5vbkludmFsaWRJbnB1dCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBDUFUncyBtb3ZlLlxuICAgICAqIEBwYXJhbSBkaWZmaWN1bHR5IFRoZSBkaWZmaWN1bHR5IG9mIHRoZSBDUFUuXG4gICAgICogQHBhcmFtIGFsZ29yaXRobSBUaGUgYWxnb3JpdGhtIHRvIHVzZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgQ1BVJ3MgbW92ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGV0ZXJtaW5lQ1BVTW92ZShkaWZmaWN1bHR5OiBPbWl0PFBsYXllclR5cGUsIFwiaHVtYW5cIj4sIGFsZ29yaXRobTogQWxnb3JpdGhtID0gXCJhbHBoYWJldGFcIik6IFBvc2l0aW9uIHtcbiAgICAgICAgY29uc3QgeyBlbXB0eUNlbGxzIH0gPSB0aGlzLmJvYXJkO1xuICAgICAgICBjb25zdCByYW5kb21Nb3ZlID0gZW1wdHlDZWxsc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBlbXB0eUNlbGxzLmxlbmd0aCldITtcbiAgICAgICAgY29uc3Qgb3B0aW1hbE1vdmUgPSB0aGlzLmZpbmRPcHRpbWFsTW92ZSh7IGFsZ29yaXRobSwgcmFuZG9tTW92ZSB9KTtcblxuICAgICAgICBzd2l0Y2ggKGRpZmZpY3VsdHkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbXBvc3NpYmxlQ1BVXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGltYWxNb3ZlO1xuICAgICAgICAgICAgY2FzZSBcImhhcmRDUFVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yYW5kb20oKSA8IDAuOCA/IG9wdGltYWxNb3ZlIDogcmFuZG9tTW92ZTtcbiAgICAgICAgICAgIGNhc2UgXCJtZWRpdW1DUFVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yYW5kb20oKSA8IDAuNSA/IG9wdGltYWxNb3ZlIDogcmFuZG9tTW92ZTtcbiAgICAgICAgICAgIGNhc2UgXCJlYXN5Q1BVXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJhbmRvbU1vdmU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZGlmZmljdWx0eS5cIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyB0aGUgb3B0aW1hbCBtb3ZlIGZvciB0aGUgY3VycmVudCBwbGF5ZXIuXG4gICAgICogQHBhcmFtIGFsZ29yaXRobSBUaGUgYWxnb3JpdGhtIHRvIHVzZS5cbiAgICAgKiBAcGFyYW0gbWF4RGVwdGggVGhlIG1heGltdW0gZGVwdGggdG8gc2VhcmNoLlxuICAgICAqIEBwYXJhbSByYW5kb21Nb3ZlIFRoZSBtb3ZlIHRvIHJldHVybiBpZiB0aGUgYm9hcmQgaXMgZW1wdHkuXG4gICAgICogQHJldHVybnMgVGhlIG9wdGltYWwgbW92ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZmluZE9wdGltYWxNb3ZlKHsgYWxnb3JpdGhtLCByYW5kb21Nb3ZlIH06IHtcbiAgICAgICAgYWxnb3JpdGhtOiBBbGdvcml0aG07XG4gICAgICAgIHJhbmRvbU1vdmU6IFBvc2l0aW9uO1xuICAgIH0gPSB7IGFsZ29yaXRobTogXCJhbHBoYWJldGFcIiwgcmFuZG9tTW92ZTogeyB4OiAyLCB5OiAyIH0gfSk6IFBvc2l0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuYm9hcmQuaXNFbXB0eSlcbiAgICAgICAgICAgIHJldHVybiByYW5kb21Nb3ZlO1xuXG4gICAgICAgIGNvbnN0IG1pbmltYXggPSB0aGlzW2FsZ29yaXRobV0oKTtcblxuICAgICAgICByZXR1cm4gbWluaW1heC5tb3ZlO1xuICAgIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oathompsonjones/mini-games",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "A selection of MiniGames. You will soon be able to play these games on [my website](https://oathompsonjones.co.uk/arcade).",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "https://github.com/oathompsonjones/MiniGames.git"
|