occam-verify-cli 0.0.284 → 0.0.286

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.
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
 
3
+ const { Release } = require("occam-open-cli");
3
4
  const { arrayUtilities, loggingUtilities } = require("necessary");
4
5
 
5
- const FileSystemReleaseContext = require("./context/release/fileSystem");
6
+ const ReleaseContext = require("../lib/index");
6
7
 
7
8
  const { log } = loggingUtilities,
8
9
  { first } = arrayUtilities;
@@ -14,12 +15,18 @@ function loadReleaseContexts(releaseName, releaseContextMap = {}, dependentRelea
14
15
  const releaseContext = releaseContextMap[releaseName] || null;
15
16
 
16
17
  if (releaseContext === null) {
17
- const fileSystemReleaseContext = FileSystemReleaseContext.fromReleaseNameAndLog(releaseName, log),
18
- releaseContext = fileSystemReleaseContext; ///
18
+ const release = Release.from(), ///
19
+ releaseContext = ReleaseContext.fromLogAndRelease(log, release);
19
20
 
20
21
  releaseContextMap[releaseName] = releaseContext;
21
22
 
22
- const dependencyReleaseNames = releaseContext.getDependencyReleaseNames();
23
+ const dependencies = releaseContext.getDependencies(),
24
+ dependencyReleaseNames = dependencies.map((dependency) => {
25
+ const dependencyName = dependency.getName(),
26
+ dependencyReleaseName = dependencyName; ///
27
+
28
+ return dependencyReleaseName;
29
+ })
23
30
 
24
31
  dependentReleaseNames = [ ...dependentReleaseNames, releaseName ]; ///
25
32
 
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ const { Query } = require("occam-dom");
4
+
5
+ function nodeQuery(expression) {
6
+ const query = Query.fromExpression(expression);
7
+
8
+ return function(node) {
9
+ if (node !== null) {
10
+ const nodes = query.execute(node);
11
+
12
+ node = nodes.shift() || null; ///
13
+ }
14
+
15
+ return node;
16
+ };
17
+ }
18
+
19
+ function nodesQuery(expression) {
20
+ const query = Query.fromExpression(expression);
21
+
22
+ return function(node) {
23
+ let nodes = null;
24
+
25
+ if (node !== null) {
26
+ nodes = query.execute(node);
27
+ }
28
+
29
+ return nodes;
30
+ };
31
+ }
32
+
33
+ module.exports = {
34
+ nodeQuery,
35
+ nodesQuery
36
+ };
@@ -1,16 +1,52 @@
1
1
  "use strict";
2
2
 
3
- const { Query } = require("occam-dom"),
4
- { filePathUtilities } = require("occam-open-cli"),
3
+ const { filePathUtilities } = require("occam-open-cli"),
5
4
  { fileSystemUtilities } = require("necessary"),
6
5
  { MetaJSONLexer, MetaJSONParser } = require("occam-grammars");
7
6
 
7
+ const { nodeQuery, nodesQuery } = require("../utilities/query");
8
+
8
9
  const { isFilePathFlorenceFilePath } = filePathUtilities,
9
10
  { readFile, isEntryFile, readDirectory, isEntryDirectory, checkFileExists } = fileSystemUtilities;
10
11
 
11
12
  const metaJSONLexer = MetaJSONLexer.fromNothing(),
12
13
  metaJSONParser = MetaJSONParser.fromNothing(),
13
- dependencyNonTerminalNodeQuery = Query.fromExpression("//dependencies/dependency/@string-literal!");
14
+ dependencyNodesQuery = nodesQuery("//dependencies/dependency"),
15
+ dependencyNameTerminalNodeQuery = nodeQuery("/dependency/name!/@*!"),
16
+ shortenedVersionNumberTerminalNodeQuery = nodeQuery("//dependency/shortenedVersionNumber/@*!");
17
+
18
+ function versionFromReleaseName(releaseName) {
19
+ const version = [],
20
+ directoryName = releaseName, ///
21
+ metaJSONFilePath = `${directoryName}/meta.json`,
22
+ metaJSONFileExists = checkFileExists(metaJSONFilePath);
23
+
24
+ if (metaJSONFileExists) {
25
+ const metaJSONFileContent = readFile(metaJSONFilePath),
26
+ content = metaJSONFileContent, ///
27
+ tokens = metaJSONLexer.tokenise(content),
28
+ node = metaJSONParser.parse(tokens);
29
+
30
+ if (node !== null) {
31
+ const dependencyNodes = dependencyNodesQuery(node);
32
+
33
+ dependencyNodes.forEach((dependencyNode) => {
34
+ const dependencyNameTerminalNode = dependencyNameTerminalNodeQuery(dependencyNode),
35
+ shortenedVersionNumberTerminalNode = shortenedVersionNumberTerminalNodeQuery(dependencyNode),
36
+ dependencyNameTerminalNodeContent = dependencyNameTerminalNode.getContent(),
37
+ shortenedVersionNumberTerminalNodeContent = shortenedVersionNumberTerminalNode.getContent(),
38
+ string = trimDoubleQuotes(shortenedVersionNumberTerminalNodeContent), ///
39
+ name = trimDoubleQuotes(dependencyNameTerminalNodeContent),///
40
+ shortenedVersion = ShortenedVersion.fromString(string),
41
+ dependency = Dependency.fromNameAndShortenedVersion(name, shortenedVersion);
42
+
43
+ version.push(dependency);
44
+ });
45
+ }
46
+ }
47
+
48
+ return version;
49
+ }
14
50
 
15
51
  function filePathsFromReleaseName(releaseName) {
16
52
  const directoryName = releaseName, ///
@@ -25,10 +61,9 @@ function filePathsFromReleaseName(releaseName) {
25
61
  return filePaths;
26
62
  }
27
63
 
28
- function dependencyReleaseNamesFromReleaseName(releaseName) {
29
- let dependencyReleaseNames = [];
30
-
31
- const directoryName = releaseName, ///
64
+ function dependenciesFromReleaseName(releaseName) {
65
+ const dependencies = [],
66
+ directoryName = releaseName, ///
32
67
  metaJSONFilePath = `${directoryName}/meta.json`,
33
68
  metaJSONFileExists = checkFileExists(metaJSONFilePath);
34
69
 
@@ -36,23 +71,32 @@ function dependencyReleaseNamesFromReleaseName(releaseName) {
36
71
  const metaJSONFileContent = readFile(metaJSONFilePath),
37
72
  content = metaJSONFileContent, ///
38
73
  tokens = metaJSONLexer.tokenise(content),
39
- node = metaJSONParser.parse(tokens),
40
- dependencyNonTerminalNodes = dependencyNonTerminalNodeQuery.execute(node);
41
-
42
- dependencyReleaseNames = dependencyNonTerminalNodes.map((dependencyNonTerminalNode) => {
43
- const dependencyNonTerminalNodeContent = dependencyNonTerminalNode.getContent(),
44
- dependencyReleaseName = trimDoubleQuotes(dependencyNonTerminalNodeContent); ///
45
-
46
- return dependencyReleaseName;
47
- });
74
+ node = metaJSONParser.parse(tokens);
75
+
76
+ if (node !== null) {
77
+ const dependencyNodes = dependencyNodesQuery(node);
78
+
79
+ dependencyNodes.forEach((dependencyNode) => {
80
+ const dependencyNameTerminalNode = dependencyNameTerminalNodeQuery(dependencyNode),
81
+ shortenedVersionNumberTerminalNode = shortenedVersionNumberTerminalNodeQuery(dependencyNode),
82
+ dependencyNameTerminalNodeContent = dependencyNameTerminalNode.getContent(),
83
+ shortenedVersionNumberTerminalNodeContent = shortenedVersionNumberTerminalNode.getContent(),
84
+ string = trimDoubleQuotes(shortenedVersionNumberTerminalNodeContent), ///
85
+ name = trimDoubleQuotes(dependencyNameTerminalNodeContent),///
86
+ shortenedVersion = ShortenedVersion.fromString(string),
87
+ dependency = Dependency.fromNameAndShortenedVersion(name, shortenedVersion);
88
+
89
+ dependencies.push(dependency);
90
+ });
91
+ }
48
92
  }
49
93
 
50
- return dependencyReleaseNames;
94
+ return dependencies;
51
95
  }
52
96
 
53
97
  module.exports = {
54
98
  filePathsFromReleaseName,
55
- dependencyReleaseNamesFromReleaseName
99
+ dependenciesFromReleaseName
56
100
  };
57
101
 
58
102
  function readFilePaths(directoryPath, test, filePaths = []) {
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  var _occamCustomGrammars = require("occam-custom-grammars");
12
12
  var _array = require("../utilities/array");
13
+ var _release = require("../../utilities/release");
13
14
  function _arrayLikeToArray(arr, len) {
14
15
  if (len == null || len > arr.length) len = arr.length;
15
16
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -91,21 +92,33 @@ function _unsupportedIterableToArray(o, minLen) {
91
92
  }
92
93
  var florenceLexerFromCombinedCustomGrammar = _occamCustomGrammars.lexersUtilities.florenceLexerFromCombinedCustomGrammar, florenceParserFromCombinedCustomGrammar = _occamCustomGrammars.parsersUtilities.florenceParserFromCombinedCustomGrammar;
93
94
  var ReleaseContext = /*#__PURE__*/ function() {
94
- function ReleaseContext(releaseName, fileContexts, florenceLexer, florenceParser, releaseContexts, releaseVerified, log) {
95
+ function ReleaseContext(log, release, verified, fileContexts, florenceLexer, florenceParser, releaseContexts) {
95
96
  _classCallCheck(this, ReleaseContext);
96
- this.releaseName = releaseName;
97
+ this.log = log;
98
+ this.release = release;
99
+ this.verified = verified;
97
100
  this.fileContexts = fileContexts;
98
101
  this.florenceLexer = florenceLexer;
99
102
  this.florenceParser = florenceParser;
100
103
  this.releaseContexts = releaseContexts;
101
- this.releaseVerified = releaseVerified;
102
- this.log = log;
103
104
  }
104
105
  _createClass(ReleaseContext, [
105
106
  {
106
- key: "getReleaseName",
107
- value: function getReleaseName() {
108
- return this.releaseName;
107
+ key: "getLog",
108
+ value: function getLog() {
109
+ return this.log;
110
+ }
111
+ },
112
+ {
113
+ key: "getRelease",
114
+ value: function getRelease() {
115
+ return this.release;
116
+ }
117
+ },
118
+ {
119
+ key: "isVerified",
120
+ value: function isVerified() {
121
+ return this.verified;
109
122
  }
110
123
  },
111
124
  {
@@ -133,24 +146,43 @@ var ReleaseContext = /*#__PURE__*/ function() {
133
146
  }
134
147
  },
135
148
  {
136
- key: "getLog",
137
- value: function getLog() {
138
- return this.log;
149
+ key: "getReleaseName",
150
+ value: function getReleaseName() {
151
+ var releaseName = this.release.getName();
152
+ return releaseName;
153
+ }
154
+ },
155
+ {
156
+ key: "getVersion",
157
+ value: function getVersion() {
158
+ return this.release.getVersion();
159
+ }
160
+ },
161
+ {
162
+ key: "getFilePaths",
163
+ value: function getFilePaths() {
164
+ return this.release.getFilePatns();
165
+ }
166
+ },
167
+ {
168
+ key: "getFileContent",
169
+ value: function getFileContent(filePath) {
170
+ return this.release.getFileContent(filePath);
139
171
  }
140
172
  },
141
173
  {
142
- key: "isReleaseVerified",
143
- value: function isReleaseVerified() {
144
- return this.releaseVerified;
174
+ key: "getDependencies",
175
+ value: function getDependencies() {
176
+ return this.release.getDependencies();
145
177
  }
146
178
  },
147
179
  {
148
180
  key: "getRules",
149
181
  value: function getRules() {
150
182
  var releaseNames = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
151
- var rules = [], releaseNamesIncludesReleaseName = releaseNames.includes(this.releaseName);
183
+ var rules = [], releaseName = this.getReleaseName(), releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
152
184
  if (!releaseNamesIncludesReleaseName) {
153
- releaseNames.push(this.releaseName);
185
+ releaseNames.push(releaseName);
154
186
  var bubble = false;
155
187
  this.fileContexts.forEach(function(fileContext) {
156
188
  var fileContextRules = fileContext.getRules(bubble);
@@ -168,9 +200,9 @@ var ReleaseContext = /*#__PURE__*/ function() {
168
200
  key: "getTypes",
169
201
  value: function getTypes() {
170
202
  var releaseNames = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
171
- var types = [], releaseNamesIncludesReleaseName = releaseNames.includes(this.releaseName);
203
+ var types = [], releaseName = this.getReleaesName(), releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
172
204
  if (!releaseNamesIncludesReleaseName) {
173
- releaseNames.push(this.releaseName);
205
+ releaseNames.push(releaseName);
174
206
  var bubble = false;
175
207
  this.fileContexts.forEach(function(fileContext) {
176
208
  var fileContextTypes = fileContext.getTypes(bubble);
@@ -188,9 +220,9 @@ var ReleaseContext = /*#__PURE__*/ function() {
188
220
  key: "getAxioms",
189
221
  value: function getAxioms() {
190
222
  var releaseNames = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
191
- var axioms = [], releaseNamesIncludesReleaseName = releaseNames.includes(this.releaseName);
223
+ var axioms = [], releaseName = this.getReleaseName(), releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
192
224
  if (!releaseNamesIncludesReleaseName) {
193
- releaseNames.push(this.releaseName);
225
+ releaseNames.push(releaseName);
194
226
  var bubble = false;
195
227
  this.fileContexts.forEach(function(fileContext) {
196
228
  var fileContextAxioms = fileContext.getAxioms(bubble);
@@ -208,9 +240,9 @@ var ReleaseContext = /*#__PURE__*/ function() {
208
240
  key: "getCombinators",
209
241
  value: function getCombinators() {
210
242
  var releaseNames = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
211
- var combinators = [], releaseNamesIncludesReleaseName = releaseNames.includes(this.releaseName);
243
+ var combinators = [], releaseName = this.getReleaseName(), releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
212
244
  if (!releaseNamesIncludesReleaseName) {
213
- releaseNames.push(this.releaseName);
245
+ releaseNames.push(releaseName);
214
246
  var bubble = false;
215
247
  this.fileContexts.forEach(function(fileContext) {
216
248
  var fileContextCombinators = fileContext.getCombinators(bubble);
@@ -228,9 +260,9 @@ var ReleaseContext = /*#__PURE__*/ function() {
228
260
  key: "getConstructors",
229
261
  value: function getConstructors() {
230
262
  var releaseNames = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
231
- var constructors = [], releaseNamesIncludesReleaseName = releaseNames.includes(this.releaseName);
263
+ var releaseName = this.getReleaseName(), constructors = [], releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
232
264
  if (!releaseNamesIncludesReleaseName) {
233
- releaseNames.push(this.releaseName);
265
+ releaseNames.push(releaseName);
234
266
  var bubble = false;
235
267
  this.fileContexts.forEach(function(fileContext) {
236
268
  var fileContextConstructors = fileContext.getConstructors(bubble);
@@ -247,7 +279,7 @@ var ReleaseContext = /*#__PURE__*/ function() {
247
279
  {
248
280
  key: "getCustomGrammar",
249
281
  value: function getCustomGrammar() {
250
- var name = this.releaseName, termBNF = this.getTermBNF(), statementBNF = this.getStatementBNF(), metastatementBNF = this.getMetastatementBNF(), typePattern = this.getTypePattern(), symbolPattern = this.getSymbolPattern(), operatorPattern = this.getOperatorPattern(), customGrammar = new _occamCustomGrammars.CustomGrammar(name, termBNF, statementBNF, metastatementBNF, typePattern, symbolPattern, operatorPattern);
282
+ var releaseName = this.getReleaseName(), name = releaseName, termBNF = this.getTermBNF(), statementBNF = this.getStatementBNF(), metastatementBNF = this.getMetastatementBNF(), typePattern = this.getTypePattern(), symbolPattern = this.getSymbolPattern(), operatorPattern = this.getOperatorPattern(), customGrammar = new _occamCustomGrammars.CustomGrammar(name, termBNF, statementBNF, metastatementBNF, typePattern, symbolPattern, operatorPattern);
251
283
  return customGrammar;
252
284
  }
253
285
  },
@@ -323,19 +355,19 @@ var ReleaseContext = /*#__PURE__*/ function() {
323
355
  }
324
356
  ], [
325
357
  {
326
- key: "fromReleaseNameAndLog",
327
- value: function fromReleaseNameAndLog(Class, releaseName, log) {
358
+ key: "fromLogAndRelease",
359
+ value: function fromLogAndRelease(Class, log, release) {
328
360
  for(var _len = arguments.length, remainingArguments = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++){
329
361
  remainingArguments[_key - 3] = arguments[_key];
330
362
  }
331
- var fileContexts = [], florenceLexer = null, florenceParser = null, releaseContexts = [], releaseVerified = false, releaseContext = _construct(Class, [
332
- releaseName,
363
+ var verified = false, fileContexts = [], florenceLexer = null, florenceParser = null, releaseContexts = [], releaseContext = _construct(Class, [
364
+ log,
365
+ release,
366
+ verified,
333
367
  fileContexts,
334
368
  florenceLexer,
335
369
  florenceParser,
336
- releaseContexts,
337
- releaseVerified,
338
- log
370
+ releaseContexts
339
371
  ].concat(_toConsumableArray(remainingArguments)));
340
372
  return releaseContext;
341
373
  }
@@ -344,4 +376,4 @@ var ReleaseContext = /*#__PURE__*/ function() {
344
376
  return ReleaseContext;
345
377
  }();
346
378
 
347
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3JlbGVhc2UuanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEN1c3RvbUdyYW1tYXIsIGxleGVyc1V0aWxpdGllcywgcGFyc2Vyc1V0aWxpdGllcywgQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gZnJvbSBcIm9jY2FtLWN1c3RvbS1ncmFtbWFyc1wiO1xuXG5pbXBvcnQgeyBwdXNoIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuXG5jb25zdCB7IGZsb3JlbmNlTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gPSBsZXhlcnNVdGlsaXRpZXMsXG4gICAgICB7IGZsb3JlbmNlUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciB9ID0gcGFyc2Vyc1V0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVsZWFzZUNvbnRleHQge1xuICBjb25zdHJ1Y3RvcihyZWxlYXNlTmFtZSwgZmlsZUNvbnRleHRzLCBmbG9yZW5jZUxleGVyLCBmbG9yZW5jZVBhcnNlciwgcmVsZWFzZUNvbnRleHRzLCByZWxlYXNlVmVyaWZpZWQsIGxvZykge1xuICAgIHRoaXMucmVsZWFzZU5hbWUgPSByZWxlYXNlTmFtZTtcbiAgICB0aGlzLmZpbGVDb250ZXh0cyA9IGZpbGVDb250ZXh0cztcbiAgICB0aGlzLmZsb3JlbmNlTGV4ZXIgPSBmbG9yZW5jZUxleGVyO1xuICAgIHRoaXMuZmxvcmVuY2VQYXJzZXIgPSBmbG9yZW5jZVBhcnNlcjtcbiAgICB0aGlzLnJlbGVhc2VDb250ZXh0cyA9IHJlbGVhc2VDb250ZXh0cztcbiAgICB0aGlzLnJlbGVhc2VWZXJpZmllZCA9IHJlbGVhc2VWZXJpZmllZDtcblxuICAgIHRoaXMubG9nID0gbG9nO1xuICB9XG5cbiAgZ2V0UmVsZWFzZU5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVsZWFzZU5hbWU7XG4gIH1cblxuICBnZXRGaWxlQ29udGV4dHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZUNvbnRleHRzO1xuICB9XG5cbiAgZ2V0RmxvcmVuY2VMZXhlcigpIHtcbiAgICByZXR1cm4gdGhpcy5mbG9yZW5jZUxleGVyO1xuICB9XG5cbiAgZ2V0RmxvcmVuY2VQYXJzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxvcmVuY2VQYXJzZXI7XG4gIH1cblxuICBnZXRSZWxlYXNlQ29udGV4dHMoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVsZWFzZUNvbnRleHRzO1xuICB9XG5cbiAgZ2V0TG9nKCkge1xuICAgIHJldHVybiB0aGlzLmxvZztcbiAgfVxuXG4gIGlzUmVsZWFzZVZlcmlmaWVkKCkge1xuICAgIHJldHVybiB0aGlzLnJlbGVhc2VWZXJpZmllZDtcbiAgfVxuXG4gIGdldFJ1bGVzKHJlbGVhc2VOYW1lcyA9IFtdKSB7XG4gICAgY29uc3QgcnVsZXMgPSBbXSxcbiAgICAgICAgICByZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lID0gcmVsZWFzZU5hbWVzLmluY2x1ZGVzKHRoaXMucmVsZWFzZU5hbWUpO1xuXG4gICAgaWYgKCFyZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lKSB7XG4gICAgICByZWxlYXNlTmFtZXMucHVzaCh0aGlzLnJlbGVhc2VOYW1lKTtcblxuICAgICAgY29uc3QgYnViYmxlID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVDb250ZXh0UnVsZXMgPSBmaWxlQ29udGV4dC5nZXRSdWxlcyhidWJibGUpO1xuXG4gICAgICAgIHB1c2gocnVsZXMsIGZpbGVDb250ZXh0UnVsZXMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0UnVsZXMgPSByZWxlYXNlQ29udGV4dC5nZXRSdWxlcyhyZWxlYXNlTmFtZXMpO1xuXG4gICAgICAgIHB1c2gocnVsZXMsIHJlbGVhc2VDb250ZXh0UnVsZXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bGVzO1xuICB9XG5cbiAgZ2V0VHlwZXMocmVsZWFzZU5hbWVzID0gW10pIHtcbiAgICBjb25zdCB0eXBlcyA9IFtdLFxuICAgICAgICAgIHJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUgPSByZWxlYXNlTmFtZXMuaW5jbHVkZXModGhpcy5yZWxlYXNlTmFtZSk7XG5cbiAgICBpZiAoIXJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUpIHtcbiAgICAgIHJlbGVhc2VOYW1lcy5wdXNoKHRoaXMucmVsZWFzZU5hbWUpO1xuXG4gICAgICBjb25zdCBidWJibGUgPSBmYWxzZTtcblxuICAgICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZUNvbnRleHRUeXBlcyA9IGZpbGVDb250ZXh0LmdldFR5cGVzKGJ1YmJsZSk7XG5cbiAgICAgICAgcHVzaCh0eXBlcywgZmlsZUNvbnRleHRUeXBlcyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRUeXBlcyA9IHJlbGVhc2VDb250ZXh0LmdldFR5cGVzKHJlbGVhc2VOYW1lcyk7XG5cbiAgICAgICAgcHVzaCh0eXBlcywgcmVsZWFzZUNvbnRleHRUeXBlcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cblxuICBnZXRBeGlvbXMocmVsZWFzZU5hbWVzID0gW10pIHtcbiAgICBjb25zdCBheGlvbXMgPSBbXSxcbiAgICAgICAgICByZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lID0gcmVsZWFzZU5hbWVzLmluY2x1ZGVzKHRoaXMucmVsZWFzZU5hbWUpO1xuXG4gICAgaWYgKCFyZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lKSB7XG4gICAgICByZWxlYXNlTmFtZXMucHVzaCh0aGlzLnJlbGVhc2VOYW1lKTtcblxuICAgICAgY29uc3QgYnViYmxlID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVDb250ZXh0QXhpb21zID0gZmlsZUNvbnRleHQuZ2V0QXhpb21zKGJ1YmJsZSk7XG5cbiAgICAgICAgcHVzaChheGlvbXMsIGZpbGVDb250ZXh0QXhpb21zKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCByZWxlYXNlQ29udGV4dEF4aW9tcyA9IHJlbGVhc2VDb250ZXh0LmdldEF4aW9tcyhyZWxlYXNlTmFtZXMpO1xuXG4gICAgICAgIHB1c2goYXhpb21zLCByZWxlYXNlQ29udGV4dEF4aW9tcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXhpb21zO1xuICB9XG5cbiAgZ2V0Q29tYmluYXRvcnMocmVsZWFzZU5hbWVzID0gW10pIHtcbiAgICBjb25zdCBjb21iaW5hdG9ycyA9IFtdLFxuICAgICAgICAgIHJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUgPSByZWxlYXNlTmFtZXMuaW5jbHVkZXModGhpcy5yZWxlYXNlTmFtZSk7XG5cbiAgICBpZiAoIXJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUpIHtcbiAgICAgIHJlbGVhc2VOYW1lcy5wdXNoKHRoaXMucmVsZWFzZU5hbWUpO1xuXG4gICAgICBjb25zdCBidWJibGUgPSBmYWxzZTtcblxuICAgICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZUNvbnRleHRDb21iaW5hdG9ycyA9IGZpbGVDb250ZXh0LmdldENvbWJpbmF0b3JzKGJ1YmJsZSk7XG5cbiAgICAgICAgcHVzaChjb21iaW5hdG9ycywgZmlsZUNvbnRleHRDb21iaW5hdG9ycyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRDb21iaW5hdG9ycyA9IHJlbGVhc2VDb250ZXh0LmdldENvbWJpbmF0b3JzKHJlbGVhc2VOYW1lcyk7XG5cbiAgICAgICAgcHVzaChjb21iaW5hdG9ycywgcmVsZWFzZUNvbnRleHRDb21iaW5hdG9ycyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tYmluYXRvcnM7XG4gIH1cblxuICBnZXRDb25zdHJ1Y3RvcnMocmVsZWFzZU5hbWVzID0gW10pIHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvcnMgPSBbXSxcbiAgICAgICAgICByZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lID0gcmVsZWFzZU5hbWVzLmluY2x1ZGVzKHRoaXMucmVsZWFzZU5hbWUpO1xuXG4gICAgaWYgKCFyZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lKSB7XG4gICAgICByZWxlYXNlTmFtZXMucHVzaCh0aGlzLnJlbGVhc2VOYW1lKTtcblxuICAgICAgY29uc3QgYnViYmxlID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVDb250ZXh0Q29uc3RydWN0b3JzID0gZmlsZUNvbnRleHQuZ2V0Q29uc3RydWN0b3JzKGJ1YmJsZSk7XG5cbiAgICAgICAgcHVzaChjb25zdHJ1Y3RvcnMsIGZpbGVDb250ZXh0Q29uc3RydWN0b3JzKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCByZWxlYXNlQ29udGV4dENvbnN0cnVjdG9ycyA9IHJlbGVhc2VDb250ZXh0LmdldENvbnN0cnVjdG9ycyhyZWxlYXNlTmFtZXMpO1xuXG4gICAgICAgIHB1c2goY29uc3RydWN0b3JzLCByZWxlYXNlQ29udGV4dENvbnN0cnVjdG9ycyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JzO1xuICB9XG5cbiAgZ2V0Q3VzdG9tR3JhbW1hcigpIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5yZWxlYXNlTmFtZSwgLy8vXG4gICAgICAgICAgdGVybUJORiA9IHRoaXMuZ2V0VGVybUJORigpLFxuICAgICAgICAgIHN0YXRlbWVudEJORiA9IHRoaXMuZ2V0U3RhdGVtZW50Qk5GKCksXG4gICAgICAgICAgbWV0YXN0YXRlbWVudEJORiA9IHRoaXMuZ2V0TWV0YXN0YXRlbWVudEJORigpLFxuICAgICAgICAgIHR5cGVQYXR0ZXJuID0gdGhpcy5nZXRUeXBlUGF0dGVybigpLFxuICAgICAgICAgIHN5bWJvbFBhdHRlcm4gPSB0aGlzLmdldFN5bWJvbFBhdHRlcm4oKSxcbiAgICAgICAgICBvcGVyYXRvclBhdHRlcm4gPSB0aGlzLmdldE9wZXJhdG9yUGF0dGVybigpLFxuICAgICAgICAgIGN1c3RvbUdyYW1tYXIgPSBuZXcgQ3VzdG9tR3JhbW1hcihuYW1lLCB0ZXJtQk5GLCBzdGF0ZW1lbnRCTkYsIG1ldGFzdGF0ZW1lbnRCTkYsIHR5cGVQYXR0ZXJuLCBzeW1ib2xQYXR0ZXJuLCBvcGVyYXRvclBhdHRlcm4pO1xuXG4gICAgcmV0dXJuIGN1c3RvbUdyYW1tYXI7XG4gIH1cblxuICBhZGRGaWxlQ29udGV4dChmaWxlQ29udGV4dCkge1xuICAgIHRoaXMuZmlsZUNvbnRleHRzLnB1c2goZmlsZUNvbnRleHQpO1xuICB9XG5cbiAgdG9rZW5pc2UoY29udGVudCkgeyByZXR1cm4gdGhpcy5mbG9yZW5jZUxleGVyLnRva2VuaXNlKGNvbnRlbnQpOyB9XG5cbiAgcGFyc2UodG9rZW5zKSB7IHJldHVybiB0aGlzLmZsb3JlbmNlUGFyc2VyLnBhcnNlKHRva2Vucyk7IH1cblxuICB0cmFjZShtZXNzYWdlKSB7IHRoaXMubG9nLnRyYWNlKG1lc3NhZ2UpOyB9XG5cbiAgZGVidWcobWVzc2FnZSkgeyB0aGlzLmxvZy5kZWJ1ZyhtZXNzYWdlKTsgfVxuXG4gIGluZm8obWVzc2FnZSkgeyB0aGlzLmxvZy5pbmZvKG1lc3NhZ2UpOyB9XG5cbiAgd2FybmluZyhtZXNzYWdlKSB7IHRoaXMubG9nLndhcm5pbmcobWVzc2FnZSk7IH1cblxuICBlcnJvcihtZXNzYWdlKSB7IHRoaXMubG9nLmVycm9yKG1lc3NhZ2UpOyB9XG5cbiAgZmF0YWwobWVzc2FnZSkgeyB0aGlzLmxvZy5mYXRhbChtZXNzYWdlKTsgfVxuXG4gIGluaXRpYWxpc2UocmVsZWFzZUNvbnRleHRzLCBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKSB7XG4gICAgdGhpcy5yZWxlYXNlQ29udGV4dHMgPSByZWxlYXNlQ29udGV4dHM7XG5cbiAgICBjb25zdCByZWxlYXNlQ29udGV4dCA9IHRoaXM7ICAvLy9cblxuICAgIHJlbGVhc2VDb250ZXh0cyA9IFsgcmVsZWFzZUNvbnRleHQsIC4uLmRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMgXTsgLy8vXG5cbiAgICBjb25zdCBjdXN0b21HcmFtbWFycyA9IHJlbGVhc2VDb250ZXh0cy5tYXAoKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21HcmFtbWFyID0gcmVsZWFzZUNvbnRleHQuZ2V0Q3VzdG9tR3JhbW1hcigpO1xuXG4gICAgICAgICAgICByZXR1cm4gY3VzdG9tR3JhbW1hcjtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjb21iaW5lZEN1c3RvbUdyYW1tYXIgPSBDb21iaW5lZEN1c3RvbUdyYW1tYXIuZnJvbUN1c3RvbUdyYW1tYXJzKGN1c3RvbUdyYW1tYXJzKTtcblxuICAgIHRoaXMuZmxvcmVuY2VMZXhlciA9IGZsb3JlbmNlTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKGNvbWJpbmVkQ3VzdG9tR3JhbW1hcik7XG5cbiAgICB0aGlzLmZsb3JlbmNlUGFyc2VyID0gZmxvcmVuY2VQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKGNvbWJpbmVkQ3VzdG9tR3JhbW1hcik7XG4gIH1cblxuICBzdGF0aWMgZnJvbVJlbGVhc2VOYW1lQW5kTG9nKENsYXNzLCByZWxlYXNlTmFtZSwgbG9nLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCBmaWxlQ29udGV4dHMgPSBbXSxcbiAgICAgICAgICBmbG9yZW5jZUxleGVyID0gbnVsbCxcbiAgICAgICAgICBmbG9yZW5jZVBhcnNlciA9IG51bGwsXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gW10sXG4gICAgICAgICAgcmVsZWFzZVZlcmlmaWVkID0gZmFsc2UsXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSBuZXcgQ2xhc3MocmVsZWFzZU5hbWUsIGZpbGVDb250ZXh0cywgZmxvcmVuY2VMZXhlciwgZmxvcmVuY2VQYXJzZXIsIHJlbGVhc2VDb250ZXh0cywgcmVsZWFzZVZlcmlmaWVkLCBsb2csIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICByZXR1cm4gcmVsZWFzZUNvbnRleHQ7XG4gIH1cbn1cbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiUmVsZWFzZUNvbnRleHQiLCJmbG9yZW5jZUxleGVyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsImxleGVyc1V0aWxpdGllcyIsImZsb3JlbmNlUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsInBhcnNlcnNVdGlsaXRpZXMiLCJyZWxlYXNlTmFtZSIsImZpbGVDb250ZXh0cyIsImZsb3JlbmNlTGV4ZXIiLCJmbG9yZW5jZVBhcnNlciIsInJlbGVhc2VDb250ZXh0cyIsInJlbGVhc2VWZXJpZmllZCIsImxvZyIsImdldFJlbGVhc2VOYW1lIiwiZ2V0RmlsZUNvbnRleHRzIiwiZ2V0RmxvcmVuY2VMZXhlciIsImdldEZsb3JlbmNlUGFyc2VyIiwiZ2V0UmVsZWFzZUNvbnRleHRzIiwiZ2V0TG9nIiwiaXNSZWxlYXNlVmVyaWZpZWQiLCJnZXRSdWxlcyIsInJlbGVhc2VOYW1lcyIsInJ1bGVzIiwicmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSIsImluY2x1ZGVzIiwicHVzaCIsImJ1YmJsZSIsImZvckVhY2giLCJmaWxlQ29udGV4dCIsImZpbGVDb250ZXh0UnVsZXMiLCJyZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0UnVsZXMiLCJnZXRUeXBlcyIsInR5cGVzIiwiZmlsZUNvbnRleHRUeXBlcyIsInJlbGVhc2VDb250ZXh0VHlwZXMiLCJnZXRBeGlvbXMiLCJheGlvbXMiLCJmaWxlQ29udGV4dEF4aW9tcyIsInJlbGVhc2VDb250ZXh0QXhpb21zIiwiZ2V0Q29tYmluYXRvcnMiLCJjb21iaW5hdG9ycyIsImZpbGVDb250ZXh0Q29tYmluYXRvcnMiLCJyZWxlYXNlQ29udGV4dENvbWJpbmF0b3JzIiwiZ2V0Q29uc3RydWN0b3JzIiwiY29uc3RydWN0b3JzIiwiZmlsZUNvbnRleHRDb25zdHJ1Y3RvcnMiLCJyZWxlYXNlQ29udGV4dENvbnN0cnVjdG9ycyIsImdldEN1c3RvbUdyYW1tYXIiLCJuYW1lIiwidGVybUJORiIsImdldFRlcm1CTkYiLCJzdGF0ZW1lbnRCTkYiLCJnZXRTdGF0ZW1lbnRCTkYiLCJtZXRhc3RhdGVtZW50Qk5GIiwiZ2V0TWV0YXN0YXRlbWVudEJORiIsInR5cGVQYXR0ZXJuIiwiZ2V0VHlwZVBhdHRlcm4iLCJzeW1ib2xQYXR0ZXJuIiwiZ2V0U3ltYm9sUGF0dGVybiIsIm9wZXJhdG9yUGF0dGVybiIsImdldE9wZXJhdG9yUGF0dGVybiIsImN1c3RvbUdyYW1tYXIiLCJDdXN0b21HcmFtbWFyIiwiYWRkRmlsZUNvbnRleHQiLCJ0b2tlbmlzZSIsImNvbnRlbnQiLCJwYXJzZSIsInRva2VucyIsInRyYWNlIiwibWVzc2FnZSIsImRlYnVnIiwiaW5mbyIsIndhcm5pbmciLCJlcnJvciIsImZhdGFsIiwiaW5pdGlhbGlzZSIsImRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJjdXN0b21HcmFtbWFycyIsIm1hcCIsImNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsIkNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsImZyb21DdXN0b21HcmFtbWFycyIsImZyb21SZWxlYXNlTmFtZUFuZExvZyIsIkNsYXNzIiwicmVtYWluaW5nQXJndW1lbnRzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVNxQkE7OzttQ0FQbUU7cUJBRW5FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVyQixJQUFNLEFBQUVDLHlDQUEyQ0Msb0NBQWUsQ0FBMURELHdDQUNGLEFBQUVFLDBDQUE0Q0MscUNBQWdCLENBQTVERDtBQUVPLElBQUEsQUFBTUgsK0JBQU47YUFBTUEsZUFDUEssV0FBVyxFQUFFQyxZQUFZLEVBQUVDLGFBQWEsRUFBRUMsY0FBYyxFQUFFQyxlQUFlLEVBQUVDLGVBQWUsRUFBRUMsR0FBRzs4QkFEeEZYO1FBRWpCLElBQUksQ0FBQ0ssV0FBVyxHQUFHQTtRQUNuQixJQUFJLENBQUNDLFlBQVksR0FBR0E7UUFDcEIsSUFBSSxDQUFDQyxhQUFhLEdBQUdBO1FBQ3JCLElBQUksQ0FBQ0MsY0FBYyxHQUFHQTtRQUN0QixJQUFJLENBQUNDLGVBQWUsR0FBR0E7UUFDdkIsSUFBSSxDQUFDQyxlQUFlLEdBQUdBO1FBRXZCLElBQUksQ0FBQ0MsR0FBRyxHQUFHQTs7aUJBVE1YOztZQVluQlksS0FBQUE7bUJBQUFBLFNBQUFBLGlCQUFpQjtnQkFDZixPQUFPLElBQUksQ0FBQ1AsV0FBVztZQUN6Qjs7O1lBRUFRLEtBQUFBO21CQUFBQSxTQUFBQSxrQkFB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
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3JlbGVhc2UuanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEN1c3RvbUdyYW1tYXIsIGxleGVyc1V0aWxpdGllcywgcGFyc2Vyc1V0aWxpdGllcywgQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gZnJvbSBcIm9jY2FtLWN1c3RvbS1ncmFtbWFyc1wiO1xuXG5pbXBvcnQgeyBwdXNoIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHtkZXBlbmRlbmNpZXNGcm9tUmVsZWFzZU5hbWUsIGZpbGVQYXRoc0Zyb21SZWxlYXNlTmFtZX0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9yZWxlYXNlXCI7XG5cbmNvbnN0IHsgZmxvcmVuY2VMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIgfSA9IGxleGVyc1V0aWxpdGllcyxcbiAgICAgIHsgZmxvcmVuY2VQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gPSBwYXJzZXJzVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWxlYXNlQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGxvZywgcmVsZWFzZSwgdmVyaWZpZWQsIGZpbGVDb250ZXh0cywgZmxvcmVuY2VMZXhlciwgZmxvcmVuY2VQYXJzZXIsIHJlbGVhc2VDb250ZXh0cykge1xuICAgIHRoaXMubG9nID0gbG9nO1xuICAgIHRoaXMucmVsZWFzZSA9IHJlbGVhc2U7XG4gICAgdGhpcy52ZXJpZmllZCA9IHZlcmlmaWVkO1xuICAgIHRoaXMuZmlsZUNvbnRleHRzID0gZmlsZUNvbnRleHRzO1xuICAgIHRoaXMuZmxvcmVuY2VMZXhlciA9IGZsb3JlbmNlTGV4ZXI7XG4gICAgdGhpcy5mbG9yZW5jZVBhcnNlciA9IGZsb3JlbmNlUGFyc2VyO1xuICAgIHRoaXMucmVsZWFzZUNvbnRleHRzID0gcmVsZWFzZUNvbnRleHRzO1xuICB9XG5cbiAgZ2V0TG9nKCkge1xuICAgIHJldHVybiB0aGlzLmxvZztcbiAgfVxuXG4gIGdldFJlbGVhc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVsZWFzZTtcbiAgfVxuXG4gIGlzVmVyaWZpZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMudmVyaWZpZWQ7XG4gIH1cblxuICBnZXRGaWxlQ29udGV4dHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZUNvbnRleHRzO1xuICB9XG5cbiAgZ2V0RmxvcmVuY2VMZXhlcigpIHtcbiAgICByZXR1cm4gdGhpcy5mbG9yZW5jZUxleGVyO1xuICB9XG5cbiAgZ2V0RmxvcmVuY2VQYXJzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxvcmVuY2VQYXJzZXI7XG4gIH1cblxuICBnZXRSZWxlYXNlQ29udGV4dHMoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVsZWFzZUNvbnRleHRzO1xuICB9XG5cbiAgZ2V0UmVsZWFzZU5hbWUoKSB7XG4gICAgY29uc3QgcmVsZWFzZU5hbWUgPSB0aGlzLnJlbGVhc2UuZ2V0TmFtZSgpO1xuXG4gICAgcmV0dXJuIHJlbGVhc2VOYW1lO1xuICB9XG5cbiAgZ2V0VmVyc2lvbigpIHsgcmV0dXJuIHRoaXMucmVsZWFzZS5nZXRWZXJzaW9uKCk7IH1cblxuICBnZXRGaWxlUGF0aHMoKSB7IHJldHVybiB0aGlzLnJlbGVhc2UuZ2V0RmlsZVBhdG5zKCk7IH1cblxuICBnZXRGaWxlQ29udGVudChmaWxlUGF0aCkgeyByZXR1cm4gdGhpcy5yZWxlYXNlLmdldEZpbGVDb250ZW50KGZpbGVQYXRoKTsgfVxuXG4gIGdldERlcGVuZGVuY2llcygpIHsgcmV0dXJuIHRoaXMucmVsZWFzZS5nZXREZXBlbmRlbmNpZXMoKTsgfVxuXG4gIGdldFJ1bGVzKHJlbGVhc2VOYW1lcyA9IFtdKSB7XG4gICAgY29uc3QgcnVsZXMgPSBbXSxcbiAgICAgICAgICByZWxlYXNlTmFtZSA9IHRoaXMuZ2V0UmVsZWFzZU5hbWUoKSxcbiAgICAgICAgICByZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lID0gcmVsZWFzZU5hbWVzLmluY2x1ZGVzKHJlbGVhc2VOYW1lKTtcblxuICAgIGlmICghcmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSkge1xuICAgICAgcmVsZWFzZU5hbWVzLnB1c2gocmVsZWFzZU5hbWUpO1xuXG4gICAgICBjb25zdCBidWJibGUgPSBmYWxzZTtcblxuICAgICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZUNvbnRleHRSdWxlcyA9IGZpbGVDb250ZXh0LmdldFJ1bGVzKGJ1YmJsZSk7XG5cbiAgICAgICAgcHVzaChydWxlcywgZmlsZUNvbnRleHRSdWxlcyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRSdWxlcyA9IHJlbGVhc2VDb250ZXh0LmdldFJ1bGVzKHJlbGVhc2VOYW1lcyk7XG5cbiAgICAgICAgcHVzaChydWxlcywgcmVsZWFzZUNvbnRleHRSdWxlcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnVsZXM7XG4gIH1cblxuICBnZXRUeXBlcyhyZWxlYXNlTmFtZXMgPSBbXSkge1xuICAgIGNvbnN0IHR5cGVzID0gW10sXG4gICAgICAgICAgcmVsZWFzZU5hbWUgPSB0aGlzLmdldFJlbGVhZXNOYW1lKCksXG4gICAgICAgICAgcmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSA9IHJlbGVhc2VOYW1lcy5pbmNsdWRlcyhyZWxlYXNlTmFtZSk7XG5cbiAgICBpZiAoIXJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUpIHtcbiAgICAgIHJlbGVhc2VOYW1lcy5wdXNoKHJlbGVhc2VOYW1lKTtcblxuICAgICAgY29uc3QgYnViYmxlID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVDb250ZXh0VHlwZXMgPSBmaWxlQ29udGV4dC5nZXRUeXBlcyhidWJibGUpO1xuXG4gICAgICAgIHB1c2godHlwZXMsIGZpbGVDb250ZXh0VHlwZXMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0VHlwZXMgPSByZWxlYXNlQ29udGV4dC5nZXRUeXBlcyhyZWxlYXNlTmFtZXMpO1xuXG4gICAgICAgIHB1c2godHlwZXMsIHJlbGVhc2VDb250ZXh0VHlwZXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVzO1xuICB9XG5cbiAgZ2V0QXhpb21zKHJlbGVhc2VOYW1lcyA9IFtdKSB7XG4gICAgY29uc3QgYXhpb21zID0gW10sXG4gICAgICAgICAgcmVsZWFzZU5hbWUgPSB0aGlzLmdldFJlbGVhc2VOYW1lKCksXG4gICAgICAgICAgcmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSA9IHJlbGVhc2VOYW1lcy5pbmNsdWRlcyhyZWxlYXNlTmFtZSk7XG5cbiAgICBpZiAoIXJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUpIHtcbiAgICAgIHJlbGVhc2VOYW1lcy5wdXNoKHJlbGVhc2VOYW1lKTtcblxuICAgICAgY29uc3QgYnViYmxlID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVDb250ZXh0QXhpb21zID0gZmlsZUNvbnRleHQuZ2V0QXhpb21zKGJ1YmJsZSk7XG5cbiAgICAgICAgcHVzaChheGlvbXMsIGZpbGVDb250ZXh0QXhpb21zKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCByZWxlYXNlQ29udGV4dEF4aW9tcyA9IHJlbGVhc2VDb250ZXh0LmdldEF4aW9tcyhyZWxlYXNlTmFtZXMpO1xuXG4gICAgICAgIHB1c2goYXhpb21zLCByZWxlYXNlQ29udGV4dEF4aW9tcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXhpb21zO1xuICB9XG5cbiAgZ2V0Q29tYmluYXRvcnMocmVsZWFzZU5hbWVzID0gW10pIHtcbiAgICBjb25zdCBjb21iaW5hdG9ycyA9IFtdLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gdGhpcy5nZXRSZWxlYXNlTmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUgPSByZWxlYXNlTmFtZXMuaW5jbHVkZXMocmVsZWFzZU5hbWUpO1xuXG4gICAgaWYgKCFyZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lKSB7XG4gICAgICByZWxlYXNlTmFtZXMucHVzaChyZWxlYXNlTmFtZSk7XG5cbiAgICAgIGNvbnN0IGJ1YmJsZSA9IGZhbHNlO1xuXG4gICAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBmaWxlQ29udGV4dENvbWJpbmF0b3JzID0gZmlsZUNvbnRleHQuZ2V0Q29tYmluYXRvcnMoYnViYmxlKTtcblxuICAgICAgICBwdXNoKGNvbWJpbmF0b3JzLCBmaWxlQ29udGV4dENvbWJpbmF0b3JzKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCByZWxlYXNlQ29udGV4dENvbWJpbmF0b3JzID0gcmVsZWFzZUNvbnRleHQuZ2V0Q29tYmluYXRvcnMocmVsZWFzZU5hbWVzKTtcblxuICAgICAgICBwdXNoKGNvbWJpbmF0b3JzLCByZWxlYXNlQ29udGV4dENvbWJpbmF0b3JzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjb21iaW5hdG9ycztcbiAgfVxuXG4gIGdldENvbnN0cnVjdG9ycyhyZWxlYXNlTmFtZXMgPSBbXSkge1xuICAgIGNvbnN0IHJlbGVhc2VOYW1lID0gdGhpcy5nZXRSZWxlYXNlTmFtZSgpLFxuICAgICAgICAgIGNvbnN0cnVjdG9ycyA9IFtdLFxuICAgICAgICAgIHJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUgPSByZWxlYXNlTmFtZXMuaW5jbHVkZXMocmVsZWFzZU5hbWUpO1xuXG4gICAgaWYgKCFyZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lKSB7XG4gICAgICByZWxlYXNlTmFtZXMucHVzaChyZWxlYXNlTmFtZSk7XG5cbiAgICAgIGNvbnN0IGJ1YmJsZSA9IGZhbHNlO1xuXG4gICAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBmaWxlQ29udGV4dENvbnN0cnVjdG9ycyA9IGZpbGVDb250ZXh0LmdldENvbnN0cnVjdG9ycyhidWJibGUpO1xuXG4gICAgICAgIHB1c2goY29uc3RydWN0b3JzLCBmaWxlQ29udGV4dENvbnN0cnVjdG9ycyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRDb25zdHJ1Y3RvcnMgPSByZWxlYXNlQ29udGV4dC5nZXRDb25zdHJ1Y3RvcnMocmVsZWFzZU5hbWVzKTtcblxuICAgICAgICBwdXNoKGNvbnN0cnVjdG9ycywgcmVsZWFzZUNvbnRleHRDb25zdHJ1Y3RvcnMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ycztcbiAgfVxuXG4gIGdldEN1c3RvbUdyYW1tYXIoKSB7XG4gICAgY29uc3QgcmVsZWFzZU5hbWUgPSB0aGlzLmdldFJlbGVhc2VOYW1lKCksXG4gICAgICAgICAgbmFtZSA9IHJlbGVhc2VOYW1lLCAvLy9cbiAgICAgICAgICB0ZXJtQk5GID0gdGhpcy5nZXRUZXJtQk5GKCksXG4gICAgICAgICAgc3RhdGVtZW50Qk5GID0gdGhpcy5nZXRTdGF0ZW1lbnRCTkYoKSxcbiAgICAgICAgICBtZXRhc3RhdGVtZW50Qk5GID0gdGhpcy5nZXRNZXRhc3RhdGVtZW50Qk5GKCksXG4gICAgICAgICAgdHlwZVBhdHRlcm4gPSB0aGlzLmdldFR5cGVQYXR0ZXJuKCksXG4gICAgICAgICAgc3ltYm9sUGF0dGVybiA9IHRoaXMuZ2V0U3ltYm9sUGF0dGVybigpLFxuICAgICAgICAgIG9wZXJhdG9yUGF0dGVybiA9IHRoaXMuZ2V0T3BlcmF0b3JQYXR0ZXJuKCksXG4gICAgICAgICAgY3VzdG9tR3JhbW1hciA9IG5ldyBDdXN0b21HcmFtbWFyKG5hbWUsIHRlcm1CTkYsIHN0YXRlbWVudEJORiwgbWV0YXN0YXRlbWVudEJORiwgdHlwZVBhdHRlcm4sIHN5bWJvbFBhdHRlcm4sIG9wZXJhdG9yUGF0dGVybik7XG5cbiAgICByZXR1cm4gY3VzdG9tR3JhbW1hcjtcbiAgfVxuXG4gIGFkZEZpbGVDb250ZXh0KGZpbGVDb250ZXh0KSB7XG4gICAgdGhpcy5maWxlQ29udGV4dHMucHVzaChmaWxlQ29udGV4dCk7XG4gIH1cblxuICB0b2tlbmlzZShjb250ZW50KSB7IHJldHVybiB0aGlzLmZsb3JlbmNlTGV4ZXIudG9rZW5pc2UoY29udGVudCk7IH1cblxuICBwYXJzZSh0b2tlbnMpIHsgcmV0dXJuIHRoaXMuZmxvcmVuY2VQYXJzZXIucGFyc2UodG9rZW5zKTsgfVxuXG4gIHRyYWNlKG1lc3NhZ2UpIHsgdGhpcy5sb2cudHJhY2UobWVzc2FnZSk7IH1cblxuICBkZWJ1ZyhtZXNzYWdlKSB7IHRoaXMubG9nLmRlYnVnKG1lc3NhZ2UpOyB9XG5cbiAgaW5mbyhtZXNzYWdlKSB7IHRoaXMubG9nLmluZm8obWVzc2FnZSk7IH1cblxuICB3YXJuaW5nKG1lc3NhZ2UpIHsgdGhpcy5sb2cud2FybmluZyhtZXNzYWdlKTsgfVxuXG4gIGVycm9yKG1lc3NhZ2UpIHsgdGhpcy5sb2cuZXJyb3IobWVzc2FnZSk7IH1cblxuICBmYXRhbChtZXNzYWdlKSB7IHRoaXMubG9nLmZhdGFsKG1lc3NhZ2UpOyB9XG5cbiAgaW5pdGlhbGlzZShyZWxlYXNlQ29udGV4dHMsIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMpIHtcbiAgICB0aGlzLnJlbGVhc2VDb250ZXh0cyA9IHJlbGVhc2VDb250ZXh0cztcblxuICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gdGhpczsgIC8vL1xuXG4gICAgcmVsZWFzZUNvbnRleHRzID0gWyByZWxlYXNlQ29udGV4dCwgLi4uZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyBdOyAvLy9cblxuICAgIGNvbnN0IGN1c3RvbUdyYW1tYXJzID0gcmVsZWFzZUNvbnRleHRzLm1hcCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbUdyYW1tYXIgPSByZWxlYXNlQ29udGV4dC5nZXRDdXN0b21HcmFtbWFyKCk7XG5cbiAgICAgICAgICAgIHJldHVybiBjdXN0b21HcmFtbWFyO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IENvbWJpbmVkQ3VzdG9tR3JhbW1hci5mcm9tQ3VzdG9tR3JhbW1hcnMoY3VzdG9tR3JhbW1hcnMpO1xuXG4gICAgdGhpcy5mbG9yZW5jZUxleGVyID0gZmxvcmVuY2VMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIoY29tYmluZWRDdXN0b21HcmFtbWFyKTtcblxuICAgIHRoaXMuZmxvcmVuY2VQYXJzZXIgPSBmbG9yZW5jZVBhcnNlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIoY29tYmluZWRDdXN0b21HcmFtbWFyKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTG9nQW5kUmVsZWFzZShDbGFzcywgbG9nLCByZWxlYXNlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCB2ZXJpZmllZCA9IGZhbHNlLFxuICAgICAgICAgIGZpbGVDb250ZXh0cyA9IFtdLFxuICAgICAgICAgIGZsb3JlbmNlTGV4ZXIgPSBudWxsLFxuICAgICAgICAgIGZsb3JlbmNlUGFyc2VyID0gbnVsbCxcbiAgICAgICAgICByZWxlYXNlQ29udGV4dHMgPSBbXSxcbiAgICAgICAgICByZWxlYXNlQ29udGV4dCA9IG5ldyBDbGFzcyhsb2csIHJlbGVhc2UsIHZlcmlmaWVkLCBmaWxlQ29udGV4dHMsIGZsb3JlbmNlTGV4ZXIsIGZsb3JlbmNlUGFyc2VyLCByZWxlYXNlQ29udGV4dHMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICByZXR1cm4gcmVsZWFzZUNvbnRleHQ7XG4gIH1cbn1cbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiUmVsZWFzZUNvbnRleHQiLCJmbG9yZW5jZUxleGVyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsImxleGVyc1V0aWxpdGllcyIsImZsb3JlbmNlUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsInBhcnNlcnNVdGlsaXRpZXMiLCJsb2ciLCJyZWxlYXNlIiwidmVyaWZpZWQiLCJmaWxlQ29udGV4dHMiLCJmbG9yZW5jZUxleGVyIiwiZmxvcmVuY2VQYXJzZXIiLCJyZWxlYXNlQ29udGV4dHMiLCJnZXRMb2ciLCJnZXRSZWxlYXNlIiwiaXNWZXJpZmllZCIsImdldEZpbGVDb250ZXh0cyIsImdldEZsb3JlbmNlTGV4ZXIiLCJnZXRGbG9yZW5jZVBhcnNlciIsImdldFJlbGVhc2VDb250ZXh0cyIsImdldFJlbGVhc2VOYW1lIiwicmVsZWFzZU5hbWUiLCJnZXROYW1lIiwiZ2V0VmVyc2lvbiIsImdldEZpbGVQYXRocyIsImdldEZpbGVQYXRucyIsImdldEZpbGVDb250ZW50IiwiZmlsZVBhdGgiLCJnZXREZXBlbmRlbmNpZXMiLCJnZXRSdWxlcyIsInJlbGVhc2VOYW1lcyIsInJ1bGVzIiwicmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSIsImluY2x1ZGVzIiwicHVzaCIsImJ1YmJsZSIsImZvckVhY2giLCJmaWxlQ29udGV4dCIsImZpbGVDb250ZXh0UnVsZXMiLCJyZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0UnVsZXMiLCJnZXRUeXBlcyIsInR5cGVzIiwiZ2V0UmVsZWFlc05hbWUiLCJmaWxlQ29udGV4dFR5cGVzIiwicmVsZWFzZUNvbnRleHRUeXBlcyIsImdldEF4aW9tcyIsImF4aW9tcyIsImZpbGVDb250ZXh0QXhpb21zIiwicmVsZWFzZUNvbnRleHRBeGlvbXMiLCJnZXRDb21iaW5hdG9ycyIsImNvbWJpbmF0b3JzIiwiZmlsZUNvbnRleHRDb21iaW5hdG9ycyIsInJlbGVhc2VDb250ZXh0Q29tYmluYXRvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJmaWxlQ29udGV4dENvbnN0cnVjdG9ycyIsInJlbGVhc2VDb250ZXh0Q29uc3RydWN0b3JzIiwiZ2V0Q3VzdG9tR3JhbW1hciIsIm5hbWUiLCJ0ZXJtQk5GIiwiZ2V0VGVybUJORiIsInN0YXRlbWVudEJORiIsImdldFN0YXRlbWVudEJORiIsIm1ldGFzdGF0ZW1lbnRCTkYiLCJnZXRNZXRhc3RhdGVtZW50Qk5GIiwidHlwZVBhdHRlcm4iLCJnZXRUeXBlUGF0dGVybiIsInN5bWJvbFBhdHRlcm4iLCJnZXRTeW1ib2xQYXR0ZXJuIiwib3BlcmF0b3JQYXR0ZXJuIiwiZ2V0T3BlcmF0b3JQYXR0ZXJuIiwiY3VzdG9tR3JhbW1hciIsIkN1c3RvbUdyYW1tYXIiLCJhZGRGaWxlQ29udGV4dCIsInRva2VuaXNlIiwiY29udGVudCIsInBhcnNlIiwidG9rZW5zIiwidHJhY2UiLCJtZXNzYWdlIiwiZGVidWciLCJpbmZvIiwid2FybmluZyIsImVycm9yIiwiZmF0YWwiLCJpbml0aWFsaXNlIiwiZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsImN1c3RvbUdyYW1tYXJzIiwibWFwIiwiY29tYmluZWRDdXN0b21HcmFtbWFyIiwiQ29tYmluZWRDdXN0b21HcmFtbWFyIiwiZnJvbUN1c3RvbUdyYW1tYXJzIiwiZnJvbUxvZ0FuZFJlbGVhc2UiLCJDbGFzcyIsInJlbWFpbmluZ0FyZ3VtZW50cyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFVcUJBOzs7bUNBUm1FO3FCQUVuRTt1QkFDK0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXBFLElBQU0sQUFBRUMseUNBQTJDQyxvQ0FBZSxDQUExREQsd0NBQ0YsQUFBRUUsMENBQTRDQyxxQ0FBZ0IsQ0FBNUREO0FBRU8sSUFBQSxBQUFNSCwrQkFBTjthQUFNQSxlQUNQSyxHQUFHLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxZQUFZLEVBQUVDLGFBQWEsRUFBRUMsY0FBYyxFQUFFQyxlQUFlOzhCQUQ3RVg7UUFFakIsSUFBSSxDQUFDSyxHQUFHLEdBQUdBO1FBQ1gsSUFBSSxDQUFDQyxPQUFPLEdBQUdBO1FBQ2YsSUFBSSxDQUFDQyxRQUFRLEdBQUdBO1FBQ2hCLElBQUksQ0FBQ0MsWUFBWSxHQUFHQTtRQUNwQixJQUFJLENBQUNDLGFBQWEsR0FBR0E7UUFDckIsSUFBSSxDQUFDQyxjQUFjLEdBQUdBO1FBQ3RCLElBQUksQ0FBQ0MsZUFBZSxHQUFHQTs7aUJBUk5YOztZQVduQlksS0FBQUE7bUJBQUFBLFNBQUFBLFNBQVM7Z0JBQ1AsT0FBTyxJQUFJLENBQUNQLEdBQUc7WUFDakI7OztZQUVBUSxLQUFBQTttQkFBQUEsU0FBQUEsYUFBYTtnQkFDWCxPQUFPLElBQUksQ0FBQ1AsT0FBTztZQUNyQjs7O1lBRUFRLEtBQUFBO21CQUFBQSxTQUFBQSxhQUFhO2dCQUNYLE9BQU8sSUFBSSxDQUFDUCxRQUFRO1lBQ3RCOzs7WUFFQVEsS0FBQUE7bUJBQUFBLFNBQUFBLGtCQUFrQjtnQkFDaEIsT0FBTyxJQUFJLENBQUNQLFlBQVk7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
@@ -20,18 +20,18 @@ function verifyRelease(releaseName, releaseContextMap) {
20
20
  var releaseVerified = releaseContext.isReleaseVerified();
21
21
  if (!releaseVerified) {
22
22
  releaseContext.debug("Verifying the '".concat(releaseName, "' package..."));
23
- var dependencyReleaseNames = releaseContext.getDependencyReleaseNames(), dependencyReleasesVVerified = dependencyReleaseNames.every(function(dependencyReleaseName) {
24
- var _$releaseName = dependencyReleaseName, releaseVerified = verifyRelease(_$releaseName, releaseContextMap, releaseContexts);
23
+ var dependencies = releaseContext.getDependencies(), dependencyReleasesVVerified = dependencies.every(function(dependency) {
24
+ var name = dependency.getName(), _$releaseName = name, releaseVerified = verifyRelease(_$releaseName, releaseContextMap, releaseContexts);
25
25
  if (releaseVerified) {
26
26
  return true;
27
27
  }
28
28
  });
29
29
  if (dependencyReleasesVVerified) {
30
- var releaseNames = dependencyReleaseNames, releaseContexts1 = releaseNames.map(function(releaseName) {
31
- var releaseContext = releaseContextMap[releaseName];
30
+ var releaseContexts1 = dependencies.map(function(dependency) {
31
+ var name = dependency.getName(), _$releaseName = name, releaseContext = releaseContextMap[_$releaseName];
32
32
  return releaseContext;
33
33
  });
34
- var dependencyReleaseContexts = retrieveDependencyReleaseContexts(dependencyReleaseNames, releaseContextMap);
34
+ var dependencyReleaseContexts = retrieveDependencyReleaseContexts(dependencies, releaseContextMap);
35
35
  releaseContext.initialise(releaseContexts1, dependencyReleaseContexts);
36
36
  var filesVerified = (0, _files.default)(releaseContext);
37
37
  releaseVerified = filesVerified; ///
@@ -43,17 +43,17 @@ function verifyRelease(releaseName, releaseContextMap) {
43
43
  }
44
44
  return releaseVerified;
45
45
  }
46
- function retrieveDependencyReleaseContexts(dependencyReleaseNames, releaseContextMap) {
46
+ function retrieveDependencyReleaseContexts(dependencies, releaseContextMap) {
47
47
  var dependencyReleaseContexts = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
48
- dependencyReleaseNames.forEach(function(dependencyReleaseName) {
49
- var dependencyReleaseContext = releaseContextMap[dependencyReleaseName], dependencyReleaseContextsIncludesDependencyReleaseContext = dependencyReleaseContexts.includes(dependencyReleaseContext);
48
+ dependencies.forEach(function(dependency) {
49
+ var dependencyName = dependency.getName(), dependencyReleaseName = dependencyName, dependencyReleaseContext = releaseContextMap[dependencyReleaseName], dependencyReleaseContextsIncludesDependencyReleaseContext = dependencyReleaseContexts.includes(dependencyReleaseContext);
50
50
  if (!dependencyReleaseContextsIncludesDependencyReleaseContext) {
51
- var releaseContext = dependencyReleaseContext, _$dependencyReleaseNames = releaseContext.getDependencyReleaseNames();
52
- retrieveDependencyReleaseContexts(_$dependencyReleaseNames, releaseContextMap, dependencyReleaseContexts);
51
+ var releaseContext = dependencyReleaseContext, _$dependencies = releaseContext.getDependencies();
52
+ retrieveDependencyReleaseContexts(_$dependencies, releaseContextMap, dependencyReleaseContexts);
53
53
  dependencyReleaseContexts.push(dependencyReleaseContext);
54
54
  }
55
55
  });
56
56
  return dependencyReleaseContexts;
57
57
  }
58
58
 
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvcmVsZWFzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeUZpbGVzIGZyb20gXCIuLi92ZXJpZnkvZmlsZXNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5UmVsZWFzZShyZWxlYXNlTmFtZSwgcmVsZWFzZUNvbnRleHRNYXAsIHJlbGVhc2VDb250ZXh0cyA9IFtdKSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdO1xuXG4gIGxldCByZWxlYXNlVmVyaWZpZWQgPSByZWxlYXNlQ29udGV4dC5pc1JlbGVhc2VWZXJpZmllZCgpO1xuXG4gIGlmICghcmVsZWFzZVZlcmlmaWVkKSB7XG4gICAgcmVsZWFzZUNvbnRleHQuZGVidWcoYFZlcmlmeWluZyB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwYWNrYWdlLi4uYCk7XG5cbiAgICBjb25zdCBkZXBlbmRlbmN5UmVsZWFzZU5hbWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jeVJlbGVhc2VOYW1lcygpLFxuICAgICAgICAgIGRlcGVuZGVuY3lSZWxlYXNlc1ZWZXJpZmllZCA9IGRlcGVuZGVuY3lSZWxlYXNlTmFtZXMuZXZlcnkoKGRlcGVuZGVuY3lSZWxlYXNlTmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVsZWFzZU5hbWUgPSBkZXBlbmRlbmN5UmVsZWFzZU5hbWUsICAvLy9cbiAgICAgICAgICAgICAgICAgIHJlbGVhc2VWZXJpZmllZCA9IHZlcmlmeVJlbGVhc2UocmVsZWFzZU5hbWUsIHJlbGVhc2VDb250ZXh0TWFwLCByZWxlYXNlQ29udGV4dHMpO1xuXG4gICAgICAgICAgICBpZiAocmVsZWFzZVZlcmlmaWVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgaWYgKGRlcGVuZGVuY3lSZWxlYXNlc1ZWZXJpZmllZCkge1xuICAgICAgY29uc3QgcmVsZWFzZU5hbWVzID0gZGVwZW5kZW5jeVJlbGVhc2VOYW1lcywgIC8vL1xuICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gcmVsZWFzZU5hbWVzLm1hcCgocmVsZWFzZU5hbWUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV07XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMgPSByZXRyaWV2ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeVJlbGVhc2VOYW1lcywgcmVsZWFzZUNvbnRleHRNYXApO1xuXG4gICAgICByZWxlYXNlQ29udGV4dC5pbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cywgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyk7XG5cbiAgICAgIGNvbnN0IGZpbGVzVmVyaWZpZWQgPSB2ZXJpZnlGaWxlcyhyZWxlYXNlQ29udGV4dCk7XG5cbiAgICAgIHJlbGVhc2VWZXJpZmllZCA9IGZpbGVzVmVyaWZpZWQ7ICAvLy9cblxuICAgICAgaWYgKHJlbGVhc2VWZXJpZmllZCkge1xuICAgICAgICByZWxlYXNlQ29udGV4dHMucHVzaChyZWxlYXNlQ29udGV4dCk7XG5cbiAgICAgICAgcmVsZWFzZUNvbnRleHQuaW5mbyhgVmVyaWZpZWQgdGhlICcke3JlbGVhc2VOYW1lfScgcmVsZWFzZS5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiByZXRyaWV2ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeVJlbGVhc2VOYW1lcywgcmVsZWFzZUNvbnRleHRNYXAsIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMgPSBbXSkge1xuICBkZXBlbmRlbmN5UmVsZWFzZU5hbWVzLmZvckVhY2goKGRlcGVuZGVuY3lSZWxlYXNlTmFtZSkgPT4ge1xuICAgIGNvbnN0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW2RlcGVuZGVuY3lSZWxlYXNlTmFtZV0sXG4gICAgICAgICAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0luY2x1ZGVzRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0ID0gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cy5pbmNsdWRlcyhkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHQpO1xuXG4gICAgaWYgKCFkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzSW5jbHVkZXNEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHQpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0LCAgLy8vXG4gICAgICAgICAgICBkZXBlbmRlbmN5UmVsZWFzZU5hbWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jeVJlbGVhc2VOYW1lcygpO1xuXG4gICAgICByZXRyaWV2ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeVJlbGVhc2VOYW1lcywgcmVsZWFzZUNvbnRleHRNYXAsIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMpO1xuXG4gICAgICBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzLnB1c2goZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVJlbGVhc2UiLCJyZWxlYXNlTmFtZSIsInJlbGVhc2VDb250ZXh0TWFwIiwicmVsZWFzZUNvbnRleHRzIiwicmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlVmVyaWZpZWQiLCJpc1JlbGVhc2VWZXJpZmllZCIsImRlYnVnIiwiZGVwZW5kZW5jeVJlbGVhc2VOYW1lcyIsImdldERlcGVuZGVuY3lSZWxlYXNlTmFtZXMiLCJkZXBlbmRlbmN5UmVsZWFzZXNWVmVyaWZpZWQiLCJldmVyeSIsImRlcGVuZGVuY3lSZWxlYXNlTmFtZSIsInJlbGVhc2VOYW1lcyIsIm1hcCIsImRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJyZXRyaWV2ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJpbml0aWFsaXNlIiwiZmlsZXNWZXJpZmllZCIsInZlcmlmeUZpbGVzIiwicHVzaCIsImluZm8iLCJmb3JFYWNoIiwiZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0IiwiZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0luY2x1ZGVzRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0IiwiaW5jbHVkZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUlBOzs7ZUFBd0JBOzs7MERBRkE7Ozs7OztBQUVULFNBQVNBLGNBQWNDLFdBQVcsRUFBRUMsaUJBQWlCLEVBQXdCO1FBQXRCQyxrQkFBQUEsaUVBQWtCLEVBQUU7SUFDeEYsSUFBTUMsaUJBQWlCRixpQkFBaUIsQ0FBQ0QsWUFBWTtJQUVyRCxJQUFJSSxrQkFBa0JELGVBQWVFLGlCQUFpQjtJQUV0RCxJQUFJLENBQUNELGlCQUFpQjtRQUNwQkQsZUFBZUcsS0FBSyxDQUFDLEFBQUMsa0JBQTZCLE9BQVpOLGFBQVk7UUFFbkQsSUFBTU8seUJBQXlCSixlQUFlSyx5QkFBeUIsSUFDakVDLDhCQUE4QkYsdUJBQXVCRyxLQUFLLENBQUMsU0FBQ0MsdUJBQTBCO1lBQ3BGLElBQU1YLGdCQUFjVyx1QkFDZFAsa0JBQWtCTCxjQUFjQyxlQUFhQyxtQkFBbUJDO1lBRXRFLElBQUlFLGlCQUFpQjtnQkFDbkIsT0FBTyxJQUFJO1lBQ2IsQ0FBQztRQUNIO1FBRU4sSUFBSUssNkJBQTZCO1lBQy9CLElBQU1HLGVBQWVMLHdCQUNmTCxtQkFBa0JVLGFBQWFDLEdBQUcsQ0FBQyxTQUFDYixhQUFnQjtnQkFDbEQsSUFBTUcsaUJBQWlCRixpQkFBaUIsQ0FBQ0QsWUFBWTtnQkFFckQsT0FBT0c7WUFDVDtZQUVOLElBQU1XLDRCQUE0QkMsa0NBQWtDUix3QkFBd0JOO1lBRTVGRSxlQUFlYSxVQUFVLENBQUNkLGtCQUFpQlk7WUFFM0MsSUFBTUcsZ0JBQWdCQyxJQUFBQSxjQUFXLEVBQUNmO1lBRWxDQyxrQkFBa0JhLGVBQWdCLEdBQUc7WUFFckMsSUFBSWIsaUJBQWlCO2dCQUNuQkYsaUJBQWdCaUIsSUFBSSxDQUFDaEI7Z0JBRXJCQSxlQUFlaUIsSUFBSSxDQUFDLEFBQUMsaUJBQTRCLE9BQVpwQixhQUFZO1lBQ25ELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU9JO0FBQ1Q7QUFFQSxTQUFTVyxrQ0FBa0NSLHNCQUFzQixFQUFFTixpQkFBaUIsRUFBa0M7UUFBaENhLDRCQUFBQSxpRUFBNEIsRUFBRTtJQUNsSFAsdUJBQXVCYyxPQUFPLENBQUMsU0FBQ1YsdUJBQTBCO1FBQ3hELElBQU1XLDJCQUEyQnJCLGlCQUFpQixDQUFDVSxzQkFBc0IsRUFDbkVZLDREQUE0RFQsMEJBQTBCVSxRQUFRLENBQUNGO1FBRXJHLElBQUksQ0FBQ0MsMkRBQTJEO1lBQzlELElBQU1wQixpQkFBaUJtQiwwQkFDakJmLDJCQUF5QkosZUFBZUsseUJBQXlCO1lBRXZFTyxrQ0FBa0NSLDBCQUF3Qk4sbUJBQW1CYTtZQUU3RUEsMEJBQTBCSyxJQUFJLENBQUNHO1FBQ2pDLENBQUM7SUFDSDtJQUVBLE9BQU9SO0FBQ1QifQ==
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvcmVsZWFzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeUZpbGVzIGZyb20gXCIuLi92ZXJpZnkvZmlsZXNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5UmVsZWFzZShyZWxlYXNlTmFtZSwgcmVsZWFzZUNvbnRleHRNYXAsIHJlbGVhc2VDb250ZXh0cyA9IFtdKSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdO1xuXG4gIGxldCByZWxlYXNlVmVyaWZpZWQgPSByZWxlYXNlQ29udGV4dC5pc1JlbGVhc2VWZXJpZmllZCgpO1xuXG4gIGlmICghcmVsZWFzZVZlcmlmaWVkKSB7XG4gICAgcmVsZWFzZUNvbnRleHQuZGVidWcoYFZlcmlmeWluZyB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwYWNrYWdlLi4uYCk7XG5cbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgICBkZXBlbmRlbmN5UmVsZWFzZXNWVmVyaWZpZWQgPSBkZXBlbmRlbmNpZXMuZXZlcnkoKGRlcGVuZGVuY3kpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgICAgICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgcmVsZWFzZVZlcmlmaWVkID0gdmVyaWZ5UmVsZWFzZShyZWxlYXNlTmFtZSwgcmVsZWFzZUNvbnRleHRNYXAsIHJlbGVhc2VDb250ZXh0cyk7XG5cbiAgICAgICAgICAgIGlmIChyZWxlYXNlVmVyaWZpZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICBpZiAoZGVwZW5kZW5jeVJlbGVhc2VzVlZlcmlmaWVkKSB7XG4gICAgICBjb25zdCByZWxlYXNlQ29udGV4dHMgPSBkZXBlbmRlbmNpZXMubWFwKChkZXBlbmRlbmN5KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgICAgICAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV07XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMgPSByZXRyaWV2ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jaWVzLCByZWxlYXNlQ29udGV4dE1hcCk7XG5cbiAgICAgIHJlbGVhc2VDb250ZXh0LmluaXRpYWxpc2UocmVsZWFzZUNvbnRleHRzLCBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKTtcblxuICAgICAgY29uc3QgZmlsZXNWZXJpZmllZCA9IHZlcmlmeUZpbGVzKHJlbGVhc2VDb250ZXh0KTtcblxuICAgICAgcmVsZWFzZVZlcmlmaWVkID0gZmlsZXNWZXJpZmllZDsgIC8vL1xuXG4gICAgICBpZiAocmVsZWFzZVZlcmlmaWVkKSB7XG4gICAgICAgIHJlbGVhc2VDb250ZXh0cy5wdXNoKHJlbGVhc2VDb250ZXh0KTtcblxuICAgICAgICByZWxlYXNlQ29udGV4dC5pbmZvKGBWZXJpZmllZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyByZWxlYXNlLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHJldHJpZXZlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmNpZXMsIHJlbGVhc2VDb250ZXh0TWFwLCBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzID0gW10pIHtcbiAgZGVwZW5kZW5jaWVzLmZvckVhY2goKGRlcGVuZGVuY3kpID0+IHtcbiAgICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgIGRlcGVuZGVuY3lSZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgICBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtkZXBlbmRlbmN5UmVsZWFzZU5hbWVdLFxuICAgICAgICAgIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNJbmNsdWRlc0RlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCA9IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMuaW5jbHVkZXMoZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0KTtcblxuICAgIGlmICghZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0luY2x1ZGVzRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0KSB7XG4gICAgICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCwgIC8vL1xuICAgICAgICAgICAgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgICAgIHJldHJpZXZlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmNpZXMsIHJlbGVhc2VDb250ZXh0TWFwLCBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKTtcblxuICAgICAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cy5wdXNoKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cztcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlSZWxlYXNlIiwicmVsZWFzZU5hbWUiLCJyZWxlYXNlQ29udGV4dE1hcCIsInJlbGVhc2VDb250ZXh0cyIsInJlbGVhc2VDb250ZXh0IiwicmVsZWFzZVZlcmlmaWVkIiwiaXNSZWxlYXNlVmVyaWZpZWQiLCJkZWJ1ZyIsImRlcGVuZGVuY2llcyIsImdldERlcGVuZGVuY2llcyIsImRlcGVuZGVuY3lSZWxlYXNlc1ZWZXJpZmllZCIsImV2ZXJ5IiwiZGVwZW5kZW5jeSIsIm5hbWUiLCJnZXROYW1lIiwibWFwIiwiZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsInJldHJpZXZlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsImluaXRpYWxpc2UiLCJmaWxlc1ZlcmlmaWVkIiwidmVyaWZ5RmlsZXMiLCJwdXNoIiwiaW5mbyIsImZvckVhY2giLCJkZXBlbmRlbmN5TmFtZSIsImRlcGVuZGVuY3lSZWxlYXNlTmFtZSIsImRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCIsImRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNJbmNsdWRlc0RlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCIsImluY2x1ZGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFJQTs7O2VBQXdCQTs7OzBEQUZBOzs7Ozs7QUFFVCxTQUFTQSxjQUFjQyxXQUFXLEVBQUVDLGlCQUFpQixFQUF3QjtRQUF0QkMsa0JBQUFBLGlFQUFrQixFQUFFO0lBQ3hGLElBQU1DLGlCQUFpQkYsaUJBQWlCLENBQUNELFlBQVk7SUFFckQsSUFBSUksa0JBQWtCRCxlQUFlRSxpQkFBaUI7SUFFdEQsSUFBSSxDQUFDRCxpQkFBaUI7UUFDcEJELGVBQWVHLEtBQUssQ0FBQyxBQUFDLGtCQUE2QixPQUFaTixhQUFZO1FBRW5ELElBQU1PLGVBQWVKLGVBQWVLLGVBQWUsSUFDN0NDLDhCQUE4QkYsYUFBYUcsS0FBSyxDQUFDLFNBQUNDLFlBQWU7WUFDL0QsSUFBTUMsT0FBT0QsV0FBV0UsT0FBTyxJQUN6QmIsZ0JBQWNZLE1BQ2RSLGtCQUFrQkwsY0FBY0MsZUFBYUMsbUJBQW1CQztZQUV0RSxJQUFJRSxpQkFBaUI7Z0JBQ25CLE9BQU8sSUFBSTtZQUNiLENBQUM7UUFDSDtRQUVOLElBQUlLLDZCQUE2QjtZQUMvQixJQUFNUCxtQkFBa0JLLGFBQWFPLEdBQUcsQ0FBQyxTQUFDSCxZQUFlO2dCQUNqRCxJQUFNQyxPQUFPRCxXQUFXRSxPQUFPLElBQ3pCYixnQkFBY1ksTUFDZFQsaUJBQWlCRixpQkFBaUIsQ0FBQ0QsY0FBWTtnQkFFckQsT0FBT0c7WUFDVDtZQUVOLElBQU1ZLDRCQUE0QkMsa0NBQWtDVCxjQUFjTjtZQUVsRkUsZUFBZWMsVUFBVSxDQUFDZixrQkFBaUJhO1lBRTNDLElBQU1HLGdCQUFnQkMsSUFBQUEsY0FBVyxFQUFDaEI7WUFFbENDLGtCQUFrQmMsZUFBZ0IsR0FBRztZQUVyQyxJQUFJZCxpQkFBaUI7Z0JBQ25CRixpQkFBZ0JrQixJQUFJLENBQUNqQjtnQkFFckJBLGVBQWVrQixJQUFJLENBQUMsQUFBQyxpQkFBNEIsT0FBWnJCLGFBQVk7WUFDbkQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBT0k7QUFDVDtBQUVBLFNBQVNZLGtDQUFrQ1QsWUFBWSxFQUFFTixpQkFBaUIsRUFBa0M7UUFBaENjLDRCQUFBQSxpRUFBNEIsRUFBRTtJQUN4R1IsYUFBYWUsT0FBTyxDQUFDLFNBQUNYLFlBQWU7UUFDbkMsSUFBTVksaUJBQWlCWixXQUFXRSxPQUFPLElBQ25DVyx3QkFBd0JELGdCQUN4QkUsMkJBQTJCeEIsaUJBQWlCLENBQUN1QixzQkFBc0IsRUFDbkVFLDREQUE0RFgsMEJBQTBCWSxRQUFRLENBQUNGO1FBRXJHLElBQUksQ0FBQ0MsMkRBQTJEO1lBQzlELElBQU12QixpQkFBaUJzQiwwQkFDakJsQixpQkFBZUosZUFBZUssZUFBZTtZQUVuRFEsa0NBQWtDVCxnQkFBY04sbUJBQW1CYztZQUVuRUEsMEJBQTBCSyxJQUFJLENBQUNLO1FBQ2pDLENBQUM7SUFDSDtJQUVBLE9BQU9WO0FBQ1QifQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-verify-cli",
3
3
  "author": "James Smith",
4
- "version": "0.0.284",
4
+ "version": "0.0.286",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -16,7 +16,7 @@
16
16
  "occam-dom": "^3.0.171",
17
17
  "occam-grammar-utilities": "^7.0.66",
18
18
  "occam-grammars": "^1.0.323",
19
- "occam-open-cli": "^5.0.45",
19
+ "occam-open-cli": "^5.0.47",
20
20
  "occam-parsers": "^16.0.122"
21
21
  },
22
22
  "devDependencies": {
@@ -3,24 +3,32 @@
3
3
  import { CustomGrammar, lexersUtilities, parsersUtilities, CombinedCustomGrammar } from "occam-custom-grammars";
4
4
 
5
5
  import { push } from "../utilities/array";
6
+ import {dependenciesFromReleaseName, filePathsFromReleaseName} from "../../utilities/release";
6
7
 
7
8
  const { florenceLexerFromCombinedCustomGrammar } = lexersUtilities,
8
9
  { florenceParserFromCombinedCustomGrammar } = parsersUtilities;
9
10
 
10
11
  export default class ReleaseContext {
11
- constructor(releaseName, fileContexts, florenceLexer, florenceParser, releaseContexts, releaseVerified, log) {
12
- this.releaseName = releaseName;
12
+ constructor(log, release, verified, fileContexts, florenceLexer, florenceParser, releaseContexts) {
13
+ this.log = log;
14
+ this.release = release;
15
+ this.verified = verified;
13
16
  this.fileContexts = fileContexts;
14
17
  this.florenceLexer = florenceLexer;
15
18
  this.florenceParser = florenceParser;
16
19
  this.releaseContexts = releaseContexts;
17
- this.releaseVerified = releaseVerified;
20
+ }
18
21
 
19
- this.log = log;
22
+ getLog() {
23
+ return this.log;
20
24
  }
21
25
 
22
- getReleaseName() {
23
- return this.releaseName;
26
+ getRelease() {
27
+ return this.release;
28
+ }
29
+
30
+ isVerified() {
31
+ return this.verified;
24
32
  }
25
33
 
26
34
  getFileContexts() {
@@ -39,20 +47,27 @@ export default class ReleaseContext {
39
47
  return this.releaseContexts;
40
48
  }
41
49
 
42
- getLog() {
43
- return this.log;
44
- }
50
+ getReleaseName() {
51
+ const releaseName = this.release.getName();
45
52
 
46
- isReleaseVerified() {
47
- return this.releaseVerified;
53
+ return releaseName;
48
54
  }
49
55
 
56
+ getVersion() { return this.release.getVersion(); }
57
+
58
+ getFilePaths() { return this.release.getFilePatns(); }
59
+
60
+ getFileContent(filePath) { return this.release.getFileContent(filePath); }
61
+
62
+ getDependencies() { return this.release.getDependencies(); }
63
+
50
64
  getRules(releaseNames = []) {
51
65
  const rules = [],
52
- releaseNamesIncludesReleaseName = releaseNames.includes(this.releaseName);
66
+ releaseName = this.getReleaseName(),
67
+ releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
53
68
 
54
69
  if (!releaseNamesIncludesReleaseName) {
55
- releaseNames.push(this.releaseName);
70
+ releaseNames.push(releaseName);
56
71
 
57
72
  const bubble = false;
58
73
 
@@ -74,10 +89,11 @@ export default class ReleaseContext {
74
89
 
75
90
  getTypes(releaseNames = []) {
76
91
  const types = [],
77
- releaseNamesIncludesReleaseName = releaseNames.includes(this.releaseName);
92
+ releaseName = this.getReleaesName(),
93
+ releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
78
94
 
79
95
  if (!releaseNamesIncludesReleaseName) {
80
- releaseNames.push(this.releaseName);
96
+ releaseNames.push(releaseName);
81
97
 
82
98
  const bubble = false;
83
99
 
@@ -99,10 +115,11 @@ export default class ReleaseContext {
99
115
 
100
116
  getAxioms(releaseNames = []) {
101
117
  const axioms = [],
102
- releaseNamesIncludesReleaseName = releaseNames.includes(this.releaseName);
118
+ releaseName = this.getReleaseName(),
119
+ releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
103
120
 
104
121
  if (!releaseNamesIncludesReleaseName) {
105
- releaseNames.push(this.releaseName);
122
+ releaseNames.push(releaseName);
106
123
 
107
124
  const bubble = false;
108
125
 
@@ -124,10 +141,11 @@ export default class ReleaseContext {
124
141
 
125
142
  getCombinators(releaseNames = []) {
126
143
  const combinators = [],
127
- releaseNamesIncludesReleaseName = releaseNames.includes(this.releaseName);
144
+ releaseName = this.getReleaseName(),
145
+ releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
128
146
 
129
147
  if (!releaseNamesIncludesReleaseName) {
130
- releaseNames.push(this.releaseName);
148
+ releaseNames.push(releaseName);
131
149
 
132
150
  const bubble = false;
133
151
 
@@ -148,11 +166,12 @@ export default class ReleaseContext {
148
166
  }
149
167
 
150
168
  getConstructors(releaseNames = []) {
151
- const constructors = [],
152
- releaseNamesIncludesReleaseName = releaseNames.includes(this.releaseName);
169
+ const releaseName = this.getReleaseName(),
170
+ constructors = [],
171
+ releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
153
172
 
154
173
  if (!releaseNamesIncludesReleaseName) {
155
- releaseNames.push(this.releaseName);
174
+ releaseNames.push(releaseName);
156
175
 
157
176
  const bubble = false;
158
177
 
@@ -173,7 +192,8 @@ export default class ReleaseContext {
173
192
  }
174
193
 
175
194
  getCustomGrammar() {
176
- const name = this.releaseName, ///
195
+ const releaseName = this.getReleaseName(),
196
+ name = releaseName, ///
177
197
  termBNF = this.getTermBNF(),
178
198
  statementBNF = this.getStatementBNF(),
179
199
  metastatementBNF = this.getMetastatementBNF(),
@@ -224,13 +244,13 @@ export default class ReleaseContext {
224
244
  this.florenceParser = florenceParserFromCombinedCustomGrammar(combinedCustomGrammar);
225
245
  }
226
246
 
227
- static fromReleaseNameAndLog(Class, releaseName, log, ...remainingArguments) {
228
- const fileContexts = [],
247
+ static fromLogAndRelease(Class, log, release, ...remainingArguments) {
248
+ const verified = false,
249
+ fileContexts = [],
229
250
  florenceLexer = null,
230
251
  florenceParser = null,
231
252
  releaseContexts = [],
232
- releaseVerified = false,
233
- releaseContext = new Class(releaseName, fileContexts, florenceLexer, florenceParser, releaseContexts, releaseVerified, log, ...remainingArguments);
253
+ releaseContext = new Class(log, release, verified, fileContexts, florenceLexer, florenceParser, releaseContexts, ...remainingArguments);
234
254
 
235
255
  return releaseContext;
236
256
  }
@@ -10,9 +10,10 @@ export default function verifyRelease(releaseName, releaseContextMap, releaseCon
10
10
  if (!releaseVerified) {
11
11
  releaseContext.debug(`Verifying the '${releaseName}' package...`);
12
12
 
13
- const dependencyReleaseNames = releaseContext.getDependencyReleaseNames(),
14
- dependencyReleasesVVerified = dependencyReleaseNames.every((dependencyReleaseName) => {
15
- const releaseName = dependencyReleaseName, ///
13
+ const dependencies = releaseContext.getDependencies(),
14
+ dependencyReleasesVVerified = dependencies.every((dependency) => {
15
+ const name = dependency.getName(),
16
+ releaseName = name, ///
16
17
  releaseVerified = verifyRelease(releaseName, releaseContextMap, releaseContexts);
17
18
 
18
19
  if (releaseVerified) {
@@ -21,14 +22,15 @@ export default function verifyRelease(releaseName, releaseContextMap, releaseCon
21
22
  });
22
23
 
23
24
  if (dependencyReleasesVVerified) {
24
- const releaseNames = dependencyReleaseNames, ///
25
- releaseContexts = releaseNames.map((releaseName) => {
26
- const releaseContext = releaseContextMap[releaseName];
25
+ const releaseContexts = dependencies.map((dependency) => {
26
+ const name = dependency.getName(),
27
+ releaseName = name, ///
28
+ releaseContext = releaseContextMap[releaseName];
27
29
 
28
30
  return releaseContext;
29
31
  });
30
32
 
31
- const dependencyReleaseContexts = retrieveDependencyReleaseContexts(dependencyReleaseNames, releaseContextMap);
33
+ const dependencyReleaseContexts = retrieveDependencyReleaseContexts(dependencies, releaseContextMap);
32
34
 
33
35
  releaseContext.initialise(releaseContexts, dependencyReleaseContexts);
34
36
 
@@ -47,16 +49,18 @@ export default function verifyRelease(releaseName, releaseContextMap, releaseCon
47
49
  return releaseVerified;
48
50
  }
49
51
 
50
- function retrieveDependencyReleaseContexts(dependencyReleaseNames, releaseContextMap, dependencyReleaseContexts = []) {
51
- dependencyReleaseNames.forEach((dependencyReleaseName) => {
52
- const dependencyReleaseContext = releaseContextMap[dependencyReleaseName],
52
+ function retrieveDependencyReleaseContexts(dependencies, releaseContextMap, dependencyReleaseContexts = []) {
53
+ dependencies.forEach((dependency) => {
54
+ const dependencyName = dependency.getName(),
55
+ dependencyReleaseName = dependencyName, ///
56
+ dependencyReleaseContext = releaseContextMap[dependencyReleaseName],
53
57
  dependencyReleaseContextsIncludesDependencyReleaseContext = dependencyReleaseContexts.includes(dependencyReleaseContext);
54
58
 
55
59
  if (!dependencyReleaseContextsIncludesDependencyReleaseContext) {
56
60
  const releaseContext = dependencyReleaseContext, ///
57
- dependencyReleaseNames = releaseContext.getDependencyReleaseNames();
61
+ dependencies = releaseContext.getDependencies();
58
62
 
59
- retrieveDependencyReleaseContexts(dependencyReleaseNames, releaseContextMap, dependencyReleaseContexts);
63
+ retrieveDependencyReleaseContexts(dependencies, releaseContextMap, dependencyReleaseContexts);
60
64
 
61
65
  dependencyReleaseContexts.push(dependencyReleaseContext);
62
66
  }
@@ -1,111 +0,0 @@
1
- "use strict";
2
-
3
- const { fileNames } = require("occam-open-cli"),
4
- { ReleaseContext } = require("../../../lib/index"), ///
5
- { fileSystemUtilities } = require("necessary");
6
-
7
- const { filePathsFromReleaseName, dependencyReleaseNamesFromReleaseName } = require("../../utilities/release");
8
-
9
- const { readFile, checkFileExists } = fileSystemUtilities,
10
- { TERM_BNF_FILE_NAME,
11
- STATEMENT_BNF_FILE_NAME,
12
- METASTATEMENT_BNF_FILE_NAME,
13
- TYPE_PATTERN_FILE_NAME,
14
- SYMBOL_PATTERN_FILE_NAME,
15
- OPERATOR_PATTERN_FILE_NAME } = fileNames;
16
-
17
- class FileSystemReleaseContext extends ReleaseContext {
18
- getFilePaths() {
19
- const releaseName = this.getReleaseName(),
20
- filePaths = filePathsFromReleaseName(releaseName);
21
-
22
- return filePaths;
23
- }
24
-
25
- getFileContent(filePath) {
26
- const fileContent = readFile(filePath);
27
-
28
- return fileContent;
29
- }
30
-
31
- getDependencyReleaseNames() {
32
- const releaseName = this.getReleaseName(),
33
- dependencyReleaseNames = dependencyReleaseNamesFromReleaseName(releaseName);
34
-
35
- return dependencyReleaseNames;
36
- }
37
-
38
- getTermBNF() {
39
- const releaseName = this.getReleaseName(),
40
- directoryName = releaseName, ///
41
- fileName = TERM_BNF_FILE_NAME, ///
42
- fileContent = fileContentFromDirectoryNameAndFileName(directoryName, fileName),
43
- termBNF = fileContent; ///
44
-
45
- return termBNF;
46
- }
47
-
48
- getStatementBNF() {
49
- const releaseName = this.getReleaseName(),
50
- directoryName = releaseName, ///
51
- fileName = STATEMENT_BNF_FILE_NAME, ///
52
- fileContent = fileContentFromDirectoryNameAndFileName(directoryName, fileName),
53
- termBNF = fileContent; ///
54
-
55
- return termBNF;
56
- }
57
-
58
- getMetastatementBNF() {
59
- const releaseName = this.getReleaseName(),
60
- directoryName = releaseName, ///
61
- fileName = METASTATEMENT_BNF_FILE_NAME, ///
62
- fileContent = fileContentFromDirectoryNameAndFileName(directoryName, fileName),
63
- termBNF = fileContent; ///
64
-
65
- return termBNF;
66
- }
67
-
68
- getTypePattern() {
69
- const releaseName = this.getReleaseName(),
70
- directoryName = releaseName, ///
71
- fileName = TYPE_PATTERN_FILE_NAME, ///
72
- fileContent = fileContentFromDirectoryNameAndFileName(directoryName, fileName),
73
- termBNF = fileContent; ///
74
-
75
- return termBNF;
76
- }
77
-
78
- getSymbolPattern() {
79
- const releaseName = this.getReleaseName(),
80
- directoryName = releaseName, ///
81
- fileName = SYMBOL_PATTERN_FILE_NAME, ///
82
- fileContent = fileContentFromDirectoryNameAndFileName(directoryName, fileName),
83
- termBNF = fileContent; ///
84
-
85
- return termBNF;
86
- }
87
-
88
- getOperatorPattern() {
89
- const releaseName = this.getReleaseName(),
90
- directoryName = releaseName, ///
91
- fileName = OPERATOR_PATTERN_FILE_NAME, ///
92
- fileContent = fileContentFromDirectoryNameAndFileName(directoryName, fileName),
93
- termBNF = fileContent; ///
94
-
95
- return termBNF;
96
- }
97
-
98
- static fromReleaseNameAndLog(releaseName, log) { return ReleaseContext.fromReleaseNameAndLog(FileSystemReleaseContext, releaseName, log); }
99
- }
100
-
101
- module.exports = FileSystemReleaseContext;
102
-
103
- function fileContentFromDirectoryNameAndFileName(directoryName, fileName) {
104
- const filePath = `${directoryName}/${fileName}`,
105
- fileExists = checkFileExists(filePath),
106
- fileContent = fileExists ?
107
- readFile(filePath) :
108
- null;
109
-
110
- return fileContent;
111
- }