occam-directed-graphs 3.0.82 → 3.0.84

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/lib/vertex.js CHANGED
@@ -8,264 +8,142 @@ Object.defineProperty(exports, "default", {
8
8
  return Vertex;
9
9
  }
10
10
  });
11
- var _necessary = require("necessary");
12
- var _vertex = require("./utilities/vertex");
13
- var _search = require("./utilities/search");
14
- function _class_call_check(instance, Constructor) {
15
- if (!(instance instanceof Constructor)) {
16
- throw new TypeError("Cannot call a class as a function");
11
+ const _necessary = require("necessary");
12
+ const _vertex = require("./utilities/vertex");
13
+ const _search = require("./utilities/search");
14
+ const { last, tail } = _necessary.arrayUtilities;
15
+ class Vertex {
16
+ constructor(name, index, immediateSuccessorVertexes, immediatePredecessorVertexes){
17
+ this.name = name;
18
+ this.index = index;
19
+ this.immediateSuccessorVertexes = immediateSuccessorVertexes;
20
+ this.immediatePredecessorVertexes = immediatePredecessorVertexes;
17
21
  }
18
- }
19
- function _defineProperties(target, props) {
20
- for(var i = 0; i < props.length; i++){
21
- var descriptor = props[i];
22
- descriptor.enumerable = descriptor.enumerable || false;
23
- descriptor.configurable = true;
24
- if ("value" in descriptor) descriptor.writable = true;
25
- Object.defineProperty(target, descriptor.key, descriptor);
22
+ getName() {
23
+ return this.name;
26
24
  }
27
- }
28
- function _create_class(Constructor, protoProps, staticProps) {
29
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
30
- if (staticProps) _defineProperties(Constructor, staticProps);
31
- return Constructor;
32
- }
33
- var last = _necessary.arrayUtilities.last, tail = _necessary.arrayUtilities.tail;
34
- var Vertex = /*#__PURE__*/ function() {
35
- function Vertex(name, index, immediateSuccessorVertexes, immediatePredecessorVertexes) {
36
- _class_call_check(this, Vertex);
25
+ getIndex() {
26
+ return this.index;
27
+ }
28
+ getImmediateSuccessorVertexes() {
29
+ return this.immediateSuccessorVertexes;
30
+ }
31
+ getImmediatePredecessorVertexes() {
32
+ return this.immediatePredecessorVertexes;
33
+ }
34
+ isStranded() {
35
+ const immediateSuccessorVertexesLength = this.immediateSuccessorVertexes.length, immediatePredecessorVertexesLength = this.immediatePredecessorVertexes.length, stranded = immediateSuccessorVertexesLength === 0 && immediatePredecessorVertexesLength === 0;
36
+ return stranded;
37
+ }
38
+ isVertexForwardsReachable(vertex) {
39
+ const forwardsReachableVertexes = this.retrieveForwardsReachableVertexes(vertex), lastForwardsReachableVertex = last(forwardsReachableVertexes), vertexForwardsReachable = vertex === lastForwardsReachableVertex;
40
+ return vertexForwardsReachable;
41
+ }
42
+ isEdgePresentBySourceVertex(sourceVertex) {
43
+ const sourceVertexImmediatePredecessorVertex = this.isVertexImmediatePredecessorVertex(sourceVertex), edgePresent = sourceVertexImmediatePredecessorVertex; ///
44
+ return edgePresent;
45
+ }
46
+ isEdgePresentByTargetVertex(targetVertex) {
47
+ const targetVertexImmediateSuccessorVertex = this.isVertexImmediateSuccessorVertex(targetVertex), edgePresent = targetVertexImmediateSuccessorVertex; ///
48
+ return edgePresent;
49
+ }
50
+ retrieveSuccessorVertexNames() {
51
+ const forwardsReachableVertexes = this.retrieveForwardsReachableVertexes(), forwardsReachableVertexesTail = tail(forwardsReachableVertexes), successorVertexes = forwardsReachableVertexesTail, successorVertexNames = (0, _vertex.vertexNamesFromVertexes)(successorVertexes);
52
+ return successorVertexNames;
53
+ }
54
+ retrievePredecessorVertexNames() {
55
+ const backwardsReachableVertexes = this.retrieveBackwardsReachableVertexes(), backwardsReachableVertexesTail = tail(backwardsReachableVertexes), predecessorVertexes = backwardsReachableVertexesTail, predecessorVertexNames = (0, _vertex.vertexNamesFromVertexes)(predecessorVertexes);
56
+ return predecessorVertexNames;
57
+ }
58
+ retrieveForwardsReachableVertexes(vertex = null) {
59
+ const vertexA = vertex, visitedVertexes = this.forwardsDepthFirstSearch((vertex)=>{
60
+ const vertexB = vertex, terminate = vertexA === vertexB;
61
+ if (terminate) {
62
+ return true;
63
+ }
64
+ }), forwardsReachableVertexes = visitedVertexes; ///
65
+ return forwardsReachableVertexes;
66
+ }
67
+ retrieveBackwardsReachableVertexes(vertex = null) {
68
+ const vertexA = vertex, visitedVertexes = this.backwardsDepthFirstSearch((vertex)=>{
69
+ const vertexB = vertex, terminate = vertexA === vertexB;
70
+ if (terminate) {
71
+ return true;
72
+ }
73
+ }), backwardsReachableVertexes = visitedVertexes; ///
74
+ return backwardsReachableVertexes;
75
+ }
76
+ isVertexImmediateSuccessorVertex(vertex) {
77
+ const vertexImmediateSuccessorVertex = this.immediateSuccessorVertexes.includes(vertex);
78
+ return vertexImmediateSuccessorVertex;
79
+ }
80
+ isVertexImmediatePredecessorVertex(vertex) {
81
+ const vertexImmediatePredecessorVertex = this.immediatePredecessorVertexes.includes(vertex);
82
+ return vertexImmediatePredecessorVertex;
83
+ }
84
+ getImmediateSuccessorVertexNames() {
85
+ const immediateSuccessorVertexNames = (0, _vertex.vertexNamesFromVertexes)(this.immediateSuccessorVertexes);
86
+ return immediateSuccessorVertexNames;
87
+ }
88
+ getImmediatePredecessorVertexNames() {
89
+ const immediatePredecessorVertexNames = (0, _vertex.vertexNamesFromVertexes)(this.immediatePredecessorVertexes);
90
+ return immediatePredecessorVertexNames;
91
+ }
92
+ setName(name) {
37
93
  this.name = name;
94
+ }
95
+ setIndex(index) {
38
96
  this.index = index;
97
+ }
98
+ setImmediateSuccessorVertexes(immediateSuccessorVertexes) {
39
99
  this.immediateSuccessorVertexes = immediateSuccessorVertexes;
100
+ }
101
+ setImmediatePredecessorVertexes(immediatePredecessorVertexes) {
40
102
  this.immediatePredecessorVertexes = immediatePredecessorVertexes;
41
103
  }
42
- _create_class(Vertex, [
43
- {
44
- key: "getName",
45
- value: function getName() {
46
- return this.name;
47
- }
48
- },
49
- {
50
- key: "getIndex",
51
- value: function getIndex() {
52
- return this.index;
53
- }
54
- },
55
- {
56
- key: "getImmediateSuccessorVertexes",
57
- value: function getImmediateSuccessorVertexes() {
58
- return this.immediateSuccessorVertexes;
59
- }
60
- },
61
- {
62
- key: "getImmediatePredecessorVertexes",
63
- value: function getImmediatePredecessorVertexes() {
64
- return this.immediatePredecessorVertexes;
65
- }
66
- },
67
- {
68
- key: "isStranded",
69
- value: function isStranded() {
70
- var immediateSuccessorVertexesLength = this.immediateSuccessorVertexes.length, immediatePredecessorVertexesLength = this.immediatePredecessorVertexes.length, stranded = immediateSuccessorVertexesLength === 0 && immediatePredecessorVertexesLength === 0;
71
- return stranded;
72
- }
73
- },
74
- {
75
- key: "isVertexForwardsReachable",
76
- value: function isVertexForwardsReachable(vertex) {
77
- var forwardsReachableVertexes = this.retrieveForwardsReachableVertexes(vertex), lastForwardsReachableVertex = last(forwardsReachableVertexes), vertexForwardsReachable = vertex === lastForwardsReachableVertex;
78
- return vertexForwardsReachable;
79
- }
80
- },
81
- {
82
- key: "isEdgePresentBySourceVertex",
83
- value: function isEdgePresentBySourceVertex(sourceVertex) {
84
- var sourceVertexImmediatePredecessorVertex = this.isVertexImmediatePredecessorVertex(sourceVertex), edgePresent = sourceVertexImmediatePredecessorVertex; ///
85
- return edgePresent;
86
- }
87
- },
88
- {
89
- key: "isEdgePresentByTargetVertex",
90
- value: function isEdgePresentByTargetVertex(targetVertex) {
91
- var targetVertexImmediateSuccessorVertex = this.isVertexImmediateSuccessorVertex(targetVertex), edgePresent = targetVertexImmediateSuccessorVertex; ///
92
- return edgePresent;
93
- }
94
- },
95
- {
96
- key: "retrieveSuccessorVertexNames",
97
- value: function retrieveSuccessorVertexNames() {
98
- var forwardsReachableVertexes = this.retrieveForwardsReachableVertexes(), forwardsReachableVertexesTail = tail(forwardsReachableVertexes), successorVertexes = forwardsReachableVertexesTail, successorVertexNames = (0, _vertex.vertexNamesFromVertexes)(successorVertexes);
99
- return successorVertexNames;
100
- }
101
- },
102
- {
103
- key: "retrievePredecessorVertexNames",
104
- value: function retrievePredecessorVertexNames() {
105
- var backwardsReachableVertexes = this.retrieveBackwardsReachableVertexes(), backwardsReachableVertexesTail = tail(backwardsReachableVertexes), predecessorVertexes = backwardsReachableVertexesTail, predecessorVertexNames = (0, _vertex.vertexNamesFromVertexes)(predecessorVertexes);
106
- return predecessorVertexNames;
107
- }
108
- },
109
- {
110
- key: "retrieveForwardsReachableVertexes",
111
- value: function retrieveForwardsReachableVertexes() {
112
- var vertex = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null;
113
- var vertexA = vertex, visitedVertexes = this.forwardsDepthFirstSearch(function(vertex) {
114
- var vertexB = vertex, terminate = vertexA === vertexB;
115
- if (terminate) {
116
- return true;
117
- }
118
- }), forwardsReachableVertexes = visitedVertexes; ///
119
- return forwardsReachableVertexes;
120
- }
121
- },
122
- {
123
- key: "retrieveBackwardsReachableVertexes",
124
- value: function retrieveBackwardsReachableVertexes() {
125
- var vertex = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null;
126
- var vertexA = vertex, visitedVertexes = this.backwardsDepthFirstSearch(function(vertex) {
127
- var vertexB = vertex, terminate = vertexA === vertexB;
128
- if (terminate) {
129
- return true;
130
- }
131
- }), backwardsReachableVertexes = visitedVertexes; ///
132
- return backwardsReachableVertexes;
133
- }
134
- },
135
- {
136
- key: "isVertexImmediateSuccessorVertex",
137
- value: function isVertexImmediateSuccessorVertex(vertex) {
138
- var vertexImmediateSuccessorVertex = this.immediateSuccessorVertexes.includes(vertex);
139
- return vertexImmediateSuccessorVertex;
140
- }
141
- },
142
- {
143
- key: "isVertexImmediatePredecessorVertex",
144
- value: function isVertexImmediatePredecessorVertex(vertex) {
145
- var vertexImmediatePredecessorVertex = this.immediatePredecessorVertexes.includes(vertex);
146
- return vertexImmediatePredecessorVertex;
147
- }
148
- },
149
- {
150
- key: "getImmediateSuccessorVertexNames",
151
- value: function getImmediateSuccessorVertexNames() {
152
- var immediateSuccessorVertexNames = (0, _vertex.vertexNamesFromVertexes)(this.immediateSuccessorVertexes);
153
- return immediateSuccessorVertexNames;
154
- }
155
- },
156
- {
157
- key: "getImmediatePredecessorVertexNames",
158
- value: function getImmediatePredecessorVertexNames() {
159
- var immediatePredecessorVertexNames = (0, _vertex.vertexNamesFromVertexes)(this.immediatePredecessorVertexes);
160
- return immediatePredecessorVertexNames;
161
- }
162
- },
163
- {
164
- key: "setName",
165
- value: function setName(name) {
166
- this.name = name;
167
- }
168
- },
169
- {
170
- key: "setIndex",
171
- value: function setIndex(index) {
172
- this.index = index;
173
- }
174
- },
175
- {
176
- key: "setImmediateSuccessorVertexes",
177
- value: function setImmediateSuccessorVertexes(immediateSuccessorVertexes) {
178
- this.immediateSuccessorVertexes = immediateSuccessorVertexes;
179
- }
180
- },
181
- {
182
- key: "setImmediatePredecessorVertexes",
183
- value: function setImmediatePredecessorVertexes(immediatePredecessorVertexes) {
184
- this.immediatePredecessorVertexes = immediatePredecessorVertexes;
185
- }
186
- },
187
- {
188
- key: "decrementIndex",
189
- value: function decrementIndex() {
190
- this.index--;
191
- }
192
- },
193
- {
194
- key: "addImmediateSuccessorVertex",
195
- value: function addImmediateSuccessorVertex(immediateSuccessorVertex) {
196
- this.immediateSuccessorVertexes.push(immediateSuccessorVertex);
197
- }
198
- },
199
- {
200
- key: "addImmediatePredecessorVertex",
201
- value: function addImmediatePredecessorVertex(immediatePredecessorVertex) {
202
- this.immediatePredecessorVertexes.push(immediatePredecessorVertex);
203
- }
204
- },
205
- {
206
- key: "removeImmediateSuccessorVertex",
207
- value: function removeImmediateSuccessorVertex(immediateSuccessorVertex) {
208
- var index = this.immediateSuccessorVertexes.indexOf(immediateSuccessorVertex), start = index, deleteCount = 1;
209
- this.immediateSuccessorVertexes.splice(start, deleteCount);
210
- }
211
- },
212
- {
213
- key: "removeImmediatePredecessorVertex",
214
- value: function removeImmediatePredecessorVertex(immediatePredecessorVertex) {
215
- var index = this.immediatePredecessorVertexes.indexOf(immediatePredecessorVertex), start = index, deleteCount = 1;
216
- this.immediatePredecessorVertexes.splice(start, deleteCount);
217
- }
218
- },
219
- {
220
- key: "forwardsDepthFirstSearch",
221
- value: function forwardsDepthFirstSearch(callback) {
222
- var vertex = this, visitedVertexes = [];
223
- (0, _search.forwardsDepthFirstSearch)(vertex, callback, visitedVertexes);
224
- return visitedVertexes;
225
- }
226
- },
227
- {
228
- key: "backwardsDepthFirstSearch",
229
- value: function backwardsDepthFirstSearch(callback) {
230
- var vertex = this, visitedVertexes = [];
231
- (0, _search.backwardsDepthFirstSearch)(vertex, callback, visitedVertexes);
232
- return visitedVertexes;
233
- }
234
- },
235
- {
236
- key: "someImmediateSuccessorVertex",
237
- value: function someImmediateSuccessorVertex(callback) {
238
- return this.immediateSuccessorVertexes.some(callback);
239
- }
240
- },
241
- {
242
- key: "someImmediatePredecessorVertex",
243
- value: function someImmediatePredecessorVertex(callback) {
244
- return this.immediatePredecessorVertexes.some(callback);
245
- }
246
- },
247
- {
248
- key: "forEachImmediateSuccessorVertex",
249
- value: function forEachImmediateSuccessorVertex(callback) {
250
- this.immediateSuccessorVertexes.forEach(callback);
251
- }
252
- },
253
- {
254
- key: "forEachImmediatePredecessorVertex",
255
- value: function forEachImmediatePredecessorVertex(callback) {
256
- this.immediatePredecessorVertexes.forEach(callback);
257
- }
258
- }
259
- ], [
260
- {
261
- key: "fromNameAndIndex",
262
- value: function fromNameAndIndex(name, index) {
263
- var immediateSuccessorVertexes = [], immediatePredecessorVertexes = [], dependencyVertex = new Vertex(name, index, immediateSuccessorVertexes, immediatePredecessorVertexes);
264
- return dependencyVertex;
265
- }
266
- }
267
- ]);
268
- return Vertex;
269
- }();
104
+ decrementIndex() {
105
+ this.index--;
106
+ }
107
+ addImmediateSuccessorVertex(immediateSuccessorVertex) {
108
+ this.immediateSuccessorVertexes.push(immediateSuccessorVertex);
109
+ }
110
+ addImmediatePredecessorVertex(immediatePredecessorVertex) {
111
+ this.immediatePredecessorVertexes.push(immediatePredecessorVertex);
112
+ }
113
+ removeImmediateSuccessorVertex(immediateSuccessorVertex) {
114
+ const index = this.immediateSuccessorVertexes.indexOf(immediateSuccessorVertex), start = index, deleteCount = 1;
115
+ this.immediateSuccessorVertexes.splice(start, deleteCount);
116
+ }
117
+ removeImmediatePredecessorVertex(immediatePredecessorVertex) {
118
+ const index = this.immediatePredecessorVertexes.indexOf(immediatePredecessorVertex), start = index, deleteCount = 1;
119
+ this.immediatePredecessorVertexes.splice(start, deleteCount);
120
+ }
121
+ forwardsDepthFirstSearch(callback) {
122
+ const vertex = this, visitedVertexes = [];
123
+ (0, _search.forwardsDepthFirstSearch)(vertex, callback, visitedVertexes);
124
+ return visitedVertexes;
125
+ }
126
+ backwardsDepthFirstSearch(callback) {
127
+ const vertex = this, visitedVertexes = [];
128
+ (0, _search.backwardsDepthFirstSearch)(vertex, callback, visitedVertexes);
129
+ return visitedVertexes;
130
+ }
131
+ someImmediateSuccessorVertex(callback) {
132
+ return this.immediateSuccessorVertexes.some(callback);
133
+ }
134
+ someImmediatePredecessorVertex(callback) {
135
+ return this.immediatePredecessorVertexes.some(callback);
136
+ }
137
+ forEachImmediateSuccessorVertex(callback) {
138
+ this.immediateSuccessorVertexes.forEach(callback);
139
+ }
140
+ forEachImmediatePredecessorVertex(callback) {
141
+ this.immediatePredecessorVertexes.forEach(callback);
142
+ }
143
+ static fromNameAndIndex(name, index) {
144
+ const immediateSuccessorVertexes = [], immediatePredecessorVertexes = [], dependencyVertex = new Vertex(name, index, immediateSuccessorVertexes, immediatePredecessorVertexes);
145
+ return dependencyVertex;
146
+ }
147
+ }
270
148
 
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJ0ZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgeyB2ZXJ0ZXhOYW1lc0Zyb21WZXJ0ZXhlcyB9IGZyb20gXCIuL3V0aWxpdGllcy92ZXJ0ZXhcIjtcbmltcG9ydCB7IGZvcndhcmRzRGVwdGhGaXJzdFNlYXJjaCwgYmFja3dhcmRzRGVwdGhGaXJzdFNlYXJjaCB9IGZyb20gXCIuL3V0aWxpdGllcy9zZWFyY2hcIjtcblxuY29uc3QgeyBsYXN0LCB0YWlsIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVydGV4IHtcbiAgY29uc3RydWN0b3IobmFtZSwgaW5kZXgsIGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzLCBpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmluZGV4ID0gaW5kZXg7XG4gICAgdGhpcy5pbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlcyA9IGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzO1xuICAgIHRoaXMuaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcyA9IGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4ZXM7XG4gIH1cblxuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICBnZXRJbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbmRleDtcbiAgfVxuXG4gIGdldEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzKCkge1xuICAgIHJldHVybiB0aGlzLmltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzO1xuICB9XG5cbiAgZ2V0SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcygpIHtcbiAgICByZXR1cm4gdGhpcy5pbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzO1xuICB9XG5cbiAgaXNTdHJhbmRlZCgpIHtcbiAgICBjb25zdCBpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlc0xlbmd0aCA9IHRoaXMuaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4ZXMubGVuZ3RoLFxuICAgICAgICAgIGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4ZXNMZW5ndGggPSB0aGlzLmltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4ZXMubGVuZ3RoLFxuICAgICAgICAgIHN0cmFuZGVkID0gKChpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlc0xlbmd0aCA9PT0gMCkgJiYgKGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4ZXNMZW5ndGggPT09IDApKTtcblxuICAgIHJldHVybiBzdHJhbmRlZDtcbiAgfVxuXG4gIGlzVmVydGV4Rm9yd2FyZHNSZWFjaGFibGUodmVydGV4KSB7XG4gICAgY29uc3QgZm9yd2FyZHNSZWFjaGFibGVWZXJ0ZXhlcyA9IHRoaXMucmV0cmlldmVGb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzKHZlcnRleCksXG4gICAgICAgICAgbGFzdEZvcndhcmRzUmVhY2hhYmxlVmVydGV4ID0gbGFzdChmb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzKSxcbiAgICAgICAgICB2ZXJ0ZXhGb3J3YXJkc1JlYWNoYWJsZSA9ICh2ZXJ0ZXggPT09IGxhc3RGb3J3YXJkc1JlYWNoYWJsZVZlcnRleCk7XG5cbiAgICByZXR1cm4gdmVydGV4Rm9yd2FyZHNSZWFjaGFibGU7XG4gIH1cblxuICBpc0VkZ2VQcmVzZW50QnlTb3VyY2VWZXJ0ZXgoc291cmNlVmVydGV4KSB7XG4gICAgY29uc3Qgc291cmNlVmVydGV4SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXggPSB0aGlzLmlzVmVydGV4SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXgoc291cmNlVmVydGV4KSxcbiAgICAgICAgICBlZGdlUHJlc2VudCA9IHNvdXJjZVZlcnRleEltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4OyAvLy9cblxuICAgIHJldHVybiBlZGdlUHJlc2VudDtcbiAgfVxuXG4gIGlzRWRnZVByZXNlbnRCeVRhcmdldFZlcnRleCh0YXJnZXRWZXJ0ZXgpIHtcbiAgICBjb25zdCB0YXJnZXRWZXJ0ZXhJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXggPSB0aGlzLmlzVmVydGV4SW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4KHRhcmdldFZlcnRleCksXG4gICAgICAgICAgZWRnZVByZXNlbnQgPSB0YXJnZXRWZXJ0ZXhJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXg7IC8vL1xuXG4gICAgcmV0dXJuIGVkZ2VQcmVzZW50O1xuICB9XG5cbiAgcmV0cmlldmVTdWNjZXNzb3JWZXJ0ZXhOYW1lcygpIHtcbiAgICBjb25zdCBmb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzID0gdGhpcy5yZXRyaWV2ZUZvcndhcmRzUmVhY2hhYmxlVmVydGV4ZXMoKSxcbiAgICAgICAgICBmb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzVGFpbCA9IHRhaWwoZm9yd2FyZHNSZWFjaGFibGVWZXJ0ZXhlcyksXG4gICAgICAgICAgc3VjY2Vzc29yVmVydGV4ZXMgPSBmb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzVGFpbCxcbiAgICAgICAgICBzdWNjZXNzb3JWZXJ0ZXhOYW1lcyA9IHZlcnRleE5hbWVzRnJvbVZlcnRleGVzKHN1Y2Nlc3NvclZlcnRleGVzKTtcblxuICAgIHJldHVybiBzdWNjZXNzb3JWZXJ0ZXhOYW1lcztcbiAgfVxuXG4gIHJldHJpZXZlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcygpIHtcbiAgICBjb25zdCBiYWNrd2FyZHNSZWFjaGFibGVWZXJ0ZXhlcyA9IHRoaXMucmV0cmlldmVCYWNrd2FyZHNSZWFjaGFibGVWZXJ0ZXhlcygpLFxuICAgICAgICAgIGJhY2t3YXJkc1JlYWNoYWJsZVZlcnRleGVzVGFpbCA9IHRhaWwoYmFja3dhcmRzUmVhY2hhYmxlVmVydGV4ZXMpLFxuICAgICAgICAgIHByZWRlY2Vzc29yVmVydGV4ZXMgPSBiYWNrd2FyZHNSZWFjaGFibGVWZXJ0ZXhlc1RhaWwsXG4gICAgICAgICAgcHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcyA9IHZlcnRleE5hbWVzRnJvbVZlcnRleGVzKHByZWRlY2Vzc29yVmVydGV4ZXMpO1xuXG4gICAgcmV0dXJuIHByZWRlY2Vzc29yVmVydGV4TmFtZXM7XG4gIH1cblxuICByZXRyaWV2ZUZvcndhcmRzUmVhY2hhYmxlVmVydGV4ZXModmVydGV4ID0gbnVsbCkge1xuICAgIGNvbnN0IHZlcnRleEEgPSB2ZXJ0ZXgsIC8vL1xuICAgICAgICAgIHZpc2l0ZWRWZXJ0ZXhlcyA9IHRoaXMuZm9yd2FyZHNEZXB0aEZpcnN0U2VhcmNoKCh2ZXJ0ZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnRleEIgPSB2ZXJ0ZXgsIC8vL1xuICAgICAgICAgICAgICAgICAgdGVybWluYXRlID0gKHZlcnRleEEgPT09IHZlcnRleEIpO1xuXG4gICAgICAgICAgICBpZiAodGVybWluYXRlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGZvcndhcmRzUmVhY2hhYmxlVmVydGV4ZXMgPSB2aXNpdGVkVmVydGV4ZXM7ICAvLy9cblxuICAgIHJldHVybiBmb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzO1xuICB9XG5cbiAgcmV0cmlldmVCYWNrd2FyZHNSZWFjaGFibGVWZXJ0ZXhlcyh2ZXJ0ZXggPSBudWxsKSB7XG4gICAgY29uc3QgdmVydGV4QSA9IHZlcnRleCwgLy8vXG4gICAgICAgICAgdmlzaXRlZFZlcnRleGVzID0gdGhpcy5iYWNrd2FyZHNEZXB0aEZpcnN0U2VhcmNoKCh2ZXJ0ZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnRleEIgPSB2ZXJ0ZXgsIC8vL1xuICAgICAgICAgICAgICAgICAgdGVybWluYXRlID0gKHZlcnRleEEgPT09IHZlcnRleEIpO1xuXG4gICAgICAgICAgICBpZiAodGVybWluYXRlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGJhY2t3YXJkc1JlYWNoYWJsZVZlcnRleGVzID0gdmlzaXRlZFZlcnRleGVzOyAgLy8vXG5cbiAgICByZXR1cm4gYmFja3dhcmRzUmVhY2hhYmxlVmVydGV4ZXM7XG4gIH1cblxuICBpc1ZlcnRleEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleCh2ZXJ0ZXgpIHtcbiAgICBjb25zdCB2ZXJ0ZXhJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXggPSB0aGlzLmltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzLmluY2x1ZGVzKHZlcnRleCk7XG5cbiAgICByZXR1cm4gdmVydGV4SW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4O1xuICB9XG5cbiAgaXNWZXJ0ZXhJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleCh2ZXJ0ZXgpIHtcbiAgICBjb25zdCB2ZXJ0ZXhJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleCA9IHRoaXMuaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcy5pbmNsdWRlcyh2ZXJ0ZXgpO1xuXG4gICAgcmV0dXJuIHZlcnRleEltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4O1xuICB9XG5cbiAgZ2V0SW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZXMoKSB7XG4gICAgY29uc3QgaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZXMgPSB2ZXJ0ZXhOYW1lc0Zyb21WZXJ0ZXhlcyh0aGlzLmltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzKTtcblxuICAgIHJldHVybiBpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lcztcbiAgfVxuXG4gIGdldEltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZXMoKSB7XG4gICAgY29uc3QgaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcyA9IHZlcnRleE5hbWVzRnJvbVZlcnRleGVzKHRoaXMuaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcyk7XG5cbiAgICByZXR1cm4gaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcztcbiAgfVxuXG4gIHNldE5hbWUobmFtZSkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBzZXRJbmRleChpbmRleCkge1xuICAgIHRoaXMuaW5kZXggPSBpbmRleDtcbiAgfVxuXG4gIHNldEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzKGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzKSB7XG4gICAgdGhpcy5pbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlcyA9IGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzO1xuICB9XG5cbiAgc2V0SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcyhpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzKSB7XG4gICAgdGhpcy5pbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzID0gaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcztcbiAgfVxuXG4gIGRlY3JlbWVudEluZGV4KCkge1xuICAgIHRoaXMuaW5kZXgtLTtcbiAgfVxuXG4gIGFkZEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleChpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgpIHtcbiAgICB0aGlzLmltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzLnB1c2goaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4KTtcbiAgfVxuXG4gIGFkZEltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4KGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4KSB7XG4gICAgdGhpcy5pbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzLnB1c2goaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXgpO1xuICB9XG5cbiAgcmVtb3ZlSW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4KGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlcy5pbmRleE9mKGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleCksXG4gICAgICAgICAgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMTtcblxuICAgIHRoaXMuaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4ZXMuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCk7XG4gIH1cblxuICByZW1vdmVJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleChpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzLmluZGV4T2YoaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXgpLFxuICAgICAgICAgIHN0YXJ0ID0gaW5kZXgsICAvLy9cbiAgICAgICAgICBkZWxldGVDb3VudCA9IDE7XG5cbiAgICB0aGlzLmltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4ZXMuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCk7XG4gIH1cblxuICBmb3J3YXJkc0RlcHRoRmlyc3RTZWFyY2goY2FsbGJhY2spIHtcbiAgICBjb25zdCB2ZXJ0ZXggPSB0aGlzLCAgLy8vXG4gICAgICAgICAgdmlzaXRlZFZlcnRleGVzID0gW107XG5cbiAgICBmb3J3YXJkc0RlcHRoRmlyc3RTZWFyY2godmVydGV4LCBjYWxsYmFjaywgdmlzaXRlZFZlcnRleGVzKTtcblxuICAgIHJldHVybiB2aXNpdGVkVmVydGV4ZXM7XG4gIH1cblxuICBiYWNrd2FyZHNEZXB0aEZpcnN0U2VhcmNoKGNhbGxiYWNrKSB7XG4gICAgY29uc3QgdmVydGV4ID0gdGhpcywgIC8vL1xuICAgICAgICAgIHZpc2l0ZWRWZXJ0ZXhlcyA9IFtdO1xuXG4gICAgYmFja3dhcmRzRGVwdGhGaXJzdFNlYXJjaCh2ZXJ0ZXgsIGNhbGxiYWNrLCB2aXNpdGVkVmVydGV4ZXMpO1xuXG4gICAgcmV0dXJuIHZpc2l0ZWRWZXJ0ZXhlcztcbiAgfVxuXG4gIHNvbWVJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5pbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlcy5zb21lKGNhbGxiYWNrKTtcbiAgfVxuXG4gIHNvbWVJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleChjYWxsYmFjaykge1xuICAgIHJldHVybiB0aGlzLmltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4ZXMuc29tZShjYWxsYmFjayk7XG4gIH1cblxuICBmb3JFYWNoSW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4KGNhbGxiYWNrKSB7XG4gICAgdGhpcy5pbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlcy5mb3JFYWNoKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGZvckVhY2hJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleChjYWxsYmFjaykge1xuICAgIHRoaXMuaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcy5mb3JFYWNoKGNhbGxiYWNrKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTmFtZUFuZEluZGV4KG5hbWUsIGluZGV4KSB7XG4gICAgY29uc3QgaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4ZXMgPSBbXSxcbiAgICAgICAgICBpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzID0gW10sXG4gICAgICAgICAgZGVwZW5kZW5jeVZlcnRleCA9IG5ldyBWZXJ0ZXgobmFtZSwgaW5kZXgsIGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzLCBpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzKTtcblxuICAgIHJldHVybiBkZXBlbmRlbmN5VmVydGV4O1xuICB9XG59XG4iXSwibmFtZXMiOlsiVmVydGV4IiwibGFzdCIsImFycmF5VXRpbGl0aWVzIiwidGFpbCIsIm5hbWUiLCJpbmRleCIsImltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzIiwiaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcyIsImdldE5hbWUiLCJnZXRJbmRleCIsImdldEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzIiwiZ2V0SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcyIsImlzU3RyYW5kZWQiLCJpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlc0xlbmd0aCIsImxlbmd0aCIsImltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4ZXNMZW5ndGgiLCJzdHJhbmRlZCIsImlzVmVydGV4Rm9yd2FyZHNSZWFjaGFibGUiLCJ2ZXJ0ZXgiLCJmb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzIiwicmV0cmlldmVGb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzIiwibGFzdEZvcndhcmRzUmVhY2hhYmxlVmVydGV4IiwidmVydGV4Rm9yd2FyZHNSZWFjaGFibGUiLCJpc0VkZ2VQcmVzZW50QnlTb3VyY2VWZXJ0ZXgiLCJzb3VyY2VWZXJ0ZXgiLCJzb3VyY2VWZXJ0ZXhJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleCIsImlzVmVydGV4SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXgiLCJlZGdlUHJlc2VudCIsImlzRWRnZVByZXNlbnRCeVRhcmdldFZlcnRleCIsInRhcmdldFZlcnRleCIsInRhcmdldFZlcnRleEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleCIsImlzVmVydGV4SW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4IiwicmV0cmlldmVTdWNjZXNzb3JWZXJ0ZXhOYW1lcyIsImZvcndhcmRzUmVhY2hhYmxlVmVydGV4ZXNUYWlsIiwic3VjY2Vzc29yVmVydGV4ZXMiLCJzdWNjZXNzb3JWZXJ0ZXhOYW1lcyIsInZlcnRleE5hbWVzRnJvbVZlcnRleGVzIiwicmV0cmlldmVQcmVkZWNlc3NvclZlcnRleE5hbWVzIiwiYmFja3dhcmRzUmVhY2hhYmxlVmVydGV4ZXMiLCJyZXRyaWV2ZUJhY2t3YXJkc1JlYWNoYWJsZVZlcnRleGVzIiwiYmFja3dhcmRzUmVhY2hhYmxlVmVydGV4ZXNUYWlsIiwicHJlZGVjZXNzb3JWZXJ0ZXhlcyIsInByZWRlY2Vzc29yVmVydGV4TmFtZXMiLCJ2ZXJ0ZXhBIiwidmlzaXRlZFZlcnRleGVzIiwiZm9yd2FyZHNEZXB0aEZpcnN0U2VhcmNoIiwidmVydGV4QiIsInRlcm1pbmF0ZSIsImJhY2t3YXJkc0RlcHRoRmlyc3RTZWFyY2giLCJ2ZXJ0ZXhJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgiLCJpbmNsdWRlcyIsInZlcnRleEltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4IiwiZ2V0SW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZXMiLCJpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lcyIsImdldEltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZXMiLCJpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleE5hbWVzIiwic2V0TmFtZSIsInNldEluZGV4Iiwic2V0SW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4ZXMiLCJzZXRJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzIiwiZGVjcmVtZW50SW5kZXgiLCJhZGRJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgiLCJpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgiLCJwdXNoIiwiYWRkSW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXgiLCJpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleCIsInJlbW92ZUltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleCIsImluZGV4T2YiLCJzdGFydCIsImRlbGV0ZUNvdW50Iiwic3BsaWNlIiwicmVtb3ZlSW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXgiLCJjYWxsYmFjayIsInNvbWVJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgiLCJzb21lIiwic29tZUltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4IiwiZm9yRWFjaEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleCIsImZvckVhY2giLCJmb3JFYWNoSW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXgiLCJmcm9tTmFtZUFuZEluZGV4IiwiZGVwZW5kZW5jeVZlcnRleCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFTcUJBOzs7eUJBUFU7c0JBRVM7c0JBQzRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVwRSxJQUFRQyxPQUFlQyx5QkFBYyxDQUE3QkQs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
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJ0ZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgeyB2ZXJ0ZXhOYW1lc0Zyb21WZXJ0ZXhlcyB9IGZyb20gXCIuL3V0aWxpdGllcy92ZXJ0ZXhcIjtcbmltcG9ydCB7IGZvcndhcmRzRGVwdGhGaXJzdFNlYXJjaCwgYmFja3dhcmRzRGVwdGhGaXJzdFNlYXJjaCB9IGZyb20gXCIuL3V0aWxpdGllcy9zZWFyY2hcIjtcblxuY29uc3QgeyBsYXN0LCB0YWlsIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVydGV4IHtcbiAgY29uc3RydWN0b3IobmFtZSwgaW5kZXgsIGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzLCBpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmluZGV4ID0gaW5kZXg7XG4gICAgdGhpcy5pbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlcyA9IGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzO1xuICAgIHRoaXMuaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcyA9IGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4ZXM7XG4gIH1cblxuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICBnZXRJbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbmRleDtcbiAgfVxuXG4gIGdldEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzKCkge1xuICAgIHJldHVybiB0aGlzLmltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzO1xuICB9XG5cbiAgZ2V0SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcygpIHtcbiAgICByZXR1cm4gdGhpcy5pbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzO1xuICB9XG5cbiAgaXNTdHJhbmRlZCgpIHtcbiAgICBjb25zdCBpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlc0xlbmd0aCA9IHRoaXMuaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4ZXMubGVuZ3RoLFxuICAgICAgICAgIGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4ZXNMZW5ndGggPSB0aGlzLmltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4ZXMubGVuZ3RoLFxuICAgICAgICAgIHN0cmFuZGVkID0gKChpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlc0xlbmd0aCA9PT0gMCkgJiYgKGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4ZXNMZW5ndGggPT09IDApKTtcblxuICAgIHJldHVybiBzdHJhbmRlZDtcbiAgfVxuXG4gIGlzVmVydGV4Rm9yd2FyZHNSZWFjaGFibGUodmVydGV4KSB7XG4gICAgY29uc3QgZm9yd2FyZHNSZWFjaGFibGVWZXJ0ZXhlcyA9IHRoaXMucmV0cmlldmVGb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzKHZlcnRleCksXG4gICAgICAgICAgbGFzdEZvcndhcmRzUmVhY2hhYmxlVmVydGV4ID0gbGFzdChmb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzKSxcbiAgICAgICAgICB2ZXJ0ZXhGb3J3YXJkc1JlYWNoYWJsZSA9ICh2ZXJ0ZXggPT09IGxhc3RGb3J3YXJkc1JlYWNoYWJsZVZlcnRleCk7XG5cbiAgICByZXR1cm4gdmVydGV4Rm9yd2FyZHNSZWFjaGFibGU7XG4gIH1cblxuICBpc0VkZ2VQcmVzZW50QnlTb3VyY2VWZXJ0ZXgoc291cmNlVmVydGV4KSB7XG4gICAgY29uc3Qgc291cmNlVmVydGV4SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXggPSB0aGlzLmlzVmVydGV4SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXgoc291cmNlVmVydGV4KSxcbiAgICAgICAgICBlZGdlUHJlc2VudCA9IHNvdXJjZVZlcnRleEltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4OyAvLy9cblxuICAgIHJldHVybiBlZGdlUHJlc2VudDtcbiAgfVxuXG4gIGlzRWRnZVByZXNlbnRCeVRhcmdldFZlcnRleCh0YXJnZXRWZXJ0ZXgpIHtcbiAgICBjb25zdCB0YXJnZXRWZXJ0ZXhJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXggPSB0aGlzLmlzVmVydGV4SW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4KHRhcmdldFZlcnRleCksXG4gICAgICAgICAgZWRnZVByZXNlbnQgPSB0YXJnZXRWZXJ0ZXhJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXg7IC8vL1xuXG4gICAgcmV0dXJuIGVkZ2VQcmVzZW50O1xuICB9XG5cbiAgcmV0cmlldmVTdWNjZXNzb3JWZXJ0ZXhOYW1lcygpIHtcbiAgICBjb25zdCBmb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzID0gdGhpcy5yZXRyaWV2ZUZvcndhcmRzUmVhY2hhYmxlVmVydGV4ZXMoKSxcbiAgICAgICAgICBmb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzVGFpbCA9IHRhaWwoZm9yd2FyZHNSZWFjaGFibGVWZXJ0ZXhlcyksXG4gICAgICAgICAgc3VjY2Vzc29yVmVydGV4ZXMgPSBmb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzVGFpbCxcbiAgICAgICAgICBzdWNjZXNzb3JWZXJ0ZXhOYW1lcyA9IHZlcnRleE5hbWVzRnJvbVZlcnRleGVzKHN1Y2Nlc3NvclZlcnRleGVzKTtcblxuICAgIHJldHVybiBzdWNjZXNzb3JWZXJ0ZXhOYW1lcztcbiAgfVxuXG4gIHJldHJpZXZlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcygpIHtcbiAgICBjb25zdCBiYWNrd2FyZHNSZWFjaGFibGVWZXJ0ZXhlcyA9IHRoaXMucmV0cmlldmVCYWNrd2FyZHNSZWFjaGFibGVWZXJ0ZXhlcygpLFxuICAgICAgICAgIGJhY2t3YXJkc1JlYWNoYWJsZVZlcnRleGVzVGFpbCA9IHRhaWwoYmFja3dhcmRzUmVhY2hhYmxlVmVydGV4ZXMpLFxuICAgICAgICAgIHByZWRlY2Vzc29yVmVydGV4ZXMgPSBiYWNrd2FyZHNSZWFjaGFibGVWZXJ0ZXhlc1RhaWwsXG4gICAgICAgICAgcHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcyA9IHZlcnRleE5hbWVzRnJvbVZlcnRleGVzKHByZWRlY2Vzc29yVmVydGV4ZXMpO1xuXG4gICAgcmV0dXJuIHByZWRlY2Vzc29yVmVydGV4TmFtZXM7XG4gIH1cblxuICByZXRyaWV2ZUZvcndhcmRzUmVhY2hhYmxlVmVydGV4ZXModmVydGV4ID0gbnVsbCkge1xuICAgIGNvbnN0IHZlcnRleEEgPSB2ZXJ0ZXgsIC8vL1xuICAgICAgICAgIHZpc2l0ZWRWZXJ0ZXhlcyA9IHRoaXMuZm9yd2FyZHNEZXB0aEZpcnN0U2VhcmNoKCh2ZXJ0ZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnRleEIgPSB2ZXJ0ZXgsIC8vL1xuICAgICAgICAgICAgICAgICAgdGVybWluYXRlID0gKHZlcnRleEEgPT09IHZlcnRleEIpO1xuXG4gICAgICAgICAgICBpZiAodGVybWluYXRlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGZvcndhcmRzUmVhY2hhYmxlVmVydGV4ZXMgPSB2aXNpdGVkVmVydGV4ZXM7ICAvLy9cblxuICAgIHJldHVybiBmb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzO1xuICB9XG5cbiAgcmV0cmlldmVCYWNrd2FyZHNSZWFjaGFibGVWZXJ0ZXhlcyh2ZXJ0ZXggPSBudWxsKSB7XG4gICAgY29uc3QgdmVydGV4QSA9IHZlcnRleCwgLy8vXG4gICAgICAgICAgdmlzaXRlZFZlcnRleGVzID0gdGhpcy5iYWNrd2FyZHNEZXB0aEZpcnN0U2VhcmNoKCh2ZXJ0ZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnRleEIgPSB2ZXJ0ZXgsIC8vL1xuICAgICAgICAgICAgICAgICAgdGVybWluYXRlID0gKHZlcnRleEEgPT09IHZlcnRleEIpO1xuXG4gICAgICAgICAgICBpZiAodGVybWluYXRlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGJhY2t3YXJkc1JlYWNoYWJsZVZlcnRleGVzID0gdmlzaXRlZFZlcnRleGVzOyAgLy8vXG5cbiAgICByZXR1cm4gYmFja3dhcmRzUmVhY2hhYmxlVmVydGV4ZXM7XG4gIH1cblxuICBpc1ZlcnRleEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleCh2ZXJ0ZXgpIHtcbiAgICBjb25zdCB2ZXJ0ZXhJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXggPSB0aGlzLmltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzLmluY2x1ZGVzKHZlcnRleCk7XG5cbiAgICByZXR1cm4gdmVydGV4SW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4O1xuICB9XG5cbiAgaXNWZXJ0ZXhJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleCh2ZXJ0ZXgpIHtcbiAgICBjb25zdCB2ZXJ0ZXhJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleCA9IHRoaXMuaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcy5pbmNsdWRlcyh2ZXJ0ZXgpO1xuXG4gICAgcmV0dXJuIHZlcnRleEltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4O1xuICB9XG5cbiAgZ2V0SW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZXMoKSB7XG4gICAgY29uc3QgaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZXMgPSB2ZXJ0ZXhOYW1lc0Zyb21WZXJ0ZXhlcyh0aGlzLmltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzKTtcblxuICAgIHJldHVybiBpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lcztcbiAgfVxuXG4gIGdldEltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZXMoKSB7XG4gICAgY29uc3QgaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcyA9IHZlcnRleE5hbWVzRnJvbVZlcnRleGVzKHRoaXMuaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcyk7XG5cbiAgICByZXR1cm4gaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcztcbiAgfVxuXG4gIHNldE5hbWUobmFtZSkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBzZXRJbmRleChpbmRleCkge1xuICAgIHRoaXMuaW5kZXggPSBpbmRleDtcbiAgfVxuXG4gIHNldEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzKGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzKSB7XG4gICAgdGhpcy5pbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlcyA9IGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzO1xuICB9XG5cbiAgc2V0SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcyhpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzKSB7XG4gICAgdGhpcy5pbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzID0gaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcztcbiAgfVxuXG4gIGRlY3JlbWVudEluZGV4KCkge1xuICAgIHRoaXMuaW5kZXgtLTtcbiAgfVxuXG4gIGFkZEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleChpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgpIHtcbiAgICB0aGlzLmltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzLnB1c2goaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4KTtcbiAgfVxuXG4gIGFkZEltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4KGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4KSB7XG4gICAgdGhpcy5pbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzLnB1c2goaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXgpO1xuICB9XG5cbiAgcmVtb3ZlSW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4KGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlcy5pbmRleE9mKGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleCksXG4gICAgICAgICAgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMTtcblxuICAgIHRoaXMuaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4ZXMuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCk7XG4gIH1cblxuICByZW1vdmVJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleChpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzLmluZGV4T2YoaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXgpLFxuICAgICAgICAgIHN0YXJ0ID0gaW5kZXgsICAvLy9cbiAgICAgICAgICBkZWxldGVDb3VudCA9IDE7XG5cbiAgICB0aGlzLmltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4ZXMuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCk7XG4gIH1cblxuICBmb3J3YXJkc0RlcHRoRmlyc3RTZWFyY2goY2FsbGJhY2spIHtcbiAgICBjb25zdCB2ZXJ0ZXggPSB0aGlzLCAgLy8vXG4gICAgICAgICAgdmlzaXRlZFZlcnRleGVzID0gW107XG5cbiAgICBmb3J3YXJkc0RlcHRoRmlyc3RTZWFyY2godmVydGV4LCBjYWxsYmFjaywgdmlzaXRlZFZlcnRleGVzKTtcblxuICAgIHJldHVybiB2aXNpdGVkVmVydGV4ZXM7XG4gIH1cblxuICBiYWNrd2FyZHNEZXB0aEZpcnN0U2VhcmNoKGNhbGxiYWNrKSB7XG4gICAgY29uc3QgdmVydGV4ID0gdGhpcywgIC8vL1xuICAgICAgICAgIHZpc2l0ZWRWZXJ0ZXhlcyA9IFtdO1xuXG4gICAgYmFja3dhcmRzRGVwdGhGaXJzdFNlYXJjaCh2ZXJ0ZXgsIGNhbGxiYWNrLCB2aXNpdGVkVmVydGV4ZXMpO1xuXG4gICAgcmV0dXJuIHZpc2l0ZWRWZXJ0ZXhlcztcbiAgfVxuXG4gIHNvbWVJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5pbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlcy5zb21lKGNhbGxiYWNrKTtcbiAgfVxuXG4gIHNvbWVJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleChjYWxsYmFjaykge1xuICAgIHJldHVybiB0aGlzLmltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4ZXMuc29tZShjYWxsYmFjayk7XG4gIH1cblxuICBmb3JFYWNoSW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4KGNhbGxiYWNrKSB7XG4gICAgdGhpcy5pbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlcy5mb3JFYWNoKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGZvckVhY2hJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleChjYWxsYmFjaykge1xuICAgIHRoaXMuaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcy5mb3JFYWNoKGNhbGxiYWNrKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTmFtZUFuZEluZGV4KG5hbWUsIGluZGV4KSB7XG4gICAgY29uc3QgaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4ZXMgPSBbXSxcbiAgICAgICAgICBpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzID0gW10sXG4gICAgICAgICAgZGVwZW5kZW5jeVZlcnRleCA9IG5ldyBWZXJ0ZXgobmFtZSwgaW5kZXgsIGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzLCBpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzKTtcblxuICAgIHJldHVybiBkZXBlbmRlbmN5VmVydGV4O1xuICB9XG59XG4iXSwibmFtZXMiOlsiVmVydGV4IiwibGFzdCIsInRhaWwiLCJhcnJheVV0aWxpdGllcyIsIm5hbWUiLCJpbmRleCIsImltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzIiwiaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcyIsImdldE5hbWUiLCJnZXRJbmRleCIsImdldEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleGVzIiwiZ2V0SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhlcyIsImlzU3RyYW5kZWQiLCJpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhlc0xlbmd0aCIsImxlbmd0aCIsImltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4ZXNMZW5ndGgiLCJzdHJhbmRlZCIsImlzVmVydGV4Rm9yd2FyZHNSZWFjaGFibGUiLCJ2ZXJ0ZXgiLCJmb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzIiwicmV0cmlldmVGb3J3YXJkc1JlYWNoYWJsZVZlcnRleGVzIiwibGFzdEZvcndhcmRzUmVhY2hhYmxlVmVydGV4IiwidmVydGV4Rm9yd2FyZHNSZWFjaGFibGUiLCJpc0VkZ2VQcmVzZW50QnlTb3VyY2VWZXJ0ZXgiLCJzb3VyY2VWZXJ0ZXgiLCJzb3VyY2VWZXJ0ZXhJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleCIsImlzVmVydGV4SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXgiLCJlZGdlUHJlc2VudCIsImlzRWRnZVByZXNlbnRCeVRhcmdldFZlcnRleCIsInRhcmdldFZlcnRleCIsInRhcmdldFZlcnRleEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleCIsImlzVmVydGV4SW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4IiwicmV0cmlldmVTdWNjZXNzb3JWZXJ0ZXhOYW1lcyIsImZvcndhcmRzUmVhY2hhYmxlVmVydGV4ZXNUYWlsIiwic3VjY2Vzc29yVmVydGV4ZXMiLCJzdWNjZXNzb3JWZXJ0ZXhOYW1lcyIsInZlcnRleE5hbWVzRnJvbVZlcnRleGVzIiwicmV0cmlldmVQcmVkZWNlc3NvclZlcnRleE5hbWVzIiwiYmFja3dhcmRzUmVhY2hhYmxlVmVydGV4ZXMiLCJyZXRyaWV2ZUJhY2t3YXJkc1JlYWNoYWJsZVZlcnRleGVzIiwiYmFja3dhcmRzUmVhY2hhYmxlVmVydGV4ZXNUYWlsIiwicHJlZGVjZXNzb3JWZXJ0ZXhlcyIsInByZWRlY2Vzc29yVmVydGV4TmFtZXMiLCJ2ZXJ0ZXhBIiwidmlzaXRlZFZlcnRleGVzIiwiZm9yd2FyZHNEZXB0aEZpcnN0U2VhcmNoIiwidmVydGV4QiIsInRlcm1pbmF0ZSIsImJhY2t3YXJkc0RlcHRoRmlyc3RTZWFyY2giLCJ2ZXJ0ZXhJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgiLCJpbmNsdWRlcyIsInZlcnRleEltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4IiwiZ2V0SW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZXMiLCJpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lcyIsImdldEltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZXMiLCJpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleE5hbWVzIiwic2V0TmFtZSIsInNldEluZGV4Iiwic2V0SW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4ZXMiLCJzZXRJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleGVzIiwiZGVjcmVtZW50SW5kZXgiLCJhZGRJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgiLCJpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgiLCJwdXNoIiwiYWRkSW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXgiLCJpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleCIsInJlbW92ZUltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleCIsImluZGV4T2YiLCJzdGFydCIsImRlbGV0ZUNvdW50Iiwic3BsaWNlIiwicmVtb3ZlSW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXgiLCJjYWxsYmFjayIsInNvbWVJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgiLCJzb21lIiwic29tZUltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4IiwiZm9yRWFjaEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleCIsImZvckVhY2giLCJmb3JFYWNoSW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXgiLCJmcm9tTmFtZUFuZEluZGV4IiwiZGVwZW5kZW5jeVZlcnRleCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBU0E7OztlQUFxQkE7OzsyQkFQVTt3QkFFUzt3QkFDNEI7QUFFcEUsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRSxHQUFHQyx5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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-directed-graphs",
3
3
  "author": "James Smith",
4
- "version": "3.0.82",
4
+ "version": "3.0.84",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-directed-graphs",
7
7
  "description": "Occam's directed graphs.",
@@ -35,5 +35,9 @@
35
35
  "watch-debug": "npm run clean && npm run batch-debug && npm run incremental-debug",
36
36
  "test": "mocha --recursive -R spec ./test"
37
37
  },
38
+ "files": [
39
+ "src",
40
+ "lib"
41
+ ],
38
42
  "main": "./lib/index.js"
39
43
  }
package/.swcrc DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "module": {
3
- "type": "commonjs"
4
- }
5
- }
package/bin/main.js DELETED
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- const express = require("express");
4
-
5
- const { createLiveReloadHandler } = require("lively-cli");
6
-
7
- const server = express(), ///
8
- staticRouter = express.static("."),
9
- liveReloadHandler = createLiveReloadHandler("./example.js");
10
-
11
- server.use(staticRouter);
12
-
13
- server.get("/live-reload", liveReloadHandler);
14
-
15
- server.listen(8888);