occam-verify-cli 0.0.465 → 0.0.467

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 (44) hide show
  1. package/lib/antecedent.js +214 -0
  2. package/lib/axiom.js +93 -78
  3. package/lib/axiomLemmaTheorem.js +190 -0
  4. package/lib/consequent.js +157 -0
  5. package/lib/constants.js +9 -1
  6. package/lib/lemma.js +93 -78
  7. package/lib/ruleNames.js +4 -4
  8. package/lib/substitution.js +123 -0
  9. package/lib/theorem.js +93 -78
  10. package/lib/utilities/statement.js +45 -0
  11. package/lib/utilities/string.js +6 -6
  12. package/lib/verify/antecedentOrAntecedents.js +38 -0
  13. package/lib/verify/axiom.js +15 -14
  14. package/lib/verify/conditinalIndicative.js +32 -0
  15. package/lib/verify/{indicativeConditional.js → conditionalIndicative.js} +10 -10
  16. package/lib/verify/consequent.js +36 -0
  17. package/lib/verify/lemma.js +25 -19
  18. package/lib/verify/metaproof.js +3 -3
  19. package/lib/verify/rule.js +2 -3
  20. package/lib/verify/theorem.js +21 -18
  21. package/lib/verify/unconditionalIndicative.js +28 -0
  22. package/package.json +3 -3
  23. package/src/antecedent.js +235 -0
  24. package/src/axiom.js +5 -95
  25. package/src/axiomLemmaTheorem.js +190 -0
  26. package/src/consequent.js +187 -0
  27. package/src/constants.js +2 -0
  28. package/src/lemma.js +5 -95
  29. package/src/ruleNames.js +1 -1
  30. package/src/substitution.js +130 -0
  31. package/src/theorem.js +5 -95
  32. package/src/utilities/statement.js +50 -0
  33. package/src/utilities/string.js +6 -6
  34. package/src/verify/antecedentOrAntecedents.js +40 -0
  35. package/src/verify/axiom.js +21 -16
  36. package/src/verify/conditinalIndicative.js +31 -0
  37. package/src/verify/conditionalIndicative.js +29 -0
  38. package/src/verify/consequent.js +36 -0
  39. package/src/verify/lemma.js +38 -21
  40. package/src/verify/metaproof.js +2 -1
  41. package/src/verify/rule.js +1 -3
  42. package/src/verify/theorem.js +28 -22
  43. package/src/verify/unconditionalIndicative.js +24 -0
  44. package/src/verify/indicativeConditional.js +0 -29
@@ -0,0 +1,214 @@
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 Antecedent;
9
+ }
10
+ });
11
+ var _substitution = /*#__PURE__*/ _interopRequireDefault(require("./substitution"));
12
+ var _array = require("./utilities/array");
13
+ var _string = require("./utilities/string");
14
+ var _query = require("./utilities/query");
15
+ var _ruleNames = require("./ruleNames");
16
+ function _arrayLikeToArray(arr, len) {
17
+ if (len == null || len > arr.length) len = arr.length;
18
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
19
+ return arr2;
20
+ }
21
+ function _arrayWithoutHoles(arr) {
22
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
23
+ }
24
+ function _classCallCheck(instance, Constructor) {
25
+ if (!(instance instanceof Constructor)) {
26
+ throw new TypeError("Cannot call a class as a function");
27
+ }
28
+ }
29
+ function _defineProperties(target, props) {
30
+ for(var i = 0; i < props.length; i++){
31
+ var descriptor = props[i];
32
+ descriptor.enumerable = descriptor.enumerable || false;
33
+ descriptor.configurable = true;
34
+ if ("value" in descriptor) descriptor.writable = true;
35
+ Object.defineProperty(target, descriptor.key, descriptor);
36
+ }
37
+ }
38
+ function _createClass(Constructor, protoProps, staticProps) {
39
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
40
+ if (staticProps) _defineProperties(Constructor, staticProps);
41
+ return Constructor;
42
+ }
43
+ function _interopRequireDefault(obj) {
44
+ return obj && obj.__esModule ? obj : {
45
+ default: obj
46
+ };
47
+ }
48
+ function _iterableToArray(iter) {
49
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
50
+ }
51
+ function _nonIterableSpread() {
52
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
53
+ }
54
+ function _toConsumableArray(arr) {
55
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
56
+ }
57
+ function _unsupportedIterableToArray(o, minLen) {
58
+ if (!o) return;
59
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
60
+ var n = Object.prototype.toString.call(o).slice(8, -1);
61
+ if (n === "Object" && o.constructor) n = o.constructor.name;
62
+ if (n === "Map" || n === "Set") return Array.from(n);
63
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
64
+ }
65
+ var statementNodesQuery = (0, _query.nodesQuery)("/subproofAssertion/statement"), subproofAssertionNodeQuery = (0, _query.nodeQuery)("/statement/subproofAssertion!"), unqualifiedStatementStatementNodesQuery = (0, _query.nodesQuery)("/subproof/unqualifiedStatement/statement!"), qualifiedOrUnqualifiedStatementStatementNodeQuery = (0, _query.nodeQuery)("/subproof/metaDerivation|abridgedMetaDerivation/qualifiedStatement|unqualifiedStatement[-1]/statement!");
66
+ var Antecedent = /*#__PURE__*/ function() {
67
+ function Antecedent(statementNode) {
68
+ _classCallCheck(this, Antecedent);
69
+ this.statementNode = statementNode;
70
+ }
71
+ _createClass(Antecedent, [
72
+ {
73
+ key: "getStatementNode",
74
+ value: function getStatementNode() {
75
+ return this.statementNode;
76
+ }
77
+ },
78
+ {
79
+ key: "matchSubproofNode",
80
+ value: function matchSubproofNode(subproofNode, substitutions) {
81
+ var subproofNodeMatches = false;
82
+ var subproofAssertionNode = subproofAssertionNodeQuery(this.statementNode);
83
+ if (subproofAssertionNode !== null) {
84
+ var subproofAssertionStatementNodes = statementNodesQuery(subproofAssertionNode), unqualifiedStatementStatementNodes = unqualifiedStatementStatementNodesQuery(subproofNode), qualifiedOrUnqualifiedStatementStatementNode = qualifiedOrUnqualifiedStatementStatementNodeQuery(subproofNode), statementNodes = _toConsumableArray(unqualifiedStatementStatementNodes).concat([
85
+ qualifiedOrUnqualifiedStatementStatementNode
86
+ ]), statementNodesLength = statementNodes.length, subproofAssertionStatementNodesLength = subproofAssertionStatementNodes.length;
87
+ if (statementNodesLength === subproofAssertionStatementNodesLength) {
88
+ subproofNodeMatches = subproofAssertionStatementNodes.every(function(subproofAssertionStatementNode, index) {
89
+ var statementNode = statementNodes[index], nonTerminalNode = statementNode, antecedentNonTerminalNode = subproofAssertionStatementNode, antecedentNonTerminalNodeMatches = matchAntecedentNonTerminalNode(antecedentNonTerminalNode, nonTerminalNode, substitutions);
90
+ if (antecedentNonTerminalNodeMatches) {
91
+ return true;
92
+ }
93
+ });
94
+ }
95
+ }
96
+ return subproofNodeMatches;
97
+ }
98
+ },
99
+ {
100
+ key: "matchStatementNode",
101
+ value: function matchStatementNode(statementNode, substitutions) {
102
+ var nonTerminalNode = statementNode, antecedentNonTerminalNode = this.statementNode, antecedentNonTerminalNodeMatches = matchAntecedentNonTerminalNode(antecedentNonTerminalNode, nonTerminalNode, substitutions), statementNodeMatches = antecedentNonTerminalNodeMatches; ///
103
+ return statementNodeMatches;
104
+ }
105
+ },
106
+ {
107
+ key: "toJSON",
108
+ value: function toJSON() {
109
+ var statementString = (0, _string.nodeAsString)(this.statementNode), statement = statementString, json = {
110
+ statement: statement
111
+ };
112
+ return json;
113
+ }
114
+ }
115
+ ], [
116
+ {
117
+ key: "fromJSON",
118
+ value: function fromJSON(json, releaseContext) {
119
+ var statement = json.statement, statementString = statement, statementNode = (0, _string.statementNodeFromStatementString)(statementString, releaseContext), antecedent = new Antecedent(statementNode);
120
+ return antecedent;
121
+ }
122
+ },
123
+ {
124
+ key: "fromStatementNode",
125
+ value: function fromStatementNode(statementNode) {
126
+ var antecedent = new Antecedent(statementNode);
127
+ return antecedent;
128
+ }
129
+ }
130
+ ]);
131
+ return Antecedent;
132
+ }();
133
+ function matchAntecedentNode(antecedentNode, node, substitutions) {
134
+ var antecedentNodeMatches = false;
135
+ var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = antecedentNode.isTerminalNode();
136
+ if (nodeTerminalNode === ruleNodeTerminalNode) {
137
+ if (nodeTerminalNode) {
138
+ var terminalNode = node, antecedentTerminalNode = antecedentNode, antecedentTerminalNodeMatches = matchAntecedentTerminalNode(antecedentTerminalNode, terminalNode, substitutions);
139
+ antecedentNodeMatches = antecedentTerminalNodeMatches; ///
140
+ } else {
141
+ var nonTerminalNode = node, antecedentNonTerminalNode = antecedentNode, antecedentNonTerminalNodeMatches = matchAntecedentNonTerminalNode(antecedentNonTerminalNode, nonTerminalNode, substitutions);
142
+ antecedentNodeMatches = antecedentNonTerminalNodeMatches; ///
143
+ }
144
+ }
145
+ return antecedentNodeMatches;
146
+ }
147
+ function matchAntecedentNodes(antecedentNodes, nodes, substitutions) {
148
+ var antecedentNodesMatches = false;
149
+ var nodesLength = nodes.length, antecedentNodesLength = antecedentNodes.length;
150
+ if (nodesLength === antecedentNodesLength) {
151
+ antecedentNodesMatches = nodes.every(function(node, index) {
152
+ var antecedentNode = antecedentNodes[index], antecedentNodeMatches = matchAntecedentNode(antecedentNode, node, substitutions);
153
+ if (antecedentNodeMatches) {
154
+ return true;
155
+ }
156
+ });
157
+ }
158
+ return antecedentNodesMatches;
159
+ }
160
+ function matchAntecedentVariable(antecedentVariableNode, nodes, substitutions) {
161
+ var antecedentVariableMatches;
162
+ var antecedentVariableName = (0, _query.variableNameFromVariableNode)(antecedentVariableNode), substitution = substitutions.find(function(substitution) {
163
+ var variableName = substitution.getVariableName();
164
+ if (variableName === antecedentVariableName) {
165
+ return true;
166
+ }
167
+ }) || null;
168
+ if (substitution !== null) {
169
+ var substitutionNodesMatch = substitution.matchNodes(nodes);
170
+ antecedentVariableMatches = substitutionNodesMatch; ///
171
+ } else {
172
+ var variableName = antecedentVariableName, substitution1 = _substitution.default.fromVariableNameAndNodes(variableName, nodes);
173
+ substitutions.push(substitution1);
174
+ antecedentVariableMatches = true;
175
+ }
176
+ return antecedentVariableMatches;
177
+ }
178
+ function matchAntecedentTerminalNode(antecedentTerminalNode, terminalNode, substitutions) {
179
+ var matches = antecedentTerminalNode.match(terminalNode), antecedentTerminalNodeMatches = matches;
180
+ return antecedentTerminalNodeMatches;
181
+ }
182
+ function matchAntecedentNonTerminalNode(antecedentNonTerminalNode, nonTerminalNode, substitutions) {
183
+ var antecedentNonTerminalNodeMatches = false;
184
+ var ruleName = nonTerminalNode.getRuleName(), antecedentRuleName = antecedentNonTerminalNode.getRuleName(); ///
185
+ if (ruleName === antecedentRuleName) {
186
+ var childNodes = nonTerminalNode.getChildNodes(), antecedentChildNodes = antecedentNonTerminalNode.getChildNodes(), nodes = childNodes, antecedentNodes = antecedentChildNodes, antecedentChildNodesMatches = matchAntecedentNodes(antecedentNodes, nodes, substitutions);
187
+ antecedentNonTerminalNodeMatches = antecedentChildNodesMatches; ///
188
+ if (!antecedentNonTerminalNodeMatches) {
189
+ var ruleNameStatementRuleName = ruleName === _ruleNames.STATEMENT_RULE_NAME;
190
+ if (ruleNameStatementRuleName) {
191
+ var statementNode = nonTerminalNode, antecedentStatementNode = antecedentNonTerminalNode, antecedentStatementNodeMatches = matchAntecedentStatementNode(antecedentStatementNode, statementNode, substitutions);
192
+ antecedentNonTerminalNodeMatches = antecedentStatementNodeMatches; ///
193
+ }
194
+ }
195
+ }
196
+ return antecedentNonTerminalNodeMatches;
197
+ }
198
+ function matchAntecedentStatementNode(antecedentStatementNode, statementNode, substitutions) {
199
+ var antecedentStatementNodeMatches = false;
200
+ var antecedentNonTerminalNode = antecedentStatementNode, antecedentChildNodes = antecedentNonTerminalNode.getChildNodes(), antecedentChildNodesLength = antecedentChildNodes.length;
201
+ if (antecedentChildNodesLength === 1) {
202
+ var firstAntecedentChildNode = (0, _array.first)(antecedentChildNodes), antecedentChildNode = firstAntecedentChildNode, antecedentChildNodeNonTerminalNode = antecedentChildNode.isNonTerminalNode();
203
+ if (antecedentChildNodeNonTerminalNode) {
204
+ var antecedentNonTerminalChildNode = antecedentChildNode, antecedentNonTerminalChildNodeRuleName = antecedentNonTerminalChildNode.getRuleName(), antecedentNonTerminalChildNodeRuleNameVariableRuleName = antecedentNonTerminalChildNodeRuleName === _ruleNames.VARIABLE_RULE_NAME;
205
+ if (antecedentNonTerminalChildNodeRuleNameVariableRuleName) {
206
+ var antecedentVariableNode = antecedentNonTerminalChildNode, nonTerminalNode = statementNode, childNodes = nonTerminalNode.getChildNodes(), nodes = childNodes, antecedentVariableMatches = matchAntecedentVariable(antecedentVariableNode, nodes, substitutions);
207
+ antecedentStatementNodeMatches = antecedentVariableMatches; ///
208
+ }
209
+ }
210
+ }
211
+ return antecedentStatementNodeMatches;
212
+ }
213
+
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hbnRlY2VkZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgU3Vic3RpdHV0aW9uIGZyb20gXCIuL3N1YnN0aXR1dGlvblwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZUFzU3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBzdGF0ZW1lbnROb2RlRnJvbVN0YXRlbWVudFN0cmluZyB9IGZyb20gXCIuL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IFZBUklBQkxFX1JVTEVfTkFNRSwgU1RBVEVNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuL3J1bGVOYW1lc1wiO1xuXG5jb25zdCBzdGF0ZW1lbnROb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9zdWJwcm9vZkFzc2VydGlvbi9zdGF0ZW1lbnRcIiksXG4gICAgICBzdWJwcm9vZkFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvc3VicHJvb2ZBc3NlcnRpb24hXCIpLFxuICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9zdWJwcm9vZi91bnF1YWxpZmllZFN0YXRlbWVudC9zdGF0ZW1lbnQhXCIpLFxuICAgICAgcXVhbGlmaWVkT3JVbnF1YWxpZmllZFN0YXRlbWVudFN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdWJwcm9vZi9tZXRhRGVyaXZhdGlvbnxhYnJpZGdlZE1ldGFEZXJpdmF0aW9uL3F1YWxpZmllZFN0YXRlbWVudHx1bnF1YWxpZmllZFN0YXRlbWVudFstMV0vc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQW50ZWNlZGVudCB7XG4gIGNvbnN0cnVjdG9yKHN0YXRlbWVudE5vZGUpIHtcbiAgICB0aGlzLnN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgbWF0Y2hTdWJwcm9vZk5vZGUoc3VicHJvb2ZOb2RlLCBzdWJzdGl0dXRpb25zKSB7XG4gICAgbGV0IHN1YnByb29mTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1YnByb29mQXNzZXJ0aW9uTm9kZSA9IHN1YnByb29mQXNzZXJ0aW9uTm9kZVF1ZXJ5KHRoaXMuc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBpZiAoc3VicHJvb2ZBc3NlcnRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJwcm9vZkFzc2VydGlvblN0YXRlbWVudE5vZGVzID0gc3RhdGVtZW50Tm9kZXNRdWVyeShzdWJwcm9vZkFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2RlcyA9IHVucXVhbGlmaWVkU3RhdGVtZW50U3RhdGVtZW50Tm9kZXNRdWVyeShzdWJwcm9vZk5vZGUpLFxuICAgICAgICAgICAgcXVhbGlmaWVkT3JVbnF1YWxpZmllZFN0YXRlbWVudFN0YXRlbWVudE5vZGUgPSBxdWFsaWZpZWRPclVucXVhbGlmaWVkU3RhdGVtZW50U3RhdGVtZW50Tm9kZVF1ZXJ5KHN1YnByb29mTm9kZSksXG4gICAgICAgICAgICBzdGF0ZW1lbnROb2RlcyA9IFtcbiAgICAgICAgICAgICAgLi4udW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2RlcyxcbiAgICAgICAgICAgICAgcXVhbGlmaWVkT3JVbnF1YWxpZmllZFN0YXRlbWVudFN0YXRlbWVudE5vZGVcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBzdGF0ZW1lbnROb2Rlc0xlbmd0aCA9IHN0YXRlbWVudE5vZGVzLmxlbmd0aCxcbiAgICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50Tm9kZXNMZW5ndGggPSBzdWJwcm9vZkFzc2VydGlvblN0YXRlbWVudE5vZGVzLmxlbmd0aDtcblxuICAgICAgaWYgKHN0YXRlbWVudE5vZGVzTGVuZ3RoID09PSBzdWJwcm9vZkFzc2VydGlvblN0YXRlbWVudE5vZGVzTGVuZ3RoKSB7XG4gICAgICAgIHN1YnByb29mTm9kZU1hdGNoZXMgPSBzdWJwcm9vZkFzc2VydGlvblN0YXRlbWVudE5vZGVzLmV2ZXJ5KChzdWJwcm9vZkFzc2VydGlvblN0YXRlbWVudE5vZGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlID0gc3VicHJvb2ZBc3NlcnRpb25TdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoQW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZShhbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnByb29mTm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBhbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlID0gdGhpcy5zdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaEFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUoYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBzdWJzdGl0dXRpb25zKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGFudGVjZWRlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcodGhpcy5zdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRTdHJpbmcsIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdGF0ZW1lbnRcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgcmVsZWFzZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IHN0YXRlbWVudCB9ID0ganNvbixcbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZUZyb21TdGF0ZW1lbnRTdHJpbmcoc3RhdGVtZW50U3RyaW5nLCByZWxlYXNlQ29udGV4dCksXG4gICAgICAgICAgYW50ZWNlZGVudCA9IG5ldyBBbnRlY2VkZW50KHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIGFudGVjZWRlbnQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IGFudGVjZWRlbnQgPSBuZXcgQW50ZWNlZGVudChzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBhbnRlY2VkZW50O1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hdGNoQW50ZWNlZGVudE5vZGUoYW50ZWNlZGVudE5vZGUsIG5vZGUsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGFudGVjZWRlbnROb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgIHJ1bGVOb2RlVGVybWluYWxOb2RlID0gYW50ZWNlZGVudE5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICBpZiAobm9kZVRlcm1pbmFsTm9kZSA9PT0gcnVsZU5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICBpZiAobm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgdGVybWluYWxOb2RlID0gbm9kZSwgIC8vL1xuICAgICAgICAgICAgYW50ZWNlZGVudFRlcm1pbmFsTm9kZSA9IGFudGVjZWRlbnROb2RlLCAgLy8vXG4gICAgICAgICAgICBhbnRlY2VkZW50VGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoQW50ZWNlZGVudFRlcm1pbmFsTm9kZShhbnRlY2VkZW50VGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBhbnRlY2VkZW50Tm9kZU1hdGNoZXMgPSBhbnRlY2VkZW50VGVybWluYWxOb2RlTWF0Y2hlczsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIGFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUgPSBhbnRlY2VkZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaEFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUoYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBzdWJzdGl0dXRpb25zKTtcblxuICAgICAgYW50ZWNlZGVudE5vZGVNYXRjaGVzID0gYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXM7IC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbnRlY2VkZW50Tm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQW50ZWNlZGVudE5vZGVzKGFudGVjZWRlbnROb2Rlcywgbm9kZXMsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGFudGVjZWRlbnROb2Rlc01hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBub2Rlc0xlbmd0aCA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgYW50ZWNlZGVudE5vZGVzTGVuZ3RoID0gYW50ZWNlZGVudE5vZGVzLmxlbmd0aDtcblxuICBpZiAobm9kZXNMZW5ndGggPT09IGFudGVjZWRlbnROb2Rlc0xlbmd0aCkge1xuICAgIGFudGVjZWRlbnROb2Rlc01hdGNoZXMgPSBub2Rlcy5ldmVyeSgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGFudGVjZWRlbnROb2RlID0gYW50ZWNlZGVudE5vZGVzW2luZGV4XSxcbiAgICAgICAgICAgIGFudGVjZWRlbnROb2RlTWF0Y2hlcyA9IG1hdGNoQW50ZWNlZGVudE5vZGUoYW50ZWNlZGVudE5vZGUsIG5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBpZiAoYW50ZWNlZGVudE5vZGVNYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGFudGVjZWRlbnROb2Rlc01hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQW50ZWNlZGVudFZhcmlhYmxlKGFudGVjZWRlbnRWYXJpYWJsZU5vZGUsIG5vZGVzLCBzdWJzdGl0dXRpb25zKSB7XG4gIGxldCBhbnRlY2VkZW50VmFyaWFibGVNYXRjaGVzO1xuXG4gIGNvbnN0IGFudGVjZWRlbnRWYXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKGFudGVjZWRlbnRWYXJpYWJsZU5vZGUpLFxuICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmQoKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IHN1YnN0aXR1dGlvbi5nZXRWYXJpYWJsZU5hbWUoKTtcblxuICAgICAgICAgIGlmICh2YXJpYWJsZU5hbWUgPT09IGFudGVjZWRlbnRWYXJpYWJsZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgfHwgbnVsbDtcblxuICBpZiAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uTm9kZXNNYXRjaCA9IHN1YnN0aXR1dGlvbi5tYXRjaE5vZGVzKG5vZGVzKTtcblxuICAgIGFudGVjZWRlbnRWYXJpYWJsZU1hdGNoZXMgPSBzdWJzdGl0dXRpb25Ob2Rlc01hdGNoOyAgLy8vXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmFyaWFibGVOYW1lID0gYW50ZWNlZGVudFZhcmlhYmxlTmFtZSwgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gU3Vic3RpdHV0aW9uLmZyb21WYXJpYWJsZU5hbWVBbmROb2Rlcyh2YXJpYWJsZU5hbWUsIG5vZGVzKTtcblxuICAgIHN1YnN0aXR1dGlvbnMucHVzaChzdWJzdGl0dXRpb24pO1xuXG4gICAgYW50ZWNlZGVudFZhcmlhYmxlTWF0Y2hlcyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gYW50ZWNlZGVudFZhcmlhYmxlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hBbnRlY2VkZW50VGVybWluYWxOb2RlKGFudGVjZWRlbnRUZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBtYXRjaGVzID0gYW50ZWNlZGVudFRlcm1pbmFsTm9kZS5tYXRjaCh0ZXJtaW5hbE5vZGUpLFxuICAgICAgICBhbnRlY2VkZW50VGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoZXM7XG5cbiAgcmV0dXJuIGFudGVjZWRlbnRUZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaEFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUoYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBzdWJzdGl0dXRpb25zKSB7XG4gIGxldCBhbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgIGFudGVjZWRlbnRSdWxlTmFtZSA9IGFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTsgLy8vXG5cbiAgaWYgKHJ1bGVOYW1lID09PSBhbnRlY2VkZW50UnVsZU5hbWUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBhbnRlY2VkZW50Q2hpbGROb2RlcyA9IGFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgYW50ZWNlZGVudE5vZGVzID0gYW50ZWNlZGVudENoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgIGFudGVjZWRlbnRDaGlsZE5vZGVzTWF0Y2hlcyA9IG1hdGNoQW50ZWNlZGVudE5vZGVzKGFudGVjZWRlbnROb2Rlcywgbm9kZXMsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBhbnRlY2VkZW50Q2hpbGROb2Rlc01hdGNoZXM7IC8vL1xuXG4gICAgaWYgKCFhbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlTWF0Y2hlcykge1xuICAgICAgY29uc3QgcnVsZU5hbWVTdGF0ZW1lbnRSdWxlTmFtZSA9IChydWxlTmFtZSA9PT0gU1RBVEVNRU5UX1JVTEVfTkFNRSk7XG5cbiAgICAgIGlmIChydWxlTmFtZVN0YXRlbWVudFJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBub25UZXJtaW5hbE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYW50ZWNlZGVudFN0YXRlbWVudE5vZGUgPSBhbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGFudGVjZWRlbnRTdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoQW50ZWNlZGVudFN0YXRlbWVudE5vZGUoYW50ZWNlZGVudFN0YXRlbWVudE5vZGUsIHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgIGFudGVjZWRlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gYW50ZWNlZGVudFN0YXRlbWVudE5vZGVNYXRjaGVzOyAvLy9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQW50ZWNlZGVudFN0YXRlbWVudE5vZGUoYW50ZWNlZGVudFN0YXRlbWVudE5vZGUsIHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGFudGVjZWRlbnRTdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUgPSBhbnRlY2VkZW50U3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICBhbnRlY2VkZW50Q2hpbGROb2RlcyA9IGFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICBhbnRlY2VkZW50Q2hpbGROb2Rlc0xlbmd0aCA9IGFudGVjZWRlbnRDaGlsZE5vZGVzLmxlbmd0aDtcblxuICBpZiAoYW50ZWNlZGVudENoaWxkTm9kZXNMZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCBmaXJzdEFudGVjZWRlbnRDaGlsZE5vZGUgPSBmaXJzdChhbnRlY2VkZW50Q2hpbGROb2RlcyksXG4gICAgICAgICAgYW50ZWNlZGVudENoaWxkTm9kZSA9IGZpcnN0QW50ZWNlZGVudENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgIGFudGVjZWRlbnRDaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgPSBhbnRlY2VkZW50Q2hpbGROb2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAoYW50ZWNlZGVudENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgYW50ZWNlZGVudE5vblRlcm1pbmFsQ2hpbGROb2RlID0gYW50ZWNlZGVudENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgYW50ZWNlZGVudE5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWUgPSBhbnRlY2VkZW50Tm9uVGVybWluYWxDaGlsZE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgICAgIGFudGVjZWRlbnROb25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lVmFyaWFibGVSdWxlTmFtZSA9IChhbnRlY2VkZW50Tm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSA9PT0gVkFSSUFCTEVfUlVMRV9OQU1FKTtcblxuICAgICAgaWYgKGFudGVjZWRlbnROb25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lVmFyaWFibGVSdWxlTmFtZSkge1xuICAgICAgICBjb25zdCBhbnRlY2VkZW50VmFyaWFibGVOb2RlID0gYW50ZWNlZGVudE5vblRlcm1pbmFsQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgIGFudGVjZWRlbnRWYXJpYWJsZU1hdGNoZXMgPSBtYXRjaEFudGVjZWRlbnRWYXJpYWJsZShhbnRlY2VkZW50VmFyaWFibGVOb2RlLCBub2Rlcywgc3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgICAgYW50ZWNlZGVudFN0YXRlbWVudE5vZGVNYXRjaGVzID0gYW50ZWNlZGVudFZhcmlhYmxlTWF0Y2hlczsgLy8vXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFudGVjZWRlbnRTdGF0ZW1lbnROb2RlTWF0Y2hlcztcbn1cbiJdLCJuYW1lcyI6WyJBbnRlY2VkZW50Iiwic3RhdGVtZW50Tm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJzdWJwcm9vZkFzc2VydGlvbk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInVucXVhbGlmaWVkU3RhdGVtZW50U3RhdGVtZW50Tm9kZXNRdWVyeSIsInF1YWxpZmllZE9yVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsIm1hdGNoU3VicHJvb2ZOb2RlIiwic3VicHJvb2ZOb2RlIiwic3Vic3RpdHV0aW9ucyIsInN1YnByb29mTm9kZU1hdGNoZXMiLCJzdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJzdWJwcm9vZkFzc2VydGlvblN0YXRlbWVudE5vZGVzIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2RlcyIsInF1YWxpZmllZE9yVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZXMiLCJzdGF0ZW1lbnROb2Rlc0xlbmd0aCIsImxlbmd0aCIsInN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50Tm9kZXNMZW5ndGgiLCJldmVyeSIsInN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50Tm9kZSIsImluZGV4Iiwibm9uVGVybWluYWxOb2RlIiwiYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZSIsImFudGVjZWRlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hBbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJ0b0pTT04iLCJzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJzdGF0ZW1lbnQiLCJqc29uIiwiZnJvbUpTT04iLCJyZWxlYXNlQ29udGV4dCIsInN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nIiwiYW50ZWNlZGVudCIsImZyb21TdGF0ZW1lbnROb2RlIiwibWF0Y2hBbnRlY2VkZW50Tm9kZSIsImFudGVjZWRlbnROb2RlIiwibm9kZSIsImFudGVjZWRlbnROb2RlTWF0Y2hlcyIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInJ1bGVOb2RlVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiYW50ZWNlZGVudFRlcm1pbmFsTm9kZSIsImFudGVjZWRlbnRUZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hBbnRlY2VkZW50VGVybWluYWxOb2RlIiwibWF0Y2hBbnRlY2VkZW50Tm9kZXMiLCJhbnRlY2VkZW50Tm9kZXMiLCJub2RlcyIsImFudGVjZWRlbnROb2Rlc01hdGNoZXMiLCJub2Rlc0xlbmd0aCIsImFudGVjZWRlbnROb2Rlc0xlbmd0aCIsIm1hdGNoQW50ZWNlZGVudFZhcmlhYmxlIiwiYW50ZWNlZGVudFZhcmlhYmxlTm9kZSIsImFudGVjZWRlbnRWYXJpYWJsZU1hdGNoZXMiLCJhbnRlY2VkZW50VmFyaWFibGVOYW1lIiwidmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSIsInN1YnN0aXR1dGlvbiIsImZpbmQiLCJ2YXJpYWJsZU5hbWUiLCJnZXRWYXJpYWJsZU5hbWUiLCJzdWJzdGl0dXRpb25Ob2Rlc01hdGNoIiwibWF0Y2hOb2RlcyIsIlN1YnN0aXR1dGlvbiIsImZyb21WYXJpYWJsZU5hbWVBbmROb2RlcyIsInB1c2giLCJtYXRjaGVzIiwibWF0Y2giLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiYW50ZWNlZGVudFJ1bGVOYW1lIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJhbnRlY2VkZW50Q2hpbGROb2RlcyIsImFudGVjZWRlbnRDaGlsZE5vZGVzTWF0Y2hlcyIsInJ1bGVOYW1lU3RhdGVtZW50UnVsZU5hbWUiLCJTVEFURU1FTlRfUlVMRV9OQU1FIiwiYW50ZWNlZGVudFN0YXRlbWVudE5vZGUiLCJhbnRlY2VkZW50U3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJtYXRjaEFudGVjZWRlbnRTdGF0ZW1lbnROb2RlIiwiYW50ZWNlZGVudENoaWxkTm9kZXNMZW5ndGgiLCJmaXJzdEFudGVjZWRlbnRDaGlsZE5vZGUiLCJmaXJzdCIsImFudGVjZWRlbnRDaGlsZE5vZGUiLCJhbnRlY2VkZW50Q2hpbGROb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJhbnRlY2VkZW50Tm9uVGVybWluYWxDaGlsZE5vZGUiLCJhbnRlY2VkZW50Tm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSIsImFudGVjZWRlbnROb25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lVmFyaWFibGVSdWxlTmFtZSIsIlZBUklBQkxFX1JVTEVfTkFNRSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFnQnFCQTs7O2lFQWRJO3FCQUVIO3NCQUNPO3FCQUNTO3lCQUdrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7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
package/lib/axiom.js CHANGED
@@ -8,9 +8,14 @@ Object.defineProperty(exports, "default", {
8
8
  return Axiom;
9
9
  }
10
10
  });
11
- var _label = /*#__PURE__*/ _interopRequireDefault(require("./label"));
11
+ var _axiomLemmaTheorem = /*#__PURE__*/ _interopRequireDefault(require("./axiomLemmaTheorem"));
12
12
  var _kinds = require("./kinds");
13
- var _string = require("./utilities/string");
13
+ function _assertThisInitialized(self) {
14
+ if (self === void 0) {
15
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
16
+ }
17
+ return self;
18
+ }
14
19
  function _classCallCheck(instance, Constructor) {
15
20
  if (!(instance instanceof Constructor)) {
16
21
  throw new TypeError("Cannot call a class as a function");
@@ -30,97 +35,107 @@ function _createClass(Constructor, protoProps, staticProps) {
30
35
  if (staticProps) _defineProperties(Constructor, staticProps);
31
36
  return Constructor;
32
37
  }
38
+ function _defineProperty(obj, key, value) {
39
+ if (key in obj) {
40
+ Object.defineProperty(obj, key, {
41
+ value: value,
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true
45
+ });
46
+ } else {
47
+ obj[key] = value;
48
+ }
49
+ return obj;
50
+ }
51
+ function _getPrototypeOf(o) {
52
+ _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
53
+ return o.__proto__ || Object.getPrototypeOf(o);
54
+ };
55
+ return _getPrototypeOf(o);
56
+ }
57
+ function _inherits(subClass, superClass) {
58
+ if (typeof superClass !== "function" && superClass !== null) {
59
+ throw new TypeError("Super expression must either be null or a function");
60
+ }
61
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
62
+ constructor: {
63
+ value: subClass,
64
+ writable: true,
65
+ configurable: true
66
+ }
67
+ });
68
+ if (superClass) _setPrototypeOf(subClass, superClass);
69
+ }
33
70
  function _interopRequireDefault(obj) {
34
71
  return obj && obj.__esModule ? obj : {
35
72
  default: obj
36
73
  };
37
74
  }
38
- var Axiom = /*#__PURE__*/ function() {
39
- function Axiom(labels, unqualifiedStatementNode, indicativeConditionalNode) {
40
- _classCallCheck(this, Axiom);
41
- this.labels = labels;
42
- this.unqualifiedStatementNode = unqualifiedStatementNode;
43
- this.indicativeConditionalNode = indicativeConditionalNode;
75
+ function _possibleConstructorReturn(self, call) {
76
+ if (call && (_typeof(call) === "object" || typeof call === "function")) {
77
+ return call;
44
78
  }
45
- _createClass(Axiom, [
46
- {
47
- key: "getLabels",
48
- value: function getLabels() {
49
- return this.labels;
50
- }
51
- },
52
- {
53
- key: "getUnqualifiedStatementNode",
54
- value: function getUnqualifiedStatementNode() {
55
- return this.unqualifiedStatementNode;
56
- }
57
- },
58
- {
59
- key: "getIndicativeConditionalNode",
60
- value: function getIndicativeConditionalNode() {
61
- return this.indicativeConditionalNode;
62
- }
63
- },
64
- {
65
- key: "matchLabelName",
66
- value: function matchLabelName(labelName) {
67
- var matchesLabelName = this.labels.some(function(label) {
68
- var name = labelName, labelMatchesName = label.matchName(name);
69
- if (labelMatchesName) {
70
- return true;
71
- }
72
- });
73
- return matchesLabelName;
74
- }
75
- },
76
- {
77
- key: "toJSON",
78
- value: function toJSON() {
79
- var labelsJSON = this.labels.map(function(label) {
80
- var labelJSON = label.toJSON();
81
- return labelJSON;
82
- }), unqualifiedStatementString = (0, _string.nodeAsString)(this.unqualifiedStatementNode), indicativeConditionalString = (0, _string.nodeAsString)(this.indicativeConditionalNode), kind = _kinds.AXIOM_KIND, labels = labelsJSON, unqualifiedStatement = unqualifiedStatementString, indicativeConditional = indicativeConditionalString, json = {
83
- kind: kind,
84
- labels: labels,
85
- unqualifiedStatement: unqualifiedStatement,
86
- indicativeConditional: indicativeConditional
87
- };
88
- return json;
89
- }
79
+ return _assertThisInitialized(self);
80
+ }
81
+ function _setPrototypeOf(o, p) {
82
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
83
+ o.__proto__ = p;
84
+ return o;
85
+ };
86
+ return _setPrototypeOf(o, p);
87
+ }
88
+ var _typeof = function(obj) {
89
+ "@swc/helpers - typeof";
90
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
91
+ };
92
+ function _isNativeReflectConstruct() {
93
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
94
+ if (Reflect.construct.sham) return false;
95
+ if (typeof Proxy === "function") return true;
96
+ try {
97
+ Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
98
+ return true;
99
+ } catch (e) {
100
+ return false;
101
+ }
102
+ }
103
+ function _createSuper(Derived) {
104
+ var hasNativeReflectConstruct = _isNativeReflectConstruct();
105
+ return function _createSuperInternal() {
106
+ var Super = _getPrototypeOf(Derived), result;
107
+ if (hasNativeReflectConstruct) {
108
+ var NewTarget = _getPrototypeOf(this).constructor;
109
+ result = Reflect.construct(Super, arguments, NewTarget);
110
+ } else {
111
+ result = Super.apply(this, arguments);
90
112
  }
91
- ], [
113
+ return _possibleConstructorReturn(this, result);
114
+ };
115
+ }
116
+ var Axiom = /*#__PURE__*/ function(AxiomLemmaTheorem) {
117
+ _inherits(Axiom, AxiomLemmaTheorem);
118
+ var _super = _createSuper(Axiom);
119
+ function Axiom() {
120
+ _classCallCheck(this, Axiom);
121
+ return _super.apply(this, arguments);
122
+ }
123
+ _createClass(Axiom, null, [
92
124
  {
93
125
  key: "fromJSON",
94
126
  value: function fromJSON(json, releaseContext) {
95
- var labels = json.labels;
96
- var labelsJSON = labels; ///
97
- labels = labelsJSON.map(function(labelJSON) {
98
- var _$json = labelJSON, label = _label.default.fromJSON(_$json, releaseContext);
99
- return label;
100
- });
101
- var unqualifiedStatement = json.unqualifiedStatement, indicativeConditional = json.indicativeConditional;
102
- var unqualifiedStatementNode = null, indicativeConditionalNode = null;
103
- if (unqualifiedStatement !== null) {
104
- var unqualifiedStatementString = unqualifiedStatement; ///
105
- unqualifiedStatementNode = (0, _string.unqualifiedStatementNodeFromUnqualifiedStatementString)(unqualifiedStatementString, releaseContext);
106
- }
107
- if (indicativeConditional !== null) {
108
- var indicativeConditionalString = indicativeConditional; ///
109
- indicativeConditionalNode = (0, _string.indicativeConditionalNodeFromIndicativeConditionalString)(indicativeConditionalString, releaseContext);
110
- }
111
- var axiom = new Axiom(labels, unqualifiedStatementNode, indicativeConditionalNode);
112
- return axiom;
127
+ return _axiomLemmaTheorem.default.fromJSON(Axiom, json, releaseContext);
113
128
  }
114
129
  },
115
130
  {
116
- key: "fromLabelsUnqualifiedStatementNodeAndIndicativeConditionalNode",
117
- value: function fromLabelsUnqualifiedStatementNodeAndIndicativeConditionalNode(labels, unqualifiedStatementNode, indicativeConditionalNode) {
118
- var axiom = new Axiom(labels, unqualifiedStatementNode, indicativeConditionalNode);
119
- return axiom;
131
+ key: "fromLabelsAntecedentsAndConsequent",
132
+ value: function fromLabelsAntecedentsAndConsequent(labels, antecedents, consequent) {
133
+ return _axiomLemmaTheorem.default.fromLabelsAntecedentsAndConsequent(Axiom, labels, antecedents, consequent);
120
134
  }
121
135
  }
122
136
  ]);
123
137
  return Axiom;
124
- }();
138
+ }(_axiomLemmaTheorem.default);
139
+ _defineProperty(Axiom, "kind", _kinds.AXIOM_KIND);
125
140
 
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9heGlvbS5qcyIsIjw8anN4LWNvbmZpZy1wcmFnbWEuanM+PiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IExhYmVsIGZyb20gXCIuL2xhYmVsXCI7XG5cbmltcG9ydCB7IEFYSU9NX0tJTkQgfSBmcm9tIFwiLi9raW5kc1wiO1xuaW1wb3J0IHsgbm9kZUFzU3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuXG5pbXBvcnQgeyB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcsIGluZGljYXRpdmVDb25kaXRpb25hbE5vZGVGcm9tSW5kaWNhdGl2ZUNvbmRpdGlvbmFsU3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBeGlvbSB7XG4gIGNvbnN0cnVjdG9yKGxhYmVscywgdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlKSB7XG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy51bnF1YWxpZmllZFN0YXRlbWVudE5vZGUgPSB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGU7XG4gICAgdGhpcy5pbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlID0gaW5kaWNhdGl2ZUNvbmRpdGlvbmFsTm9kZTtcbiAgfVxuXG4gIGdldExhYmVscygpIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbHM7XG4gIH1cblxuICBnZXRVbnF1YWxpZmllZFN0YXRlbWVudE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0SW5kaWNhdGl2ZUNvbmRpdGlvbmFsTm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlO1xuICB9XG5cbiAgbWF0Y2hMYWJlbE5hbWUobGFiZWxOYW1lKSB7XG4gICAgY29uc3QgbWF0Y2hlc0xhYmVsTmFtZSA9IHRoaXMubGFiZWxzLnNvbWUoKGxhYmVsKSA9PiB7XG4gICAgICBjb25zdCBuYW1lID0gbGFiZWxOYW1lLCAvLy9cbiAgICAgICAgICAgIGxhYmVsTWF0Y2hlc05hbWUgPSBsYWJlbC5tYXRjaE5hbWUobmFtZSk7XG5cbiAgICAgIGlmIChsYWJlbE1hdGNoZXNOYW1lKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1hdGNoZXNMYWJlbE5hbWU7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgbGFiZWxzSlNPTiA9IHRoaXMubGFiZWxzLm1hcCgobGFiZWwpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gICAgICAgICAgICByZXR1cm4gbGFiZWxKU09OO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbm9kZUFzU3RyaW5nKHRoaXMudW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBpbmRpY2F0aXZlQ29uZGl0aW9uYWxTdHJpbmcgPSBub2RlQXNTdHJpbmcodGhpcy5pbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlKSxcbiAgICAgICAgICBraW5kID0gQVhJT01fS0lORCxcbiAgICAgICAgICBsYWJlbHMgPSBsYWJlbHNKU09OLCAgLy8vXG4gICAgICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnQgPSB1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZywgIC8vL1xuICAgICAgICAgIGluZGljYXRpdmVDb25kaXRpb25hbCA9IGluZGljYXRpdmVDb25kaXRpb25hbFN0cmluZywgIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBraW5kLFxuICAgICAgICAgICAgbGFiZWxzLFxuICAgICAgICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnQsXG4gICAgICAgICAgICBpbmRpY2F0aXZlQ29uZGl0aW9uYWxcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgcmVsZWFzZUNvbnRleHQpIHtcbiAgICBsZXQgeyBsYWJlbHMgfSA9IGpzb247XG5cbiAgICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzOyAgLy8vXG5cbiAgICBsYWJlbHMgPSBsYWJlbHNKU09OLm1hcCgobGFiZWxKU09OKSA9PiB7XG4gICAgICBjb25zdCBqc29uID0gbGFiZWxKU09OLCAvLy9cbiAgICAgICAgICAgIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgcmVsZWFzZUNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gbGFiZWw7XG4gICAgfSk7XG5cbiAgICBsZXQgeyB1bnF1YWxpZmllZFN0YXRlbWVudCwgaW5kaWNhdGl2ZUNvbmRpdGlvbmFsIH0gPSBqc29uO1xuXG4gICAgbGV0IHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSA9IG51bGwsXG4gICAgICAgIGluZGljYXRpdmVDb25kaXRpb25hbE5vZGUgPSBudWxsO1xuXG4gICAgaWYgKHVucXVhbGlmaWVkU3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IHVucXVhbGlmaWVkU3RhdGVtZW50OyAgLy8vXG5cbiAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSA9IHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZUZyb21VbnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyh1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZywgcmVsZWFzZUNvbnRleHQpO1xuICAgIH1cblxuICAgIGlmIChpbmRpY2F0aXZlQ29uZGl0aW9uYWwgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGluZGljYXRpdmVDb25kaXRpb25hbFN0cmluZyA9IGluZGljYXRpdmVDb25kaXRpb25hbDsgIC8vL1xuXG4gICAgICBpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlID0gaW5kaWNhdGl2ZUNvbmRpdGlvbmFsTm9kZUZyb21JbmRpY2F0aXZlQ29uZGl0aW9uYWxTdHJpbmcoaW5kaWNhdGl2ZUNvbmRpdGlvbmFsU3RyaW5nLCByZWxlYXNlQ29udGV4dCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXhpb20gPSBuZXcgQXhpb20obGFiZWxzLCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGluZGljYXRpdmVDb25kaXRpb25hbE5vZGUpO1xuXG4gICAgcmV0dXJuIGF4aW9tO1xuICB9XG5cbiAgc3RhdGljIGZyb21MYWJlbHNVbnF1YWxpZmllZFN0YXRlbWVudE5vZGVBbmRJbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlKGxhYmVscywgdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlKSB7XG4gICAgY29uc3QgYXhpb20gPSBuZXcgQXhpb20obGFiZWxzLCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGluZGljYXRpdmVDb25kaXRpb25hbE5vZGUpO1xuXG4gICAgcmV0dXJuIGF4aW9tO1xuICB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIkF4aW9tIiwibGFiZWxzIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwiaW5kaWNhdGl2ZUNvbmRpdGlvbmFsTm9kZSIsImdldExhYmVscyIsImdldFVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsImdldEluZGljYXRpdmVDb25kaXRpb25hbE5vZGUiLCJtYXRjaExhYmVsTmFtZSIsImxhYmVsTmFtZSIsIm1hdGNoZXNMYWJlbE5hbWUiLCJzb21lIiwibGFiZWwiLCJuYW1lIiwibGFiZWxNYXRjaGVzTmFtZSIsIm1hdGNoTmFtZSIsInRvSlNPTiIsImxhYmVsc0pTT04iLCJtYXAiLCJsYWJlbEpTT04iLCJ1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsImluZGljYXRpdmVDb25kaXRpb25hbFN0cmluZyIsImtpbmQiLCJBWElPTV9LSU5EIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJpbmRpY2F0aXZlQ29uZGl0aW9uYWwiLCJqc29uIiwiZnJvbUpTT04iLCJyZWxlYXNlQ29udGV4dCIsIkxhYmVsIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nIiwiaW5kaWNhdGl2ZUNvbmRpdGlvbmFsTm9kZUZyb21JbmRpY2F0aXZlQ29uZGl0aW9uYWxTdHJpbmciLCJheGlvbSIsImZyb21MYWJlbHNVbnF1YWxpZmllZFN0YXRlbWVudE5vZGVBbmRJbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVNxQkE7OzswREFQSDtxQkFFUztzQkFDRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlkLElBQUEsQUFBTUEsc0JBQU47YUFBTUEsTUFDUEMsTUFBTSxFQUFFQyx3QkFBd0IsRUFBRUMseUJBQXlCOzhCQURwREg7UUFFakIsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyx3QkFBd0IsR0FBR0E7UUFDaEMsSUFBSSxDQUFDQyx5QkFBeUIsR0FBR0E7O2lCQUpoQkg7O1lBT25CSSxLQUFBQTttQkFBQUEsU0FBQUEsWUFBWTtnQkFDVixPQUFPLElBQUksQ0FBQ0gsTUFBTTtZQUNwQjs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQSw4QkFBOEI7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDSCx3QkFBd0I7WUFDdEM7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUEsK0JBQStCO2dCQUM3QixPQUFPLElBQUksQ0FBQ0gseUJBQXlCO1lBQ3ZDOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBLGVBQWVDLFNBQVMsRUFBRTtnQkFDeEIsSUFBTUMsbUJBQW1CLElBQUksQ0FBQ1IsTUFBTSxDQUFDUyxJQUFJLENBQUMsU0FBQ0MsT0FBVTtvQkFDbkQsSUFBTUMsT0FBT0osV0FDUEssbUJBQW1CRixNQUFNRyxTQUFTLENBQUNGO29CQUV6QyxJQUFJQyxrQkFBa0I7d0JBQ3BCLE9BQU8sSUFBSTtvQkFDYixDQUFDO2dCQUNIO2dCQUVBLE9BQU9KO1lBQ1Q7OztZQUVBTSxLQUFBQTttQkFBQUEsU0FBQUEsU0FBUztnQkFDUCxJQUFNQyxhQUFhLElBQUksQ0FBQ2YsTUFBTSxDQUFDZ0IsR0FBRyxDQUFDLFNBQUNOLE9BQVU7b0JBQ3RDLElBQU1PLFlBQVlQLE1BQU1JLE1BQU07b0JBRTlCLE9BQU9HO2dCQUNULElBQ0FDLDZCQUE2QkMsSUFBQUEsb0JBQVksRUFBQyxJQUFJLENBQUNsQix3QkFBd0IsR0FDdkVtQiw4QkFBOEJELElBQUFBLG9CQUFZLEVBQUMsSUFBSSxDQUFDakIseUJBQXlCLEdBQ3pFbUIsT0FBT0MsaUJBQVUsRUFDakJ0QixTQUFTZSxZQUNUUSx1QkFBdUJMLDRCQUN2Qk0sd0JBQXdCSiw2QkFDeEJLLE9BQU87b0JBQ0xKLE1BQUFBO29CQUNBckIsUUFBQUE7b0JBQ0F1QixzQkFBQUE7b0JBQ0FDLHVCQUFBQTtnQkFDRjtnQkFFTixPQUFPQztZQUNUOzs7O1lBRU9DLEtBQUFBO21CQUFQLFNBQU9BLFNBQVNELElBQUksRUFBRUUsY0FBYyxFQUFFO2dCQUNwQyxJQUFJLEFBQUUzQixTQUFXeUIsS0FBWHpCO2dCQUVOLElBQU1lLGFBQWFmLFFBQVMsR0FBRztnQkFFL0JBLFNBQVNlLFdBQVdDLEdBQUcsQ0FBQyxTQUFDQyxXQUFjO29CQUNyQyxJQUFNUSxTQUFPUixXQUNQUCxRQUFRa0IsY0FBSyxDQUFDRixRQUFRLENBQUNELFFBQU1FO29CQUVuQyxPQUFPakI7Z0JBQ1Q7Z0JBRUEsSUFBTWEsdUJBQWdERSxLQUFoREYsc0JBQXNCQyx3QkFBMEJDLEtBQTFCRDtnQkFFNUIsSUFBSXZCLDJCQUEyQixJQUFJLEVBQy9CQyw0QkFBNEIsSUFBSTtnQkFFcEMsSUFBSXFCLHlCQUF5QixJQUFJLEVBQUU7b0JBQ2pDLElBQU1MLDZCQUE2Qkssc0JBQXVCLEdBQUc7b0JBRTdEdEIsMkJBQTJCNEIsSUFBQUEsOERBQXNELEVBQUNYLDRCQUE0QlM7Z0JBQ2hILENBQUM7Z0JBRUQsSUFBSUgsMEJBQTBCLElBQUksRUFBRTtvQkFDbEMsSUFBTUosOEJBQThCSSx1QkFBd0IsR0FBRztvQkFFL0R0Qiw0QkFBNEI0QixJQUFBQSxnRUFBd0QsRUFBQ1YsNkJBQTZCTztnQkFDcEgsQ0FBQztnQkFFRCxJQUFNSSxRQUFRLElBbkZHaEMsTUFtRk9DLFFBQVFDLDBCQUEwQkM7Z0JBRTFELE9BQU82QjtZQUNUOzs7WUFFT0MsS0FBQUE7bUJBQVAsU0FBT0EsK0RBQStEaEMsTUFBTSxFQUFFQyx3QkFBd0IsRUFBRUMseUJBQXlCLEVBQUU7Z0JBQ2pJLElBQU02QixRQUFRLElBekZHaEMsTUF5Rk9DLFFBQVFDLDBCQUEwQkM7Z0JBRTFELE9BQU82QjtZQUNUOzs7V0E1Rm1CaEMifQ==
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9heGlvbS5qcyIsIjw8anN4LWNvbmZpZy1wcmFnbWEuanM+PiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEF4aW9tTGVtbWFUaGVvcmVtIGZyb20gXCIuL2F4aW9tTGVtbWFUaGVvcmVtXCI7XG5cbmltcG9ydCB7IEFYSU9NX0tJTkQgfSBmcm9tIFwiLi9raW5kc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBeGlvbSBleHRlbmRzIEF4aW9tTGVtbWFUaGVvcmVtIHtcbiAgc3RhdGljIGtpbmQgPSBBWElPTV9LSU5EO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCByZWxlYXNlQ29udGV4dCkgeyByZXR1cm4gQXhpb21MZW1tYVRoZW9yZW0uZnJvbUpTT04oQXhpb20sIGpzb24sIHJlbGVhc2VDb250ZXh0KTsgfVxuXG4gIHN0YXRpYyBmcm9tTGFiZWxzQW50ZWNlZGVudHNBbmRDb25zZXF1ZW50KGxhYmVscywgYW50ZWNlZGVudHMsIGNvbnNlcXVlbnQpIHsgcmV0dXJuIEF4aW9tTGVtbWFUaGVvcmVtLmZyb21MYWJlbHNBbnRlY2VkZW50c0FuZENvbnNlcXVlbnQoQXhpb20sIGxhYmVscywgYW50ZWNlZGVudHMsIGNvbnNlcXVlbnQpOyB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIkF4aW9tIiwiZnJvbUpTT04iLCJqc29uIiwicmVsZWFzZUNvbnRleHQiLCJBeGlvbUxlbW1hVGhlb3JlbSIsImZyb21MYWJlbHNBbnRlY2VkZW50c0FuZENvbnNlcXVlbnQiLCJsYWJlbHMiLCJhbnRlY2VkZW50cyIsImNvbnNlcXVlbnQiLCJraW5kIiwiQVhJT01fS0lORCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFNcUJBOzs7c0VBSlM7cUJBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVosSUFBQSxBQUFNQSxzQkFBTjtjQUFNQTs4QkFBQUE7YUFBQUE7OEJBQUFBOzs7aUJBQUFBOztZQUdaQyxLQUFBQTttQkFBUCxTQUFPQSxTQUFTQyxJQUFJLEVBQUVDLGNBQWMsRUFBRTtnQkFBRSxPQUFPQywwQkFBaUIsQ0FBQ0gsUUFBUSxDQUh0REQsT0FHOERFLE1BQU1DO1lBQWlCOzs7WUFFakdFLEtBQUFBO21CQUFQLFNBQU9BLG1DQUFtQ0MsTUFBTSxFQUFFQyxXQUFXLEVBQUVDLFVBQVUsRUFBRTtnQkFBRSxPQUFPSiwwQkFBaUIsQ0FBQ0Msa0NBQWtDLENBTHJITCxPQUs2SE0sUUFBUUMsYUFBYUM7WUFBYTs7O1dBTC9KUjtFQUFjSSwwQkFBaUI7QUFDbEQsZ0JBRG1CSixPQUNaUyxRQUFPQyxpQkFBVSJ9