occam-verify-cli 0.0.478 → 0.0.480

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/ruleNames.js CHANGED
@@ -21,6 +21,12 @@ _export(exports, {
21
21
  ARGUMENT_RULE_NAME: function() {
22
22
  return ARGUMENT_RULE_NAME;
23
23
  },
24
+ SUBPROOF_RULE_NAME: function() {
25
+ return SUBPROOF_RULE_NAME;
26
+ },
27
+ STATEMENT_RULE_NAME: function() {
28
+ return STATEMENT_RULE_NAME;
29
+ },
24
30
  METAVARIABLE_RULE_NAME: function() {
25
31
  return METAVARIABLE_RULE_NAME;
26
32
  },
@@ -30,18 +36,15 @@ _export(exports, {
30
36
  META_SUBPROOF_RULE_NAME: function() {
31
37
  return META_SUBPROOF_RULE_NAME;
32
38
  },
39
+ QUALIFIED_STATEMENT_RULE_NAME: function() {
40
+ return QUALIFIED_STATEMENT_RULE_NAME;
41
+ },
33
42
  UNQUALIFIED_STATEMENT_RULE_NAME: function() {
34
43
  return UNQUALIFIED_STATEMENT_RULE_NAME;
35
44
  },
36
45
  CONDITIONAL_INDICATIVE_RULE_NAME: function() {
37
46
  return CONDITIONAL_INDICATIVE_RULE_NAME;
38
47
  },
39
- COMBINATOR_DECLARATION_RULE_NAME: function() {
40
- return COMBINATOR_DECLARATION_RULE_NAME;
41
- },
42
- CONSTRUCTOR_DECLARATION_RULE_NAME: function() {
43
- return CONSTRUCTOR_DECLARATION_RULE_NAME;
44
- },
45
48
  QUALIFIED_METASTATEMENT_RULE_NAME: function() {
46
49
  return QUALIFIED_METASTATEMENT_RULE_NAME;
47
50
  },
@@ -53,14 +56,15 @@ var TERM_RULE_NAME = "term";
53
56
  var TYPE_RULE_NAME = "type";
54
57
  var LABEL_RULE_NAME = "label";
55
58
  var ARGUMENT_RULE_NAME = "argument";
59
+ var SUBPROOF_RULE_NAME = "subproof";
60
+ var STATEMENT_RULE_NAME = "statement";
56
61
  var METAVARIABLE_RULE_NAME = "metavariable";
57
62
  var METASTATEMENT_RULE_NAME = "metastatement";
58
63
  var META_SUBPROOF_RULE_NAME = "metaSubproof";
64
+ var QUALIFIED_STATEMENT_RULE_NAME = "qualifiedStatement";
59
65
  var UNQUALIFIED_STATEMENT_RULE_NAME = "unqualifiedStatement";
60
66
  var CONDITIONAL_INDICATIVE_RULE_NAME = "conditionalIndicative";
61
- var COMBINATOR_DECLARATION_RULE_NAME = "combinatorDeclaration";
62
- var CONSTRUCTOR_DECLARATION_RULE_NAME = "constructorDeclaration";
63
67
  var QUALIFIED_METASTATEMENT_RULE_NAME = "qualifiedMetastatement";
64
68
  var UNQUALIFIED_METASTATEMENT_RULE_NAME = "unqualifiedMetastatement";
65
69
 
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydWxlTmFtZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBURVJNX1JVTEVfTkFNRSA9IFwidGVybVwiO1xuZXhwb3J0IGNvbnN0IFRZUEVfUlVMRV9OQU1FID0gXCJ0eXBlXCI7XG5leHBvcnQgY29uc3QgTEFCRUxfUlVMRV9OQU1FID0gXCJsYWJlbFwiO1xuZXhwb3J0IGNvbnN0IEFSR1VNRU5UX1JVTEVfTkFNRSA9IFwiYXJndW1lbnRcIjtcbmV4cG9ydCBjb25zdCBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FID0gXCJtZXRhdmFyaWFibGVcIjtcbmV4cG9ydCBjb25zdCBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSA9IFwibWV0YXN0YXRlbWVudFwiO1xuZXhwb3J0IGNvbnN0IE1FVEFfU1VCUFJPT0ZfUlVMRV9OQU1FID0gXCJtZXRhU3VicHJvb2ZcIjtcbmV4cG9ydCBjb25zdCBVTlFVQUxJRklFRF9TVEFURU1FTlRfUlVMRV9OQU1FID0gXCJ1bnF1YWxpZmllZFN0YXRlbWVudFwiO1xuZXhwb3J0IGNvbnN0IENPTkRJVElPTkFMX0lORElDQVRJVkVfUlVMRV9OQU1FID0gXCJjb25kaXRpb25hbEluZGljYXRpdmVcIjtcbmV4cG9ydCBjb25zdCBDT01CSU5BVE9SX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSA9IFwiY29tYmluYXRvckRlY2xhcmF0aW9uXCI7XG5leHBvcnQgY29uc3QgQ09OU1RSVUNUT1JfREVDTEFSQVRJT05fUlVMRV9OQU1FID0gXCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uXCI7XG5leHBvcnQgY29uc3QgUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FID0gXCJxdWFsaWZpZWRNZXRhc3RhdGVtZW50XCI7XG5leHBvcnQgY29uc3QgVU5RVUFMSUZJRURfTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUgPSBcInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFwiO1xuIl0sIm5hbWVzIjpbIlRFUk1fUlVMRV9OQU1FIiwiVFlQRV9SVUxFX05BTUUiLCJMQUJFTF9SVUxFX05BTUUiLCJBUkdVTUVOVF9SVUxFX05BTUUiLCJNRVRBVkFSSUFCTEVfUlVMRV9OQU1FIiwiTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUiLCJNRVRBX1NVQlBST09GX1JVTEVfTkFNRSIsIlVOUVVBTElGSUVEX1NUQVRFTUVOVF9SVUxFX05BTUUiLCJDT05ESVRJT05BTF9JTkRJQ0FUSVZFX1JVTEVfTkFNRSIsIkNPTUJJTkFUT1JfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiQ09OU1RSVUNUT1JfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FIiwiVU5RVUFMSUZJRURfTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUVhQSxjQUFjO2VBQWRBOztJQUNBQyxjQUFjO2VBQWRBOztJQUNBQyxlQUFlO2VBQWZBOztJQUNBQyxrQkFBa0I7ZUFBbEJBOztJQUNBQyxzQkFBc0I7ZUFBdEJBOztJQUNBQyx1QkFBdUI7ZUFBdkJBOztJQUNBQyx1QkFBdUI7ZUFBdkJBOztJQUNBQywrQkFBK0I7ZUFBL0JBOztJQUNBQyxnQ0FBZ0M7ZUFBaENBOztJQUNBQyxnQ0FBZ0M7ZUFBaENBOztJQUNBQyxpQ0FBaUM7ZUFBakNBOztJQUNBQyxpQ0FBaUM7ZUFBakNBOztJQUNBQyxtQ0FBbUM7ZUFBbkNBOzs7QUFaTixJQUFNWixpQkFBaUI7QUFDdkIsSUFBTUMsaUJBQWlCO0FBQ3ZCLElBQU1DLGtCQUFrQjtBQUN4QixJQUFNQyxxQkFBcUI7QUFDM0IsSUFBTUMseUJBQXlCO0FBQy9CLElBQU1DLDBCQUEwQjtBQUNoQyxJQUFNQywwQkFBMEI7QUFDaEMsSUFBTUMsa0NBQWtDO0FBQ3hDLElBQU1DLG1DQUFtQztBQUN6QyxJQUFNQyxtQ0FBbUM7QUFDekMsSUFBTUMsb0NBQW9DO0FBQzFDLElBQU1DLG9DQUFvQztBQUMxQyxJQUFNQyxzQ0FBc0MifQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydWxlTmFtZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBURVJNX1JVTEVfTkFNRSA9IFwidGVybVwiO1xuZXhwb3J0IGNvbnN0IFRZUEVfUlVMRV9OQU1FID0gXCJ0eXBlXCI7XG5leHBvcnQgY29uc3QgTEFCRUxfUlVMRV9OQU1FID0gXCJsYWJlbFwiO1xuZXhwb3J0IGNvbnN0IEFSR1VNRU5UX1JVTEVfTkFNRSA9IFwiYXJndW1lbnRcIjtcbmV4cG9ydCBjb25zdCBTVUJQUk9PRl9SVUxFX05BTUUgPSBcInN1YnByb29mXCI7XG5leHBvcnQgY29uc3QgU1RBVEVNRU5UX1JVTEVfTkFNRSA9IFwic3RhdGVtZW50XCI7XG5leHBvcnQgY29uc3QgTUVUQVZBUklBQkxFX1JVTEVfTkFNRSA9IFwibWV0YXZhcmlhYmxlXCI7XG5leHBvcnQgY29uc3QgTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUgPSBcIm1ldGFzdGF0ZW1lbnRcIjtcbmV4cG9ydCBjb25zdCBNRVRBX1NVQlBST09GX1JVTEVfTkFNRSA9IFwibWV0YVN1YnByb29mXCI7XG5leHBvcnQgY29uc3QgUVVBTElGSUVEX1NUQVRFTUVOVF9SVUxFX05BTUUgPSBcInF1YWxpZmllZFN0YXRlbWVudFwiO1xuZXhwb3J0IGNvbnN0IFVOUVVBTElGSUVEX1NUQVRFTUVOVF9SVUxFX05BTUUgPSBcInVucXVhbGlmaWVkU3RhdGVtZW50XCI7XG5leHBvcnQgY29uc3QgQ09ORElUSU9OQUxfSU5ESUNBVElWRV9SVUxFX05BTUUgPSBcImNvbmRpdGlvbmFsSW5kaWNhdGl2ZVwiO1xuZXhwb3J0IGNvbnN0IFFVQUxJRklFRF9NRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSA9IFwicXVhbGlmaWVkTWV0YXN0YXRlbWVudFwiO1xuZXhwb3J0IGNvbnN0IFVOUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FID0gXCJ1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRcIjtcbiJdLCJuYW1lcyI6WyJURVJNX1JVTEVfTkFNRSIsIlRZUEVfUlVMRV9OQU1FIiwiTEFCRUxfUlVMRV9OQU1FIiwiQVJHVU1FTlRfUlVMRV9OQU1FIiwiU1VCUFJPT0ZfUlVMRV9OQU1FIiwiU1RBVEVNRU5UX1JVTEVfTkFNRSIsIk1FVEFWQVJJQUJMRV9SVUxFX05BTUUiLCJNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSIsIk1FVEFfU1VCUFJPT0ZfUlVMRV9OQU1FIiwiUVVBTElGSUVEX1NUQVRFTUVOVF9SVUxFX05BTUUiLCJVTlFVQUxJRklFRF9TVEFURU1FTlRfUlVMRV9OQU1FIiwiQ09ORElUSU9OQUxfSU5ESUNBVElWRV9SVUxFX05BTUUiLCJRVUFMSUZJRURfTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUiLCJVTlFVQUxJRklFRF9NRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRWFBLGNBQWM7ZUFBZEE7O0lBQ0FDLGNBQWM7ZUFBZEE7O0lBQ0FDLGVBQWU7ZUFBZkE7O0lBQ0FDLGtCQUFrQjtlQUFsQkE7O0lBQ0FDLGtCQUFrQjtlQUFsQkE7O0lBQ0FDLG1CQUFtQjtlQUFuQkE7O0lBQ0FDLHNCQUFzQjtlQUF0QkE7O0lBQ0FDLHVCQUF1QjtlQUF2QkE7O0lBQ0FDLHVCQUF1QjtlQUF2QkE7O0lBQ0FDLDZCQUE2QjtlQUE3QkE7O0lBQ0FDLCtCQUErQjtlQUEvQkE7O0lBQ0FDLGdDQUFnQztlQUFoQ0E7O0lBQ0FDLGlDQUFpQztlQUFqQ0E7O0lBQ0FDLG1DQUFtQztlQUFuQ0E7OztBQWJOLElBQU1iLGlCQUFpQjtBQUN2QixJQUFNQyxpQkFBaUI7QUFDdkIsSUFBTUMsa0JBQWtCO0FBQ3hCLElBQU1DLHFCQUFxQjtBQUMzQixJQUFNQyxxQkFBcUI7QUFDM0IsSUFBTUMsc0JBQXNCO0FBQzVCLElBQU1DLHlCQUF5QjtBQUMvQixJQUFNQywwQkFBMEI7QUFDaEMsSUFBTUMsMEJBQTBCO0FBQ2hDLElBQU1DLGdDQUFnQztBQUN0QyxJQUFNQyxrQ0FBa0M7QUFDeEMsSUFBTUMsbUNBQW1DO0FBQ3pDLElBQU1DLG9DQUFvQztBQUMxQyxJQUFNQyxzQ0FBc0MifQ==
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "default", {
8
8
  return Substitution;
9
9
  }
10
10
  });
11
+ var _ruleNames = require("./ruleNames");
11
12
  var _node = require("./utilities/node");
12
13
  function _classCallCheck(instance, Constructor) {
13
14
  if (!(instance instanceof Constructor)) {
@@ -29,55 +30,56 @@ function _createClass(Constructor, protoProps, staticProps) {
29
30
  return Constructor;
30
31
  }
31
32
  var Substitution = /*#__PURE__*/ function() {
32
- function Substitution(variableName, nodes) {
33
+ function Substitution(metavariableName, statementNode) {
33
34
  _classCallCheck(this, Substitution);
34
- this.variableName = variableName;
35
- this.nodes = nodes;
35
+ this.metavariableName = metavariableName;
36
+ this.statementNode = statementNode;
36
37
  }
37
38
  _createClass(Substitution, [
38
39
  {
39
- key: "getVariableName",
40
- value: function getVariableName() {
41
- return this.variableName;
40
+ key: "getMetavariableName",
41
+ value: function getMetavariableName() {
42
+ return this.metavariableName;
42
43
  }
43
44
  },
44
45
  {
45
- key: "getNodes",
46
- value: function getNodes() {
47
- return this.nodes;
46
+ key: "getStatementNode",
47
+ value: function getStatementNode() {
48
+ return this.statementNode;
48
49
  }
49
50
  },
50
51
  {
51
- key: "matchNodes",
52
- value: function matchNodes(nodes) {
53
- var matches;
54
- var nodesA = this.nodes, nodesB = nodes, metaSubstitutionNodesMatch = (0, _node.matchNodes)(nodesA, nodesB);
55
- matches = metaSubstitutionNodesMatch; ///
56
- if (!matches) {
57
- var childNodes = nodes, bracketedChildNode = (0, _node.bracketedChildNodeFromChildNodes)(childNodes);
58
- if (bracketedChildNode !== null) {
59
- var nonTerminalNode = bracketedChildNode, childNodes1 = nonTerminalNode.getChildNodes(), nodesB1 = childNodes1, nodesMatch = (0, _node.matchNodes)(nodesA, nodesB1);
60
- matches = nodesMatch; ///
52
+ key: "matchStatementNode",
53
+ value: function matchStatementNode(statementNode) {
54
+ var matchesStatementNode;
55
+ var nodeA = this.statementNode, nodeB = statementNode, nodeMatches = (0, _node.matchNode)(nodeA, nodeB);
56
+ matchesStatementNode = nodeMatches; ///
57
+ if (!matchesStatementNode) {
58
+ var nonTerminalNode = statementNode, childNodes = nonTerminalNode.getChildNodes(), ruleName = _ruleNames.STATEMENT_RULE_NAME;
59
+ statementNode = (0, _node.bracketedNonTerminalChildNodeFromChildNodes)(childNodes, ruleName); ///
60
+ if (statementNode !== null) {
61
+ var nodeA1 = this.statementNode, nodeB1 = statementNode, nodeMatches1 = (0, _node.matchNode)(nodeA1, nodeB1);
62
+ matchesStatementNode = nodeMatches1; ///
61
63
  }
62
64
  }
63
- return matches;
65
+ return matchesStatementNode;
64
66
  }
65
67
  }
66
68
  ], [
67
69
  {
68
- key: "fromMetavariableNameAndNodes",
69
- value: function fromMetavariableNameAndNodes(variableName, nodes) {
70
- var bracketedChildNode = (0, _node.bracketedChildNodeFromChildNodes)(nodes);
71
- if (bracketedChildNode !== null) {
72
- var nonTerminalNode = bracketedChildNode, childNodes = nonTerminalNode.getChildNodes();
73
- nodes = childNodes; ///
70
+ key: "fromMetavariableNameAndStatementNode",
71
+ value: function fromMetavariableNameAndStatementNode(metavariableName, statementNode) {
72
+ var substitution = new Substitution(metavariableName, statementNode);
73
+ var nonTerminalNode = statementNode, childNodes = nonTerminalNode.getChildNodes(), ruleName = _ruleNames.STATEMENT_RULE_NAME;
74
+ statementNode = (0, _node.bracketedNonTerminalChildNodeFromChildNodes)(childNodes, ruleName); ///
75
+ if (statementNode !== null) {
76
+ substitution = new Substitution(metavariableName, statementNode);
74
77
  }
75
- var metaSubstitution = new Substitution(variableName, nodes);
76
- return metaSubstitution;
78
+ return substitution;
77
79
  }
78
80
  }
79
81
  ]);
80
82
  return Substitution;
81
83
  }();
82
84
 
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdWJzdGl0dXRpb24uanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG1hdGNoTm9kZXMsIGJyYWNrZXRlZENoaWxkTm9kZUZyb21DaGlsZE5vZGVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3Vic3RpdHV0aW9uIHtcbiAgY29uc3RydWN0b3IodmFyaWFibGVOYW1lLCBub2Rlcykge1xuICAgIHRoaXMudmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lO1xuICAgIHRoaXMubm9kZXMgPSBub2RlcztcbiAgfVxuXG4gIGdldFZhcmlhYmxlTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYWJsZU5hbWU7XG4gIH1cblxuICBnZXROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcztcbiAgfVxuXG4gIG1hdGNoTm9kZXMobm9kZXMpIHtcbiAgICBsZXQgbWF0Y2hlcztcblxuICAgIGNvbnN0IG5vZGVzQSA9IHRoaXMubm9kZXMsICAvLy9cbiAgICAgICAgICBub2Rlc0IgPSBub2RlcyxcbiAgICAgICAgICBtZXRhU3Vic3RpdHV0aW9uTm9kZXNNYXRjaCA9IG1hdGNoTm9kZXMobm9kZXNBLCBub2Rlc0IpO1xuXG4gICAgbWF0Y2hlcyA9IG1ldGFTdWJzdGl0dXRpb25Ob2Rlc01hdGNoOyAgLy8vXG5cbiAgICBpZiAoIW1hdGNoZXMpIHtcbiAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBub2RlcywgLy8vXG4gICAgICAgICAgICBicmFja2V0ZWRDaGlsZE5vZGUgPSBicmFja2V0ZWRDaGlsZE5vZGVGcm9tQ2hpbGROb2RlcyhjaGlsZE5vZGVzKTtcblxuICAgICAgaWYgKGJyYWNrZXRlZENoaWxkTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBicmFja2V0ZWRDaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgIG5vZGVzQiA9IGNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICBub2Rlc01hdGNoID0gbWF0Y2hOb2Rlcyhub2Rlc0EsIG5vZGVzQik7XG5cbiAgICAgICAgbWF0Y2hlcyA9IG5vZGVzTWF0Y2g7IC8vL1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgc3RhdGljIGZyb21NZXRhdmFyaWFibGVOYW1lQW5kTm9kZXModmFyaWFibGVOYW1lLCBub2Rlcykge1xuICAgIGNvbnN0IGJyYWNrZXRlZENoaWxkTm9kZSA9IGJyYWNrZXRlZENoaWxkTm9kZUZyb21DaGlsZE5vZGVzKG5vZGVzKTtcblxuICAgIGlmIChicmFja2V0ZWRDaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGJyYWNrZXRlZENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICAgIG5vZGVzID0gY2hpbGROb2RlczsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgbWV0YVN1YnN0aXR1dGlvbiA9IG5ldyBTdWJzdGl0dXRpb24odmFyaWFibGVOYW1lLCBub2Rlcyk7XG5cbiAgICByZXR1cm4gbWV0YVN1YnN0aXR1dGlvbjtcbiAgfVxufVxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJTdWJzdGl0dXRpb24iLCJ2YXJpYWJsZU5hbWUiLCJub2RlcyIsImdldFZhcmlhYmxlTmFtZSIsImdldE5vZGVzIiwibWF0Y2hOb2RlcyIsIm1hdGNoZXMiLCJub2Rlc0EiLCJub2Rlc0IiLCJtZXRhU3Vic3RpdHV0aW9uTm9kZXNNYXRjaCIsImNoaWxkTm9kZXMiLCJicmFja2V0ZWRDaGlsZE5vZGUiLCJicmFja2V0ZWRDaGlsZE5vZGVGcm9tQ2hpbGROb2RlcyIsIm5vblRlcm1pbmFsTm9kZSIsImdldENoaWxkTm9kZXMiLCJub2Rlc01hdGNoIiwiZnJvbU1ldGF2YXJpYWJsZU5hbWVBbmROb2RlcyIsIm1ldGFTdWJzdGl0dXRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBSXFCQTs7O29CQUZ3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFOUMsSUFBQSxBQUFNQSw2QkFBTjthQUFNQSxhQUNQQyxZQUFZLEVBQUVDLEtBQUs7OEJBRFpGO1FBRWpCLElBQUksQ0FBQ0MsWUFBWSxHQUFHQTtRQUNwQixJQUFJLENBQUNDLEtBQUssR0FBR0E7O2lCQUhJRjs7WUFNbkJHLEtBQUFBO21CQUFBQSxTQUFBQSxrQkFBa0I7Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDRixZQUFZO1lBQzFCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLFdBQVc7Z0JBQ1QsT0FBTyxJQUFJLENBQUNGLEtBQUs7WUFDbkI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsV0FBV0gsS0FBSyxFQUFFO2dCQUNoQixJQUFJSTtnQkFFSixJQUFNQyxTQUFTLElBQUksQ0FBQ0wsS0FBSyxFQUNuQk0sU0FBU04sT0FDVE8sNkJBQTZCSixJQUFBQSxnQkFBVSxFQUFDRSxRQUFRQztnQkFFdERGLFVBQVVHLDRCQUE2QixHQUFHO2dCQUUxQyxJQUFJLENBQUNILFNBQVM7b0JBQ1osSUFBTUksYUFBYVIsT0FDYlMscUJBQXFCQyxJQUFBQSxzQ0FBZ0MsRUFBQ0Y7b0JBRTVELElBQUlDLHVCQUF1QixJQUFJLEVBQUU7d0JBQy9CLElBQU1FLGtCQUFrQkYsb0JBQ2xCRCxjQUFhRyxnQkFBZ0JDLGFBQWEsSUFDMUNOLFVBQVNFLGFBQ1RLLGFBQWFWLElBQUFBLGdCQUFVLEVBQUNFLFFBQVFDO3dCQUV0Q0YsVUFBVVMsWUFBWSxHQUFHO29CQUMzQixDQUFDO2dCQUNILENBQUM7Z0JBRUQsT0FBT1Q7WUFDVDs7OztZQUVPVSxLQUFBQTttQkFBUCxTQUFPQSw2QkFBNkJmLFlBQVksRUFBRUMsS0FBSyxFQUFFO2dCQUN2RCxJQUFNUyxxQkFBcUJDLElBQUFBLHNDQUFnQyxFQUFDVjtnQkFFNUQsSUFBSVMsdUJBQXVCLElBQUksRUFBRTtvQkFDL0IsSUFBTUUsa0JBQWtCRixvQkFDbEJELGFBQWFHLGdCQUFnQkMsYUFBYTtvQkFFaERaLFFBQVFRLFlBQVksR0FBRztnQkFDekIsQ0FBQztnQkFFRCxJQUFNTyxtQkFBbUIsSUFsRFJqQixhQWtEeUJDLGNBQWNDO2dCQUV4RCxPQUFPZTtZQUNUOzs7V0FyRG1CakIifQ==
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdWJzdGl0dXRpb24uanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IFNUQVRFTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi9ydWxlTmFtZXNcIjtcbmltcG9ydCB7IG1hdGNoTm9kZSwgYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGVGcm9tQ2hpbGROb2RlcyB9IGZyb20gXCIuL3V0aWxpdGllcy9ub2RlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YnN0aXR1dGlvbiB7XG4gIGNvbnN0cnVjdG9yKG1ldGF2YXJpYWJsZU5hbWUsIHN0YXRlbWVudE5vZGUpIHtcbiAgICB0aGlzLm1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOYW1lO1xuICAgIHRoaXMuc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZU5hbWU7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBtYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIGxldCBtYXRjaGVzU3RhdGVtZW50Tm9kZTtcblxuICAgIGNvbnN0IG5vZGVBID0gdGhpcy5zdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgbm9kZUIgPSBzdGF0ZW1lbnROb2RlLFxuICAgICAgICAgIG5vZGVNYXRjaGVzID0gbWF0Y2hOb2RlKG5vZGVBLCBub2RlQik7XG5cbiAgICBtYXRjaGVzU3RhdGVtZW50Tm9kZSA9IG5vZGVNYXRjaGVzOyAgLy8vXG5cbiAgICBpZiAoIW1hdGNoZXNTdGF0ZW1lbnROb2RlKSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSwgLy8vXG4gICAgICAgICAgICBydWxlTmFtZSA9IFNUQVRFTUVOVF9SVUxFX05BTUU7XG5cbiAgICAgIHN0YXRlbWVudE5vZGUgPSBicmFja2V0ZWROb25UZXJtaW5hbENoaWxkTm9kZUZyb21DaGlsZE5vZGVzKGNoaWxkTm9kZXMsIHJ1bGVOYW1lKTsgIC8vL1xuXG4gICAgICBpZiAoc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBub2RlQSA9IHRoaXMuc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgICBub2RlQiA9IHN0YXRlbWVudE5vZGUsXG4gICAgICAgICAgICAgIG5vZGVNYXRjaGVzID0gbWF0Y2hOb2RlKG5vZGVBLCBub2RlQik7XG5cbiAgICAgICAgbWF0Y2hlc1N0YXRlbWVudE5vZGUgPSBub2RlTWF0Y2hlczsgIC8vL1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzU3RhdGVtZW50Tm9kZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YXZhcmlhYmxlTmFtZUFuZFN0YXRlbWVudE5vZGUobWV0YXZhcmlhYmxlTmFtZSwgc3RhdGVtZW50Tm9kZSkge1xuICAgIGxldCBzdWJzdGl0dXRpb24gPSBuZXcgU3Vic3RpdHV0aW9uKG1ldGF2YXJpYWJsZU5hbWUsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIHJ1bGVOYW1lID0gU1RBVEVNRU5UX1JVTEVfTkFNRTtcblxuICAgIHN0YXRlbWVudE5vZGUgPSBicmFja2V0ZWROb25UZXJtaW5hbENoaWxkTm9kZUZyb21DaGlsZE5vZGVzKGNoaWxkTm9kZXMsIHJ1bGVOYW1lKTsgIC8vL1xuXG4gICAgaWYgKHN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIHN1YnN0aXR1dGlvbiA9IG5ldyBTdWJzdGl0dXRpb24obWV0YXZhcmlhYmxlTmFtZSwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbiAgfVxufVxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJTdWJzdGl0dXRpb24iLCJtZXRhdmFyaWFibGVOYW1lIiwic3RhdGVtZW50Tm9kZSIsImdldE1ldGF2YXJpYWJsZU5hbWUiLCJnZXRTdGF0ZW1lbnROb2RlIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwibWF0Y2hlc1N0YXRlbWVudE5vZGUiLCJub2RlQSIsIm5vZGVCIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsInJ1bGVOYW1lIiwiU1RBVEVNRU5UX1JVTEVfTkFNRSIsImJyYWNrZXRlZE5vblRlcm1pbmFsQ2hpbGROb2RlRnJvbUNoaWxkTm9kZXMiLCJmcm9tTWV0YXZhcmlhYmxlTmFtZUFuZFN0YXRlbWVudE5vZGUiLCJzdWJzdGl0dXRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBS3FCQTs7O3lCQUhlO29CQUNtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFeEQsSUFBQSxBQUFNQSw2QkFBTjthQUFNQSxhQUNQQyxnQkFBZ0IsRUFBRUMsYUFBYTs4QkFEeEJGO1FBRWpCLElBQUksQ0FBQ0MsZ0JBQWdCLEdBQUdBO1FBQ3hCLElBQUksQ0FBQ0MsYUFBYSxHQUFHQTs7aUJBSEpGOztZQU1uQkcsS0FBQUE7bUJBQUFBLFNBQUFBLHNCQUFzQjtnQkFDcEIsT0FBTyxJQUFJLENBQUNGLGdCQUFnQjtZQUM5Qjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxtQkFBbUI7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDRixhQUFhO1lBQzNCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQkgsYUFBYSxFQUFFO2dCQUNoQyxJQUFJSTtnQkFFSixJQUFNQyxRQUFRLElBQUksQ0FBQ0wsYUFBYSxFQUMxQk0sUUFBUU4sZUFDUk8sY0FBY0MsSUFBQUEsZUFBUyxFQUFDSCxPQUFPQztnQkFFckNGLHVCQUF1QkcsYUFBYyxHQUFHO2dCQUV4QyxJQUFJLENBQUNILHNCQUFzQjtvQkFDekIsSUFBTUssa0JBQWtCVCxlQUNsQlUsYUFBYUQsZ0JBQWdCRSxhQUFhLElBQzFDQyxXQUFXQyw4QkFBbUI7b0JBRXBDYixnQkFBZ0JjLElBQUFBLGlEQUEyQyxFQUFDSixZQUFZRSxXQUFZLEdBQUc7b0JBRXZGLElBQUlaLGtCQUFrQixJQUFJLEVBQUU7d0JBQzFCLElBQU1LLFNBQVEsSUFBSSxDQUFDTCxhQUFhLEVBQzFCTSxTQUFRTixlQUNSTyxlQUFjQyxJQUFBQSxlQUFTLEVBQUNILFFBQU9DO3dCQUVyQ0YsdUJBQXVCRyxjQUFjLEdBQUc7b0JBQzFDLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxPQUFPSDtZQUNUOzs7O1lBRU9XLEtBQUFBO21CQUFQLFNBQU9BLHFDQUFxQ2hCLGdCQUFnQixFQUFFQyxhQUFhLEVBQUU7Z0JBQzNFLElBQUlnQixlQUFlLElBM0NGbEIsYUEyQ21CQyxrQkFBa0JDO2dCQUV0RCxJQUFNUyxrQkFBa0JULGVBQ2xCVSxhQUFhRCxnQkFBZ0JFLGFBQWEsSUFDMUNDLFdBQVdDLDhCQUFtQjtnQkFFcENiLGdCQUFnQmMsSUFBQUEsaURBQTJDLEVBQUNKLFlBQVlFLFdBQVksR0FBRztnQkFFdkYsSUFBSVosa0JBQWtCLElBQUksRUFBRTtvQkFDMUJnQixlQUFlLElBcERBbEIsYUFvRGlCQyxrQkFBa0JDO2dCQUNwRCxDQUFDO2dCQUVELE9BQU9nQjtZQUNUOzs7V0F4RG1CbEIifQ==
package/lib/type.js CHANGED
@@ -50,37 +50,38 @@ var Type = /*#__PURE__*/ function() {
50
50
  {
51
51
  key: "isEqualTo",
52
52
  value: function isEqualTo(type) {
53
- var equalToType = this === type;
54
- return equalToType;
53
+ var equalTo = this === type;
54
+ return equalTo;
55
55
  }
56
56
  },
57
57
  {
58
58
  key: "isSubTypeOf",
59
59
  value: function isSubTypeOf(type) {
60
- var subTypeOfType = false;
61
- if (this.superType === type) {
62
- subTypeOfType = true;
63
- } else {
64
- if (this.superType !== null) {
65
- subTypeOfType = this.superType.isSubTypeOf(type);
60
+ var subTypeOf = false;
61
+ var superType = this.superType;
62
+ while(superType !== null){
63
+ if (superType === type) {
64
+ subTypeOf = true;
65
+ break;
66
66
  }
67
+ superType = superType.getSuperType();
67
68
  }
68
- return subTypeOfType;
69
+ return subTypeOf;
69
70
  }
70
71
  },
71
72
  {
72
73
  key: "isSuperTypeOf",
73
74
  value: function isSuperTypeOf(type) {
74
- var superTypeOfType = false;
75
+ var superTypeOf = false;
75
76
  var superType = type.getSuperType();
76
- if (superType === this) {
77
- superTypeOfType = true;
78
- } else {
79
- if (superType !== null) {
80
- superTypeOfType = superType.isSuperTypeOf(this);
77
+ while(superType !== null){
78
+ if (superType === this) {
79
+ superTypeOf = true;
80
+ break;
81
81
  }
82
+ superType = superType.getSuperType();
82
83
  }
83
- return superTypeOfType;
84
+ return superTypeOf;
84
85
  }
85
86
  },
86
87
  {
@@ -98,10 +99,10 @@ var Type = /*#__PURE__*/ function() {
98
99
  }
99
100
  },
100
101
  {
101
- key: "isEqualToSubTypeOfOrSuperTypeOf",
102
- value: function isEqualToSubTypeOfOrSuperTypeOf(type) {
103
- var equalToType = this.isEqualTo(type), subTypeOfType = this.isSubTypeOf(type), superTypeOfType = this.isSuperTypeOf(type), equalToTypeSubTypeOfOrSuperTypeOf = equalToType || subTypeOfType || superTypeOfType;
104
- return equalToTypeSubTypeOfOrSuperTypeOf;
102
+ key: "match",
103
+ value: function match(type) {
104
+ var equalToType = this.isEqualTo(type), subTypeOfType = this.isSubTypeOf(type), superTypeOfType = this.isSuperTypeOf(type), matches = equalToType || subTypeOfType || superTypeOfType;
105
+ return matches;
105
106
  }
106
107
  },
107
108
  {
@@ -178,4 +179,4 @@ var Type = /*#__PURE__*/ function() {
178
179
  return Type;
179
180
  }();
180
181
 
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBUWVBFX0tJTkQgfSBmcm9tIFwiLi9raW5kc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUeXBlIHtcbiAgY29uc3RydWN0b3IobmFtZSwgc3VwZXJUeXBlKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnN1cGVyVHlwZSA9IHN1cGVyVHlwZTtcbiAgfVxuXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldFN1cGVyVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGU7XG4gIH1cblxuICBpc0VxdWFsVG8odHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG9UeXBlID0gKHRoaXMgPT09IHR5cGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9UeXBlO1xuICB9XG5cbiAgaXNTdWJUeXBlT2YodHlwZSkge1xuICAgIGxldCBzdWJUeXBlT2ZUeXBlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5zdXBlclR5cGUgPT09IHR5cGUpIHtcbiAgICAgIHN1YlR5cGVPZlR5cGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zdXBlclR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgc3ViVHlwZU9mVHlwZSA9IHRoaXMuc3VwZXJUeXBlLmlzU3ViVHlwZU9mKHR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdWJUeXBlT2ZUeXBlO1xuICB9XG5cbiAgaXNTdXBlclR5cGVPZih0eXBlKSB7XG4gICAgbGV0IHN1cGVyVHlwZU9mVHlwZSA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlID0gdHlwZS5nZXRTdXBlclR5cGUoKTtcblxuICAgIGlmIChzdXBlclR5cGUgPT09IHRoaXMpIHtcbiAgICAgIHN1cGVyVHlwZU9mVHlwZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdXBlclR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgc3VwZXJUeXBlT2ZUeXBlID0gc3VwZXJUeXBlLmlzU3VwZXJUeXBlT2YodGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyVHlwZU9mVHlwZTtcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvVHlwZSA9IHRoaXMuaXNFcXVhbFRvKHR5cGUpLFxuICAgICAgICAgIHN1YlR5cGVPZlR5cGUgPSB0aGlzLmlzU3ViVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIGVxdWFsVG9UeXBlT3JTdWJUeXBlT2YgPSAoZXF1YWxUb1R5cGUgfHwgc3ViVHlwZU9mVHlwZSk7XG5cbiAgICByZXR1cm4gZXF1YWxUb1R5cGVPclN1YlR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG9UeXBlID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2ZUeXBlID0gdGhpcy5pc1N1cGVyVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIGVxdWFsVG9UeXBlT3JTdXBlclR5cGVPZiA9IChlcXVhbFRvVHlwZSB8fCBzdXBlclR5cGVPZlR5cGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9UeXBlT3JTdXBlclR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb1N1YlR5cGVPZk9yU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG9UeXBlID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3ViVHlwZU9mVHlwZSA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2ZUeXBlID0gdGhpcy5pc1N1cGVyVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIGVxdWFsVG9UeXBlU3ViVHlwZU9mT3JTdXBlclR5cGVPZiA9IChlcXVhbFRvVHlwZSB8fCBzdWJUeXBlT2ZUeXBlIHx8IHN1cGVyVHlwZU9mVHlwZSk7XG5cbiAgICByZXR1cm4gZXF1YWxUb1R5cGVTdWJUeXBlT2ZPclN1cGVyVHlwZU9mO1xuICB9XG5cbiAgbWF0Y2hOYW1lKG5hbWUpIHtcbiAgICBjb25zdCBtYXRjaGVzTmFtZSA9ICh0aGlzLm5hbWUgPT09IG5hbWUpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXNOYW1lO1xuICB9XG5cbiAgbWF0Y2hUeXBlTmFtZSh0eXBlTmFtZSkge1xuICAgIGNvbnN0IG1hdGNoZXNUeXBlTmFtZSA9ICh0aGlzLm5hbWUgPT09IHR5cGVOYW1lKTtcblxuICAgIHJldHVybiBtYXRjaGVzVHlwZU5hbWU7XG4gIH1cblxuICBhc1N0cmluZyhub1N1cGVyVHlwZSA9ICh0aGlzLnN1cGVyVHlwZSA9PT0gbnVsbCkpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgaWYgKG5vU3VwZXJUeXBlKSB7XG4gICAgICBzdHJpbmcgPSBgJHt0aGlzLm5hbWV9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlTmFtZSA9IHRoaXMuc3VwZXJUeXBlLmdldE5hbWUoKTtcblxuICAgICAgc3RyaW5nID0gYCR7dGhpcy5uYW1lfToke3N1cGVyVHlwZU5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHN1cGVyVHlwZUpTT04gPSAodGhpcy5zdXBlclR5cGUgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VwZXJUeXBlLnRvSlNPTigpLFxuICAgICAgICAgIGtpbmQgPSBUWVBFX0tJTkQsXG4gICAgICAgICAgbmFtZSA9IHRoaXMubmFtZSxcbiAgICAgICAgICBzdXBlclR5cGUgPSBzdXBlclR5cGVKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIGtpbmQsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgc3VwZXJUeXBlXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIHJlbGVhc2VDb250ZXh0KSB7XG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgbGV0IHsgc3VwZXJUeXBlIH0gPSBqc29uO1xuXG4gICAgaWYgKHN1cGVyVHlwZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlSlNPTiA9IHN1cGVyVHlwZTsgIC8vL1xuXG4gICAgICBqc29uID0gc3VwZXJUeXBlSlNPTjsgLy8vXG5cbiAgICAgIHN1cGVyVHlwZSA9IFR5cGUuZnJvbUpTT04oanNvbiwgcmVsZWFzZUNvbnRleHQpO1xuXG4gICAgICBjb25zdCBzdXBlclR5cGVOYW1lID0gc3VwZXJUeXBlLmdldE5hbWUoKTtcblxuICAgICAgc3VwZXJUeXBlID0gcmVsZWFzZUNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHN1cGVyVHlwZU5hbWUpOyAvLy9cbiAgICB9XG5cbiAgICBjb25zdCB0eXBlID0gbmV3IFR5cGUobmFtZSwgc3VwZXJUeXBlKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgc3RhdGljIGZyb21UeXBlTmFtZSh0eXBlTmFtZSkge1xuICAgIGNvbnN0IG5hbWUgPSB0eXBlTmFtZSwgIC8vL1xuICAgICAgICAgIHN1cGVyVHlwZSA9IG51bGwsXG4gICAgICAgICAgdHlwZSA9IG5ldyBUeXBlKG5hbWUsIHN1cGVyVHlwZSk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVHlwZU5hbWVBbmRTdXBlclR5cGUodHlwZU5hbWUsIHN1cGVyVHlwZSkge1xuICAgIGNvbnN0IG5hbWUgPSB0eXBlTmFtZSwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBuZXcgVHlwZShuYW1lLCBzdXBlclR5cGUpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cbn1cbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiVHlwZSIsIm5hbWUiLCJzdXBlclR5cGUiLCJnZXROYW1lIiwiZ2V0U3VwZXJUeXBlIiwiaXNFcXVhbFRvIiwidHlwZSIsImVxdWFsVG9UeXBlIiwiaXNTdWJUeXBlT2YiLCJzdWJUeXBlT2ZUeXBlIiwiaXNTdXBlclR5cGVPZiIsInN1cGVyVHlwZU9mVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwiZXF1YWxUb1R5cGVPclN1YlR5cGVPZiIsImlzRXF1YWxUb09yU3VwZXJUeXBlT2YiLCJlcXVhbFRvVHlwZU9yU3VwZXJUeXBlT2YiLCJpc0VxdWFsVG9TdWJUeXBlT2ZPclN1cGVyVHlwZU9mIiwiZXF1YWxUb1R5cGVTdWJUeXBlT2ZPclN1cGVyVHlwZU9mIiwibWF0Y2hOYW1lIiwibWF0Y2hlc05hbWUiLCJtYXRjaFR5cGVOYW1lIiwidHlwZU5hbWUiLCJtYXRjaGVzVHlwZU5hbWUiLCJhc1N0cmluZyIsIm5vU3VwZXJUeXBlIiwic3RyaW5nIiwic3VwZXJUeXBlTmFtZSIsInRvSlNPTiIsInN1cGVyVHlwZUpTT04iLCJraW5kIiwiVFlQRV9LSU5EIiwianNvbiIsImZyb21KU09OIiwicmVsZWFzZUNvbnRleHQiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJmcm9tVHlwZU5hbWUiLCJmcm9tVHlwZU5hbWVBbmRTdXBlclR5cGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBSXFCQTs7O3FCQUZLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVYLElBQUEsQUFBTUEscUJBQU47YUFBTUEsS0FDUEMsSUFBSSxFQUFFQyxTQUFTOzhCQURSRjtRQUVqQixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFNBQVMsR0FBR0E7O2lCQUhBRjs7WUFNbkJHLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVO2dCQUNSLE9BQU8sSUFBSSxDQUFDRixJQUFJO1lBQ2xC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
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBUWVBFX0tJTkQgfSBmcm9tIFwiLi9raW5kc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUeXBlIHtcbiAgY29uc3RydWN0b3IobmFtZSwgc3VwZXJUeXBlKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnN1cGVyVHlwZSA9IHN1cGVyVHlwZTtcbiAgfVxuXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldFN1cGVyVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGU7XG4gIH1cblxuICBpc0VxdWFsVG8odHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG8gPSAodGhpcyA9PT0gdHlwZSk7XG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIGlzU3ViVHlwZU9mKHR5cGUpIHtcbiAgICBsZXQgc3ViVHlwZU9mID0gZmFsc2U7XG5cbiAgICBsZXQgc3VwZXJUeXBlID0gdGhpcy5zdXBlclR5cGU7XG5cbiAgICB3aGlsZSAoc3VwZXJUeXBlICE9PSBudWxsKSB7XG4gICAgICBpZiAoc3VwZXJUeXBlID09PSB0eXBlKSB7XG4gICAgICAgIHN1YlR5cGVPZiA9IHRydWU7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHN1cGVyVHlwZSA9IHN1cGVyVHlwZS5nZXRTdXBlclR5cGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ViVHlwZU9mO1xuICB9XG5cbiAgaXNTdXBlclR5cGVPZih0eXBlKSB7XG4gICAgbGV0IHN1cGVyVHlwZU9mID0gZmFsc2U7XG5cbiAgICBsZXQgc3VwZXJUeXBlID0gdHlwZS5nZXRTdXBlclR5cGUoKTtcblxuICAgIHdoaWxlIChzdXBlclR5cGUgIT09IG51bGwpIHtcbiAgICAgIGlmIChzdXBlclR5cGUgPT09IHRoaXMpIHtcbiAgICAgICAgc3VwZXJUeXBlT2YgPSB0cnVlO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBzdXBlclR5cGUgPSBzdXBlclR5cGUuZ2V0U3VwZXJUeXBlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyVHlwZU9mO1xuICB9XG5cbiAgaXNFcXVhbFRvT3JTdWJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG9UeXBlID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3ViVHlwZU9mVHlwZSA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb1R5cGVPclN1YlR5cGVPZiA9IChlcXVhbFRvVHlwZSB8fCBzdWJUeXBlT2ZUeXBlKTtcblxuICAgIHJldHVybiBlcXVhbFRvVHlwZU9yU3ViVHlwZU9mO1xuICB9XG5cbiAgaXNFcXVhbFRvT3JTdXBlclR5cGVPZih0eXBlKSB7XG4gICAgY29uc3QgZXF1YWxUb1R5cGUgPSB0aGlzLmlzRXF1YWxUbyh0eXBlKSxcbiAgICAgICAgICBzdXBlclR5cGVPZlR5cGUgPSB0aGlzLmlzU3VwZXJUeXBlT2YodHlwZSksXG4gICAgICAgICAgZXF1YWxUb1R5cGVPclN1cGVyVHlwZU9mID0gKGVxdWFsVG9UeXBlIHx8IHN1cGVyVHlwZU9mVHlwZSk7XG5cbiAgICByZXR1cm4gZXF1YWxUb1R5cGVPclN1cGVyVHlwZU9mO1xuICB9XG5cbiAgbWF0Y2godHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG9UeXBlID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3ViVHlwZU9mVHlwZSA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2ZUeXBlID0gdGhpcy5pc1N1cGVyVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIG1hdGNoZXMgPSAoZXF1YWxUb1R5cGUgfHwgc3ViVHlwZU9mVHlwZSB8fCBzdXBlclR5cGVPZlR5cGUpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE5hbWUobmFtZSkge1xuICAgIGNvbnN0IG1hdGNoZXNOYW1lID0gKHRoaXMubmFtZSA9PT0gbmFtZSk7XG5cbiAgICByZXR1cm4gbWF0Y2hlc05hbWU7XG4gIH1cblxuICBtYXRjaFR5cGVOYW1lKHR5cGVOYW1lKSB7XG4gICAgY29uc3QgbWF0Y2hlc1R5cGVOYW1lID0gKHRoaXMubmFtZSA9PT0gdHlwZU5hbWUpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXNUeXBlTmFtZTtcbiAgfVxuXG4gIGFzU3RyaW5nKG5vU3VwZXJUeXBlID0gKHRoaXMuc3VwZXJUeXBlID09PSBudWxsKSkge1xuICAgIGxldCBzdHJpbmc7XG5cbiAgICBpZiAobm9TdXBlclR5cGUpIHtcbiAgICAgIHN0cmluZyA9IGAke3RoaXMubmFtZX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdXBlclR5cGVOYW1lID0gdGhpcy5zdXBlclR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICBzdHJpbmcgPSBgJHt0aGlzLm5hbWV9OiR7c3VwZXJUeXBlTmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3Qgc3VwZXJUeXBlSlNPTiA9ICh0aGlzLnN1cGVyVHlwZSA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdXBlclR5cGUudG9KU09OKCksXG4gICAgICAgICAga2luZCA9IFRZUEVfS0lORCxcbiAgICAgICAgICBuYW1lID0gdGhpcy5uYW1lLFxuICAgICAgICAgIHN1cGVyVHlwZSA9IHN1cGVyVHlwZUpTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAga2luZCxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBzdXBlclR5cGVcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgcmVsZWFzZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb247XG5cbiAgICBsZXQgeyBzdXBlclR5cGUgfSA9IGpzb247XG5cbiAgICBpZiAoc3VwZXJUeXBlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdXBlclR5cGVKU09OID0gc3VwZXJUeXBlOyAgLy8vXG5cbiAgICAgIGpzb24gPSBzdXBlclR5cGVKU09OOyAvLy9cblxuICAgICAgc3VwZXJUeXBlID0gVHlwZS5mcm9tSlNPTihqc29uLCByZWxlYXNlQ29udGV4dCk7XG5cbiAgICAgIGNvbnN0IHN1cGVyVHlwZU5hbWUgPSBzdXBlclR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICBzdXBlclR5cGUgPSByZWxlYXNlQ29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUoc3VwZXJUeXBlTmFtZSk7IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGUgPSBuZXcgVHlwZShuYW1lLCBzdXBlclR5cGUpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVR5cGVOYW1lKHR5cGVOYW1lKSB7XG4gICAgY29uc3QgbmFtZSA9IHR5cGVOYW1lLCAgLy8vXG4gICAgICAgICAgc3VwZXJUeXBlID0gbnVsbCxcbiAgICAgICAgICB0eXBlID0gbmV3IFR5cGUobmFtZSwgc3VwZXJUeXBlKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgc3RhdGljIGZyb21UeXBlTmFtZUFuZFN1cGVyVHlwZSh0eXBlTmFtZSwgc3VwZXJUeXBlKSB7XG4gICAgY29uc3QgbmFtZSA9IHR5cGVOYW1lLCAgLy8vXG4gICAgICAgICAgdHlwZSA9IG5ldyBUeXBlKG5hbWUsIHN1cGVyVHlwZSk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxufVxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJUeXBlIiwibmFtZSIsInN1cGVyVHlwZSIsImdldE5hbWUiLCJnZXRTdXBlclR5cGUiLCJpc0VxdWFsVG8iLCJ0eXBlIiwiZXF1YWxUbyIsImlzU3ViVHlwZU9mIiwic3ViVHlwZU9mIiwiaXNTdXBlclR5cGVPZiIsInN1cGVyVHlwZU9mIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJlcXVhbFRvVHlwZSIsInN1YlR5cGVPZlR5cGUiLCJlcXVhbFRvVHlwZU9yU3ViVHlwZU9mIiwiaXNFcXVhbFRvT3JTdXBlclR5cGVPZiIsInN1cGVyVHlwZU9mVHlwZSIsImVxdWFsVG9UeXBlT3JTdXBlclR5cGVPZiIsIm1hdGNoIiwibWF0Y2hlcyIsIm1hdGNoTmFtZSIsIm1hdGNoZXNOYW1lIiwibWF0Y2hUeXBlTmFtZSIsInR5cGVOYW1lIiwibWF0Y2hlc1R5cGVOYW1lIiwiYXNTdHJpbmciLCJub1N1cGVyVHlwZSIsInN0cmluZyIsInN1cGVyVHlwZU5hbWUiLCJ0b0pTT04iLCJzdXBlclR5cGVKU09OIiwia2luZCIsIlRZUEVfS0lORCIsImpzb24iLCJmcm9tSlNPTiIsInJlbGVhc2VDb250ZXh0IiwiZmluZFR5cGVCeVR5cGVOYW1lIiwiZnJvbVR5cGVOYW1lIiwiZnJvbVR5cGVOYW1lQW5kU3VwZXJUeXBlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQUlxQkE7OztxQkFGSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFWCxJQUFBLEFBQU1BLHFCQUFOO2FBQU1BLEtBQ1BDLElBQUksRUFBRUMsU0FBUzs4QkFEUkY7UUFFakIsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxTQUFTLEdBQUdBOztpQkFIQUY7O1lBTW5CRyxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVTtnQkFDUixPQUFPLElBQUksQ0FBQ0YsSUFBSTtZQUNsQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxlQUFlO2dCQUNiLE9BQU8sSUFBSSxDQUFDRixTQUFTO1lBQ3ZCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVVDLElBQUks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
@@ -18,8 +18,8 @@ _export(exports, {
18
18
  matchBracketedNonTerminalNode: function() {
19
19
  return matchBracketedNonTerminalNode;
20
20
  },
21
- bracketedChildNodeFromChildNodes: function() {
22
- return bracketedChildNodeFromChildNodes;
21
+ bracketedNonTerminalChildNodeFromChildNodes: function() {
22
+ return bracketedNonTerminalChildNodeFromChildNodes;
23
23
  }
24
24
  });
25
25
  var _array = require("./array");
@@ -59,34 +59,35 @@ function matchBracketedNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB) {
59
59
  bracketedNodeMatches = nonTerminalNodeMatches; ///
60
60
  }
61
61
  if (!bracketedNodeMatches) {
62
- var nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(), childNodesA = nonTerminalNodeAChildNodes, bracketedChildNodeA = bracketedChildNodeFromChildNodes(childNodesA);
63
- if (bracketedChildNodeA !== null) {
64
- var nodeA = bracketedChildNodeA, nodeB = nonTerminalNodeB, nodeMatches = matchNode(nodeA, nodeB);
62
+ var nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(), childNodesA = nonTerminalNodeAChildNodes, bracketedNonTerminalChildNodeA = bracketedNonTerminalChildNodeFromChildNodes(childNodesA);
63
+ if (bracketedNonTerminalChildNodeA !== null) {
64
+ var nodeA = bracketedNonTerminalChildNodeA, nodeB = nonTerminalNodeB, nodeMatches = matchNode(nodeA, nodeB);
65
65
  bracketedNodeMatches = nodeMatches; ///
66
66
  }
67
67
  }
68
68
  if (!bracketedNodeMatches) {
69
- var nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(), childNodesB = nonTerminalNodeBChildNodes, bracketedChildNodeB = bracketedChildNodeFromChildNodes(childNodesB);
70
- if (bracketedChildNodeB !== null) {
71
- var nodeB1 = bracketedChildNodeB, nodeA1 = nonTerminalNodeA, nodeMatches1 = matchNode(nodeA1, nodeB1);
69
+ var nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(), childNodesB = nonTerminalNodeBChildNodes, bracketedNonTerminalChildNodeB = bracketedNonTerminalChildNodeFromChildNodes(childNodesB);
70
+ if (bracketedNonTerminalChildNodeB !== null) {
71
+ var nodeB1 = bracketedNonTerminalChildNodeB, nodeA1 = nonTerminalNodeA, nodeMatches1 = matchNode(nodeA1, nodeB1);
72
72
  bracketedNodeMatches = nodeMatches1; ///
73
73
  }
74
74
  }
75
75
  return bracketedNodeMatches;
76
76
  }
77
- function bracketedChildNodeFromChildNodes(childNodes) {
78
- var bracketedChildNode = null;
77
+ function bracketedNonTerminalChildNodeFromChildNodes(childNodes) {
78
+ var ruleName = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : _ruleNames.METASTATEMENT_RULE_NAME;
79
+ var bracketedNonTerminalChildNode = null;
79
80
  var childNodesLength = childNodes.length;
80
81
  if (childNodesLength === _constants.BRACKETED_CHILD_NODES_LENGTH) {
81
82
  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();
82
83
  if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
83
- 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;
84
- if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameMetastatementRuleName && secondTerminalNodeContentRightBracket) {
85
- bracketedChildNode = nonTerminalNode; ///
84
+ var nonTerminalNode = secondChildNode, firstTerminalNode = firstChildNode, secondTerminalNode = thirdChildNode, nonTerminalNodeRuleName = nonTerminalNode.getRuleName(), firstTerminalNodeContent = firstTerminalNode.getContent(), secondTerminalNodeContent = secondTerminalNode.getContent(), nonTerminalNodeRuleNameRuleName = nonTerminalNodeRuleName === ruleName, firstTerminalNodeContentLeftBracket = firstTerminalNodeContent === _constants.LEFT_BRACKET, secondTerminalNodeContentRightBracket = secondTerminalNodeContent === _constants.RIGHT_BRACKET;
85
+ if (nonTerminalNodeRuleNameRuleName && firstTerminalNodeContentLeftBracket && secondTerminalNodeContentRightBracket) {
86
+ bracketedNonTerminalChildNode = nonTerminalNode; ///
86
87
  }
87
88
  }
88
89
  }
89
- return bracketedChildNode;
90
+ return bracketedNonTerminalChildNode;
90
91
  }
91
92
  function matchTerminalNode(terminalNodeA, terminalNodeB) {
92
93
  var matches = terminalNodeA.match(terminalNodeB), terminalNodeMatches = matches; ///
@@ -102,4 +103,4 @@ function matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB) {
102
103
  return nonTerminalNodeMatches;
103
104
  }
104
105
 
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZmlyc3QsIHNlY29uZCwgdGhpcmQgfSBmcm9tIFwiLi9hcnJheVwiO1xuaW1wb3J0IHsgTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5pbXBvcnQgeyBCUkFDS0VURURfQ0hJTERfTk9ERVNfTEVOR1RILCBMRUZUX0JSQUNLRVQsIFJJR0hUX0JSQUNLRVQgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaE5vZGUobm9kZUEsIG5vZGVCKSB7XG4gIGxldCBub2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVBVGVybWluYWxOb2RlID0gbm9kZUEuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgbm9kZUJUZXJtaW5hbE5vZGUgPSBub2RlQi5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlQVRlcm1pbmFsTm9kZSA9PT0gbm9kZUJUZXJtaW5hbE5vZGUpIHtcbiAgICBpZiAobm9kZUFUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZUEgPSBub2RlQSwgIC8vL1xuICAgICAgICAgICAgdGVybWluYWxOb2RlQiA9IG5vZGVCLCAgLy8vXG4gICAgICAgICAgICB0ZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlQSwgdGVybWluYWxOb2RlQik7XG5cbiAgICAgIG5vZGVNYXRjaGVzID0gdGVybWluYWxOb2RlTWF0Y2hlczsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVBID0gbm9kZUEsICAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUIgPSBub2RlQiwgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlQSwgbm9uVGVybWluYWxOb2RlQik7XG5cbiAgICAgIG5vZGVNYXRjaGVzID0gbm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGVNYXRjaGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hOb2Rlcyhub2Rlc0EsIG5vZGVzQikge1xuICBsZXQgbm9kZXNNYXRjaCA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVzQUxlbmd0aCA9IG5vZGVzQS5sZW5ndGgsXG4gICAgICAgIG5vZGVzQkxlbmd0aCA9IG5vZGVzQi5sZW5ndGg7XG5cbiAgaWYgKG5vZGVzQUxlbmd0aCA9PT0gbm9kZXNCTGVuZ3RoKSB7XG4gICAgbm9kZXNNYXRjaCA9IG5vZGVzQS5ldmVyeSgobm9kZUEsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBub2RlQiA9IG5vZGVzQltpbmRleF0sXG4gICAgICAgICAgICBub2RlTWF0Y2hlcyA9IG1hdGNoTm9kZShub2RlQSwgbm9kZUIpO1xuXG4gICAgICBpZiAobm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBub2Rlc01hdGNoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hCcmFja2V0ZWROb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlQSwgbm9uVGVybWluYWxOb2RlQikge1xuICBsZXQgYnJhY2tldGVkTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBpZiAoIWJyYWNrZXRlZE5vZGVNYXRjaGVzKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoTm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZUEsIG5vblRlcm1pbmFsTm9kZUIpO1xuXG4gICAgYnJhY2tldGVkTm9kZU1hdGNoZXMgPSBub25UZXJtaW5hbE5vZGVNYXRjaGVzOyAgLy8vXG4gIH1cblxuICBpZiAoIWJyYWNrZXRlZE5vZGVNYXRjaGVzKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlQUNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGVBLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBjaGlsZE5vZGVzQSA9IG5vblRlcm1pbmFsTm9kZUFDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICBicmFja2V0ZWRDaGlsZE5vZGVBID0gYnJhY2tldGVkQ2hpbGROb2RlRnJvbUNoaWxkTm9kZXMoY2hpbGROb2Rlc0EpO1xuXG4gICAgaWYgKGJyYWNrZXRlZENoaWxkTm9kZUEgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vZGVBID0gYnJhY2tldGVkQ2hpbGROb2RlQSwgIC8vL1xuICAgICAgICAgICAgbm9kZUIgPSBub25UZXJtaW5hbE5vZGVCLCAvLy9cbiAgICAgICAgICAgIG5vZGVNYXRjaGVzID0gbWF0Y2hOb2RlKG5vZGVBLCBub2RlQik7XG5cbiAgICAgIGJyYWNrZXRlZE5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuICAgIH1cbiAgfVxuXG4gIGlmICghYnJhY2tldGVkTm9kZU1hdGNoZXMpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGVCQ2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZUIuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIGNoaWxkTm9kZXNCID0gbm9uVGVybWluYWxOb2RlQkNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgIGJyYWNrZXRlZENoaWxkTm9kZUIgPSBicmFja2V0ZWRDaGlsZE5vZGVGcm9tQ2hpbGROb2RlcyhjaGlsZE5vZGVzQik7XG5cbiAgICBpZiAoYnJhY2tldGVkQ2hpbGROb2RlQiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgbm9kZUIgPSBicmFja2V0ZWRDaGlsZE5vZGVCLCAgLy8vXG4gICAgICAgICAgICBub2RlQSA9IG5vblRlcm1pbmFsTm9kZUEsIC8vL1xuICAgICAgICAgICAgbm9kZU1hdGNoZXMgPSBtYXRjaE5vZGUobm9kZUEsIG5vZGVCKTtcblxuICAgICAgYnJhY2tldGVkTm9kZU1hdGNoZXMgPSBub2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJyYWNrZXRlZE5vZGVNYXRjaGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnJhY2tldGVkQ2hpbGROb2RlRnJvbUNoaWxkTm9kZXMoY2hpbGROb2Rlcykge1xuICBsZXQgYnJhY2tldGVkQ2hpbGROb2RlID0gbnVsbDtcblxuICBjb25zdCBjaGlsZE5vZGVzTGVuZ3RoID0gY2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKGNoaWxkTm9kZXNMZW5ndGggPT09IEJSQUNLRVRFRF9DSElMRF9OT0RFU19MRU5HVEgpIHtcbiAgICBjb25zdCBmaXJzdENoaWxkTm9kZSA9IGZpcnN0KGNoaWxkTm9kZXMpLFxuICAgICAgICAgIHRoaXJkQ2hpbGROb2RlID0gdGhpcmQoY2hpbGROb2RlcyksXG4gICAgICAgICAgc2Vjb25kQ2hpbGROb2RlID0gc2Vjb25kKGNoaWxkTm9kZXMpLFxuICAgICAgICAgIGZpcnN0Q2hpbGROb2RlVGVybWluYWxOb2RlID0gZmlyc3RDaGlsZE5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICB0aGlyZENoaWxkTm9kZVRlcm1pbmFsTm9kZSA9IHRoaXJkQ2hpbGROb2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgc2Vjb25kQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlID0gc2Vjb25kQ2hpbGROb2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAoZmlyc3RDaGlsZE5vZGVUZXJtaW5hbE5vZGUgJiYgc2Vjb25kQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlICYmIHRoaXJkQ2hpbGROb2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzZWNvbmRDaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgIGZpcnN0VGVybWluYWxOb2RlID0gZmlyc3RDaGlsZE5vZGUsIC8vL1xuICAgICAgICAgICAgc2Vjb25kVGVybWluYWxOb2RlID0gdGhpcmRDaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgICAgICBmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnQgPSBmaXJzdFRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCksXG4gICAgICAgICAgICBzZWNvbmRUZXJtaW5hbE5vZGVDb250ZW50ID0gc2Vjb25kVGVybWluYWxOb2RlLmdldENvbnRlbnQoKSxcbiAgICAgICAgICAgIGZpcnN0VGVybWluYWxOb2RlQ29udGVudExlZnRCcmFja2V0ID0gKGZpcnN0VGVybWluYWxOb2RlQ29udGVudCA9PT0gTEVGVF9CUkFDS0VUKSxcbiAgICAgICAgICAgIHNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnRSaWdodEJyYWNrZXQgPSAoc2Vjb25kVGVybWluYWxOb2RlQ29udGVudCA9PT0gUklHSFRfQlJBQ0tFVCksXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVSdWxlTmFtZU1ldGFzdGF0ZW1lbnRSdWxlTmFtZSA9IChub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUpO1xuXG4gICAgICBpZiAoZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50TGVmdEJyYWNrZXQgJiYgbm9uVGVybWluYWxOb2RlUnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUgJiYgc2Vjb25kVGVybWluYWxOb2RlQ29udGVudFJpZ2h0QnJhY2tldCkge1xuICAgICAgICBicmFja2V0ZWRDaGlsZE5vZGUgPSBub25UZXJtaW5hbE5vZGU7ICAvLy9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnJhY2tldGVkQ2hpbGROb2RlO1xufVxuXG5mdW5jdGlvbiBtYXRjaFRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGVBLCB0ZXJtaW5hbE5vZGVCKSB7XG4gIGNvbnN0IG1hdGNoZXMgPSB0ZXJtaW5hbE5vZGVBLm1hdGNoKHRlcm1pbmFsTm9kZUIpLFxuICAgICAgICB0ZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hlczsgIC8vL1xuXG4gIHJldHVybiB0ZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaE5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGVBLCBub25UZXJtaW5hbE5vZGVCKSB7XG4gIGxldCBub25UZXJtaW5hbE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9uVGVybWluYWxOb2RlQVJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlQS5nZXRSdWxlTmFtZSgpLCAvLy9cbiAgICAgICAgbm9uVGVybWluYWxOb2RlQlJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlQi5nZXRSdWxlTmFtZSgpOyAvLy9cblxuICBpZiAobm9uVGVybWluYWxOb2RlQVJ1bGVOYW1lID09PSBub25UZXJtaW5hbE5vZGVCUnVsZU5hbWUpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGVBQ2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZUEuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUJDaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlQi5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgbm9kZXNBID0gbm9uVGVybWluYWxOb2RlQUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgIG5vZGVzQiA9IG5vblRlcm1pbmFsTm9kZUJDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICBub2Rlc01hdGNoID0gbWF0Y2hOb2Rlcyhub2Rlc0EsIG5vZGVzQik7XG5cbiAgICBub25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbm9kZXNNYXRjaDsgLy8vXG4gIH1cblxuICByZXR1cm4gbm9uVGVybWluYWxOb2RlTWF0Y2hlcztcbn1cbiJdLCJuYW1lcyI6WyJtYXRjaE5vZGUiLCJtYXRjaE5vZGVzIiwibWF0Y2hCcmFja2V0ZWROb25UZXJtaW5hbE5vZGUiLCJicmFja2V0ZWRDaGlsZE5vZGVGcm9tQ2hpbGROb2RlcyIsIm5vZGVBIiwibm9kZUIiLCJub2RlTWF0Y2hlcyIsIm5vZGVBVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJub2RlQlRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZUEiLCJ0ZXJtaW5hbE5vZGVCIiwidGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlQSIsIm5vblRlcm1pbmFsTm9kZUIiLCJub25UZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hOb25UZXJtaW5hbE5vZGUiLCJub2Rlc0EiLCJub2Rlc0IiLCJub2Rlc01hdGNoIiwibm9kZXNBTGVuZ3RoIiwibGVuZ3RoIiwibm9kZXNCTGVuZ3RoIiwiZXZlcnkiLCJpbmRleCIsImJyYWNrZXRlZE5vZGVNYXRjaGVzIiwibm9uVGVybWluYWxOb2RlQUNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiY2hpbGROb2Rlc0EiLCJicmFja2V0ZWRDaGlsZE5vZGVBIiwibm9uVGVybWluYWxOb2RlQkNoaWxkTm9kZXMiLCJjaGlsZE5vZGVzQiIsImJyYWNrZXRlZENoaWxkTm9kZUIiLCJjaGlsZE5vZGVzIiwiYnJhY2tldGVkQ2hpbGROb2RlIiwiY2hpbGROb2Rlc0xlbmd0aCIsIkJSQUNLRVRFRF9DSElMRF9OT0RFU19MRU5HVEgiLCJmaXJzdENoaWxkTm9kZSIsImZpcnN0IiwidGhpcmRDaGlsZE5vZGUiLCJ0aGlyZCIsInNlY29uZENoaWxkTm9kZSIsInNlY29uZCIsImZpcnN0Q2hpbGROb2RlVGVybWluYWxOb2RlIiwidGhpcmRDaGlsZE5vZGVUZXJtaW5hbE5vZGUiLCJzZWNvbmRDaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUiLCJpc05vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsImZpcnN0VGVybWluYWxOb2RlIiwic2Vjb25kVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlUnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsImZpcnN0VGVybWluYWxOb2RlQ29udGVudCIsImdldENvbnRlbnQiLCJzZWNvbmRUZXJtaW5hbE5vZGVDb250ZW50IiwiZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50TGVmdEJyYWNrZXQiLCJMRUZUX0JSQUNLRVQiLCJzZWNvbmRUZXJtaW5hbE5vZGVDb250ZW50UmlnaHRCcmFja2V0IiwiUklHSFRfQlJBQ0tFVCIsIm5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lIiwiTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUiLCJtYXRjaGVzIiwibWF0Y2giLCJub25UZXJtaW5hbE5vZGVBUnVsZU5hbWUiLCJub25UZXJtaW5hbE5vZGVCUnVsZU5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQU1nQkEsU0FBUztlQUFUQTs7SUF5QkFDLFVBQVU7ZUFBVkE7O0lBb0JBQyw2QkFBNkI7ZUFBN0JBOztJQXdDQUMsZ0NBQWdDO2VBQWhDQTs7O3FCQXpGcUI7eUJBQ0c7eUJBQ2tDO0FBRW5FLFNBQVNILFVBQVVJLEtBQUssRUFBRUMsS0FBSyxFQUFFO0lBQ3RDLElBQUlDLGNBQWMsS0FBSztJQUV2QixJQUFNQyxvQkFBb0JILE1BQU1JLGNBQWMsSUFDeENDLG9CQUFvQkosTUFBTUcsY0FBYztJQUU5QyxJQUFJRCxzQkFBc0JFLG1CQUFtQjtRQUMzQyxJQUFJRixtQkFBbUI7WUFDckIsSUFBTUcsZ0JBQWdCTixPQUNoQk8sZ0JBQWdCTixPQUNoQk8sc0JBQXNCQyxrQkFBa0JILGVBQWVDO1lBRTdETCxjQUFjTSxxQkFBc0IsR0FBRztRQUN6QyxPQUFPO1lBQ0wsSUFBTUUsbUJBQW1CVixPQUNuQlcsbUJBQW1CVixPQUNuQlcseUJBQXlCQyxxQkFBcUJILGtCQUFrQkM7WUFFdEVULGNBQWNVLHdCQUF3QixHQUFHO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBT1Y7QUFDVDtBQUVPLFNB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
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZmlyc3QsIHNlY29uZCwgdGhpcmQgfSBmcm9tIFwiLi9hcnJheVwiO1xuaW1wb3J0IHsgTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5pbXBvcnQgeyBCUkFDS0VURURfQ0hJTERfTk9ERVNfTEVOR1RILCBMRUZUX0JSQUNLRVQsIFJJR0hUX0JSQUNLRVQgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaE5vZGUobm9kZUEsIG5vZGVCKSB7XG4gIGxldCBub2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVBVGVybWluYWxOb2RlID0gbm9kZUEuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgbm9kZUJUZXJtaW5hbE5vZGUgPSBub2RlQi5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlQVRlcm1pbmFsTm9kZSA9PT0gbm9kZUJUZXJtaW5hbE5vZGUpIHtcbiAgICBpZiAobm9kZUFUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZUEgPSBub2RlQSwgIC8vL1xuICAgICAgICAgICAgdGVybWluYWxOb2RlQiA9IG5vZGVCLCAgLy8vXG4gICAgICAgICAgICB0ZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlQSwgdGVybWluYWxOb2RlQik7XG5cbiAgICAgIG5vZGVNYXRjaGVzID0gdGVybWluYWxOb2RlTWF0Y2hlczsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVBID0gbm9kZUEsICAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUIgPSBub2RlQiwgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlQSwgbm9uVGVybWluYWxOb2RlQik7XG5cbiAgICAgIG5vZGVNYXRjaGVzID0gbm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGVNYXRjaGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hOb2Rlcyhub2Rlc0EsIG5vZGVzQikge1xuICBsZXQgbm9kZXNNYXRjaCA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVzQUxlbmd0aCA9IG5vZGVzQS5sZW5ndGgsXG4gICAgICAgIG5vZGVzQkxlbmd0aCA9IG5vZGVzQi5sZW5ndGg7XG5cbiAgaWYgKG5vZGVzQUxlbmd0aCA9PT0gbm9kZXNCTGVuZ3RoKSB7XG4gICAgbm9kZXNNYXRjaCA9IG5vZGVzQS5ldmVyeSgobm9kZUEsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBub2RlQiA9IG5vZGVzQltpbmRleF0sXG4gICAgICAgICAgICBub2RlTWF0Y2hlcyA9IG1hdGNoTm9kZShub2RlQSwgbm9kZUIpO1xuXG4gICAgICBpZiAobm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBub2Rlc01hdGNoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hCcmFja2V0ZWROb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlQSwgbm9uVGVybWluYWxOb2RlQikge1xuICBsZXQgYnJhY2tldGVkTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBpZiAoIWJyYWNrZXRlZE5vZGVNYXRjaGVzKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoTm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZUEsIG5vblRlcm1pbmFsTm9kZUIpO1xuXG4gICAgYnJhY2tldGVkTm9kZU1hdGNoZXMgPSBub25UZXJtaW5hbE5vZGVNYXRjaGVzOyAgLy8vXG4gIH1cblxuICBpZiAoIWJyYWNrZXRlZE5vZGVNYXRjaGVzKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlQUNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGVBLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBjaGlsZE5vZGVzQSA9IG5vblRlcm1pbmFsTm9kZUFDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICBicmFja2V0ZWROb25UZXJtaW5hbENoaWxkTm9kZUEgPSBicmFja2V0ZWROb25UZXJtaW5hbENoaWxkTm9kZUZyb21DaGlsZE5vZGVzKGNoaWxkTm9kZXNBKTtcblxuICAgIGlmIChicmFja2V0ZWROb25UZXJtaW5hbENoaWxkTm9kZUEgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vZGVBID0gYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGVBLCAgLy8vXG4gICAgICAgICAgICBub2RlQiA9IG5vblRlcm1pbmFsTm9kZUIsIC8vL1xuICAgICAgICAgICAgbm9kZU1hdGNoZXMgPSBtYXRjaE5vZGUobm9kZUEsIG5vZGVCKTtcblxuICAgICAgYnJhY2tldGVkTm9kZU1hdGNoZXMgPSBub2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgaWYgKCFicmFja2V0ZWROb2RlTWF0Y2hlcykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZUJDaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlQi5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgY2hpbGROb2Rlc0IgPSBub25UZXJtaW5hbE5vZGVCQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGVCID0gYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGVGcm9tQ2hpbGROb2RlcyhjaGlsZE5vZGVzQik7XG5cbiAgICBpZiAoYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGVCICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBub2RlQiA9IGJyYWNrZXRlZE5vblRlcm1pbmFsQ2hpbGROb2RlQiwgIC8vL1xuICAgICAgICAgICAgbm9kZUEgPSBub25UZXJtaW5hbE5vZGVBLCAvLy9cbiAgICAgICAgICAgIG5vZGVNYXRjaGVzID0gbWF0Y2hOb2RlKG5vZGVBLCBub2RlQik7XG5cbiAgICAgIGJyYWNrZXRlZE5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWROb2RlTWF0Y2hlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJyYWNrZXRlZE5vblRlcm1pbmFsQ2hpbGROb2RlRnJvbUNoaWxkTm9kZXMoY2hpbGROb2RlcywgcnVsZU5hbWUgPSBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSkge1xuICBsZXQgYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IGNoaWxkTm9kZXNMZW5ndGggPSBjaGlsZE5vZGVzLmxlbmd0aDtcblxuICBpZiAoY2hpbGROb2Rlc0xlbmd0aCA9PT0gQlJBQ0tFVEVEX0NISUxEX05PREVTX0xFTkdUSCkge1xuICAgIGNvbnN0IGZpcnN0Q2hpbGROb2RlID0gZmlyc3QoY2hpbGROb2RlcyksXG4gICAgICAgICAgdGhpcmRDaGlsZE5vZGUgPSB0aGlyZChjaGlsZE5vZGVzKSxcbiAgICAgICAgICBzZWNvbmRDaGlsZE5vZGUgPSBzZWNvbmQoY2hpbGROb2RlcyksXG4gICAgICAgICAgZmlyc3RDaGlsZE5vZGVUZXJtaW5hbE5vZGUgPSBmaXJzdENoaWxkTm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIHRoaXJkQ2hpbGROb2RlVGVybWluYWxOb2RlID0gdGhpcmRDaGlsZE5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICBzZWNvbmRDaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgPSBzZWNvbmRDaGlsZE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChmaXJzdENoaWxkTm9kZVRlcm1pbmFsTm9kZSAmJiBzZWNvbmRDaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgJiYgdGhpcmRDaGlsZE5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHNlY29uZENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgZmlyc3RUZXJtaW5hbE5vZGUgPSBmaXJzdENoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICBzZWNvbmRUZXJtaW5hbE5vZGUgPSB0aGlyZENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgICAgIGZpcnN0VGVybWluYWxOb2RlQ29udGVudCA9IGZpcnN0VGVybWluYWxOb2RlLmdldENvbnRlbnQoKSxcbiAgICAgICAgICAgIHNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnQgPSBzZWNvbmRUZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpLFxuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWVSdWxlTmFtZSA9IChub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gcnVsZU5hbWUpLFxuICAgICAgICAgICAgZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50TGVmdEJyYWNrZXQgPSAoZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50ID09PSBMRUZUX0JSQUNLRVQpLFxuICAgICAgICAgICAgc2Vjb25kVGVybWluYWxOb2RlQ29udGVudFJpZ2h0QnJhY2tldCA9IChzZWNvbmRUZXJtaW5hbE5vZGVDb250ZW50ID09PSBSSUdIVF9CUkFDS0VUKTtcblxuICAgICAgaWYgKG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lUnVsZU5hbWUgJiYgZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50TGVmdEJyYWNrZXQgJiYgc2Vjb25kVGVybWluYWxOb2RlQ29udGVudFJpZ2h0QnJhY2tldCkge1xuICAgICAgICBicmFja2V0ZWROb25UZXJtaW5hbENoaWxkTm9kZSA9IG5vblRlcm1pbmFsTm9kZTsgIC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWROb25UZXJtaW5hbENoaWxkTm9kZTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlQSwgdGVybWluYWxOb2RlQikge1xuICBjb25zdCBtYXRjaGVzID0gdGVybWluYWxOb2RlQS5tYXRjaCh0ZXJtaW5hbE5vZGVCKSxcbiAgICAgICAgdGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoZXM7ICAvLy9cblxuICByZXR1cm4gdGVybWluYWxOb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlQSwgbm9uVGVybWluYWxOb2RlQikge1xuICBsZXQgbm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZUFSdWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZUEuZ2V0UnVsZU5hbWUoKSwgLy8vXG4gICAgICAgIG5vblRlcm1pbmFsTm9kZUJSdWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZUIuZ2V0UnVsZU5hbWUoKTsgLy8vXG5cbiAgaWYgKG5vblRlcm1pbmFsTm9kZUFSdWxlTmFtZSA9PT0gbm9uVGVybWluYWxOb2RlQlJ1bGVOYW1lKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlQUNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGVBLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVCQ2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZUIuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIG5vZGVzQSA9IG5vblRlcm1pbmFsTm9kZUFDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICBub2Rlc0IgPSBub25UZXJtaW5hbE5vZGVCQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgbm9kZXNNYXRjaCA9IG1hdGNoTm9kZXMobm9kZXNBLCBub2Rlc0IpO1xuXG4gICAgbm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG5vZGVzTWF0Y2g7IC8vL1xuICB9XG5cbiAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZU1hdGNoZXM7XG59XG4iXSwibmFtZXMiOlsibWF0Y2hOb2RlIiwibWF0Y2hOb2RlcyIsIm1hdGNoQnJhY2tldGVkTm9uVGVybWluYWxOb2RlIiwiYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGVGcm9tQ2hpbGROb2RlcyIsIm5vZGVBIiwibm9kZUIiLCJub2RlTWF0Y2hlcyIsIm5vZGVBVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJub2RlQlRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZUEiLCJ0ZXJtaW5hbE5vZGVCIiwidGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlQSIsIm5vblRlcm1pbmFsTm9kZUIiLCJub25UZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hOb25UZXJtaW5hbE5vZGUiLCJub2Rlc0EiLCJub2Rlc0IiLCJub2Rlc01hdGNoIiwibm9kZXNBTGVuZ3RoIiwibGVuZ3RoIiwibm9kZXNCTGVuZ3RoIiwiZXZlcnkiLCJpbmRleCIsImJyYWNrZXRlZE5vZGVNYXRjaGVzIiwibm9uVGVybWluYWxOb2RlQUNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiY2hpbGROb2Rlc0EiLCJicmFja2V0ZWROb25UZXJtaW5hbENoaWxkTm9kZUEiLCJub25UZXJtaW5hbE5vZGVCQ2hpbGROb2RlcyIsImNoaWxkTm9kZXNCIiwiYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGVCIiwiY2hpbGROb2RlcyIsInJ1bGVOYW1lIiwiTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUiLCJicmFja2V0ZWROb25UZXJtaW5hbENoaWxkTm9kZSIsImNoaWxkTm9kZXNMZW5ndGgiLCJCUkFDS0VURURfQ0hJTERfTk9ERVNfTEVOR1RIIiwiZmlyc3RDaGlsZE5vZGUiLCJmaXJzdCIsInRoaXJkQ2hpbGROb2RlIiwidGhpcmQiLCJzZWNvbmRDaGlsZE5vZGUiLCJzZWNvbmQiLCJmaXJzdENoaWxkTm9kZVRlcm1pbmFsTm9kZSIsInRoaXJkQ2hpbGROb2RlVGVybWluYWxOb2RlIiwic2Vjb25kQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJmaXJzdFRlcm1pbmFsTm9kZSIsInNlY29uZFRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnQiLCJnZXRDb250ZW50Iiwic2Vjb25kVGVybWluYWxOb2RlQ29udGVudCIsIm5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lUnVsZU5hbWUiLCJmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnRMZWZ0QnJhY2tldCIsIkxFRlRfQlJBQ0tFVCIsInNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnRSaWdodEJyYWNrZXQiLCJSSUdIVF9CUkFDS0VUIiwibWF0Y2hlcyIsIm1hdGNoIiwibm9uVGVybWluYWxOb2RlQVJ1bGVOYW1lIiwibm9uVGVybWluYWxOb2RlQlJ1bGVOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFNZ0JBLFNBQVM7ZUFBVEE7O0lBeUJBQyxVQUFVO2VBQVZBOztJQW9CQUMsNkJBQTZCO2VBQTdCQTs7SUF3Q0FDLDJDQUEyQztlQUEzQ0E7OztxQkF6RnFCO3lCQUNHO3lCQUNrQztBQUVuRSxTQUFTSCxVQUFVSSxLQUFLLEVBQUVDLEtBQUssRUFBRTtJQUN0QyxJQUFJQyxjQUFjLEtBQUs7SUFFdkIsSUFBTUMsb0JBQW9CSCxNQUFNSSxjQUFjLElBQ3hDQyxvQkFBb0JKLE1BQU1HLGNBQWM7SUFFOUMsSUFBSUQsc0JBQXNCRSxtQkFBbUI7UUFDM0MsSUFBSUYsbUJBQW1CO1lBQ3JCLElBQU1HLGdCQUFnQk4sT0FDaEJPLGdCQUFnQk4sT0FDaEJPLHNCQUFzQkMsa0JBQWtCSCxlQUFlQztZQUU3REwsY0FBY00scUJBQXNCLEdBQUc7UUFDekMsT0FBTztZQUNMLElBQU1FLG1CQUFtQlYsT0FDbkJXLG1CQUFtQlYsT0FDbkJXLHlCQUF5QkMscUJBQXFCSCxrQkFBa0JDO1lBRXRFVCxjQUFjVSx3QkFBd0IsR0FBRztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU9WO0FBQ1Q7QUFFTyxTQUFTTCxXQUFXaUIsTUFBTSxFQUFFQyxNQUFNLEVBQUU7SUFDekMsSUFBSUMsYUFBYSxLQUFLO0lBRXRCLElBQU1DLGVBQWVILE9BQU9JLE1BQU0sRUFDNUJDLGVBQWVKLE9BQU9HLE1BQU07SUFFbEMsSUFBSUQsaUJBQWlCRSxjQUFjO1FBQ2pDSCxhQUFhRixPQUFPTSxLQUFLLENBQUMsU0FBQ3BCLE9BQU9xQixPQUFVO1lBQzFDLElBQU1wQixRQUFRYyxNQUFNLENBQUNNLE1BQU0sRUFDckJuQixjQUFjTixVQUFVSSxPQUFPQztZQUVyQyxJQUFJQyxhQUFhO2dCQUNmLE9BQU8sSUFBSTtZQUNiLENBQUM7UUFDSDtJQUNGLENBQUM7SUFFRCxPQUFPYztBQUNUO0FBRU8sU0FBU2xCLDhCQUE4QlksZ0JBQWdCLEVBQUVDLGdCQUFnQixFQUFFO0lBQ2hGLElBQUlXLHVCQUF1QixLQUFLO0lBRWhDLElBQUksQ0FBQ0Esc0JBQXNCO1FBQ3pCLElBQU1WLHlCQUF5QkMscUJBQXFCSCxrQkFBa0JDO1FBRXRFVyx1QkFBdUJWLHdCQUF5QixHQUFHO0lBQ3JELENBQUM7SUFFRCxJQUFJLENBQUNVLHNCQUFzQjtRQUN6QixJQUFNQyw2QkFBNkJiLGlCQUFpQmMsYUFBYSxJQUMzREMsY0FBY0YsNEJBQ2RHLGlDQUFpQzNCLDRDQUE0QzBCO1FBRW5GLElBQUlDLG1DQUFtQyxJQUFJLEVBQUU7WUFDM0MsSUFBTTFCLFFBQVEwQixnQ0FDUnpCLFFBQVFVLGtCQUNSVCxjQUFjTixVQUFVSSxPQUFPQztZQUVyQ3FCLHVCQUF1QnBCLGFBQWEsR0FBRztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQ29CLHNCQUFzQjtRQUN6QixJQUFNSyw2QkFBNkJoQixpQkFBaUJhLGFBQWEsSUFDM0RJLGNBQWNELDRCQUNkRSxpQ0FBaUM5Qiw0Q0FBNEM2QjtRQUVuRixJQUFJQyxtQ0FBbUMsSUFBSSxFQUFFO1lBQzNDLElBQU01QixTQUFRNEIsZ0NBQ1I3QixTQUFRVSxrQkFDUlIsZUFBY04sVUFBVUksUUFBT0M7WUFFckNxQix1QkFBdUJwQixjQUFhLEdBQUc7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPb0I7QUFDVDtBQUVPLFNBQVN2Qiw0Q0FBNEMrQixVQUFVLEVBQXNDO1FBQXBDQyxXQUFBQSxpRUFBV0Msa0NBQXVCO0lBQ3hHLElBQUlDLGdDQUFnQyxJQUFJO0lBRXhDLElBQU1DLG1CQUFtQkosV0FBV1osTUFBTTtJQUUxQyxJQUFJZ0IscUJBQXFCQyx1Q0FBNEIsRUFBRTtRQUNyRCxJQUFNQyxpQkFBaUJDLElBQUFBLFlBQUssRUFBQ1AsYUFDdkJRLGlCQUFpQkMsSUFBQUEsWUFBSyxFQUFDVCxhQUN2QlUsa0JBQWtCQyxJQUFBQSxhQUFNLEVBQUNYLGFBQ3pCWSw2QkFBNkJOLGVBQWVoQyxjQUFjLElBQzFEdUMsNkJBQTZCTCxlQUFlbEMsY0FBYyxJQUMxRHdDLGlDQUFpQ0osZ0JBQWdCSyxpQkFBaUI7UUFFeEUsSUFBSUgsOEJBQThCRSxrQ0FBa0NELDRCQUE0QjtZQUM5RixJQUFNRyxrQkFBa0JOLGlCQUNsQk8sb0JBQW9CWCxnQkFDcEJZLHFCQUFxQlYsZ0JBQ3JCVywwQkFBMEJILGdCQUFnQkksV0FBVyxJQUNyREMsMkJBQTJCSixrQkFBa0JLLFVBQVUsSUFDdkRDLDRCQUE0QkwsbUJBQW1CSSxVQUFVLElBQ3pERSxrQ0FBbUNMLDRCQUE0QmxCLFVBQy9Ed0Isc0NBQXVDSiw2QkFBNkJLLHVCQUFZLEVBQ2hGQyx3Q0FBeUNKLDhCQUE4Qkssd0JBQWE7WUFFMUYsSUFBSUosbUNBQW1DQyx1Q0FBdUNFLHVDQUF1QztnQkFDbkh4QixnQ0FBZ0NhLGlCQUFrQixHQUFHO1lBQ3ZELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU9iO0FBQ1Q7QUFFQSxTQUFTeEIsa0JBQWtCSCxhQUFhLEVBQUVDLGFBQWEsRUFBRTtJQUN2RCxJQUFNb0QsVUFBVXJELGNBQWNzRCxLQUFLLENBQUNyRCxnQkFDOUJDLHNCQUFzQm1ELFNBQVUsR0FBRztJQUV6QyxPQUFPbkQ7QUFDVDtBQUVBLFNBQVNLLHFCQUFxQkgsZ0JBQWdCLEVBQUVDLGdCQUFnQixFQUFFO0lBQ2hFLElBQUlDLHlCQUF5QixLQUFLO0lBRWxDLElBQU1pRCwyQkFBMkJuRCxpQkFBaUJ3QyxXQUFXLElBQ3ZEWSwyQkFBMkJuRCxpQkFBaUJ1QyxXQUFXLElBQUksR0FBRztJQUVwRSxJQUFJVyw2QkFBNkJDLDBCQUEwQjtRQUN6RCxJQUFNdkMsNkJBQTZCYixpQkFBaUJjLGFBQWEsSUFDM0RHLDZCQUE2QmhCLGlCQUFpQmEsYUFBYSxJQUMzRFYsU0FBU1MsNEJBQ1RSLFNBQVNZLDRCQUNUWCxhQUFhbkIsV0FBV2lCLFFBQVFDO1FBRXRDSCx5QkFBeUJJLFlBQVksR0FBRztJQUMxQyxDQUFDO0lBRUQsT0FBT0o7QUFDVCJ9
package/lib/variable.js CHANGED
@@ -28,11 +28,11 @@ function _createClass(Constructor, protoProps, staticProps) {
28
28
  return Constructor;
29
29
  }
30
30
  var Variable = /*#__PURE__*/ function() {
31
- function Variable(type, name, value) {
31
+ function Variable(type, name, termNode) {
32
32
  _classCallCheck(this, Variable);
33
33
  this.type = type;
34
34
  this.name = name;
35
- this.value = value;
35
+ this.termNode = termNode;
36
36
  }
37
37
  _createClass(Variable, [
38
38
  {
@@ -48,22 +48,15 @@ var Variable = /*#__PURE__*/ function() {
48
48
  }
49
49
  },
50
50
  {
51
- key: "getValue",
52
- value: function getValue() {
53
- return this.value;
51
+ key: "getTermNode",
52
+ value: function getTermNode() {
53
+ return this.termNode;
54
54
  }
55
55
  },
56
56
  {
57
- key: "isDefined",
58
- value: function isDefined() {
59
- var defined = this.value !== undefined;
60
- return defined;
61
- }
62
- },
63
- {
64
- key: "setValue",
65
- value: function setValue(value) {
66
- this.value = value;
57
+ key: "setTermNode",
58
+ value: function setTermNode(termNode) {
59
+ this.termNode = termNode;
67
60
  }
68
61
  },
69
62
  {
@@ -80,8 +73,8 @@ var Variable = /*#__PURE__*/ function() {
80
73
  if (variable === this) {
81
74
  equalTo = true;
82
75
  } else {
83
- var value = variable.getValue();
84
- if (value === this.value) {
76
+ var termNode = variable.getTermNode();
77
+ if (termNode === this.termNode) {
85
78
  equalTo = true;
86
79
  }
87
80
  }
@@ -105,7 +98,7 @@ var Variable = /*#__PURE__*/ function() {
105
98
  {
106
99
  key: "fromTypeAndName",
107
100
  value: function fromTypeAndName(type, name) {
108
- var value = undefined, variable = new Variable(type, name, value);
101
+ var termNode = null, variable = new Variable(type, name, termNode);
109
102
  return variable;
110
103
  }
111
104
  }
@@ -113,4 +106,4 @@ var Variable = /*#__PURE__*/ function() {
113
106
  return Variable;
114
107
  }();
115
108
 
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92YXJpYWJsZS5qcyIsIjw8anN4LWNvbmZpZy1wcmFnbWEuanM+PiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmFyaWFibGUge1xuICBjb25zdHJ1Y3Rvcih0eXBlLCBuYW1lLCB2YWx1ZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICBnZXRWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgfVxuXG4gIGlzRGVmaW5lZCgpIHtcbiAgICBjb25zdCBkZWZpbmVkID0gKHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCk7XG5cbiAgICByZXR1cm4gZGVmaW5lZDtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgbWF0Y2hOYW1lKG5hbWUpIHtcbiAgICBjb25zdCBtYXRjaGVzTmFtZSA9ICh0aGlzLm5hbWUgPT09IG5hbWUpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXNOYW1lO1xuICB9XG5cbiAgaXNFcXVhbFRvKHZhcmlhYmxlKSB7XG4gICAgbGV0IGVxdWFsVG8gPSBmYWxzZTtcblxuICAgIGlmICh2YXJpYWJsZSA9PT0gdGhpcykge1xuICAgICAgZXF1YWxUbyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdmFyaWFibGUuZ2V0VmFsdWUoKTtcblxuICAgICAgaWYgKHZhbHVlID09PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgIGVxdWFsVG8gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgbGV0IHN0cmluZztcblxuICAgIGlmICh0aGlzLnR5cGUgPT09IG51bGwpIHtcbiAgICAgIHN0cmluZyA9IHRoaXMubmFtZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICBzdHJpbmcgPSBgJHt0aGlzLm5hbWV9OiR7dHlwZU5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21UeXBlQW5kTmFtZSh0eXBlLCBuYW1lKSB7XG4gICAgY29uc3QgdmFsdWUgPSB1bmRlZmluZWQsXG4gICAgICAgICAgdmFyaWFibGUgPSBuZXcgVmFyaWFibGUodHlwZSwgbmFtZSwgdmFsdWUpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIlZhcmlhYmxlIiwidHlwZSIsIm5hbWUiLCJ2YWx1ZSIsImdldFR5cGUiLCJnZXROYW1lIiwiZ2V0VmFsdWUiLCJpc0RlZmluZWQiLCJkZWZpbmVkIiwidW5kZWZpbmVkIiwic2V0VmFsdWUiLCJtYXRjaE5hbWUiLCJtYXRjaGVzTmFtZSIsImlzRXF1YWxUbyIsInZhcmlhYmxlIiwiZXF1YWxUbyIsImFzU3RyaW5nIiwic3RyaW5nIiwidHlwZU5hbWUiLCJmcm9tVHlwZUFuZE5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBRXFCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFOLElBQUEsQUFBTUEseUJBQU47YUFBTUEsU0FDUEMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLEtBQUs7OEJBRFZIO1FBRWpCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTs7aUJBSklIOztZQU9uQkksS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVU7Z0JBQ1IsT0FBTyxJQUFJLENBQUNILElBQUk7WUFDbEI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVTtnQkFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtZQUNsQjs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQSxXQUFXO2dCQUNULE9BQU8sSUFBSSxDQUFDSCxLQUFLO1lBQ25COzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBLFlBQVk7Z0JBQ1YsSUFBTUMsVUFBVyxJQUFJLENBQUNMLEtBQUssS0FBS007Z0JBRWhDLE9BQU9EO1lBQ1Q7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsU0FBU1AsS0FBSyxFQUFFO2dCQUNkLElBQUksQ0FBQ0EsS0FBSyxHQUFHQTtZQUNmOzs7WUFFQVEsS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVVULElBQUksRUFBRTtnQkFDZCxJQUFNVSxjQUFlLElBQUksQ0FBQ1YsSUFBSSxLQUFLQTtnQkFFbkMsT0FBT1U7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVQyxRQUFRLEVBQUU7Z0JBQ2xCLElBQUlDLFVBQVUsS0FBSztnQkFFbkIsSUFBSUQsYUFBYSxJQUFJLEVBQUU7b0JBQ3JCQyxVQUFVLElBQUk7Z0JBQ2hCLE9BQU87b0JBQ0wsSUFBTVosUUFBUVcsU0FBU1IsUUFBUTtvQkFFL0IsSUFBSUgsVUFBVSxJQUFJLENBQUNBLEtBQUssRUFBRTt3QkFDeEJZLFVBQVUsSUFBSTtvQkFDaEIsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE9BQU9BO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsV0FBVztnQkFDVCxJQUFJQztnQkFFSixJQUFJLElBQUksQ0FBQ2hCLElBQUksS0FBSyxJQUFJLEVBQUU7b0JBQ3RCZ0IsU0FBUyxJQUFJLENBQUNmLElBQUk7Z0JBQ3BCLE9BQU87b0JBQ0wsSUFBTWdCLFdBQVcsSUFBSSxDQUFDakIsSUFBSSxDQUFDSSxPQUFPO29CQUVsQ1ksU0FBUyxBQUFDLEdBQWVDLE9BQWIsSUFBSSxDQUFDaEIsSUFBSSxFQUFDLEtBQVksT0FBVGdCO2dCQUMzQixDQUFDO2dCQUVELE9BQU9EO1lBQ1Q7Ozs7WUFFT0UsS0FBQUE7bUJBQVAsU0FBT0EsZ0JBQWdCbEIsSUFBSSxFQUFFQyxJQUFJLEVBQUU7Z0JBQ2pDLElBQU1DLFFBQVFNLFdBQ1JLLFdBQVcsSUFuRUFkLFNBbUVhQyxNQUFNQyxNQUFNQztnQkFFMUMsT0FBT1c7WUFDVDs7O1dBdEVtQmQifQ==
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92YXJpYWJsZS5qcyIsIjw8anN4LWNvbmZpZy1wcmFnbWEuanM+PiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmFyaWFibGUge1xuICBjb25zdHJ1Y3Rvcih0eXBlLCBuYW1lLCB0ZXJtTm9kZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnRlcm1Ob2RlID0gdGVybU5vZGU7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICBnZXRUZXJtTm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtTm9kZTtcbiAgfVxuXG4gIHNldFRlcm1Ob2RlKHRlcm1Ob2RlKSB7XG4gICAgdGhpcy50ZXJtTm9kZSA9IHRlcm1Ob2RlO1xuICB9XG5cbiAgbWF0Y2hOYW1lKG5hbWUpIHtcbiAgICBjb25zdCBtYXRjaGVzTmFtZSA9ICh0aGlzLm5hbWUgPT09IG5hbWUpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXNOYW1lO1xuICB9XG5cbiAgaXNFcXVhbFRvKHZhcmlhYmxlKSB7XG4gICAgbGV0IGVxdWFsVG8gPSBmYWxzZTtcblxuICAgIGlmICh2YXJpYWJsZSA9PT0gdGhpcykge1xuICAgICAgZXF1YWxUbyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRlcm1Ob2RlID0gdmFyaWFibGUuZ2V0VGVybU5vZGUoKTtcblxuICAgICAgaWYgKHRlcm1Ob2RlID09PSB0aGlzLnRlcm1Ob2RlKSB7XG4gICAgICAgIGVxdWFsVG8gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgbGV0IHN0cmluZztcblxuICAgIGlmICh0aGlzLnR5cGUgPT09IG51bGwpIHtcbiAgICAgIHN0cmluZyA9IHRoaXMubmFtZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICBzdHJpbmcgPSBgJHt0aGlzLm5hbWV9OiR7dHlwZU5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21UeXBlQW5kTmFtZSh0eXBlLCBuYW1lKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSBudWxsLFxuICAgICAgICAgIHZhcmlhYmxlID0gbmV3IFZhcmlhYmxlKHR5cGUsIG5hbWUsIHRlcm1Ob2RlKTtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxufVxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJWYXJpYWJsZSIsInR5cGUiLCJuYW1lIiwidGVybU5vZGUiLCJnZXRUeXBlIiwiZ2V0TmFtZSIsImdldFRlcm1Ob2RlIiwic2V0VGVybU5vZGUiLCJtYXRjaE5hbWUiLCJtYXRjaGVzTmFtZSIsImlzRXF1YWxUbyIsInZhcmlhYmxlIiwiZXF1YWxUbyIsImFzU3RyaW5nIiwic3RyaW5nIiwidHlwZU5hbWUiLCJmcm9tVHlwZUFuZE5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBRXFCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFOLElBQUEsQUFBTUEseUJBQU47YUFBTUEsU0FDUEMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLFFBQVE7OEJBRGJIO1FBRWpCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsUUFBUSxHQUFHQTs7aUJBSkNIOztZQU9uQkksS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVU7Z0JBQ1IsT0FBTyxJQUFJLENBQUNILElBQUk7WUFDbEI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVTtnQkFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtZQUNsQjs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQSxjQUFjO2dCQUNaLE9BQU8sSUFBSSxDQUFDSCxRQUFRO1lBQ3RCOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBLFlBQVlKLFFBQVEsRUFBRTtnQkFDcEIsSUFBSSxDQUFDQSxRQUFRLEdBQUdBO1lBQ2xCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVVOLElBQUksRUFBRTtnQkFDZCxJQUFNTyxjQUFlLElBQUksQ0FBQ1AsSUFBSSxLQUFLQTtnQkFFbkMsT0FBT087WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVQyxRQUFRLEVBQUU7Z0JBQ2xCLElBQUlDLFVBQVUsS0FBSztnQkFFbkIsSUFBSUQsYUFBYSxJQUFJLEVBQUU7b0JBQ3JCQyxVQUFVLElBQUk7Z0JBQ2hCLE9BQU87b0JBQ0wsSUFBTVQsV0FBV1EsU0FBU0wsV0FBVztvQkFFckMsSUFBSUgsYUFBYSxJQUFJLENBQUNBLFFBQVEsRUFBRTt3QkFDOUJTLFVBQVUsSUFBSTtvQkFDaEIsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE9BQU9BO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsV0FBVztnQkFDVCxJQUFJQztnQkFFSixJQUFJLElBQUksQ0FBQ2IsSUFBSSxLQUFLLElBQUksRUFBRTtvQkFDdEJhLFNBQVMsSUFBSSxDQUFDWixJQUFJO2dCQUNwQixPQUFPO29CQUNMLElBQU1hLFdBQVcsSUFBSSxDQUFDZCxJQUFJLENBQUNJLE9BQU87b0JBRWxDUyxTQUFTLEFBQUMsR0FBZUMsT0FBYixJQUFJLENBQUNiLElBQUksRUFBQyxLQUFZLE9BQVRhO2dCQUMzQixDQUFDO2dCQUVELE9BQU9EO1lBQ1Q7Ozs7WUFFT0UsS0FBQUE7bUJBQVAsU0FBT0EsZ0JBQWdCZixJQUFJLEVBQUVDLElBQUksRUFBRTtnQkFDakMsSUFBTUMsV0FBVyxJQUFJLEVBQ2ZRLFdBQVcsSUE3REFYLFNBNkRhQyxNQUFNQyxNQUFNQztnQkFFMUMsT0FBT1E7WUFDVDs7O1dBaEVtQlgifQ==
@@ -26,12 +26,15 @@ function verifyQualifiedStatement(qualifiedStatementNode, proofContext) {
26
26
  var statementVerified = (0, _statement.default)(statementNode, proofContext);
27
27
  qualifiedStatementVerified = statementVerified; ///
28
28
  } else {
29
- var referenceName = (0, _query.referenceNameFromReferenceNode)(referenceNode);
30
- debugger;
29
+ var referenceName = (0, _query.referenceNameFromReferenceNode)(referenceNode), rule = proofContext.findRuleByReferenceName(referenceName);
30
+ if (rule !== null) {
31
+ var ruleMatchesStatement = rule.matchStatement(statementNode, proofContext);
32
+ qualifiedStatementVerified = ruleMatchesStatement; ///
33
+ }
31
34
  }
32
35
  }
33
36
  qualifiedStatementVerified ? proofContext.complete(qualifiedStatementNode) : proofContext.halt(qualifiedStatementNode);
34
37
  return qualifiedStatementVerified;
35
38
  }
36
39
 
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3F1YWxpZmllZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeVN0YXRlbWVudCBmcm9tIFwiLi4vLi4vdmVyaWZ5L3N0YXRlbWVudFwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnksIHJlZmVyZW5jZU5hbWVGcm9tUmVmZXJlbmNlTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3Qgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9zdGF0ZW1lbnQhXCIpLFxuICAgICAgcmVmZXJlbmNlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9xdWFsaWZpY2F0aW9uIS9yZWZlcmVuY2UhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnQocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcHJvb2ZDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIHByb29mQ29udGV4dC5iZWdpbihxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlTm9kZSA9IHJlZmVyZW5jZU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGlmIChyZWZlcmVuY2VOb2RlID09PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHN0YXRlbWVudFZlcmlmaWVkOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVmZXJlbmNlTmFtZSA9IHJlZmVyZW5jZU5hbWVGcm9tUmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICAgICAgZGVidWdnZXJcbiAgICB9XG4gIH1cblxuICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA/XG4gICAgcHJvb2ZDb250ZXh0LmNvbXBsZXRlKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpIDpcbiAgICAgIHByb29mQ29udGV4dC5oYWx0KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJyZWZlcmVuY2VOb2RlUXVlcnkiLCJxdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwicHJvb2ZDb250ZXh0IiwicXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJiZWdpbiIsInN0YXRlbWVudE5vZGUiLCJyZWZlcmVuY2VOb2RlIiwic3RhdGVtZW50VmVyaWZpZWQiLCJ2ZXJpZnlTdGF0ZW1lbnQiLCJyZWZlcmVuY2VOYW1lIiwicmVmZXJlbmNlTmFtZUZyb21SZWZlcmVuY2VOb2RlIiwiY29tcGxldGUiLCJoYWx0Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFTQTs7O2VBQXdCQTs7OzhEQVBJO3FCQUU4Qjs7Ozs7O0FBRTFELElBQU1DLHFCQUFxQkMsSUFBQUEsZ0JBQVMsRUFBQyxtQ0FDL0JDLHFCQUFxQkQsSUFBQUEsZ0JBQVMsRUFBQztBQUV0QixTQUFTRix5QkFBeUJJLHNCQUFzQixFQUFFQyxZQUFZLEVBQUU7SUFDckYsSUFBSUMsNkJBQTZCLEtBQUs7SUFFdENELGFBQWFFLEtBQUssQ0FBQ0g7SUFFbkIsSUFBTUksZ0JBQWdCUCxtQkFBbUJHO0lBRXpDLElBQUlJLGtCQUFrQixJQUFJLEVBQUU7UUFDMUIsSUFBTUMsZ0JBQWdCTixtQkFBbUJDO1FBRXpDLElBQUlLLGtCQUFrQixJQUFJLEVBQUU7WUFDMUIsSUFBTUMsb0JBQW9CQyxJQUFBQSxrQkFBZSxFQUFDSCxlQUFlSDtZQUV6REMsNkJBQTZCSSxtQkFBbUIsR0FBRztRQUNyRCxPQUFPO1lBQ0wsSUFBTUUsZ0JBQWdCQyxJQUFBQSxxQ0FBOEIsRUFBQ0o7WUFFckQsUUFBUTtRQUNWLENBQUM7SUFDSCxDQUFDO0lBRURILDZCQUNFRCxhQUFhUyxRQUFRLENBQUNWLDBCQUNwQkMsYUFBYVUsSUFBSSxDQUFDWCx1QkFBdUI7SUFFN0MsT0FBT0U7QUFDVCJ9
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3F1YWxpZmllZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeVN0YXRlbWVudCBmcm9tIFwiLi4vLi4vdmVyaWZ5L3N0YXRlbWVudFwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnksIHJlZmVyZW5jZU5hbWVGcm9tUmVmZXJlbmNlTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3Qgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9zdGF0ZW1lbnQhXCIpLFxuICAgICAgcmVmZXJlbmNlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9xdWFsaWZpY2F0aW9uIS9yZWZlcmVuY2UhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnQocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcHJvb2ZDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIHByb29mQ29udGV4dC5iZWdpbihxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlTm9kZSA9IHJlZmVyZW5jZU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGlmIChyZWZlcmVuY2VOb2RlID09PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHN0YXRlbWVudFZlcmlmaWVkOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVmZXJlbmNlTmFtZSA9IHJlZmVyZW5jZU5hbWVGcm9tUmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKSxcbiAgICAgICAgICAgIHJ1bGUgPSBwcm9vZkNvbnRleHQuZmluZFJ1bGVCeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgICAgIGlmIChydWxlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHJ1bGVNYXRjaGVzU3RhdGVtZW50ID0gcnVsZS5tYXRjaFN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gcnVsZU1hdGNoZXNTdGF0ZW1lbnQ7ICAvLy9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA/XG4gICAgcHJvb2ZDb250ZXh0LmNvbXBsZXRlKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpIDpcbiAgICAgIHByb29mQ29udGV4dC5oYWx0KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJyZWZlcmVuY2VOb2RlUXVlcnkiLCJxdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwicHJvb2ZDb250ZXh0IiwicXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJiZWdpbiIsInN0YXRlbWVudE5vZGUiLCJyZWZlcmVuY2VOb2RlIiwic3RhdGVtZW50VmVyaWZpZWQiLCJ2ZXJpZnlTdGF0ZW1lbnQiLCJyZWZlcmVuY2VOYW1lIiwicmVmZXJlbmNlTmFtZUZyb21SZWZlcmVuY2VOb2RlIiwicnVsZSIsImZpbmRSdWxlQnlSZWZlcmVuY2VOYW1lIiwicnVsZU1hdGNoZXNTdGF0ZW1lbnQiLCJtYXRjaFN0YXRlbWVudCIsImNvbXBsZXRlIiwiaGFsdCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBU0E7OztlQUF3QkE7Ozs4REFQSTtxQkFFOEI7Ozs7OztBQUUxRCxJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUMsbUNBQy9CQyxxQkFBcUJELElBQUFBLGdCQUFTLEVBQUM7QUFFdEIsU0FBU0YseUJBQXlCSSxzQkFBc0IsRUFBRUMsWUFBWSxFQUFFO0lBQ3JGLElBQUlDLDZCQUE2QixLQUFLO0lBRXRDRCxhQUFhRSxLQUFLLENBQUNIO0lBRW5CLElBQU1JLGdCQUFnQlAsbUJBQW1CRztJQUV6QyxJQUFJSSxrQkFBa0IsSUFBSSxFQUFFO1FBQzFCLElBQU1DLGdCQUFnQk4sbUJBQW1CQztRQUV6QyxJQUFJSyxrQkFBa0IsSUFBSSxFQUFFO1lBQzFCLElBQU1DLG9CQUFvQkMsSUFBQUEsa0JBQWUsRUFBQ0gsZUFBZUg7WUFFekRDLDZCQUE2QkksbUJBQW1CLEdBQUc7UUFDckQsT0FBTztZQUNMLElBQU1FLGdCQUFnQkMsSUFBQUEscUNBQThCLEVBQUNKLGdCQUMvQ0ssT0FBT1QsYUFBYVUsdUJBQXVCLENBQUNIO1lBRWxELElBQUlFLFNBQVMsSUFBSSxFQUFFO2dCQUNqQixJQUFNRSx1QkFBdUJGLEtBQUtHLGNBQWMsQ0FBQ1QsZUFBZUg7Z0JBRWhFQyw2QkFBNkJVLHNCQUF1QixHQUFHO1lBQ3pELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEViw2QkFDRUQsYUFBYWEsUUFBUSxDQUFDZCwwQkFDcEJDLGFBQWFjLElBQUksQ0FBQ2YsdUJBQXVCO0lBRTdDLE9BQU9FO0FBQ1QifQ==
@@ -8,31 +8,32 @@ Object.defineProperty(exports, "default", {
8
8
  return verifyStatement;
9
9
  }
10
10
  });
11
- var _equality = /*#__PURE__*/ _interopRequireDefault(require("../verify/equality"));
12
- var _type = /*#__PURE__*/ _interopRequireDefault(require("../verify/assertion/type"));
13
- var _query = require("../utilities/query");
11
+ var _statementAsEquality = /*#__PURE__*/ _interopRequireDefault(require("../verify/statementAsEquality"));
12
+ var _statementTypeAssertion = /*#__PURE__*/ _interopRequireDefault(require("../verify/statementTypeAssertion"));
14
13
  var _string = require("../utilities/string");
15
14
  function _interopRequireDefault(obj) {
16
15
  return obj && obj.__esModule ? obj : {
17
16
  default: obj
18
17
  };
19
18
  }
20
- var equalityNodeQuery = (0, _query.nodeQuery)("/statement/equality!"), typeAssertionNodeQuery = (0, _query.nodeQuery)("/statement/typeAssertion!");
21
19
  function verifyStatement(statementNode, proofContext) {
22
20
  var statementVerified = false;
23
21
  proofContext.begin(statementNode);
24
- var equalityNode = equalityNodeQuery(statementNode), statementString = (0, _string.nodeAsString)(statementNode), typeAssertionNode = typeAssertionNodeQuery(statementNode);
22
+ var statementString = (0, _string.nodeAsString)(statementNode);
25
23
  proofContext.debug("Verifying the '".concat(statementString, "' statement..."));
26
- if (equalityNode !== null) {
27
- var equalityVerified = (0, _equality.default)(equalityNode, proofContext);
28
- statementVerified = equalityVerified; ///
24
+ if (!statementVerified) {
25
+ var equalityVerifiedAsEquality = (0, _statementAsEquality.default)(statementNode, proofContext);
26
+ statementVerified = equalityVerifiedAsEquality; ///
29
27
  }
30
- if (typeAssertionNode !== null) {
31
- var typeAssertionVerified = (0, _type.default)(typeAssertionNode, proofContext);
32
- statementVerified = typeAssertionVerified; ///
28
+ if (!statementVerified) {
29
+ var statementTypeAssertionVerified = (0, _statementTypeAssertion.default)(statementNode, proofContext);
30
+ statementVerified = statementTypeAssertionVerified; ///
31
+ }
32
+ if (!statementVerified) {
33
+ statementVerified = true; ///
33
34
  }
34
35
  statementVerified ? proofContext.complete(statementNode) : proofContext.halt(statementNode);
35
36
  return statementVerified;
36
37
  }
37
38
 
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5RXF1YWxpdHkgZnJvbSBcIi4uL3ZlcmlmeS9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL3ZlcmlmeS9hc3NlcnRpb24vdHlwZVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBub2RlQXNTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuXG5jb25zdCBlcXVhbGl0eU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvZXF1YWxpdHkhXCIpLFxuICAgICAgdHlwZUFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvdHlwZUFzc2VydGlvbiFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgcHJvb2ZDb250ZXh0LmJlZ2luKHN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnN0IGVxdWFsaXR5Tm9kZSA9IGVxdWFsaXR5Tm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpLFxuICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgIHR5cGVBc3NlcnRpb25Ob2RlID0gdHlwZUFzc2VydGlvbk5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICBwcm9vZkNvbnRleHQuZGVidWcoYFZlcmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50Li4uYCk7XG5cbiAgaWYgKGVxdWFsaXR5Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGVxdWFsaXR5VmVyaWZpZWQgPSB2ZXJpZnlFcXVhbGl0eShlcXVhbGl0eU5vZGUsIHByb29mQ29udGV4dCk7XG5cbiAgICBzdGF0ZW1lbnRWZXJpZmllZCA9IGVxdWFsaXR5VmVyaWZpZWQ7IC8vL1xuICB9XG5cbiAgaWYgKHR5cGVBc3NlcnRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdHlwZUFzc2VydGlvblZlcmlmaWVkID0gdmVyaWZ5VHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgcHJvb2ZDb250ZXh0KTtcblxuICAgIHN0YXRlbWVudFZlcmlmaWVkID0gdHlwZUFzc2VydGlvblZlcmlmaWVkOyAvLy9cbiAgfVxuXG4gIHN0YXRlbWVudFZlcmlmaWVkID9cbiAgICBwcm9vZkNvbnRleHQuY29tcGxldGUoc3RhdGVtZW50Tm9kZSkgOlxuICAgICAgcHJvb2ZDb250ZXh0LmhhbHQoc3RhdGVtZW50Tm9kZSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVN0YXRlbWVudCIsImVxdWFsaXR5Tm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidHlwZUFzc2VydGlvbk5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGUiLCJwcm9vZkNvbnRleHQiLCJzdGF0ZW1lbnRWZXJpZmllZCIsImJlZ2luIiwiZXF1YWxpdHlOb2RlIiwic3RhdGVtZW50U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwidHlwZUFzc2VydGlvbk5vZGUiLCJkZWJ1ZyIsImVxdWFsaXR5VmVyaWZpZWQiLCJ2ZXJpZnlFcXVhbGl0eSIsInR5cGVBc3NlcnRpb25WZXJpZmllZCIsInZlcmlmeVR5cGVBc3NlcnRpb24iLCJjb21wbGV0ZSIsImhhbHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVdBOzs7ZUFBd0JBOzs7NkRBVEc7eURBQ0s7cUJBRU47c0JBQ0c7Ozs7OztBQUU3QixJQUFNQyxvQkFBb0JDLElBQUFBLGdCQUFTLEVBQUMseUJBQzlCQyx5QkFBeUJELElBQUFBLGdCQUFTLEVBQUM7QUFFMUIsU0FBU0YsZ0JBQWdCSSxhQUFhLEVBQUVDLFlBQVksRUFBRTtJQUNuRSxJQUFJQyxvQkFBb0IsS0FBSztJQUU3QkQsYUFBYUUsS0FBSyxDQUFDSDtJQUVuQixJQUFNSSxlQUFlUCxrQkFBa0JHLGdCQUNqQ0ssa0JBQWtCQyxJQUFBQSxvQkFBWSxFQUFDTixnQkFDL0JPLG9CQUFvQlIsdUJBQXVCQztJQUVqREMsYUFBYU8sS0FBSyxDQUFDLEFBQUMsa0JBQWlDLE9BQWhCSCxpQkFBZ0I7SUFFckQsSUFBSUQsaUJBQWlCLElBQUksRUFBRTtRQUN6QixJQUFNSyxtQkFBbUJDLElBQUFBLGlCQUFjLEVBQUNOLGNBQWNIO1FBRXREQyxvQkFBb0JPLGtCQUFrQixHQUFHO0lBQzNDLENBQUM7SUFFRCxJQUFJRixzQkFBc0IsSUFBSSxFQUFFO1FBQzlCLElBQU1JLHdCQUF3QkMsSUFBQUEsYUFBbUIsRUFBQ0wsbUJBQW1CTjtRQUVyRUMsb0JBQW9CUyx1QkFBdUIsR0FBRztJQUNoRCxDQUFDO0lBRURULG9CQUNFRCxhQUFhWSxRQUFRLENBQUNiLGlCQUNwQkMsYUFBYWEsSUFBSSxDQUFDZCxjQUFjO0lBRXBDLE9BQU9FO0FBQ1QifQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5U3RhdGVtZW50QXNFcXVhbGl0eSBmcm9tIFwiLi4vdmVyaWZ5L3N0YXRlbWVudEFzRXF1YWxpdHlcIjtcbmltcG9ydCB2ZXJpZnlTdGF0ZW1lbnRUeXBlQXNzZXJ0aW9uIGZyb20gXCIuLi92ZXJpZnkvc3RhdGVtZW50VHlwZUFzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBub2RlQXNTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgcHJvb2ZDb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIHByb29mQ29udGV4dC5iZWdpbihzdGF0ZW1lbnROb2RlKTtcblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgcHJvb2ZDb250ZXh0LmRlYnVnKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudC4uLmApO1xuXG4gIGlmICghc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBjb25zdCBlcXVhbGl0eVZlcmlmaWVkQXNFcXVhbGl0eSA9IHZlcmlmeVN0YXRlbWVudEFzRXF1YWxpdHkoc3RhdGVtZW50Tm9kZSwgcHJvb2ZDb250ZXh0KTtcblxuICAgIHN0YXRlbWVudFZlcmlmaWVkID0gZXF1YWxpdHlWZXJpZmllZEFzRXF1YWxpdHk7IC8vL1xuICB9XG5cbiAgaWYgKCFzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZlcmlmeVN0YXRlbWVudFR5cGVBc3NlcnRpb24oc3RhdGVtZW50Tm9kZSwgcHJvb2ZDb250ZXh0KTtcblxuICAgIHN0YXRlbWVudFZlcmlmaWVkID0gc3RhdGVtZW50VHlwZUFzc2VydGlvblZlcmlmaWVkOyAvLy9cbiAgfVxuXG4gIGlmICghc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBzdGF0ZW1lbnRWZXJpZmllZCA9IHRydWU7IC8vL1xuICB9XG5cbiAgc3RhdGVtZW50VmVyaWZpZWQgP1xuICAgIHByb29mQ29udGV4dC5jb21wbGV0ZShzdGF0ZW1lbnROb2RlKSA6XG4gICAgICBwcm9vZkNvbnRleHQuaGFsdChzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsInByb29mQ29udGV4dCIsInN0YXRlbWVudFZlcmlmaWVkIiwiYmVnaW4iLCJzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJkZWJ1ZyIsImVxdWFsaXR5VmVyaWZpZWRBc0VxdWFsaXR5IiwidmVyaWZ5U3RhdGVtZW50QXNFcXVhbGl0eSIsInN0YXRlbWVudFR5cGVBc3NlcnRpb25WZXJpZmllZCIsInZlcmlmeVN0YXRlbWVudFR5cGVBc3NlcnRpb24iLCJjb21wbGV0ZSIsImhhbHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU9BOzs7ZUFBd0JBOzs7d0VBTGM7MkVBQ0c7c0JBRVo7Ozs7OztBQUVkLFNBQVNBLGdCQUFnQkMsYUFBYSxFQUFFQyxZQUFZLEVBQUU7SUFDbkUsSUFBSUMsb0JBQW9CLEtBQUs7SUFFN0JELGFBQWFFLEtBQUssQ0FBQ0g7SUFFbkIsSUFBTUksa0JBQWtCQyxJQUFBQSxvQkFBWSxFQUFDTDtJQUVyQ0MsYUFBYUssS0FBSyxDQUFDLEFBQUMsa0JBQWlDLE9BQWhCRixpQkFBZ0I7SUFFckQsSUFBSSxDQUFDRixtQkFBbUI7UUFDdEIsSUFBTUssNkJBQTZCQyxJQUFBQSw0QkFBeUIsRUFBQ1IsZUFBZUM7UUFFNUVDLG9CQUFvQkssNEJBQTRCLEdBQUc7SUFDckQsQ0FBQztJQUVELElBQUksQ0FBQ0wsbUJBQW1CO1FBQ3RCLElBQU1PLGlDQUFpQ0MsSUFBQUEsK0JBQTRCLEVBQUNWLGVBQWVDO1FBRW5GQyxvQkFBb0JPLGdDQUFnQyxHQUFHO0lBQ3pELENBQUM7SUFFRCxJQUFJLENBQUNQLG1CQUFtQjtRQUN0QkEsb0JBQW9CLElBQUksRUFBRSxHQUFHO0lBQy9CLENBQUM7SUFFREEsb0JBQ0VELGFBQWFVLFFBQVEsQ0FBQ1gsaUJBQ3BCQyxhQUFhVyxJQUFJLENBQUNaLGNBQWM7SUFFcEMsT0FBT0U7QUFDVCJ9