occam-verify-cli 0.0.532 → 0.0.533

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.
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Assertion;
9
+ }
10
+ });
11
+ function _classCallCheck(instance, Constructor) {
12
+ if (!(instance instanceof Constructor)) {
13
+ throw new TypeError("Cannot call a class as a function");
14
+ }
15
+ }
16
+ function _defineProperties(target, props) {
17
+ for(var i = 0; i < props.length; i++){
18
+ var descriptor = props[i];
19
+ descriptor.enumerable = descriptor.enumerable || false;
20
+ descriptor.configurable = true;
21
+ if ("value" in descriptor) descriptor.writable = true;
22
+ Object.defineProperty(target, descriptor.key, descriptor);
23
+ }
24
+ }
25
+ function _createClass(Constructor, protoProps, staticProps) {
26
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
+ if (staticProps) _defineProperties(Constructor, staticProps);
28
+ return Constructor;
29
+ }
30
+ var Assertion = /*#__PURE__*/ function() {
31
+ function Assertion(variable) {
32
+ _classCallCheck(this, Assertion);
33
+ this.variable = variable;
34
+ }
35
+ _createClass(Assertion, [
36
+ {
37
+ key: "getVariable",
38
+ value: function getVariable() {
39
+ return this.variable;
40
+ }
41
+ },
42
+ {
43
+ key: "assert",
44
+ value: function assert(proofContext) {
45
+ proofContext.addVariable(this.variable);
46
+ }
47
+ }
48
+ ], [
49
+ {
50
+ key: "fromVariable",
51
+ value: function fromVariable(variable) {
52
+ var assertion = new Assertion(variable);
53
+ return assertion;
54
+ }
55
+ }
56
+ ]);
57
+ return Assertion;
58
+ }();
59
+
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hc3NlcnRpb24uanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKHZhcmlhYmxlKSB7XG4gICAgdGhpcy52YXJpYWJsZSA9IHZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0VmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGU7XG4gIH1cblxuICBhc3NlcnQocHJvb2ZDb250ZXh0KSB7XG4gICAgcHJvb2ZDb250ZXh0LmFkZFZhcmlhYmxlKHRoaXMudmFyaWFibGUpO1xuICB9XG5cbiAgc3RhdGljIGZyb21WYXJpYWJsZSh2YXJpYWJsZSkge1xuICAgIGNvbnN0IGFzc2VydGlvbiA9IG5ldyBBc3NlcnRpb24odmFyaWFibGUpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbjtcbiAgfVxufVxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJBc3NlcnRpb24iLCJ2YXJpYWJsZSIsImdldFZhcmlhYmxlIiwiYXNzZXJ0IiwicHJvb2ZDb250ZXh0IiwiYWRkVmFyaWFibGUiLCJmcm9tVmFyaWFibGUiLCJhc3NlcnRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBRXFCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFOLElBQUEsQUFBTUEsMEJBQU47YUFBTUEsVUFDUEMsUUFBUTs4QkFEREQ7UUFFakIsSUFBSSxDQUFDQyxRQUFRLEdBQUdBOztpQkFGQ0Q7O1lBS25CRSxLQUFBQTttQkFBQUEsU0FBQUEsY0FBYztnQkFDWixPQUFPLElBQUksQ0FBQ0QsUUFBUTtZQUN0Qjs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQSxPQUFPQyxZQUFZLEVBQUU7Z0JBQ25CQSxhQUFhQyxXQUFXLENBQUMsSUFBSSxDQUFDSixRQUFRO1lBQ3hDOzs7O1lBRU9LLEtBQUFBO21CQUFQLFNBQU9BLGFBQWFMLFFBQVEsRUFBRTtnQkFDNUIsSUFBTU0sWUFBWSxJQWREUCxVQWNlQztnQkFFaEMsT0FBT007WUFDVDs7O1dBakJtQlAifQ==
package/lib/constants.js CHANGED
@@ -15,9 +15,6 @@ _export(exports, {
15
15
  EMPTY_STRING: function() {
16
16
  return EMPTY_STRING;
17
17
  },
18
- EQUALITY_DEPTH: function() {
19
- return EQUALITY_DEPTH;
20
- },
21
18
  MAXIMUM_INDEXES_LENGTH: function() {
22
19
  return MAXIMUM_INDEXES_LENGTH;
23
20
  },
@@ -33,10 +30,9 @@ _export(exports, {
33
30
  });
34
31
  var COMMA = ",";
35
32
  var EMPTY_STRING = "";
36
- var EQUALITY_DEPTH = 2;
37
33
  var MAXIMUM_INDEXES_LENGTH = 10;
38
34
  var BRACKETED_STATEMENT_DEPTH = 2;
39
35
  var MAXIMUM_PERMUTATION_LENGTH = 5;
40
36
  var BRACKETED_METASTATEMENT_DEPTH = 1;
41
37
 
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBDT01NQSA9ICcsJztcbmV4cG9ydCBjb25zdCBFTVBUWV9TVFJJTkcgPSBcIlwiO1xuZXhwb3J0IGNvbnN0IEVRVUFMSVRZX0RFUFRIID0gMjtcbmV4cG9ydCBjb25zdCBNQVhJTVVNX0lOREVYRVNfTEVOR1RIID0gMTA7XG5leHBvcnQgY29uc3QgQlJBQ0tFVEVEX1NUQVRFTUVOVF9ERVBUSCA9IDI7XG5leHBvcnQgY29uc3QgTUFYSU1VTV9QRVJNVVRBVElPTl9MRU5HVEggPSA1O1xuZXhwb3J0IGNvbnN0IEJSQUNLRVRFRF9NRVRBU1RBVEVNRU5UX0RFUFRIID0gMTtcbiJdLCJuYW1lcyI6WyJDT01NQSIsIkVNUFRZX1NUUklORyIsIkVRVUFMSVRZX0RFUFRIIiwiTUFYSU1VTV9JTkRFWEVTX0xFTkdUSCIsIkJSQUNLRVRFRF9TVEFURU1FTlRfREVQVEgiLCJNQVhJTVVNX1BFUk1VVEFUSU9OX0xFTkdUSCIsIkJSQUNLRVRFRF9NRVRBU1RBVEVNRU5UX0RFUFRIIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFFYUEsS0FBSztlQUFMQTs7SUFDQUMsWUFBWTtlQUFaQTs7SUFDQUMsY0FBYztlQUFkQTs7SUFDQUMsc0JBQXNCO2VBQXRCQTs7SUFDQUMseUJBQXlCO2VBQXpCQTs7SUFDQUMsMEJBQTBCO2VBQTFCQTs7SUFDQUMsNkJBQTZCO2VBQTdCQTs7O0FBTk4sSUFBTU4sUUFBUTtBQUNkLElBQU1DLGVBQWU7QUFDckIsSUFBTUMsaUJBQWlCO0FBQ3ZCLElBQU1DLHlCQUF5QjtBQUMvQixJQUFNQyw0QkFBNEI7QUFDbEMsSUFBTUMsNkJBQTZCO0FBQ25DLElBQU1DLGdDQUFnQyJ9
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBDT01NQSA9ICcsJztcbmV4cG9ydCBjb25zdCBFTVBUWV9TVFJJTkcgPSBcIlwiO1xuZXhwb3J0IGNvbnN0IE1BWElNVU1fSU5ERVhFU19MRU5HVEggPSAxMDtcbmV4cG9ydCBjb25zdCBCUkFDS0VURURfU1RBVEVNRU5UX0RFUFRIID0gMjtcbmV4cG9ydCBjb25zdCBNQVhJTVVNX1BFUk1VVEFUSU9OX0xFTkdUSCA9IDU7XG5leHBvcnQgY29uc3QgQlJBQ0tFVEVEX01FVEFTVEFURU1FTlRfREVQVEggPSAxO1xuIl0sIm5hbWVzIjpbIkNPTU1BIiwiRU1QVFlfU1RSSU5HIiwiTUFYSU1VTV9JTkRFWEVTX0xFTkdUSCIsIkJSQUNLRVRFRF9TVEFURU1FTlRfREVQVEgiLCJNQVhJTVVNX1BFUk1VVEFUSU9OX0xFTkdUSCIsIkJSQUNLRVRFRF9NRVRBU1RBVEVNRU5UX0RFUFRIIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFFYUEsS0FBSztlQUFMQTs7SUFDQUMsWUFBWTtlQUFaQTs7SUFDQUMsc0JBQXNCO2VBQXRCQTs7SUFDQUMseUJBQXlCO2VBQXpCQTs7SUFDQUMsMEJBQTBCO2VBQTFCQTs7SUFDQUMsNkJBQTZCO2VBQTdCQTs7O0FBTE4sSUFBTUwsUUFBUTtBQUNkLElBQU1DLGVBQWU7QUFDckIsSUFBTUMseUJBQXlCO0FBQy9CLElBQU1DLDRCQUE0QjtBQUNsQyxJQUFNQyw2QkFBNkI7QUFDbkMsSUFBTUMsZ0NBQWdDIn0=
@@ -8,11 +8,9 @@ Object.defineProperty(exports, "default", {
8
8
  return _default;
9
9
  }
10
10
  });
11
- var _equality = /*#__PURE__*/ _interopRequireDefault(require("../equality"));
12
11
  var _file = /*#__PURE__*/ _interopRequireDefault(require("../mixins/file"));
13
12
  var _logging = /*#__PURE__*/ _interopRequireDefault(require("../mixins/logging"));
14
13
  var _array = require("../utilities/array");
15
- var _constants = require("../constants");
16
14
  function _arrayLikeToArray(arr, len) {
17
15
  if (len == null || len > arr.length) len = arr.length;
18
16
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -111,19 +109,6 @@ var ProofContext = /*#__PURE__*/ function() {
111
109
  return this.context.getMetavariables();
112
110
  }
113
111
  },
114
- {
115
- key: "getEqualities",
116
- value: function getEqualities() {
117
- var equalities = [], start = -_constants.MAXIMUM_INDEXES_LENGTH, proofSteps = this.proofSteps.slice(start); ///
118
- proofSteps.forEach(function(proofStep) {
119
- var equality = _equality.default.fromProofStep(proofStep);
120
- if (equality !== null) {
121
- equalities.push(equality);
122
- }
123
- });
124
- return equalities;
125
- }
126
- },
127
112
  {
128
113
  key: "addVariable",
129
114
  value: function addVariable(variable) {
@@ -196,9 +181,5 @@ var ProofContext = /*#__PURE__*/ function() {
196
181
  Object.assign(ProofContext.prototype, _file.default);
197
182
  Object.assign(ProofContext.prototype, _logging.default);
198
183
  var _default = ProofContext;
199
- function equalitiesFromProofSteps(proofSteps, context) {
200
- var equalities = [];
201
- return equalities;
202
- }
203
184
 
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3Byb29mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRXF1YWxpdHkgZnJvbSBcIi4uL2VxdWFsaXR5XCI7XG5pbXBvcnQgZmlsZU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL2ZpbGVcIjtcbmltcG9ydCBsb2dnaW5nTWl4aW5zIGZyb20gXCIuLi9taXhpbnMvbG9nZ2luZ1wiO1xuXG5pbXBvcnQgeyBwdXNoLCBsYXN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgTUFYSU1VTV9JTkRFWEVTX0xFTkdUSCB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuY2xhc3MgUHJvb2ZDb250ZXh0IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgdmFyaWFibGVzLCBwcm9vZlN0ZXBzKSB7XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICB0aGlzLnZhcmlhYmxlcyA9IHZhcmlhYmxlcztcbiAgICB0aGlzLnByb29mU3RlcHMgPSBwcm9vZlN0ZXBzO1xuICB9XG5cbiAgZ2V0Q29udGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0O1xuICB9XG5cbiAgZ2V0VmFyaWFibGVzKCkge1xuICAgIGNvbnN0IHZhcmlhYmxlcyA9IFtdO1xuXG4gICAgcHVzaCh2YXJpYWJsZXMsIHRoaXMudmFyaWFibGVzKTtcblxuICAgIGNvbnN0IGNvbnRleHRWYXJpYWJsZXMgPSB0aGlzLmNvbnRleHQuZ2V0VmFyaWFibGVzKCk7XG5cbiAgICBwdXNoKHZhcmlhYmxlcywgY29udGV4dFZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0UHJvb2ZTdGVwcygpIHtcbiAgICBsZXQgcHJvb2ZTdGVwcyA9IHRoaXMuY29udGV4dC5nZXRQcm9vZlN0ZXBzKCk7XG5cbiAgICBwcm9vZlN0ZXBzID0gW1xuICAgICAgLi4ucHJvb2ZTdGVwcyxcbiAgICAgIC4uLnRoaXMucHJvb2ZTdGVwc1xuICAgIF07XG5cbiAgICByZXR1cm4gcHJvb2ZTdGVwcztcbiAgfVxuXG4gIGdldExhc3RQcm9vZlN0ZXAoKSB7XG4gICAgbGV0IGxhc3RQcm9vZlN0ZXAgPSBudWxsO1xuXG4gICAgY29uc3QgcHJvb2ZTdGVwc0xlbmd0aCA9IHRoaXMucHJvb2ZTdGVwcy5sZW5ndGg7XG5cbiAgICBpZiAocHJvb2ZTdGVwc0xlbmd0aCA+IDApIHtcbiAgICAgIGxhc3RQcm9vZlN0ZXAgPSBsYXN0KHRoaXMucHJvb2ZTdGVwcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RQcm9vZlN0ZXA7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVzKCkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmdldE1ldGF2YXJpYWJsZXMoKTsgfVxuXG4gIGdldEVxdWFsaXRpZXMoKSB7XG4gICAgY29uc3QgZXF1YWxpdGllcyA9IFtdLFxuICAgICAgICAgIHN0YXJ0ID0gLU1BWElNVU1fSU5ERVhFU19MRU5HVEgsICAvLy9cbiAgICAgICAgICBwcm9vZlN0ZXBzID0gdGhpcy5wcm9vZlN0ZXBzLnNsaWNlKHN0YXJ0KTsgLy8vXG5cbiAgICBwcm9vZlN0ZXBzLmZvckVhY2goKHByb29mU3RlcCkgPT4ge1xuICAgICAgY29uc3QgZXF1YWxpdHkgPSBFcXVhbGl0eS5mcm9tUHJvb2ZTdGVwKHByb29mU3RlcCk7XG5cbiAgICAgIGlmIChlcXVhbGl0eSAhPT0gbnVsbCkge1xuICAgICAgICBlcXVhbGl0aWVzLnB1c2goZXF1YWxpdHkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVxdWFsaXRpZXM7XG4gIH1cblxuICBhZGRWYXJpYWJsZSh2YXJpYWJsZSkge1xuICAgIHRoaXMudmFyaWFibGVzLnB1c2godmFyaWFibGUpO1xuICB9XG5cbiAgYWRkUHJvb2ZTdGVwKHByb29mU3RlcCkge1xuICAgIHRoaXMucHJvb2ZTdGVwcy5wdXNoKHByb29mU3RlcCk7XG4gIH1cblxuICBtYXRjaFN0YXRlbWVudChzdGF0ZW1lbnROb2RlKSB7XG4gICAgbGV0IHN0YXRlbWVudE1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGlmICghc3RhdGVtZW50TWF0Y2hlcykge1xuICAgICAgY29uc3QgcHJvb2ZTdGVwTWF0Y2hlc1N0YXRlbWVudCA9IHRoaXMucHJvb2ZTdGVwcy5zb21lKChwcm9vZlN0ZXApID0+IHtcbiAgICAgICAgY29uc3QgcHJvb2ZTdGVwTWF0Y2hlc1N0YXRlbWVudCA9IHByb29mU3RlcC5tYXRjaChzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICBpZiAocHJvb2ZTdGVwTWF0Y2hlc1N0YXRlbWVudCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc3RhdGVtZW50TWF0Y2hlcyA9IHByb29mU3RlcE1hdGNoZXNTdGF0ZW1lbnQ7IC8vL1xuICAgIH1cblxuICAgIGlmICghc3RhdGVtZW50TWF0Y2hlcykge1xuICAgICAgc3RhdGVtZW50TWF0Y2hlcyA9IHRoaXMuY29udGV4dC5tYXRjaFN0YXRlbWVudChzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50TWF0Y2hlcztcbiAgfVxuXG4gIGZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lKHZhcmlhYmxlTmFtZSkge1xuICAgIGNvbnN0IG5hbWUgPSB2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSB0aGlzLmdldFZhcmlhYmxlcygpLFxuICAgICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVzLmZpbmQoKHZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gdmFyaWFibGUubWF0Y2hOYW1lKG5hbWUpO1xuXG4gICAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG5cbiAgaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCB2YXJpYWJsZSA9IHRoaXMuZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lKSxcbiAgICAgICAgICB2YXJpYWJsZVByZXNlbnQgPSAodmFyaWFibGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRmlsZUNvbnRleHQoZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gZmlsZUNvbnRleHQsICAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICBwcm9vZlN0ZXBzID0gW10sXG4gICAgICAgICAgcHJvb2ZDb250ZXh0ID0gbmV3IFByb29mQ29udGV4dChjb250ZXh0LCB2YXJpYWJsZXMsIHByb29mU3RlcHMpO1xuXG4gICAgcmV0dXJuIHByb29mQ29udGV4dDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUHJvb2ZDb250ZXh0KHByb29mQ29udGV4dCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSBwcm9vZkNvbnRleHQsICAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICBwcm9vZlN0ZXBzID0gW107XG5cbiAgICBwcm9vZkNvbnRleHQgPSBuZXcgUHJvb2ZDb250ZXh0KGNvbnRleHQsIHZhcmlhYmxlcywgcHJvb2ZTdGVwcyk7XG5cbiAgICByZXR1cm4gcHJvb2ZDb250ZXh0O1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oUHJvb2ZDb250ZXh0LnByb3RvdHlwZSwgZmlsZU1peGlucyk7XG5PYmplY3QuYXNzaWduKFByb29mQ29udGV4dC5wcm90b3R5cGUsIGxvZ2dpbmdNaXhpbnMpO1xuXG5leHBvcnQgZGVmYXVsdCBQcm9vZkNvbnRleHQ7XG5cbmZ1bmN0aW9uIGVxdWFsaXRpZXNGcm9tUHJvb2ZTdGVwcyhwcm9vZlN0ZXBzLCBjb250ZXh0KSB7XG4gIGxldCBlcXVhbGl0aWVzID0gW107XG5cblxuICByZXR1cm4gZXF1YWxpdGllcztcbn1cbiJdLCJuYW1lcyI6WyJQcm9vZkNvbnRleHQiLCJjb250ZXh0IiwidmFyaWFibGVzIiwicHJvb2ZTdGVwcyIsImdldENvbnRleHQiLCJnZXRWYXJpYWJsZXMiLCJwdXNoIiwiY29udGV4dFZhcmlhYmxlcyIsImdldFByb29mU3RlcHMiLCJnZXRMYXN0UHJvb2ZTdGVwIiwibGFzdFByb29mU3RlcCIsInByb29mU3RlcHNMZW5ndGgiLCJsZW5ndGgiLCJsYXN0IiwiZ2V0TWV0YXZhcmlhYmxlcyIsImdldEVxdWFsaXRpZXMiLCJlcXVhbGl0aWVzIiwic3RhcnQiLCJNQVhJTVVNX0lOREVYRVNfTEVOR1RIIiwic2xpY2UiLCJmb3JFYWNoIiwicHJvb2ZTdGVwIiwiZXF1YWxpdHkiLCJFcXVhbGl0eSIsImZyb21Qcm9vZlN0ZXAiLCJhZGRWYXJpYWJsZSIsInZhcmlhYmxlIiwiYWRkUHJvb2ZTdGVwIiwibWF0Y2hTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50TWF0Y2hlcyIsInByb29mU3RlcE1hdGNoZXNTdGF0ZW1lbnQiLCJzb21lIiwibWF0Y2giLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlTmFtZSIsInZhcmlhYmxlTmFtZSIsIm5hbWUiLCJmaW5kIiwibWF0Y2hlcyIsIm1hdGNoTmFtZSIsImlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUiLCJ2YXJpYWJsZVByZXNlbnQiLCJmcm9tRmlsZUNvbnRleHQiLCJmaWxlQ29udGV4dCIsInByb29mQ29udGV4dCIsImZyb21Qcm9vZkNvbnRleHQiLCJPYmplY3QiLCJhc3NpZ24iLCJwcm90b3R5cGUiLCJmaWxlTWl4aW5zIiwibG9nZ2luZ01peGlucyIsImVxdWFsaXRpZXNGcm9tUHJvb2ZTdGVwcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBbUpBOzs7ZUFBQTs7OzZEQWpKcUI7eURBQ0U7NERBQ0c7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
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3Byb29mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgZmlsZU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL2ZpbGVcIjtcbmltcG9ydCBsb2dnaW5nTWl4aW5zIGZyb20gXCIuLi9taXhpbnMvbG9nZ2luZ1wiO1xuXG5pbXBvcnQgeyBwdXNoLCBsYXN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuXG5jbGFzcyBQcm9vZkNvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCB2YXJpYWJsZXMsIHByb29mU3RlcHMpIHtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMudmFyaWFibGVzID0gdmFyaWFibGVzO1xuICAgIHRoaXMucHJvb2ZTdGVwcyA9IHByb29mU3RlcHM7XG4gIH1cblxuICBnZXRDb250ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQ7XG4gIH1cblxuICBnZXRWYXJpYWJsZXMoKSB7XG4gICAgY29uc3QgdmFyaWFibGVzID0gW107XG5cbiAgICBwdXNoKHZhcmlhYmxlcywgdGhpcy52YXJpYWJsZXMpO1xuXG4gICAgY29uc3QgY29udGV4dFZhcmlhYmxlcyA9IHRoaXMuY29udGV4dC5nZXRWYXJpYWJsZXMoKTtcblxuICAgIHB1c2godmFyaWFibGVzLCBjb250ZXh0VmFyaWFibGVzKTtcblxuICAgIHJldHVybiB2YXJpYWJsZXM7XG4gIH1cblxuICBnZXRQcm9vZlN0ZXBzKCkge1xuICAgIGxldCBwcm9vZlN0ZXBzID0gdGhpcy5jb250ZXh0LmdldFByb29mU3RlcHMoKTtcblxuICAgIHByb29mU3RlcHMgPSBbXG4gICAgICAuLi5wcm9vZlN0ZXBzLFxuICAgICAgLi4udGhpcy5wcm9vZlN0ZXBzXG4gICAgXTtcblxuICAgIHJldHVybiBwcm9vZlN0ZXBzO1xuICB9XG5cbiAgZ2V0TGFzdFByb29mU3RlcCgpIHtcbiAgICBsZXQgbGFzdFByb29mU3RlcCA9IG51bGw7XG5cbiAgICBjb25zdCBwcm9vZlN0ZXBzTGVuZ3RoID0gdGhpcy5wcm9vZlN0ZXBzLmxlbmd0aDtcblxuICAgIGlmIChwcm9vZlN0ZXBzTGVuZ3RoID4gMCkge1xuICAgICAgbGFzdFByb29mU3RlcCA9IGxhc3QodGhpcy5wcm9vZlN0ZXBzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFzdFByb29mU3RlcDtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZXMoKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZ2V0TWV0YXZhcmlhYmxlcygpOyB9XG5cbiAgYWRkVmFyaWFibGUodmFyaWFibGUpIHtcbiAgICB0aGlzLnZhcmlhYmxlcy5wdXNoKHZhcmlhYmxlKTtcbiAgfVxuXG4gIGFkZFByb29mU3RlcChwcm9vZlN0ZXApIHtcbiAgICB0aGlzLnByb29mU3RlcHMucHVzaChwcm9vZlN0ZXApO1xuICB9XG5cbiAgbWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSkge1xuICAgIGxldCBzdGF0ZW1lbnRNYXRjaGVzID0gZmFsc2U7XG5cbiAgICBpZiAoIXN0YXRlbWVudE1hdGNoZXMpIHtcbiAgICAgIGNvbnN0IHByb29mU3RlcE1hdGNoZXNTdGF0ZW1lbnQgPSB0aGlzLnByb29mU3RlcHMuc29tZSgocHJvb2ZTdGVwKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb29mU3RlcE1hdGNoZXNTdGF0ZW1lbnQgPSBwcm9vZlN0ZXAubWF0Y2goc3RhdGVtZW50Tm9kZSk7XG5cbiAgICAgICAgaWYgKHByb29mU3RlcE1hdGNoZXNTdGF0ZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHN0YXRlbWVudE1hdGNoZXMgPSBwcm9vZlN0ZXBNYXRjaGVzU3RhdGVtZW50OyAvLy9cbiAgICB9XG5cbiAgICBpZiAoIXN0YXRlbWVudE1hdGNoZXMpIHtcbiAgICAgIHN0YXRlbWVudE1hdGNoZXMgPSB0aGlzLmNvbnRleHQubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudE1hdGNoZXM7XG4gIH1cblxuICBmaW5kVmFyaWFibGVCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBuYW1lID0gdmFyaWFibGVOYW1lLCAgLy8vXG4gICAgICAgICAgdmFyaWFibGVzID0gdGhpcy5nZXRWYXJpYWJsZXMoKSxcbiAgICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlcy5maW5kKCh2YXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHZhcmlhYmxlLm1hdGNoTmFtZShuYW1lKTtcblxuICAgICAgICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxuXG4gIGlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lKSB7XG4gICAgY29uc3QgdmFyaWFibGUgPSB0aGlzLmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lKHZhcmlhYmxlTmFtZSksXG4gICAgICAgICAgdmFyaWFibGVQcmVzZW50ID0gKHZhcmlhYmxlICE9PSBudWxsKTtcblxuICAgIHJldHVybiB2YXJpYWJsZVByZXNlbnQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbUZpbGVDb250ZXh0KGZpbGVDb250ZXh0KSB7XG4gICAgY29uc3QgY29udGV4dCA9IGZpbGVDb250ZXh0LCAgLy8vXG4gICAgICAgICAgdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgcHJvb2ZTdGVwcyA9IFtdLFxuICAgICAgICAgIHByb29mQ29udGV4dCA9IG5ldyBQcm9vZkNvbnRleHQoY29udGV4dCwgdmFyaWFibGVzLCBwcm9vZlN0ZXBzKTtcblxuICAgIHJldHVybiBwcm9vZkNvbnRleHQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbVByb29mQ29udGV4dChwcm9vZkNvbnRleHQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gcHJvb2ZDb250ZXh0LCAgLy8vXG4gICAgICAgICAgdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgcHJvb2ZTdGVwcyA9IFtdO1xuXG4gICAgcHJvb2ZDb250ZXh0ID0gbmV3IFByb29mQ29udGV4dChjb250ZXh0LCB2YXJpYWJsZXMsIHByb29mU3RlcHMpO1xuXG4gICAgcmV0dXJuIHByb29mQ29udGV4dDtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKFByb29mQ29udGV4dC5wcm90b3R5cGUsIGZpbGVNaXhpbnMpO1xuT2JqZWN0LmFzc2lnbihQcm9vZkNvbnRleHQucHJvdG90eXBlLCBsb2dnaW5nTWl4aW5zKTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvb2ZDb250ZXh0O1xuIl0sIm5hbWVzIjpbIlByb29mQ29udGV4dCIsImNvbnRleHQiLCJ2YXJpYWJsZXMiLCJwcm9vZlN0ZXBzIiwiZ2V0Q29udGV4dCIsImdldFZhcmlhYmxlcyIsInB1c2giLCJjb250ZXh0VmFyaWFibGVzIiwiZ2V0UHJvb2ZTdGVwcyIsImdldExhc3RQcm9vZlN0ZXAiLCJsYXN0UHJvb2ZTdGVwIiwicHJvb2ZTdGVwc0xlbmd0aCIsImxlbmd0aCIsImxhc3QiLCJnZXRNZXRhdmFyaWFibGVzIiwiYWRkVmFyaWFibGUiLCJ2YXJpYWJsZSIsImFkZFByb29mU3RlcCIsInByb29mU3RlcCIsIm1hdGNoU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE1hdGNoZXMiLCJwcm9vZlN0ZXBNYXRjaGVzU3RhdGVtZW50Iiwic29tZSIsIm1hdGNoIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5hbWUiLCJ2YXJpYWJsZU5hbWUiLCJuYW1lIiwiZmluZCIsIm1hdGNoZXMiLCJtYXRjaE5hbWUiLCJpc1ZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVOYW1lIiwidmFyaWFibGVQcmVzZW50IiwiZnJvbUZpbGVDb250ZXh0IiwiZmlsZUNvbnRleHQiLCJwcm9vZkNvbnRleHQiLCJmcm9tUHJvb2ZDb250ZXh0IiwiT2JqZWN0IiwiYXNzaWduIiwicHJvdG90eXBlIiwiZmlsZU1peGlucyIsImxvZ2dpbmdNaXhpbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWlJQTs7O2VBQUE7Ozt5REEvSHVCOzREQUNHO3FCQUVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUzQixJQUFBLEFBQU1BLDZCQXVISCxBQXZISDthQUFNQSxhQUNRQyxPQUFPLEVBQUVDLFNBQVMsRUFBRUMsVUFBVTs4QkFEdENIO1FBRUYsSUFBSSxDQUFDQyxPQUFPLEdBQUdBO1FBQ2YsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO1FBQ2pCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTs7aUJBSmhCSDs7WUFPSkksS0FBQUE7bUJBQUFBLFNBQUFBLGFBQWE7Z0JBQ1gsT0FBTyxJQUFJLENBQUNILE9BQU87WUFDckI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUEsZUFBZTtnQkFDYixJQUFNSCxZQUFZLEVBQUU7Z0JBRXBCSSxJQUFBQSxXQUFJLEVBQUNKLFdBQVcsSUFBSSxDQUFDQSxTQUFTO2dCQUU5QixJQUFNSyxtQkFBbUIsSUFBSSxDQUFDTixPQUFPLENBQUNJLFlBQVk7Z0JBRWxEQyxJQUFBQSxXQUFJLEVBQUNKLFdBQVdLO2dCQUVoQixPQUFPTDtZQUNUOzs7WUFFQU0sS0FBQUE7bUJBQUFBLFNBQUFBLGdCQUFnQjtnQkFDZCxJQUFJTCxhQUFhLElBQUksQ0FBQ0YsT0FBTyxDQUFDTyxhQUFhO2dCQUUzQ0wsYUFBYSxBQUNYLG1CQUFHQSxtQkFDSCxtQkFBRyxJQUFJLENBQUNBLFVBQVU7Z0JBR3BCLE9BQU9BO1lBQ1Q7OztZQUVBTSxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CO2dCQUNqQixJQUFJQyxnQkFBZ0IsSUFBSTtnQkFFeEIsSUFBTUMsbUJBQW1CLElBQUksQ0FBQ1IsVUFBVSxDQUFDUyxNQUFNO2dC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
package/lib/equality.js CHANGED
@@ -8,15 +8,11 @@ Object.defineProperty(exports, "default", {
8
8
  return Equality;
9
9
  }
10
10
  });
11
- var _matcher = /*#__PURE__*/ _interopRequireDefault(require("./matcher"));
12
- var _term = /*#__PURE__*/ _interopRequireDefault(require("./verify/term"));
13
- var _equality = /*#__PURE__*/ _interopRequireDefault(require("./ocmbinator/equality"));
14
- var _equality1 = /*#__PURE__*/ _interopRequireDefault(require("./node/statement/equality"));
11
+ var _variable = /*#__PURE__*/ _interopRequireDefault(require("./variable"));
12
+ var _term = /*#__PURE__*/ _interopRequireWildcard(require("./verify/term"));
15
13
  var _query = require("./utilities/query");
16
14
  var _array = require("./utilities/array");
17
- var _constants = require("./constants");
18
15
  var _ruleNames = require("./ruleNames");
19
- var _statement = require("./verify/statement");
20
16
  function _classCallCheck(instance, Constructor) {
21
17
  if (!(instance instanceof Constructor)) {
22
18
  throw new TypeError("Cannot call a class as a function");
@@ -41,6 +37,45 @@ function _interopRequireDefault(obj) {
41
37
  default: obj
42
38
  };
43
39
  }
40
+ function _getRequireWildcardCache(nodeInterop) {
41
+ if (typeof WeakMap !== "function") return null;
42
+ var cacheBabelInterop = new WeakMap();
43
+ var cacheNodeInterop = new WeakMap();
44
+ return (_getRequireWildcardCache = function(nodeInterop) {
45
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
46
+ })(nodeInterop);
47
+ }
48
+ function _interopRequireWildcard(obj, nodeInterop) {
49
+ if (!nodeInterop && obj && obj.__esModule) {
50
+ return obj;
51
+ }
52
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
53
+ return {
54
+ default: obj
55
+ };
56
+ }
57
+ var cache = _getRequireWildcardCache(nodeInterop);
58
+ if (cache && cache.has(obj)) {
59
+ return cache.get(obj);
60
+ }
61
+ var newObj = {};
62
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
63
+ for(var key in obj){
64
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
65
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
66
+ if (desc && (desc.get || desc.set)) {
67
+ Object.defineProperty(newObj, key, desc);
68
+ } else {
69
+ newObj[key] = obj[key];
70
+ }
71
+ }
72
+ }
73
+ newObj.default = obj;
74
+ if (cache) {
75
+ cache.set(obj, newObj);
76
+ }
77
+ return newObj;
78
+ }
44
79
  var leftTermNodeQuery = (0, _query.nodeQuery)("/statement/argument[0]/term!"), rightTermNodeQuery = (0, _query.nodeQuery)("/statement/argument[1]/term!");
45
80
  var Equality = /*#__PURE__*/ function() {
46
81
  function Equality(leftTermNode, rightTermNode) {
@@ -101,30 +136,10 @@ var Equality = /*#__PURE__*/ function() {
101
136
  }
102
137
  }
103
138
  ], [
104
- {
105
- key: "fromProofStep",
106
- value: function fromProofStep(proofStep) {
107
- var equality = null;
108
- var statementNode = proofStep.getStatementNode();
109
- if (statementNode !== null) {
110
- var nodeA = statementNode, nodeB = _equality1.default, depth = _constants.EQUALITY_DEPTH, nodeMatches = _matcher.default.matchNode(nodeA, nodeB, depth);
111
- if (nodeMatches) {
112
- var leftTermNode = leftTermNodeQuery(statementNode), rightTermNode = rightTermNodeQuery(statementNode);
113
- equality = new Equality(leftTermNode, rightTermNode);
114
- }
115
- }
116
- return equality;
117
- }
118
- },
119
139
  {
120
140
  key: "fromStatementNode",
121
141
  value: function fromStatementNode(statementNode, context) {
122
- var equality = null;
123
- var combinator = _equality.default, statementVerifiedAgainstCombinator = (0, _statement.verifyStatementAgainstCombinator)(statementNode, combinator, context);
124
- if (statementVerifiedAgainstCombinator) {
125
- var leftTermNode = leftTermNodeQuery(statementNode), rightTermNode = rightTermNodeQuery(statementNode);
126
- equality = new Equality(leftTermNode, rightTermNode);
127
- }
142
+ var leftTermNode = leftTermNodeQuery(statementNode), rightTermNode = rightTermNodeQuery(statementNode), equality = equalityFromLeftTermNodeAndRightTermNode(leftTermNode, rightTermNode, context);
128
143
  return equality;
129
144
  }
130
145
  }
@@ -210,11 +225,28 @@ function equalityFromLeftTermNodeAndRightTermNode(leftTermNode, rightTermNode, c
210
225
  if (leftTermTypeEqualToRightTermType) {
211
226
  equality = new Equality(leftTermNode, rightTermNode);
212
227
  } else {
228
+ var leftTermTypeSubTypeOfRightTermType = leftTermType.isSubTypeOf(rightTermType);
229
+ if (false) {
230
+ ///
231
+ } else if (leftTermTypeSubTypeOfRightTermType) {
232
+ var variables = [], rightTermVerifiedAsVariable = (0, _term.verifyTermAsVariable)(rightTermNode, variables, context);
233
+ if (rightTermVerifiedAsVariable) {
234
+ var rightVariable;
235
+ var firstVariable = (0, _array.first)(variables);
236
+ rightVariable = firstVariable; ///
237
+ var rightVariableName = rightVariable.getName(), rightName = rightVariableName, rightType = leftTermType; ///
238
+ rightVariable = _variable.default.fromTypeAndName(rightType, rightName);
239
+ context.addVariable(rightVariable);
240
+ equality = new Equality(leftTermNode, rightTermNode);
241
+ }
242
+ }
243
+ }
244
+ if (equality === null) {
213
245
  var leftTermString = context.nodeAsString(leftTermNode), rightTermString = context.nodeAsString(rightTermNode), leftTermTypeName = leftTermType.getName(), rightTermTypeName = rightTermType.getName();
214
- context.error("The left '".concat(leftTermString, "' term's '").concat(leftTermTypeName, "' type is not equal to the right '").concat(rightTermString, "' term's '").concat(rightTermTypeName, "' type.'"), leftTermNode);
246
+ context.error("The left '".concat(leftTermString, "' term's '").concat(leftTermTypeName, "' type is not equal to the right '").concat(rightTermString, "' term's '").concat(rightTermTypeName, "' type and neither can be inferred.'"), leftTermNode);
215
247
  }
216
248
  }
217
249
  return equality;
218
250
  }
219
251
 
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lcXVhbGl0eS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IG1hdGNoZXIgZnJvbSBcIi4vbWF0Y2hlclwiO1xuaW1wb3J0IHZlcmlmeVRlcm0gZnJvbSBcIi4vdmVyaWZ5L3Rlcm1cIjtcbmltcG9ydCBlcXVhbGl0eUNvbWJpbmF0b3IgZnJvbSBcIi4vb2NtYmluYXRvci9lcXVhbGl0eVwiO1xuaW1wb3J0IGVxdWFsaXR5U3RhdGVtZW50Tm9kZSBmcm9tIFwiLi9ub2RlL3N0YXRlbWVudC9lcXVhbGl0eVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IGZpcnN0LCBzZWNvbmQgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IEVRVUFMSVRZX0RFUFRIIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBURVJNX1JVTEVfTkFNRSB9IGZyb20gXCIuL3J1bGVOYW1lc1wiO1xuaW1wb3J0IHsgdmVyaWZ5U3RhdGVtZW50QWdhaW5zdENvbWJpbmF0b3IgfSBmcm9tIFwiLi92ZXJpZnkvc3RhdGVtZW50XCI7XG5cbmNvbnN0IGxlZnRUZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC9hcmd1bWVudFswXS90ZXJtIVwiKSxcbiAgICAgIHJpZ2h0VGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvYXJndW1lbnRbMV0vdGVybSFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVxdWFsaXR5IHtcbiAgY29uc3RydWN0b3IobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlKSB7XG4gICAgdGhpcy5sZWZ0VGVybU5vZGUgPSBsZWZ0VGVybU5vZGU7XG4gICAgdGhpcy5yaWdodFRlcm1Ob2RlID0gcmlnaHRUZXJtTm9kZTtcbiAgfVxuXG4gIGdldExlZnRUZXJtTm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5sZWZ0VGVybU5vZGU7XG4gIH1cblxuICBnZXRSaWdodFRlcm1Ob2RlKCkge1xuICAgIHJldHVybiB0aGlzLnJpZ2h0VGVybU5vZGU7XG4gIH1cblxuICBtYXRjaFRlcm1Ob2RlcyhsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUsIHJldmVyc2VkLCBlcXVhbGl0aWVzLCBjb250ZXh0KSB7XG4gICAgbGV0IGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaCA9IHRydWU7XG5cbiAgICBpZiAobGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoKSB7XG4gICAgICBjb25zdCBsZWZ0Tm9uVGVybWluYWxOb2RlID0gcmV2ZXJzZWQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yaWdodFRlcm1Ob2RlIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sZWZ0VGVybU5vZGUsICAvLy9cbiAgICAgICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlID0gbGVmdFRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVFcXVhdGVzID0gZXF1YXRlTm9uVGVybWluYWxOb2RlKGxlZnROb25UZXJtaW5hbE5vZGUsIHJpZ2h0Tm9uVGVybWluYWxOb2RlLCBlcXVhbGl0aWVzLCBjb250ZXh0KTtcblxuICAgICAgbGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoID0gbm9uVGVybWluYWxOb2RlRXF1YXRlczsgLy8vXG4gICAgfVxuXG4gICAgaWYgKGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaCkge1xuICAgICAgY29uc3QgbGVmdE5vblRlcm1pbmFsTm9kZSA9IHJldmVyc2VkID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVmdFRlcm1Ob2RlIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yaWdodFRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgICByaWdodE5vblRlcm1pbmFsTm9kZSA9IHJpZ2h0VGVybU5vZGUsICAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUVxdWF0ZXMgPSBlcXVhdGVOb25UZXJtaW5hbE5vZGUobGVmdE5vblRlcm1pbmFsTm9kZSwgcmlnaHROb25UZXJtaW5hbE5vZGUsIGVxdWFsaXRpZXMsIGNvbnRleHQpO1xuXG4gICAgICBsZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlTWF0Y2ggPSBub25UZXJtaW5hbE5vZGVFcXVhdGVzOyAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gbGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoO1xuICB9XG5cbiAgbWF0Y2goZXF1YWxpdHksIGVxdWFsaXRpZXMsIGNvbnRleHQpIHtcbiAgICBsZXQgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgbGVmdFRlcm1Ob2RlID0gZXF1YWxpdHkuZ2V0TGVmdFRlcm1Ob2RlKCksXG4gICAgICAgICAgcmlnaHRUZXJtTm9kZSA9IGVxdWFsaXR5LmdldFJpZ2h0VGVybU5vZGUoKTtcblxuICAgIGVxdWFsaXRpZXMgPSBmaWx0ZXJFcXVhbGl0aWVzKGVxdWFsaXRpZXMsIGVxdWFsaXR5KTsgIC8vL1xuXG4gICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICBjb25zdCByZXZlcnNlZCA9IGZhbHNlLFxuICAgICAgICAgICAgbGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoID0gdGhpcy5tYXRjaFRlcm1Ob2RlcyhsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUsIHJldmVyc2VkLCBlcXVhbGl0aWVzLCBjb250ZXh0KTtcblxuICAgICAgbWF0Y2hlcyA9IGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaDsgIC8vL1xuICAgIH1cblxuICAgIGlmICghbWF0Y2hlcykge1xuICAgICAgY29uc3QgcmV2ZXJzZWQgPSB0cnVlLFxuICAgICAgICAgICAgbGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoID0gdGhpcy5tYXRjaFRlcm1Ob2RlcyhsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUsIHJldmVyc2VkLCBlcXVhbGl0aWVzLCBjb250ZXh0KTtcblxuICAgICAgbWF0Y2hlcyA9IGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaDsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgZXF1YXRlKGVxdWFsaXRpZXMsIGNvbnRleHQpIHtcbiAgICBjb25zdCBsZWZ0Tm9uVGVybWluYWxOb2RlID0gdGhpcy5sZWZ0VGVybU5vZGUsICAvLy9cbiAgICAgICAgICByaWdodE5vblRlcm1pbmFsTm9kZSA9IHRoaXMucmlnaHRUZXJtTm9kZSwgIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUVxdWF0ZXMgPSBlcXVhdGVOb25UZXJtaW5hbE5vZGUobGVmdE5vblRlcm1pbmFsTm9kZSwgcmlnaHROb25UZXJtaW5hbE5vZGUsIGVxdWFsaXRpZXMsIGNvbnRleHQpLFxuICAgICAgICAgIGVxdWF0ZXMgPSBub25UZXJtaW5hbE5vZGVFcXVhdGVzOyAvLy9cblxuICAgIHJldHVybiBlcXVhdGVzO1xuICB9XG5cbiAgc3RhdGljIGZyb21Qcm9vZlN0ZXAocHJvb2ZTdGVwKSB7XG4gICAgbGV0IGVxdWFsaXR5ID0gbnVsbDtcblxuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBwcm9vZlN0ZXAuZ2V0U3RhdGVtZW50Tm9kZSgpO1xuXG4gICAgaWYgKHN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vZGVBID0gc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgbm9kZUIgPSBlcXVhbGl0eVN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgIGRlcHRoID0gRVFVQUxJVFlfREVQVEgsXG4gICAgICAgICAgICBub2RlTWF0Y2hlcyA9IG1hdGNoZXIubWF0Y2hOb2RlKG5vZGVBLCBub2RlQiwgZGVwdGgpO1xuXG4gICAgICBpZiAobm9kZU1hdGNoZXMpIHtcbiAgICAgICAgY29uc3QgbGVmdFRlcm1Ob2RlID0gbGVmdFRlcm1Ob2RlUXVlcnkoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgICAgIHJpZ2h0VGVybU5vZGUgPSByaWdodFRlcm1Ob2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICAgICAgZXF1YWxpdHkgPSBuZXcgRXF1YWxpdHkobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICAgIGxldCBlcXVhbGl0eSA9IG51bGw7XG5cbiAgICBjb25zdCBjb21iaW5hdG9yID0gZXF1YWxpdHlDb21iaW5hdG9yLCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvciA9IHZlcmlmeVN0YXRlbWVudEFnYWluc3RDb21iaW5hdG9yKHN0YXRlbWVudE5vZGUsIGNvbWJpbmF0b3IsIGNvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3IpIHtcbiAgICAgIGNvbnN0IGxlZnRUZXJtTm9kZSA9IGxlZnRUZXJtTm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgICAgcmlnaHRUZXJtTm9kZSA9IHJpZ2h0VGVybU5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgZXF1YWxpdHkgPSBuZXcgRXF1YWxpdHkobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZXF1YXRlTm9kZShub2RlQSwgbm9kZUIsIGVxdWFsaXRpZXMsIGNvbnRleHQpIHtcbiAgbGV0IG5vZGVFcXVhdGVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZUFUZXJtaW5hbE5vZGUgPSBub2RlQS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICBub2RlQlRlcm1pbmFsTm9kZSA9IG5vZGVCLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVBVGVybWluYWxOb2RlID09PSBub2RlQlRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlQVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgdGVybWluYWxOb2RlQSA9IG5vZGVBLCAgLy8vXG4gICAgICAgICAgICB0ZXJtaW5hbE5vZGVCID0gbm9kZUIsICAvLy9cbiAgICAgICAgICAgIHRlcm1pbmFsTm9kZUVxdWF0ZXMgPSBlcXVhdGVUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlQSwgdGVybWluYWxOb2RlQiwgZXF1YWxpdGllcywgY29udGV4dCk7XG5cbiAgICAgIG5vZGVFcXVhdGVzID0gdGVybWluYWxOb2RlRXF1YXRlczsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVBID0gbm9kZUEsICAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUIgPSBub2RlQiwgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVFcXVhdGVzID0gZXF1YXRlTm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZUEsIG5vblRlcm1pbmFsTm9kZUIsIGVxdWFsaXRpZXMsIGNvbnRleHQpO1xuXG4gICAgICBub2RlRXF1YXRlcyA9IG5vblRlcm1pbmFsTm9kZUVxdWF0ZXM7IC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub2RlRXF1YXRlcztcbn1cblxuZnVuY3Rpb24gZXF1YXRlTm9kZXMobGVmdE5vZGVzLCByaWdodE5vZGVzLCBlcXVhbGl0aWVzLCBjb250ZXh0KSB7XG4gIGxldCBub2Rlc0VxdWF0ZSA9IGZhbHNlO1xuXG4gIGNvbnN0IGxlZnROb2Rlc0xlbmd0aCA9IGxlZnROb2Rlcy5sZW5ndGgsXG4gICAgICAgIHJpZ2h0Tm9kZXNMZW5ndGggPSByaWdodE5vZGVzLmxlbmd0aDtcblxuICBpZiAobGVmdE5vZGVzTGVuZ3RoID09PSByaWdodE5vZGVzTGVuZ3RoKSB7XG4gICAgbm9kZXNFcXVhdGUgPSBsZWZ0Tm9kZXMuZXZlcnkoKExlZnROb2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgcmlnaHROb2RlID0gcmlnaHROb2Rlc1tpbmRleF0sXG4gICAgICAgICAgICBub2RlRXF1YXRlcyA9IGVxdWF0ZU5vZGUoTGVmdE5vZGUsIHJpZ2h0Tm9kZSwgZXF1YWxpdGllcywgY29udGV4dCk7XG5cbiAgICAgIGlmIChub2RlRXF1YXRlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBub2Rlc0VxdWF0ZTtcbn1cblxuZnVuY3Rpb24gZXF1YXRlVGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZUEsIHRlcm1pbmFsTm9kZUIsIGVxdWFsaXRpZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgbWF0Y2hlcyA9IHRlcm1pbmFsTm9kZUEubWF0Y2godGVybWluYWxOb2RlQiksXG4gICAgICAgIHRlcm1pbmFsTm9kZUVxdWF0ZXMgPSBtYXRjaGVzOyAgLy8vXG5cbiAgcmV0dXJuIHRlcm1pbmFsTm9kZUVxdWF0ZXM7XG59XG5cbmZ1bmN0aW9uIGVxdWF0ZU5vblRlcm1pbmFsTm9kZShsZWZ0Tm9uVGVybWluYWxOb2RlLCByaWdodE5vblRlcm1pbmFsTm9kZSwgZXF1YWxpdGllcywgY29udGV4dCkge1xuICBsZXQgbm9uVGVybWluYWxOb2RlRXF1YXRlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGxlZnROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IGxlZnROb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgcmlnaHROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IHJpZ2h0Tm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7XG5cbiAgaWYgKGxlZnROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gcmlnaHROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSkge1xuICAgIGNvbnN0IHJ1bGVOYW1lID0gbGVmdE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lLCAvLy9cbiAgICAgICAgICBydWxlTmFtZVRlcm1SdWxlTmFtZSA9IChydWxlTmFtZSA9PT0gVEVSTV9SVUxFX05BTUUpO1xuXG4gICAgaWYgKHJ1bGVOYW1lVGVybVJ1bGVOYW1lKSB7XG4gICAgICBjb25zdCBsZWZ0VGVybU5vZGUgPSBsZWZ0Tm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICAgIHJpZ2h0VGVybU5vZGUgPSByaWdodE5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICB0ZXJtTm9kZUVxdWF0ZXMgPSBlcXVhdGVUZXJtTm9kZShsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUsIGVxdWFsaXRpZXMsIGNvbnRleHQpO1xuXG4gICAgICBub25UZXJtaW5hbE5vZGVFcXVhdGVzID0gdGVybU5vZGVFcXVhdGVzOyAgLy8vXG4gICAgfVxuXG4gICAgaWYgKCFub25UZXJtaW5hbE5vZGVFcXVhdGVzKSB7XG4gICAgICBjb25zdCBsZWZ0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IGxlZnROb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgcmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gcmlnaHROb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgbGVmdE5vZGVzID0gbGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgcmlnaHROb2RlcyA9IHJpZ2h0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICBub2Rlc0VxdWF0ZSA9IGVxdWF0ZU5vZGVzKGxlZnROb2RlcywgcmlnaHROb2RlcywgZXF1YWxpdGllcywgY29udGV4dCk7XG5cbiAgICAgIG5vblRlcm1pbmFsTm9kZUVxdWF0ZXMgPSBub2Rlc0VxdWF0ZTsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZUVxdWF0ZXM7XG59XG5cbmZ1bmN0aW9uIGVxdWF0ZVRlcm1Ob2RlKGxlZnRUZXJtTm9kZSwgcmlnaHRUZXJtTm9kZSwgZXF1YWxpdGllcywgY29udGV4dCkge1xuICBsZXQgdGVybU5vZGVFcXVhdGVzID0gZmFsc2U7XG5cbiAgY29uc3QgZXF1YWxpdHkgPSBlcXVhbGl0eUZyb21MZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlKGxlZnRUZXJtTm9kZSwgcmlnaHRUZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgaWYgKGVxdWFsaXR5ICE9PSBudWxsKSB7XG4gICAgY29uc3QgZXF1YWxpdHlBID0gZXF1YWxpdHksIC8vL1xuICAgICAgICAgIGVxdWFsaXRpZXNCID0gZXF1YWxpdGllcywgLy8vXG4gICAgICAgICAgZXF1YWxpdHlNYXRjaGVzID0gZXF1YWxpdGllc0Iuc29tZSgoZXF1YWxpdHlCKSA9PiB7IC8vL1xuICAgICAgICAgICAgY29uc3QgZXF1YWxpdHlBTWF0Y2hlc0VxdWFsaXR5QiA9IGVxdWFsaXR5QS5tYXRjaChlcXVhbGl0eUIsIGVxdWFsaXRpZXNCLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKGVxdWFsaXR5QU1hdGNoZXNFcXVhbGl0eUIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICB0ZXJtTm9kZUVxdWF0ZXMgPSBlcXVhbGl0eU1hdGNoZXM7ICAvLy9cbiAgfVxuXG4gIHJldHVybiB0ZXJtTm9kZUVxdWF0ZXM7XG59XG5cbmZ1bmN0aW9uIGZpbHRlckVxdWFsaXRpZXMoZXF1YWxpdGllcywgZXF1YWxpdHkpIHtcbiAgY29uc3QgZXF1YWxpdHlBID0gZXF1YWxpdHk7IC8vL1xuXG4gIGVxdWFsaXRpZXMgPSBlcXVhbGl0aWVzLmZpbHRlcigoZXF1YWxpdHkpID0+IHtcbiAgICBjb25zdCBlcXVhbGl0eUIgPSBlcXVhbGl0eTsgLy8vXG5cbiAgICBpZiAoZXF1YWxpdHlBICE9PSBlcXVhbGl0eUIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVxdWFsaXRpZXM7XG59XG5cbmZ1bmN0aW9uIGVxdWFsaXR5RnJvbUxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGUobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCBlcXVhbGl0eSA9IG51bGw7XG5cbiAgY29uc3QgdHlwZXMgPSBbXSxcbiAgICAgICAgbGVmdFRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm0obGVmdFRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCksXG4gICAgICAgIHJpZ2h0VGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybShyaWdodFRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgaWYgKGxlZnRUZXJtVmVyaWZpZWQgJiYgcmlnaHRUZXJtVmVyaWZpZWQpIHtcbiAgICBjb25zdCBmaXJzdFR5cGUgPSBmaXJzdCh0eXBlcyksXG4gICAgICAgICAgc2Vjb25kVHlwZSA9IHNlY29uZCh0eXBlcyksXG4gICAgICAgICAgbGVmdFRlcm1UeXBlID0gZmlyc3RUeXBlLCAvLy9cbiAgICAgICAgICByaWdodFRlcm1UeXBlID0gc2Vjb25kVHlwZSwgLy8vXG4gICAgICAgICAgbGVmdFRlcm1UeXBlRXF1YWxUb1JpZ2h0VGVybVR5cGUgPSBsZWZ0VGVybVR5cGUuaXNFcXVhbFRvKHJpZ2h0VGVybVR5cGUpO1xuXG4gICAgaWYgKGxlZnRUZXJtVHlwZUVxdWFsVG9SaWdodFRlcm1UeXBlKSB7XG4gICAgICBlcXVhbGl0eSA9IG5ldyBFcXVhbGl0eShsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsZWZ0VGVybVN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKGxlZnRUZXJtTm9kZSksXG4gICAgICAgICAgICByaWdodFRlcm1TdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhyaWdodFRlcm1Ob2RlKSxcbiAgICAgICAgICAgIGxlZnRUZXJtVHlwZU5hbWUgPSBsZWZ0VGVybVR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgcmlnaHRUZXJtVHlwZU5hbWUgPSByaWdodFRlcm1UeXBlLmdldE5hbWUoKTtcblxuICAgICAgY29udGV4dC5lcnJvcihgVGhlIGxlZnQgJyR7bGVmdFRlcm1TdHJpbmd9JyB0ZXJtJ3MgJyR7bGVmdFRlcm1UeXBlTmFtZX0nIHR5cGUgaXMgbm90IGVxdWFsIHRvIHRoZSByaWdodCAnJHtyaWdodFRlcm1TdHJpbmd9JyB0ZXJtJ3MgJyR7cmlnaHRUZXJtVHlwZU5hbWV9JyB0eXBlLidgLCBsZWZ0VGVybU5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcXVhbGl0eTtcbn1cbiJdLCJuYW1lcyI6WyJFcXVhbGl0eSIsImxlZnRUZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwicmlnaHRUZXJtTm9kZVF1ZXJ5IiwibGVmdFRlcm1Ob2RlIiwicmlnaHRUZXJtTm9kZSIsImdldExlZnRUZXJtTm9kZSIsImdldFJpZ2h0VGVybU5vZGUiLCJtYXRjaFRlcm1Ob2RlcyIsInJldmVyc2VkIiwiZXF1YWxpdGllcyIsImNvbnRleHQiLCJsZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlTWF0Y2giLCJsZWZ0Tm9uVGVybWluYWxOb2RlIiwicmlnaHROb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVFcXVhdGVzIiwiZXF1YXRlTm9uVGVybWluYWxOb2RlIiwibWF0Y2giLCJlcXVhbGl0eSIsIm1hdGNoZXMiLCJmaWx0ZXJFcXVhbGl0aWVzIiwiZXF1YXRlIiwiZXF1YXRlcyIsImZyb21Qcm9vZlN0ZXAiLCJwcm9vZlN0ZXAiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsIm5vZGVBIiwibm9kZUIiLCJlcXVhbGl0eVN0YXRlbWVudE5vZGUiLCJkZXB0aCIsIkVRVUFMSVRZX0RFUFRIIiwibm9kZU1hdGNoZXMiLCJtYXRjaGVyIiwibWF0Y2hOb2RlIiwiZnJvbVN0YXRlbWVudE5vZGUiLCJjb21iaW5hdG9yIiwiZXF1YWxpdHlDb21iaW5hdG9yIiwic3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvciIsInZlcmlmeVN0YXRlbWVudEFnYWluc3RDb21iaW5hdG9yIiwiZXF1YXRlTm9kZSIsIm5vZGVFcXVhdGVzIiwibm9kZUFUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsIm5vZGVCVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlQSIsInRlcm1pbmFsTm9kZUIiLCJ0ZXJtaW5hbE5vZGVFcXVhdGVzIiwiZXF1YXRlVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlQSIsIm5vblRlcm1pbmFsTm9kZUIiLCJlcXVhdGVOb2RlcyIsImxlZnROb2RlcyIsInJpZ2h0Tm9kZXMiLCJub2Rlc0VxdWF0ZSIsImxlZnROb2Rlc0xlbmd0aCIsImxlbmd0aCIsInJpZ2h0Tm9kZXNMZW5ndGgiLCJldmVyeSIsIkxlZnROb2RlIiwiaW5kZXgiLCJyaWdodE5vZGUiLCJsZWZ0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsInJpZ2h0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUiLCJydWxlTmFtZSIsInJ1bGVOYW1lVGVybVJ1bGVOYW1lIiwiVEVSTV9SVUxFX05BTUUiLCJ0ZXJtTm9kZUVxdWF0ZXMiLCJlcXVhdGVUZXJtTm9kZSIsImxlZnROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsInJpZ2h0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsImVxdWFsaXR5RnJvbUxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGUiLCJlcXVhbGl0eUEiLCJlcXVhbGl0aWVzQiIsImVxdWFsaXR5TWF0Y2hlcyIsInNvbWUiLCJlcXVhbGl0eUIiLCJlcXVhbGl0eUFNYXRjaGVzRXF1YWxpdHlCIiwiZmlsdGVyIiwidHlwZXMiLCJsZWZ0VGVybVZlcmlmaWVkIiwidmVyaWZ5VGVybSIsInJpZ2h0VGVybVZlcmlmaWVkIiwiZmlyc3RUeXBlIiwiZmlyc3QiLCJzZWNvbmRUeXBlIiwic2Vjb25kIiwibGVmdFRlcm1UeXBlIiwicmlnaHRUZXJtVHlwZSIsImxlZnRUZXJtVHlwZUVxdWFsVG9SaWdodFRlcm1UeXBlIiwiaXNFcXVhbFRvIiwibGVmdFRlcm1TdHJpbmciLCJub2RlQXNTdHJpbmciLCJyaWdodFRlcm1TdHJpbmciLCJsZWZ0VGVybVR5cGVOYW1lIiwiZ2V0TmFtZSIsInJpZ2h0VGVybVR5cGVOYW1lIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBZ0JxQkE7Ozs0REFkRDt5REFDRzs2REFDUTs4REFDRztxQkFFUjtxQkFDSTt5QkFDQzt5QkFDQTt5QkFDa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFakQsSUFBTUMsb0JBQW9CQyxJQUFBQSxnQkFBUyxFQUFDLGlDQUM5QkMscUJBQXFCRCxJQUFBQSxnQkFBUyxFQUFDO0FBRXRCLElBQUEsQUFBTUYseUJBaUhsQixBQWpIWTthQUFNQSxTQUNQSSxZQUFZLEVBQUVDLGFBQWE7OEJBRHBCTDtRQUVqQixJQUFJLENBQUNJLFlBQVksR0FBR0E7UUFDcEIsSUFBSSxDQUFDQyxhQUFhLEdBQUdBOztpQkFISkw7O1lBTW5CTSxLQUFBQTttQkFBQUEsU0FBQUEsa0JBQWtCO2dCQUNoQixPQUFPLElBQUksQ0FBQ0YsWUFBWTtZQUMxQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxtQkFBbUI7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDRixhQUFhO1lBQzNCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLGVBQWVKLFlBQVksRUFBRUMsYUFBYSxFQUFFSSxRQUFRLEVBQUVDLFVBQVUsRUFBRUMsT0FBTyxFQUFFO2dCQUN6RSxJQUFJQyxvQ0FBb0MsSUFBSTtnQkFFNUMsSUFBSUEsbUNBQW1DO29CQUNyQyxJQUFNQyxzQkFBc0JK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
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lcXVhbGl0eS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFZhcmlhYmxlIGZyb20gXCIuL3ZhcmlhYmxlXCI7XG5pbXBvcnQgdmVyaWZ5VGVybSBmcm9tIFwiLi92ZXJpZnkvdGVybVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IGZpcnN0LCBzZWNvbmQgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IFRFUk1fUlVMRV9OQU1FIH0gZnJvbSBcIi4vcnVsZU5hbWVzXCI7XG5pbXBvcnQgeyB2ZXJpZnlUZXJtQXNWYXJpYWJsZSB9IGZyb20gXCIuL3ZlcmlmeS90ZXJtXCI7XG5cbmNvbnN0IGxlZnRUZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC9hcmd1bWVudFswXS90ZXJtIVwiKSxcbiAgICAgIHJpZ2h0VGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvYXJndW1lbnRbMV0vdGVybSFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVxdWFsaXR5IHtcbiAgY29uc3RydWN0b3IobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlKSB7XG4gICAgdGhpcy5sZWZ0VGVybU5vZGUgPSBsZWZ0VGVybU5vZGU7XG4gICAgdGhpcy5yaWdodFRlcm1Ob2RlID0gcmlnaHRUZXJtTm9kZTtcbiAgfVxuXG4gIGdldExlZnRUZXJtTm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5sZWZ0VGVybU5vZGU7XG4gIH1cblxuICBnZXRSaWdodFRlcm1Ob2RlKCkge1xuICAgIHJldHVybiB0aGlzLnJpZ2h0VGVybU5vZGU7XG4gIH1cblxuICBtYXRjaFRlcm1Ob2RlcyhsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUsIHJldmVyc2VkLCBlcXVhbGl0aWVzLCBjb250ZXh0KSB7XG4gICAgbGV0IGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaCA9IHRydWU7XG5cbiAgICBpZiAobGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoKSB7XG4gICAgICBjb25zdCBsZWZ0Tm9uVGVybWluYWxOb2RlID0gcmV2ZXJzZWQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yaWdodFRlcm1Ob2RlIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sZWZ0VGVybU5vZGUsICAvLy9cbiAgICAgICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlID0gbGVmdFRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVFcXVhdGVzID0gZXF1YXRlTm9uVGVybWluYWxOb2RlKGxlZnROb25UZXJtaW5hbE5vZGUsIHJpZ2h0Tm9uVGVybWluYWxOb2RlLCBlcXVhbGl0aWVzLCBjb250ZXh0KTtcblxuICAgICAgbGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoID0gbm9uVGVybWluYWxOb2RlRXF1YXRlczsgLy8vXG4gICAgfVxuXG4gICAgaWYgKGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaCkge1xuICAgICAgY29uc3QgbGVmdE5vblRlcm1pbmFsTm9kZSA9IHJldmVyc2VkID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVmdFRlcm1Ob2RlIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yaWdodFRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgICByaWdodE5vblRlcm1pbmFsTm9kZSA9IHJpZ2h0VGVybU5vZGUsICAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUVxdWF0ZXMgPSBlcXVhdGVOb25UZXJtaW5hbE5vZGUobGVmdE5vblRlcm1pbmFsTm9kZSwgcmlnaHROb25UZXJtaW5hbE5vZGUsIGVxdWFsaXRpZXMsIGNvbnRleHQpO1xuXG4gICAgICBsZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlTWF0Y2ggPSBub25UZXJtaW5hbE5vZGVFcXVhdGVzOyAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gbGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoO1xuICB9XG5cbiAgbWF0Y2goZXF1YWxpdHksIGVxdWFsaXRpZXMsIGNvbnRleHQpIHtcbiAgICBsZXQgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgbGVmdFRlcm1Ob2RlID0gZXF1YWxpdHkuZ2V0TGVmdFRlcm1Ob2RlKCksXG4gICAgICAgICAgcmlnaHRUZXJtTm9kZSA9IGVxdWFsaXR5LmdldFJpZ2h0VGVybU5vZGUoKTtcblxuICAgIGVxdWFsaXRpZXMgPSBmaWx0ZXJFcXVhbGl0aWVzKGVxdWFsaXRpZXMsIGVxdWFsaXR5KTsgIC8vL1xuXG4gICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICBjb25zdCByZXZlcnNlZCA9IGZhbHNlLFxuICAgICAgICAgICAgbGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoID0gdGhpcy5tYXRjaFRlcm1Ob2RlcyhsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUsIHJldmVyc2VkLCBlcXVhbGl0aWVzLCBjb250ZXh0KTtcblxuICAgICAgbWF0Y2hlcyA9IGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaDsgIC8vL1xuICAgIH1cblxuICAgIGlmICghbWF0Y2hlcykge1xuICAgICAgY29uc3QgcmV2ZXJzZWQgPSB0cnVlLFxuICAgICAgICAgICAgbGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoID0gdGhpcy5tYXRjaFRlcm1Ob2RlcyhsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUsIHJldmVyc2VkLCBlcXVhbGl0aWVzLCBjb250ZXh0KTtcblxuICAgICAgbWF0Y2hlcyA9IGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaDsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgZXF1YXRlKGVxdWFsaXRpZXMsIGNvbnRleHQpIHtcbiAgICBjb25zdCBsZWZ0Tm9uVGVybWluYWxOb2RlID0gdGhpcy5sZWZ0VGVybU5vZGUsICAvLy9cbiAgICAgICAgICByaWdodE5vblRlcm1pbmFsTm9kZSA9IHRoaXMucmlnaHRUZXJtTm9kZSwgIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUVxdWF0ZXMgPSBlcXVhdGVOb25UZXJtaW5hbE5vZGUobGVmdE5vblRlcm1pbmFsTm9kZSwgcmlnaHROb25UZXJtaW5hbE5vZGUsIGVxdWFsaXRpZXMsIGNvbnRleHQpLFxuICAgICAgICAgIGVxdWF0ZXMgPSBub25UZXJtaW5hbE5vZGVFcXVhdGVzOyAvLy9cblxuICAgIHJldHVybiBlcXVhdGVzO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBsZWZ0VGVybU5vZGUgPSBsZWZ0VGVybU5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICByaWdodFRlcm1Ob2RlID0gcmlnaHRUZXJtTm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIGVxdWFsaXR5ID0gZXF1YWxpdHlGcm9tTGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZShsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9XG59XG5cbmZ1bmN0aW9uIGVxdWF0ZU5vZGUobm9kZUEsIG5vZGVCLCBlcXVhbGl0aWVzLCBjb250ZXh0KSB7XG4gIGxldCBub2RlRXF1YXRlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVBVGVybWluYWxOb2RlID0gbm9kZUEuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgbm9kZUJUZXJtaW5hbE5vZGUgPSBub2RlQi5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlQVRlcm1pbmFsTm9kZSA9PT0gbm9kZUJUZXJtaW5hbE5vZGUpIHtcbiAgICBpZiAobm9kZUFUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZUEgPSBub2RlQSwgIC8vL1xuICAgICAgICAgICAgdGVybWluYWxOb2RlQiA9IG5vZGVCLCAgLy8vXG4gICAgICAgICAgICB0ZXJtaW5hbE5vZGVFcXVhdGVzID0gZXF1YXRlVGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZUEsIHRlcm1pbmFsTm9kZUIsIGVxdWFsaXRpZXMsIGNvbnRleHQpO1xuXG4gICAgICBub2RlRXF1YXRlcyA9IHRlcm1pbmFsTm9kZUVxdWF0ZXM7ICAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlQSA9IG5vZGVBLCAgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVCID0gbm9kZUIsIC8vL1xuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlRXF1YXRlcyA9IGVxdWF0ZU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGVBLCBub25UZXJtaW5hbE5vZGVCLCBlcXVhbGl0aWVzLCBjb250ZXh0KTtcblxuICAgICAgbm9kZUVxdWF0ZXMgPSBub25UZXJtaW5hbE5vZGVFcXVhdGVzOyAvLy9cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9kZUVxdWF0ZXM7XG59XG5cbmZ1bmN0aW9uIGVxdWF0ZU5vZGVzKGxlZnROb2RlcywgcmlnaHROb2RlcywgZXF1YWxpdGllcywgY29udGV4dCkge1xuICBsZXQgbm9kZXNFcXVhdGUgPSBmYWxzZTtcblxuICBjb25zdCBsZWZ0Tm9kZXNMZW5ndGggPSBsZWZ0Tm9kZXMubGVuZ3RoLFxuICAgICAgICByaWdodE5vZGVzTGVuZ3RoID0gcmlnaHROb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKGxlZnROb2Rlc0xlbmd0aCA9PT0gcmlnaHROb2Rlc0xlbmd0aCkge1xuICAgIG5vZGVzRXF1YXRlID0gbGVmdE5vZGVzLmV2ZXJ5KChMZWZ0Tm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHJpZ2h0Tm9kZSA9IHJpZ2h0Tm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbm9kZUVxdWF0ZXMgPSBlcXVhdGVOb2RlKExlZnROb2RlLCByaWdodE5vZGUsIGVxdWFsaXRpZXMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAobm9kZUVxdWF0ZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbm9kZXNFcXVhdGU7XG59XG5cbmZ1bmN0aW9uIGVxdWF0ZVRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGVBLCB0ZXJtaW5hbE5vZGVCLCBlcXVhbGl0aWVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IG1hdGNoZXMgPSB0ZXJtaW5hbE5vZGVBLm1hdGNoKHRlcm1pbmFsTm9kZUIpLFxuICAgICAgICB0ZXJtaW5hbE5vZGVFcXVhdGVzID0gbWF0Y2hlczsgIC8vL1xuXG4gIHJldHVybiB0ZXJtaW5hbE5vZGVFcXVhdGVzO1xufVxuXG5mdW5jdGlvbiBlcXVhdGVOb25UZXJtaW5hbE5vZGUobGVmdE5vblRlcm1pbmFsTm9kZSwgcmlnaHROb25UZXJtaW5hbE5vZGUsIGVxdWFsaXRpZXMsIGNvbnRleHQpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZUVxdWF0ZXMgPSBmYWxzZTtcblxuICBjb25zdCBsZWZ0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBsZWZ0Tm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSByaWdodE5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gIGlmIChsZWZ0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPT09IHJpZ2h0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICBjb25zdCBydWxlTmFtZSA9IGxlZnROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSwgLy8vXG4gICAgICAgICAgcnVsZU5hbWVUZXJtUnVsZU5hbWUgPSAocnVsZU5hbWUgPT09IFRFUk1fUlVMRV9OQU1FKTtcblxuICAgIGlmIChydWxlTmFtZVRlcm1SdWxlTmFtZSkge1xuICAgICAgY29uc3QgbGVmdFRlcm1Ob2RlID0gbGVmdE5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICByaWdodFRlcm1Ob2RlID0gcmlnaHROb25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgdGVybU5vZGVFcXVhdGVzID0gZXF1YXRlVGVybU5vZGUobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCBlcXVhbGl0aWVzLCBjb250ZXh0KTtcblxuICAgICAgbm9uVGVybWluYWxOb2RlRXF1YXRlcyA9IHRlcm1Ob2RlRXF1YXRlczsgIC8vL1xuICAgIH1cblxuICAgIGlmICghbm9uVGVybWluYWxOb2RlRXF1YXRlcykge1xuICAgICAgY29uc3QgbGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBsZWZ0Tm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IHJpZ2h0Tm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgIGxlZnROb2RlcyA9IGxlZnROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgIHJpZ2h0Tm9kZXMgPSByaWdodE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgbm9kZXNFcXVhdGUgPSBlcXVhdGVOb2RlcyhsZWZ0Tm9kZXMsIHJpZ2h0Tm9kZXMsIGVxdWFsaXRpZXMsIGNvbnRleHQpO1xuXG4gICAgICBub25UZXJtaW5hbE5vZGVFcXVhdGVzID0gbm9kZXNFcXVhdGU7IC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub25UZXJtaW5hbE5vZGVFcXVhdGVzO1xufVxuXG5mdW5jdGlvbiBlcXVhdGVUZXJtTm9kZShsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUsIGVxdWFsaXRpZXMsIGNvbnRleHQpIHtcbiAgbGV0IHRlcm1Ob2RlRXF1YXRlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGVxdWFsaXR5ID0gZXF1YWxpdHlGcm9tTGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZShsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUsIGNvbnRleHQpO1xuXG4gIGlmIChlcXVhbGl0eSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGVxdWFsaXR5QSA9IGVxdWFsaXR5LCAvLy9cbiAgICAgICAgICBlcXVhbGl0aWVzQiA9IGVxdWFsaXRpZXMsIC8vL1xuICAgICAgICAgIGVxdWFsaXR5TWF0Y2hlcyA9IGVxdWFsaXRpZXNCLnNvbWUoKGVxdWFsaXR5QikgPT4geyAvLy9cbiAgICAgICAgICAgIGNvbnN0IGVxdWFsaXR5QU1hdGNoZXNFcXVhbGl0eUIgPSBlcXVhbGl0eUEubWF0Y2goZXF1YWxpdHlCLCBlcXVhbGl0aWVzQiwgY29udGV4dCk7XG5cbiAgICAgICAgICAgIGlmIChlcXVhbGl0eUFNYXRjaGVzRXF1YWxpdHlCKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgdGVybU5vZGVFcXVhdGVzID0gZXF1YWxpdHlNYXRjaGVzOyAgLy8vXG4gIH1cblxuICByZXR1cm4gdGVybU5vZGVFcXVhdGVzO1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJFcXVhbGl0aWVzKGVxdWFsaXRpZXMsIGVxdWFsaXR5KSB7XG4gIGNvbnN0IGVxdWFsaXR5QSA9IGVxdWFsaXR5OyAvLy9cblxuICBlcXVhbGl0aWVzID0gZXF1YWxpdGllcy5maWx0ZXIoKGVxdWFsaXR5KSA9PiB7XG4gICAgY29uc3QgZXF1YWxpdHlCID0gZXF1YWxpdHk7IC8vL1xuXG4gICAgaWYgKGVxdWFsaXR5QSAhPT0gZXF1YWxpdHlCKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBlcXVhbGl0aWVzO1xufVxuXG5mdW5jdGlvbiBlcXVhbGl0eUZyb21MZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlKGxlZnRUZXJtTm9kZSwgcmlnaHRUZXJtTm9kZSwgY29udGV4dCkge1xuICBsZXQgZXF1YWxpdHkgPSBudWxsO1xuXG4gIGNvbnN0IHR5cGVzID0gW10sXG4gICAgICAgIGxlZnRUZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKGxlZnRUZXJtTm9kZSwgdHlwZXMsIGNvbnRleHQpLFxuICAgICAgICByaWdodFRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm0ocmlnaHRUZXJtTm9kZSwgdHlwZXMsIGNvbnRleHQpO1xuXG4gIGlmIChsZWZ0VGVybVZlcmlmaWVkICYmIHJpZ2h0VGVybVZlcmlmaWVkKSB7XG4gICAgY29uc3QgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuICAgICAgICAgIHNlY29uZFR5cGUgPSBzZWNvbmQodHlwZXMpLFxuICAgICAgICAgIGxlZnRUZXJtVHlwZSA9IGZpcnN0VHlwZSwgLy8vXG4gICAgICAgICAgcmlnaHRUZXJtVHlwZSA9IHNlY29uZFR5cGUsIC8vL1xuICAgICAgICAgIGxlZnRUZXJtVHlwZUVxdWFsVG9SaWdodFRlcm1UeXBlID0gbGVmdFRlcm1UeXBlLmlzRXF1YWxUbyhyaWdodFRlcm1UeXBlKTtcblxuICAgIGlmIChsZWZ0VGVybVR5cGVFcXVhbFRvUmlnaHRUZXJtVHlwZSkge1xuICAgICAgZXF1YWxpdHkgPSBuZXcgRXF1YWxpdHkobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbGVmdFRlcm1UeXBlU3ViVHlwZU9mUmlnaHRUZXJtVHlwZSA9IGxlZnRUZXJtVHlwZS5pc1N1YlR5cGVPZihyaWdodFRlcm1UeXBlKTtcblxuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgLy8vXG4gICAgICB9IGVsc2UgaWYgKGxlZnRUZXJtVHlwZVN1YlR5cGVPZlJpZ2h0VGVybVR5cGUpIHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgICAgIHJpZ2h0VGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHJpZ2h0VGVybU5vZGUsIHZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHJpZ2h0VGVybVZlcmlmaWVkQXNWYXJpYWJsZSkge1xuICAgICAgICAgIGxldCByaWdodFZhcmlhYmxlO1xuXG4gICAgICAgICAgY29uc3QgZmlyc3RWYXJpYWJsZSA9IGZpcnN0KHZhcmlhYmxlcyk7XG5cbiAgICAgICAgICByaWdodFZhcmlhYmxlID0gZmlyc3RWYXJpYWJsZTsgIC8vL1xuXG4gICAgICAgICAgY29uc3QgcmlnaHRWYXJpYWJsZU5hbWUgPSByaWdodFZhcmlhYmxlLmdldE5hbWUoKSxcbiAgICAgICAgICAgICAgICByaWdodE5hbWUgPSByaWdodFZhcmlhYmxlTmFtZSwgIC8vL1xuICAgICAgICAgICAgICAgIHJpZ2h0VHlwZSA9IGxlZnRUZXJtVHlwZTsgLy8vXG5cbiAgICAgICAgICByaWdodFZhcmlhYmxlID0gVmFyaWFibGUuZnJvbVR5cGVBbmROYW1lKHJpZ2h0VHlwZSwgcmlnaHROYW1lKTtcblxuICAgICAgICAgIGNvbnRleHQuYWRkVmFyaWFibGUocmlnaHRWYXJpYWJsZSk7XG5cbiAgICAgICAgICBlcXVhbGl0eSA9IG5ldyBFcXVhbGl0eShsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVxdWFsaXR5ID09PSBudWxsKSB7XG4gICAgICBjb25zdCBsZWZ0VGVybVN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKGxlZnRUZXJtTm9kZSksXG4gICAgICAgICAgICByaWdodFRlcm1TdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhyaWdodFRlcm1Ob2RlKSxcbiAgICAgICAgICAgIGxlZnRUZXJtVHlwZU5hbWUgPSBsZWZ0VGVybVR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgcmlnaHRUZXJtVHlwZU5hbWUgPSByaWdodFRlcm1UeXBlLmdldE5hbWUoKTtcblxuICAgICAgY29udGV4dC5lcnJvcihgVGhlIGxlZnQgJyR7bGVmdFRlcm1TdHJpbmd9JyB0ZXJtJ3MgJyR7bGVmdFRlcm1UeXBlTmFtZX0nIHR5cGUgaXMgbm90IGVxdWFsIHRvIHRoZSByaWdodCAnJHtyaWdodFRlcm1TdHJpbmd9JyB0ZXJtJ3MgJyR7cmlnaHRUZXJtVHlwZU5hbWV9JyB0eXBlIGFuZCBuZWl0aGVyIGNhbiBiZSBpbmZlcnJlZC4nYCwgbGVmdFRlcm1Ob2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXF1YWxpdHk7XG59XG4iXSwibmFtZXMiOlsiRXF1YWxpdHkiLCJsZWZ0VGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInJpZ2h0VGVybU5vZGVRdWVyeSIsImxlZnRUZXJtTm9kZSIsInJpZ2h0VGVybU5vZGUiLCJnZXRMZWZ0VGVybU5vZGUiLCJnZXRSaWdodFRlcm1Ob2RlIiwibWF0Y2hUZXJtTm9kZXMiLCJyZXZlcnNlZCIsImVxdWFsaXRpZXMiLCJjb250ZXh0IiwibGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoIiwibGVmdE5vblRlcm1pbmFsTm9kZSIsInJpZ2h0Tm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlRXF1YXRlcyIsImVxdWF0ZU5vblRlcm1pbmFsTm9kZSIsIm1hdGNoIiwiZXF1YWxpdHkiLCJtYXRjaGVzIiwiZmlsdGVyRXF1YWxpdGllcyIsImVxdWF0ZSIsImVxdWF0ZXMiLCJmcm9tU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJlcXVhbGl0eUZyb21MZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlIiwiZXF1YXRlTm9kZSIsIm5vZGVBIiwibm9kZUIiLCJub2RlRXF1YXRlcyIsIm5vZGVBVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJub2RlQlRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZUEiLCJ0ZXJtaW5hbE5vZGVCIiwidGVybWluYWxOb2RlRXF1YXRlcyIsImVxdWF0ZVRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZUEiLCJub25UZXJtaW5hbE5vZGVCIiwiZXF1YXRlTm9kZXMiLCJsZWZ0Tm9kZXMiLCJyaWdodE5vZGVzIiwibm9kZXNFcXVhdGUiLCJsZWZ0Tm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJyaWdodE5vZGVzTGVuZ3RoIiwiZXZlcnkiLCJMZWZ0Tm9kZSIsImluZGV4IiwicmlnaHROb2RlIiwibGVmdE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJyaWdodE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwicnVsZU5hbWUiLCJydWxlTmFtZVRlcm1SdWxlTmFtZSIsIlRFUk1fUlVMRV9OQU1FIiwidGVybU5vZGVFcXVhdGVzIiwiZXF1YXRlVGVybU5vZGUiLCJsZWZ0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJyaWdodE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMiLCJlcXVhbGl0eUEiLCJlcXVhbGl0aWVzQiIsImVxdWFsaXR5TWF0Y2hlcyIsInNvbWUiLCJlcXVhbGl0eUIiLCJlcXVhbGl0eUFNYXRjaGVzRXF1YWxpdHlCIiwiZmlsdGVyIiwidHlwZXMiLCJsZWZ0VGVybVZlcmlmaWVkIiwidmVyaWZ5VGVybSIsInJpZ2h0VGVybVZlcmlmaWVkIiwiZmlyc3RUeXBlIiwiZmlyc3QiLCJzZWNvbmRUeXBlIiwic2Vjb25kIiwibGVmdFRlcm1UeXBlIiwicmlnaHRUZXJtVHlwZSIsImxlZnRUZXJtVHlwZUVxdWFsVG9SaWdodFRlcm1UeXBlIiwiaXNFcXVhbFRvIiwibGVmdFRlcm1UeXBlU3ViVHlwZU9mUmlnaHRUZXJtVHlwZSIsImlzU3ViVHlwZU9mIiwidmFyaWFibGVzIiwicmlnaHRUZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwidmVyaWZ5VGVybUFzVmFyaWFibGUiLCJyaWdodFZhcmlhYmxlIiwiZmlyc3RWYXJpYWJsZSIsInJpZ2h0VmFyaWFibGVOYW1lIiwiZ2V0TmFtZSIsInJpZ2h0TmFtZSIsInJpZ2h0VHlwZSIsIlZhcmlhYmxlIiwiZnJvbVR5cGVBbmROYW1lIiwiYWRkVmFyaWFibGUiLCJsZWZ0VGVybVN0cmluZyIsIm5vZGVBc1N0cmluZyIsInJpZ2h0VGVybVN0cmluZyIsImxlZnRUZXJtVHlwZU5hbWUiLCJyaWdodFRlcm1UeXBlTmFtZSIsImVycm9yIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQWFxQkE7Ozs2REFYQTswREFDRTtxQkFFRztxQkFDSTt5QkFDQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUcvQixJQUFNQyxvQkFBb0JDLElBQUFBLGdCQUFTLEVBQUMsaUNBQzlCQyxxQkFBcUJELElBQUFBLGdCQUFTLEVBQUM7QUFFdEIsSUFBQSxBQUFNRix5QkFtRmxCLEFBbkZZO2FBQU1BLFNBQ1BJLFlBQVksRUFBRUMsYUFBYTs4QkFEcEJMO1FBRWpCLElBQUksQ0FBQ0ksWUFBWSxHQUFHQTtRQUNwQixJQUFJLENBQUNDLGFBQWEsR0FBR0E7O2lCQUhKTDs7WUFNbkJNLEtBQUFBO21CQUFBQSxTQUFBQSxrQkFBa0I7Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDRixZQUFZO1lBQzFCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQjtnQkFDakIsT0FBTyxJQUFJLENBQUNGLGFBQWE7WUFDM0I7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsZUFBZUosWUFBWSxFQUFFQyxhQUFhLEVBQUVJLFFBQVEsRUFBRUMsVUFBVSxFQUFFQyxPQUFPLEVBQUU7Z0JBQ3pFLElBQUlDLG9DQUFvQyxJQUFJO2dCQUU1QyxJQUFJQSxtQ0FBbUM7b0JBQ3JDLElBQU1DLHNCQUFzQkosV0FDRSxJQUFJLENBQUNKLGFBQWEsR0FDaEIsSUFBSSxDQUFDRCxZQUFZLEVBQzNDVSx1QkFBdUJWLGNBQ3ZCVyx5QkFBeUJDLHNCQUFzQkgscUJBQXFCQyxzQkFBc0JKLFlBQVlDO29CQUU1R0Msb0NBQW9DRyx3QkFBd0IsR0FBRztnQkFDakUsQ0FBQztnQkFFRCxJQUFJSCxtQ0FBbUM7b0JBQ3JDLElBQU1DLHVCQUFzQkosV0FDRSxJQUFJLENBQUNMLFlBQVksR0FDZixJQUFJLENBQUNDLGFBQWEsRUFDNUNTLHdCQUF1QlQsZUFDdkJVLDBCQUF5QkMsc0JBQXNCSCxzQkFBcUJDLHVCQUFzQkosWUFBWUM7b0JBRTVHQyxvQ0FBb0NHLHlCQUF3QixHQUFHO2dCQUNqRSxDQUFDO2dCQUVELE9BQU9IO1lBQ1Q7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUEsTUFBTUMsUUFBUSxFQUFFUixVQUFVLEVBQUVDLE9BQU8sRUFBRTtnQkFDbkMsSUFBSVEsVUFBVSxLQUFLO2dCQUVuQixJQUFNZixlQUFlYyxTQUFTWixlQUFlLElBQ3ZDRCxnQkFBZ0JhLFNBQVNYLGdCQUFnQjtnQkFFL0NHLGFBQWFVLGlCQUFpQlYsWUFBWVEsV0FBWSxHQUFHO2dCQUV6RCxJQUFJLENBQUNDLFNBQVM7b0JBQ1osSUFBTVYsV0FBVyxLQUFLLEVBQ2hCRyxvQ0FBb0MsSUFBSSxDQUFDSixjQUFjLENBQUNKLGNBQWNDLGVBQWVJLFVBQVVDLFlBQVlDO29CQUVqSFEsVUFBVVAsbUNBQW9DLEdBQUc7Z0JBQ25ELENBQUM7Z0JBRUQsSUFBSSxDQUFDTyxTQUFTO29CQUNaLElBQU1WLFlBQVcsSUFBSSxFQUNmRyxxQ0FBb0MsSUFBSSxDQUFDSixjQUFjLENBQUNKLGNBQWNDLGVBQWVJLFdBQVVDLFlBQVlDO29CQUVqSFEsVUFBVVAsb0NBQW9DLEdBQUc7Z0JBQ25ELENBQUM7Z0JBRUQsT0FBT087WUFDVDs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQSxPQUFPWCxVQUFVLEVBQUVDLE9BQU8sRUFBRTtnQkFDMUIsSUFBTUUsc0JBQXNCLElBQUksQ0FBQ1QsWUFBWSxFQUN2Q1UsdUJBQXVCLElBQUksQ0FBQ1QsYUFBYSxFQUN6Q1UseUJBQXlCQyxzQkFBc0JILHFCQUFxQkMsc0JBQXNCSixZQUFZQyxVQUN0R1csVUFBVVAsd0JBQXdCLEdBQUc7Z0JBRTNDLE9BQU9PO1lBQ1Q7Ozs7WUFFT0MsS0FBQUE7bUJBQVAsU0FBT0Esa0JBQWtCQyxhQUFhLEVBQUViLE9BQU8sRUFBRTtnQkFDL0MsSUFBTVAsZUFBZUgsa0JBQWtCdUIsZ0JBQ2pDbkIsZ0JBQWdCRixtQkFBbUJxQixnQkFDbkNOLFdBQVdPLHlDQUF5Q3JCLGNBQWNDLGVBQWVNO2dCQUV2RixPQUFPTztZQUNUOzs7V0FoRm1CbEI7O0FBbUZyQixTQUFTMEIsV0FBV0MsS0FBSyxFQUFFQyxLQUFLLEVBQUVsQixVQUFVLEVBQUVDLE9BQU8sRUFBRTtJQUNyRCxJQUFJa0IsY0FBYyxLQUFLO0lBRXZCLElBQU1DLG9CQUFvQkgsTUFBTUksY0FBYyxJQUN4Q0Msb0JBQW9CSixNQUFNRyxjQUFjO0lBRTlDLElBQUlELHNCQUFzQkUsbUJBQW1CO1FBQzNDLElBQUlGLG1CQUFtQjtZQUNyQixJQUFNRyxnQkFBZ0JOLE9BQ2hCTyxnQkFBZ0JOLE9BQ2hCTyxzQkFBc0JDLG1CQUFtQkgsZUFBZUMsZUFBZXhCLFlBQVlDO1lBRXpGa0IsY0FBY00scUJBQXNCLEdBQUc7UUFDekMsT0FBTztZQUNMLElBQU1FLG1CQUFtQlYsT0FDbkJXLG1CQUFtQlYsT0FDbkJiLHlCQUF5QkMsc0JBQXNCcUIsa0JBQWtCQyxrQkFBa0I1QixZQUFZQztZQUVyR2tCLGNBQWNkLHdCQUF3QixHQUFHO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBT2M7QUFDVDtBQUVBLFNBQVNVLFlBQVlDLFNBQVMsRUFBRUMsVUFBVSxFQUFFL0IsVUFBVSxFQUFFQyxPQUFPLEVBQUU7SUFDL0QsSUFBSStCLGNBQWMsS0FBSztJQUV2QixJQUFNQyxrQkFBa0JILFVBQVVJLE1BQU0sRUFDbENDLG1CQUFtQkosV0FBV0csTUFBTTtJQUUxQyxJQUFJRCxvQkFBb0JFLGtCQUFrQjtRQUN4Q0gsY0FBY0YsVUFBVU0sS0FBSyxDQUFDLFNBQUNDLFVBQVVDLE9BQVU7WUFDakQsSUFBTUMsWUFBWVIsVUFBVSxDQUFDTyxNQUFNLEVBQzdCbkIsY0FBY0gsV0FBV3FCLFVBQVVFLFdBQVd2QyxZQUFZQztZQUVoRSxJQUFJa0IsYUFBYTtnQkFDZixPQUFPLElBQUk7WUFDYixDQUFDO1FBQ0g7SUFDRixDQUFDO0lBRUQsT0FBT2E7QUFDVDtBQUVBLFNBQVNOLG1CQUFtQkgsYUFBYSxFQUFFQyxhQUFhLEVBQUV4QixVQUFVLEVBQUVDLE9BQU8sRUFBRTtJQUM3RSxJQUFNUSxVQUFVYyxjQUFjaEIsS0FBSyxDQUFDaUIsZ0JBQzlCQyxzQkFBc0JoQixTQUFVLEdBQUc7SUFFekMsT0FBT2dCO0FBQ1Q7QUFFQSxTQUFTbkIsc0JBQXNCSCxtQkFBbUIsRUFBRUMsb0JBQW9CLEVBQUVKLFVBQVUsRUFBRUMsT0FBTyxFQUFFO0lBQzdGLElBQUlJLHlCQUF5QixLQUFLO0lBRWxDLElBQU1tQyw4QkFBOEJyQyxvQkFBb0JzQyxXQUFXLElBQzdEQywrQkFBK0J0QyxxQkFBcUJxQyxXQUFXO0lBRXJFLElBQUlELGdDQUFnQ0UsOEJBQThCO1FBQ2hFLElBQU1DLFdBQVdILDZCQUNYSSx1QkFBd0JELGFBQWFFLHlCQUFjO1FBRXpELElBQUlELHNCQUFzQjtZQUN4QixJQUFNbEQsZUFBZVMscUJBQ2ZSLGdCQUFnQlMsc0JBQ2hCMEMsa0JBQWtCQyxlQUFlckQsY0FBY0MsZUFBZUssWUFBWUM7WUFFaEZJLHlCQUF5QnlDLGlCQUFrQixHQUFHO1FBQ2hELENBQUM7UUFFRCxJQUFJLENBQUN6Qyx3QkFBd0I7WUFDM0IsSUFBTTJDLGdDQUFnQzdDLG9CQUFvQjhDLGFBQWEsSUFDakVDLGlDQUFpQzlDLHFCQUFxQjZDLGFBQWEsSUFDbkVuQixZQUFZa0IsK0JBQ1pqQixhQUFhbUIsZ0NBQ2JsQixjQUFjSCxZQUFZQyxXQUFXQyxZQUFZL0IsWUFBWUM7WUFFbkVJLHlCQUF5QjJCLGFBQWEsR0FBRztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8zQjtBQUNUO0FBRUEsU0FBUzBDLGVBQWVyRCxZQUFZLEVBQUVDLGFBQWEsRUFBRUssVUFBVSxFQUFFQyxPQUFPLEVBQUU7SUFDeEUsSUFBSTZDLGtCQUFrQixLQUFLO0lBRTNCLElBQU10QyxXQUFXTyx5Q0FBeUNyQixjQUFjQyxlQUFlTTtJQUV2RixJQUFJTyxhQUFhLElBQUksRUFBRTtRQUNyQixJQUFNMkMsWUFBWTNDLFVBQ1o0QyxjQUFjcEQsWUFDZHFELGtCQUFrQkQsWUFBWUUsSUFBSSxDQUFDLFNBQUNDLFdBQWM7WUFDaEQsSUFBTUMsNEJBQTRCTCxVQUFVNUMsS0FBSyxDQUFDZ0QsV0FBV0gsYUFBYW5EO1lBRTFFLElBQUl1RCwyQkFBMkI7Z0JBQzdCLE9BQU8sSUFBSTtZQUNiLENBQUM7UUFDSDtRQUVOVixrQkFBa0JPLGlCQUFrQixHQUFHO0lBQ3pDLENBQUM7SUFFRCxPQUFPUDtBQUNUO0FBRUEsU0FBU3BDLGlCQUFpQlYsVUFBVSxFQUFFUSxRQUFRLEVBQUU7SUFDOUMsSUFBTTJDLFlBQVkzQyxVQUFVLEdBQUc7SUFFL0JSLGFBQWFBLFdBQVd5RCxNQUFNLENBQUMsU0FBQ2pELFVBQWE7UUFDM0MsSUFBTStDLFlBQVkvQyxVQUFVLEdBQUc7UUFFL0IsSUFBSTJDLGNBQWNJLFdBQVc7WUFDM0IsT0FBTyxJQUFJO1FBQ2IsQ0FBQztJQUNIO0lBRUEsT0FBT3ZEO0FBQ1Q7QUFFQSxTQUFTZSx5Q0FBeUNyQixZQUFZLEVBQUVDLGFBQWEsRUFBRU0sT0FBTyxFQUFFO0lBQ3RGLElBQUlPLFdBQVcsSUFBSTtJQUVuQixJQUFNa0QsUUFBUSxFQUFFLEVBQ1ZDLG1CQUFtQkMsSUFBQUEsYUFBVSxFQUFDbEUsY0FBY2dFLE9BQU96RCxVQUNuRDRELG9CQUFvQkQsSUFBQUEsYUFBVSxFQUFDakUsZUFBZStELE9BQU96RDtJQUUzRCxJQUFJMEQsb0JBQW9CRSxtQkFBbUI7UUFDekMsSUFBTUMsWUFBWUMsSUFBQUEsWUFBSyxFQUFDTCxRQUNsQk0sYUFBYUMsSUFBQUEsYUFBTSxFQUFDUCxRQUNwQlEsZUFBZUosV0FDZkssZ0JBQWdCSCxZQUNoQkksbUNBQW1DRixhQUFhRyxTQUFTLENBQUNGO1FBRWhFLElBQUlDLGtDQUFrQztZQUNwQzVELFdBQVcsSUFBSWxCLFNBQVNJLGNBQWNDO1FBQ3hDLE9BQU87WUFDTCxJQUFNMkUscUNBQXFDSixhQUFhSyxXQUFXLENBQUNKO1lBRXBFLElBQUksS0FBSyxFQUFFO1lBQ1AsR0FBRztZQUNQLE9BQU8sSUFBSUcsb0NBQW9DO2dCQUM3QyxJQUFNRSxZQUFZLEVBQUUsRUFDZEMsOEJBQThCQyxJQUFBQSwwQkFBb0IsRUFBQy9FLGVBQWU2RSxXQUFXdkU7Z0JBRW5GLElBQUl3RSw2QkFBNkI7b0JBQy9CLElBQUlFO29CQUVKLElBQU1DLGdCQUFnQmIsSUFBQUEsWUFBSyxFQUFDUztvQkFFNUJHLGdCQUFnQkMsZUFBZ0IsR0FBRztvQkFFbkMsSUFBTUMsb0JBQW9CRixjQUFjRyxPQUFPLElBQ3pDQyxZQUFZRixtQkFDWkcsWUFBWWQsY0FBYyxHQUFHO29CQUVuQ1MsZ0JBQWdCTSxpQkFBUSxDQUFDQyxlQUFlLENBQUNGLFdBQVdEO29CQUVwRDlFLFFBQVFrRixXQUFXLENBQUNSO29CQUVwQm5FLFdBQVcsSUFBSWxCLFNBQVNJLGNBQWNDO2dCQUN4QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJYSxhQUFhLElBQUksRUFBRTtZQUNyQixJQUFNNEUsaUJBQWlCbkYsUUFBUW9GLFlBQVksQ0FBQzNGLGVBQ3RDNEYsa0JBQWtCckYsUUFBUW9GLFlBQVksQ0FBQzFGLGdCQUN2QzRGLG1CQUFtQnJCLGFBQWFZLE9BQU8sSUFDdkNVLG9CQUFvQnJCLGNBQWNXLE9BQU87WUFFL0M3RSxRQUFRd0YsS0FBSyxDQUFDLEFBQUMsYUFBdUNGLE9BQTNCSCxnQkFBZSxjQUFpRUUsT0FBckRDLGtCQUFpQixzQ0FBZ0VDLE9BQTVCRixpQkFBZ0IsY0FBOEIsT0FBbEJFLG1CQUFrQix5Q0FBdUM5RjtRQUNsTSxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU9jO0FBQ1QifQ==
package/lib/variable.js CHANGED
@@ -28,10 +28,11 @@ function _createClass(Constructor, protoProps, staticProps) {
28
28
  return Constructor;
29
29
  }
30
30
  var Variable = /*#__PURE__*/ function() {
31
- function Variable(type, name) {
31
+ function Variable(type, name, termNode) {
32
32
  _classCallCheck(this, Variable);
33
33
  this.type = type;
34
34
  this.name = name;
35
+ this.termNode = termNode;
35
36
  }
36
37
  _createClass(Variable, [
37
38
  {
@@ -46,6 +47,18 @@ var Variable = /*#__PURE__*/ function() {
46
47
  return this.name;
47
48
  }
48
49
  },
50
+ {
51
+ key: "getTermNode",
52
+ value: function getTermNode() {
53
+ return this.termNode;
54
+ }
55
+ },
56
+ {
57
+ key: "isUndefined",
58
+ value: function isUndefined() {
59
+ return this.termNode === null;
60
+ }
61
+ },
49
62
  {
50
63
  key: "matchName",
51
64
  value: function matchName(name) {
@@ -64,7 +77,14 @@ var Variable = /*#__PURE__*/ function() {
64
77
  {
65
78
  key: "fromTypeAndName",
66
79
  value: function fromTypeAndName(type, name) {
67
- var variable = new Variable(type, name);
80
+ var termNode = null, variable = new Variable(type, name, termNode);
81
+ return variable;
82
+ }
83
+ },
84
+ {
85
+ key: "fromTypeNameAndTermNode",
86
+ value: function fromTypeNameAndTermNode(type, name, termNode) {
87
+ var variable = new Variable(type, name, termNode);
68
88
  return variable;
69
89
  }
70
90
  }
@@ -72,4 +92,4 @@ var Variable = /*#__PURE__*/ function() {
72
92
  return Variable;
73
93
  }();
74
94
 
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92YXJpYWJsZS5qcyIsIjw8anN4LWNvbmZpZy1wcmFnbWEuanM+PiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmFyaWFibGUge1xuICBjb25zdHJ1Y3Rvcih0eXBlLCBuYW1lKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgbWF0Y2hOYW1lKG5hbWUpIHtcbiAgICBjb25zdCBtYXRjaGVzTmFtZSA9ICh0aGlzLm5hbWUgPT09IG5hbWUpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXNOYW1lO1xuICB9XG5cbiAgYXNTdHJpbmcodG9rZW5zKSB7XG4gICAgY29uc3QgdHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IGAke3RoaXMubmFtZX06JHt0eXBlTmFtZX1gO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVHlwZUFuZE5hbWUodHlwZSwgbmFtZSkge1xuICAgIGNvbnN0IHZhcmlhYmxlID0gbmV3IFZhcmlhYmxlKHR5cGUsIG5hbWUpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIlZhcmlhYmxlIiwidHlwZSIsIm5hbWUiLCJnZXRUeXBlIiwiZ2V0TmFtZSIsIm1hdGNoTmFtZSIsIm1hdGNoZXNOYW1lIiwiYXNTdHJpbmciLCJ0b2tlbnMiLCJ0eXBlTmFtZSIsInN0cmluZyIsImZyb21UeXBlQW5kTmFtZSIsInZhcmlhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQUVxQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTixJQUFBLEFBQU1BLHlCQUFOO2FBQU1BLFNBQ1BDLElBQUksRUFBRUMsSUFBSTs4QkFESEY7UUFFakIsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxJQUFJLEdBQUdBOztpQkFIS0Y7O1lBTW5CRyxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVTtnQkFDUixPQUFPLElBQUksQ0FBQ0YsSUFBSTtZQUNsQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVO2dCQUNSLE9BQU8sSUFBSSxDQUFDRixJQUFJO1lBQ2xCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVVILElBQUksRUFBRTtnQkFDZCxJQUFNSSxjQUFlLElBQUksQ0FBQ0osSUFBSSxLQUFLQTtnQkFFbkMsT0FBT0k7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxTQUFTQyxNQUFNLEVBQUU7Z0JBQ2YsSUFBTUMsV0FBVyxJQUFJLENBQUNSLElBQUksQ0FBQ0csT0FBTyxJQUM1Qk0sU0FBUyxBQUFDLEdBQWVELE9BQWIsSUFBSSxDQUFDUCxJQUFJLEVBQUMsS0FBWSxPQUFUTztnQkFFL0IsT0FBT0M7WUFDVDs7OztZQUVPQyxLQUFBQTttQkFBUCxTQUFPQSxnQkFBZ0JWLElBQUksRUFBRUMsSUFBSSxFQUFFO2dCQUNqQyxJQUFNVSxXQUFXLElBNUJBWixTQTRCYUMsTUFBTUM7Z0JBRXBDLE9BQU9VO1lBQ1Q7OztXQS9CbUJaIn0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92YXJpYWJsZS5qcyIsIjw8anN4LWNvbmZpZy1wcmFnbWEuanM+PiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmFyaWFibGUge1xuICBjb25zdHJ1Y3Rvcih0eXBlLCBuYW1lLCB0ZXJtTm9kZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnRlcm1Ob2RlID0gdGVybU5vZGU7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICBnZXRUZXJtTm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtTm9kZTtcbiAgfVxuXG4gIGlzVW5kZWZpbmVkKCkge1xuICAgIHJldHVybiAodGhpcy50ZXJtTm9kZSA9PT0gbnVsbCk7XG4gIH1cblxuICBtYXRjaE5hbWUobmFtZSkge1xuICAgIGNvbnN0IG1hdGNoZXNOYW1lID0gKHRoaXMubmFtZSA9PT0gbmFtZSk7XG5cbiAgICByZXR1cm4gbWF0Y2hlc05hbWU7XG4gIH1cblxuICBhc1N0cmluZyh0b2tlbnMpIHtcbiAgICBjb25zdCB0eXBlTmFtZSA9IHRoaXMudHlwZS5nZXROYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gYCR7dGhpcy5uYW1lfToke3R5cGVOYW1lfWA7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21UeXBlQW5kTmFtZSh0eXBlLCBuYW1lKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSBudWxsLFxuICAgICAgICAgIHZhcmlhYmxlID0gbmV3IFZhcmlhYmxlKHR5cGUsIG5hbWUsIHRlcm1Ob2RlKTtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVHlwZU5hbWVBbmRUZXJtTm9kZSh0eXBlLCBuYW1lLCB0ZXJtTm9kZSkge1xuICAgIGNvbnN0IHZhcmlhYmxlID0gbmV3IFZhcmlhYmxlKHR5cGUsIG5hbWUsIHRlcm1Ob2RlKTtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxufVxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJWYXJpYWJsZSIsInR5cGUiLCJuYW1lIiwidGVybU5vZGUiLCJnZXRUeXBlIiwiZ2V0TmFtZSIsImdldFRlcm1Ob2RlIiwiaXNVbmRlZmluZWQiLCJtYXRjaE5hbWUiLCJtYXRjaGVzTmFtZSIsImFzU3RyaW5nIiwidG9rZW5zIiwidHlwZU5hbWUiLCJzdHJpbmciLCJmcm9tVHlwZUFuZE5hbWUiLCJ2YXJpYWJsZSIsImZyb21UeXBlTmFtZUFuZFRlcm1Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQUVxQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTixJQUFBLEFBQU1BLHlCQUFOO2FBQU1BLFNBQ1BDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxRQUFROzhCQURiSDtRQUVqQixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFFBQVEsR0FBR0E7O2lCQUpDSDs7WUFPbkJJLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVO2dCQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO1lBQ2xCOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVU7Z0JBQ1IsT0FBTyxJQUFJLENBQUNILElBQUk7WUFDbEI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUEsY0FBYztnQkFDWixPQUFPLElBQUksQ0FBQ0gsUUFBUTtZQUN0Qjs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQSxjQUFjO2dCQUNaLE9BQVEsSUFBSSxDQUFDSixRQUFRLEtBQUssSUFBSTtZQUNoQzs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVTixJQUFJLEVBQUU7Z0JBQ2QsSUFBTU8sY0FBZSxJQUFJLENBQUNQLElBQUksS0FBS0E7Z0JBRW5DLE9BQU9PO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsU0FBU0MsTUFBTSxFQUFFO2dCQUNmLElBQU1DLFdBQVcsSUFBSSxDQUFDWCxJQUFJLENBQUNJLE9BQU8sSUFDNUJRLFNBQVMsQUFBQyxHQUFlRCxPQUFiLElBQUksQ0FBQ1YsSUFBSSxFQUFDLEtBQVksT0FBVFU7Z0JBRS9CLE9BQU9DO1lBQ1Q7Ozs7WUFFT0MsS0FBQUE7bUJBQVAsU0FBT0EsZ0JBQWdCYixJQUFJLEVBQUVDLElBQUksRUFBRTtnQkFDakMsSUFBTUMsV0FBVyxJQUFJLEVBQ2ZZLFdBQVcsSUF0Q0FmLFNBc0NhQyxNQUFNQyxNQUFNQztnQkFFMUMsT0FBT1k7WUFDVDs7O1lBRU9DLEtBQUFBO21CQUFQLFNBQU9BLHdCQUF3QmYsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLFFBQVEsRUFBRTtnQkFDbkQsSUFBTVksV0FBVyxJQTVDQWYsU0E0Q2FDLE1BQU1DLE1BQU1DO2dCQUUxQyxPQUFPWTtZQUNUOzs7V0EvQ21CZiJ9