occam-languages 2.1.11 → 2.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -30,12 +30,6 @@ _export(exports, {
30
30
  get FileContext () {
31
31
  return _file.default;
32
32
  },
33
- get ForwardPass () {
34
- return _forward.default;
35
- },
36
- get ForwardZipPass () {
37
- return _forwardZip.default;
38
- },
39
33
  get FurtleLexer () {
40
34
  return _lexer.default;
41
35
  },
@@ -102,8 +96,6 @@ const _file = /*#__PURE__*/ _interop_require_default(require("./context/file"));
102
96
  const _release = /*#__PURE__*/ _interop_require_default(require("./context/release"));
103
97
  const _zip = /*#__PURE__*/ _interop_require_default(require("./pass/zip"));
104
98
  const _simple = /*#__PURE__*/ _interop_require_default(require("./pass/simple"));
105
- const _forward = /*#__PURE__*/ _interop_require_default(require("./pass/forward"));
106
- const _forwardZip = /*#__PURE__*/ _interop_require_default(require("./pass/forwardZip"));
107
99
  const _equivalence = /*#__PURE__*/ _interop_require_default(require("./pass/equivalence"));
108
100
  const _continuation = /*#__PURE__*/ _interop_require_default(require("./pass/continuation"));
109
101
  const _continuationZip = /*#__PURE__*/ _interop_require_default(require("./pass/continuationZip"));
@@ -128,4 +120,4 @@ function _interop_require_default(obj) {
128
120
  };
129
121
  }
130
122
 
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQnJlYWtQb2ludCB9IGZyb20gXCIuL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmlsZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L2ZpbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVsZWFzZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L3JlbGVhc2VcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBaaXBQYXNzIH0gZnJvbSBcIi4vcGFzcy96aXBcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU2ltcGxlUGFzcyB9IGZyb20gXCIuL3Bhc3Mvc2ltcGxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZvcndhcmRQYXNzIH0gZnJvbSBcIi4vcGFzcy9mb3J3YXJkXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZvcndhcmRaaXBQYXNzIH0gZnJvbSBcIi4vcGFzcy9mb3J3YXJkWmlwXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVxdWl2YWxlbmNlUGFzcyB9IGZyb20gXCIuL3Bhc3MvZXF1aXZhbGVuY2VcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGludWF0aW9uUGFzcyB9IGZyb20gXCIuL3Bhc3MvY29udGludWF0aW9uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIENvbnRpbnVhdGlvblppcFBhc3MgfSBmcm9tIFwiLi9wYXNzL2NvbnRpbnVhdGlvblppcFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIEZ1cnRsZUxleGVyIH0gZnJvbSBcIi4vZnVydGxlL2xleGVyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZ1cnRsZVBhcnNlciB9IGZyb20gXCIuL2Z1cnRsZS9wYXJzZXJcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTm9taW5hbExleGVyIH0gZnJvbSBcIi4vbm9taW5hbC9sZXhlclwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb21pbmFsUGFyc2VyIH0gZnJvbSBcIi4vbm9taW5hbC9wYXJzZXJcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb25UZXJtaW5hbE5vZGUgfSBmcm9tIFwiLi9ub25UZXJtaW5hbE5vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlTWl4aW5zIH0gZnJvbSBcIi4vbWl4aW5zL25vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBibmZVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYm5mXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vZGVVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvbm9kZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmdXJ0bGVVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZnVydGxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vbWluYWxVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvbm9taW5hbFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsZUNvbnRleHRVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZmlsZUNvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB2ZXJpZmljYXRpb25VdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvdmVyaWZpY2F0aW9uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlbGVhc2VDb250ZXh0XCI7XG4iXSwibmFtZXMiOlsiQnJlYWtQb2ludCIsIkNvbnRleHQiLCJDb250aW51YXRpb25QYXNzIiwiQ29udGludWF0aW9uWmlwUGFzcyIsIkVsZW1lbnQiLCJFcXVpdmFsZW5jZVBhc3MiLCJGaWxlQ29udGV4dCIsIkZvcndhcmRQYXNzIiwiRm9yd2FyZFppcFBhc3MiLCJGdXJ0bGVMZXhlciIsIkZ1cnRsZVBhcnNlciIsIkxvZyIsIk5vbWluYWxMZXhlciIsIk5vbWluYWxQYXJzZXIiLCJOb25UZXJtaW5hbE5vZGUiLCJSZWxlYXNlQ29udGV4dCIsIlNpbXBsZVBhc3MiLCJaaXBQYXNzIiwiYm5mVXRpbGl0aWVzIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImZpbGVDb250ZXh0VXRpbGl0aWVzIiwiZnVydGxlVXRpbGl0aWVzIiwibm9kZU1peGlucyIsIm5vZGVVdGlsaXRpZXMiLCJub21pbmFsVXRpbGl0aWVzIiwicmVsZWFzZUNvbnRleHRVdGlsaXRpZXMiLCJ2ZXJpZmljYXRpb25VdGlsaXRpZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQUtvQkE7ZUFBQUEsbUJBQVU7O1FBRFZDO2VBQUFBLGdCQUFPOztRQVVQQztlQUFBQSxxQkFBZ0I7O1FBQ2hCQztlQUFBQSx3QkFBbUI7O1FBWm5CQztlQUFBQSxnQkFBTzs7UUFVUEM7ZUFBQUEsb0JBQWU7O1FBUGZDO2VBQUFBLGFBQVc7O1FBS1hDO2VBQUFBLGdCQUFXOztRQUNYQztlQUFBQSxtQkFBYzs7UUFLZEM7ZUFBQUEsY0FBVzs7UUFDWEM7ZUFBQUEsZUFBWTs7UUFoQlpDO2VBQUFBLFlBQUc7O1FBaUJIQztlQUFBQSxlQUFZOztRQUNaQztlQUFBQSxnQkFBYTs7UUFFYkM7ZUFBQUEsd0JBQWU7O1FBZmZDO2VBQUFBLGdCQUFjOztRQUdkQztlQUFBQSxlQUFVOztRQURWQztlQUFBQSxZQUFPOztRQWlCUEM7ZUFBQUEsWUFBWTs7UUFJWkM7ZUFBQUEsb0JBQW1COztRQUVuQkM7ZUFBQUEsc0JBQXFCOztRQURyQkM7ZUFBQUEsb0JBQW9COztRQUhwQkM7ZUFBQUEsZUFBZTs7UUFKZkM7ZUFBQUEsYUFBVTs7UUFHVkM7ZUFBQUEsY0FBYTs7UUFFYkM7ZUFBQUEsZ0JBQWdCOztRQUtoQkM7ZUFBQUEsdUJBQXVCOztRQUR2QkM7ZUFBQUEscUJBQXFCOzs7NERBL0JWO2dFQUNJO2dFQUNBO21FQUNHOzZEQUNDO2dFQUNHOzREQUVQOytEQUNHO2dFQUNDO21FQUNHO29FQUNDO3FFQUNDO3dFQUNHOzhEQUVSOytEQUNDOytEQUNBO2dFQUNDO3dFQUVFOzZEQUVMOzREQUVFOzhEQUNDOytEQUNFO2dFQUNDO29FQUNHO29FQUNDO3NFQUNDO3FFQUNBO3VFQUNFIn0=
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQnJlYWtQb2ludCB9IGZyb20gXCIuL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmlsZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L2ZpbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVsZWFzZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L3JlbGVhc2VcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBaaXBQYXNzIH0gZnJvbSBcIi4vcGFzcy96aXBcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU2ltcGxlUGFzcyB9IGZyb20gXCIuL3Bhc3Mvc2ltcGxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVxdWl2YWxlbmNlUGFzcyB9IGZyb20gXCIuL3Bhc3MvZXF1aXZhbGVuY2VcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGludWF0aW9uUGFzcyB9IGZyb20gXCIuL3Bhc3MvY29udGludWF0aW9uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIENvbnRpbnVhdGlvblppcFBhc3MgfSBmcm9tIFwiLi9wYXNzL2NvbnRpbnVhdGlvblppcFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIEZ1cnRsZUxleGVyIH0gZnJvbSBcIi4vZnVydGxlL2xleGVyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZ1cnRsZVBhcnNlciB9IGZyb20gXCIuL2Z1cnRsZS9wYXJzZXJcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTm9taW5hbExleGVyIH0gZnJvbSBcIi4vbm9taW5hbC9sZXhlclwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb21pbmFsUGFyc2VyIH0gZnJvbSBcIi4vbm9taW5hbC9wYXJzZXJcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb25UZXJtaW5hbE5vZGUgfSBmcm9tIFwiLi9ub25UZXJtaW5hbE5vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlTWl4aW5zIH0gZnJvbSBcIi4vbWl4aW5zL25vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBibmZVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYm5mXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vZGVVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvbm9kZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmdXJ0bGVVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZnVydGxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vbWluYWxVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvbm9taW5hbFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsZUNvbnRleHRVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZmlsZUNvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB2ZXJpZmljYXRpb25VdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvdmVyaWZpY2F0aW9uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlbGVhc2VDb250ZXh0XCI7XG4iXSwibmFtZXMiOlsiQnJlYWtQb2ludCIsIkNvbnRleHQiLCJDb250aW51YXRpb25QYXNzIiwiQ29udGludWF0aW9uWmlwUGFzcyIsIkVsZW1lbnQiLCJFcXVpdmFsZW5jZVBhc3MiLCJGaWxlQ29udGV4dCIsIkZ1cnRsZUxleGVyIiwiRnVydGxlUGFyc2VyIiwiTG9nIiwiTm9taW5hbExleGVyIiwiTm9taW5hbFBhcnNlciIsIk5vblRlcm1pbmFsTm9kZSIsIlJlbGVhc2VDb250ZXh0IiwiU2ltcGxlUGFzcyIsIlppcFBhc3MiLCJibmZVdGlsaXRpZXMiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZmlsZUNvbnRleHRVdGlsaXRpZXMiLCJmdXJ0bGVVdGlsaXRpZXMiLCJub2RlTWl4aW5zIiwibm9kZVV0aWxpdGllcyIsIm5vbWluYWxVdGlsaXRpZXMiLCJyZWxlYXNlQ29udGV4dFV0aWxpdGllcyIsInZlcmlmaWNhdGlvblV0aWxpdGllcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBS29CQTtlQUFBQSxtQkFBVTs7UUFEVkM7ZUFBQUEsZ0JBQU87O1FBUVBDO2VBQUFBLHFCQUFnQjs7UUFDaEJDO2VBQUFBLHdCQUFtQjs7UUFWbkJDO2VBQUFBLGdCQUFPOztRQVFQQztlQUFBQSxvQkFBZTs7UUFMZkM7ZUFBQUEsYUFBVzs7UUFTWEM7ZUFBQUEsY0FBVzs7UUFDWEM7ZUFBQUEsZUFBWTs7UUFkWkM7ZUFBQUEsWUFBRzs7UUFlSEM7ZUFBQUEsZUFBWTs7UUFDWkM7ZUFBQUEsZ0JBQWE7O1FBRWJDO2VBQUFBLHdCQUFlOztRQWJmQztlQUFBQSxnQkFBYzs7UUFHZEM7ZUFBQUEsZUFBVTs7UUFEVkM7ZUFBQUEsWUFBTzs7UUFlUEM7ZUFBQUEsWUFBWTs7UUFJWkM7ZUFBQUEsb0JBQW1COztRQUVuQkM7ZUFBQUEsc0JBQXFCOztRQURyQkM7ZUFBQUEsb0JBQW9COztRQUhwQkM7ZUFBQUEsZUFBZTs7UUFKZkM7ZUFBQUEsYUFBVTs7UUFHVkM7ZUFBQUEsY0FBYTs7UUFFYkM7ZUFBQUEsZ0JBQWdCOztRQUtoQkM7ZUFBQUEsdUJBQXVCOztRQUR2QkM7ZUFBQUEscUJBQXFCOzs7NERBN0JWO2dFQUNJO2dFQUNBO21FQUNHOzZEQUNDO2dFQUNHOzREQUVQOytEQUNHO29FQUNLO3FFQUNDO3dFQUNHOzhEQUVSOytEQUNDOytEQUNBO2dFQUNDO3dFQUVFOzZEQUVMOzREQUVFOzhEQUNDOytEQUNFO2dFQUNDO29FQUNHO29FQUNDO3NFQUNDO3FFQUNBO3VFQUNFIn0=
@@ -21,9 +21,6 @@ _export(exports, {
21
21
  get every () {
22
22
  return every;
23
23
  },
24
- get exists () {
25
- return exists;
26
- },
27
24
  get extract () {
28
25
  return extract;
29
26
  },
@@ -36,6 +33,9 @@ _export(exports, {
36
33
  get match () {
37
34
  return match;
38
35
  },
36
+ get one () {
37
+ return one;
38
+ },
39
39
  get reduce () {
40
40
  return reduce;
41
41
  },
@@ -48,15 +48,15 @@ _export(exports, {
48
48
  });
49
49
  const _necessary = require("necessary");
50
50
  const { first: arrayFirst, filter: arrayFilter } = _necessary.arrayUtilities, { forEach: asynchronousForEach, forwardsForEach: asynchronousForwardsForEach, backwardsForEach: asynchronousBackwardsForEach } = _necessary.asynchronousUtilities;
51
- function all(callbacks, ...remainingArguments) {
51
+ function one(callbacks, ...remainingArguments) {
52
52
  const continuation = remainingArguments.pop();
53
- every(callbacks, (callback, continuation)=>{
53
+ some(callbacks, (callback, continuation)=>{
54
54
  callback(...remainingArguments, continuation);
55
55
  }, continuation);
56
56
  }
57
- function exists(callbacks, ...remainingArguments) {
57
+ function all(callbacks, ...remainingArguments) {
58
58
  const continuation = remainingArguments.pop();
59
- some(callbacks, (callback, continuation)=>{
59
+ every(callbacks, (callback, continuation)=>{
60
60
  callback(...remainingArguments, continuation);
61
61
  }, continuation);
62
62
  }
@@ -92,23 +92,6 @@ function every(array, callback, ...remainingArguments) {
92
92
  continuation(success);
93
93
  });
94
94
  }
95
- function match(arrayA, arrayB, callback, ...remainingArguments) {
96
- const continuation = remainingArguments.pop(), arrayALength = arrayA.length, arrayBLength = arrayB.length;
97
- if (arrayALength !== arrayBLength) {
98
- const matches = false;
99
- continuation(matches);
100
- return;
101
- }
102
- let index = -1;
103
- every(arrayA, (elementA, continuation)=>{
104
- index++;
105
- const elementB = arrayB[index];
106
- callback(elementA, elementB, ...remainingArguments, continuation);
107
- }, (success)=>{
108
- const matches = success; ///
109
- continuation(matches);
110
- });
111
- }
112
95
  function reduce(array, initialValue, callback, ...remainingArguments) {
113
96
  let value = initialValue; ///
114
97
  const continuation = remainingArguments.pop();
@@ -146,6 +129,23 @@ function extract(array, callback, ...remainingArguments) {
146
129
  continuation(deletedElement);
147
130
  });
148
131
  }
132
+ function match(arrayA, arrayB, callback, ...remainingArguments) {
133
+ const continuation = remainingArguments.pop(), arrayALength = arrayA.length, arrayBLength = arrayB.length;
134
+ if (arrayALength !== arrayBLength) {
135
+ const matches = false;
136
+ continuation(matches);
137
+ return;
138
+ }
139
+ let index = -1;
140
+ every(arrayA, (elementA, continuation)=>{
141
+ index++;
142
+ const elementB = arrayB[index];
143
+ callback(elementA, elementB, ...remainingArguments, continuation);
144
+ }, (success)=>{
145
+ const matches = success; ///
146
+ continuation(matches);
147
+ });
148
+ }
149
149
  function resolve(arrayA, arrayB, callback, ...remainingArguments) {
150
150
  arrayA = [
151
151
  ...arrayA
@@ -225,17 +225,17 @@ function backwardsEvery(array, callback, ...remainingArguments) {
225
225
  });
226
226
  }
227
227
  const _default = {
228
+ one,
228
229
  all,
229
- exists,
230
230
  some,
231
231
  every,
232
- match,
233
232
  reduce,
234
233
  forEach,
235
234
  extract,
235
+ match,
236
236
  resolve,
237
237
  forwardsEvery,
238
238
  backwardsEvery
239
239
  };
240
240
 
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcywgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IGZpcnN0OiBhcnJheUZpcnN0LCBmaWx0ZXI6IGFycmF5RmlsdGVyIH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgZm9yRWFjaDogYXN5bmNocm9ub3VzRm9yRWFjaCxcbiAgICAgICAgZm9yd2FyZHNGb3JFYWNoOiBhc3luY2hyb25vdXNGb3J3YXJkc0ZvckVhY2gsXG4gICAgICAgIGJhY2t3YXJkc0ZvckVhY2g6IGFzeW5jaHJvbm91c0JhY2t3YXJkc0ZvckVhY2ggfSA9IGFzeW5jaHJvbm91c1V0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIGFsbChjYWxsYmFja3MsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgZXZlcnkoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgIGNhbGxiYWNrKC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgY29udGludWF0aW9uKTtcbiAgfSwgY29udGludWF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4aXN0cyhjYWxsYmFja3MsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgc29tZShjYWxsYmFja3MsIChjYWxsYmFjaywgY29udGludWF0aW9uKSA9PiB7XG4gICAgY2FsbGJhY2soLi4ucmVtYWluaW5nQXJndW1lbnRzLCBjb250aW51YXRpb24pO1xuICB9LCBjb250aW51YXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29tZShhcnJheSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaChhcnJheUEsIGFycmF5QiwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGFycmF5QUxlbmd0aCA9IGFycmF5QS5sZW5ndGgsXG4gICAgICAgIGFycmF5Qkxlbmd0aCA9IGFycmF5Qi5sZW5ndGg7XG5cbiAgaWYgKGFycmF5QUxlbmd0aCAhPT0gYXJyYXlCTGVuZ3RoKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29udGludWF0aW9uKG1hdGNoZXMpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgZXZlcnkoYXJyYXlBLCAoZWxlbWVudEEsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgIGluZGV4Kys7XG5cbiAgICBjb25zdCBlbGVtZW50QiA9IGFycmF5QltpbmRleF07XG5cbiAgICBjYWxsYmFjayhlbGVtZW50QSwgZWxlbWVudEIsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgY29udGludWF0aW9uKTtcbiAgfSwgKHN1Y2Nlc3MpID0+IHtcbiAgICBjb25zdCBtYXRjaGVzID0gc3VjY2VzczsgIC8vL1xuXG4gICAgY29udGludWF0aW9uKG1hdGNoZXMpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZHVjZShhcnJheSwgaW5pdGlhbFZhbHVlLCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGxldCB2YWx1ZSA9IGluaXRpYWxWYWx1ZTsgLy8vXG5cbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIGFzeW5jaHJvbm91c0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgY2FsbGJhY2sodmFsdWUsIGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKGN1cnJlbnRWYWx1ZSkgPT4ge1xuICAgICAgdmFsdWUgPSBjdXJyZW50VmFsdWU7ICAvLy9cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgY29udGludWF0aW9uKHZhbHVlKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JFYWNoKGFycmF5LCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKCkgPT4ge1xuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCBjb250aW51YXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdChhcnJheSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBsZXQgZGVsZXRlZEVsZW1lbnQgPSB1bmRlZmluZWQ7IC8vL1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBsZXQgaW5kZXggPSAtMTtcblxuICBzb21lKGFycmF5LCAoZWxlbWVudCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgaW5kZXgrKztcblxuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICAgIGZpcnN0RGVsZXRlZEVsZW1lbnQgPSBhcnJheUZpcnN0KGRlbGV0ZWRFbGVtZW50cyk7XG5cbiAgICAgICAgZGVsZXRlZEVsZW1lbnQgPSBmaXJzdERlbGV0ZWRFbGVtZW50OyAgLy8vXG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVhdGlvbihwYXNzZWQpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgY29udGludWF0aW9uKGRlbGV0ZWRFbGVtZW50KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKGFycmF5QSwgYXJyYXlCLCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGFycmF5QSA9IFsgIC8vL1xuICAgIC4uLmFycmF5QVxuICBdO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBmdW5jdGlvbiBuZXh0UGFzcygpIHtcbiAgICBjb25zdCBhcnJheUFMZW5ndGggPSBhcnJheUEubGVuZ3RoO1xuXG4gICAgaWYgKGFycmF5QUxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3Qgc3VjY2VzcyA9IHRydWU7ICAvLy9cblxuICAgICAgY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgIGxldCBjb3VudCA9IC0xO1xuXG4gICAgZnVuY3Rpb24gbmV4dEVsZW1lbnQoKSB7XG4gICAgICBjb3VudCsrO1xuXG4gICAgICBjb25zdCB0ZXJtaW5hdGUgPSAoY291bnQgPT09IGFycmF5QUxlbmd0aCk7XG5cbiAgICAgIGlmICh0ZXJtaW5hdGUpIHtcbiAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGZhbHNlOyAvLy9cblxuICAgICAgICAgIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGFycmF5RmlsdGVyKGFycmF5QSwgKGVsZW1lbnRBKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJyYXlCSW5jbHVkZXNFbGVtZW50QSA9IGFycmF5Qi5pbmNsdWRlcyhlbGVtZW50QSk7XG5cbiAgICAgICAgICBpZiAoIWFycmF5QkluY2x1ZGVzRWxlbWVudEEpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgbmV4dFBhc3MoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gY291bnQsICAvLy9cbiAgICAgICAgICAgICAgZWxlbWVudEEgPSBhcnJheUFbaW5kZXhdO1xuXG4gICAgICAgIGNhbGxiYWNrKGVsZW1lbnRBLCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIChwYXNzZWQpID0+IHtcbiAgICAgICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50QiA9IGVsZW1lbnRBOyAgLy8vXG5cbiAgICAgICAgICAgIGFycmF5Qi5wdXNoKGVsZW1lbnRCKTtcblxuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV4dEVsZW1lbnQoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV4dEVsZW1lbnQoKTtcbiAgfVxuXG4gIG5leHRQYXNzKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0V2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGxldCBzdWNjZXNzID0gdHJ1ZTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgYXN5bmNocm9ub3VzRm9yd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IHRydWU7XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIGFzeW5jaHJvbm91c0JhY2t3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgY2FsbGJhY2soZWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAocGFzc2VkKSA9PiB7XG4gICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBhbGwsXG4gIGV4aXN0cyxcbiAgc29tZSxcbiAgZXZlcnksXG4gIG1hdGNoLFxuICByZWR1Y2UsXG4gIGZvckVhY2gsXG4gIGV4dHJhY3QsXG4gIHJlc29sdmUsXG4gIGZvcndhcmRzRXZlcnksXG4gIGJhY2t3YXJkc0V2ZXJ5XG59XG4iXSwibmFtZXMiOlsiYWxsIiwiYmFja3dhcmRzRXZlcnkiLCJldmVyeSIsImV4aXN0cyIsImV4dHJhY3QiLCJmb3JFYWNoIiwiZm9yd2FyZHNFdmVyeSIsIm1hdGNoIiwicmVkdWNlIiwicmVzb2x2ZSIsInNvbWUiLCJmaXJzdCIsImFycmF5Rmlyc3QiLCJmaWx0ZXIiLCJhcnJheUZpbHRlciIsImFycmF5VXRpbGl0aWVzIiwiYXN5bmNocm9ub3VzRm9yRWFjaCIsImZvcndhcmRzRm9yRWFjaCIsImFzeW5jaHJvbm91c0ZvcndhcmRzRm9yRWFjaCIsImJhY2t3YXJkc0ZvckVhY2giLCJhc3luY2hyb25vdXNCYWNrd2FyZHNGb3JFYWNoIiwiYXN5bmNocm9ub3VzVXRpbGl0aWVzIiwiY2FsbGJhY2tzIiwicmVtYWluaW5nQXJndW1lbnRzIiwiY29udGludWF0aW9uIiwicG9wIiwiY2FsbGJhY2siLCJhcnJheSIsInN1Y2Nlc3MiLCJlbGVtZW50IiwibmV4dCIsImRvbmUiLCJwYXNzZWQiLCJhcnJheUEiLCJhcnJheUIiLCJhcnJheUFMZW5ndGgiLCJsZW5ndGgiLCJhcnJheUJMZW5ndGgiLCJtYXRjaGVzIiwiaW5kZXgiLCJlbGVtZW50QSIsImVsZW1lbnRCIiwiaW5pdGlhbFZhbHVlIiwidmFsdWUiLCJjdXJyZW50VmFsdWUiLCJkZWxldGVkRWxlbWVudCIsInVuZGVmaW5lZCIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJkZWxldGVkRWxlbWVudHMiLCJzcGxpY2UiLCJmaXJzdERlbGV0ZWRFbGVtZW50IiwibmV4dFBhc3MiLCJjb3VudCIsIm5leHRFbGVtZW50IiwidGVybWluYXRlIiwiYXJyYXlCSW5jbHVkZXNFbGVtZW50QSIsImluY2x1ZGVzIiwicHVzaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBU2dCQTtlQUFBQTs7UUF3T0FDO2VBQUFBOztRQXNCaEI7ZUFBQTs7UUF4TmdCQztlQUFBQTs7UUE5QkFDO2VBQUFBOztRQTBHQUM7ZUFBQUE7O1FBVkFDO2VBQUFBOztRQTBHQUM7ZUFBQUE7O1FBdEpBQztlQUFBQTs7UUE0QkFDO2VBQUFBOztRQXFEQUM7ZUFBQUE7O1FBN0hBQztlQUFBQTs7OzJCQXZCc0M7QUFFdEQsTUFBTSxFQUFFQyxPQUFPQyxVQUFVLEVBQUVDLFFBQVFDLFdBQVcsRUFBRSxHQUFHQyx5QkFBYyxFQUMzRCxFQUFFVixTQUFTVyxtQkFBbUIsRUFDNUJDLGlCQUFpQkMs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
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcywgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IGZpcnN0OiBhcnJheUZpcnN0LCBmaWx0ZXI6IGFycmF5RmlsdGVyIH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgZm9yRWFjaDogYXN5bmNocm9ub3VzRm9yRWFjaCxcbiAgICAgICAgZm9yd2FyZHNGb3JFYWNoOiBhc3luY2hyb25vdXNGb3J3YXJkc0ZvckVhY2gsXG4gICAgICAgIGJhY2t3YXJkc0ZvckVhY2g6IGFzeW5jaHJvbm91c0JhY2t3YXJkc0ZvckVhY2ggfSA9IGFzeW5jaHJvbm91c1V0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIG9uZShjYWxsYmFja3MsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgc29tZShjYWxsYmFja3MsIChjYWxsYmFjaywgY29udGludWF0aW9uKSA9PiB7XG4gICAgY2FsbGJhY2soLi4ucmVtYWluaW5nQXJndW1lbnRzLCBjb250aW51YXRpb24pO1xuICB9LCBjb250aW51YXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxsKGNhbGxiYWNrcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBldmVyeShjYWxsYmFja3MsIChjYWxsYmFjaywgY29udGludWF0aW9uKSA9PiB7XG4gICAgY2FsbGJhY2soLi4ucmVtYWluaW5nQXJndW1lbnRzLCBjb250aW51YXRpb24pO1xuICB9LCBjb250aW51YXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29tZShhcnJheSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2UoYXJyYXksIGluaXRpYWxWYWx1ZSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBsZXQgdmFsdWUgPSBpbml0aWFsVmFsdWU7IC8vL1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKHZhbHVlLCBlbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIChjdXJyZW50VmFsdWUpID0+IHtcbiAgICAgIHZhbHVlID0gY3VycmVudFZhbHVlOyAgLy8vXG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIGNvbnRpbnVhdGlvbih2YWx1ZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yRWFjaChhcnJheSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgYXN5bmNocm9ub3VzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICBjYWxsYmFjayhlbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsICgpID0+IHtcbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgY29udGludWF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3QoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IGRlbGV0ZWRFbGVtZW50ID0gdW5kZWZpbmVkOyAvLy9cblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgc29tZShhcnJheSwgKGVsZW1lbnQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgIGluZGV4Kys7XG5cbiAgICBjYWxsYmFjayhlbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIChwYXNzZWQpID0+IHtcbiAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50cyA9IGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpLFxuICAgICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gYXJyYXlGaXJzdChkZWxldGVkRWxlbWVudHMpO1xuXG4gICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gZmlyc3REZWxldGVkRWxlbWVudDsgIC8vL1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24ocGFzc2VkKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIGNvbnRpbnVhdGlvbihkZWxldGVkRWxlbWVudCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2goYXJyYXlBLCBhcnJheUIsIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpLFxuICAgIGFycmF5QUxlbmd0aCA9IGFycmF5QS5sZW5ndGgsXG4gICAgYXJyYXlCTGVuZ3RoID0gYXJyYXlCLmxlbmd0aDtcblxuICBpZiAoYXJyYXlBTGVuZ3RoICE9PSBhcnJheUJMZW5ndGgpIHtcbiAgICBjb25zdCBtYXRjaGVzID0gZmFsc2U7XG5cbiAgICBjb250aW51YXRpb24obWF0Y2hlcyk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgaW5kZXggPSAtMTtcblxuICBldmVyeShhcnJheUEsIChlbGVtZW50QSwgY29udGludWF0aW9uKSA9PiB7XG4gICAgaW5kZXgrKztcblxuICAgIGNvbnN0IGVsZW1lbnRCID0gYXJyYXlCW2luZGV4XTtcblxuICAgIGNhbGxiYWNrKGVsZW1lbnRBLCBlbGVtZW50QiwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCBjb250aW51YXRpb24pO1xuICB9LCAoc3VjY2VzcykgPT4ge1xuICAgIGNvbnN0IG1hdGNoZXMgPSBzdWNjZXNzOyAgLy8vXG5cbiAgICBjb250aW51YXRpb24obWF0Y2hlcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZShhcnJheUEsIGFycmF5QiwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBhcnJheUEgPSBbICAvLy9cbiAgICAuLi5hcnJheUFcbiAgXTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgZnVuY3Rpb24gbmV4dFBhc3MoKSB7XG4gICAgY29uc3QgYXJyYXlBTGVuZ3RoID0gYXJyYXlBLmxlbmd0aDtcblxuICAgIGlmIChhcnJheUFMZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0cnVlOyAgLy8vXG5cbiAgICAgIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICBsZXQgY291bnQgPSAtMTtcblxuICAgIGZ1bmN0aW9uIG5leHRFbGVtZW50KCkge1xuICAgICAgY291bnQrKztcblxuICAgICAgY29uc3QgdGVybWluYXRlID0gKGNvdW50ID09PSBhcnJheUFMZW5ndGgpO1xuXG4gICAgICBpZiAodGVybWluYXRlKSB7XG4gICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBmYWxzZTsgLy8vXG5cbiAgICAgICAgICBjb250aW51YXRpb24oc3VjY2Vzcyk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhcnJheUZpbHRlcihhcnJheUEsIChlbGVtZW50QSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFycmF5QkluY2x1ZGVzRWxlbWVudEEgPSBhcnJheUIuaW5jbHVkZXMoZWxlbWVudEEpO1xuXG4gICAgICAgICAgaWYgKCFhcnJheUJJbmNsdWRlc0VsZW1lbnRBKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG5leHRQYXNzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpbmRleCA9IGNvdW50LCAgLy8vXG4gICAgICAgICAgICAgIGVsZW1lbnRBID0gYXJyYXlBW2luZGV4XTtcblxuICAgICAgICBjYWxsYmFjayhlbGVtZW50QSwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAocGFzc2VkKSA9PiB7XG4gICAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudEIgPSBlbGVtZW50QTsgIC8vL1xuXG4gICAgICAgICAgICBhcnJheUIucHVzaChlbGVtZW50Qik7XG5cbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHRFbGVtZW50KCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIG5leHRFbGVtZW50KCk7XG4gIH1cblxuICBuZXh0UGFzcygpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IHRydWU7XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIGFzeW5jaHJvbm91c0ZvcndhcmRzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICBjYWxsYmFjayhlbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIChwYXNzZWQpID0+IHtcbiAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNCYWNrd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgb25lLFxuICBhbGwsXG4gIHNvbWUsXG4gIGV2ZXJ5LFxuICByZWR1Y2UsXG4gIGZvckVhY2gsXG4gIGV4dHJhY3QsXG4gIG1hdGNoLFxuICByZXNvbHZlLFxuICBmb3J3YXJkc0V2ZXJ5LFxuICBiYWNrd2FyZHNFdmVyeVxufVxuIl0sIm5hbWVzIjpbImFsbCIsImJhY2t3YXJkc0V2ZXJ5IiwiZXZlcnkiLCJleHRyYWN0IiwiZm9yRWFjaCIsImZvcndhcmRzRXZlcnkiLCJtYXRjaCIsIm9uZSIsInJlZHVjZSIsInJlc29sdmUiLCJzb21lIiwiZmlyc3QiLCJhcnJheUZpcnN0IiwiZmlsdGVyIiwiYXJyYXlGaWx0ZXIiLCJhcnJheVV0aWxpdGllcyIsImFzeW5jaHJvbm91c0ZvckVhY2giLCJmb3J3YXJkc0ZvckVhY2giLCJhc3luY2hyb25vdXNGb3J3YXJkc0ZvckVhY2giLCJiYWNrd2FyZHNGb3JFYWNoIiwiYXN5bmNocm9ub3VzQmFja3dhcmRzRm9yRWFjaCIsImFzeW5jaHJvbm91c1V0aWxpdGllcyIsImNhbGxiYWNrcyIsInJlbWFpbmluZ0FyZ3VtZW50cyIsImNvbnRpbnVhdGlvbiIsInBvcCIsImNhbGxiYWNrIiwiYXJyYXkiLCJzdWNjZXNzIiwiZWxlbWVudCIsIm5leHQiLCJkb25lIiwicGFzc2VkIiwiaW5pdGlhbFZhbHVlIiwidmFsdWUiLCJjdXJyZW50VmFsdWUiLCJkZWxldGVkRWxlbWVudCIsInVuZGVmaW5lZCIsImluZGV4Iiwic3RhcnQiLCJkZWxldGVDb3VudCIsImRlbGV0ZWRFbGVtZW50cyIsInNwbGljZSIsImZpcnN0RGVsZXRlZEVsZW1lbnQiLCJhcnJheUEiLCJhcnJheUIiLCJhcnJheUFMZW5ndGgiLCJsZW5ndGgiLCJhcnJheUJMZW5ndGgiLCJtYXRjaGVzIiwiZWxlbWVudEEiLCJlbGVtZW50QiIsIm5leHRQYXNzIiwiY291bnQiLCJuZXh0RWxlbWVudCIsInRlcm1pbmF0ZSIsImFycmF5QkluY2x1ZGVzRWxlbWVudEEiLCJpbmNsdWRlcyIsInB1c2giXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWlCZ0JBO2VBQUFBOztRQWdPQUM7ZUFBQUE7O1FBc0JoQjtlQUFBOztRQXhOZ0JDO2VBQUFBOztRQWdEQUM7ZUFBQUE7O1FBVkFDO2VBQUFBOztRQXNJQUM7ZUFBQUE7O1FBakdBQztlQUFBQTs7UUFqSEFDO2VBQUFBOztRQTREQUM7ZUFBQUE7O1FBaUZBQztlQUFBQTs7UUE3SEFDO2VBQUFBOzs7MkJBdkJzQztBQUV0RCxNQUFNLEVBQUVDLE9BQU9DLFVBQVUsRUFBRUMsUUFBUUMsV0FBVyxFQUFFLEdBQUdDLHlCQUFjLEVBQzNELEVBQUVYLFNBQVNZLG1CQUFtQixFQUM1QkMsaUJBQWlCQywyQkFBMkIsRUFDNUNDLGtC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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-languages",
3
3
  "author": "James Smith",
4
- "version": "2.1.11",
4
+ "version": "2.1.13",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-languages",
7
7
  "description": "Occam's common language functionality.",
package/src/index.js CHANGED
@@ -9,8 +9,6 @@ export { default as ReleaseContext } from "./context/release";
9
9
 
10
10
  export { default as ZipPass } from "./pass/zip";
11
11
  export { default as SimplePass } from "./pass/simple";
12
- export { default as ForwardPass } from "./pass/forward";
13
- export { default as ForwardZipPass } from "./pass/forwardZip";
14
12
  export { default as EquivalencePass } from "./pass/equivalence";
15
13
  export { default as ContinuationPass } from "./pass/continuation";
16
14
  export { default as ContinuationZipPass } from "./pass/continuationZip";
@@ -7,18 +7,18 @@ const { first: arrayFirst, filter: arrayFilter } = arrayUtilities,
7
7
  forwardsForEach: asynchronousForwardsForEach,
8
8
  backwardsForEach: asynchronousBackwardsForEach } = asynchronousUtilities;
9
9
 
10
- export function all(callbacks, ...remainingArguments) {
10
+ export function one(callbacks, ...remainingArguments) {
11
11
  const continuation = remainingArguments.pop();
12
12
 
13
- every(callbacks, (callback, continuation) => {
13
+ some(callbacks, (callback, continuation) => {
14
14
  callback(...remainingArguments, continuation);
15
15
  }, continuation);
16
16
  }
17
17
 
18
- export function exists(callbacks, ...remainingArguments) {
18
+ export function all(callbacks, ...remainingArguments) {
19
19
  const continuation = remainingArguments.pop();
20
20
 
21
- some(callbacks, (callback, continuation) => {
21
+ every(callbacks, (callback, continuation) => {
22
22
  callback(...remainingArguments, continuation);
23
23
  }, continuation);
24
24
  }
@@ -67,34 +67,6 @@ export function every(array, callback, ...remainingArguments) {
67
67
  });
68
68
  }
69
69
 
70
- export function match(arrayA, arrayB, callback, ...remainingArguments) {
71
- const continuation = remainingArguments.pop(),
72
- arrayALength = arrayA.length,
73
- arrayBLength = arrayB.length;
74
-
75
- if (arrayALength !== arrayBLength) {
76
- const matches = false;
77
-
78
- continuation(matches);
79
-
80
- return;
81
- }
82
-
83
- let index = -1;
84
-
85
- every(arrayA, (elementA, continuation) => {
86
- index++;
87
-
88
- const elementB = arrayB[index];
89
-
90
- callback(elementA, elementB, ...remainingArguments, continuation);
91
- }, (success) => {
92
- const matches = success; ///
93
-
94
- continuation(matches);
95
- });
96
- }
97
-
98
70
  export function reduce(array, initialValue, callback, ...remainingArguments) {
99
71
  let value = initialValue; ///
100
72
 
@@ -148,6 +120,34 @@ export function extract(array, callback, ...remainingArguments) {
148
120
  });
149
121
  }
150
122
 
123
+ export function match(arrayA, arrayB, callback, ...remainingArguments) {
124
+ const continuation = remainingArguments.pop(),
125
+ arrayALength = arrayA.length,
126
+ arrayBLength = arrayB.length;
127
+
128
+ if (arrayALength !== arrayBLength) {
129
+ const matches = false;
130
+
131
+ continuation(matches);
132
+
133
+ return;
134
+ }
135
+
136
+ let index = -1;
137
+
138
+ every(arrayA, (elementA, continuation) => {
139
+ index++;
140
+
141
+ const elementB = arrayB[index];
142
+
143
+ callback(elementA, elementB, ...remainingArguments, continuation);
144
+ }, (success) => {
145
+ const matches = success; ///
146
+
147
+ continuation(matches);
148
+ });
149
+ }
150
+
151
151
  export function resolve(arrayA, arrayB, callback, ...remainingArguments) {
152
152
  arrayA = [ ///
153
153
  ...arrayA
@@ -262,14 +262,14 @@ export function backwardsEvery(array, callback, ...remainingArguments) {
262
262
  }
263
263
 
264
264
  export default {
265
+ one,
265
266
  all,
266
- exists,
267
267
  some,
268
268
  every,
269
- match,
270
269
  reduce,
271
270
  forEach,
272
271
  extract,
272
+ match,
273
273
  resolve,
274
274
  forwardsEvery,
275
275
  backwardsEvery
@@ -1,87 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return ForwardPass;
9
- }
10
- });
11
- const _pass = require("../utilities/pass");
12
- class ForwardPass {
13
- run(node, ...remainingArguments) {
14
- let success;
15
- const visited = this.visitNode(node, ...remainingArguments);
16
- success = visited; ///
17
- return success;
18
- }
19
- descend(index, childNodes, ...remainingArguments) {
20
- let descendedForward = false;
21
- const descendForward = remainingArguments.pop(), childNodesLength = childNodes.length;
22
- if (index === childNodesLength) {
23
- descendedForward = descendForward();
24
- } else {
25
- const childNode = childNodes[index], node = childNode, visited = this.visitNode(node, ...remainingArguments, ()=>{
26
- remainingArguments.push(descendForward);
27
- const aheadIndex = index + 1, descendedForward = this.descend(aheadIndex, childNodes, ...remainingArguments);
28
- return descendedForward;
29
- });
30
- if (visited) {
31
- descendedForward = true;
32
- }
33
- }
34
- return descendedForward;
35
- }
36
- visitNode(node, ...remainingArguments) {
37
- let visited;
38
- const nodeTerminalNode = node.isTerminalNode();
39
- if (nodeTerminalNode) {
40
- const terminalNode = node; ///
41
- visited = this.visitTerminalNode(terminalNode, ...remainingArguments);
42
- } else {
43
- const nonTerminalNode = node; ///
44
- visited = this.visitNonTerminalNode(nonTerminalNode, ...remainingArguments);
45
- }
46
- return visited;
47
- }
48
- visitTerminalNode(terminalNode, ...remainingArguments) {
49
- let visited = false;
50
- const descendForward = remainingArguments.pop(), descendedForward = descendForward();
51
- if (descendedForward) {
52
- visited = true;
53
- }
54
- remainingArguments.push(descendForward);
55
- return visited;
56
- }
57
- visitNonTerminalNode(nonTerminalNode, ...remainingArguments) {
58
- let visited = false;
59
- let { maps } = this.constructor;
60
- maps = [
61
- ...maps,
62
- {
63
- nodeQuery: _pass.nonTerminalNodeQuery,
64
- run: (node, ...remainingArguments)=>{
65
- let visited = false;
66
- const index = 0, childNodes = nonTerminalNode.getChildNodes(), descended = this.descend(index, childNodes, ...remainingArguments);
67
- if (descended) {
68
- visited = true;
69
- }
70
- return visited;
71
- }
72
- }
73
- ];
74
- maps.some((map)=>{
75
- const { nodeQuery, run } = map;
76
- const node = nodeQuery(nonTerminalNode);
77
- if (node !== null) {
78
- const success = run(node, ...remainingArguments);
79
- visited = success;
80
- return true;
81
- }
82
- });
83
- return visited;
84
- }
85
- }
86
-
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL2ZvcndhcmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vblRlcm1pbmFsTm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9wYXNzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvcndhcmRQYXNzIHtcbiAgcnVuKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCBzdWNjZXNzO1xuXG4gICAgY29uc3QgdmlzaXRlZCA9IHRoaXMudmlzaXROb2RlKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBzdWNjZXNzID0gdmlzaXRlZDsgIC8vL1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICBkZXNjZW5kKGluZGV4LCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgZGVzY2VuZGVkRm9yd2FyZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZGVzY2VuZEZvcndhcmQgPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksIC8vL1xuICAgICAgICAgIGNoaWxkTm9kZXNMZW5ndGggPSBjaGlsZE5vZGVzLmxlbmd0aDtcblxuICAgIGlmIChpbmRleCA9PT0gY2hpbGROb2Rlc0xlbmd0aCkge1xuICAgICAgZGVzY2VuZGVkRm9yd2FyZCA9IGRlc2NlbmRGb3J3YXJkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IGNoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbm9kZSA9IGNoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICB2aXNpdGVkID0gdGhpcy52aXNpdE5vZGUobm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAoKSA9PiB7XG4gICAgICAgICAgICAgIHJlbWFpbmluZ0FyZ3VtZW50cy5wdXNoKGRlc2NlbmRGb3J3YXJkKTtcblxuICAgICAgICAgICAgICBjb25zdCBhaGVhZEluZGV4ID0gaW5kZXggKyAxLFxuICAgICAgICAgICAgICAgICAgICBkZXNjZW5kZWRGb3J3YXJkID0gdGhpcy5kZXNjZW5kKGFoZWFkSW5kZXgsIGNoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGRlc2NlbmRlZEZvcndhcmQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgaWYgKHZpc2l0ZWQpIHtcbiAgICAgICAgZGVzY2VuZGVkRm9yd2FyZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc2NlbmRlZEZvcndhcmQ7XG4gIH1cblxuICB2aXNpdE5vZGUobm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQ7XG5cbiAgICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXRUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxuXG4gIHZpc2l0VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlc2NlbmRGb3J3YXJkID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpLCAvLy9cbiAgICAgICAgICBkZXNjZW5kZWRGb3J3YXJkID0gZGVzY2VuZEZvcndhcmQoKTtcblxuICAgIGlmIChkZXNjZW5kZWRGb3J3YXJkKSB7XG4gICAgICB2aXNpdGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZW1haW5pbmdBcmd1bWVudHMucHVzaChkZXNjZW5kRm9yd2FyZCk7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxuXG4gIHZpc2l0Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGxldCB7IG1hcHMgfSA9IHRoaXMuY29uc3RydWN0b3I7XG5cbiAgICBtYXBzID0gWyAvLy9cbiAgICAgIC4uLm1hcHMsXG4gICAgICB7XG4gICAgICAgIG5vZGVRdWVyeTogbm9uVGVybWluYWxOb2RlUXVlcnksXG4gICAgICAgIHJ1bjogKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykgPT4ge1xuICAgICAgICAgIGxldCB2aXNpdGVkID0gZmFsc2U7XG5cbiAgICAgICAgICBjb25zdCBpbmRleCA9IDAsXG4gICAgICAgICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksIC8vL1xuICAgICAgICAgICAgICAgIGRlc2NlbmRlZCA9IHRoaXMuZGVzY2VuZChpbmRleCwgY2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgIGlmIChkZXNjZW5kZWQpIHtcbiAgICAgICAgICAgIHZpc2l0ZWQgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2aXNpdGVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuXG4gICAgbWFwcy5zb21lKChtYXApID0+IHtcbiAgICAgIGNvbnN0IHsgbm9kZVF1ZXJ5LCBydW4gfSA9IG1hcDtcblxuICAgICAgY29uc3Qgbm9kZSA9IG5vZGVRdWVyeShub25UZXJtaW5hbE5vZGUpO1xuXG4gICAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBzdWNjZXNzID0gcnVuKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgdmlzaXRlZCA9IHN1Y2Nlc3M7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkZvcndhcmRQYXNzIiwicnVuIiwibm9kZSIsInJlbWFpbmluZ0FyZ3VtZW50cyIsInN1Y2Nlc3MiLCJ2aXNpdGVkIiwidmlzaXROb2RlIiwiZGVzY2VuZCIsImluZGV4IiwiY2hpbGROb2RlcyIsImRlc2NlbmRlZEZvcndhcmQiLCJkZXNjZW5kRm9yd2FyZCIsInBvcCIsImNoaWxkTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJjaGlsZE5vZGUiLCJwdXNoIiwiYWhlYWRJbmRleCIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsInZpc2l0VGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwidmlzaXROb25UZXJtaW5hbE5vZGUiLCJtYXBzIiwibm9kZVF1ZXJ5Iiwibm9uVGVybWluYWxOb2RlUXVlcnkiLCJnZXRDaGlsZE5vZGVzIiwiZGVzY2VuZGVkIiwic29tZSIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSUE7OztlQUFxQkE7OztzQkFGZ0I7QUFFdEIsTUFBTUE7SUFDbkJDLElBQUlDLElBQUksRUFBRSxHQUFHQyxrQkFBa0IsRUFBRTtRQUMvQixJQUFJQztRQUVKLE1BQU1DLFVBQVUsSUFBSSxDQUFDQyxTQUFTLENBQUNKLFNBQVNDO1FBRXhDQyxVQUFVQyxTQUFVLEdBQUc7UUFFdkIsT0FBT0Q7SUFDVDtJQUVBRyxRQUFRQyxLQUFLLEVBQUVDLFVBQVUsRUFBRSxHQUFHTixrQkFBa0IsRUFBRTtRQUNoRCxJQUFJTyxtQkFBbUI7UUFFdkIsTUFBTUMsaUJBQWlCUixtQkFBbUJTLEdBQUcsSUFDdkNDLG1CQUFtQkosV0FBV0ssTUFBTTtRQUUxQyxJQUFJTixVQUFVSyxrQkFBa0I7WUFDOUJILG1CQUFtQkM7UUFDckIsT0FBTztZQUNMLE1BQU1JLFlBQVlOLFVBQVUsQ0FBQ0QsTUFBTSxFQUM3Qk4sT0FBT2EsV0FDUFYsVUFBVSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0osU0FBU0Msb0JBQW9CO2dCQUNwREEsbUJBQW1CYSxJQUFJLENBQUNMO2dCQUV4QixNQUFNTSxhQUFhVCxRQUFRLEdBQ3JCRSxtQkFBbUIsSUFBSSxDQUFDSCxPQUFPLENBQUNVLFlBQVlSLGVBQWVOO2dCQUVqRSxPQUFPTztZQUNUO1lBRU4sSUFBSUwsU0FBUztnQkFDWEssbUJBQW1CO1lBQ3JCO1FBQ0Y7UUFFQSxPQUFPQTtJQUNUO0lBRUFKLFVBQVVKLElBQUksRUFBRSxHQUFHQyxrQkFBa0IsRUFBRTtRQUNyQyxJQUFJRTtRQUVKLE1BQU1hLG1CQUFtQmhCLEtBQUtpQixjQUFjO1FBRTVDLElBQUlELGtCQUFrQjtZQUNwQixNQUFNRSxlQUFlbEIsTUFBTyxHQUFHO1lBRS9CRyxVQUFVLElBQUksQ0FBQ2dCLGlCQUFpQixDQUFDRCxpQkFBaUJqQjtRQUNwRCxPQUFPO1lBQ0wsTUFBTW1CLGtCQUFrQnBCLE1BQU8sR0FBRztZQUVsQ0csVUFBVSxJQUFJLENBQUNrQixvQkFBb0IsQ0FBQ0Qsb0JBQW9CbkI7UUFDMUQ7UUFFQSxPQUFPRTtJQUNUO0lBRUFnQixrQkFBa0JELFlBQVksRUFBRSxHQUFHakIsa0JBQWtCLEVBQUU7UUFDckQsSUFBSUUsVUFBVTtRQUVkLE1BQU1NLGlCQUFpQlIsbUJBQW1CUyxHQUFHLElBQ3ZDRixtQkFBbUJDO1FBRXpCLElBQUlELGtCQUFrQjtZQUNwQkwsVUFBVTtRQUNaO1FBRUFGLG1CQUFtQmEsSUFBSSxDQUFDTDtRQUV4QixPQUFPTjtJQUNUO0lBRUFrQixxQkFBcUJELGVBQWUsRUFBRSxHQUFHbkIsa0JBQWtCLEVBQUU7UUFDM0QsSUFBSUUsVUFBVTtRQUVkLElBQUksRUFBRW1CLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXO1FBRS9CQSxPQUFPO2VBQ0ZBO1lBQ0g7Z0JBQ0VDLFdBQVdDLDBCQUFvQjtnQkFDL0J6QixLQUFLLENBQUNDLE1BQU0sR0FBR0M7b0JBQ2IsSUFBSUUsVUFBVTtvQkFFZCxNQUFNRyxRQUFRLEdBQ1JDLGFBQWFhLGdCQUFnQkssYUFBYSxJQUMxQ0MsWUFBWSxJQUFJLENBQUNyQixPQUFPLENBQUNDLE9BQU9DLGVBQWVOO29CQUVyRCxJQUFJeUIsV0FBVzt3QkFDYnZCLFVBQVU7b0JBQ1o7b0JBRUEsT0FBT0E7Z0JBQ1Q7WUFDRjtTQUNEO1FBRURtQixLQUFLSyxJQUFJLENBQUMsQ0FBQ0M7WUFDVCxNQUFNLEVBQUVMLFNBQVMsRUFBRXhCLEdBQUcsRUFBRSxHQUFHNkI7WUFFM0IsTUFBTTVCLE9BQU91QixVQUFVSDtZQUV2QixJQUFJcEIsU0FBUyxNQUFNO2dCQUNqQixNQUFNRSxVQUFVSCxJQUFJQyxTQUFTQztnQkFFN0JFLFVBQVVEO2dCQUVWLE9BQU87WUFDVDtRQUNGO1FBRUEsT0FBT0M7SUFDVDtBQUNGIn0=
@@ -1,96 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return ForwardZipPass;
9
- }
10
- });
11
- const _pass = require("../utilities/pass");
12
- class ForwardZipPass {
13
- run(generalNode, specificNode, ...remainingArguments) {
14
- let success;
15
- const visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
16
- success = visited; ///
17
- return success;
18
- }
19
- descend(index, generalChildNodes, specificChildNodes, ...remainingArguments) {
20
- let descendedForward = false;
21
- const childNodesCongruent = (0, _pass.areChildNodesCongruent)(generalChildNodes, specificChildNodes);
22
- if (childNodesCongruent) {
23
- const descendForward = remainingArguments.pop(), generalChildNodesLength = generalChildNodes.length;
24
- if (index === generalChildNodesLength) {
25
- descendedForward = descendForward();
26
- } else {
27
- const generalChildNode = generalChildNodes[index], specificChildNode = specificChildNodes[index], generalNode = generalChildNode, specificNode = specificChildNode, visited = this.visitNode(generalNode, specificNode, ...remainingArguments, ()=>{
28
- remainingArguments.push(descendForward);
29
- const aheadIndex = index + 1, descendedForward = this.descend(aheadIndex, generalChildNodes, specificChildNodes, ...remainingArguments);
30
- return descendedForward;
31
- });
32
- if (visited) {
33
- descendedForward = true;
34
- }
35
- }
36
- }
37
- return descendedForward;
38
- }
39
- visitNode(generalNode, specificNode, ...remainingArguments) {
40
- let visited = false;
41
- const generalNodeTerminalNode = generalNode.isTerminalNode(), specificNodeTerminalNode = specificNode.isTerminalNode(), generalNodeNonTerminalNode = generalNode.isNonTerminalNode(), specificNodeNonTerminalNode = specificNode.isNonTerminalNode();
42
- if (false) {
43
- ///
44
- } else if (generalNodeTerminalNode && specificNodeTerminalNode) {
45
- const generalTerminalNode = generalNode, specificTerminalNode = specificNode; ///
46
- visited = this.visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments);
47
- } else if (generalNodeNonTerminalNode && specificNodeNonTerminalNode) {
48
- const generalNonTerminalNode = generalNode, specificNonTerminalNode = specificNode; ///
49
- visited = this.visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments);
50
- }
51
- return visited;
52
- }
53
- visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments) {
54
- let visited = false;
55
- const descendForward = remainingArguments.pop(), descendedForward = descendForward();
56
- if (descendedForward) {
57
- visited = true;
58
- }
59
- remainingArguments.push(descendForward);
60
- return visited;
61
- }
62
- visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments) {
63
- let visited = false;
64
- let { maps } = this.constructor;
65
- maps = [
66
- ...maps,
67
- {
68
- generalNodeQuery: _pass.nonTerminalNodeQuery,
69
- specificNodeQuery: _pass.nonTerminalNodeQuery,
70
- run: (generalNode, specificNode, ...remainingArguments)=>{
71
- let visited = false;
72
- const generalNonTerminalNodeRuleName = generalNonTerminalNode.getRuleName(), specificNonTerminalNodeRuleName = specificNonTerminalNode.getRuleName(); ///
73
- if (generalNonTerminalNodeRuleName === specificNonTerminalNodeRuleName) {
74
- const index = 0, generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(), specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(), generalChildNodes = generalNonTerminalNodeChildNodes, specificChildNodes = specificNonTerminalNodeChildNodes, descended = this.descend(index, generalChildNodes, specificChildNodes, ...remainingArguments);
75
- if (descended) {
76
- visited = true;
77
- }
78
- }
79
- return visited;
80
- }
81
- }
82
- ];
83
- maps.some((map)=>{
84
- const { generalNodeQuery, specificNodeQuery, run } = map;
85
- const generalNode = generalNodeQuery(generalNonTerminalNode), specificNode = specificNodeQuery(specificNonTerminalNode); ///
86
- if (generalNode !== null && specificNode !== null) {
87
- const success = run(generalNode, specificNode, ...remainingArguments);
88
- visited = success; ///
89
- return true;
90
- }
91
- });
92
- return visited;
93
- }
94
- }
95
-
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL2ZvcndhcmRaaXAuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vblRlcm1pbmFsTm9kZVF1ZXJ5LCBhcmVDaGlsZE5vZGVzQ29uZ3J1ZW50IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9wYXNzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvcndhcmRaaXBQYXNzIHtcbiAgcnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCBzdWNjZXNzO1xuXG4gICAgY29uc3QgdmlzaXRlZCA9IHRoaXMudmlzaXROb2RlKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBzdWNjZXNzID0gdmlzaXRlZDsgIC8vL1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICBkZXNjZW5kKGluZGV4LCBnZW5lcmFsQ2hpbGROb2Rlcywgc3BlY2lmaWNDaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgZGVzY2VuZGVkRm9yd2FyZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgY2hpbGROb2Rlc0NvbmdydWVudCA9IGFyZUNoaWxkTm9kZXNDb25ncnVlbnQoZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2Rlcyk7XG5cbiAgICBpZiAoY2hpbGROb2Rlc0NvbmdydWVudCkge1xuICAgICAgY29uc3QgZGVzY2VuZEZvcndhcmQgPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksICAvLy9cbiAgICAgICAgICAgIGdlbmVyYWxDaGlsZE5vZGVzTGVuZ3RoID0gZ2VuZXJhbENoaWxkTm9kZXMubGVuZ3RoO1xuXG4gICAgICBpZiAoaW5kZXggPT09IGdlbmVyYWxDaGlsZE5vZGVzTGVuZ3RoKSB7XG4gICAgICAgIGRlc2NlbmRlZEZvcndhcmQgPSBkZXNjZW5kRm9yd2FyZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZ2VuZXJhbENoaWxkTm9kZSA9IGdlbmVyYWxDaGlsZE5vZGVzW2luZGV4XSxcbiAgICAgICAgICAgICAgc3BlY2lmaWNDaGlsZE5vZGUgPSBzcGVjaWZpY0NoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgICBnZW5lcmFsTm9kZSA9IGdlbmVyYWxDaGlsZE5vZGUsIC8vL1xuICAgICAgICAgICAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY0NoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0Tm9kZShnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMsICgpID0+IHtcbiAgICAgICAgICAgICAgICByZW1haW5pbmdBcmd1bWVudHMucHVzaChkZXNjZW5kRm9yd2FyZCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBhaGVhZEluZGV4ID0gaW5kZXggKyAxLFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NlbmRlZEZvcndhcmQgPSB0aGlzLmRlc2NlbmQoYWhlYWRJbmRleCwgZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBkZXNjZW5kZWRGb3J3YXJkO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAodmlzaXRlZCkge1xuICAgICAgICAgIGRlc2NlbmRlZEZvcndhcmQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc2NlbmRlZEZvcndhcmQ7XG4gIH1cblxuICB2aXNpdE5vZGUoZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGdlbmVyYWxOb2RlVGVybWluYWxOb2RlID0gZ2VuZXJhbE5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICBzcGVjaWZpY05vZGVUZXJtaW5hbE5vZGUgPSBzcGVjaWZpY05vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICBnZW5lcmFsTm9kZU5vblRlcm1pbmFsTm9kZSA9IGdlbmVyYWxOb2RlLmlzTm9uVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgc3BlY2lmaWNOb2RlTm9uVGVybWluYWxOb2RlID0gc3BlY2lmaWNOb2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAoZ2VuZXJhbE5vZGVUZXJtaW5hbE5vZGUgJiYgc3BlY2lmaWNOb2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBnZW5lcmFsVGVybWluYWxOb2RlID0gZ2VuZXJhbE5vZGUsICAvLy9cbiAgICAgICAgICAgIHNwZWNpZmljVGVybWluYWxOb2RlID0gc3BlY2lmaWNOb2RlOyAgLy8vXG5cbiAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0VGVybWluYWxOb2RlKGdlbmVyYWxUZXJtaW5hbE5vZGUsIHNwZWNpZmljVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICAgIH0gZWxzZSBpZiAoZ2VuZXJhbE5vZGVOb25UZXJtaW5hbE5vZGUgJiYgc3BlY2lmaWNOb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBnZW5lcmFsTm9uVGVybWluYWxOb2RlID0gZ2VuZXJhbE5vZGUsICAvLy9cbiAgICAgICAgICAgIHNwZWNpZmljTm9uVGVybWluYWxOb2RlID0gc3BlY2lmaWNOb2RlOyAvLy9cblxuICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXROb25UZXJtaW5hbE5vZGUoZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSwgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpc2l0ZWQ7XG4gIH1cblxuICB2aXNpdFRlcm1pbmFsTm9kZShnZW5lcmFsVGVybWluYWxOb2RlLCBzcGVjaWZpY1Rlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlc2NlbmRGb3J3YXJkID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpLCAvLy9cbiAgICAgICAgICBkZXNjZW5kZWRGb3J3YXJkID0gZGVzY2VuZEZvcndhcmQoKTtcblxuICAgIGlmIChkZXNjZW5kZWRGb3J3YXJkKSB7XG4gICAgICB2aXNpdGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZW1haW5pbmdBcmd1bWVudHMucHVzaChkZXNjZW5kRm9yd2FyZCk7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxuXG4gIHZpc2l0Tm9uVGVybWluYWxOb2RlKGdlbmVyYWxOb25UZXJtaW5hbE5vZGUsIHNwZWNpZmljTm9uVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgbGV0IHsgbWFwcyB9ID0gdGhpcy5jb25zdHJ1Y3RvcjtcblxuICAgIG1hcHMgPSBbIC8vL1xuICAgICAgLi4ubWFwcyxcbiAgICAgIHtcbiAgICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogbm9uVGVybWluYWxOb2RlUXVlcnksXG4gICAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBub25UZXJtaW5hbE5vZGVRdWVyeSxcbiAgICAgICAgcnVuOiAoZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSA9PiB7XG4gICAgICAgICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIGNvbnN0IGdlbmVyYWxOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IGdlbmVyYWxOb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSwgLy8vXG4gICAgICAgICAgICAgICAgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IHNwZWNpZmljTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7IC8vL1xuXG4gICAgICAgICAgaWYgKGdlbmVyYWxOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gc3BlY2lmaWNOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSAwLFxuICAgICAgICAgICAgICAgICAgZ2VuZXJhbE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBnZW5lcmFsTm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIHNwZWNpZmljTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IHNwZWNpZmljTm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIGdlbmVyYWxDaGlsZE5vZGVzID0gZ2VuZXJhbE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNDaGlsZE5vZGVzID0gc3BlY2lmaWNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICAgIGRlc2NlbmRlZCA9IHRoaXMuZGVzY2VuZChpbmRleCwgZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgICAgaWYgKGRlc2NlbmRlZCkge1xuICAgICAgICAgICAgICB2aXNpdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmlzaXRlZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cblxuICAgIG1hcHMuc29tZSgobWFwKSA9PiB7XG4gICAgICBjb25zdCB7IGdlbmVyYWxOb2RlUXVlcnksIHNwZWNpZmljTm9kZVF1ZXJ5LCBydW4gfSA9IG1hcDtcblxuICAgICAgY29uc3QgZ2VuZXJhbE5vZGUgPSBnZW5lcmFsTm9kZVF1ZXJ5KGdlbmVyYWxOb25UZXJtaW5hbE5vZGUpLCAgLy8vXG4gICAgICAgIHNwZWNpZmljTm9kZSA9IHNwZWNpZmljTm9kZVF1ZXJ5KHNwZWNpZmljTm9uVGVybWluYWxOb2RlKTsgIC8vL1xuXG4gICAgICBpZiAoKGdlbmVyYWxOb2RlICE9PSBudWxsKSAmJiAoc3BlY2lmaWNOb2RlICE9PSBudWxsKSkge1xuICAgICAgICBjb25zdCBzdWNjZXNzICA9IHJ1bihnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICAgIHZpc2l0ZWQgPSBzdWNjZXNzOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkZvcndhcmRaaXBQYXNzIiwicnVuIiwiZ2VuZXJhbE5vZGUiLCJzcGVjaWZpY05vZGUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJzdWNjZXNzIiwidmlzaXRlZCIsInZpc2l0Tm9kZSIsImRlc2NlbmQiLCJpbmRleCIsImdlbmVyYWxDaGlsZE5vZGVzIiwic3BlY2lmaWNDaGlsZE5vZGVzIiwiZGVzY2VuZGVkRm9yd2FyZCIsImNoaWxkTm9kZXNDb25ncnVlbnQiLCJhcmVDaGlsZE5vZGVzQ29uZ3J1ZW50IiwiZGVzY2VuZEZvcndhcmQiLCJwb3AiLCJnZW5lcmFsQ2hpbGROb2Rlc0xlbmd0aCIsImxlbmd0aCIsImdlbmVyYWxDaGlsZE5vZGUiLCJzcGVjaWZpY0NoaWxkTm9kZSIsInB1c2giLCJhaGVhZEluZGV4IiwiZ2VuZXJhbE5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInNwZWNpZmljTm9kZVRlcm1pbmFsTm9kZSIsImdlbmVyYWxOb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vZGVOb25UZXJtaW5hbE5vZGUiLCJnZW5lcmFsVGVybWluYWxOb2RlIiwic3BlY2lmaWNUZXJtaW5hbE5vZGUiLCJ2aXNpdFRlcm1pbmFsTm9kZSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vblRlcm1pbmFsTm9kZSIsInZpc2l0Tm9uVGVybWluYWxOb2RlIiwibWFwcyIsImdlbmVyYWxOb2RlUXVlcnkiLCJub25UZXJtaW5hbE5vZGVRdWVyeSIsInNwZWNpZmljTm9kZVF1ZXJ5IiwiZ2VuZXJhbE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJzcGVjaWZpY05vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2VuZXJhbE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwic3BlY2lmaWNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwiZGVzY2VuZGVkIiwic29tZSIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSUE7OztlQUFxQkE7OztzQkFGd0M7QUFFOUMsTUFBTUE7SUFDbkJDLElBQUlDLFdBQVcsRUFBRUMsWUFBWSxFQUFFLEdBQUdDLGtCQUFrQixFQUFFO1FBQ3BELElBQUlDO1FBRUosTUFBTUMsVUFBVSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0wsYUFBYUMsaUJBQWlCQztRQUU3REMsVUFBVUMsU0FBVSxHQUFHO1FBRXZCLE9BQU9EO0lBQ1Q7SUFFQUcsUUFBUUMsS0FBSyxFQUFFQyxpQkFBaUIsRUFBRUMsa0JBQWtCLEVBQUUsR0FBR1Asa0JBQWtCLEVBQUU7UUFDM0UsSUFBSVEsbUJBQW1CO1FBRXZCLE1BQU1DLHNCQUFzQkMsSUFBQUEsNEJBQXNCLEVBQUNKLG1CQUFtQkM7UUFFdEUsSUFBSUUscUJBQXFCO1lBQ3ZCLE1BQU1FLGlCQUFpQlgsbUJBQW1CWSxHQUFHLElBQ3ZDQywwQkFBMEJQLGtCQUFrQlEsTUFBTTtZQUV4RCxJQUFJVCxVQUFVUSx5QkFBeUI7Z0JBQ3JDTCxtQkFBbUJHO1lBQ3JCLE9BQU87Z0JBQ0ws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
@@ -1,118 +0,0 @@
1
- "use strict";
2
-
3
- import { nonTerminalNodeQuery } from "../utilities/pass";
4
-
5
- export default class ForwardPass {
6
- run(node, ...remainingArguments) {
7
- let success;
8
-
9
- const visited = this.visitNode(node, ...remainingArguments);
10
-
11
- success = visited; ///
12
-
13
- return success;
14
- }
15
-
16
- descend(index, childNodes, ...remainingArguments) {
17
- let descendedForward = false;
18
-
19
- const descendForward = remainingArguments.pop(), ///
20
- childNodesLength = childNodes.length;
21
-
22
- if (index === childNodesLength) {
23
- descendedForward = descendForward();
24
- } else {
25
- const childNode = childNodes[index],
26
- node = childNode, ///
27
- visited = this.visitNode(node, ...remainingArguments, () => {
28
- remainingArguments.push(descendForward);
29
-
30
- const aheadIndex = index + 1,
31
- descendedForward = this.descend(aheadIndex, childNodes, ...remainingArguments);
32
-
33
- return descendedForward;
34
- });
35
-
36
- if (visited) {
37
- descendedForward = true;
38
- }
39
- }
40
-
41
- return descendedForward;
42
- }
43
-
44
- visitNode(node, ...remainingArguments) {
45
- let visited;
46
-
47
- const nodeTerminalNode = node.isTerminalNode();
48
-
49
- if (nodeTerminalNode) {
50
- const terminalNode = node; ///
51
-
52
- visited = this.visitTerminalNode(terminalNode, ...remainingArguments);
53
- } else {
54
- const nonTerminalNode = node; ///
55
-
56
- visited = this.visitNonTerminalNode(nonTerminalNode, ...remainingArguments);
57
- }
58
-
59
- return visited;
60
- }
61
-
62
- visitTerminalNode(terminalNode, ...remainingArguments) {
63
- let visited = false;
64
-
65
- const descendForward = remainingArguments.pop(), ///
66
- descendedForward = descendForward();
67
-
68
- if (descendedForward) {
69
- visited = true;
70
- }
71
-
72
- remainingArguments.push(descendForward);
73
-
74
- return visited;
75
- }
76
-
77
- visitNonTerminalNode(nonTerminalNode, ...remainingArguments) {
78
- let visited = false;
79
-
80
- let { maps } = this.constructor;
81
-
82
- maps = [ ///
83
- ...maps,
84
- {
85
- nodeQuery: nonTerminalNodeQuery,
86
- run: (node, ...remainingArguments) => {
87
- let visited = false;
88
-
89
- const index = 0,
90
- childNodes = nonTerminalNode.getChildNodes(), ///
91
- descended = this.descend(index, childNodes, ...remainingArguments);
92
-
93
- if (descended) {
94
- visited = true;
95
- }
96
-
97
- return visited;
98
- }
99
- }
100
- ]
101
-
102
- maps.some((map) => {
103
- const { nodeQuery, run } = map;
104
-
105
- const node = nodeQuery(nonTerminalNode);
106
-
107
- if (node !== null) {
108
- const success = run(node, ...remainingArguments);
109
-
110
- visited = success;
111
-
112
- return true;
113
- }
114
- });
115
-
116
- return visited;
117
- }
118
- }
@@ -1,141 +0,0 @@
1
- "use strict";
2
-
3
- import { nonTerminalNodeQuery, areChildNodesCongruent } from "../utilities/pass";
4
-
5
- export default class ForwardZipPass {
6
- run(generalNode, specificNode, ...remainingArguments) {
7
- let success;
8
-
9
- const visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
10
-
11
- success = visited; ///
12
-
13
- return success;
14
- }
15
-
16
- descend(index, generalChildNodes, specificChildNodes, ...remainingArguments) {
17
- let descendedForward = false;
18
-
19
- const childNodesCongruent = areChildNodesCongruent(generalChildNodes, specificChildNodes);
20
-
21
- if (childNodesCongruent) {
22
- const descendForward = remainingArguments.pop(), ///
23
- generalChildNodesLength = generalChildNodes.length;
24
-
25
- if (index === generalChildNodesLength) {
26
- descendedForward = descendForward();
27
- } else {
28
- const generalChildNode = generalChildNodes[index],
29
- specificChildNode = specificChildNodes[index],
30
- generalNode = generalChildNode, ///
31
- specificNode = specificChildNode, ///
32
- visited = this.visitNode(generalNode, specificNode, ...remainingArguments, () => {
33
- remainingArguments.push(descendForward);
34
-
35
- const aheadIndex = index + 1,
36
- descendedForward = this.descend(aheadIndex, generalChildNodes, specificChildNodes, ...remainingArguments);
37
-
38
- return descendedForward;
39
- });
40
-
41
- if (visited) {
42
- descendedForward = true;
43
- }
44
- }
45
- }
46
-
47
- return descendedForward;
48
- }
49
-
50
- visitNode(generalNode, specificNode, ...remainingArguments) {
51
- let visited = false;
52
-
53
- const generalNodeTerminalNode = generalNode.isTerminalNode(),
54
- specificNodeTerminalNode = specificNode.isTerminalNode(),
55
- generalNodeNonTerminalNode = generalNode.isNonTerminalNode(),
56
- specificNodeNonTerminalNode = specificNode.isNonTerminalNode();
57
-
58
- if (false) {
59
- ///
60
- } else if (generalNodeTerminalNode && specificNodeTerminalNode) {
61
- const generalTerminalNode = generalNode, ///
62
- specificTerminalNode = specificNode; ///
63
-
64
- visited = this.visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments);
65
- } else if (generalNodeNonTerminalNode && specificNodeNonTerminalNode) {
66
- const generalNonTerminalNode = generalNode, ///
67
- specificNonTerminalNode = specificNode; ///
68
-
69
- visited = this.visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments);
70
- }
71
-
72
- return visited;
73
- }
74
-
75
- visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments) {
76
- let visited = false;
77
-
78
- const descendForward = remainingArguments.pop(), ///
79
- descendedForward = descendForward();
80
-
81
- if (descendedForward) {
82
- visited = true;
83
- }
84
-
85
- remainingArguments.push(descendForward);
86
-
87
- return visited;
88
- }
89
-
90
- visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments) {
91
- let visited = false;
92
-
93
- let { maps } = this.constructor;
94
-
95
- maps = [ ///
96
- ...maps,
97
- {
98
- generalNodeQuery: nonTerminalNodeQuery,
99
- specificNodeQuery: nonTerminalNodeQuery,
100
- run: (generalNode, specificNode, ...remainingArguments) => {
101
- let visited = false;
102
-
103
- const generalNonTerminalNodeRuleName = generalNonTerminalNode.getRuleName(), ///
104
- specificNonTerminalNodeRuleName = specificNonTerminalNode.getRuleName(); ///
105
-
106
- if (generalNonTerminalNodeRuleName === specificNonTerminalNodeRuleName) {
107
- const index = 0,
108
- generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(),
109
- specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(),
110
- generalChildNodes = generalNonTerminalNodeChildNodes, ///
111
- specificChildNodes = specificNonTerminalNodeChildNodes, ///
112
- descended = this.descend(index, generalChildNodes, specificChildNodes, ...remainingArguments);
113
-
114
- if (descended) {
115
- visited = true;
116
- }
117
- }
118
-
119
- return visited;
120
- }
121
- }
122
- ]
123
-
124
- maps.some((map) => {
125
- const { generalNodeQuery, specificNodeQuery, run } = map;
126
-
127
- const generalNode = generalNodeQuery(generalNonTerminalNode), ///
128
- specificNode = specificNodeQuery(specificNonTerminalNode); ///
129
-
130
- if ((generalNode !== null) && (specificNode !== null)) {
131
- const success = run(generalNode, specificNode, ...remainingArguments);
132
-
133
- visited = success; ///
134
-
135
- return true;
136
- }
137
- });
138
-
139
- return visited;
140
- }
141
- }