@raikuxq/alg-ds 1.2.5 → 2.0.0
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/README.md +0 -25
- package/lib/index.d.ts +1216 -3
- package/lib/index.mjs +1 -0
- package/package.json +78 -72
- package/lib/app/algorithms/binary-search.d.ts +0 -5
- package/lib/app/algorithms/binary-search.js +0 -27
- package/lib/app/algorithms/factorial.d.ts +0 -9
- package/lib/app/algorithms/factorial.js +0 -17
- package/lib/app/algorithms/fibonacci.d.ts +0 -9
- package/lib/app/algorithms/fibonacci.js +0 -17
- package/lib/app/algorithms/graph/iterator/AbstractGraphIterator.d.ts +0 -39
- package/lib/app/algorithms/graph/iterator/AbstractGraphIterator.js +0 -87
- package/lib/app/algorithms/graph/iterator/GraphIteratorBFS.d.ts +0 -28
- package/lib/app/algorithms/graph/iterator/GraphIteratorBFS.js +0 -70
- package/lib/app/algorithms/graph/iterator/GraphIteratorDFS.d.ts +0 -28
- package/lib/app/algorithms/graph/iterator/GraphIteratorDFS.js +0 -70
- package/lib/app/algorithms/graph/iterator/GraphIteratorDijkstra.d.ts +0 -32
- package/lib/app/algorithms/graph/iterator/GraphIteratorDijkstra.js +0 -97
- package/lib/app/algorithms/graph/iterator-strategy/BFSIterationStrategy.d.ts +0 -6
- package/lib/app/algorithms/graph/iterator-strategy/BFSIterationStrategy.js +0 -13
- package/lib/app/algorithms/graph/iterator-strategy/DFSIterationStrategy.d.ts +0 -6
- package/lib/app/algorithms/graph/iterator-strategy/DFSIterationStrategy.js +0 -13
- package/lib/app/algorithms/graph/iterator-strategy/DijkstraIterationStrategy.d.ts +0 -6
- package/lib/app/algorithms/graph/iterator-strategy/DijkstraIterationStrategy.js +0 -13
- package/lib/app/algorithms/graph/presenter/presenterAdjacencyLists.d.ts +0 -19
- package/lib/app/algorithms/graph/presenter/presenterAdjacencyLists.js +0 -28
- package/lib/app/algorithms/graph/presenter/presenterAdjacencyMatrix.d.ts +0 -32
- package/lib/app/algorithms/graph/presenter/presenterAdjacencyMatrix.js +0 -48
- package/lib/app/algorithms/graph/searching/hasPath.d.ts +0 -9
- package/lib/app/algorithms/graph/searching/hasPath.js +0 -30
- package/lib/app/algorithms/graph/searching/shortestPath.d.ts +0 -9
- package/lib/app/algorithms/graph/searching/shortestPath.js +0 -30
- package/lib/app/algorithms/graph/transposing/transposeDirectedGraph.d.ts +0 -2
- package/lib/app/algorithms/graph/transposing/transposeDirectedGraph.js +0 -14
- package/lib/app/algorithms/memoize.d.ts +0 -5
- package/lib/app/algorithms/memoize.js +0 -22
- package/lib/app/algorithms/sorts/bubble-sort.d.ts +0 -9
- package/lib/app/algorithms/sorts/bubble-sort.js +0 -23
- package/lib/app/algorithms/sorts/insertion-sort.d.ts +0 -9
- package/lib/app/algorithms/sorts/insertion-sort.js +0 -25
- package/lib/app/algorithms/sorts/merge-sort.d.ts +0 -9
- package/lib/app/algorithms/sorts/merge-sort.js +0 -61
- package/lib/app/algorithms/sorts/quick-sort.d.ts +0 -9
- package/lib/app/algorithms/sorts/quick-sort.js +0 -45
- package/lib/app/algorithms/sorts/select-sort.d.ts +0 -9
- package/lib/app/algorithms/sorts/select-sort.js +0 -20
- package/lib/app/algorithms/transpose-matrix.d.ts +0 -6
- package/lib/app/algorithms/transpose-matrix.js +0 -19
- package/lib/app/constants.d.ts +0 -2
- package/lib/app/constants.js +0 -6
- package/lib/app/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.d.ts +0 -15
- package/lib/app/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.js +0 -53
- package/lib/app/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.d.ts +0 -60
- package/lib/app/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.js +0 -35
- package/lib/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchNode.d.ts +0 -13
- package/lib/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchNode.js +0 -59
- package/lib/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.d.ts +0 -75
- package/lib/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.js +0 -276
- package/lib/app/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.d.ts +0 -16
- package/lib/app/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.js +0 -70
- package/lib/app/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.d.ts +0 -58
- package/lib/app/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.js +0 -236
- package/lib/app/data-structures/BinaryTree/_helpers/createBinaryTree.d.ts +0 -6
- package/lib/app/data-structures/BinaryTree/_helpers/createBinaryTree.js +0 -22
- package/lib/app/data-structures/Graph/AbstractGraph.d.ts +0 -84
- package/lib/app/data-structures/Graph/AbstractGraph.js +0 -143
- package/lib/app/data-structures/Graph/DirectedGraph.d.ts +0 -27
- package/lib/app/data-structures/Graph/DirectedGraph.js +0 -89
- package/lib/app/data-structures/Graph/GraphEdge.d.ts +0 -16
- package/lib/app/data-structures/Graph/GraphEdge.js +0 -43
- package/lib/app/data-structures/Graph/UndirectedGraph.d.ts +0 -31
- package/lib/app/data-structures/Graph/UndirectedGraph.js +0 -106
- package/lib/app/data-structures/Graph/_helpers/createGraph.d.ts +0 -6
- package/lib/app/data-structures/Graph/_helpers/createGraph.js +0 -22
- package/lib/app/data-structures/Graph/_helpers/createGraphFromMatrix.d.ts +0 -7
- package/lib/app/data-structures/Graph/_helpers/createGraphFromMatrix.js +0 -42
- package/lib/app/data-structures/Graph/_helpers/generateRandomGraph.d.ts +0 -4
- package/lib/app/data-structures/Graph/_helpers/generateRandomGraph.js +0 -67
- package/lib/app/data-structures/HashTable/HashTable.d.ts +0 -73
- package/lib/app/data-structures/HashTable/HashTable.js +0 -171
- package/lib/app/data-structures/HashTable/HashTableNode.d.ts +0 -11
- package/lib/app/data-structures/HashTable/HashTableNode.js +0 -39
- package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.d.ts +0 -134
- package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.js +0 -247
- package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedNode.d.ts +0 -20
- package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedNode.js +0 -41
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.d.ts +0 -42
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.js +0 -98
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedNode.d.ts +0 -25
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedNode.js +0 -65
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/IterableDoubleLinkedList.d.ts +0 -18
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/IterableDoubleLinkedList.js +0 -86
- package/lib/app/data-structures/LinkedList/SingleLinkedList/IterableSingleLinkedList.d.ts +0 -18
- package/lib/app/data-structures/LinkedList/SingleLinkedList/IterableSingleLinkedList.js +0 -68
- package/lib/app/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.d.ts +0 -46
- package/lib/app/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.js +0 -103
- package/lib/app/data-structures/LinkedList/SingleLinkedList/SingleLinkedNode.d.ts +0 -7
- package/lib/app/data-structures/LinkedList/SingleLinkedList/SingleLinkedNode.js +0 -29
- package/lib/app/data-structures/LinkedList/_helpers/createLinkedList.d.ts +0 -3
- package/lib/app/data-structures/LinkedList/_helpers/createLinkedList.js +0 -34
- package/lib/app/data-structures/LoopedArray/LoopedArray.d.ts +0 -86
- package/lib/app/data-structures/LoopedArray/LoopedArray.js +0 -165
- package/lib/app/data-structures/Queue/Queue.d.ts +0 -50
- package/lib/app/data-structures/Queue/Queue.js +0 -85
- package/lib/app/data-structures/Stack/Stack.d.ts +0 -50
- package/lib/app/data-structures/Stack/Stack.js +0 -85
- package/lib/app/exceptions/CollectionIsEmptyException.d.ts +0 -4
- package/lib/app/exceptions/CollectionIsEmptyException.js +0 -28
- package/lib/app/exceptions/CollectionIsFullException.d.ts +0 -4
- package/lib/app/exceptions/CollectionIsFullException.js +0 -28
- package/lib/app/exceptions/IndexOutOfBoundsException.d.ts +0 -4
- package/lib/app/exceptions/IndexOutOfBoundsException.js +0 -28
- package/lib/app/exceptions/IsAlreadyExistsException.d.ts +0 -4
- package/lib/app/exceptions/IsAlreadyExistsException.js +0 -28
- package/lib/app/exceptions/IsNotFoundException.d.ts +0 -4
- package/lib/app/exceptions/IsNotFoundException.js +0 -28
- package/lib/app/exceptions/ValueOutOfRangeException.d.ts +0 -4
- package/lib/app/exceptions/ValueOutOfRangeException.js +0 -28
- package/lib/app/exceptions/base/IllegalArgumentException.d.ts +0 -3
- package/lib/app/exceptions/base/IllegalArgumentException.js +0 -27
- package/lib/app/exceptions/base/IllegalStateException.d.ts +0 -3
- package/lib/app/exceptions/base/IllegalStateException.js +0 -27
- package/lib/app/types/EnumBinarySearchTreeType.d.ts +0 -4
- package/lib/app/types/EnumBinarySearchTreeType.js +0 -9
- package/lib/app/types/EnumGraphTraversalType.d.ts +0 -5
- package/lib/app/types/EnumGraphTraversalType.js +0 -10
- package/lib/app/types/EnumGraphType.d.ts +0 -4
- package/lib/app/types/EnumGraphType.js +0 -9
- package/lib/app/types/EnumLinkedListType.d.ts +0 -4
- package/lib/app/types/EnumLinkedListType.js +0 -9
- package/lib/app/types/EnumRandomGenerationFormat.d.ts +0 -4
- package/lib/app/types/EnumRandomGenerationFormat.js +0 -9
- package/lib/app/types/EnumSortType.d.ts +0 -7
- package/lib/app/types/EnumSortType.js +0 -12
- package/lib/app/types/EnumTreeTraversalType.d.ts +0 -5
- package/lib/app/types/EnumTreeTraversalType.js +0 -10
- package/lib/app/types/FnCompareTwo.d.ts +0 -1
- package/lib/app/types/FnCompareTwo.js +0 -3
- package/lib/app/types/FnToMemoize.d.ts +0 -1
- package/lib/app/types/FnToMemoize.js +0 -3
- package/lib/app/types/IArrayFacade.d.ts +0 -4
- package/lib/app/types/IArrayFacade.js +0 -3
- package/lib/app/types/IBiDirectIterable.d.ts +0 -5
- package/lib/app/types/IBiDirectIterable.js +0 -3
- package/lib/app/types/IBiDirectIterator.d.ts +0 -11
- package/lib/app/types/IBiDirectIterator.js +0 -3
- package/lib/app/types/IBinaryTree.d.ts +0 -12
- package/lib/app/types/IBinaryTree.js +0 -3
- package/lib/app/types/IConvertableToArray.d.ts +0 -4
- package/lib/app/types/IConvertableToArray.js +0 -3
- package/lib/app/types/IGraph.d.ts +0 -14
- package/lib/app/types/IGraph.js +0 -3
- package/lib/app/types/IGraphIterationStrategy.d.ts +0 -5
- package/lib/app/types/IGraphIterationStrategy.js +0 -3
- package/lib/app/types/IGraphIterator.d.ts +0 -11
- package/lib/app/types/IGraphIterator.js +0 -3
- package/lib/app/types/IIterable.d.ts +0 -4
- package/lib/app/types/IIterable.js +0 -3
- package/lib/app/types/IIterator.d.ts +0 -14
- package/lib/app/types/IIterator.js +0 -3
- package/lib/app/types/IKeyValueStorage.d.ts +0 -8
- package/lib/app/types/IKeyValueStorage.js +0 -3
- package/lib/app/types/ILinearStorage.d.ts +0 -11
- package/lib/app/types/ILinearStorage.js +0 -3
- package/lib/app/types/ILinearStorageRA.d.ts +0 -13
- package/lib/app/types/ILinearStorageRA.js +0 -3
- package/lib/app/types/ILinkedList.d.ts +0 -4
- package/lib/app/types/ILinkedList.js +0 -3
- package/lib/app/types/TypeArrayMatrix.d.ts +0 -1
- package/lib/app/types/TypeArrayMatrix.js +0 -3
- package/lib/app/utils.d.ts +0 -29
- package/lib/app/utils.js +0 -61
- package/lib/exports/algorithms.d.ts +0 -16
- package/lib/exports/algorithms.js +0 -36
- package/lib/exports/constants.d.ts +0 -2
- package/lib/exports/constants.js +0 -7
- package/lib/exports/data-structures.d.ts +0 -13
- package/lib/exports/data-structures.js +0 -28
- package/lib/exports/helpers.d.ts +0 -6
- package/lib/exports/helpers.js +0 -14
- package/lib/exports/sorts.d.ts +0 -6
- package/lib/exports/sorts.js +0 -14
- package/lib/exports/types.d.ts +0 -16
- package/lib/exports/types.js +0 -34
- package/lib/exports/utils.d.ts +0 -3
- package/lib/exports/utils.js +0 -12
- package/lib/exports.d.ts +0 -55
- package/lib/exports.js +0 -107
- package/lib/index.js +0 -5
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import IGraph from "../../../types/IGraph";
|
|
2
|
-
import AbstractGraphIterator from "./AbstractGraphIterator";
|
|
3
|
-
/**
|
|
4
|
-
* Dijkstra method graph traversal
|
|
5
|
-
*/
|
|
6
|
-
export default class GraphIteratorDijkstra<T> extends AbstractGraphIterator<T> {
|
|
7
|
-
private readonly costs;
|
|
8
|
-
/**
|
|
9
|
-
* @inheritDoc
|
|
10
|
-
*/
|
|
11
|
-
constructor(graph: IGraph<T>);
|
|
12
|
-
/**
|
|
13
|
-
* Get not visited vertex with minimal cost
|
|
14
|
-
*/
|
|
15
|
-
private getClosestNotVisited;
|
|
16
|
-
/**
|
|
17
|
-
* @inheritDoc
|
|
18
|
-
*/
|
|
19
|
-
initIteratorImpl(startVertex: T): void;
|
|
20
|
-
/**
|
|
21
|
-
* @inheritDoc
|
|
22
|
-
*/
|
|
23
|
-
hasNextImpl(): boolean;
|
|
24
|
-
/**
|
|
25
|
-
* @inheritDoc
|
|
26
|
-
*/
|
|
27
|
-
currentImpl(): T;
|
|
28
|
-
/**
|
|
29
|
-
* @inheritDoc
|
|
30
|
-
*/
|
|
31
|
-
nextImpl(): T;
|
|
32
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
extendStatics(d, b);
|
|
11
|
-
function __() { this.constructor = d; }
|
|
12
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
13
|
-
};
|
|
14
|
-
})();
|
|
15
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
var AbstractGraphIterator_1 = require("./AbstractGraphIterator");
|
|
17
|
-
var IllegalStateException_1 = require("../../../exceptions/base/IllegalStateException");
|
|
18
|
-
/**
|
|
19
|
-
* Dijkstra method graph traversal
|
|
20
|
-
*/
|
|
21
|
-
var GraphIteratorDijkstra = /** @class */ (function (_super) {
|
|
22
|
-
__extends(GraphIteratorDijkstra, _super);
|
|
23
|
-
/**
|
|
24
|
-
* @inheritDoc
|
|
25
|
-
*/
|
|
26
|
-
function GraphIteratorDijkstra(graph) {
|
|
27
|
-
var _this = _super.call(this, graph) || this;
|
|
28
|
-
_this.costs = new Map();
|
|
29
|
-
return _this;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Get not visited vertex with minimal cost
|
|
33
|
-
*/
|
|
34
|
-
GraphIteratorDijkstra.prototype.getClosestNotVisited = function () {
|
|
35
|
-
var _this = this;
|
|
36
|
-
var keys = Array.from(this.costs.keys());
|
|
37
|
-
var priorityList = keys
|
|
38
|
-
.filter(function (key) { return !_this.visited.get(key); })
|
|
39
|
-
.sort(function (aKey, bKey) {
|
|
40
|
-
var aCost = _this.costs.get(aKey) || 0;
|
|
41
|
-
var bCost = _this.costs.get(bKey) || 0;
|
|
42
|
-
return aCost - bCost;
|
|
43
|
-
});
|
|
44
|
-
if (priorityList[0] === undefined) {
|
|
45
|
-
throw new IllegalStateException_1.default("No more vertices found");
|
|
46
|
-
}
|
|
47
|
-
return priorityList[0];
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* @inheritDoc
|
|
51
|
-
*/
|
|
52
|
-
GraphIteratorDijkstra.prototype.initIteratorImpl = function (startVertex) {
|
|
53
|
-
var _this = this;
|
|
54
|
-
this.visited.set(startVertex, true);
|
|
55
|
-
this.costs.set(startVertex, 0);
|
|
56
|
-
this.graph.getVertexNeighbors(startVertex).forEach(function (neighbor) {
|
|
57
|
-
var edgeWeight = _this.graph.getEdgeWeight(startVertex, neighbor);
|
|
58
|
-
_this.costs.set(neighbor, edgeWeight);
|
|
59
|
-
_this.parents.set(neighbor, startVertex);
|
|
60
|
-
});
|
|
61
|
-
};
|
|
62
|
-
/**
|
|
63
|
-
* @inheritDoc
|
|
64
|
-
*/
|
|
65
|
-
GraphIteratorDijkstra.prototype.hasNextImpl = function () {
|
|
66
|
-
return !(this.getClosestNotVisited() === null);
|
|
67
|
-
};
|
|
68
|
-
/**
|
|
69
|
-
* @inheritDoc
|
|
70
|
-
*/
|
|
71
|
-
GraphIteratorDijkstra.prototype.currentImpl = function () {
|
|
72
|
-
return this.getClosestNotVisited();
|
|
73
|
-
};
|
|
74
|
-
/**
|
|
75
|
-
* @inheritDoc
|
|
76
|
-
*/
|
|
77
|
-
GraphIteratorDijkstra.prototype.nextImpl = function () {
|
|
78
|
-
var _this = this;
|
|
79
|
-
var next = this.getClosestNotVisited();
|
|
80
|
-
this.visited.set(next, true);
|
|
81
|
-
var nextNeighbors = this.graph.getVertexNeighbors(next);
|
|
82
|
-
var nextCost = this.costs.get(next);
|
|
83
|
-
nextNeighbors.forEach(function (neighbor) {
|
|
84
|
-
var edgeWeight = _this.graph.getEdgeWeight(next, neighbor);
|
|
85
|
-
var currentNeighborCost = _this.costs.get(neighbor) || Infinity;
|
|
86
|
-
var newNeighborCost = (nextCost || 0) + edgeWeight;
|
|
87
|
-
if (newNeighborCost < currentNeighborCost) {
|
|
88
|
-
_this.costs.set(neighbor, newNeighborCost);
|
|
89
|
-
_this.parents.set(neighbor, next);
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
return next;
|
|
93
|
-
};
|
|
94
|
-
return GraphIteratorDijkstra;
|
|
95
|
-
}(AbstractGraphIterator_1.default));
|
|
96
|
-
exports.default = GraphIteratorDijkstra;
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhJdGVyYXRvckRpamtzdHJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9hbGdvcml0aG1zL2dyYXBoL2l0ZXJhdG9yL0dyYXBoSXRlcmF0b3JEaWprc3RyYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFDQSxpRUFBNEQ7QUFDNUQsd0ZBQW1GO0FBRW5GOztHQUVHO0FBQ0g7SUFBc0QseUNBQXdCO0lBRzVFOztPQUVHO0lBQ0gsK0JBQW1CLEtBQWdCO1FBQW5DLFlBQ0Usa0JBQU0sS0FBSyxDQUFDLFNBRWI7UUFEQyxLQUFJLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7O0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNLLG9EQUFvQixHQUE1QjtRQUFBLGlCQWdCQztRQWZDLElBQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLElBQU0sWUFBWSxHQUFHLElBQUk7YUFDdEIsTUFBTSxDQUFDLFVBQUMsR0FBTSxJQUFLLE9BQUEsQ0FBQyxLQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBdEIsQ0FBc0IsQ0FBQzthQUMxQyxJQUFJLENBQUMsVUFBQyxJQUFPLEVBQUUsSUFBTztZQUNyQixJQUFNLEtBQUssR0FBRyxLQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsSUFBTSxLQUFLLEdBQUcsS0FBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXhDLE9BQU8sS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUNqQyxN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
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import IGraphIterationStrategy from "../../../types/IGraphIterationStrategy";
|
|
2
|
-
import IGraphIterator from "../../../types/IGraphIterator";
|
|
3
|
-
import IGraph from "../../../types/IGraph";
|
|
4
|
-
export default class BFSIterationStrategy<T> implements IGraphIterationStrategy<T> {
|
|
5
|
-
createIterator(graph: IGraph<T>): IGraphIterator<T>;
|
|
6
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var GraphIteratorBFS_1 = require("../iterator/GraphIteratorBFS");
|
|
4
|
-
var BFSIterationStrategy = /** @class */ (function () {
|
|
5
|
-
function BFSIterationStrategy() {
|
|
6
|
-
}
|
|
7
|
-
BFSIterationStrategy.prototype.createIterator = function (graph) {
|
|
8
|
-
return new GraphIteratorBFS_1.default(graph);
|
|
9
|
-
};
|
|
10
|
-
return BFSIterationStrategy;
|
|
11
|
-
}());
|
|
12
|
-
exports.default = BFSIterationStrategy;
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQkZTSXRlcmF0aW9uU3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2FsZ29yaXRobXMvZ3JhcGgvaXRlcmF0b3Itc3RyYXRlZ3kvQkZTSXRlcmF0aW9uU3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxpRUFBNEQ7QUFFNUQ7SUFBQTtJQUtBLENBQUM7SUFIUSw2Q0FBYyxHQUFyQixVQUFzQixLQUFnQjtRQUNwQyxPQUFPLElBQUksMEJBQWdCLENBQUksS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNILDJCQUFDO0FBQUQsQ0FBQyxBQUxELElBS0MifQ==
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import IGraph from "../../../types/IGraph";
|
|
2
|
-
import IGraphIterationStrategy from "../../../types/IGraphIterationStrategy";
|
|
3
|
-
import IGraphIterator from "../../../types/IGraphIterator";
|
|
4
|
-
export default class DFSIterationStrategy<T> implements IGraphIterationStrategy<T> {
|
|
5
|
-
createIterator(graph: IGraph<T>): IGraphIterator<T>;
|
|
6
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var GraphIteratorDFS_1 = require("../iterator/GraphIteratorDFS");
|
|
4
|
-
var DFSIterationStrategy = /** @class */ (function () {
|
|
5
|
-
function DFSIterationStrategy() {
|
|
6
|
-
}
|
|
7
|
-
DFSIterationStrategy.prototype.createIterator = function (graph) {
|
|
8
|
-
return new GraphIteratorDFS_1.default(graph);
|
|
9
|
-
};
|
|
10
|
-
return DFSIterationStrategy;
|
|
11
|
-
}());
|
|
12
|
-
exports.default = DFSIterationStrategy;
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiREZTSXRlcmF0aW9uU3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2FsZ29yaXRobXMvZ3JhcGgvaXRlcmF0b3Itc3RyYXRlZ3kvREZTSXRlcmF0aW9uU3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxpRUFBNEQ7QUFFNUQ7SUFBQTtJQUtBLENBQUM7SUFIUSw2Q0FBYyxHQUFyQixVQUFzQixLQUFnQjtRQUNwQyxPQUFPLElBQUksMEJBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNILDJCQUFDO0FBQUQsQ0FBQyxBQUxELElBS0MifQ==
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import IGraph from "../../../types/IGraph";
|
|
2
|
-
import IGraphIterationStrategy from "../../../types/IGraphIterationStrategy";
|
|
3
|
-
import IGraphIterator from "../../../types/IGraphIterator";
|
|
4
|
-
export default class DijkstraIterationStrategy<T> implements IGraphIterationStrategy<T> {
|
|
5
|
-
createIterator(graph: IGraph<T>): IGraphIterator<T>;
|
|
6
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var GraphIteratorDijkstra_1 = require("../iterator/GraphIteratorDijkstra");
|
|
4
|
-
var DijkstraIterationStrategy = /** @class */ (function () {
|
|
5
|
-
function DijkstraIterationStrategy() {
|
|
6
|
-
}
|
|
7
|
-
DijkstraIterationStrategy.prototype.createIterator = function (graph) {
|
|
8
|
-
return new GraphIteratorDijkstra_1.default(graph);
|
|
9
|
-
};
|
|
10
|
-
return DijkstraIterationStrategy;
|
|
11
|
-
}());
|
|
12
|
-
exports.default = DijkstraIterationStrategy;
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlqa3N0cmFJdGVyYXRpb25TdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvYWxnb3JpdGhtcy9ncmFwaC9pdGVyYXRvci1zdHJhdGVneS9EaWprc3RyYUl0ZXJhdGlvblN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsMkVBQXNFO0FBRXRFO0lBQUE7SUFLQSxDQUFDO0lBSFEsa0RBQWMsR0FBckIsVUFBc0IsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLCtCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDSCxnQ0FBQztBQUFELENBQUMsQUFMRCxJQUtDIn0=
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import IGraph from "../../../types/IGraph";
|
|
2
|
-
/**
|
|
3
|
-
* Get graph adjacency list
|
|
4
|
-
*
|
|
5
|
-
* @example
|
|
6
|
-
*
|
|
7
|
-
* Directed graph:
|
|
8
|
-
* - Bob [Maria]
|
|
9
|
-
* - Maria [Bob, John]
|
|
10
|
-
* - John []
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
*
|
|
14
|
-
* Undirected graph:
|
|
15
|
-
* - Bob [Maria]
|
|
16
|
-
* - Maria [Bob, John]
|
|
17
|
-
* - John [Maria]
|
|
18
|
-
**/
|
|
19
|
-
export declare const presenterAdjacencyLists: <T>(graph: IGraph<T>) => Map<T, T[]>;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.presenterAdjacencyLists = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Get graph adjacency list
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
*
|
|
9
|
-
* Directed graph:
|
|
10
|
-
* - Bob [Maria]
|
|
11
|
-
* - Maria [Bob, John]
|
|
12
|
-
* - John []
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
*
|
|
16
|
-
* Undirected graph:
|
|
17
|
-
* - Bob [Maria]
|
|
18
|
-
* - Maria [Bob, John]
|
|
19
|
-
* - John [Maria]
|
|
20
|
-
**/
|
|
21
|
-
exports.presenterAdjacencyLists = function (graph) {
|
|
22
|
-
return graph.vertices().reduce(function (map, vertex) {
|
|
23
|
-
var neighbors = graph.getVertexNeighbors(vertex);
|
|
24
|
-
map.set(vertex, neighbors);
|
|
25
|
-
return map;
|
|
26
|
-
}, new Map());
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGVyQWRqYWNlbmN5TGlzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2FsZ29yaXRobXMvZ3JhcGgvcHJlc2VudGVyL3ByZXNlbnRlckFkamFjZW5jeUxpc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7O0lBZ0JJO0FBQ1MsUUFBQSx1QkFBdUIsR0FBRyxVQUNyQyxLQUFnQjtJQUVoQixPQUFPLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBQyxHQUFxQixFQUFFLE1BQVM7UUFDOUQsSUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTNCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNoQixDQUFDLENBQUMifQ==
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import IGraph from "../../../types/IGraph";
|
|
2
|
-
import { TypeArrayMatrix } from "../../../types/TypeArrayMatrix";
|
|
3
|
-
/**
|
|
4
|
-
* Get graph adjacency matrix N x N
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
*
|
|
8
|
-
* Directed graph:
|
|
9
|
-
* - Bob [Maria]
|
|
10
|
-
* - Maria [Bob, John]
|
|
11
|
-
* - John []
|
|
12
|
-
*
|
|
13
|
-
* Its matrix:
|
|
14
|
-
* | Bob | Maria | John |
|
|
15
|
-
* Bob | 0 | 1 | 0 |
|
|
16
|
-
* Maria | 1 | 0 | 1 |
|
|
17
|
-
* John | 0 | 0 | 0 |
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
*
|
|
21
|
-
* Undirected graph:
|
|
22
|
-
* - Bob [Maria]
|
|
23
|
-
* - Maria [Bob, John]
|
|
24
|
-
* - John [Maria]
|
|
25
|
-
*
|
|
26
|
-
* Its matrix:
|
|
27
|
-
* | Bob | Maria | John |
|
|
28
|
-
* Bob | 0 | 1 | 0 |
|
|
29
|
-
* Maria | 1 | 0 | 1 |
|
|
30
|
-
* John | 0 | 1 | 0 |
|
|
31
|
-
*/
|
|
32
|
-
export declare const presenterAdjacencyMatrix: <T>(graph: IGraph<T>) => TypeArrayMatrix;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.presenterAdjacencyMatrix = void 0;
|
|
4
|
-
var constants_1 = require("../../../constants");
|
|
5
|
-
/**
|
|
6
|
-
* Get graph adjacency matrix N x N
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
*
|
|
10
|
-
* Directed graph:
|
|
11
|
-
* - Bob [Maria]
|
|
12
|
-
* - Maria [Bob, John]
|
|
13
|
-
* - John []
|
|
14
|
-
*
|
|
15
|
-
* Its matrix:
|
|
16
|
-
* | Bob | Maria | John |
|
|
17
|
-
* Bob | 0 | 1 | 0 |
|
|
18
|
-
* Maria | 1 | 0 | 1 |
|
|
19
|
-
* John | 0 | 0 | 0 |
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
*
|
|
23
|
-
* Undirected graph:
|
|
24
|
-
* - Bob [Maria]
|
|
25
|
-
* - Maria [Bob, John]
|
|
26
|
-
* - John [Maria]
|
|
27
|
-
*
|
|
28
|
-
* Its matrix:
|
|
29
|
-
* | Bob | Maria | John |
|
|
30
|
-
* Bob | 0 | 1 | 0 |
|
|
31
|
-
* Maria | 1 | 0 | 1 |
|
|
32
|
-
* John | 0 | 1 | 0 |
|
|
33
|
-
*/
|
|
34
|
-
exports.presenterAdjacencyMatrix = function (graph) {
|
|
35
|
-
var vertices = graph.vertices();
|
|
36
|
-
var matrix = new Array(graph.verticesCount());
|
|
37
|
-
vertices.forEach(function (graphVertexRow, rowIndex) {
|
|
38
|
-
matrix[rowIndex] = new Array(graph.verticesCount());
|
|
39
|
-
vertices.forEach(function (graphVertexColumn, columnIndex) {
|
|
40
|
-
var isElementLinked = graph.hasEdge(graphVertexRow, graphVertexColumn);
|
|
41
|
-
matrix[rowIndex][columnIndex] = isElementLinked
|
|
42
|
-
? constants_1.EDGE_EXISTS_STATE
|
|
43
|
-
: constants_1.EDGE_NOT_EXISTS_STATE;
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
return matrix;
|
|
47
|
-
};
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGVyQWRqYWNlbmN5TWF0cml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9hbGdvcml0aG1zL2dyYXBoL3ByZXNlbnRlci9wcmVzZW50ZXJBZGphY2VuY3lNYXRyaXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsZ0RBQThFO0FBRzlFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBQ1UsUUFBQSx3QkFBd0IsR0FBRyxVQUN0QyxLQUFnQjtJQUVoQixJQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsSUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFFaEQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFDLGNBQWMsRUFBRSxRQUFRO1FBQ3hDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUVwRCxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQUMsaUJBQWlCLEVBQUUsV0FBVztZQUM5QyxJQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBRXpFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxlQUFlO2dCQUM3QyxDQUFDLENBQUMsNkJBQWlCO2dCQUNuQixDQUFDLENBQUMsaUNBQXFCLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyJ9
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import IGraph from "../../../types/IGraph";
|
|
2
|
-
import IGraphIterationStrategy from "../../../types/IGraphIterationStrategy";
|
|
3
|
-
/**
|
|
4
|
-
* Check if graph has a path between two vertices
|
|
5
|
-
* @throws {IsNotFoundException} when start vertex was not found
|
|
6
|
-
* @throws {IsNotFoundException} when end vertex was not found
|
|
7
|
-
* @throws {IllegalStateException} when there is no path between two vertices
|
|
8
|
-
*/
|
|
9
|
-
export declare const hasPath: <T>(graph: IGraph<T>, from: T, to: T, strategy: IGraphIterationStrategy<T>) => boolean;
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hasPath = void 0;
|
|
4
|
-
var IsNotFoundException_1 = require("../../../exceptions/IsNotFoundException");
|
|
5
|
-
/**
|
|
6
|
-
* Check if graph has a path between two vertices
|
|
7
|
-
* @throws {IsNotFoundException} when start vertex was not found
|
|
8
|
-
* @throws {IsNotFoundException} when end vertex was not found
|
|
9
|
-
* @throws {IllegalStateException} when there is no path between two vertices
|
|
10
|
-
*/
|
|
11
|
-
exports.hasPath = function (graph, from, to, strategy) {
|
|
12
|
-
/* Validate */
|
|
13
|
-
if (!graph.hasVertex(from)) {
|
|
14
|
-
throw new IsNotFoundException_1.default("Start vertex was not found");
|
|
15
|
-
}
|
|
16
|
-
if (!graph.hasVertex(to)) {
|
|
17
|
-
throw new IsNotFoundException_1.default("End vertex was not found");
|
|
18
|
-
}
|
|
19
|
-
var iterator = strategy.createIterator(graph);
|
|
20
|
-
iterator.initIterator(from);
|
|
21
|
-
/* Find target element */
|
|
22
|
-
while (iterator.hasNext()) {
|
|
23
|
-
var next = iterator.next();
|
|
24
|
-
if (next === to) {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return false;
|
|
29
|
-
};
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzUGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvYWxnb3JpdGhtcy9ncmFwaC9zZWFyY2hpbmcvaGFzUGF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSwrRUFBMEU7QUFFMUU7Ozs7O0dBS0c7QUFDVSxRQUFBLE9BQU8sR0FBRyxVQUNyQixLQUFnQixFQUNoQixJQUFPLEVBQ1AsRUFBSyxFQUNMLFFBQW9DO0lBRXBDLGNBQWM7SUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUMxQixNQUFNLElBQUksNkJBQW1CLENBQUMsNEJBQTRCLENBQUMsQ0FBQztLQUM3RDtJQUNELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQ3hCLE1BQU0sSUFBSSw2QkFBbUIsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0tBQzNEO0lBRUQsSUFBTSxRQUFRLEdBQXNCLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkUsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU1Qix5QkFBeUI7SUFDekIsT0FBTyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDekIsSUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTdCLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtZQUNmLE9BQU8sSUFBSSxDQUFDO1NBQ2I7S0FDRjtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDIn0=
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import IGraph from "../../../types/IGraph";
|
|
2
|
-
import IGraphIterationStrategy from "../../../types/IGraphIterationStrategy";
|
|
3
|
-
/**
|
|
4
|
-
* Find the shortest path between two vertices
|
|
5
|
-
* @throws {IsNotFoundException} when start vertex was not found
|
|
6
|
-
* @throws {IsNotFoundException} when end vertex was not found
|
|
7
|
-
* @throws {IllegalStateException} when there is no path between two vertices
|
|
8
|
-
*/
|
|
9
|
-
export declare const shortestPath: <T>(graph: IGraph<T>, from: T, to: T, strategy: IGraphIterationStrategy<T>) => T[];
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.shortestPath = void 0;
|
|
4
|
-
var IsNotFoundException_1 = require("../../../exceptions/IsNotFoundException");
|
|
5
|
-
/**
|
|
6
|
-
* Find the shortest path between two vertices
|
|
7
|
-
* @throws {IsNotFoundException} when start vertex was not found
|
|
8
|
-
* @throws {IsNotFoundException} when end vertex was not found
|
|
9
|
-
* @throws {IllegalStateException} when there is no path between two vertices
|
|
10
|
-
*/
|
|
11
|
-
exports.shortestPath = function (graph, from, to, strategy) {
|
|
12
|
-
/* Validate */
|
|
13
|
-
if (!graph.hasVertex(from)) {
|
|
14
|
-
throw new IsNotFoundException_1.default("Start vertex was not found");
|
|
15
|
-
}
|
|
16
|
-
if (!graph.hasVertex(to)) {
|
|
17
|
-
throw new IsNotFoundException_1.default("End vertex was not found");
|
|
18
|
-
}
|
|
19
|
-
var iterator = strategy.createIterator(graph);
|
|
20
|
-
iterator.initIterator(from);
|
|
21
|
-
/* Find target element */
|
|
22
|
-
while (iterator.hasNext()) {
|
|
23
|
-
var next = iterator.next();
|
|
24
|
-
if (next === to) {
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return iterator.getPath(from, to);
|
|
29
|
-
};
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcnRlc3RQYXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9hbGdvcml0aG1zL2dyYXBoL3NlYXJjaGluZy9zaG9ydGVzdFBhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsK0VBQTBFO0FBRTFFOzs7OztHQUtHO0FBQ1UsUUFBQSxZQUFZLEdBQUcsVUFDMUIsS0FBZ0IsRUFDaEIsSUFBTyxFQUNQLEVBQUssRUFDTCxRQUFvQztJQUVwQyxjQUFjO0lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDMUIsTUFBTSxJQUFJLDZCQUFtQixDQUFDLDRCQUE0QixDQUFDLENBQUM7S0FDN0Q7SUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUN4QixNQUFNLElBQUksNkJBQW1CLENBQUMsMEJBQTBCLENBQUMsQ0FBQztLQUMzRDtJQUVELElBQU0sUUFBUSxHQUFzQixRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25FLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFNUIseUJBQXlCO0lBQ3pCLE9BQU8sUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ3pCLElBQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU3QixJQUFJLElBQUksS0FBSyxFQUFFLEVBQUU7WUFDZixNQUFNO1NBQ1A7S0FDRjtJQUVELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDIn0=
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.transposeDirectedGraph = void 0;
|
|
4
|
-
var createGraphFromMatrix_1 = require("../../../data-structures/Graph/_helpers/createGraphFromMatrix");
|
|
5
|
-
var EnumGraphType_1 = require("../../../types/EnumGraphType");
|
|
6
|
-
var presenterAdjacencyMatrix_1 = require("../presenter/presenterAdjacencyMatrix");
|
|
7
|
-
var transpose_matrix_1 = require("../../transpose-matrix");
|
|
8
|
-
exports.transposeDirectedGraph = function (sourceGraph) {
|
|
9
|
-
var verticesList = sourceGraph.vertices();
|
|
10
|
-
var matrix = presenterAdjacencyMatrix_1.presenterAdjacencyMatrix(sourceGraph);
|
|
11
|
-
var transposedMatrix = transpose_matrix_1.transposeMatrix(matrix);
|
|
12
|
-
return createGraphFromMatrix_1.createGraphFromMatrix(transposedMatrix, verticesList, EnumGraphType_1.EnumGraphType.DIRECTED);
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNwb3NlRGlyZWN0ZWRHcmFwaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvYWxnb3JpdGhtcy9ncmFwaC90cmFuc3Bvc2luZy90cmFuc3Bvc2VEaXJlY3RlZEdyYXBoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVHQUFzRztBQUN0Ryw4REFBNkQ7QUFDN0Qsa0ZBQWlGO0FBQ2pGLDJEQUF5RDtBQUU1QyxRQUFBLHNCQUFzQixHQUFHLFVBQ3BDLFdBQXNCO0lBRXRCLElBQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QyxJQUFNLE1BQU0sR0FBRyxtREFBd0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRCxJQUFNLGdCQUFnQixHQUFHLGtDQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFakQsT0FBTyw2Q0FBcUIsQ0FDMUIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWiw2QkFBYSxDQUFDLFFBQVEsQ0FDdkIsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { FnToMemoize } from "../types/FnToMemoize";
|
|
2
|
-
/**
|
|
3
|
-
* Wrapper function that storing the results of calls and returning the cached result when the same inputs occur again
|
|
4
|
-
*/
|
|
5
|
-
export declare const memoize: <Key, Value>(fn: FnToMemoize<Key, Value>) => FnToMemoize<Key, Value>;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.memoize = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Wrapper function that storing the results of calls and returning the cached result when the same inputs occur again
|
|
6
|
-
*/
|
|
7
|
-
exports.memoize = function (fn) {
|
|
8
|
-
var cache = new Map();
|
|
9
|
-
return function () {
|
|
10
|
-
var args = [];
|
|
11
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
12
|
-
args[_i] = arguments[_i];
|
|
13
|
-
}
|
|
14
|
-
var jsonArgs = JSON.stringify(args);
|
|
15
|
-
if (!cache.has(jsonArgs)) {
|
|
16
|
-
var result = fn.apply(void 0, args);
|
|
17
|
-
cache.set(jsonArgs, result);
|
|
18
|
-
}
|
|
19
|
-
return cache.get(jsonArgs);
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvYWxnb3JpdGhtcy9tZW1vaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSxPQUFPLEdBQUcsVUFDckIsRUFBMkI7SUFFM0IsSUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWlCLENBQUM7SUFFdkMsT0FBTztRQUFDLGNBQW1CO2FBQW5CLFVBQW1CLEVBQW5CLHFCQUFtQixFQUFuQixJQUFtQjtZQUFuQix5QkFBbUI7O1FBQ3pCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEIsSUFBTSxNQUFNLEdBQUcsRUFBRSxlQUFJLElBQUksQ0FBQyxDQUFDO1lBQzNCLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzdCO1FBRUQsT0FBYyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.bubbleSort = void 0;
|
|
4
|
-
var utils_1 = require("../../utils");
|
|
5
|
-
/**
|
|
6
|
-
* Bubble sorting algorithm
|
|
7
|
-
*
|
|
8
|
-
* @description
|
|
9
|
-
* Time complexity: Best O(n); Avg O(n \^ 2); Worst O(n \^ 2)
|
|
10
|
-
* @description
|
|
11
|
-
* Memory complexity: Worst case: O(1)
|
|
12
|
-
*/
|
|
13
|
-
exports.bubbleSort = function (arr) {
|
|
14
|
-
for (var i = 0; i < arr.length - 1; i++) {
|
|
15
|
-
for (var j = 0; j < arr.length - 1; j++) {
|
|
16
|
-
if (arr[j] > arr[j + 1]) {
|
|
17
|
-
utils_1.swapArrayItems(arr, j, j + 1);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return arr;
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnViYmxlLXNvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2FsZ29yaXRobXMvc29ydHMvYnViYmxlLXNvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQTZDO0FBRTdDOzs7Ozs7O0dBT0c7QUFDVSxRQUFBLFVBQVUsR0FBRyxVQUFDLEdBQWtCO0lBQzNDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN2QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDdkIsc0JBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUMvQjtTQUNGO0tBQ0Y7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQyJ9
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.insertionSort = void 0;
|
|
4
|
-
var utils_1 = require("../../utils");
|
|
5
|
-
/**
|
|
6
|
-
* Insertion sorting algorithm
|
|
7
|
-
*
|
|
8
|
-
* @description
|
|
9
|
-
* Time complexity: Best O(n); Avg O(n \^ 2); Worst O(n \^ 2);
|
|
10
|
-
* @description
|
|
11
|
-
* Memory complexity: Worst case: O(1)
|
|
12
|
-
*/
|
|
13
|
-
exports.insertionSort = function (arr) {
|
|
14
|
-
for (var i = 1; i < arr.length; i++) {
|
|
15
|
-
var current = arr[i];
|
|
16
|
-
var j = i - 1;
|
|
17
|
-
while (j >= 0 && arr[j] > current) {
|
|
18
|
-
utils_1.swapArrayItems(arr, j + 1, j);
|
|
19
|
-
j--;
|
|
20
|
-
}
|
|
21
|
-
arr[j + 1] = current;
|
|
22
|
-
}
|
|
23
|
-
return arr;
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0aW9uLXNvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2FsZ29yaXRobXMvc29ydHMvaW5zZXJ0aW9uLXNvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQTZDO0FBRTdDOzs7Ozs7O0dBT0c7QUFDVSxRQUFBLGFBQWEsR0FBRyxVQUFDLEdBQWtCO0lBQzlDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ25DLElBQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWQsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUU7WUFDakMsc0JBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QixDQUFDLEVBQUUsQ0FBQztTQUNMO1FBRUQsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7S0FDdEI7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQyJ9
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Merge sorting algorithm
|
|
3
|
-
*
|
|
4
|
-
* @description
|
|
5
|
-
* Time complexity: Best O(n * log(n)); Avg O(n * log(n)); Worst O(n * log(n))
|
|
6
|
-
* @description
|
|
7
|
-
* Memory complexity: Worst case: O(n)
|
|
8
|
-
*/
|
|
9
|
-
export declare const mergeSort: (arr: Array<number>) => Array<number>;
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mergeSort = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Merge two sorted arrays into one array
|
|
6
|
-
*/
|
|
7
|
-
var merge = function (arr, leftIndex, midIndex, rightIndex) {
|
|
8
|
-
var container = arr.slice(leftIndex, rightIndex + 1);
|
|
9
|
-
var resultArrIndex = leftIndex;
|
|
10
|
-
var leftHalfIndex = leftIndex;
|
|
11
|
-
var rightHalfIndex = midIndex + 1;
|
|
12
|
-
/** While both halves of array are not ended */
|
|
13
|
-
while (leftHalfIndex <= midIndex && rightHalfIndex <= rightIndex) {
|
|
14
|
-
var leftHalfElement = container[leftHalfIndex - leftIndex];
|
|
15
|
-
var rightHalfElement = container[rightHalfIndex - leftIndex];
|
|
16
|
-
if (leftHalfElement < rightHalfElement) {
|
|
17
|
-
arr[resultArrIndex] = leftHalfElement;
|
|
18
|
-
leftHalfIndex++;
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
arr[resultArrIndex] = rightHalfElement;
|
|
22
|
-
rightHalfIndex++;
|
|
23
|
-
}
|
|
24
|
-
resultArrIndex++;
|
|
25
|
-
}
|
|
26
|
-
/** If one of halves is ended, the remaining one will just be pushed to result */
|
|
27
|
-
while (leftHalfIndex <= midIndex) {
|
|
28
|
-
arr[resultArrIndex] = container[leftHalfIndex - leftIndex];
|
|
29
|
-
resultArrIndex++;
|
|
30
|
-
leftHalfIndex++;
|
|
31
|
-
}
|
|
32
|
-
while (rightHalfIndex <= rightIndex) {
|
|
33
|
-
arr[resultArrIndex] = container[rightHalfIndex - leftIndex];
|
|
34
|
-
resultArrIndex++;
|
|
35
|
-
rightHalfIndex++;
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Divide array into 2 halves and merge them
|
|
40
|
-
*/
|
|
41
|
-
var sortRange = function (arr, leftIndex, rightIndex) {
|
|
42
|
-
if (rightIndex > leftIndex) {
|
|
43
|
-
var midIndex = Math.floor(leftIndex + (rightIndex - leftIndex) / 2);
|
|
44
|
-
sortRange(arr, leftIndex, midIndex);
|
|
45
|
-
sortRange(arr, midIndex + 1, rightIndex);
|
|
46
|
-
merge(arr, leftIndex, midIndex, rightIndex);
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Merge sorting algorithm
|
|
51
|
-
*
|
|
52
|
-
* @description
|
|
53
|
-
* Time complexity: Best O(n * log(n)); Avg O(n * log(n)); Worst O(n * log(n))
|
|
54
|
-
* @description
|
|
55
|
-
* Memory complexity: Worst case: O(n)
|
|
56
|
-
*/
|
|
57
|
-
exports.mergeSort = function (arr) {
|
|
58
|
-
sortRange(arr, 0, arr.length - 1);
|
|
59
|
-
return arr;
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2Utc29ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvYWxnb3JpdGhtcy9zb3J0cy9tZXJnZS1zb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsSUFBTSxLQUFLLEdBQUcsVUFDWixHQUFrQixFQUNsQixTQUFpQixFQUNqQixRQUFnQixFQUNoQixVQUFrQjtJQUVsQixJQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFdkQsSUFBSSxjQUFjLEdBQUcsU0FBUyxDQUFDO0lBQy9CLElBQUksYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUM5QixJQUFJLGNBQWMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRWxDLCtDQUErQztJQUMvQyxPQUFPLGFBQWEsSUFBSSxRQUFRLElBQUksY0FBYyxJQUFJLFVBQVUsRUFBRTtRQUNoRSxJQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBQzdELElBQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUUvRCxJQUFJLGVBQWUsR0FBRyxnQkFBZ0IsRUFBRTtZQUN0QyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsZUFBZSxDQUFDO1lBQ3RDLGFBQWEsRUFBRSxDQUFDO1NBQ2pCO2FBQU07WUFDTCxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7WUFDdkMsY0FBYyxFQUFFLENBQUM7U0FDbEI7UUFDRCxjQUFjLEVBQUUsQ0FBQztLQUNsQjtJQUVELGlGQUFpRjtJQUNqRixPQUFPLGFBQWEsSUFBSSxRQUFRLEVBQUU7UUFDaEMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDM0QsY0FBYyxFQUFFLENBQUM7UUFDakIsYUFBYSxFQUFFLENBQUM7S0FDakI7SUFDRCxPQUFPLGNBQWMsSUFBSSxVQUFVLEVBQUU7UUFDbkMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDNUQsY0FBYyxFQUFFLENBQUM7UUFDakIsY0FBYyxFQUFFLENBQUM7S0FDbEI7QUFDSCxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILElBQU0sU0FBUyxHQUFHLFVBQ2hCLEdBQWtCLEVBQ2xCLFNBQWlCLEVBQ2pCLFVBQWtCO0lBRWxCLElBQUksVUFBVSxHQUFHLFNBQVMsRUFBRTtRQUMxQixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUV0RSxTQUFTLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNwQyxTQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFekMsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQzdDO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7R0FPRztBQUNVLFFBQUEsU0FBUyxHQUFHLFVBQUMsR0FBa0I7SUFDMUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUVsQyxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQyJ9
|