occam-verify-cli 0.0.469 → 0.0.471

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 (45) hide show
  1. package/lib/context/file.js +9 -9
  2. package/lib/context/metaproof.js +30 -31
  3. package/lib/context/proof.js +30 -24
  4. package/lib/metaSubstitution.js +4 -4
  5. package/lib/rule.js +15 -19
  6. package/lib/step/metaproof.js +114 -0
  7. package/lib/step/proof.js +68 -0
  8. package/lib/utilities/array.js +2 -5
  9. package/lib/utilities/metaAssertion.js +117 -0
  10. package/lib/utilities/node.js +52 -0
  11. package/lib/verify/antecedent.js +4 -4
  12. package/lib/verify/derivation.js +13 -13
  13. package/lib/verify/equality.js +18 -5
  14. package/lib/verify/metaDerivation.js +13 -13
  15. package/lib/verify/metaproof.js +13 -51
  16. package/lib/verify/metastatement/unqualified.js +2 -3
  17. package/lib/verify/premiseOrPremises.js +4 -4
  18. package/lib/verify/proof.js +14 -62
  19. package/lib/verify/statement/unqualified.js +2 -3
  20. package/package.json +1 -1
  21. package/src/context/file.js +6 -6
  22. package/src/context/metaproof.js +28 -31
  23. package/src/context/proof.js +29 -26
  24. package/src/metaSubstitution.js +1 -1
  25. package/src/rule.js +19 -26
  26. package/src/step/metaproof.js +100 -0
  27. package/src/step/proof.js +30 -0
  28. package/src/utilities/array.js +1 -1
  29. package/src/utilities/metaAssertion.js +176 -0
  30. package/src/utilities/node.js +72 -0
  31. package/src/verify/antecedent.js +3 -3
  32. package/src/verify/derivation.js +14 -10
  33. package/src/verify/equality.js +29 -11
  34. package/src/verify/metaDerivation.js +14 -10
  35. package/src/verify/metaproof.js +26 -91
  36. package/src/verify/metastatement/unqualified.js +1 -3
  37. package/src/verify/premiseOrPremises.js +3 -3
  38. package/src/verify/proof.js +23 -97
  39. package/src/verify/statement/unqualified.js +1 -4
  40. package/lib/assertion.js +0 -147
  41. package/lib/metaAssertion.js +0 -200
  42. package/lib/utilities/metastatement.js +0 -45
  43. package/src/assertion.js +0 -150
  44. package/src/metaAssertion.js +0 -245
  45. package/src/utilities/metastatement.js +0 -50
@@ -1,19 +1,19 @@
1
1
  "use strict";
2
2
 
3
- import ProofContext from "../context/proof";
3
+ import ProofStep from "../step/proof";
4
4
  import verifyDerivation from "../verify/derivation";
5
- import verifyQualifiedStatement from "../verify/statement/qualified";
5
+ import verifyQualifiedStatement from "./statement/qualified";
6
6
 
7
+ import { matchNode } from "../utilities/node";
7
8
  import { nodeQuery } from "../utilities/query";
8
9
 
9
- const derivationNodeQuery = nodeQuery("/proof/derivation!"),
10
+ const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!"),
11
+ derivationNodeQuery = nodeQuery("/proof/derivation!"),
10
12
  qualifiedStatementNodeQuery = nodeQuery("/proof/qualifiedStatement!");
11
13
 
12
- export default function verifyProof(proofNode, fileContext) {
14
+ export default function verifyProof(proofNode, conclusion, proofContext) {
13
15
  let proofVerified = false;
14
16
 
15
- const proofContext = ProofContext.fromFileContext(fileContext);
16
-
17
17
  proofContext.begin(proofNode);
18
18
 
19
19
  const derivationNode = derivationNodeQuery(proofNode),
@@ -38,104 +38,30 @@ export default function verifyProof(proofNode, fileContext) {
38
38
  derived = false;
39
39
 
40
40
  proofContext.setDerived(derived);
41
- }
42
-
43
- // if (derivationVerified) {
44
- // const qualifiedStatementNode = qualifiedStatementNodeQuery(proofNode),
45
- // qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, proofContext);
46
- //
47
- // if (qualifiedStatementVerified) {
48
- // const statementNode = conclusion.getStatementNode(),
49
- // proofStatementNode = proofStatementNodeQuery(proofNode),
50
- // proofStatementNodeMatches = matchProofStatementNode(proofStatementNode, statementNode);
51
- //
52
- // proofVerified = proofStatementNodeMatches; ///
53
- // }
54
- // }
55
41
 
56
- proofVerified ?
57
- proofContext.complete(proofNode) :
58
- proofContext.complete(proofNode);
59
-
60
- return proofVerified;
61
- }
42
+ if (qualifiedStatementVerified) {
43
+ const statementNode = statementNodeQuery(qualifiedStatementNode),
44
+ proofStep = ProofStep.fromStatementNode(statementNode);
62
45
 
63
- function matchProofStatementNode(proofStatementNode, statementNode) {
64
- const proofNonTerminalNode = proofStatementNode, ///
65
- nonTerminalNode = statementNode, ///
66
- proofNonTerminalNodeMatches = matchProofNonTerminalNode(proofNonTerminalNode, nonTerminalNode),
67
- proofStatementNodeMatches = proofNonTerminalNodeMatches; ///
68
-
69
- return proofStatementNodeMatches;
70
- }
71
-
72
- function matchProofNode(proofNode, node) {
73
- let proofNodeMatches = false;
74
-
75
- const nodeTerminalNode = node.isTerminalNode(),
76
- ruleNodeTerminalNode = proofNode.isTerminalNode();
77
-
78
- if (nodeTerminalNode === ruleNodeTerminalNode) {
79
- if (nodeTerminalNode) {
80
- const terminalNode = node, ///
81
- proofTerminalNode = proofNode, ///
82
- proofTerminalNodeMatches = matchProofTerminalNode(proofTerminalNode, terminalNode);
83
-
84
- proofNodeMatches = proofTerminalNodeMatches; ///
85
- } else {
86
- const nonTerminalNode = node, ///
87
- proofNonTerminalNode = proofNode, ///
88
- proofNonTerminalNodeMatches = matchProofNonTerminalNode(proofNonTerminalNode, nonTerminalNode);
89
-
90
- proofNodeMatches = proofNonTerminalNodeMatches; ///
46
+ proofContext.addProofStep(proofStep);
91
47
  }
92
48
  }
93
49
 
94
- return proofNodeMatches;
95
- }
50
+ if (derivationVerified || qualifiedStatementVerified) {
51
+ const lastProofStep = proofContext.getLastProofStep(),
52
+ proofStep = lastProofStep, ///
53
+ statementNode = proofStep.getStatementNode(),
54
+ conclusionStatementNode = conclusion.getStatementNode(),
55
+ nodeA = statementNode, ///
56
+ nodeB = conclusionStatementNode, ///
57
+ nodeMatches = matchNode(nodeA, nodeB);
96
58
 
97
- function matchProofNodes(proofNodes, nodes) {
98
- let proofNodesMatches = false;
99
-
100
- const nodesLength = nodes.length,
101
- proofNodesLength = proofNodes.length;
102
-
103
- if (nodesLength === proofNodesLength) {
104
- proofNodesMatches = nodes.every((node, index) => {
105
- const proofNode = proofNodes[index],
106
- proofNodeMatches = matchProofNode(proofNode, node);
107
-
108
- if (proofNodeMatches) {
109
- return true;
110
- }
111
- })
59
+ proofVerified = nodeMatches; ///
112
60
  }
113
61
 
114
- return proofNodesMatches;
115
- }
116
-
117
- function matchProofTerminalNode(proofTerminalNode, terminalNode) {
118
- const matches = proofTerminalNode.match(terminalNode),
119
- proofTerminalNodeMatches = matches; ///
120
-
121
- return proofTerminalNodeMatches;
122
- }
123
-
124
- function matchProofNonTerminalNode(proofNonTerminalNode, nonTerminalNode) {
125
- let proofNonTerminalNodeMatches = false;
126
-
127
- const ruleName = nonTerminalNode.getRuleName(),
128
- proofRuleName = proofNonTerminalNode.getRuleName(); ///
129
-
130
- if (ruleName === proofRuleName) {
131
- const childNodes = nonTerminalNode.getChildNodes(),
132
- proofChildNodes = proofNonTerminalNode.getChildNodes(),
133
- nodes = childNodes, ///
134
- proofNodes = proofChildNodes, ///
135
- proofNodesMatches = matchProofNodes(proofNodes, nodes);
136
-
137
- proofNonTerminalNodeMatches = proofNodesMatches; ///
138
- }
62
+ proofVerified ?
63
+ proofContext.complete(proofNode) :
64
+ proofContext.complete(proofNode);
139
65
 
140
- return proofNonTerminalNodeMatches;
66
+ return proofVerified;
141
67
  }
@@ -2,8 +2,6 @@
2
2
 
3
3
  import verifyStatement from "../../verify/statement";
4
4
 
5
- import Assertion from "../../assertion";
6
-
7
5
  import { nodeQuery } from "../../utilities/query";
8
6
  import { nodeAsString } from "../../utilities/string";
9
7
 
@@ -27,8 +25,7 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, pro
27
25
  const derived = proofContext.isDerived();
28
26
 
29
27
  if (derived) {
30
- const assertion = Assertion.fromStatementNode(statementNode),
31
- assertionMatches = proofContext.matchAssertion(assertion);
28
+ const assertionMatches = proofContext.matchStatement(statementNode);
32
29
 
33
30
  unqualifiedStatementVerified = assertionMatches; ///
34
31
  } else {
package/lib/assertion.js DELETED
@@ -1,147 +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 Assertion;
9
- }
10
- });
11
- var _query = require("./utilities/query");
12
- function _classCallCheck(instance, Constructor) {
13
- if (!(instance instanceof Constructor)) {
14
- throw new TypeError("Cannot call a class as a function");
15
- }
16
- }
17
- function _defineProperties(target, props) {
18
- for(var i = 0; i < props.length; i++){
19
- var descriptor = props[i];
20
- descriptor.enumerable = descriptor.enumerable || false;
21
- descriptor.configurable = true;
22
- if ("value" in descriptor) descriptor.writable = true;
23
- Object.defineProperty(target, descriptor.key, descriptor);
24
- }
25
- }
26
- function _createClass(Constructor, protoProps, staticProps) {
27
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
28
- if (staticProps) _defineProperties(Constructor, staticProps);
29
- return Constructor;
30
- }
31
- var statementNodeQuery = (0, _query.nodeQuery)("/*/statement!");
32
- var Assertion = /*#__PURE__*/ function() {
33
- function Assertion(subproofNode, statementNode) {
34
- _classCallCheck(this, Assertion);
35
- this.subproofNode = subproofNode;
36
- this.statementNode = statementNode;
37
- }
38
- _createClass(Assertion, [
39
- {
40
- key: "getNonTerminalNode",
41
- value: function getNonTerminalNode() {
42
- var nonTerminalNode = this.statementNode !== null ? this.statementNode : null;
43
- return nonTerminalNode;
44
- }
45
- },
46
- {
47
- key: "getSubproofNode",
48
- value: function getSubproofNode() {
49
- return this.subproofNode;
50
- }
51
- },
52
- {
53
- key: "getStatementNode",
54
- value: function getStatementNode() {
55
- return this.statementNode;
56
- }
57
- },
58
- {
59
- key: "match",
60
- value: function match(assertion) {
61
- var matches = false;
62
- var statementNode = assertion.getstatementNode();
63
- if (statementNode !== null && this.statementNode !== null) {
64
- var nonTerminalNode = this.statementNode, assertionNonTerminalNode = statementNode, assertionNonTerminalNodeMatches = matchAssertionNonTerminalNode(assertionNonTerminalNode, nonTerminalNode);
65
- matches = assertionNonTerminalNodeMatches; ///
66
- }
67
- return matches;
68
- }
69
- }
70
- ], [
71
- {
72
- key: "fromSubproofNode",
73
- value: function fromSubproofNode(subproofNode) {
74
- var statementNode = null, assertion = new Assertion(subproofNode, statementNode);
75
- return assertion;
76
- }
77
- },
78
- {
79
- key: "fromStatementNode",
80
- value: function fromStatementNode(statementNode) {
81
- var subproofNode = null, assertion = new Assertion(subproofNode, statementNode);
82
- return assertion;
83
- }
84
- },
85
- {
86
- key: "fromQualifiedStatementNode",
87
- value: function fromQualifiedStatementNode(qualifiedStatementNode) {
88
- var subproofNode = null, statementNode = statementNodeQuery(qualifiedStatementNode), assertion = new Assertion(subproofNode, statementNode);
89
- return assertion;
90
- }
91
- },
92
- {
93
- key: "fromUnqualifiedStatementNode",
94
- value: function fromUnqualifiedStatementNode(unqualifiedStatementNode) {
95
- var subproofNode = null, statementNode = statementNodeQuery(unqualifiedStatementNode), assertion = new Assertion(subproofNode, statementNode);
96
- return assertion;
97
- }
98
- }
99
- ]);
100
- return Assertion;
101
- }();
102
- function matchAssertionNode(assertionNode, node) {
103
- var assertionNodeMatches = false;
104
- var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = assertionNode.isTerminalNode();
105
- if (nodeTerminalNode === ruleNodeTerminalNode) {
106
- if (nodeTerminalNode) {
107
- var terminalNode = node, assertionTerminalNode = assertionNode, assertionTerminalNodeMatches = matchAssertionTerminalNode(assertionTerminalNode, terminalNode);
108
- assertionNodeMatches = assertionTerminalNodeMatches; ///
109
- } else {
110
- var nonTerminalNode = node, assertionNonTerminalNode = assertionNode, assertionNonTerminalNodeMatches = matchAssertionNonTerminalNode(assertionNonTerminalNode, nonTerminalNode);
111
- assertionNodeMatches = assertionNonTerminalNodeMatches; ///
112
- }
113
- }
114
- return assertionNodeMatches;
115
- }
116
- function matchAssertionChildNodes(assertionChildNodes, childNodes) {
117
- var assertionChildNodesMatches = false;
118
- var childNodesLength = childNodes.length, assertionChildNodesLength = assertionChildNodes.length;
119
- if (childNodesLength === assertionChildNodesLength) {
120
- assertionChildNodesMatches = childNodes.every(function(childNode, index) {
121
- var assertionChildNode = assertionChildNodes[index], assertionNode = assertionChildNode, node = childNode, assertionNodeMatches = matchAssertionNode(assertionNode, node);
122
- if (assertionNodeMatches) {
123
- return true;
124
- }
125
- });
126
- }
127
- return assertionChildNodesMatches;
128
- }
129
- function matchAssertionTerminalNode(assertionTerminalNode, terminalNode) {
130
- var assertionTerminalNodeMatches = false;
131
- var matches = assertionTerminalNode.match(terminalNode);
132
- if (matches) {
133
- assertionTerminalNodeMatches = true;
134
- }
135
- return assertionTerminalNodeMatches;
136
- }
137
- function matchAssertionNonTerminalNode(assertionNonTerminalNode, nonTerminalNode) {
138
- var assertionNonTerminalNodeMatches = false;
139
- var ruleName = nonTerminalNode.getRuleName(), assertionRuleName = assertionNonTerminalNode.getRuleName(); ///
140
- if (ruleName === assertionRuleName) {
141
- var childNodes = nonTerminalNode.getChildNodes(), assertionChildNodes = assertionNonTerminalNode.getChildNodes(), assertionChildNodesMatches = matchAssertionChildNodes(assertionChildNodes, childNodes);
142
- assertionNonTerminalNodeMatches = assertionChildNodesMatches; ///
143
- }
144
- return assertionNonTerminalNodeMatches;
145
- }
146
-
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hc3NlcnRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvKi9zdGF0ZW1lbnQhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3RvcihzdWJwcm9vZk5vZGUsIHN0YXRlbWVudE5vZGUpIHtcbiAgICB0aGlzLnN1YnByb29mTm9kZSA9IHN1YnByb29mTm9kZTtcbiAgICB0aGlzLnN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0Tm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9ICh0aGlzLnN0YXRlbWVudE5vZGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlbWVudE5vZGUgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBnZXRTdWJwcm9vZk5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VicHJvb2ZOb2RlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgbWF0Y2goYXNzZXJ0aW9uKSB7XG4gICAgbGV0IG1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBhc3NlcnRpb24uZ2V0c3RhdGVtZW50Tm9kZSgpO1xuXG4gICAgaWYgKChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSAmJiAodGhpcy5zdGF0ZW1lbnROb2RlICE9PSBudWxsKSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdGhpcy5zdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICAgIGFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlKGFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlKTtcblxuICAgICAgbWF0Y2hlcyA9IGFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3VicHJvb2ZOb2RlKHN1YnByb29mTm9kZSkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIGFzc2VydGlvbiA9IG5ldyBBc3NlcnRpb24oc3VicHJvb2ZOb2RlLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IHN1YnByb29mTm9kZSA9IG51bGwsXG4gICAgICAgICAgYXNzZXJ0aW9uID0gbmV3IEFzc2VydGlvbihzdWJwcm9vZk5vZGUsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUXVhbGlmaWVkU3RhdGVtZW50Tm9kZShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3Qgc3VicHJvb2ZOb2RlID0gbnVsbCxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIGFzc2VydGlvbiA9IG5ldyBBc3NlcnRpb24oc3VicHJvb2ZOb2RlLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBzdWJwcm9vZk5vZGUgPSBudWxsLFxuICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBhc3NlcnRpb24gPSBuZXcgQXNzZXJ0aW9uKHN1YnByb29mTm9kZSwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hdGNoQXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlLCBub2RlKSB7XG4gIGxldCBhc3NlcnRpb25Ob2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgIHJ1bGVOb2RlVGVybWluYWxOb2RlID0gYXNzZXJ0aW9uTm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlID09PSBydWxlTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBhc3NlcnRpb25UZXJtaW5hbE5vZGUgPSBhc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBhc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hBc3NlcnRpb25UZXJtaW5hbE5vZGUoYXNzZXJ0aW9uVGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUpO1xuXG4gICAgICBhc3NlcnRpb25Ob2RlTWF0Y2hlcyA9IGFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXM7ICAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgICBhc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUgPSBhc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBhc3NlcnRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUoYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUpO1xuXG4gICAgICBhc3NlcnRpb25Ob2RlTWF0Y2hlcyA9IGFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7IC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhc3NlcnRpb25Ob2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hBc3NlcnRpb25DaGlsZE5vZGVzKGFzc2VydGlvbkNoaWxkTm9kZXMsIGNoaWxkTm9kZXMpIHtcbiAgbGV0IGFzc2VydGlvbkNoaWxkTm9kZXNNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IGNoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgICBhc3NlcnRpb25DaGlsZE5vZGVzTGVuZ3RoID0gYXNzZXJ0aW9uQ2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKGNoaWxkTm9kZXNMZW5ndGggPT09IGFzc2VydGlvbkNoaWxkTm9kZXNMZW5ndGgpIHtcbiAgICBhc3NlcnRpb25DaGlsZE5vZGVzTWF0Y2hlcyA9IGNoaWxkTm9kZXMuZXZlcnkoKGNoaWxkTm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2VydGlvbkNoaWxkTm9kZSA9IGFzc2VydGlvbkNoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgYXNzZXJ0aW9uTm9kZSA9IGFzc2VydGlvbkNoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICBub2RlID0gY2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIGFzc2VydGlvbk5vZGVNYXRjaGVzID0gbWF0Y2hBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUsIG5vZGUpO1xuXG4gICAgICBpZiAoYXNzZXJ0aW9uTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBhc3NlcnRpb25DaGlsZE5vZGVzTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hBc3NlcnRpb25UZXJtaW5hbE5vZGUoYXNzZXJ0aW9uVGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUpIHtcbiAgbGV0IGFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBtYXRjaGVzID0gYXNzZXJ0aW9uVGVybWluYWxOb2RlLm1hdGNoKHRlcm1pbmFsTm9kZSk7XG5cbiAgaWYgKG1hdGNoZXMpIHtcbiAgICBhc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBhc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaEFzc2VydGlvbk5vblRlcm1pbmFsTm9kZShhc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSkge1xuICBsZXQgYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgIGFzc2VydGlvblJ1bGVOYW1lID0gYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7IC8vL1xuXG4gIGlmIChydWxlTmFtZSA9PT0gYXNzZXJ0aW9uUnVsZU5hbWUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBhc3NlcnRpb25DaGlsZE5vZGVzID0gYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBhc3NlcnRpb25DaGlsZE5vZGVzTWF0Y2hlcyA9IG1hdGNoQXNzZXJ0aW9uQ2hpbGROb2Rlcyhhc3NlcnRpb25DaGlsZE5vZGVzLCBjaGlsZE5vZGVzKTtcblxuICAgIGFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBhc3NlcnRpb25DaGlsZE5vZGVzTWF0Y2hlczsgLy8vXG4gIH1cblxuICByZXR1cm4gYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcztcbn1cbiJdLCJuYW1lcyI6WyJBc3NlcnRpb24iLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJzdWJwcm9vZk5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0Tm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiZ2V0U3VicHJvb2ZOb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsIm1hdGNoIiwiYXNzZXJ0aW9uIiwibWF0Y2hlcyIsImdldHN0YXRlbWVudE5vZGUiLCJhc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUiLCJhc3NlcnRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUiLCJmcm9tU3VicHJvb2ZOb2RlIiwiZnJvbVN0YXRlbWVudE5vZGUiLCJmcm9tUXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsInF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJmcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwibWF0Y2hBc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uTm9kZSIsIm5vZGUiLCJhc3NlcnRpb25Ob2RlTWF0Y2hlcyIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInJ1bGVOb2RlVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiYXNzZXJ0aW9uVGVybWluYWxOb2RlIiwiYXNzZXJ0aW9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoQXNzZXJ0aW9uVGVybWluYWxOb2RlIiwibWF0Y2hBc3NlcnRpb25DaGlsZE5vZGVzIiwiYXNzZXJ0aW9uQ2hpbGROb2RlcyIsImNoaWxkTm9kZXMiLCJhc3NlcnRpb25DaGlsZE5vZGVzTWF0Y2hlcyIsImNoaWxkTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJhc3NlcnRpb25DaGlsZE5vZGVzTGVuZ3RoIiwiZXZlcnkiLCJjaGlsZE5vZGUiLCJpbmRleCIsImFzc2VydGlvbkNoaWxkTm9kZSIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJhc3NlcnRpb25SdWxlTmFtZSIsImdldENoaWxkTm9kZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBTXFCQTs7O3FCQUpLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUxQixJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUM7QUFFdEIsSUFBQSxBQUFNRiwwQkFxRWxCLEFBckVZO2FBQU1BLFVBQ1BHLFlBQVksRUFBRUMsYUFBYTs4QkFEcEJKO1FBRWpCLElBQUksQ0FBQ0csWUFBWSxHQUFHQTtRQUNwQixJQUFJLENBQUNDLGFBQWEsR0FBR0E7O2lCQUhKSjs7WUFNbkJLLEtBQUFBO21CQUFBQSxTQUFBQSxxQkFBcUI7Z0JBQ25CLElBQU1DLGtCQUFrQixBQUFDLElBQUksQ0FBQ0YsYUFBYSxLQUFLLElBQUksR0FDekIsSUFBSSxDQUFDQSxhQUFhLEdBQ2hCLElBQUk7Z0JBRWpDLE9BQU9FO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsa0JBQWtCO2dCQUNoQixPQUFPLElBQUksQ0FBQ0osWUFBWTtZQUMxQjs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQSxtQkFBbUI7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDSixhQUFhO1lBQzNCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBLE1BQU1DLFNBQVMsRUFBRTtnQkFDZixJQUFJQyxVQUFVLEtBQUs7Z0JBRW5CLElBQU1QLGdCQUFnQk0sVUFBVUUsZ0JBQWdCO2dCQUVoRCxJQUFJLEFBQUNSLGtCQUFrQixJQUFJLElBQU0sSUFBSSxDQUFDQSxhQUFhLEtBQUssSUFBSSxFQUFHO29CQUM3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
@@ -1,200 +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 MetaAssertion;
9
- }
10
- });
11
- var _array = require("./utilities/array");
12
- var _query = require("./utilities/query");
13
- var _metastatement = require("./utilities/metastatement");
14
- function _classCallCheck(instance, Constructor) {
15
- if (!(instance instanceof Constructor)) {
16
- throw new TypeError("Cannot call a class as a function");
17
- }
18
- }
19
- function _defineProperties(target, props) {
20
- for(var i = 0; i < props.length; i++){
21
- var descriptor = props[i];
22
- descriptor.enumerable = descriptor.enumerable || false;
23
- descriptor.configurable = true;
24
- if ("value" in descriptor) descriptor.writable = true;
25
- Object.defineProperty(target, descriptor.key, descriptor);
26
- }
27
- }
28
- function _createClass(Constructor, protoProps, staticProps) {
29
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
30
- if (staticProps) _defineProperties(Constructor, staticProps);
31
- return Constructor;
32
- }
33
- var metastatementNodeQuery = (0, _query.nodeQuery)("/*/metastatement!"), metastatementNodesQuery = (0, _query.nodesQuery)("/metaSubproofAssertion/metastatement"), metaSubproofAssertionNodeQuery = (0, _query.nodeQuery)("/metastatement/metaSubproofAssertion"), qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery = (0, _query.nodesQuery)("/metaSubproof/qualifiedMetastatement|unqualifiedMetastatement/metastatement!");
34
- var MetaAssertion = /*#__PURE__*/ function() {
35
- function MetaAssertion(metaSubproofNode, metastatementNode) {
36
- _classCallCheck(this, MetaAssertion);
37
- this.metaSubproofNode = metaSubproofNode;
38
- this.metastatementNode = metastatementNode;
39
- }
40
- _createClass(MetaAssertion, [
41
- {
42
- key: "getMetaSubproofNode",
43
- value: function getMetaSubproofNode() {
44
- return this.metaSubproofNode;
45
- }
46
- },
47
- {
48
- key: "getMetastatementNode",
49
- value: function getMetastatementNode() {
50
- return this.metastatementNode;
51
- }
52
- },
53
- {
54
- key: "match",
55
- value: function match(metaAssertion) {
56
- var matches = false;
57
- var metastatementNode = metaAssertion.getMetastatementNode();
58
- if (metastatementNode !== null) {
59
- var metaSubproofAssertionNode = metaSubproofAssertionNodeQuery(metastatementNode);
60
- if (metaSubproofAssertionNode === null) {
61
- var metastatementNodeMatches = this.matchMetastatementNode(metastatementNode);
62
- matches = metastatementNodeMatches; ///
63
- } else {
64
- var metaSubproofAssertionNodeMatches = this.matchMetaSubproofAssertionNode(metaSubproofAssertionNode);
65
- matches = metaSubproofAssertionNodeMatches; ///
66
- }
67
- }
68
- return matches;
69
- }
70
- },
71
- {
72
- key: "matchMetastatementNode",
73
- value: function matchMetastatementNode(metastatementNode) {
74
- var metastatementNodeMatches = false;
75
- if (this.metastatementNode !== null) {
76
- var topmostMetastatementNode = metastatementNode, topmostMetaAssertionMetastatementNode = this.metastatementNode, topmostMetaAssertionMetastatementNodeMatches = matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode);
77
- metastatementNodeMatches = topmostMetaAssertionMetastatementNodeMatches; ///
78
- }
79
- return metastatementNodeMatches;
80
- }
81
- },
82
- {
83
- key: "matchMetaSubproofAssertionNode",
84
- value: function matchMetaSubproofAssertionNode(metaSubproofAssertionNode) {
85
- var metaSubproofAssertionNodeMatches = false;
86
- if (this.metaSubproofNode !== null) {
87
- var metaSubproofAssertionMetastatementNodes = metastatementNodesQuery(metaSubproofAssertionNode), firstMetaSubproofAssertionMetastatementNode = (0, _array.first)(metaSubproofAssertionMetastatementNodes), qualifiedOrUnqualifiedMetastatementMetastatementNodes = qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery(this.metaSubproofNode), firstQualifiedOrUnqualifiedMetastatementMetastatementNode = (0, _array.first)(qualifiedOrUnqualifiedMetastatementMetastatementNodes);
88
- var topmostMetastatementNode = firstMetaSubproofAssertionMetastatementNode, topmostMetaAssertionMetastatementNode = firstQualifiedOrUnqualifiedMetastatementMetastatementNode, topmostMetaAssertionMetastatementNodeMatches = matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode);
89
- if (topmostMetaAssertionMetastatementNodeMatches) {
90
- var secondMetaSubproofAssertionMetastatementNode = (0, _array.second)(metaSubproofAssertionMetastatementNodes), secondQualifiedOrUnqualifiedMetastatementMetastatementNode = (0, _array.second)(qualifiedOrUnqualifiedMetastatementMetastatementNodes);
91
- var topmostMetastatementNode1 = secondMetaSubproofAssertionMetastatementNode, topmostMetaAssertionMetastatementNode1 = secondQualifiedOrUnqualifiedMetastatementMetastatementNode, topmostMetaAssertionMetastatementNodeMatches1 = matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode1, topmostMetastatementNode1);
92
- metaSubproofAssertionNodeMatches = topmostMetaAssertionMetastatementNodeMatches1; ///
93
- }
94
- }
95
- return metaSubproofAssertionNodeMatches;
96
- }
97
- }
98
- ], [
99
- {
100
- key: "fromMetaSubproofNode",
101
- value: function fromMetaSubproofNode(metaSubproofNode) {
102
- var metastatementNode = null, metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
103
- return metaAssertion;
104
- }
105
- },
106
- {
107
- key: "fromMetastatementNode",
108
- value: function fromMetastatementNode(metastatementNode) {
109
- var metaSubproofNode = null, metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
110
- return metaAssertion;
111
- }
112
- },
113
- {
114
- key: "fromQualifiedMetastatementNode",
115
- value: function fromQualifiedMetastatementNode(qualifiedMetastatementNode) {
116
- var metaSubproofNode = null, metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode), metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
117
- return metaAssertion;
118
- }
119
- },
120
- {
121
- key: "fromUnqualifiedMetastatementNode",
122
- value: function fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode) {
123
- var metaSubproofNode = null, metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode), metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
124
- return metaAssertion;
125
- }
126
- }
127
- ]);
128
- return MetaAssertion;
129
- }();
130
- function matchMetaAssertionNode(metaAssertionNode, node) {
131
- var metaAssertionNodeMatches = false;
132
- var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = metaAssertionNode.isTerminalNode();
133
- if (nodeTerminalNode === ruleNodeTerminalNode) {
134
- if (nodeTerminalNode) {
135
- var terminalNode = node, metaAssertionTerminalNode = metaAssertionNode, metaAssertionTerminalNodeMatches = matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode);
136
- metaAssertionNodeMatches = metaAssertionTerminalNodeMatches; ///
137
- } else {
138
- var nonTerminalNode = node, metaAssertionNonTerminalNode = metaAssertionNode, metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode);
139
- metaAssertionNodeMatches = metaAssertionNonTerminalNodeMatches; ///
140
- }
141
- }
142
- return metaAssertionNodeMatches;
143
- }
144
- function matchMetaAssertionNodes(metaAssertionNodes, nodes) {
145
- var metaAssertionNodesMatches = false;
146
- var nodesLength = nodes.length, metaAssertionNodesLength = metaAssertionNodes.length;
147
- if (nodesLength === metaAssertionNodesLength) {
148
- metaAssertionNodesMatches = nodes.every(function(node, index) {
149
- var metaAssertionNode = metaAssertionNodes[index], metaAssertionNodeMatches = matchMetaAssertionNode(metaAssertionNode, node);
150
- if (metaAssertionNodeMatches) {
151
- return true;
152
- }
153
- });
154
- }
155
- return metaAssertionNodesMatches;
156
- }
157
- function matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode) {
158
- var metaAssertionTerminalNodeMatches = false;
159
- var matches = metaAssertionTerminalNode.match(terminalNode);
160
- if (matches) {
161
- metaAssertionTerminalNodeMatches = true;
162
- }
163
- return metaAssertionTerminalNodeMatches;
164
- }
165
- function matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode) {
166
- var metaAssertionNonTerminalNodeMatches = false;
167
- var ruleName = nonTerminalNode.getRuleName(), metaAssertionRuleName = metaAssertionNonTerminalNode.getRuleName(); ///
168
- if (ruleName === metaAssertionRuleName) {
169
- var childNodes = nonTerminalNode.getChildNodes(), nodes = childNodes, metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(), metaAssertionNodes = metaAssertionChildNodes, metaAssertionNodesMatches = matchMetaAssertionNodes(metaAssertionNodes, nodes);
170
- metaAssertionNonTerminalNodeMatches = metaAssertionNodesMatches; ///
171
- }
172
- return metaAssertionNonTerminalNodeMatches;
173
- }
174
- function matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode) {
175
- var nonTerminalNode = metastatementNode, metaAssertionNonTerminalNode = metaAssertionMetastatementNode, metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode), metaAssertionMetastatementNodeNatches = metaAssertionNonTerminalNodeMatches; ///
176
- return metaAssertionMetastatementNodeNatches;
177
- }
178
- function matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode) {
179
- var metaAssertionMetastatementNodeMatches;
180
- var metastatementNode = topmostMetastatementNode, metaAssertionMetastatementNode = topmostMetaAssertionMetastatementNode; ///
181
- metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode);
182
- if (!metaAssertionMetastatementNodeMatches) {
183
- var nonTerminalNode = metastatementNode, childNodes = nonTerminalNode, bracketedMetastatementChildNodeMatches = (0, _metastatement.matchBracketedMetastatementChildNode)(childNodes, function(bracketedMetastatementChildNode) {
184
- var metastatementNode = bracketedMetastatementChildNode, metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode), bracketedMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
185
- return bracketedMetastatementChildNodeMatches;
186
- });
187
- metaAssertionMetastatementNodeMatches = bracketedMetastatementChildNodeMatches; ///
188
- }
189
- if (!metaAssertionMetastatementNodeMatches) {
190
- var metaAssertionNonTerminalNode = metaAssertionMetastatementNode, metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(), bracketedMetaAssertionMetastatementChildNodeMatches = (0, _metastatement.matchBracketedMetastatementChildNode)(metaAssertionChildNodes, function(bracketedMetaAssertionMetastatementChildNode) {
191
- var metaAssertionMetastatementNode = bracketedMetaAssertionMetastatementChildNode, metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode), bracketedMetaAssertionMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
192
- return bracketedMetaAssertionMetastatementChildNodeMatches;
193
- });
194
- metaAssertionMetastatementNodeMatches = bracketedMetaAssertionMetastatementChildNodeMatches; ///
195
- }
196
- var topmostMetaAssertionMetastatementNodeMatches = metaAssertionMetastatementNodeMatches; ///
197
- return topmostMetaAssertionMetastatementNodeMatches;
198
- }
199
-
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhQXNzZXJ0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBmaXJzdCwgc2Vjb25kIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIG5vZGVzUXVlcnkgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IG1hdGNoQnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZSB9IGZyb20gXCIuL3V0aWxpdGllcy9tZXRhc3RhdGVtZW50XCI7XG5cbmNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvKi9tZXRhc3RhdGVtZW50IVwiKSxcbiAgICAgIG1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9tZXRhU3VicHJvb2ZBc3NlcnRpb24vbWV0YXN0YXRlbWVudFwiKSxcbiAgICAgIG1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhc3RhdGVtZW50L21ldGFTdWJwcm9vZkFzc2VydGlvblwiKSxcbiAgICAgIHF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL21ldGFTdWJwcm9vZi9xdWFsaWZpZWRNZXRhc3RhdGVtZW50fHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudC9tZXRhc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0YUFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKG1ldGFTdWJwcm9vZk5vZGUsIG1ldGFzdGF0ZW1lbnROb2RlKSB7XG4gICAgdGhpcy5tZXRhU3VicHJvb2ZOb2RlID0gbWV0YVN1YnByb29mTm9kZTtcbiAgICB0aGlzLm1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBnZXRNZXRhU3VicHJvb2ZOb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGFTdWJwcm9vZk5vZGU7XG4gIH1cblxuICBnZXRNZXRhc3RhdGVtZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhc3RhdGVtZW50Tm9kZTtcbiAgfVxuXG4gIG1hdGNoKG1ldGFBc3NlcnRpb24pIHtcbiAgICBsZXQgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhQXNzZXJ0aW9uLmdldE1ldGFzdGF0ZW1lbnROb2RlKCk7XG5cbiAgICBpZiAobWV0YXN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGUgPSBtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlUXVlcnkobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBpZiAobWV0YVN1YnByb29mQXNzZXJ0aW9uTm9kZSA9PT0gbnVsbCkge1xuICAgICAgICBjb25zdCBtZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgICAgIG1hdGNoZXMgPSBtZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7ICAvLy9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGUobWV0YVN1YnByb29mQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICAgICAgbWF0Y2hlcyA9IG1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGVNYXRjaGVzOyAvLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgICBsZXQgbWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5tZXRhc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdG9wbW9zdE1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgdG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSA9IHRoaXMubWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgIHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gbWF0Y2hUb3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlKHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUsIHRvcG1vc3RNZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgICAgIG1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzOyAgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTWV0YVN1YnByb29mQXNzZXJ0aW9uTm9kZShtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlKSB7XG4gICAgbGV0IG1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5tZXRhU3VicHJvb2ZOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBtZXRhU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXMgPSBtZXRhc3RhdGVtZW50Tm9kZXNRdWVyeShtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgICAgIGZpcnN0TWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUgPSBmaXJzdChtZXRhU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXMpLFxuICAgICAgICAgICAgcXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRNZXRhc3RhdGVtZW50Tm9kZXMgPSBxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5KHRoaXMubWV0YVN1YnByb29mTm9kZSksXG4gICAgICAgICAgICBmaXJzdFF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGUgPSBmaXJzdChxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2Rlcyk7XG5cbiAgICAgIGNvbnN0IHRvcG1vc3RNZXRhc3RhdGVtZW50Tm9kZSA9IGZpcnN0TWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgIHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUgPSBmaXJzdFF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgdG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBtYXRjaFRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUodG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgdG9wbW9zdE1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgaWYgKHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzKSB7XG4gICAgICAgIGNvbnN0IHNlY29uZE1ldGFTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlID0gc2Vjb25kKG1ldGFTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlcyksXG4gICAgICAgICAgICAgIHNlY29uZFF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGUgPSBzZWNvbmQocXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRNZXRhc3RhdGVtZW50Tm9kZXMpO1xuXG4gICAgICAgIGNvbnN0IHRvcG1vc3RNZXRhc3RhdGVtZW50Tm9kZSA9IHNlY29uZE1ldGFTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICAgICAgdG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSA9IHNlY29uZFF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgICB0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoVG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSh0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCB0b3Btb3N0TWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgICAgIG1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGVNYXRjaGVzID0gdG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7IC8vL1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YVN1YnByb29mTm9kZShtZXRhU3VicHJvb2ZOb2RlKSB7XG4gICAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIG1ldGFBc3NlcnRpb24gPSBuZXcgTWV0YUFzc2VydGlvbihtZXRhU3VicHJvb2ZOb2RlLCBtZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gbWV0YUFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBtZXRhU3VicHJvb2ZOb2RlID0gbnVsbCxcbiAgICAgICAgICBtZXRhQXNzZXJ0aW9uID0gbmV3IE1ldGFBc3NlcnRpb24obWV0YVN1YnByb29mTm9kZSwgbWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGFBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3QgbWV0YVN1YnByb29mTm9kZSA9IG51bGwsXG4gICAgICAgICAgbWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhQXNzZXJ0aW9uID0gbmV3IE1ldGFBc3NlcnRpb24obWV0YVN1YnByb29mTm9kZSwgbWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGFBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUodW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IG1ldGFTdWJwcm9vZk5vZGUgPSBudWxsLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVRdWVyeSh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhQXNzZXJ0aW9uID0gbmV3IE1ldGFBc3NlcnRpb24obWV0YVN1YnByb29mTm9kZSwgbWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGFBc3NlcnRpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hNZXRhQXNzZXJ0aW9uTm9kZShtZXRhQXNzZXJ0aW9uTm9kZSwgbm9kZSkge1xuICBsZXQgbWV0YUFzc2VydGlvbk5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgcnVsZU5vZGVUZXJtaW5hbE5vZGUgPSBtZXRhQXNzZXJ0aW9uTm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlID09PSBydWxlTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBtZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlID0gbWV0YUFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgIG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hNZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlKG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSk7XG5cbiAgICAgIG1ldGFBc3NlcnRpb25Ob2RlTWF0Y2hlcyA9IG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSA9IG1ldGFBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoTWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZShtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUpO1xuXG4gICAgICBtZXRhQXNzZXJ0aW9uTm9kZU1hdGNoZXMgPSBtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1ldGFBc3NlcnRpb25Ob2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hNZXRhQXNzZXJ0aW9uTm9kZXMobWV0YUFzc2VydGlvbk5vZGVzLCBub2Rlcykge1xuICBsZXQgbWV0YUFzc2VydGlvbk5vZGVzTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBtZXRhQXNzZXJ0aW9uTm9kZXNMZW5ndGggPSBtZXRhQXNzZXJ0aW9uTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChub2Rlc0xlbmd0aCA9PT0gbWV0YUFzc2VydGlvbk5vZGVzTGVuZ3RoKSB7XG4gICAgbWV0YUFzc2VydGlvbk5vZGVzTWF0Y2hlcyA9IG5vZGVzLmV2ZXJ5KChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgbWV0YUFzc2VydGlvbk5vZGUgPSBtZXRhQXNzZXJ0aW9uTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbWV0YUFzc2VydGlvbk5vZGVNYXRjaGVzID0gbWF0Y2hNZXRhQXNzZXJ0aW9uTm9kZShtZXRhQXNzZXJ0aW9uTm9kZSwgbm9kZSk7XG5cbiAgICAgIGlmIChtZXRhQXNzZXJ0aW9uTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbWV0YUFzc2VydGlvbk5vZGVzTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hNZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlKG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSkge1xuICBsZXQgbWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBtYXRjaGVzID0gbWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZS5tYXRjaCh0ZXJtaW5hbE5vZGUpO1xuXG4gIGlmIChtYXRjaGVzKSB7XG4gICAgbWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXMgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaE1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUobWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlKSB7XG4gIGxldCBtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgIG1ldGFBc3NlcnRpb25SdWxlTmFtZSA9IG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTsgLy8vXG5cbiAgaWYgKHJ1bGVOYW1lID09PSBtZXRhQXNzZXJ0aW9uUnVsZU5hbWUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBub2RlcyA9IGNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgIG1ldGFBc3NlcnRpb25DaGlsZE5vZGVzID0gbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgbWV0YUFzc2VydGlvbk5vZGVzID0gbWV0YUFzc2VydGlvbkNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgIG1ldGFBc3NlcnRpb25Ob2Rlc01hdGNoZXMgPSBtYXRjaE1ldGFBc3NlcnRpb25Ob2RlcyhtZXRhQXNzZXJ0aW9uTm9kZXMsIG5vZGVzKTtcblxuICAgIG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWV0YUFzc2VydGlvbk5vZGVzTWF0Y2hlczsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZShtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUsIG1ldGFzdGF0ZW1lbnROb2RlKSB7XG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgIG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUgPSBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaE1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUobWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlKSxcbiAgICAgICAgbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTmF0Y2hlcyA9IG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzOyAgLy8vXG5cbiAgcmV0dXJuIG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU5hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoVG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSh0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCB0b3Btb3N0TWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgbGV0IG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7XG5cbiAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSB0b3Btb3N0TWV0YXN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUgPSB0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlOyAgLy8vXG5cbiAgbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlKG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gIGlmICghbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXMgPSBtYXRjaEJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUoY2hpbGROb2RlcywgKGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlID0gYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlKG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgICAgICAgICAgYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXMgPSBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzO1xuXG4gICAgICAgICAgICByZXR1cm4gYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXM7XG4gICAgICAgICAgfSk7XG5cbiAgICBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXM7ICAvLy9cbiAgfVxuXG4gIGlmICghbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcykge1xuICAgIGNvbnN0IG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUgPSBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBtZXRhQXNzZXJ0aW9uQ2hpbGROb2RlcyA9IG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIGJyYWNrZXRlZE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyA9IG1hdGNoQnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZShtZXRhQXNzZXJ0aW9uQ2hpbGROb2RlcywgKGJyYWNrZXRlZE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Q2hpbGROb2RlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUgPSBicmFja2V0ZWRNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlKG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgICAgICAgICAgYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzID0gbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcblxuICAgICAgICAgICAgcmV0dXJuIGJyYWNrZXRlZE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcztcbiAgICAgICAgICB9KTtcblxuICAgIG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBicmFja2V0ZWRNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXM7ICAvLy9cbiAgfVxuXG4gIGNvbnN0IHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlczsgIC8vL1xuXG4gIHJldHVybiB0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbn1cbiJdLCJuYW1lcyI6WyJNZXRhQXNzZXJ0aW9uIiwibWV0YXN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsIm1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5Iiwibm9kZXNRdWVyeSIsIm1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGVRdWVyeSIsInF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGVzUXVlcnkiLCJtZXRhU3VicHJvb2ZOb2RlIiwibWV0YXN0YXRlbWVudE5vZGUiLCJnZXRNZXRhU3VicHJvb2ZOb2RlIiwiZ2V0TWV0YXN0YXRlbWVudE5vZGUiLCJtYXRjaCIsIm1ldGFBc3NlcnRpb24iLCJtYXRjaGVzIiwibWV0YVN1YnByb29mQXNzZXJ0aW9uTm9kZSIsIm1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlTWF0Y2hlcyIsIm1hdGNoTWV0YVN1YnByb29mQXNzZXJ0aW9uTm9kZSIsInRvcG1vc3RNZXRhc3RhdGVtZW50Tm9kZSIsInRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUiLCJ0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsIm1hdGNoVG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGFTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlcyIsImZpcnN0TWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUiLCJmaXJzdCIsInF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGVzIiwiZmlyc3RRdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2RlIiwic2Vjb25kTWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUiLCJzZWNvbmQiLCJzZWNvbmRRdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2RlIiwiZnJvbU1ldGFTdWJwcm9vZk5vZGUiLCJmcm9tTWV0YXN0YXRlbWVudE5vZGUiLCJmcm9tUXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUiLCJxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsImZyb21VbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlIiwidW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsIm1hdGNoTWV0YUFzc2VydGlvbk5vZGUiLCJtZXRhQXNzZXJ0aW9uTm9kZSIsIm5vZGUiLCJtZXRhQXNzZXJ0aW9uTm9kZU1hdGNoZXMiLCJub2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJydWxlTm9kZVRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsIm1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGUiLCJtZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsIm1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUiLCJtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSIsIm1hdGNoTWV0YUFzc2VydGlvbk5vZGVzIiwibWV0YUFzc2VydGlvbk5vZGVzIiwibm9kZXMiLCJtZXRhQXNzZXJ0aW9uTm9kZXNNYXRjaGVzIiwibm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJtZXRhQXNzZXJ0aW9uTm9kZXNMZW5ndGgiLCJldmVyeSIsImluZGV4IiwicnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsIm1ldGFBc3NlcnRpb25SdWxlTmFtZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwibWV0YUFzc2VydGlvbkNoaWxkTm9kZXMiLCJtYXRjaE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU5hdGNoZXMiLCJtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzIiwiYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXMiLCJtYXRjaEJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUiLCJicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlIiwiYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzIiwiYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBV3FCQTs7O3FCQVRTO3FCQUNROzZCQUNlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVyRCxJQUFNQyx5QkFBeUJDLElBQUFBLGdCQUFTLEVBQUMsc0JBQ25DQywwQkFBMEJDLElBQUFBLGlCQUFVLEVBQUMseUNBQ3JDQyxpQ0FBaUNILElBQUFBLGdCQUFTLEVBQUMseUNBQzNDSSw2REFBNkRGLElBQUFBLGlCQUFVLEVBQUM7QUFFL0QsSUFBQSxBQUFNSiw4QkE2R2xCLEFBN0dZO2FBQU1BLGNBQ1BPLGdCQUFnQixFQUFFQyxpQkFBaUI7OEJBRDVCUjtRQUVqQixJQUFJLENBQUNPLGdCQUFnQixHQUFHQTtRQUN4QixJQUFJLENBQUNDLGlCQUFpQixHQUFHQTs7aUJBSFJSOztZQU1uQlMsS0FBQUE7bUJBQUFBLFNBQUFBLHNCQUFzQjtnQkFDcEIsT0FBTyxJQUFJLENBQUNGLGdCQUFnQjtZQUM5Qjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSx1QkFBdUI7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDRixpQkFBaUI7WUFDL0I7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsTUFBTUMsYUFBYSxFQUFFO2dCQUNuQixJQUFJQyxVQUFVLEtBQUs7Z0JBRW5CLElBQU1MLG9CQUFv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
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- bracketedMetastatementChildNodeFromChildNodes: function() {
13
- return bracketedMetastatementChildNodeFromChildNodes;
14
- },
15
- matchBracketedMetastatementChildNode: function() {
16
- return matchBracketedMetastatementChildNode;
17
- }
18
- });
19
- var _array = require("../utilities/array");
20
- var _ruleNames = require("../ruleNames");
21
- var _constants = require("../constants");
22
- function bracketedMetastatementChildNodeFromChildNodes(childNodes) {
23
- var bracketedMetastatementChildNode = null;
24
- var childNodesLength = childNodes.length;
25
- if (childNodesLength === _constants.BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH) {
26
- var firstChildNode = (0, _array.first)(childNodes), thirdChildNode = (0, _array.third)(childNodes), secondChildNode = (0, _array.second)(childNodes), firstChildNodeTerminalNode = firstChildNode.isTerminalNode(), thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(), secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
27
- if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
28
- var nonTerminalNode = secondChildNode, firstTerminalNode = firstChildNode, secondTerminalNode = thirdChildNode, nonTerminalNodeRuleName = nonTerminalNode.getRuleName(), firstTerminalNodeContent = firstTerminalNode.getContent(), secondTerminalNodeContent = secondTerminalNode.getContent(), firstTerminalNodeContentLeftBracket = firstTerminalNodeContent === _constants.LEFT_BRACKET, secondTerminalNodeContentRightBracket = secondTerminalNodeContent === _constants.RIGHT_BRACKET, nonTerminalNodeRuleNameMetastatementRuleName = nonTerminalNodeRuleName === _ruleNames.METASTATEMENT_RULE_NAME;
29
- if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameMetastatementRuleName && secondTerminalNodeContentRightBracket) {
30
- bracketedMetastatementChildNode = nonTerminalNode; ///
31
- }
32
- }
33
- }
34
- return bracketedMetastatementChildNode;
35
- }
36
- function matchBracketedMetastatementChildNode(childNodes, callback) {
37
- var bracketedMetastatementChildNodeMatches = false;
38
- var bracketedMetastatementChildNode = bracketedMetastatementChildNodeFromChildNodes(childNodes);
39
- if (bracketedMetastatementChildNode !== null) {
40
- bracketedMetastatementChildNodeMatches = callback(bracketedMetastatementChildNode);
41
- }
42
- return bracketedMetastatementChildNodeMatches;
43
- }
44
-
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbWV0YXN0YXRlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZmlyc3QsIHNlY29uZCwgdGhpcmQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcbmltcG9ydCB7IExFRlRfQlJBQ0tFVCwgUklHSFRfQlJBQ0tFVCwgQlJBQ0tFVEVEX01FVEFTVEFURU1FTlRfQ0hJTERfTk9ERVNfTEVOR1RIIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZUZyb21DaGlsZE5vZGVzKGNoaWxkTm9kZXMpIHtcbiAgbGV0IGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IGNoaWxkTm9kZXNMZW5ndGggPSBjaGlsZE5vZGVzLmxlbmd0aDtcblxuICBpZiAoY2hpbGROb2Rlc0xlbmd0aCA9PT0gQlJBQ0tFVEVEX01FVEFTVEFURU1FTlRfQ0hJTERfTk9ERVNfTEVOR1RIKSB7XG4gICAgY29uc3QgZmlyc3RDaGlsZE5vZGUgPSBmaXJzdChjaGlsZE5vZGVzKSxcbiAgICAgICAgICB0aGlyZENoaWxkTm9kZSA9IHRoaXJkKGNoaWxkTm9kZXMpLFxuICAgICAgICAgIHNlY29uZENoaWxkTm9kZSA9IHNlY29uZChjaGlsZE5vZGVzKSxcbiAgICAgICAgICBmaXJzdENoaWxkTm9kZVRlcm1pbmFsTm9kZSA9IGZpcnN0Q2hpbGROb2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgdGhpcmRDaGlsZE5vZGVUZXJtaW5hbE5vZGUgPSB0aGlyZENoaWxkTm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIHNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSA9IHNlY29uZENoaWxkTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKGZpcnN0Q2hpbGROb2RlVGVybWluYWxOb2RlICYmIHNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSAmJiB0aGlyZENoaWxkTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc2Vjb25kQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBmaXJzdFRlcm1pbmFsTm9kZSA9IGZpcnN0Q2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIHNlY29uZFRlcm1pbmFsTm9kZSA9IHRoaXJkQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgICAgZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50ID0gZmlyc3RUZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpLFxuICAgICAgICAgICAgc2Vjb25kVGVybWluYWxOb2RlQ29udGVudCA9IHNlY29uZFRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCksXG4gICAgICAgICAgICBmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnRMZWZ0QnJhY2tldCA9IChmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnQgPT09IExFRlRfQlJBQ0tFVCksXG4gICAgICAgICAgICBzZWNvbmRUZXJtaW5hbE5vZGVDb250ZW50UmlnaHRCcmFja2V0ID0gKHNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnQgPT09IFJJR0hUX0JSQUNLRVQpLFxuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUgPSAobm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPT09IE1FVEFTVEFURU1FTlRfUlVMRV9OQU1FKTtcblxuICAgICAgaWYgKGZpcnN0VGVybWluYWxOb2RlQ29udGVudExlZnRCcmFja2V0ICYmIG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lICYmIHNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnRSaWdodEJyYWNrZXQpIHtcbiAgICAgICAgYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZSA9IG5vblRlcm1pbmFsTm9kZTsgIC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hCcmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlKGNoaWxkTm9kZXMsIGNhbGxiYWNrKSB7XG4gIGxldCBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUgPSBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlRnJvbUNoaWxkTm9kZXMoY2hpbGROb2Rlcyk7XG5cbiAgaWYgKGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyA9IGNhbGxiYWNrKGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzO1xufVxuIl0sIm5hbWVzIjpbImJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVGcm9tQ2hpbGROb2RlcyIsIm1hdGNoQnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZSIsImNoaWxkTm9kZXMiLCJicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlIiwiY2hpbGROb2Rlc0xlbmd0aCIsImxlbmd0aCIsIkJSQUNLRVRFRF9NRVRBU1RBVEVNRU5UX0NISUxEX05PREVTX0xFTkdUSCIsImZpcnN0Q2hpbGROb2RlIiwiZmlyc3QiLCJ0aGlyZENoaWxkTm9kZSIsInRoaXJkIiwic2Vjb25kQ2hpbGROb2RlIiwic2Vjb25kIiwiZmlyc3RDaGlsZE5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRoaXJkQ2hpbGROb2RlVGVybWluYWxOb2RlIiwic2Vjb25kQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJmaXJzdFRlcm1pbmFsTm9kZSIsInNlY29uZFRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnQiLCJnZXRDb250ZW50Iiwic2Vjb25kVGVybWluYWxOb2RlQ29udGVudCIsImZpcnN0VGVybWluYWxOb2RlQ29udGVudExlZnRCcmFja2V0IiwiTEVGVF9CUkFDS0VUIiwic2Vjb25kVGVybWluYWxOb2RlQ29udGVudFJpZ2h0QnJhY2tldCIsIlJJR0hUX0JSQUNLRVQiLCJub25UZXJtaW5hbE5vZGVSdWxlTmFtZU1ldGFzdGF0ZW1lbnRSdWxlTmFtZSIsIk1FVEFTVEFURU1FTlRfUlVMRV9OQU1FIiwiY2FsbGJhY2siLCJicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBTWdCQSw2Q0FBNkM7ZUFBN0NBOztJQWlDQUMsb0NBQW9DO2VBQXBDQTs7O3FCQXJDcUI7eUJBQ0c7eUJBQ2dEO0FBRWpGLFNBQVNELDhDQUE4Q0UsVUFBVSxFQUFFO0lBQ3hFLElBQUlDLGtDQUFrQyxJQUFJO0lBRTFDLElBQU1DLG1CQUFtQkYsV0FBV0csTUFBTTtJQUUxQyxJQUFJRCxxQkFBcUJFLHFEQUEwQyxFQUFFO1FBQ25FLElBQU1DLGlCQUFpQkMsSUFBQUEsWUFBSyxFQUFDTixhQUN2Qk8saUJBQWlCQyxJQUFBQSxZQUFLLEVBQUNSLGFBQ3ZCUyxrQkFBa0JDLElBQUFBLGFBQU0sRUFBQ1YsYUFDekJXLDZCQUE2Qk4sZUFBZU8sY0FBYyxJQUMxREMsNkJBQTZCTixlQUFlSyxjQUFjLElBQzFERSxpQ0FBaUNMLGdCQUFnQk0saUJBQWlCO1FBRXhFLElBQUlKLDhCQUE4Qkcsa0NBQWtDRCw0QkFBNEI7WUFDOUYsSUFBTUcsa0JBQWtCUCxpQkFDbEJRLG9CQUFvQlosZ0JBQ3BCYSxxQkFBcUJYLGdCQUNyQlksMEJBQTBCSCxnQkFBZ0JJLFdBQVcsSUFDckRDLDJCQUEyQkosa0JBQWtCSyxVQUFVLElBQ3ZEQyw0QkFBNEJMLG1CQUFtQkksVUFBVSxJQUN6REUsc0NBQXVDSCw2QkFBNkJJLHVCQUFZLEVBQ2hGQyx3Q0FBeUNILDhCQUE4Qkksd0JBQWEsRUFDcEZDLCtDQUFnRFQsNEJBQTRCVSxrQ0FBdUI7WUFFekcsSUFBSUwsdUNBQXVDSSxnREFBZ0RGLHVDQUF1QztnQkFDaEl6QixrQ0FBa0NlLGlCQUFrQixHQUFHO1lBQ3pELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU9mO0FBQ1Q7QUFFTyxTQUFTRixxQ0FBcUNDLFVBQVUsRUFBRThCLFFBQVEsRUFBRTtJQUN6RSxJQUFJQyx5Q0FBeUMsS0FBSztJQUVsRCxJQUFNOUIsa0NBQWtDSCw4Q0FBOENFO0lBRXRGLElBQUlDLG9DQUFvQyxJQUFJLEVBQUU7UUFDNUM4Qix5Q0FBeUNELFNBQVM3QjtJQUNwRCxDQUFDO0lBRUQsT0FBTzhCO0FBQ1QifQ==