occam-verify-cli 0.0.972 → 0.0.974

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 (65) hide show
  1. package/lib/context/file.js +1 -8
  2. package/lib/resolve/complexSubstitutionAgainstSimpleSubstitution.js +76 -0
  3. package/lib/resolve/substitution.js +27 -0
  4. package/lib/resolve/substitutions.js +8 -70
  5. package/lib/substitution/statementForMetavariable.js +2 -2
  6. package/lib/substitution.js +8 -1
  7. package/lib/substitutions.js +19 -7
  8. package/lib/type.js +3 -3
  9. package/lib/unify/complexSubstitutionStatementWithSimpleSubstitutionStatement.js +26 -0
  10. package/lib/unify/qualifiedStatement.js +117 -0
  11. package/lib/unify/statementWithCombinator.js +29 -0
  12. package/lib/unify/statementWithCombinators.js +4 -14
  13. package/lib/unify/termWithBracketedConstructor.js +3 -3
  14. package/lib/unify/termWithConstructor.js +37 -0
  15. package/lib/unify/termWithConstructors.js +6 -33
  16. package/lib/unify/unqualifiedStatement.js +25 -0
  17. package/lib/verifier/statementAsCombinator.js +2 -2
  18. package/lib/verify/assertion/contained.js +2 -2
  19. package/lib/verify/assertion/defined.js +5 -3
  20. package/lib/verify/assertion/type.js +5 -3
  21. package/lib/verify/conclusion.js +2 -2
  22. package/lib/verify/consequent.js +2 -2
  23. package/lib/verify/declaration.js +3 -3
  24. package/lib/verify/equality.js +11 -7
  25. package/lib/verify/frame.js +2 -2
  26. package/lib/verify/judgement.js +36 -28
  27. package/lib/verify/premise.js +3 -3
  28. package/lib/verify/statement/qualified.js +3 -3
  29. package/lib/verify/statement/unqualified.js +9 -53
  30. package/lib/verify/statement.js +8 -47
  31. package/lib/verify/term.js +11 -5
  32. package/package.json +1 -1
  33. package/src/context/file.js +0 -6
  34. package/src/resolve/complexSubstitutionAgainstSimpleSubstitution.js +94 -0
  35. package/src/resolve/substitution.js +19 -0
  36. package/src/resolve/substitutions.js +9 -112
  37. package/src/substitution/statementForMetavariable.js +1 -1
  38. package/src/substitution.js +6 -0
  39. package/src/substitutions.js +17 -6
  40. package/src/type.js +3 -3
  41. package/src/unify/complexSubstitutionStatementWithSimpleSubstitutionStatement.js +18 -0
  42. package/src/unify/{statement/qualified.js → qualifiedStatement.js} +1 -1
  43. package/src/unify/statementWithCombinator.js +22 -0
  44. package/src/unify/statementWithCombinators.js +3 -20
  45. package/src/unify/termWithBracketedConstructor.js +1 -1
  46. package/src/unify/termWithConstructor.js +39 -0
  47. package/src/unify/termWithConstructors.js +1 -37
  48. package/src/unify/{statement/unqualified.js → unqualifiedStatement.js} +1 -1
  49. package/src/verifier/statementAsCombinator.js +2 -2
  50. package/src/verify/assertion/contained.js +1 -1
  51. package/src/verify/assertion/defined.js +7 -2
  52. package/src/verify/assertion/type.js +6 -4
  53. package/src/verify/conclusion.js +1 -1
  54. package/src/verify/consequent.js +1 -1
  55. package/src/verify/declaration.js +2 -2
  56. package/src/verify/equality.js +12 -8
  57. package/src/verify/frame.js +1 -1
  58. package/src/verify/judgement.js +57 -49
  59. package/src/verify/premise.js +3 -3
  60. package/src/verify/statement/qualified.js +1 -1
  61. package/src/verify/statement/unqualified.js +8 -13
  62. package/src/verify/statement.js +3 -56
  63. package/src/verify/term.js +13 -6
  64. package/lib/unify/statement/qualified.js +0 -117
  65. package/lib/unify/statement/unqualified.js +0 -25
@@ -18,7 +18,6 @@ const frameNodeQuery = nodeQuery("/statement/frame!"),
18
18
  equalityNodeQuery = nodeQuery("/statement/equality!"),
19
19
  judgementNodeQuery = nodeQuery("/statement/judgement!"),
20
20
  declarationNodeQuery = nodeQuery("/statement/declaration!"),
21
- substitutionNodeQuery = nodeQuery("/statement/substitution!"),
22
21
  metavariableNodeQuery = nodeQuery("/statement/metavariable!"),
23
22
  typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!"),
24
23
  definedAssertionNodeQuery = nodeQuery("/statement/definedAssertion!"),
@@ -26,15 +25,15 @@ const frameNodeQuery = nodeQuery("/statement/frame!"),
26
25
  containedAssertionNodeQuery = nodeQuery("/statement/containedAssertion!");
27
26
 
28
27
  const unifyStatementFunctions = [
29
- unifyStatementWithCombinators,
30
- unifyStatementWithBracketedCombinator
28
+ unifyStatementWithBracketedCombinator,
29
+ unifyStatementWithCombinators
31
30
  ],
32
31
  verifyStatementFunctions = [
32
+ verifyStatementAsMetavariable,
33
33
  verifyStatementAsEquality,
34
34
  verifyStatementAsFrame,
35
35
  verifyStatementAsJudgement,
36
36
  verifyStatementAsDeclaration,
37
- verifyStatementAsSubstitution,
38
37
  verifyStatementAsTypeAssertion,
39
38
  verifyStatementAsDefinedAssertion,
40
39
  verifyStatementAsSubproofAssertion,
@@ -48,12 +47,6 @@ function verifyStatement(statementNode, assignments, stated, localContext) {
48
47
 
49
48
  localContext.trace(`Verifying the '${statementString}' statement...`, statementNode);
50
49
 
51
- if (!statementVerified) {
52
- const statementVerifiedAsMetavariable = verifyStatementAsMetavariable(statementNode, assignments, stated, localContext);
53
-
54
- statementVerified = statementVerifiedAsMetavariable; ///
55
- }
56
-
57
50
  if (!statementVerified) {
58
51
  const statementUnified = unifyStatementFunctions.some((unifyStatementFunction) => {
59
52
  const statementUnified = unifyStatementFunction(statementNode, assignments, stated, localContext);
@@ -89,30 +82,6 @@ Object.assign(shim, {
89
82
 
90
83
  export default verifyStatement;
91
84
 
92
- export function verifyStatementTrivially(statementNode, localContext) {
93
- let statementVerifiedTrivially = false;
94
-
95
- const statementString = localContext.nodeAsString(statementNode);
96
-
97
- localContext.trace(`Verifying the '${statementString}' statement trivially...`, statementNode);
98
-
99
- const equalityNode = equalityNodeQuery(statementNode),
100
- judgementNode = judgementNodeQuery(statementNode),
101
- typeAssertionNode = typeAssertionNodeQuery(statementNode),
102
- definedAssertionNode = definedAssertionNodeQuery(statementNode),
103
- containedAssertionNode = containedAssertionNodeQuery(statementNode);
104
-
105
- if ((equalityNode !== null) || (judgementNode !== null) || (typeAssertionNode !== null) || (definedAssertionNode !== null) || (containedAssertionNode !== null)) {
106
- statementVerifiedTrivially = true;
107
- }
108
-
109
- if (statementVerifiedTrivially) {
110
- localContext.debug(`...verified the '${statementString}' statement trivially.`, statementNode);
111
- }
112
-
113
- return statementVerifiedTrivially;
114
- }
115
-
116
85
  function verifyStatementAsMetavariable(statementNode, assignments, stated, localContext) {
117
86
  let statementVerifiedAsMetavariable = false;
118
87
 
@@ -223,28 +192,6 @@ function verifyStatementAsDeclaration(statementNode, assignments, stated, localC
223
192
  return statementVerifiedAsDeclaration;
224
193
  }
225
194
 
226
- function verifyStatementAsSubstitution(statementNode, assignments, stated, localContext) {
227
- let statementVerifiedAsSubstitution = false;
228
-
229
- const substitutionNode = substitutionNodeQuery(statementNode);
230
-
231
- if (substitutionNode !== null) {
232
- const statementString = localContext.nodeAsString(statementNode);
233
-
234
- localContext.trace(`Verifying the '${statementString}' statement as a substitution...`, statementNode);
235
-
236
- const substitutionVerified = verifySubstitution(substitutionNode, assignments, stated, localContext);
237
-
238
- statementVerifiedAsSubstitution = substitutionVerified; ///
239
-
240
- if (statementVerifiedAsSubstitution) {
241
- localContext.debug(`...verified the '${statementString}' statement as a substitution.`, statementNode);
242
- }
243
- }
244
-
245
- return statementVerifiedAsSubstitution;
246
- }
247
-
248
195
  function verifyStatementAsTypeAssertion(statementNode, assignments, stated, localContext) {
249
196
  let statementVerifiedAsTypeAssertion = false;
250
197
 
@@ -13,6 +13,9 @@ const variableNodeQuery = nodeQuery("/term/variable!");
13
13
  const unifyTermFunctions = [
14
14
  unifyTermWithBracketedConstructor,
15
15
  unifyTermWithConstructors,
16
+ ],
17
+ verifyTermFunctions = [
18
+ verifyTermAsVariable
16
19
  ];
17
20
 
18
21
  function verifyTerm(termNode, terms, localContext, verifyAhead) {
@@ -22,12 +25,6 @@ function verifyTerm(termNode, terms, localContext, verifyAhead) {
22
25
 
23
26
  localContext.trace(`Verifying the '${termString}' term...`, termNode);
24
27
 
25
- if (!termVerified) {
26
- const termVerifiedAsVariable = verifyTermAsVariable(termNode, terms, localContext, verifyAhead);
27
-
28
- termVerified = termVerifiedAsVariable; ///
29
- }
30
-
31
28
  if (!termVerified) {
32
29
  const termUnified = unifyTermFunctions.some((unifyTermFunction) => {
33
30
  const termUnified = unifyTermFunction(termNode, terms, localContext, verifyAhead);
@@ -40,6 +37,16 @@ function verifyTerm(termNode, terms, localContext, verifyAhead) {
40
37
  termVerified = termUnified; ///
41
38
  }
42
39
 
40
+ if (!termVerified) {
41
+ termVerified = verifyTermFunctions.some((verifyTermFunction) => {
42
+ const termVerified = verifyTermFunction(termNode, terms, localContext, verifyAhead);
43
+
44
+ if (termVerified) {
45
+ return true;
46
+ }
47
+ });
48
+ }
49
+
43
50
  if (termVerified) {
44
51
  localContext.debug(`...verified the '${termString}' term.`, termNode);
45
52
  }
@@ -1,117 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return unifyQualifiedStatement;
9
- }
10
- });
11
- var _query = require("../../utilities/query");
12
- var statementNodeQuery = (0, _query.nodeQuery)("/qualifiedStatement/statement!"), metavariableNodeQuery = (0, _query.nodeQuery)("/qualifiedStatement/reference/metavariable!");
13
- var unifyQualifiedStatementFunctions = [
14
- unifyQualifiedStatementAWithRule,
15
- unifyQualifiedStatementAWithAxiom,
16
- unifyQualifiedStatementAWithLemma,
17
- unifyQualifiedStatementAWithTheorem,
18
- unifyQualifiedStatementAWithConjecture,
19
- unifyQualifiedStatementAWithReference
20
- ];
21
- function unifyQualifiedStatement(qualifiedStatementNode, substitutions, localContext) {
22
- var qualifiedStatementUnified;
23
- var qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
24
- localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement..."), qualifiedStatementNode);
25
- qualifiedStatementUnified = unifyQualifiedStatementFunctions.some(function(unifyQualifiedStatementFunction) {
26
- var qualifiedStatementUnified = unifyQualifiedStatementFunction(qualifiedStatementNode, substitutions, localContext);
27
- return qualifiedStatementUnified;
28
- });
29
- if (qualifiedStatementUnified) {
30
- localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement."), qualifiedStatementNode);
31
- }
32
- return qualifiedStatementUnified;
33
- }
34
- function unifyQualifiedStatementAWithRule(qualifiedStatementNode, substitutions, localContext) {
35
- var qualifiedStatementUnifiedWithRule = false;
36
- var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), rule = localContext.findRuleByMetavariableNode(metavariableNode);
37
- if (rule !== null) {
38
- var statementNode = statementNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
39
- localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' rule..."), qualifiedStatementNode);
40
- var statementUnified = rule.unifyStatement(statementNode, localContext);
41
- qualifiedStatementUnifiedWithRule = statementUnified; ///
42
- if (qualifiedStatementUnifiedWithRule) {
43
- localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' rule."), qualifiedStatementNode);
44
- }
45
- }
46
- return qualifiedStatementUnifiedWithRule;
47
- }
48
- function unifyQualifiedStatementAWithAxiom(qualifiedStatementNode, substitutions, localContext) {
49
- var qualifiedStatementUnifiedWithAxiom = false;
50
- var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), axiom = localContext.findAxiomByMetavariableNode(metavariableNode);
51
- if (axiom !== null) {
52
- var statementNode = statementNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
53
- localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' axiom..."), qualifiedStatementNode);
54
- var statementUnified = axiom.unifyStatement(statementNode, localContext);
55
- qualifiedStatementUnifiedWithAxiom = statementUnified; ///
56
- if (qualifiedStatementUnifiedWithAxiom) {
57
- localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' axiom."), qualifiedStatementNode);
58
- }
59
- }
60
- return qualifiedStatementUnifiedWithAxiom;
61
- }
62
- function unifyQualifiedStatementAWithLemma(qualifiedStatementNode, substitutions, localContext) {
63
- var qualifiedStatementUnifiedWithLemma = false;
64
- var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), lemma = localContext.findLemmaByMetavariableNode(metavariableNode);
65
- if (lemma !== null) {
66
- var statementNode = statementNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
67
- localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' lemma..."), qualifiedStatementNode);
68
- var statementUnified = lemma.unifyStatement(statementNode, localContext);
69
- qualifiedStatementUnifiedWithLemma = statementUnified; ///
70
- if (qualifiedStatementUnifiedWithLemma) {
71
- localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' lemma."), qualifiedStatementNode);
72
- }
73
- }
74
- return qualifiedStatementUnifiedWithLemma;
75
- }
76
- function unifyQualifiedStatementAWithTheorem(qualifiedStatementNode, substitutions, localContext) {
77
- var qualifiedStatementUnifiedWithTheorem = false;
78
- var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), theorem = localContext.findTheoremByMetavariableNode(metavariableNode);
79
- if (theorem !== null) {
80
- var statementNode = statementNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
81
- localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' theorem..."), qualifiedStatementNode);
82
- var statementUnified = theorem.unifyStatement(statementNode, localContext);
83
- qualifiedStatementUnifiedWithTheorem = statementUnified; ///
84
- if (qualifiedStatementUnifiedWithTheorem) {
85
- localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' theorem."), qualifiedStatementNode);
86
- }
87
- }
88
- return qualifiedStatementUnifiedWithTheorem;
89
- }
90
- function unifyQualifiedStatementAWithConjecture(qualifiedStatementNode, substitutions, localContext) {
91
- var qualifiedStatementUnifiedWithConjecture = false;
92
- var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), conjecture = localContext.findConjectureByMetavariableNode(metavariableNode);
93
- if (conjecture !== null) {
94
- var statementNode = statementNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
95
- localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' conjecture..."), qualifiedStatementNode);
96
- var statementUnified = conjecture.unifyStatement(statementNode, localContext);
97
- qualifiedStatementUnifiedWithConjecture = statementUnified; ///
98
- if (qualifiedStatementUnifiedWithConjecture) {
99
- localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' conjecture."), qualifiedStatementNode);
100
- }
101
- }
102
- return qualifiedStatementUnifiedWithConjecture;
103
- }
104
- function unifyQualifiedStatementAWithReference(qualifiedStatementNode, substitutions, localContext) {
105
- var qualifiedStatementUnifiedWithReference = false;
106
- var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), metavariablePresent = localContext.isMetavariablePresentByMetavariableNode(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
107
- localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' reference..."), qualifiedStatementNode);
108
- if (metavariablePresent) {
109
- debugger;
110
- }
111
- if (qualifiedStatementUnifiedWithReference) {
112
- localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' reference."), qualifiedStatementNode);
113
- }
114
- return qualifiedStatementUnifiedWithReference;
115
- }
116
-
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91bmlmeS9zdGF0ZW1lbnQvcXVhbGlmaWVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50IVwiKSxcbiAgICAgIG1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvcmVmZXJlbmNlL21ldGF2YXJpYWJsZSFcIik7XG5cbmNvbnN0IHVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICB1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoUnVsZSxcbiAgdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aEF4aW9tLFxuICB1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoTGVtbWEsXG4gIHVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhUaGVvcmVtLFxuICB1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoQ29uamVjdHVyZSxcbiAgdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFJlZmVyZW5jZVxuXTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnQocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkO1xuXG4gIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudC4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWQgPSB1bmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucy5zb21lKCh1bmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZCA9IHVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KTtcblxuICAgIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkO1xuICB9KTtcblxuICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZCkge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudC5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkO1xufVxuXG5mdW5jdGlvbiB1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoUnVsZShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoUnVsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGVOb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgIHJ1bGUgPSBsb2NhbENvbnRleHQuZmluZFJ1bGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgaWYgKHJ1bGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgcnVsZS4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50VW5pZmllZCA9IHJ1bGUudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoUnVsZSA9IHN0YXRlbWVudFVuaWZpZWQ7ICAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJ1bGUpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBydWxlLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJ1bGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhBeGlvbShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQXhpb20gPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICBheGlvbSA9IGxvY2FsQ29udGV4dC5maW5kQXhpb21CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgaWYgKGF4aW9tICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGF4aW9tLi4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRVbmlmaWVkID0gYXhpb20udW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQXhpb20gPSBzdGF0ZW1lbnRVbmlmaWVkOyAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aEF4aW9tKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgYXhpb20uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQXhpb207XG59XG5cbmZ1bmN0aW9uIHVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhMZW1tYShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoTGVtbWEgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICBsZW1tYSA9IGxvY2FsQ29udGV4dC5maW5kTGVtbWFCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgaWYgKGxlbW1hICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGxlbW1hLi4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRVbmlmaWVkID0gbGVtbWEudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoTGVtbWEgPSBzdGF0ZW1lbnRVbmlmaWVkOyAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aExlbW1hKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbGVtbWEuYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoTGVtbWE7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhUaGVvcmVtKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhUaGVvcmVtID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgdGhlb3JlbSA9IGxvY2FsQ29udGV4dC5maW5kVGhlb3JlbUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAodGhlb3JlbSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyB0aGVvcmVtLi4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRVbmlmaWVkID0gdGhlb3JlbS51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhUaGVvcmVtID0gc3RhdGVtZW50VW5pZmllZDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhUaGVvcmVtKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgdGhlb3JlbS5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhUaGVvcmVtO1xufVxuXG5mdW5jdGlvbiB1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoQ29uamVjdHVyZShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQ29uamVjdHVyZSA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGVOb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgIGNvbmplY3R1cmUgPSBsb2NhbENvbnRleHQuZmluZENvbmplY3R1cmVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgaWYgKGNvbmplY3R1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgY29uamVjdHVyZS4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50VW5pZmllZCA9IGNvbmplY3R1cmUudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQ29uamVjdHVyZSA9IHN0YXRlbWVudFVuaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQ29uamVjdHVyZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGNvbmplY3R1cmUuYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQ29uamVjdHVyZTtcbn1cblxuZnVuY3Rpb24gdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFJlZmVyZW5jZShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoUmVmZXJlbmNlID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGxvY2FsQ29udGV4dC5pc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyByZWZlcmVuY2UuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBpZiAobWV0YXZhcmlhYmxlUHJlc2VudCkge1xuXG4gICAgZGVidWdnZXJcblxuICB9XG5cbiAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoUmVmZXJlbmNlKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHJlZmVyZW5jZS5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJlZmVyZW5jZTtcbn1cbiJdLCJuYW1lcyI6WyJ1bmlmeVF1YWxpZmllZFN0YXRlbWVudCIsInN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsIm1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsInVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zIiwidW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFJ1bGUiLCJ1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoQXhpb20iLCJ1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoTGVtbWEiLCJ1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoVGhlb3JlbSIsInVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhDb25qZWN0dXJlIiwidW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFJlZmVyZW5jZSIsInF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJzdWJzdGl0dXRpb25zIiwibG9jYWxDb250ZXh0IiwicXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZCIsInF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwic29tZSIsInVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24iLCJkZWJ1ZyIsInF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoUnVsZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJydWxlIiwiZmluZFJ1bGVCeU1ldGF2YXJpYWJsZU5vZGUiLCJzdGF0ZW1lbnROb2RlIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwic3RhdGVtZW50VW5pZmllZCIsInVuaWZ5U3RhdGVtZW50IiwicXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhBeGlvbSIsImF4aW9tIiwiZmluZEF4aW9tQnlNZXRhdmFyaWFibGVOb2RlIiwicXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhMZW1tYSIsImxlbW1hIiwiZmluZExlbW1hQnlNZXRhdmFyaWFibGVOb2RlIiwicXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhUaGVvcmVtIiwidGhlb3JlbSIsImZpbmRUaGVvcmVtQnlNZXRhdmFyaWFibGVOb2RlIiwicXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhDb25qZWN0dXJlIiwiY29uamVjdHVyZSIsImZpbmRDb25qZWN0dXJlQnlNZXRhdmFyaWFibGVOb2RlIiwicXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSZWZlcmVuY2UiLCJtZXRhdmFyaWFibGVQcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFnQkE7OztlQUF3QkE7OztxQkFkRTtBQUUxQixJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUMsbUNBQy9CQyx3QkFBd0JELElBQUFBLGdCQUFTLEVBQUM7QUFFeEMsSUFBTUUsbUNBQW1DO0lBQ3ZDQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztDQUNEO0FBRWMsU0FBU1Ysd0JBQXdCVyxzQkFBc0IsRUFBRUMsYUFBYSxFQUFFQyxZQUFZO0lBQ2pHLElBQUlDO0lBRUosSUFBTUMsMkJBQTJCRixhQUFhRyxZQUFZLENBQUNMO0lBRTNERSxhQUFhSSxLQUFLLENBQUMsQUFBQyxpQkFBeUMsT0FBekJGLDBCQUF5Qiw2QkFBMkJKO0lBRXhGRyw0QkFBNEJWLGlDQUFpQ2MsSUFBSSxDQUFDLFNBQUNDO1FBQ2pFLElBQU1MLDRCQUE0QkssZ0NBQWdDUix3QkFBd0JDLGVBQWVDO1FBRXpHLE9BQU9DO0lBQ1Q7SUFFQSxJQUFJQSwyQkFBMkI7UUFDN0JELGFBQWFPLEtBQUssQ0FBQyxBQUFDLG1CQUEyQyxPQUF6QkwsMEJBQXlCLDJCQUF5Qko7SUFDMUY7SUFFQSxPQUFPRztB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
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return unifyUnqualifiedStatement;
9
- }
10
- });
11
- var _query = require("../../utilities/query");
12
- var statementNodeQuery = (0, _query.nodeQuery)("/unqualifiedStatement/statement!");
13
- function unifyUnqualifiedStatement(unqualifiedStatementNode, localContext) {
14
- var unqualifiedStatementUnified;
15
- var unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
16
- localContext.trace("Unifying the '".concat(unqualifiedStatementString, "' unqualified statement..."), unqualifiedStatementNode);
17
- var statementNode = statementNodeQuery(unqualifiedStatementNode), statementUnified = localContext.unifyStatement(statementNode, localContext);
18
- unqualifiedStatementUnified = statementUnified; ///
19
- if (unqualifiedStatementUnified) {
20
- localContext.debug("...unified the '".concat(unqualifiedStatementString, "' unqualified statement."), unqualifiedStatementNode);
21
- }
22
- return unqualifiedStatementUnified;
23
- }
24
-
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91bmlmeS9zdGF0ZW1lbnQvdW5xdWFsaWZpZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3Qgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3VucXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudCFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVuaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHVucXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZDtcblxuICBjb25zdCB1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHVucXVhbGlmaWVkIHN0YXRlbWVudC4uLmAsIHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeSh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICBzdGF0ZW1lbnRVbmlmaWVkID0gbG9jYWxDb250ZXh0LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkID0gc3RhdGVtZW50VW5pZmllZDsgIC8vL1xuXG4gIGlmICh1bnF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWQpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3VucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgdW5xdWFsaWZpZWQgc3RhdGVtZW50LmAsIHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gdW5xdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInVuaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJsb2NhbENvbnRleHQiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWQiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFVuaWZpZWQiLCJ1bmlmeVN0YXRlbWVudCIsImRlYnVnIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQXdCQTs7O3FCQUpFO0FBRTFCLElBQU1DLHFCQUFxQkMsSUFBQUEsZ0JBQVMsRUFBQztBQUV0QixTQUFTRiwwQkFBMEJHLHdCQUF3QixFQUFFQyxZQUFZO0lBQ3RGLElBQUlDO0lBRUosSUFBTUMsNkJBQTZCRixhQUFhRyxZQUFZLENBQUNKO0lBRTdEQyxhQUFhSSxLQUFLLENBQUMsQUFBQyxpQkFBMkMsT0FBM0JGLDRCQUEyQiwrQkFBNkJIO0lBRTVGLElBQU1NLGdCQUFnQlIsbUJBQW1CRSwyQkFDbkNPLG1CQUFtQk4sYUFBYU8sY0FBYyxDQUFDRixlQUFlTDtJQUVwRUMsOEJBQThCSyxrQkFBbUIsR0FBRztJQUVwRCxJQUFJTCw2QkFBNkI7UUFDL0JELGFBQWFRLEtBQUssQ0FBQyxBQUFDLG1CQUE2QyxPQUEzQk4sNEJBQTJCLDZCQUEyQkg7SUFDOUY7SUFFQSxPQUFPRTtBQUNUIn0=