occam-verify-cli 0.0.678 → 0.0.680

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.
Files changed (141) hide show
  1. package/bin/action/verify.js +13 -3
  2. package/lib/axiomLemmaTheoremConjecture.js +3 -3
  3. package/lib/conclusion.js +16 -5
  4. package/lib/consequent.js +11 -3
  5. package/lib/context/file.js +73 -3
  6. package/lib/context/release.js +7 -2
  7. package/lib/equality.js +13 -199
  8. package/lib/premise.js +24 -7
  9. package/lib/supposition.js +15 -4
  10. package/lib/type.js +3 -8
  11. package/lib/utilities/array.js +5 -2
  12. package/lib/utilities/string.js +26 -13
  13. package/lib/verifier/node/metastatement.js +176 -0
  14. package/lib/verifier/node/statementAsCombinator.js +186 -0
  15. package/lib/verifier/node/termAsConstructor.js +224 -0
  16. package/lib/verifier/node.js +158 -0
  17. package/lib/verifier/nodes/equality.js +155 -0
  18. package/lib/verifier/{metastatementForMetavariable → nodes/metastatementForMetavariable}/conclusion.js +13 -12
  19. package/lib/verifier/{metastatementForMetavariable → nodes/metastatementForMetavariable}/premise.js +13 -12
  20. package/lib/verifier/nodes/metastatementForMetavariable.js +198 -0
  21. package/lib/verifier/nodes/statement.js +200 -0
  22. package/lib/verifier/{statementForMetavariable → nodes/statementForMetavariable}/conclusion.js +13 -12
  23. package/lib/verifier/{statementForMetavariable → nodes/statementForMetavariable}/premise.js +13 -12
  24. package/lib/verifier/nodes/statementForMetavariable.js +203 -0
  25. package/lib/verifier/nodes/term.js +210 -0
  26. package/lib/verifier/{termForVariable/supposition.js → nodes/termForVariable/consequent.js} +13 -12
  27. package/lib/verifier/{termForVariable/consequent.js → nodes/termForVariable/supposition.js} +13 -12
  28. package/lib/verifier/nodes/termForVariable.js +217 -0
  29. package/lib/verifier/nodes.js +175 -0
  30. package/lib/verify/axiom.js +3 -3
  31. package/lib/verify/conclusion.js +3 -3
  32. package/lib/verify/conjecture.js +3 -3
  33. package/lib/verify/consequent.js +3 -3
  34. package/lib/verify/declaration/combinator.js +7 -2
  35. package/lib/verify/declaration/constructor.js +8 -2
  36. package/lib/verify/declaration/metavariable.js +7 -2
  37. package/lib/verify/declaration/type.js +7 -2
  38. package/lib/verify/declaration/variable.js +8 -2
  39. package/lib/verify/file.js +3 -3
  40. package/lib/verify/label.js +9 -4
  41. package/lib/verify/lemma.js +3 -3
  42. package/lib/verify/metastatement/qualified.js +5 -6
  43. package/lib/verify/metastatement/unqualified.js +9 -7
  44. package/lib/verify/metastatement.js +36 -156
  45. package/lib/verify/metavariable.js +6 -4
  46. package/lib/verify/premise.js +3 -3
  47. package/lib/verify/release.js +3 -3
  48. package/lib/verify/rule.js +3 -3
  49. package/lib/verify/statement/qualified.js +5 -6
  50. package/lib/verify/statement/unqualified.js +9 -7
  51. package/lib/verify/statement.js +86 -332
  52. package/lib/verify/statementAsCombinator.js +8 -82
  53. package/lib/verify/supposition.js +3 -3
  54. package/lib/verify/term.js +79 -215
  55. package/lib/verify/termAsConstructor.js +15 -89
  56. package/lib/verify/terms.js +45 -0
  57. package/lib/verify/theorem.js +3 -3
  58. package/lib/verify/type.js +7 -5
  59. package/lib/verify/typeAssertion.js +124 -0
  60. package/lib/verify/variable.js +7 -5
  61. package/package.json +5 -5
  62. package/src/axiomLemmaTheoremConjecture.js +2 -2
  63. package/src/conclusion.js +13 -4
  64. package/src/consequent.js +9 -2
  65. package/src/context/file.js +9 -2
  66. package/src/context/release.js +9 -2
  67. package/src/equality.js +17 -143
  68. package/src/premise.js +23 -6
  69. package/src/supposition.js +12 -3
  70. package/src/type.js +3 -8
  71. package/src/utilities/array.js +1 -1
  72. package/src/utilities/string.js +34 -23
  73. package/src/verifier/node/metastatement.js +61 -0
  74. package/src/verifier/node/statementAsCombinator.js +80 -0
  75. package/src/verifier/node/termAsConstructor.js +124 -0
  76. package/src/verifier/node.js +85 -0
  77. package/src/verifier/nodes/equality.js +68 -0
  78. package/src/verifier/nodes/metastatementForMetavariable/conclusion.js +11 -0
  79. package/src/verifier/nodes/metastatementForMetavariable/premise.js +11 -0
  80. package/src/verifier/{metastatementForMetavariable.js → nodes/metastatementForMetavariable.js} +13 -13
  81. package/src/verifier/nodes/statement.js +100 -0
  82. package/src/verifier/nodes/statementForMetavariable/conclusion.js +11 -0
  83. package/src/verifier/nodes/statementForMetavariable/premise.js +11 -0
  84. package/src/verifier/{statementForMetavariable.js → nodes/statementForMetavariable.js} +10 -10
  85. package/src/verifier/nodes/term.js +106 -0
  86. package/src/verifier/nodes/termForVariable/consequent.js +11 -0
  87. package/src/verifier/nodes/termForVariable/supposition.js +11 -0
  88. package/src/verifier/{termForVariable.js → nodes/termForVariable.js} +42 -30
  89. package/src/verifier/nodes.js +111 -0
  90. package/src/verify/axiom.js +2 -2
  91. package/src/verify/conclusion.js +2 -2
  92. package/src/verify/conjecture.js +2 -2
  93. package/src/verify/consequent.js +2 -2
  94. package/src/verify/declaration/combinator.js +9 -1
  95. package/src/verify/declaration/constructor.js +15 -1
  96. package/src/verify/declaration/metavariable.js +9 -1
  97. package/src/verify/declaration/type.js +14 -1
  98. package/src/verify/declaration/variable.js +15 -1
  99. package/src/verify/file.js +2 -2
  100. package/src/verify/label.js +10 -2
  101. package/src/verify/lemma.js +4 -4
  102. package/src/verify/metastatement/qualified.js +4 -6
  103. package/src/verify/metastatement/unqualified.js +9 -7
  104. package/src/verify/metastatement.js +35 -56
  105. package/src/verify/metavariable.js +6 -3
  106. package/src/verify/premise.js +2 -2
  107. package/src/verify/release.js +2 -2
  108. package/src/verify/rule.js +2 -2
  109. package/src/verify/statement/qualified.js +4 -6
  110. package/src/verify/statement/unqualified.js +9 -7
  111. package/src/verify/statement.js +109 -302
  112. package/src/verify/statementAsCombinator.js +9 -129
  113. package/src/verify/supposition.js +2 -2
  114. package/src/verify/term.js +99 -156
  115. package/src/verify/termAsConstructor.js +20 -135
  116. package/src/verify/terms.js +54 -0
  117. package/src/verify/theorem.js +2 -2
  118. package/src/verify/type.js +7 -4
  119. package/src/verify/typeAssertion.js +164 -0
  120. package/src/verify/variable.js +7 -4
  121. package/lib/node/statement/combinator/equality.js +0 -21
  122. package/lib/ocmbinator/equality.js +0 -126
  123. package/lib/tokens/statement/combinator/equality.js +0 -17
  124. package/lib/verifier/metastatementForMetavariable.js +0 -198
  125. package/lib/verifier/statementForMetavariable.js +0 -203
  126. package/lib/verifier/termForVariable.js +0 -209
  127. package/lib/verifier.js +0 -138
  128. package/lib/verify/assertion/type.js +0 -115
  129. package/lib/verify/typeInference.js +0 -132
  130. package/src/node/statement/combinator/equality.js +0 -9
  131. package/src/ocmbinator/equality.js +0 -23
  132. package/src/tokens/statement/combinator/equality.js +0 -10
  133. package/src/verifier/metastatementForMetavariable/conclusion.js +0 -9
  134. package/src/verifier/metastatementForMetavariable/premise.js +0 -9
  135. package/src/verifier/statementForMetavariable/conclusion.js +0 -9
  136. package/src/verifier/statementForMetavariable/premise.js +0 -9
  137. package/src/verifier/termForVariable/consequent.js +0 -9
  138. package/src/verifier/termForVariable/supposition.js +0 -9
  139. package/src/verifier.js +0 -74
  140. package/src/verify/assertion/type.js +0 -153
  141. package/src/verify/typeInference.js +0 -146
@@ -9,10 +9,7 @@ Object.defineProperty(exports, "default", {
9
9
  }
10
10
  });
11
11
  var _combinator = /*#__PURE__*/ _interop_require_default(require("../combinator"));
12
- var _term = /*#__PURE__*/ _interop_require_default(require("../verify/term"));
13
- var _statement = /*#__PURE__*/ _interop_require_default(require("../verify/statement"));
14
- var _query = require("../utilities/query");
15
- var _ruleNames = require("../ruleNames");
12
+ var _statementAsCombinator = /*#__PURE__*/ _interop_require_default(require("../verifier/node/statementAsCombinator"));
16
13
  function _interop_require_default(obj) {
17
14
  return obj && obj.__esModule ? obj : {
18
15
  default: obj
@@ -21,91 +18,20 @@ function _interop_require_default(obj) {
21
18
  function verifyStatementAsCombinator(statementNode, fileContext) {
22
19
  var statementVerifiedAsCombinator = false;
23
20
  var statementString = fileContext.nodeAsString(statementNode);
24
- fileContext.debug("Verifying the '".concat(statementString, "' combinator...."), statementNode);
25
- var nonTerminalNode = statementNode, childNodes = nonTerminalNode.getChildNodes(), childNodesVerified = verifyChildNodes(childNodes, fileContext);
21
+ fileContext.trace("Verifying the '".concat(statementString, "' statement as a combinator...."), statementNode);
22
+ var nonTerminalNode = statementNode, childNodes = nonTerminalNode.getChildNodes(), childNodesVerified = _statementAsCombinator.default.verifyChildNodes(childNodes, fileContext, function() {
23
+ var verifiedAhead = true;
24
+ return verifiedAhead;
25
+ });
26
26
  if (childNodesVerified) {
27
27
  var tokens = fileContext.getTokens(), combinator = _combinator.default.fromStatementNodeAndTokens(statementNode, tokens);
28
28
  fileContext.addCombinator(combinator);
29
29
  statementVerifiedAsCombinator = true;
30
30
  }
31
31
  if (statementVerifiedAsCombinator) {
32
- fileContext.info("Verified the '".concat(statementString, "' combinator."), statementNode);
32
+ fileContext.debug("...verified the '".concat(statementString, "' statement as a combinator."), statementNode);
33
33
  }
34
34
  return statementVerifiedAsCombinator;
35
35
  }
36
- function verifyNode(node, fileContext) {
37
- var nodeVerified;
38
- var nodeTerminalNode = node.isTerminalNode();
39
- if (nodeTerminalNode) {
40
- var terminalNode = node, terminalNodeVerified = verifyTerminalNode(terminalNode, fileContext);
41
- nodeVerified = terminalNodeVerified; ///
42
- } else {
43
- var nonTerminalNode = node, nonTerminalNodeVerified = verifyNonTerminalNode(nonTerminalNode, fileContext);
44
- nodeVerified = nonTerminalNodeVerified; ///
45
- }
46
- return nodeVerified;
47
- }
48
- function verifyChildNodes(childNodes, fileContext) {
49
- var childNodesVerified = childNodes.every(function(childNode) {
50
- var node = childNode, nodeVerified = verifyNode(node, fileContext);
51
- if (nodeVerified) {
52
- return true;
53
- }
54
- });
55
- return childNodesVerified;
56
- }
57
- function verifyTerminalNode(terminalNode, fileContext) {
58
- var terminalNodeVerified = true;
59
- return terminalNodeVerified;
60
- }
61
- function verifyNonTerminalNode(nonTerminalNode, fileContext) {
62
- var nonTerminalNodeVerified;
63
- var ruleName = nonTerminalNode.getRuleName();
64
- switch(ruleName){
65
- case _ruleNames.TYPE_RULE_NAME:
66
- {
67
- var typeNode = nonTerminalNode, typeNodeVerified = verifyTypeNode(typeNode, fileContext);
68
- nonTerminalNodeVerified = typeNodeVerified; ///
69
- break;
70
- }
71
- case _ruleNames.TERM_RULE_NAME:
72
- {
73
- var termNode = nonTerminalNode, termNodeVerified = verifyTermNode(termNode, fileContext);
74
- nonTerminalNodeVerified = termNodeVerified; ///
75
- break;
76
- }
77
- case _ruleNames.STATEMENT_RULE_NAME:
78
- {
79
- var statmentNode = nonTerminalNode, statmentNodeVerified = verifyStatementNode(statmentNode, fileContext);
80
- nonTerminalNodeVerified = statmentNodeVerified; ///
81
- break;
82
- }
83
- default:
84
- {
85
- var childNodes = nonTerminalNode.getChildNodes(), childNodesVerified = verifyChildNodes(childNodes, fileContext);
86
- nonTerminalNodeVerified = childNodesVerified; ///
87
- break;
88
- }
89
- }
90
- return nonTerminalNodeVerified;
91
- }
92
- function verifyTypeNode(typeNode, fileContext) {
93
- var typeNodeVerified = false;
94
- var typeName = (0, _query.typeNameFromTypeNode)(typeNode), typePresent = fileContext.isTypePresentByTypeName(typeName);
95
- if (!typePresent) {
96
- fileContext.error("The type '".concat(typeName, "' not present."), typeNode);
97
- } else {
98
- typeNodeVerified = true;
99
- }
100
- return typeNodeVerified;
101
- }
102
- function verifyTermNode(termNode, fileContext) {
103
- var types = [], context = fileContext, termVerified = (0, _term.default)(termNode, types, context), termNodeVerified = termVerified; ///
104
- return termNodeVerified;
105
- }
106
- function verifyStatementNode(statementNode, fileContext) {
107
- var context = fileContext, derived = false, assignments = [], statementVerified = (0, _statement.default)(statementNode, assignments, derived, context), statementNodeVerified = statementVerified; ///
108
- return statementNodeVerified;
109
- }
110
36
 
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50QXNDb21iaW5hdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgQ29tYmluYXRvciBmcm9tIFwiLi4vY29tYmluYXRvclwiO1xuaW1wb3J0IHZlcmlmeVRlcm0gZnJvbSBcIi4uL3ZlcmlmeS90ZXJtXCI7XG5pbXBvcnQgdmVyaWZ5U3RhdGVtZW50IGZyb20gXCIuLi92ZXJpZnkvc3RhdGVtZW50XCI7XG5cbmltcG9ydCB7IHR5cGVOYW1lRnJvbVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgVFlQRV9SVUxFX05BTUUsIFRFUk1fUlVMRV9OQU1FLCBTVEFURU1FTlRfUlVMRV9OQU1FIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRBc0NvbWJpbmF0b3Ioc3RhdGVtZW50Tm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkQXNDb21iaW5hdG9yID0gZmFsc2U7XG5cbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gZmlsZUNvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpO1xuXG4gIGZpbGVDb250ZXh0LmRlYnVnKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIGNvbWJpbmF0b3IuLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgY2hpbGROb2Rlc1ZlcmlmaWVkID0gdmVyaWZ5Q2hpbGROb2RlcyhjaGlsZE5vZGVzLCBmaWxlQ29udGV4dCk7XG5cbiAgaWYgKGNoaWxkTm9kZXNWZXJpZmllZCkge1xuICAgIGNvbnN0IHRva2VucyA9IGZpbGVDb250ZXh0LmdldFRva2VucygpLFxuICAgICAgICAgIGNvbWJpbmF0b3IgPSBDb21iaW5hdG9yLmZyb21TdGF0ZW1lbnROb2RlQW5kVG9rZW5zKHN0YXRlbWVudE5vZGUsIHRva2Vucyk7XG5cbiAgICBmaWxlQ29udGV4dC5hZGRDb21iaW5hdG9yKGNvbWJpbmF0b3IpO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc0NvbWJpbmF0b3IgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNDb21iaW5hdG9yKSB7XG4gICAgZmlsZUNvbnRleHQuaW5mbyhgVmVyaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIGNvbWJpbmF0b3IuYCwgc3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWRBc0NvbWJpbmF0b3I7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeU5vZGUobm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IG5vZGVWZXJpZmllZDtcblxuICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgY29uc3QgdGVybWluYWxOb2RlID0gbm9kZSwgIC8vL1xuICAgICAgICAgIHRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdmVyaWZ5VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgZmlsZUNvbnRleHQpO1xuXG4gICAgbm9kZVZlcmlmaWVkID0gdGVybWluYWxOb2RlVmVyaWZpZWQ7ICAvLy9cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IHZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGUsIGZpbGVDb250ZXh0KTtcblxuICAgIG5vZGVWZXJpZmllZCA9IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkOyAvLy9cbiAgfVxuXG4gIHJldHVybiBub2RlVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeUNoaWxkTm9kZXMoY2hpbGROb2RlcywgZmlsZUNvbnRleHQpIHtcbiAgY29uc3QgY2hpbGROb2Rlc1ZlcmlmaWVkID0gY2hpbGROb2Rlcy5ldmVyeSgoY2hpbGROb2RlKSA9PiB7XG4gICAgY29uc3Qgbm9kZSA9IGNoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZVZlcmlmaWVkID0gdmVyaWZ5Tm9kZShub2RlLCBmaWxlQ29udGV4dCk7XG5cbiAgICBpZiAobm9kZVZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjaGlsZE5vZGVzVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGUsIGZpbGVDb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdHJ1ZTtcblxuICByZXR1cm4gdGVybWluYWxOb2RlVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGUsIGZpbGVDb250ZXh0KSB7XG4gIGxldCBub25UZXJtaW5hbE5vZGVWZXJpZmllZDtcblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gIHN3aXRjaCAocnVsZU5hbWUpIHtcbiAgICBjYXNlIFRZUEVfUlVMRV9OQU1FOiB7XG4gICAgICBjb25zdCB0eXBlTm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICB0eXBlTm9kZVZlcmlmaWVkID0gdmVyaWZ5VHlwZU5vZGUodHlwZU5vZGUsIGZpbGVDb250ZXh0KTtcblxuICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSB0eXBlTm9kZVZlcmlmaWVkOyAvLy9cblxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSBURVJNX1JVTEVfTkFNRToge1xuICAgICAgY29uc3QgdGVybU5vZGUgPSBub25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgdGVybU5vZGVWZXJpZmllZCA9IHZlcmlmeVRlcm1Ob2RlKHRlcm1Ob2RlLCBmaWxlQ29udGV4dCk7XG5cbiAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdGVybU5vZGVWZXJpZmllZDsgLy8vXG5cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgU1RBVEVNRU5UX1JVTEVfTkFNRToge1xuICAgICAgY29uc3Qgc3RhdG1lbnROb2RlID0gbm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICAgIHN0YXRtZW50Tm9kZVZlcmlmaWVkID0gdmVyaWZ5U3RhdGVtZW50Tm9kZShzdGF0bWVudE5vZGUsIGZpbGVDb250ZXh0KTtcblxuICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBzdGF0bWVudE5vZGVWZXJpZmllZDsgLy8vXG5cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgY2hpbGROb2Rlc1ZlcmlmaWVkID0gdmVyaWZ5Q2hpbGROb2RlcyhjaGlsZE5vZGVzLCBmaWxlQ29udGV4dCk7XG5cbiAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gY2hpbGROb2Rlc1ZlcmlmaWVkOyAvLy9cblxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUeXBlTm9kZSh0eXBlTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHR5cGVOb2RlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB0eXBlTmFtZSA9IHR5cGVOYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlKSxcbiAgICAgICAgdHlwZVByZXNlbnQgPSBmaWxlQ29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgaWYgKCF0eXBlUHJlc2VudCkge1xuICAgIGZpbGVDb250ZXh0LmVycm9yKGBUaGUgdHlwZSAnJHt0eXBlTmFtZX0nIG5vdCBwcmVzZW50LmAsIHR5cGVOb2RlKTtcbiAgfSBlbHNlIHtcbiAgICB0eXBlTm9kZVZlcmlmaWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB0eXBlTm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtTm9kZSh0ZXJtTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgY29uc3QgdHlwZXMgPSBbXSxcbiAgICAgICAgY29udGV4dCA9IGZpbGVDb250ZXh0LCAgLy8vXG4gICAgICAgIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHR5cGVzLCBjb250ZXh0KSxcbiAgICAgICAgdGVybU5vZGVWZXJpZmllZCA9IHRlcm1WZXJpZmllZDsgIC8vL1xuXG4gIHJldHVybiB0ZXJtTm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGZpbGVDb250ZXh0KSB7XG4gIGNvbnN0IGNvbnRleHQgPSBmaWxlQ29udGV4dCwgIC8vL1xuICAgICAgICBkZXJpdmVkID0gZmFsc2UsXG4gICAgICAgIGFzc2lnbm1lbnRzID0gW10sXG4gICAgICAgIHN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0KSxcbiAgICAgICAgc3RhdGVtZW50Tm9kZVZlcmlmaWVkID0gc3RhdGVtZW50VmVyaWZpZWQ7ICAvLy9cblxuICByZXR1cm4gc3RhdGVtZW50Tm9kZVZlcmlmaWVkO1xufVxuXG4iXSwibmFtZXMiOlsidmVyaWZ5U3RhdGVtZW50QXNDb21iaW5hdG9yIiwic3RhdGVtZW50Tm9kZSIsImZpbGVDb250ZXh0Iiwic3RhdGVtZW50VmVyaWZpZWRBc0NvbWJpbmF0b3IiLCJzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJkZWJ1ZyIsIm5vblRlcm1pbmFsTm9kZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiY2hpbGROb2Rlc1ZlcmlmaWVkIiwidmVyaWZ5Q2hpbGROb2RlcyIsInRva2VucyIsImdldFRva2VucyIsImNvbWJpbmF0b3IiLCJDb21iaW5hdG9yIiwiZnJvbVN0YXRlbWVudE5vZGVBbmRUb2tlbnMiLCJhZGRDb21iaW5hdG9yIiwiaW5mbyIsInZlcmlmeU5vZGUiLCJub2RlIiwibm9kZVZlcmlmaWVkIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVWZXJpZmllZCIsInZlcmlmeU5vblRlcm1pbmFsTm9kZSIsImV2ZXJ5IiwiY2hpbGROb2RlIiwicnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsIlRZUEVfUlVMRV9OQU1FIiwidHlwZU5vZGUiLCJ0eXBlTm9kZVZlcmlmaWVkIiwidmVyaWZ5VHlwZU5vZGUiLCJURVJNX1JVTEVfTkFNRSIsInRlcm1Ob2RlIiwidGVybU5vZGVWZXJpZmllZCIsInZlcmlmeVRlcm1Ob2RlIiwiU1RBVEVNRU5UX1JVTEVfTkFNRSIsInN0YXRtZW50Tm9kZSIsInN0YXRtZW50Tm9kZVZlcmlmaWVkIiwidmVyaWZ5U3RhdGVtZW50Tm9kZSIsInR5cGVOYW1lIiwidHlwZU5hbWVGcm9tVHlwZU5vZGUiLCJ0eXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwiZXJyb3IiLCJ0eXBlcyIsImNvbnRleHQiLCJ0ZXJtVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtIiwiZGVyaXZlZCIsImFzc2lnbm1lbnRzIiwic3RhdGVtZW50VmVyaWZpZWQiLCJ2ZXJpZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlVmVyaWZpZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBd0JBOzs7aUVBUEQ7MkRBQ0E7Z0VBQ0s7cUJBRVM7eUJBQytCOzs7Ozs7QUFFckQsU0FBU0EsNEJBQTRCQyxhQUFhLEVBQUVDLFdBQVc7SUFDNUUsSUFBSUMsZ0NBQWdDO0lBRXBDLElBQU1DLGtCQUFrQkYsWUFBWUcsWUFBWSxDQUFDSjtJQUVqREMsWUFBWUksS0FBSyxDQUFDLEFBQUMsa0JBQWlDLE9BQWhCRixpQkFBZ0IscUJBQW1CSDtJQUV2RSxJQUFNTSxrQkFBa0JOLGVBQ2xCTyxhQUFhRCxnQkFBZ0JFLGFBQWEsSUFDMUNDLHFCQUFxQkMsaUJBQWlCSCxZQUFZTjtJQUV4RCxJQUFJUSxvQkFBb0I7UUFDdEIsSUFBTUUsU0FBU1YsWUFBWVcsU0FBUyxJQUM5QkMsYUFBYUMsbUJBQVUsQ0FBQ0MsMEJBQTBCLENBQUNmLGVBQWVXO1FBRXhFVixZQUFZZSxhQUFhLENBQUNIO1FBRTFCWCxnQ0FBZ0M7SUFDbEM7SUFFQSxJQUFJQSwrQkFBK0I7UUFDakNELFlBQVlnQixJQUFJLENBQUMsQUFBQyxpQkFBZ0MsT0FBaEJkLGlCQUFnQixrQkFBZ0JIO0lBQ3BFO0lBRUEsT0FBT0U7QUFDVDtBQUVBLFNBQVNnQixXQUFXQyxJQUFJLEVBQUVsQixXQUFXO0lBQ25DLElBQUltQjtJQUVKLElBQU1DLG1CQUFtQkYsS0FBS0csY0FBYztJQUU1QyxJQUFJRCxrQkFBa0I7UUFDcEIsSUFBTUUsZUFBZUosTUFDZkssdUJBQXVCQyxtQkFBbUJGLGNBQWN0QjtRQUU5RG1CLGVBQWVJLHNCQUF1QixHQUFHO0lBQzNDLE9BQU87UUFDTCxJQUFNbEIsa0JBQWtCYSxNQUNsQk8sMEJBQTBCQyxzQkFBc0JyQixpQkFBaUJMO1FBRXZFbUIsZUFBZU0seUJBQXlCLEdBQUc7SUFDN0M7SUFFQSxPQUFPTjtBQUNUO0FBRUEsU0FBU1YsaUJBQWlCSCxVQUFVLEVBQUVOLFdBQVc7SUFDL0MsSUFBTVEscUJBQXFCRixXQUFXcUIsS0FBSyxDQUFDLFNBQUNDO1FBQzNDLElBQU1WLE9BQU9VLFdBQ1BULGVBQWVGLFdBQVdDLE1BQU1sQjtRQUV0QyxJQUFJbUIsY0FBYztZQUNoQixPQUFPO1FBQ1Q7SUFDRjtJQUVBLE9BQU9YO0FBQ1Q7QUFFQSxTQUFTZ0IsbUJBQW1CRixZQUFZLEVBQUV0QixXQUFXO0lBQ25ELElBQU11Qix1QkFBdUI7SUFFN0IsT0FBT0E7QUFDVDtBQUVBLFNBQVNHLHNCQUFzQnJCLGVBQWUsRUFBRUwsV0FBVztJQUN6RCxJQUFJeUI7SUFFSixJQUFNSSxXQUFXeEIsZ0JBQWdCeUIsV0FBVztJQUU1QyxPQUFRRDtRQUNOLEtBQUtFLHlCQUFjO1lBQUU7Z0JBQ25CLElBQU1DLFdBQVczQixpQkFDWDRCLG1CQUFtQkMsZUFBZUYsVUFBVWhDO2dCQUVsRHlCLDBCQUEwQlEsa0JBQWtCLEdBQUc7Z0JBRS9DO1lBQ0Y7UUFFQSxLQUFLRSx5QkFBYztZQUFFO2dCQUNuQixJQUFNQyxXQUFXL0IsaUJBQ1hnQyxtQkFBbUJDLGVBQWVGLFVBQVVwQztnQkFFbER5QiwwQkFBMEJZLGtCQUFrQixHQUFHO2dCQUUvQztZQUNGO1FBRUEsS0FBS0UsOEJBQW1CO1lBQUU7Z0JBQ3hCLElBQU1DLGVBQWVuQyxpQkFDZm9DLHVCQUF1QkMsb0JBQW9CRixjQUFjeEM7Z0JBRS9EeUIsMEJBQTBCZ0Isc0JBQXNCLEdBQUc7Z0JBRW5EO1lBQ0Y7UUFFQTtZQUFTO2dCQUNQLElBQU1uQyxhQUFhRCxnQkFBZ0JFLGFBQWEsSUFDMUNDLHFCQUFxQkMsaUJBQWlCSCxZQUFZTjtnQkFFeER5QiwwQkFBMEJqQixvQkFBb0IsR0FBRztnQkFFakQ7WUFDRjtJQUNGO0lBRUEsT0FBT2lCO0FBQ1Q7QUFFQSxTQUFTUyxlQUFlRixRQUFRLEVBQUVoQyxXQUFXO0lBQzNDLElBQUlpQyxtQkFBbUI7SUFFdkIsSUFBTVUsV0FBV0MsSUFBQUEsMkJBQW9CLEVBQUNaLFdBQ2hDYSxjQUFjN0MsWUFBWThDLHVCQUF1QixDQUFDSDtJQUV4RCxJQUFJLENBQUNFLGFBQWE7UUFDaEI3QyxZQUFZK0MsS0FBSyxDQUFDLEFBQUMsYUFBcUIsT0FBVEosVUFBUyxtQkFBaUJYO0lBQzNELE9BQU87UUFDTEMsbUJBQW1CO0lBQ3JCO0lBRUEsT0FBT0E7QUFDVDtBQUVBLFNBQVNLLGVBQWVGLFFBQVEsRUFBRXBDLFdBQVc7SUFDM0MsSUFBTWdELFFBQVEsRUFBRSxFQUNWQyxVQUFVakQsYUFDVmtELGVBQWVDLElBQUFBLGFBQVUsRUFBQ2YsVUFBVVksT0FBT0MsVUFDM0NaLG1CQUFtQmEsY0FBZSxHQUFHO0lBRTNDLE9BQU9iO0FBQ1Q7QUFFQSxTQUFTSyxvQkFBb0IzQyxhQUFhLEVBQUVDLFdBQVc7SUFDckQsSUFBTWlELFVBQVVqRCxhQUNWb0QsVUFBVSxPQUNWQyxjQUFjLEVBQUUsRUFDaEJDLG9CQUFvQkMsSUFBQUEsa0JBQWUsRUFBQ3hELGVBQWVzRCxhQUFhRCxTQUFTSCxVQUN6RU8sd0JBQXdCRixtQkFBb0IsR0FBRztJQUVyRCxPQUFPRTtBQUNUIn0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50QXNDb21iaW5hdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgQ29tYmluYXRvciBmcm9tIFwiLi4vY29tYmluYXRvclwiO1xuaW1wb3J0IHN0YXRlbWVudEFzQ29tYmluYXRvck5vZGVWZXJpZmllciBmcm9tIFwiLi4vdmVyaWZpZXIvbm9kZS9zdGF0ZW1lbnRBc0NvbWJpbmF0b3JcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5U3RhdGVtZW50QXNDb21iaW5hdG9yKHN0YXRlbWVudE5vZGUsIGZpbGVDb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFzQ29tYmluYXRvciA9IGZhbHNlO1xuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKTtcblxuICBmaWxlQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBjb21iaW5hdG9yLi4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgY2hpbGROb2Rlc1ZlcmlmaWVkID0gc3RhdGVtZW50QXNDb21iaW5hdG9yTm9kZVZlcmlmaWVyLnZlcmlmeUNoaWxkTm9kZXMoY2hpbGROb2RlcywgZmlsZUNvbnRleHQsICgpID0+IHtcbiAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgICAgICB9KTtcblxuICBpZiAoY2hpbGROb2Rlc1ZlcmlmaWVkKSB7XG4gICAgY29uc3QgdG9rZW5zID0gZmlsZUNvbnRleHQuZ2V0VG9rZW5zKCksXG4gICAgICAgICAgY29tYmluYXRvciA9IENvbWJpbmF0b3IuZnJvbVN0YXRlbWVudE5vZGVBbmRUb2tlbnMoc3RhdGVtZW50Tm9kZSwgdG9rZW5zKTtcblxuICAgIGZpbGVDb250ZXh0LmFkZENvbWJpbmF0b3IoY29tYmluYXRvcik7XG5cbiAgICBzdGF0ZW1lbnRWZXJpZmllZEFzQ29tYmluYXRvciA9IHRydWU7XG4gIH1cblxuICBpZiAoc3RhdGVtZW50VmVyaWZpZWRBc0NvbWJpbmF0b3IpIHtcbiAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGNvbWJpbmF0b3IuYCwgc3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWRBc0NvbWJpbmF0b3I7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5U3RhdGVtZW50QXNDb21iaW5hdG9yIiwic3RhdGVtZW50Tm9kZSIsImZpbGVDb250ZXh0Iiwic3RhdGVtZW50VmVyaWZpZWRBc0NvbWJpbmF0b3IiLCJzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsIm5vblRlcm1pbmFsTm9kZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiY2hpbGROb2Rlc1ZlcmlmaWVkIiwic3RhdGVtZW50QXNDb21iaW5hdG9yTm9kZVZlcmlmaWVyIiwidmVyaWZ5Q2hpbGROb2RlcyIsInZlcmlmaWVkQWhlYWQiLCJ0b2tlbnMiLCJnZXRUb2tlbnMiLCJjb21iaW5hdG9yIiwiQ29tYmluYXRvciIsImZyb21TdGF0ZW1lbnROb2RlQW5kVG9rZW5zIiwiYWRkQ29tYmluYXRvciIsImRlYnVnIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFLQTs7O2VBQXdCQTs7O2lFQUhEOzRFQUN1Qjs7Ozs7O0FBRS9CLFNBQVNBLDRCQUE0QkMsYUFBYSxFQUFFQyxXQUFXO0lBQzVFLElBQUlDLGdDQUFnQztJQUVwQyxJQUFNQyxrQkFBa0JGLFlBQVlHLFlBQVksQ0FBQ0o7SUFFakRDLFlBQVlJLEtBQUssQ0FBQyxBQUFDLGtCQUFpQyxPQUFoQkYsaUJBQWdCLG9DQUFrQ0g7SUFFdEYsSUFBTU0sa0JBQWtCTixlQUNsQk8sYUFBYUQsZ0JBQWdCRSxhQUFhLElBQzFDQyxxQkFBcUJDLDhCQUFpQyxDQUFDQyxnQkFBZ0IsQ0FBQ0osWUFBWU4sYUFBYTtRQUMvRixJQUFNVyxnQkFBZ0I7UUFFdEIsT0FBT0E7SUFDVDtJQUVOLElBQUlILG9CQUFvQjtRQUN0QixJQUFNSSxTQUFTWixZQUFZYSxTQUFTLElBQzlCQyxhQUFhQyxtQkFBVSxDQUFDQywwQkFBMEIsQ0FBQ2pCLGVBQWVhO1FBRXhFWixZQUFZaUIsYUFBYSxDQUFDSDtRQUUxQmIsZ0NBQWdDO0lBQ2xDO0lBRUEsSUFBSUEsK0JBQStCO1FBQ2pDRCxZQUFZa0IsS0FBSyxDQUFDLEFBQUMsb0JBQW1DLE9BQWhCaEIsaUJBQWdCLGlDQUErQkg7SUFDdkY7SUFFQSxPQUFPRTtBQUNUIn0=
@@ -21,7 +21,7 @@ var statementNodeQuery = (0, _query.nodeQuery)("/unqualifiedStatement/statement!
21
21
  function verifySupposition(suppositionNode, suppositions, proofContext) {
22
22
  var suppositionVerified;
23
23
  var suppositionString = proofContext.nodeAsString(suppositionNode);
24
- proofContext.debug("Verifying the '".concat(suppositionString, "' supposition..."), suppositionNode);
24
+ proofContext.trace("Verifying the '".concat(suppositionString, "' supposition..."), suppositionNode);
25
25
  var derived = false, assignments = [], unqualifiedStatementNode = unqualifiedStatementNodeQuery(suppositionNode), unqualifiedStatementVerified = (0, _unqualified.default)(unqualifiedStatementNode, assignments, derived, proofContext);
26
26
  if (unqualifiedStatementVerified) {
27
27
  var statementNode = statementNodeQuery(unqualifiedStatementNode), proofStep = _proof.default.fromStatementNode(statementNode), supposition = _supposition.default.fromStatementNode(statementNode);
@@ -33,9 +33,9 @@ function verifySupposition(suppositionNode, suppositions, proofContext) {
33
33
  suppositionVerified = true;
34
34
  }
35
35
  if (suppositionVerified) {
36
- proofContext.info("Verified the '".concat(suppositionString, "' supposition."), suppositionNode);
36
+ proofContext.debug("...verified the '".concat(suppositionString, "' supposition."), suppositionNode);
37
37
  }
38
38
  return suppositionVerified;
39
39
  }
40
40
 
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3VwcG9zaXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBQcm9vZlN0ZXAgZnJvbSBcIi4uL3N0ZXAvcHJvb2ZcIjtcbmltcG9ydCBTdXBwb3NpdGlvbiBmcm9tIFwiLi4vc3VwcG9zaXRpb25cIjtcbmltcG9ydCB2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCBmcm9tIFwiLi9zdGF0ZW1lbnQvdW5xdWFsaWZpZWRcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdW5xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50IVwiKSxcbiAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N1cHBvc2l0aW9uL3VucXVhbGlmaWVkU3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb25Ob2RlLCBzdXBwb3NpdGlvbnMsIHByb29mQ29udGV4dCkge1xuICBsZXQgc3VwcG9zaXRpb25WZXJpZmllZDtcblxuICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHByb29mQ29udGV4dC5ub2RlQXNTdHJpbmcoc3VwcG9zaXRpb25Ob2RlKTtcblxuICBwcm9vZkNvbnRleHQuZGVidWcoYFZlcmlmeWluZyB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmAsIHN1cHBvc2l0aW9uTm9kZSk7XG5cbiAgY29uc3QgZGVyaXZlZCA9IGZhbHNlLFxuICAgICAgICBhc3NpZ25tZW50cyA9IFtdLFxuICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUgPSB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVRdWVyeShzdXBwb3NpdGlvbk5vZGUpLFxuICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgcHJvb2ZDb250ZXh0KTtcblxuICBpZiAodW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBwcm9vZlN0ZXAgPSBQcm9vZlN0ZXAuZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgc3VwcG9zaXRpb24gPSBTdXBwb3NpdGlvbi5mcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICAgIHN1cHBvc2l0aW9ucy5wdXNoKHN1cHBvc2l0aW9uKTtcblxuICAgIHByb29mQ29udGV4dC5hZGRQcm9vZlN0ZXAocHJvb2ZTdGVwKTtcblxuICAgIGFzc2lnbm1lbnRzLmZvckVhY2goKGFzc2lnbm1lbnQpID0+IHtcbiAgICAgIGFzc2lnbm1lbnQuYXNzaWduKHByb29mQ29udGV4dCk7XG4gICAgfSk7XG5cbiAgICBzdXBwb3NpdGlvblZlcmlmaWVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChzdXBwb3NpdGlvblZlcmlmaWVkKSB7XG4gICAgcHJvb2ZDb250ZXh0LmluZm8oYFZlcmlmaWVkIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmAsIHN1cHBvc2l0aW9uTm9kZSk7XG4gIH1cblxuICByZXR1cm4gc3VwcG9zaXRpb25WZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlTdXBwb3NpdGlvbiIsInN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZVF1ZXJ5Iiwic3VwcG9zaXRpb25Ob2RlIiwic3VwcG9zaXRpb25zIiwicHJvb2ZDb250ZXh0Iiwic3VwcG9zaXRpb25WZXJpZmllZCIsInN1cHBvc2l0aW9uU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiZGVidWciLCJkZXJpdmVkIiwiYXNzaWdubWVudHMiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkIiwidmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwicHJvb2ZTdGVwIiwiUHJvb2ZTdGVwIiwiZnJvbVN0YXRlbWVudE5vZGUiLCJzdXBwb3NpdGlvbiIsIlN1cHBvc2l0aW9uIiwicHVzaCIsImFkZFByb29mU3RlcCIsImZvckVhY2giLCJhc3NpZ25tZW50IiwiYXNzaWduIiwiaW5mbyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0E7OztlQUF3QkE7Ozs0REFURjtrRUFDRTtrRUFDZTtxQkFFYjs7Ozs7O0FBRTFCLElBQU1DLHFCQUFxQkMsSUFBQUEsZ0JBQVMsRUFBQyxxQ0FDL0JDLGdDQUFnQ0QsSUFBQUEsZ0JBQVMsRUFBQztBQUVqQyxTQUFTRixrQkFBa0JJLGVBQWUsRUFBRUMsWUFBWSxFQUFFQyxZQUFZO0lBQ25GLElBQUlDO0lBRUosSUFBTUMsb0JBQW9CRixhQUFhRyxZQUFZLENBQUNMO0lBRXBERSxhQUFhSSxLQUFLLENBQUMsQUFBQyxrQkFBbUMsT0FBbEJGLG1CQUFrQixxQkFBbUJKO0lBRTFFLElBQU1PLFVBQVUsT0FDVkMsY0FBYyxFQUFFLEVBQ2hCQywyQkFBMkJWLDhCQUE4QkMsa0JBQ3pEVSwrQkFBK0JDLElBQUFBLG9CQUEwQixFQUFDRiwwQkFBMEJELGFBQWFELFNBQVNMO0lBRWhILElBQUlRLDhCQUE4QjtRQUNoQyxJQUFNRSxnQkFBZ0JmLG1CQUFtQlksMkJBQ25DSSxZQUFZQyxjQUFTLENBQUNDLGlCQUFpQixDQUFDSCxnQkFDeENJLGNBQWNDLG9CQUFXLENBQUNGLGlCQUFpQixDQUFDSDtRQUVsRFgsYUFBYWlCLElBQUksQ0FBQ0Y7UUFFbEJkLGFBQWFpQixZQUFZLENBQUNOO1FBRTFCTCxZQUFZWSxPQUFPLENBQUMsU0FBQ0M7WUFDbkJBLFdBQVdDLE1BQU0sQ0FBQ3BCO1FBQ3BCO1FBRUFDLHNCQUFzQjtJQUN4QjtJQUVBLElBQUlBLHFCQUFxQjtRQUN2QkQsYUFBYXFCLElBQUksQ0FBQyxBQUFDLGlCQUFrQyxPQUFsQm5CLG1CQUFrQixtQkFBaUJKO0lBQ3hFO0lBRUEsT0FBT0c7QUFDVCJ9
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3VwcG9zaXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBQcm9vZlN0ZXAgZnJvbSBcIi4uL3N0ZXAvcHJvb2ZcIjtcbmltcG9ydCBTdXBwb3NpdGlvbiBmcm9tIFwiLi4vc3VwcG9zaXRpb25cIjtcbmltcG9ydCB2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCBmcm9tIFwiLi9zdGF0ZW1lbnQvdW5xdWFsaWZpZWRcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdW5xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50IVwiKSxcbiAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N1cHBvc2l0aW9uL3VucXVhbGlmaWVkU3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb25Ob2RlLCBzdXBwb3NpdGlvbnMsIHByb29mQ29udGV4dCkge1xuICBsZXQgc3VwcG9zaXRpb25WZXJpZmllZDtcblxuICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHByb29mQ29udGV4dC5ub2RlQXNTdHJpbmcoc3VwcG9zaXRpb25Ob2RlKTtcblxuICBwcm9vZkNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmAsIHN1cHBvc2l0aW9uTm9kZSk7XG5cbiAgY29uc3QgZGVyaXZlZCA9IGZhbHNlLFxuICAgICAgICBhc3NpZ25tZW50cyA9IFtdLFxuICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUgPSB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVRdWVyeShzdXBwb3NpdGlvbk5vZGUpLFxuICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgcHJvb2ZDb250ZXh0KTtcblxuICBpZiAodW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBwcm9vZlN0ZXAgPSBQcm9vZlN0ZXAuZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgc3VwcG9zaXRpb24gPSBTdXBwb3NpdGlvbi5mcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICAgIHN1cHBvc2l0aW9ucy5wdXNoKHN1cHBvc2l0aW9uKTtcblxuICAgIHByb29mQ29udGV4dC5hZGRQcm9vZlN0ZXAocHJvb2ZTdGVwKTtcblxuICAgIGFzc2lnbm1lbnRzLmZvckVhY2goKGFzc2lnbm1lbnQpID0+IHtcbiAgICAgIGFzc2lnbm1lbnQuYXNzaWduKHByb29mQ29udGV4dCk7XG4gICAgfSk7XG5cbiAgICBzdXBwb3NpdGlvblZlcmlmaWVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChzdXBwb3NpdGlvblZlcmlmaWVkKSB7XG4gICAgcHJvb2ZDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gLCBzdXBwb3NpdGlvbk5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5U3VwcG9zaXRpb24iLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVRdWVyeSIsInN1cHBvc2l0aW9uTm9kZSIsInN1cHBvc2l0aW9ucyIsInByb29mQ29udGV4dCIsInN1cHBvc2l0aW9uVmVyaWZpZWQiLCJzdXBwb3NpdGlvblN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwiZGVyaXZlZCIsImFzc2lnbm1lbnRzIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVVucXVhbGlmaWVkU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsInByb29mU3RlcCIsIlByb29mU3RlcCIsImZyb21TdGF0ZW1lbnROb2RlIiwic3VwcG9zaXRpb24iLCJTdXBwb3NpdGlvbiIsInB1c2giLCJhZGRQcm9vZlN0ZXAiLCJmb3JFYWNoIiwiYXNzaWdubWVudCIsImFzc2lnbiIsImRlYnVnIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFXQTs7O2VBQXdCQTs7OzREQVRGO2tFQUNFO2tFQUNlO3FCQUViOzs7Ozs7QUFFMUIsSUFBTUMscUJBQXFCQyxJQUFBQSxnQkFBUyxFQUFDLHFDQUMvQkMsZ0NBQWdDRCxJQUFBQSxnQkFBUyxFQUFDO0FBRWpDLFNBQVNGLGtCQUFrQkksZUFBZSxFQUFFQyxZQUFZLEVBQUVDLFlBQVk7SUFDbkYsSUFBSUM7SUFFSixJQUFNQyxvQkFBb0JGLGFBQWFHLFlBQVksQ0FBQ0w7SUFFcERFLGFBQWFJLEtBQUssQ0FBQyxBQUFDLGtCQUFtQyxPQUFsQkYsbUJBQWtCLHFCQUFtQko7SUFFMUUsSUFBTU8sVUFBVSxPQUNWQyxjQUFjLEVBQUUsRUFDaEJDLDJCQUEyQlYsOEJBQThCQyxrQkFDekRVLCtCQUErQkMsSUFBQUEsb0JBQTBCLEVBQUNGLDBCQUEwQkQsYUFBYUQsU0FBU0w7SUFFaEgsSUFBSVEsOEJBQThCO1FBQ2hDLElBQU1FLGdCQUFnQmYsbUJBQW1CWSwyQkFDbkNJLFlBQVlDLGNBQVMsQ0FBQ0MsaUJBQWlCLENBQUNILGdCQUN4Q0ksY0FBY0Msb0JBQVcsQ0FBQ0YsaUJBQWlCLENBQUNIO1FBRWxEWCxhQUFhaUIsSUFBSSxDQUFDRjtRQUVsQmQsYUFBYWlCLFlBQVksQ0FBQ047UUFFMUJMLFlBQVlZLE9BQU8sQ0FBQyxTQUFDQztZQUNuQkEsV0FBV0MsTUFBTSxDQUFDcEI7UUFDcEI7UUFFQUMsc0JBQXNCO0lBQ3hCO0lBRUEsSUFBSUEscUJBQXFCO1FBQ3ZCRCxhQUFhcUIsS0FBSyxDQUFDLEFBQUMsb0JBQXFDLE9BQWxCbkIsbUJBQWtCLG1CQUFpQko7SUFDNUU7SUFFQSxPQUFPRztBQUNUIn0=
@@ -10,13 +10,7 @@ function _export(target, all) {
10
10
  }
11
11
  _export(exports, {
12
12
  default: function() {
13
- return verifyTerm;
14
- },
15
- termVerifier: function() {
16
- return termVerifier;
17
- },
18
- verifyTermAgainstConstructor: function() {
19
- return verifyTermAgainstConstructor;
13
+ return _default;
20
14
  },
21
15
  verifyTermAgainstConstructors: function() {
22
16
  return verifyTermAgainstConstructors;
@@ -25,241 +19,111 @@ _export(exports, {
25
19
  return verifyTermAsVariable;
26
20
  }
27
21
  });
28
- var _verifier = /*#__PURE__*/ _interop_require_default(require("../verifier"));
22
+ var _term = /*#__PURE__*/ _interop_require_default(require("../verifier/nodes/term"));
29
23
  var _array = require("../utilities/array");
30
- var _type = require("../type");
31
- var _typeNames = require("../typeNames");
32
- var _ruleNames = require("../ruleNames");
33
24
  var _query = require("../utilities/query");
34
- function _assert_this_initialized(self) {
35
- if (self === void 0) {
36
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
37
- }
38
- return self;
39
- }
40
- function _class_call_check(instance, Constructor) {
41
- if (!(instance instanceof Constructor)) {
42
- throw new TypeError("Cannot call a class as a function");
43
- }
44
- }
45
- function _defineProperties(target, props) {
46
- for(var i = 0; i < props.length; i++){
47
- var descriptor = props[i];
48
- descriptor.enumerable = descriptor.enumerable || false;
49
- descriptor.configurable = true;
50
- if ("value" in descriptor) descriptor.writable = true;
51
- Object.defineProperty(target, descriptor.key, descriptor);
52
- }
53
- }
54
- function _create_class(Constructor, protoProps, staticProps) {
55
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
56
- if (staticProps) _defineProperties(Constructor, staticProps);
57
- return Constructor;
58
- }
59
- function _get_prototype_of(o) {
60
- _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
61
- return o.__proto__ || Object.getPrototypeOf(o);
62
- };
63
- return _get_prototype_of(o);
64
- }
65
- function _inherits(subClass, superClass) {
66
- if (typeof superClass !== "function" && superClass !== null) {
67
- throw new TypeError("Super expression must either be null or a function");
68
- }
69
- subClass.prototype = Object.create(superClass && superClass.prototype, {
70
- constructor: {
71
- value: subClass,
72
- writable: true,
73
- configurable: true
74
- }
75
- });
76
- if (superClass) _set_prototype_of(subClass, superClass);
77
- }
78
25
  function _interop_require_default(obj) {
79
26
  return obj && obj.__esModule ? obj : {
80
27
  default: obj
81
28
  };
82
29
  }
83
- function _possible_constructor_return(self, call) {
84
- if (call && (_type_of(call) === "object" || typeof call === "function")) {
85
- return call;
86
- }
87
- return _assert_this_initialized(self);
88
- }
89
- function _set_prototype_of(o, p) {
90
- _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
91
- o.__proto__ = p;
92
- return o;
93
- };
94
- return _set_prototype_of(o, p);
95
- }
96
- function _type_of(obj) {
97
- "@swc/helpers - typeof";
98
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
99
- }
100
- function _is_native_reflect_construct() {
101
- if (typeof Reflect === "undefined" || !Reflect.construct) return false;
102
- if (Reflect.construct.sham) return false;
103
- if (typeof Proxy === "function") return true;
104
- try {
105
- Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
106
- return true;
107
- } catch (e) {
108
- return false;
109
- }
110
- }
111
- function _create_super(Derived) {
112
- var hasNativeReflectConstruct = _is_native_reflect_construct();
113
- return function _createSuperInternal() {
114
- var Super = _get_prototype_of(Derived), result;
115
- if (hasNativeReflectConstruct) {
116
- var NewTarget = _get_prototype_of(this).constructor;
117
- result = Reflect.construct(Super, arguments, NewTarget);
118
- } else {
119
- result = Super.apply(this, arguments);
120
- }
121
- return _possible_constructor_return(this, result);
122
- };
123
- }
124
- var termNodeQuery = (0, _query.nodeQuery)("/argument/term!"), typeNodeQuery = (0, _query.nodeQuery)("/argument/type!"), variableNodeQuery = (0, _query.nodeQuery)("/term/variable!");
125
- var TermVerifier = /*#__PURE__*/ function(Verifier) {
126
- _inherits(TermVerifier, Verifier);
127
- var _super = _create_super(TermVerifier);
128
- function TermVerifier() {
129
- _class_call_check(this, TermVerifier);
130
- return _super.apply(this, arguments);
131
- }
132
- _create_class(TermVerifier, [
133
- {
134
- key: "verifyTerminalNode",
135
- value: function verifyTerminalNode(terminalNode, constructorTerminalNode, context) {
136
- var terminalNodeVerified = false;
137
- var matches = terminalNode.match(constructorTerminalNode);
138
- if (matches) {
139
- terminalNodeVerified = true;
140
- }
141
- return terminalNodeVerified;
142
- }
143
- },
144
- {
145
- key: "verifyNonTerminalNode",
146
- value: function verifyNonTerminalNode(nonTerminalNode, constructorNonTerminalNode, context) {
147
- var nonTerminalNodeVerified = false;
148
- var ruleName = nonTerminalNode.getRuleName(), constructorRuleName = constructorNonTerminalNode.getRuleName(); ///
149
- if (ruleName === constructorRuleName) {
150
- switch(ruleName){
151
- case _ruleNames.ARGUMENT_RULE_NAME:
152
- {
153
- var argumentNode = nonTerminalNode, constructorArgumentNode = constructorNonTerminalNode, argumentNodeVerified = this.verifyArgumentNode(argumentNode, constructorArgumentNode, context);
154
- nonTerminalNodeVerified = argumentNodeVerified; ///
155
- break;
156
- }
157
- default:
158
- {
159
- var childNodes = nonTerminalNode.getChildNodes(), constructorChildNodes = constructorNonTerminalNode.getChildNodes(), nodes = childNodes, constructorNodes = constructorChildNodes, nodesVerified = this.verifyNodes(nodes, constructorNodes, context);
160
- nonTerminalNodeVerified = nodesVerified; ///
161
- break;
162
- }
163
- }
164
- }
165
- return nonTerminalNodeVerified;
166
- }
167
- },
168
- {
169
- key: "verifyArgumentNode",
170
- value: function verifyArgumentNode(argumentNode, constructorArgumentNode, context) {
171
- var argumentNodeVerified = false;
172
- var typeNode = typeNodeQuery(argumentNode);
173
- if (typeNode !== null) {
174
- var argumentString = context.nodeAsString(argumentNode);
175
- context.error("The '".concat(argumentString, "' argument should be a term, not a type"), argumentNode);
176
- } else {
177
- var termNode = termNodeQuery(argumentNode), constructorTermNode = termNodeQuery(constructorArgumentNode), constructorTypeNode = typeNodeQuery(constructorArgumentNode);
178
- if (false) {
179
- ///
180
- } else if (constructorTermNode !== null) {
181
- var node = termNode, constructorNode = constructorTermNode, nodeVerified = this.verifyNode(node, constructorNode, context);
182
- argumentNodeVerified = nodeVerified; ///
183
- } else if (constructorTypeNode !== null) {
184
- var types = [], termVerified = verifyTerm(termNode, types, context);
185
- if (termVerified) {
186
- var constructorTypeName = (0, _query.typeNameFromTypeNode)(constructorTypeNode), firstType = (0, _array.first)(types), termType = firstType, termTypeName = termType.getName(), constructorType = constructorTypeName === _typeNames.OBJECT_TYPE_NAME ? _type.objectType : context.findTypeByTypeName(constructorTypeName), termTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(constructorType);
187
- if (termTypeEqualToOrSubTypeOfType) {
188
- var termString = context.nodeAsString(termNode);
189
- context.trace("The '".concat(termTypeName, "' type of the '").concat(termString, "' term is equal to or a sub-type of the '").concat(constructorTypeName, "' type in the constructor."), argumentNode);
190
- argumentNodeVerified = true;
191
- }
192
- }
193
- }
194
- }
195
- return argumentNodeVerified;
196
- }
197
- }
198
- ]);
199
- return TermVerifier;
200
- }(_verifier.default);
201
- var termVerifier = new TermVerifier();
202
- function verifyTerm(termNode, types, context) {
203
- var termVerified = false;
30
+ var variableNodeQuery = (0, _query.nodeQuery)("/term/variable!");
31
+ function verifyTerm(termNode, types, context, verifyAhead) {
32
+ var termVerified;
204
33
  var termString = context.nodeAsString(termNode);
205
- context.debug("Verifying the '".concat(termString, "' term..."), termNode);
206
- if (!termVerified) {
207
- var variables = [], termVerifiedAsVariable = verifyTermAsVariable(termNode, variables, context);
208
- if (termVerifiedAsVariable) {
209
- var firstVariable = (0, _array.first)(variables), variable = firstVariable, type = variable.getType();
210
- types.push(type);
211
- termVerified = true;
212
- }
213
- }
214
- if (!termVerified) {
215
- var termVerifiedAgainstConstructors = verifyTermAgainstConstructors(termNode, types, context);
216
- if (termVerifiedAgainstConstructors) {
217
- termVerified = true;
34
+ context.trace("Verifying the '".concat(termString, "' term..."), termNode);
35
+ var verifyTermFunctions = [
36
+ verifyTermAsStandaloneVariable,
37
+ verifyTermAgainstConstructors
38
+ ];
39
+ termVerified = verifyTermFunctions.some(function(verifyTermFunction) {
40
+ var termVerified = verifyTermFunction(termNode, types, context, verifyAhead);
41
+ if (termVerified) {
42
+ return true;
218
43
  }
219
- }
44
+ });
220
45
  if (termVerified) {
221
- var firstType = (0, _array.first)(types), type1 = firstType, typeName = type1.getName();
222
- context.debug("Verified the '".concat(termString, "' term, which has type '").concat(typeName, "'."), termNode);
46
+ context.debug("...verified the '".concat(termString, "' term."), termNode);
223
47
  }
224
48
  return termVerified;
225
49
  }
226
- function verifyTermAgainstConstructors(termNode, types, context) {
227
- var termVerifiedAgainstConstructors = false;
228
- var termString = context.nodeAsString(termNode);
229
- context.trace("Verifying the '".concat(termString, "' term against constructors..."), termNode);
230
- var constructors = context.getConstructors(), constructor = constructors.find(function(constructor) {
231
- var termVerifiedAgainstConstructor = verifyTermAgainstConstructor(termNode, constructor, context);
50
+ Object.assign(_term.default, {
51
+ verifyTerm: verifyTerm
52
+ });
53
+ var _default = verifyTerm;
54
+ function verifyTermAgainstConstructors(termNode, types, context, verifyAhead) {
55
+ var termVerifiedAgainstConstructors;
56
+ var constructors = context.getConstructors();
57
+ termVerifiedAgainstConstructors = constructors.some(function(constructor) {
58
+ var termVerifiedAgainstConstructor = verifyTermAgainstConstructor(termNode, types, constructor, context, verifyAhead);
232
59
  if (termVerifiedAgainstConstructor) {
233
60
  return true;
234
61
  }
235
- }) || null;
236
- if (constructor !== null) {
237
- var type = constructor.getType();
238
- types.push(type);
239
- termVerifiedAgainstConstructors = true;
240
- }
62
+ });
241
63
  return termVerifiedAgainstConstructors;
242
64
  }
243
- function verifyTermAgainstConstructor(termNode, constructor, context) {
244
- var termString = context.nodeAsString(termNode), constructorString = constructor.getString();
245
- context.trace("Verifying the '".concat(termString, "' term against the '").concat(constructorString, "' constructor."), termNode);
246
- var constructorTermNode = constructor.getTermNode(), nonTerminalNNdeA = termNode, nonTerminalNodeB = constructorTermNode, nodeVerified = termVerifier.verifyNonTerminalNode(nonTerminalNNdeA, nonTerminalNodeB, context), termVerifiedAgainstConstructor = nodeVerified; ///
247
- return termVerifiedAgainstConstructor;
248
- }
249
- function verifyTermAsVariable(termNode, variables, context) {
65
+ function verifyTermAsVariable(termNode, variables, context, verifyAhead) {
250
66
  var termVerifiedAsVariable = false;
251
- var termString = context.nodeAsString(termNode);
252
- context.trace("Verifying the '".concat(termString, "' term as a variable..."), termNode);
253
67
  var variableNode = variableNodeQuery(termNode);
254
68
  if (variableNode !== null) {
69
+ var termString = context.nodeAsString(termNode);
70
+ context.trace("Verifying the '".concat(termString, "' term as a variable..."), termNode);
255
71
  var variableName = (0, _query.variableNameFromVariableNode)(variableNode), variablePresent = context.isVariablePresentByVariableName(variableName);
256
72
  if (variablePresent) {
73
+ var verifiedAhead;
257
74
  var variable = context.findVariableByVariableName(variableName);
258
75
  variables.push(variable);
259
- termVerifiedAsVariable = true;
76
+ verifiedAhead = verifyAhead();
77
+ if (!verifiedAhead) {
78
+ variables.pop();
79
+ }
80
+ termVerifiedAsVariable = verifiedAhead; ///
81
+ }
82
+ if (termVerifiedAsVariable) {
83
+ context.debug("...verified the '".concat(termString, "' term as a variable."), termNode);
260
84
  }
261
85
  }
262
86
  return termVerifiedAsVariable;
263
87
  }
88
+ function verifyTermAgainstConstructor(termNode, types, constructor, context, verifyAhead) {
89
+ var termVerifiedAgainstConstructor;
90
+ var termString = context.nodeAsString(termNode), constructorString = constructor.getString();
91
+ context.trace("Verifying the '".concat(termString, "' term against the '").concat(constructorString, "' constructor..."), termNode);
92
+ var constructorTermNode = constructor.getTermNode(), nonTerminalNNdeA = termNode, nonTerminalNodeB = constructorTermNode, nodeVerified = _term.default.verifyNonTerminalNode(nonTerminalNNdeA, nonTerminalNodeB, context, function() {
93
+ var verifiedAhead;
94
+ var type = constructor.getType();
95
+ types.push(type);
96
+ verifiedAhead = verifyAhead();
97
+ if (!verifiedAhead) {
98
+ types.pop();
99
+ }
100
+ return verifiedAhead;
101
+ });
102
+ termVerifiedAgainstConstructor = nodeVerified; ///
103
+ if (termVerifiedAgainstConstructor) {
104
+ context.debug("...verified the '".concat(termString, "' term against the '").concat(constructorString, "' constructor."), termNode);
105
+ }
106
+ return termVerifiedAgainstConstructor;
107
+ }
108
+ function verifyTermAsStandaloneVariable(termNode, types, context, verifyAhead) {
109
+ var termVerifiedAsStandaloneVariable;
110
+ var termString = context.nodeAsString(termNode);
111
+ context.trace("Verifying the '".concat(termString, "' term as a standalone variable..."), termNode);
112
+ var variables = [], termVerifiedAsVariable = verifyTermAsVariable(termNode, variables, context, function() {
113
+ var verifiedAhead;
114
+ var firstVariable = (0, _array.first)(variables), variable = firstVariable, type = variable.getType();
115
+ types.push(type);
116
+ verifiedAhead = verifyAhead();
117
+ if (!verifiedAhead) {
118
+ types.pop();
119
+ }
120
+ return verifiedAhead;
121
+ });
122
+ termVerifiedAsStandaloneVariable = termVerifiedAsVariable; ///
123
+ if (termVerifiedAsStandaloneVariable) {
124
+ context.debug("...verified the '".concat(termString, "' term as a standalone variable."), termNode);
125
+ }
126
+ return termVerifiedAsStandaloneVariable;
127
+ }
264
128
 
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFZlcmlmaWVyIGZyb20gXCIuLi92ZXJpZmllclwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG9iamVjdFR5cGUgfSBmcm9tIFwiLi4vdHlwZVwiO1xuaW1wb3J0IHsgT0JKRUNUX1RZUEVfTkFNRSB9IGZyb20gXCIuLi90eXBlTmFtZXNcIjtcbmltcG9ydCB7IEFSR1VNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgdHlwZU5hbWVGcm9tVHlwZU5vZGUsIHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXJndW1lbnQvdGVybSFcIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2FyZ3VtZW50L3R5cGUhXCIpLFxuICAgICAgdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybS92YXJpYWJsZSFcIik7XG5cbmNsYXNzIFRlcm1WZXJpZmllciBleHRlbmRzIFZlcmlmaWVyIHtcbiAgdmVyaWZ5VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgY29uc3RydWN0b3JUZXJtaW5hbE5vZGUsIGNvbnRleHQpIHtcbiAgICBsZXQgdGVybWluYWxOb2RlVmVyaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1hdGNoZXMgPSB0ZXJtaW5hbE5vZGUubWF0Y2goY29uc3RydWN0b3JUZXJtaW5hbE5vZGUpO1xuXG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIHRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlVmVyaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCBjb25zdHJ1Y3Rvck5vblRlcm1pbmFsTm9kZSwgY29udGV4dCkge1xuICAgIGxldCBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgcnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSwgLy8vXG4gICAgICAgICAgY29uc3RydWN0b3JSdWxlTmFtZSA9IGNvbnN0cnVjdG9yTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7IC8vL1xuXG4gICAgaWYgKHJ1bGVOYW1lID09PSBjb25zdHJ1Y3RvclJ1bGVOYW1lKSB7XG4gICAgICBzd2l0Y2ggKHJ1bGVOYW1lKSB7XG4gICAgICAgIGNhc2UgQVJHVU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICAgICAgY29uc3QgYXJndW1lbnROb2RlID0gbm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvckFyZ3VtZW50Tm9kZSA9IGNvbnN0cnVjdG9yTm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICAgICAgICBhcmd1bWVudE5vZGVWZXJpZmllZCA9IHRoaXMudmVyaWZ5QXJndW1lbnROb2RlKGFyZ3VtZW50Tm9kZSwgY29uc3RydWN0b3JBcmd1bWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBhcmd1bWVudE5vZGVWZXJpZmllZDsgLy8vXG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvckNoaWxkTm9kZXMgPSBjb25zdHJ1Y3Rvck5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgICAgbm9kZXMgPSBjaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGVzID0gY29uc3RydWN0b3JDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICBub2Rlc1ZlcmlmaWVkID0gdGhpcy52ZXJpZnlOb2Rlcyhub2RlcywgY29uc3RydWN0b3JOb2RlcywgY29udGV4dCk7XG5cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IG5vZGVzVmVyaWZpZWQ7IC8vL1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnlBcmd1bWVudE5vZGUoYXJndW1lbnROb2RlLCBjb25zdHJ1Y3RvckFyZ3VtZW50Tm9kZSwgY29udGV4dCkge1xuICAgIGxldCBhcmd1bWVudE5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KGFyZ3VtZW50Tm9kZSk7XG5cbiAgICBpZiAodHlwZU5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGFyZ3VtZW50U3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcoYXJndW1lbnROb2RlKTtcblxuICAgICAgY29udGV4dC5lcnJvcihgVGhlICcke2FyZ3VtZW50U3RyaW5nfScgYXJndW1lbnQgc2hvdWxkIGJlIGEgdGVybSwgbm90IGEgdHlwZWAsIGFyZ3VtZW50Tm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShhcmd1bWVudE5vZGUpLFxuICAgICAgICAgICAgY29uc3RydWN0b3JUZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkoY29uc3RydWN0b3JBcmd1bWVudE5vZGUpLFxuICAgICAgICAgICAgY29uc3RydWN0b3JUeXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkoY29uc3RydWN0b3JBcmd1bWVudE5vZGUpO1xuXG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgLy8vXG4gICAgICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yVGVybU5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGNvbnN0cnVjdG9yTm9kZSA9IGNvbnN0cnVjdG9yVGVybU5vZGUsICAvLy9cbiAgICAgICAgICAgICAgbm9kZVZlcmlmaWVkID0gdGhpcy52ZXJpZnlOb2RlKG5vZGUsIGNvbnN0cnVjdG9yTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgYXJndW1lbnROb2RlVmVyaWZpZWQgPSBub2RlVmVyaWZpZWQ7ICAvLy9cbiAgICAgIH0gZWxzZSBpZiAoY29uc3RydWN0b3JUeXBlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB0eXBlcyA9IFtdLFxuICAgICAgICAgICAgICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHRlcm1WZXJpZmllZCkge1xuICAgICAgICAgIGNvbnN0IGNvbnN0cnVjdG9yVHlwZU5hbWUgPSB0eXBlTmFtZUZyb21UeXBlTm9kZShjb25zdHJ1Y3RvclR5cGVOb2RlKSxcbiAgICAgICAgICAgICAgICBmaXJzdFR5cGUgPSBmaXJzdCh0eXBlcyksXG4gICAgICAgICAgICAgICAgdGVybVR5cGUgPSBmaXJzdFR5cGUsIC8vL1xuICAgICAgICAgICAgICAgIHRlcm1UeXBlTmFtZSA9IHRlcm1UeXBlLmdldE5hbWUoKSxcbiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvclR5cGUgPSAoY29uc3RydWN0b3JUeXBlTmFtZSA9PT0gT0JKRUNUX1RZUEVfTkFNRSkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0VHlwZSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKGNvbnN0cnVjdG9yVHlwZU5hbWUpLFxuICAgICAgICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKGNvbnN0cnVjdG9yVHlwZSk7XG5cbiAgICAgICAgICBpZiAodGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlKSB7XG4gICAgICAgICAgICBjb25zdCB0ZXJtU3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgICAgICAgICBjb250ZXh0LnRyYWNlKGBUaGUgJyR7dGVybVR5cGVOYW1lfScgdHlwZSBvZiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gaXMgZXF1YWwgdG8gb3IgYSBzdWItdHlwZSBvZiB0aGUgJyR7Y29uc3RydWN0b3JUeXBlTmFtZX0nIHR5cGUgaW4gdGhlIGNvbnN0cnVjdG9yLmAsIGFyZ3VtZW50Tm9kZSk7XG5cbiAgICAgICAgICAgIGFyZ3VtZW50Tm9kZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYXJndW1lbnROb2RlVmVyaWZpZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHRlcm1WZXJpZmllciA9IG5ldyBUZXJtVmVyaWZpZXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VGVybSh0ZXJtTm9kZSwgdHlwZXMsIGNvbnRleHQpIHtcbiAgbGV0IHRlcm1WZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSk7XG5cbiAgY29udGV4dC5kZWJ1ZyhgVmVyaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmAsIHRlcm1Ob2RlKTtcblxuICBpZiAoIXRlcm1WZXJpZmllZCkge1xuICAgIGNvbnN0IHZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB2ZXJpZnlUZXJtQXNWYXJpYWJsZSh0ZXJtTm9kZSwgdmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgIGlmICh0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlKSB7XG4gICAgICBjb25zdCBmaXJzdFZhcmlhYmxlID0gZmlyc3QodmFyaWFibGVzKSxcbiAgICAgICAgICAgIHZhcmlhYmxlID0gZmlyc3RWYXJpYWJsZSwgLy8vXG4gICAgICAgICAgICB0eXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpO1xuXG4gICAgICB0eXBlcy5wdXNoKHR5cGUpO1xuXG4gICAgICB0ZXJtVmVyaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghdGVybVZlcmlmaWVkKSB7XG4gICAgY29uc3QgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgICBpZiAodGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycykge1xuICAgICAgdGVybVZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgY29uc3QgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuICAgICAgICAgIHR5cGUgPSBmaXJzdFR5cGUsIC8vL1xuICAgICAgICAgIHR5cGVOYW1lID0gdHlwZS5nZXROYW1lKCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGBWZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0sIHdoaWNoIGhhcyB0eXBlICcke3R5cGVOYW1lfScuYCwgdGVybU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCkge1xuICBsZXQgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IGZhbHNlO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSk7XG5cbiAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhZ2FpbnN0IGNvbnN0cnVjdG9ycy4uLmAsIHRlcm1Ob2RlKTtcblxuICBjb25zdCBjb25zdHJ1Y3RvcnMgPSBjb250ZXh0LmdldENvbnN0cnVjdG9ycygpLFxuICAgICAgICBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9ycy5maW5kKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvciA9IHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIGNvbnN0cnVjdG9yLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmICh0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgfHwgbnVsbDtcblxuICBpZiAoY29uc3RydWN0b3IgIT09IG51bGwpIHtcbiAgICBjb25zdCB0eXBlID0gY29uc3RydWN0b3IuZ2V0VHlwZSgpO1xuXG4gICAgdHlwZXMucHVzaCh0eXBlKTtcblxuICAgIHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9yKHRlcm1Ob2RlLCBjb25zdHJ1Y3RvciwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtU3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpLFxuICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IGNvbnN0cnVjdG9yLmdldFN0cmluZygpO1xuXG4gIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYWdhaW5zdCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgY29uc3RydWN0b3JUZXJtTm9kZSA9IGNvbnN0cnVjdG9yLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIG5vblRlcm1pbmFsTk5kZUEgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICBub25UZXJtaW5hbE5vZGVCID0gY29uc3RydWN0b3JUZXJtTm9kZSwgIC8vL1xuICAgICAgICBub2RlVmVyaWZpZWQgPSB0ZXJtVmVyaWZpZXIudmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTk5kZUEsIG5vblRlcm1pbmFsTm9kZUIsIGNvbnRleHQpLFxuICAgICAgICB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IgPSBub2RlVmVyaWZpZWQ7ICAvLy9cblxuICByZXR1cm4gdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5VGVybUFzVmFyaWFibGUodGVybU5vZGUsIHZhcmlhYmxlcywgY29udGV4dCkge1xuICBsZXQgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSk7XG5cbiAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhcyBhIHZhcmlhYmxlLi4uYCwgdGVybU5vZGUpO1xuXG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHZhcmlhYmxlUHJlc2VudCA9IGNvbnRleHQuaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpO1xuXG4gICAgaWYgKHZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgY29uc3QgdmFyaWFibGUgPSBjb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lKHZhcmlhYmxlTmFtZSk7XG5cbiAgICAgIHZhcmlhYmxlcy5wdXNoKHZhcmlhYmxlKTtcblxuICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzVmFyaWFibGU7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5VGVybSIsInRlcm1WZXJpZmllciIsInZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IiLCJ2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9ycyIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInR5cGVOb2RlUXVlcnkiLCJ2YXJpYWJsZU5vZGVRdWVyeSIsIlRlcm1WZXJpZmllciIsInZlcmlmeVRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsImNvbnN0cnVjdG9yVGVybWluYWxOb2RlIiwiY29udGV4dCIsInRlcm1pbmFsTm9kZVZlcmlmaWVkIiwibWF0Y2hlcyIsIm1hdGNoIiwidmVyaWZ5Tm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiY29uc3RydWN0b3JOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVWZXJpZmllZCIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJjb25zdHJ1Y3RvclJ1bGVOYW1lIiwiQVJHVU1FTlRfUlVMRV9OQU1FIiwiYXJndW1lbnROb2RlIiwiY29uc3RydWN0b3JBcmd1bWVudE5vZGUiLCJhcmd1bWVudE5vZGVWZXJpZmllZCIsInZlcmlmeUFyZ3VtZW50Tm9kZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiY29uc3RydWN0b3JDaGlsZE5vZGVzIiwibm9kZXMiLCJjb25zdHJ1Y3Rvck5vZGVzIiwibm9kZXNWZXJpZmllZCIsInZlcmlmeU5vZGVzIiwidHlwZU5vZGUiLCJhcmd1bWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsImVycm9yIiwidGVybU5vZGUiLCJjb25zdHJ1Y3RvclRlcm1Ob2RlIiwiY29uc3RydWN0b3JUeXBlTm9kZSIsIm5vZGUiLCJjb25zdHJ1Y3Rvck5vZGUiLCJub2RlVmVyaWZpZWQiLCJ2ZXJpZnlOb2RlIiwidHlwZXMiLCJ0ZXJtVmVyaWZpZWQiLCJjb25zdHJ1Y3RvclR5cGVOYW1lIiwidHlwZU5hbWVGcm9tVHlwZU5vZGUiLCJmaXJzdFR5cGUiLCJmaXJzdCIsInRlcm1UeXBlIiwidGVybVR5cGVOYW1lIiwiZ2V0TmFtZSIsImNvbnN0cnVjdG9yVHlwZSIsIk9CSkVDVF9UWVBFX05BTUUiLCJvYmplY3RUeXBlIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwidGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJ0ZXJtU3RyaW5nIiwidHJhY2UiLCJWZXJpZmllciIsImRlYnVnIiwidmFyaWFibGVzIiwidGVybVZlcmlmaWVkQXNWYXJpYWJsZSIsImZpcnN0VmFyaWFibGUiLCJ2YXJpYWJsZSIsInR5cGUiLCJnZXRUeXBlIiwicHVzaCIsInRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMiLCJ0eXBlTmFtZSIsImNvbnN0cnVjdG9ycyIsImdldENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9yIiwiZmluZCIsInRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yU3RyaW5nIiwiZ2V0U3RyaW5nIiwiZ2V0VGVybU5vZGUiLCJub25UZXJtaW5hbE5OZGVBIiwibm9uVGVybWluYWxOb2RlQiIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTmFtZSIsInZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUiLCJ2YXJpYWJsZVByZXNlbnQiLCJpc1ZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVOYW1lIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQW1IQSxPQXVDQztlQXZDdUJBOztJQUZYQyxZQUFZO2VBQVpBOztJQXNFR0MsNEJBQTRCO2VBQTVCQTs7SUEzQkFDLDZCQUE2QjtlQUE3QkE7O0lBMENBQyxvQkFBb0I7ZUFBcEJBOzs7K0RBcE1LO3FCQUVDO29CQUNLO3lCQUNNO3lCQUNFO3FCQUMyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU5RSxJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsb0JBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUMsb0JBQzFCRSxvQkFBb0JGLElBQUFBLGdCQUFTLEVBQUM7QUFFcEMsSUFBQSxBQUFNRyw2QkFtR0gsQUFuR0g7Y0FBTUE7K0JBQUFBO2FBQUFBO2dDQUFBQTs7O2tCQUFBQTs7WUFDSkMsS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQkMsWUFBWSxFQUFFQyx1QkFBdUIsRUFBRUMsT0FBTztnQkFDL0QsSUFBSUMsdUJBQXVCO2dCQUUzQixJQUFNQyxVQUFVSixhQUFhSyxLQUFLLENBQUNKO2dCQUVuQyxJQUFJRyxTQUFTO29CQUNYRCx1QkFBdUI7Z0JBQ3pCO2dCQUVBLE9BQU9BO1lBQ1Q7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsc0JBQXNCQyxlQUFlLEVBQUVDLDBCQUEwQixFQUFFTixPQUFPO2dCQUN4RSxJQUFJTywwQkFBMEI7Z0JBRTlCLElBQU1DLFdBQVdILGdCQUFnQkksV0FBVyxJQUN0Q0Msc0JBQXNCSiwyQkFBMkJHLFdBQVcsSUFBSSxHQUFHO2dCQUV6RSxJQUFJRCxhQUFhRSxxQkFBcUI7b0JBQ3BDLE9BQVFGO3dCQUNOLEtBQUtHLDZCQUFrQjs0QkFBRTtnQ0FDdkIsSUFBTUMsZUFBZVAsaUJBQ2ZRLDBCQUEwQlAsNEJBQzFCUSx1QkFBdUIsSUFBSSxDQUFDQyxrQkFBa0IsQ0FBQ0gsY0FBY0MseUJBQXlCYjtnQ0FFNUZPLDBCQUEwQk8sc0JBQXNCLEdBQUc7Z0NBRW5EOzRCQUNGO3dCQUVBOzRCQUFTO2dDQUNQLElBQU1FLGFBQWFYLGdCQUFnQlksYUFBYSxJQUMxQ0Msd0JBQXdCWiwyQkFBMkJXLGFBQWEsSUFDaEVFLFFBQVFILFlBQ1JJLG1CQUFtQkYsdUJBQ25CRyxnQkFBZ0IsSUFBSSxDQUFDQyxXQUFXLENBQUNILE9BQU9DLGtCQUFrQnBCO2dDQUVoRU8sMEJBQTBCYyxlQUFlLEdBQUc7Z0NBRTVDOzRCQUNGO29CQUNGO2dCQUNGO2dCQUVBLE9BQU9kO1lBQ1Q7OztZQUVBUSxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CSCxZQUFZLEVBQUVDLHVCQUF1QixFQUFFYixPQUFPO2dCQUMvRCxJQUFJYyx1QkFBdUI7Z0JBRTNCLElBQU1TLFdBQVc3QixjQUFja0I7Z0JBRS9CLElBQUlXLGFBQWEsTUFBTTtvQkFDckIsSUFBTUMsaUJBQWlCeEIsUUFBUXlCLFlBQVksQ0FBQ2I7b0JBRTVDWixRQUFRMEIsS0FBSyxDQUFDLEFBQUMsUUFBc0IsT0FBZkYsZ0JBQWUsNENBQTBDWjtnQkFDakYsT0FBTztvQkFDTCxJQUFNZSxXQUFXbkMsY0FBY29CLGVBQ3pCZ0Isc0JBQXNCcEMsY0FBY3FCLDBCQUNwQ2dCLHNCQUFzQm5DLGNBQWNtQjtvQkFFMUMsSUFBSSxPQUFPO29CQUNULEdBQUc7b0JBQ0wsT0FBTyxJQUFJZSx3QkFBd0IsTUFBTTt3QkFDdkMsSUFBTUUsT0FBT0gsVUFDUEksa0JBQWtCSCxxQkFDbEJJLGVBQWUsSUFBSSxDQUFDQyxVQUFVLENBQUNILE1BQU1DLGlCQUFpQi9CO3dCQUU1RGMsdUJBQXVCa0IsY0FBZSxHQUFHO29CQUMzQyxPQUFPLElBQUlILHdCQUF3QixNQUFNO3dCQUN2QyxJQUFNSyxRQUFRLEVBQUUsRUFDVkMsZUFBZWhELFdBQVd3QyxVQUFVTyxPQUFPbEM7d0JBRWpELElBQUltQyxjQUFjOzRCQUNoQixJQUFNQyxzQkFBc0JDLElBQUFBLDJCQUFvQixFQUFDUixzQkFDM0NTLFlBQVlDLElBQUFBLFlBQUssRUFBQ0wsUUFDbEJNLFdBQVdGLFdBQ1hHLGVBQWVELFNBQVNFLE9BQU8sSUFDL0JDLGtCQUFrQixBQUFDUCx3QkFBd0JRLDJCQUFnQixHQUN2Q0MsZ0JBQVUsR0FDUjdDLFFBQVE4QyxrQkFBa0IsQ0FBQ1Ysc0JBQ2pEVyxpQ0FBaUNQLFNBQVNRLG9CQUFvQixDQUFDTDs0QkFFckUsSUFBSUksZ0NBQWdDO2dDQUNsQyxJQUFNRSxhQUFhakQsUUFBUXlCLFlBQVksQ0FBQ0U7Z0NBRXhDM0IsUUFBUWtELEtBQUssQ0FBQyxBQUFDLFFBQXFDRCxPQUE5QlIsY0FBYSxtQkFBdUVMLE9BQXREYSxZQUFXLDZDQUErRCxPQUFwQmIscUJBQW9CLCtCQUE2QnhCO2dDQUUzSkUsdUJBQXVCOzRCQUN6Qjt3QkFDRjtvQkFDRjtnQkFDRjtnQkFFQSxPQUFPQTtZQUNUOzs7V0FoR0lsQjtFQUFxQnVELGlCQUFRO0FBbUc1QixJQUFNL0QsZUFBZSxJQUFJUTtBQUVqQixTQUFTVCxXQUFXd0MsUUFBUSxFQUFFTyxLQUFLLEVBQUVsQyxPQUFPO0lBQ3pELElBQUltQyxlQUFlO0lBRW5CLElBQU1jLGFBQWFqRCxRQUFReUIsWUFBWSxDQUFDRTtJQUV4QzNCLFFBQVFvRCxLQUFLLENBQUMsQUFBQyxrQkFBNEIsT0FBWEgsWUFBVyxjQUFZdEI7SUFFdkQsSUFBSSxDQUFDUSxjQUFjO1FBQ2pCLElBQU1rQixZQUFZLEVBQUUsRUFDZEMseUJBQXlCL0QscUJBQXFCb0MsVUFBVTBCLFdBQVdyRDtRQUV6RSxJQUFJc0Qsd0JBQXdCO1lBQzFCLElBQU1DLGdCQUFnQmhCLElBQUFBLFlBQUssRUFBQ2MsWUFDdEJHLFdBQVdELGVBQ1hFLE9BQU9ELFNBQVNFLE9BQU87WUFFN0J4QixNQUFNeUIsSUFBSSxDQUFDRjtZQUVYdEIsZUFBZTtRQUNqQjtJQUNGO0lBRUEsSUFBSSxDQUFDQSxjQUFjO1FBQ2pCLElBQU15QixrQ0FBa0N0RSw4QkFBOEJxQyxVQUFVTyxPQUFPbEM7UUFFdkYsSUFBSTRELGlDQUFpQztZQUNuQ3pCLGVBQWU7UUFDakI7SUFDRjtJQUVBLElBQUlBLGNBQWM7UUFDaEIsSUFBTUcsWUFBWUMsSUFBQUEsWUFBSyxFQUFDTCxRQUNsQnVCLFFBQU9uQixXQUNQdUIsV0FBV0osTUFBS2YsT0FBTztRQUU3QjFDLFFBQVFvRCxLQUFLLENBQUMsQUFBQyxpQkFBcURTLE9BQXJDWixZQUFXLDRCQUFtQyxPQUFUWSxVQUFTLE9BQUtsQztJQUNwRjtJQUVBLE9BQU9RO0FBQ1Q7QUFFTyxTQUFTN0MsOEJBQThCcUMsUUFBUSxFQUFFTyxLQUFLLEVBQUVsQyxPQUFPO0lBQ3BFLElBQUk0RCxrQ0FBa0M7SUFFdEMsSUFBTVgsYUFBYWpELFFBQVF5QixZQUFZLENBQUNFO0lBRXhDM0IsUUFBUWtELEtBQUssQ0FBQyxBQUFDLGtCQUE0QixPQUFYRCxZQUFXLG1DQUFpQ3RCO0lBRTVFLElBQU1tQyxlQUFlOUQsUUFBUStELGVBQWUsSUFDdENDLGNBQWNGLGFBQWFHLElBQUksQ0FBQyxTQUFDRDtRQUMvQixJQUFNRSxpQ0FBaUM3RSw2QkFBNkJzQyxVQUFVcUMsYUFBYWhFO1FBRTNGLElBQUlrRSxnQ0FBZ0M7WUFDbEMsT0FBTztRQUNUO0lBQ0YsTUFBTTtJQUVaLElBQUlGLGdCQUFnQixNQUFNO1FBQ3hCLElBQU1QLE9BQU9PLFlBQVlOLE9BQU87UUFFaEN4QixNQUFNeUIsSUFBSSxDQUFDRjtRQUVYRyxrQ0FBa0M7SUFDcEM7SUFFQSxPQUFPQTtBQUNUO0FBRU8sU0FBU3ZFLDZCQUE2QnNDLFFBQVEsRUFBRXFDLFdBQVcsRUFBRWhFLE9BQU87SUFDekUsSUFBTWlELGFBQWFqRCxRQUFReUIsWUFBWSxDQUFDRSxXQUNsQ3dDLG9CQUFvQkgsWUFBWUksU0FBUztJQUUvQ3BFLFFBQVFrRCxLQUFLLENBQUMsQUFBQyxrQkFBa0RpQixPQUFqQ2xCLFlBQVcsd0JBQXdDLE9BQWxCa0IsbUJBQWtCLG1CQUFpQnhDO0lBRXBHLElBQU1DLHNCQUFzQm9DLFlBQVlLLFdBQVcsSUFDN0NDLG1CQUFtQjNDLFVBQ25CNEMsbUJBQW1CM0MscUJBQ25CSSxlQUFlNUMsYUFBYWdCLHFCQUFxQixDQUFDa0Usa0JBQWtCQyxrQkFBa0J2RSxVQUN0RmtFLGlDQUFpQ2xDLGNBQWUsR0FBRztJQUV6RCxPQUFPa0M7QUFDVDtBQUVPLFNBQVMzRSxxQkFBcUJvQyxRQUFRLEVBQUUwQixTQUFTLEVBQUVyRCxPQUFPO0lBQy9ELElBQUlzRCx5QkFBeUI7SUFFN0IsSUFBTUwsYUFBYWpELFFBQVF5QixZQUFZLENBQUNFO0lBRXhDM0IsUUFBUWtELEtBQUssQ0FBQyxBQUFDLGtCQUE0QixPQUFYRCxZQUFXLDRCQUEwQnRCO0lBRXJFLElBQU02QyxlQUFlN0Usa0JBQWtCZ0M7SUFFdkMsSUFBSTZDLGlCQUFpQixNQUFNO1FBQ3pCLElBQU1DLGVBQWVDLElBQUFBLG1DQUE0QixFQUFDRixlQUM1Q0csa0JBQWtCM0UsUUFBUTRFLCtCQUErQixDQUFDSDtRQUVoRSxJQUFJRSxpQkFBaUI7WUFDbkIsSUFBTW5CLFdBQVd4RCxRQUFRNkUsMEJBQTBCLENBQUNKO1lBRXBEcEIsVUFBVU0sSUFBSSxDQUFDSDtZQUVmRix5QkFBeUI7UUFDM0I7SUFDRjtJQUVBLE9BQU9BO0FBQ1QifQ==
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHRlcm1Ob2Rlc1ZlcmlmaWVyIGZyb20gXCIuLi92ZXJpZmllci9ub2Rlcy90ZXJtXCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlIVwiKTtcblxuZnVuY3Rpb24gdmVyaWZ5VGVybSh0ZXJtTm9kZSwgdHlwZXMsIGNvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVmVyaWZpZWQ7XG5cbiAgY29uc3QgdGVybVN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCwgdGVybU5vZGUpO1xuXG4gIGNvbnN0IHZlcmlmeVRlcm1GdW5jdGlvbnMgPSBbXG4gICAgdmVyaWZ5VGVybUFzU3RhbmRhbG9uZVZhcmlhYmxlLFxuICAgIHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzXG4gIF07XG5cbiAgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybUZ1bmN0aW9ucy5zb21lKCh2ZXJpZnlUZXJtRnVuY3Rpb24pID0+IHtcbiAgICBjb25zdCB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtRnVuY3Rpb24odGVybU5vZGUsIHR5cGVzLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uYCwgdGVybU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZDtcbn1cblxuT2JqZWN0LmFzc2lnbih0ZXJtTm9kZXNWZXJpZmllciwge1xuICB2ZXJpZnlUZXJtXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdmVyaWZ5VGVybTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnM7XG5cbiAgY29uc3QgY29uc3RydWN0b3JzID0gY29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKTtcblxuICB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzLnNvbWUoKGNvbnN0cnVjdG9yKSA9PiB7XG4gICAgY29uc3QgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yID0gdmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgdHlwZXMsIGNvbnN0cnVjdG9yLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBpZiAodGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5VGVybUFzVmFyaWFibGUodGVybU5vZGUsIHZhcmlhYmxlcywgY29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgICBjb25zdCB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgdmFyaWFibGVQcmVzZW50ID0gY29udGV4dC5pc1ZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVOYW1lKHZhcmlhYmxlTmFtZSk7XG5cbiAgICBpZiAodmFyaWFibGVQcmVzZW50KSB7XG4gICAgICBsZXQgdmVyaWZpZWRBaGVhZDtcblxuICAgICAgY29uc3QgdmFyaWFibGUgPSBjb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lKHZhcmlhYmxlTmFtZSk7XG5cbiAgICAgIHZhcmlhYmxlcy5wdXNoKHZhcmlhYmxlKTtcblxuICAgICAgdmVyaWZpZWRBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG5cbiAgICAgIGlmICghdmVyaWZpZWRBaGVhZCkge1xuICAgICAgICB2YXJpYWJsZXMucG9wKCk7XG4gICAgICB9XG5cbiAgICAgIHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB2ZXJpZmllZEFoZWFkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAodGVybVZlcmlmaWVkQXNWYXJpYWJsZSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuYCwgdGVybU5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9yKHRlcm1Ob2RlLCB0eXBlcywgY29uc3RydWN0b3IsIGNvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3I7XG5cbiAgY29uc3QgdGVybVN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKSxcbiAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSBjb25zdHJ1Y3Rvci5nZXRTdHJpbmcoKTtcblxuICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFnYWluc3QgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgY29uc3RydWN0b3JUZXJtTm9kZSA9IGNvbnN0cnVjdG9yLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIG5vblRlcm1pbmFsTk5kZUEgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICBub25UZXJtaW5hbE5vZGVCID0gY29uc3RydWN0b3JUZXJtTm9kZSwgIC8vL1xuICAgICAgICBub2RlVmVyaWZpZWQgPSB0ZXJtTm9kZXNWZXJpZmllci52ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOTmRlQSwgbm9uVGVybWluYWxOb2RlQiwgY29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgIGxldCB2ZXJpZmllZEFoZWFkO1xuXG4gICAgICAgICAgY29uc3QgdHlwZSA9IGNvbnN0cnVjdG9yLmdldFR5cGUoKTtcblxuICAgICAgICAgIHR5cGVzLnB1c2godHlwZSk7XG5cbiAgICAgICAgICB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgICAgICAgIGlmICghdmVyaWZpZWRBaGVhZCkge1xuICAgICAgICAgICAgdHlwZXMucG9wKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgIH0pO1xuXG4gIHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvciA9IG5vZGVWZXJpZmllZDsgIC8vL1xuXG4gIGlmICh0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IpIHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYWdhaW5zdCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtQXNTdGFuZGFsb25lVmFyaWFibGUodGVybU5vZGUsIHR5cGVzLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkQXNTdGFuZGFsb25lVmFyaWFibGU7XG5cbiAgY29uc3QgdGVybVN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgc3RhbmRhbG9uZSB2YXJpYWJsZS4uLmAsIHRlcm1Ob2RlKTtcblxuICBjb25zdCB2YXJpYWJsZXMgPSBbXSxcbiAgICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB2YXJpYWJsZXMsIGNvbnRleHQsICgpID0+IHtcbiAgICAgICAgICBsZXQgdmVyaWZpZWRBaGVhZDtcblxuICAgICAgICAgIGNvbnN0IGZpcnN0VmFyaWFibGUgPSBmaXJzdCh2YXJpYWJsZXMpLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlID0gZmlyc3RWYXJpYWJsZSwgLy8vXG4gICAgICAgICAgICAgICAgdHlwZSA9IHZhcmlhYmxlLmdldFR5cGUoKTtcblxuICAgICAgICAgIHR5cGVzLnB1c2godHlwZSk7XG5cbiAgICAgICAgICB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgICAgICAgIGlmICghdmVyaWZpZWRBaGVhZCkge1xuICAgICAgICAgICAgdHlwZXMucG9wKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgIH0pO1xuXG4gIHRlcm1WZXJpZmllZEFzU3RhbmRhbG9uZVZhcmlhYmxlID0gdGVybVZlcmlmaWVkQXNWYXJpYWJsZTsgIC8vL1xuXG4gIGlmICh0ZXJtVmVyaWZpZWRBc1N0YW5kYWxvbmVWYXJpYWJsZSkge1xuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhcyBhIHN0YW5kYWxvbmUgdmFyaWFibGUuYCwgdGVybU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzU3RhbmRhbG9uZVZhcmlhYmxlO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzIiwidmVyaWZ5VGVybUFzVmFyaWFibGUiLCJ2YXJpYWJsZU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInZlcmlmeVRlcm0iLCJ0ZXJtTm9kZSIsInR5cGVzIiwiY29udGV4dCIsInZlcmlmeUFoZWFkIiwidGVybVZlcmlmaWVkIiwidGVybVN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidmVyaWZ5VGVybUZ1bmN0aW9ucyIsInZlcmlmeVRlcm1Bc1N0YW5kYWxvbmVWYXJpYWJsZSIsInNvbWUiLCJ2ZXJpZnlUZXJtRnVuY3Rpb24iLCJkZWJ1ZyIsIk9iamVjdCIsImFzc2lnbiIsInRlcm1Ob2Rlc1ZlcmlmaWVyIiwidGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9ycyIsImdldENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9yIiwidGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yIiwidmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvciIsInZhcmlhYmxlcyIsInRlcm1WZXJpZmllZEFzVmFyaWFibGUiLCJ2YXJpYWJsZU5vZGUiLCJ2YXJpYWJsZU5hbWUiLCJ2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlIiwidmFyaWFibGVQcmVzZW50IiwiaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTmFtZSIsInZlcmlmaWVkQWhlYWQiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lIiwicHVzaCIsInBvcCIsImNvbnN0cnVjdG9yU3RyaW5nIiwiZ2V0U3RyaW5nIiwiY29uc3RydWN0b3JUZXJtTm9kZSIsImdldFRlcm1Ob2RlIiwibm9uVGVybWluYWxOTmRlQSIsIm5vblRlcm1pbmFsTm9kZUIiLCJub2RlVmVyaWZpZWQiLCJ2ZXJpZnlOb25UZXJtaW5hbE5vZGUiLCJ0eXBlIiwiZ2V0VHlwZSIsInRlcm1WZXJpZmllZEFzU3RhbmRhbG9uZVZhcmlhYmxlIiwiZmlyc3RWYXJpYWJsZSIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUF3Q0EsT0FBMEI7ZUFBMUI7O0lBRWdCQSw2QkFBNkI7ZUFBN0JBOztJQWdCQUMsb0JBQW9CO2VBQXBCQTs7OzJEQXhEYztxQkFFUjtxQkFDa0M7Ozs7OztBQUV4RCxJQUFNQyxvQkFBb0JDLElBQUFBLGdCQUFTLEVBQUM7QUFFcEMsU0FBU0MsV0FBV0MsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsV0FBVztJQUN2RCxJQUFJQztJQUVKLElBQU1DLGFBQWFILFFBQVFJLFlBQVksQ0FBQ047SUFFeENFLFFBQVFLLEtBQUssQ0FBQyxBQUFDLGtCQUE0QixPQUFYRixZQUFXLGNBQVlMO0lBRXZELElBQU1RLHNCQUFzQjtRQUMxQkM7UUFDQWQ7S0FDRDtJQUVEUyxlQUFlSSxvQkFBb0JFLElBQUksQ0FBQyxTQUFDQztRQUN2QyxJQUFNUCxlQUFlTyxtQkFBbUJYLFVBQVVDLE9BQU9DLFNBQVNDO1FBRWxFLElBQUlDLGNBQWM7WUFDaEIsT0FBTztRQUNUO0lBQ0Y7SUFFQSxJQUFJQSxjQUFjO1FBQ2hCRixRQUFRVSxLQUFLLENBQUMsQUFBQyxvQkFBOEIsT0FBWFAsWUFBVyxZQUFVTDtJQUN6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