occam-verify-cli 1.0.806 → 1.0.814

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/lib/context/bounded.js +242 -0
  2. package/lib/context/branching.js +3 -3
  3. package/lib/context/ephemeral.js +3 -3
  4. package/lib/context/file/nominal.js +16 -16
  5. package/lib/context/liminal.js +26 -30
  6. package/lib/context/synoptic.js +272 -0
  7. package/lib/context.js +66 -54
  8. package/lib/element/assertion/defined.js +8 -8
  9. package/lib/element/assertion/satisfies.js +15 -11
  10. package/lib/element/assertion.js +5 -5
  11. package/lib/element/assumption/metaLevel.js +3 -3
  12. package/lib/element/conclusion.js +11 -8
  13. package/lib/element/deduction.js +11 -8
  14. package/lib/element/derivation.js +1 -7
  15. package/lib/element/frame.js +6 -14
  16. package/lib/element/label.js +5 -8
  17. package/lib/element/metavariable.js +17 -17
  18. package/lib/element/procedureCall.js +10 -6
  19. package/lib/element/proof.js +2 -2
  20. package/lib/element/proofAssertion/premise.js +27 -27
  21. package/lib/element/proofAssertion/step.js +26 -6
  22. package/lib/element/proofAssertion/supposition.js +27 -27
  23. package/lib/element/proofAssertion.js +10 -10
  24. package/lib/element/reference.js +9 -13
  25. package/lib/element/rule.js +42 -44
  26. package/lib/element/signature.js +4 -4
  27. package/lib/element/statement.js +35 -45
  28. package/lib/element/subproof.js +5 -5
  29. package/lib/element/substitution/frame.js +16 -11
  30. package/lib/element/substitution/reference.js +15 -10
  31. package/lib/element/substitution/statement.js +62 -56
  32. package/lib/element/substitution/term.js +15 -10
  33. package/lib/element/substitution.js +29 -31
  34. package/lib/element/term.js +1 -16
  35. package/lib/element/topLevelAssertion/axiom.js +5 -3
  36. package/lib/element/topLevelAssertion.js +37 -39
  37. package/lib/element/topLevelMetaAssertion.js +2 -2
  38. package/lib/element/variable.js +6 -6
  39. package/lib/node/frame.js +1 -9
  40. package/lib/node/statement.js +1 -9
  41. package/lib/node/term.js +1 -19
  42. package/lib/process/assign.js +23 -31
  43. package/lib/utilities/context.js +41 -42
  44. package/lib/utilities/element.js +33 -5
  45. package/lib/utilities/equivalence.js +4 -4
  46. package/lib/utilities/equivalences.js +28 -13
  47. package/lib/utilities/instance.js +3 -3
  48. package/lib/utilities/string.js +2 -2
  49. package/lib/utilities/substitutions.js +16 -15
  50. package/lib/utilities/unification.js +133 -124
  51. package/package.json +4 -4
  52. package/src/context/{proof.js → bounded.js} +9 -9
  53. package/src/context/branching.js +2 -2
  54. package/src/context/ephemeral.js +2 -2
  55. package/src/context/file/nominal.js +15 -15
  56. package/src/context/liminal.js +29 -35
  57. package/src/context/{synthetic.js → synoptic.js} +84 -4
  58. package/src/context.js +88 -69
  59. package/src/element/assertion/defined.js +8 -8
  60. package/src/element/assertion/satisfies.js +17 -10
  61. package/src/element/assertion.js +8 -8
  62. package/src/element/assumption/metaLevel.js +4 -2
  63. package/src/element/conclusion.js +12 -7
  64. package/src/element/deduction.js +12 -7
  65. package/src/element/derivation.js +0 -2
  66. package/src/element/frame.js +7 -20
  67. package/src/element/label.js +3 -5
  68. package/src/element/metavariable.js +27 -27
  69. package/src/element/procedureCall.js +15 -10
  70. package/src/element/proof.js +2 -2
  71. package/src/element/proofAssertion/premise.js +41 -41
  72. package/src/element/proofAssertion/step.js +39 -9
  73. package/src/element/proofAssertion/supposition.js +41 -41
  74. package/src/element/proofAssertion.js +10 -9
  75. package/src/element/reference.js +9 -13
  76. package/src/element/rule.js +59 -63
  77. package/src/element/signature.js +3 -3
  78. package/src/element/statement.js +54 -68
  79. package/src/element/subproof.js +5 -5
  80. package/src/element/substitution/frame.js +18 -8
  81. package/src/element/substitution/reference.js +16 -7
  82. package/src/element/substitution/statement.js +87 -74
  83. package/src/element/substitution/term.js +15 -6
  84. package/src/element/substitution.js +38 -41
  85. package/src/element/term.js +0 -26
  86. package/src/element/topLevelAssertion/axiom.js +5 -2
  87. package/src/element/topLevelAssertion.js +51 -55
  88. package/src/element/topLevelMetaAssertion.js +2 -2
  89. package/src/element/variable.js +5 -5
  90. package/src/node/frame.js +0 -12
  91. package/src/node/statement.js +0 -12
  92. package/src/node/term.js +0 -28
  93. package/src/process/assign.js +35 -46
  94. package/src/utilities/context.js +41 -43
  95. package/src/utilities/element.js +32 -4
  96. package/src/utilities/equivalence.js +3 -4
  97. package/src/utilities/equivalences.js +29 -17
  98. package/src/utilities/instance.js +3 -3
  99. package/src/utilities/string.js +2 -2
  100. package/src/utilities/substitutions.js +17 -15
  101. package/src/utilities/unification.js +145 -119
  102. package/lib/context/proof.js +0 -242
  103. package/lib/context/synthetic.js +0 -212
@@ -12,12 +12,6 @@ _export(exports, {
12
12
  get ablate () {
13
13
  return ablate;
14
14
  },
15
- get asyncReconcile () {
16
- return asyncReconcile;
17
- },
18
- get asyncRestrict () {
19
- return asyncRestrict;
20
- },
21
15
  get attempt () {
22
16
  return attempt;
23
17
  },
@@ -33,15 +27,21 @@ _export(exports, {
33
27
  get descend () {
34
28
  return descend;
35
29
  },
30
+ get enclose () {
31
+ return enclose;
32
+ },
33
+ get evaluate () {
34
+ return evaluate;
35
+ },
36
+ get ground () {
37
+ return ground;
38
+ },
36
39
  get instantiate () {
37
40
  return instantiate;
38
41
  },
39
42
  get join () {
40
43
  return join;
41
44
  },
42
- get nominally () {
43
- return nominally;
44
- },
45
45
  get reconcile () {
46
46
  return reconcile;
47
47
  },
@@ -52,16 +52,16 @@ _export(exports, {
52
52
  return unserialise;
53
53
  }
54
54
  });
55
- const _proof = /*#__PURE__*/ _interop_require_default(require("../context/proof"));
56
55
  const _nested = /*#__PURE__*/ _interop_require_default(require("../context/nested"));
57
56
  const _thetic = /*#__PURE__*/ _interop_require_default(require("../context/thetic"));
57
+ const _bounded = /*#__PURE__*/ _interop_require_default(require("../context/bounded"));
58
58
  const _nominal = /*#__PURE__*/ _interop_require_default(require("../context/nominal"));
59
59
  const _literal = /*#__PURE__*/ _interop_require_default(require("../context/literal"));
60
60
  const _liminal = /*#__PURE__*/ _interop_require_default(require("../context/liminal"));
61
+ const _synoptic = /*#__PURE__*/ _interop_require_default(require("../context/synoptic"));
61
62
  const _illative = /*#__PURE__*/ _interop_require_default(require("../context/illative"));
62
63
  const _ephemeral = /*#__PURE__*/ _interop_require_default(require("../context/ephemeral"));
63
64
  const _branching = /*#__PURE__*/ _interop_require_default(require("../context/branching"));
64
- const _synthetic = /*#__PURE__*/ _interop_require_default(require("../context/synthetic"));
65
65
  const _nominal1 = /*#__PURE__*/ _interop_require_default(require("../context/file/nominal"));
66
66
  const _json = require("../utilities/json");
67
67
  function _interop_require_default(obj) {
@@ -70,7 +70,15 @@ function _interop_require_default(obj) {
70
70
  };
71
71
  }
72
72
  function join(innerFunction, ...contexts) {
73
- const syntheticContext = _synthetic.default.fromContexts(...contexts), context = syntheticContext; ///
73
+ const synopticContext = _synoptic.default.fromContexts(...contexts), context = synopticContext; ///
74
+ return innerFunction(context);
75
+ }
76
+ function ground(innerFunction) {
77
+ let context;
78
+ const nominalContext = _nominal.default.fromNothing();
79
+ context = nominalContext; ///
80
+ const literalContext = _literal.default.fromNothing(context);
81
+ context = literalContext; ///
74
82
  return innerFunction(context);
75
83
  }
76
84
  function ablate(innerFunction, context) {
@@ -96,34 +104,34 @@ function declare(innerFunction, context) {
96
104
  context = theticContext; ///
97
105
  return innerFunction(context);
98
106
  }
107
+ function attempt(innerFunction, context) {
108
+ const ephemeralContext = _ephemeral.default.fromNothing(context);
109
+ context = ephemeralContext; ///
110
+ return innerFunction(context);
111
+ }
99
112
  function descend(innerFunction, context) {
100
113
  const nestedContext = _nested.default.fromNothing(context);
101
114
  context = nestedContext; ///
102
115
  return innerFunction(context);
103
116
  }
104
- function attempt(innerFunction, context) {
105
- const ephemeralContext = _ephemeral.default.fromNothing(context);
106
- context = ephemeralContext; ///
117
+ function enclose(innerFunction, metaLevelAssumptions, context) {
118
+ if (context === undefined) {
119
+ context = metaLevelAssumptions; ///
120
+ metaLevelAssumptions = null;
121
+ }
122
+ const boundedContext = _bounded.default.fromMetaLevelAssumptions(metaLevelAssumptions, context);
123
+ context = boundedContext; ///
107
124
  return innerFunction(context);
108
125
  }
126
+ function evaluate(procedure, terms) {
127
+ const context = procedure.getContext();
128
+ return procedure.call(terms, context);
129
+ }
109
130
  function reconcile(innerFunction, context) {
110
131
  const liminalContext = _liminal.default.fromNothing(context);
111
132
  context = liminalContext; ///
112
133
  return innerFunction(context);
113
134
  }
114
- function instantiate(innerFunction, context) {
115
- const literalContext = _literal.default.fromNothing(context);
116
- context = literalContext; ///
117
- return innerFunction(context);
118
- }
119
- function nominally(innerFunction) {
120
- let context;
121
- const nominalContext = _nominal.default.fromNothing();
122
- context = nominalContext; ///
123
- const literalContext = _literal.default.fromNothing(context);
124
- context = literalContext; ///
125
- return innerFunction(context);
126
- }
127
135
  function serialise(innerFunction, context) {
128
136
  const ephemeralContext = context, ephemeralContextJSON = (0, _json.ephemeralContextToEphemeralContextJSON)(ephemeralContext), contextJSON = ephemeralContextJSON; ///
129
137
  context = contextJSON; ///
@@ -134,19 +142,10 @@ function unserialise(innerFunction, json, context) {
134
142
  context = ephemeralContext; ///
135
143
  return innerFunction(json, context);
136
144
  }
137
- async function asyncRestrict(innerFunction, metaLevelAssumptions, context) {
138
- if (context === undefined) {
139
- context = metaLevelAssumptions; ///
140
- metaLevelAssumptions = null;
141
- }
142
- const proofContext = _proof.default.fromMetaLevelAssumptions(metaLevelAssumptions, context);
143
- context = proofContext; ///
144
- return await innerFunction(context);
145
- }
146
- async function asyncReconcile(innerFunction, context) {
147
- const liminalContext = _liminal.default.fromNothing(context);
148
- context = liminalContext; ///
149
- return await innerFunction(context);
145
+ function instantiate(innerFunction, context) {
146
+ const literalContext = _literal.default.fromNothing(context);
147
+ context = literalContext; ///
148
+ return innerFunction(context);
150
149
  }
151
150
 
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFByb29mQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9wcm9vZlwiO1xuaW1wb3J0IE5lc3RlZENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbmVzdGVkXCI7XG5pbXBvcnQgVGhldGljQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC90aGV0aWNcIjtcbmltcG9ydCBOb21pbmFsQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9ub21pbmFsXCI7XG5pbXBvcnQgTGl0ZXJhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbGl0ZXJhbFwiO1xuaW1wb3J0IExpbWluYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2xpbWluYWxcIjtcbmltcG9ydCBJbGxhdGl2ZUNvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvaWxsYXRpdmVcIjtcbmltcG9ydCBFcGhlbWVyYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2VwaGVtZXJhbFwiO1xuaW1wb3J0IEJyYW5jaGluZ0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvYnJhbmNoaW5nXCI7XG5pbXBvcnQgU3ludGhldGljQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9zeW50aGV0aWNcIjtcbmltcG9ydCBOb21pbmFsRmlsZUNvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvZmlsZS9ub21pbmFsXCI7XG5cbmltcG9ydCB7IGVwaGVtZXJhbENvbnRleHRGcm9tSlNPTiwgZXBoZW1lcmFsQ29udGV4dFRvRXBoZW1lcmFsQ29udGV4dEpTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGpvaW4oaW5uZXJGdW5jdGlvbiwgLi4uY29udGV4dHMpIHtcbiAgY29uc3Qgc3ludGhldGljQ29udGV4dCA9IFN5bnRoZXRpY0NvbnRleHQuZnJvbUNvbnRleHRzKC4uLmNvbnRleHRzKSxcbiAgICAgICAgY29udGV4dCA9IHN5bnRoZXRpY0NvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFibGF0ZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGxldCBjb250ZXh0Tm9taW5hbEZpbGVDb250ZXh0ID0gKGNvbnRleHQgaW5zdGFuY2VvZiBOb21pbmFsRmlsZUNvbnRleHQpO1xuXG4gIHdoaWxlICghY29udGV4dE5vbWluYWxGaWxlQ29udGV4dCkge1xuICAgIGNvbnRleHQgPSBjb250ZXh0LmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHROb21pbmFsRmlsZUNvbnRleHQgPSAoY29udGV4dCBpbnN0YW5jZW9mIE5vbWluYWxGaWxlQ29udGV4dClcbiAgfVxuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hvb3NlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgYnJhbmNoaW5nQ29udGV4dCA9IEJyYW5jaGluZ0NvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IGJyYW5jaGluZ0NvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGlsbGF0aXZlQ29udGV4dCA9IElsbGF0aXZlQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gaWxsYXRpdmVDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgdGhldGljQ29udGV4dCA9IFRoZXRpY0NvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IHRoZXRpY0NvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2NlbmQoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBuZXN0ZWRDb250ZXh0ID0gTmVzdGVkQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbmVzdGVkQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXR0ZW1wdChpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGVwaGVtZXJhbENvbnRleHQgPSBFcGhlbWVyYWxDb250ZXh0LmZyb21Ob3RoaW5nKGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBlcGhlbWVyYWxDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWNvbmNpbGUoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBsaW1pbmFsQ29udGV4dCA9IExpbWluYWxDb250ZXh0LmZyb21Ob3RoaW5nKGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBsaW1pbmFsQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGUoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBsaXRlcmFsQ29udGV4dCA9IExpdGVyYWxDb250ZXh0LmZyb21Ob3RoaW5nKGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBsaXRlcmFsQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9taW5hbGx5KGlubmVyRnVuY3Rpb24pIHtcbiAgbGV0IGNvbnRleHQ7XG5cbiAgY29uc3Qgbm9taW5hbENvbnRleHQgPSBOb21pbmFsQ29udGV4dC5mcm9tTm90aGluZygpO1xuXG4gIGNvbnRleHQgPSBub21pbmFsQ29udGV4dDsgLy8vXG5cbiAgY29uc3QgbGl0ZXJhbENvbnRleHQgPSBMaXRlcmFsQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbGl0ZXJhbENvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGlzZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGVwaGVtZXJhbENvbnRleHQgPSBjb250ZXh0LCAvLy9cbiAgICAgICAgZXBoZW1lcmFsQ29udGV4dEpTT04gPSBlcGhlbWVyYWxDb250ZXh0VG9FcGhlbWVyYWxDb250ZXh0SlNPTihlcGhlbWVyYWxDb250ZXh0KSxcbiAgICAgICAgY29udGV4dEpTT04gPSBlcGhlbWVyYWxDb250ZXh0SlNPTjsgLy8vXG5cbiAgY29udGV4dCA9IGNvbnRleHRKU09OOyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnNlcmlhbGlzZShpbm5lckZ1bmN0aW9uLCBqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGVwaGVtZXJhbENvbnRleHQgPSBlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IGVwaGVtZXJhbENvbnRleHQ7IC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGpzb24sIGNvbnRleHQpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXN5bmNSZXN0cmljdChpbm5lckZ1bmN0aW9uLCBtZXRhTGV2ZWxBc3N1bXB0aW9ucywgY29udGV4dCkge1xuICBpZiAoY29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29udGV4dCA9IG1ldGFMZXZlbEFzc3VtcHRpb25zOyAgLy8vXG5cbiAgICBtZXRhTGV2ZWxBc3N1bXB0aW9ucyA9IG51bGw7XG4gIH1cblxuICBjb25zdCBwcm9vZkNvbnRleHQgPSBQcm9vZkNvbnRleHQuZnJvbU1ldGFMZXZlbEFzc3VtcHRpb25zKG1ldGFMZXZlbEFzc3VtcHRpb25zLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gcHJvb2ZDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGF3YWl0IGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3luY1JlY29uY2lsZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxpbWluYWxDb250ZXh0ID0gTGltaW5hbENvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IGxpbWluYWxDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGF3YWl0IGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG4iXSwibmFtZXMiOlsiYWJsYXRlIiwiYXN5bmNSZWNvbmNpbGUiLCJhc3luY1Jlc3RyaWN0IiwiYXR0ZW1wdCIsImNob29zZSIsImRlY2xhcmUiLCJkZXJpdmUiLCJkZXNjZW5kIiwiaW5zdGFudGlhdGUiLCJqb2luIiwibm9taW5hbGx5IiwicmVjb25jaWxlIiwic2VyaWFsaXNlIiwidW5zZXJpYWxpc2UiLCJpbm5lckZ1bmN0aW9uIiwiY29udGV4dHMiLCJzeW50aGV0aWNDb250ZXh0IiwiU3ludGhldGljQ29udGV4dCIsImZyb21Db250ZXh0cyIsImNvbnRleHQiLCJjb250ZXh0Tm9taW5hbEZpbGVDb250ZXh0IiwiTm9taW5hbEZpbGVDb250ZXh0IiwiZ2V0Q29udGV4dCIsImJyYW5jaGluZ0NvbnRleHQiLCJCcmFuY2hpbmdDb250ZXh0IiwiZnJvbU5vdGhpbmciLCJpbGxhdGl2ZUNvbnRleHQiLCJJbGxhdGl2ZUNvbnRleHQiLCJ0aGV0aWNDb250ZXh0IiwiVGhldGljQ29udGV4dCIsIm5lc3RlZENvbnRleHQiLCJOZXN0ZWRDb250ZXh0IiwiZXBoZW1lcmFsQ29udGV4dCIsIkVwaGVtZXJhbENvbnRleHQiLCJsaW1pbmFsQ29udGV4dCIsIkxpbWluYWxDb250ZXh0IiwibGl0ZXJhbENvbnRleHQiLCJMaXRlcmFsQ29udGV4dCIsIm5vbWluYWxDb250ZXh0IiwiTm9taW5hbENvbnRleHQiLCJlcGhlbWVyYWxDb250ZXh0SlNPTiIsImVwaGVtZXJhbENvbnRleHRUb0VwaGVtZXJhbENvbnRleHRKU09OIiwiY29udGV4dEpTT04iLCJqc29uIiwiZXBoZW1lcmFsQ29udGV4dEZyb21KU09OIiwibWV0YUxldmVsQXNzdW1wdGlvbnMiLCJ1bmRlZmluZWQiLCJwcm9vZkNvbnRleHQiLCJQcm9vZkNvbnRleHQiLCJmcm9tTWV0YUxldmVsQXNzdW1wdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXVCZ0JBO2VBQUFBOztRQWtITUM7ZUFBQUE7O1FBZEFDO2VBQUFBOztRQXhETkM7ZUFBQUE7O1FBaENBQztlQUFBQTs7UUFnQkFDO2VBQUFBOztRQVJBQztlQUFBQTs7UUFnQkFDO2VBQUFBOztRQXdCQUM7ZUFBQUE7O1FBbkVBQztlQUFBQTs7UUEyRUFDO2VBQUFBOztRQWhCQUM7ZUFBQUE7O1FBOEJBQztlQUFBQTs7UUFVQUM7ZUFBQUE7Ozs4REFqSFM7K0RBQ0M7K0RBQ0E7Z0VBQ0M7Z0VBQ0E7Z0VBQ0E7aUVBQ0M7a0VBQ0M7a0VBQ0E7a0VBQ0E7aUVBQ0U7c0JBRWtEOzs7Ozs7QUFFMUUsU0FBU0osS0FBS0ssYUFBYSxFQUFFLEdBQUdDLFFBQVE7SUFDN0MsTUFBTUMsbUJBQW1CQyxrQkFBZ0IsQ0FBQ0MsWUFBWSxJQUFJSCxXQUNwREksVUFBVUgsa0JBQW1CLEdBQUc7SUFFdEMsT0FBT0YsY0FBY0s7QUFDdkI7QUFFTyxTQUFTbkIsT0FBT2MsYUFBYSxFQUFFSyxPQUFPO0lBQzNDLElBQUlDLDRCQUE2QkQsbUJBQW1CRSxpQkFBa0I7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
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IE5lc3RlZENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbmVzdGVkXCI7XG5pbXBvcnQgVGhldGljQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC90aGV0aWNcIjtcbmltcG9ydCBCb3VuZGVkQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9ib3VuZGVkXCI7XG5pbXBvcnQgTm9taW5hbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbm9taW5hbFwiO1xuaW1wb3J0IExpdGVyYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2xpdGVyYWxcIjtcbmltcG9ydCBMaW1pbmFsQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9saW1pbmFsXCI7XG5pbXBvcnQgU3lub3B0aWNDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L3N5bm9wdGljXCI7XG5pbXBvcnQgSWxsYXRpdmVDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2lsbGF0aXZlXCI7XG5pbXBvcnQgRXBoZW1lcmFsQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9lcGhlbWVyYWxcIjtcbmltcG9ydCBCcmFuY2hpbmdDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2JyYW5jaGluZ1wiO1xuaW1wb3J0IE5vbWluYWxGaWxlQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9maWxlL25vbWluYWxcIjtcblxuaW1wb3J0IHsgZXBoZW1lcmFsQ29udGV4dEZyb21KU09OLCBlcGhlbWVyYWxDb250ZXh0VG9FcGhlbWVyYWxDb250ZXh0SlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5leHBvcnQgZnVuY3Rpb24gam9pbihpbm5lckZ1bmN0aW9uLCAuLi5jb250ZXh0cykge1xuICBjb25zdCBzeW5vcHRpY0NvbnRleHQgPSBTeW5vcHRpY0NvbnRleHQuZnJvbUNvbnRleHRzKC4uLmNvbnRleHRzKSxcbiAgICAgICAgY29udGV4dCA9IHN5bm9wdGljQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JvdW5kKGlubmVyRnVuY3Rpb24pIHtcbiAgbGV0IGNvbnRleHQ7XG5cbiAgY29uc3Qgbm9taW5hbENvbnRleHQgPSBOb21pbmFsQ29udGV4dC5mcm9tTm90aGluZygpO1xuXG4gIGNvbnRleHQgPSBub21pbmFsQ29udGV4dDsgLy8vXG5cbiAgY29uc3QgbGl0ZXJhbENvbnRleHQgPSBMaXRlcmFsQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbGl0ZXJhbENvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFibGF0ZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGxldCBjb250ZXh0Tm9taW5hbEZpbGVDb250ZXh0ID0gKGNvbnRleHQgaW5zdGFuY2VvZiBOb21pbmFsRmlsZUNvbnRleHQpO1xuXG4gIHdoaWxlICghY29udGV4dE5vbWluYWxGaWxlQ29udGV4dCkge1xuICAgIGNvbnRleHQgPSBjb250ZXh0LmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHROb21pbmFsRmlsZUNvbnRleHQgPSAoY29udGV4dCBpbnN0YW5jZW9mIE5vbWluYWxGaWxlQ29udGV4dClcbiAgfVxuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hvb3NlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgYnJhbmNoaW5nQ29udGV4dCA9IEJyYW5jaGluZ0NvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IGJyYW5jaGluZ0NvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGlsbGF0aXZlQ29udGV4dCA9IElsbGF0aXZlQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gaWxsYXRpdmVDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgdGhldGljQ29udGV4dCA9IFRoZXRpY0NvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IHRoZXRpY0NvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF0dGVtcHQoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBlcGhlbWVyYWxDb250ZXh0ID0gRXBoZW1lcmFsQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gZXBoZW1lcmFsQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVzY2VuZChpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5lc3RlZENvbnRleHQgPSBOZXN0ZWRDb250ZXh0LmZyb21Ob3RoaW5nKGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBuZXN0ZWRDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNsb3NlKGlubmVyRnVuY3Rpb24sIG1ldGFMZXZlbEFzc3VtcHRpb25zLCBjb250ZXh0KSB7XG4gIGlmIChjb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICBjb250ZXh0ID0gbWV0YUxldmVsQXNzdW1wdGlvbnM7ICAvLy9cblxuICAgIG1ldGFMZXZlbEFzc3VtcHRpb25zID0gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGJvdW5kZWRDb250ZXh0ID0gQm91bmRlZENvbnRleHQuZnJvbU1ldGFMZXZlbEFzc3VtcHRpb25zKG1ldGFMZXZlbEFzc3VtcHRpb25zLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gYm91bmRlZENvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2YWx1YXRlKHByb2NlZHVyZSwgdGVybXMpIHtcbiAgY29uc3QgY29udGV4dCA9IHByb2NlZHVyZS5nZXRDb250ZXh0KCk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZS5jYWxsKHRlcm1zLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlY29uY2lsZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxpbWluYWxDb250ZXh0ID0gTGltaW5hbENvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IGxpbWluYWxDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpc2UoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBlcGhlbWVyYWxDb250ZXh0ID0gY29udGV4dCwgLy8vXG4gICAgICAgIGVwaGVtZXJhbENvbnRleHRKU09OID0gZXBoZW1lcmFsQ29udGV4dFRvRXBoZW1lcmFsQ29udGV4dEpTT04oZXBoZW1lcmFsQ29udGV4dCksXG4gICAgICAgIGNvbnRleHRKU09OID0gZXBoZW1lcmFsQ29udGV4dEpTT047IC8vL1xuXG4gIGNvbnRleHQgPSBjb250ZXh0SlNPTjsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5zZXJpYWxpc2UoaW5uZXJGdW5jdGlvbiwganNvbiwgY29udGV4dCkge1xuICBjb25zdCBlcGhlbWVyYWxDb250ZXh0ID0gZXBoZW1lcmFsQ29udGV4dEZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBlcGhlbWVyYWxDb250ZXh0OyAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihqc29uLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgbGl0ZXJhbENvbnRleHQgPSBMaXRlcmFsQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbGl0ZXJhbENvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cbiJdLCJuYW1lcyI6WyJhYmxhdGUiLCJhdHRlbXB0IiwiY2hvb3NlIiwiZGVjbGFyZSIsImRlcml2ZSIsImRlc2NlbmQiLCJlbmNsb3NlIiwiZXZhbHVhdGUiLCJncm91bmQiLCJpbnN0YW50aWF0ZSIsImpvaW4iLCJyZWNvbmNpbGUiLCJzZXJpYWxpc2UiLCJ1bnNlcmlhbGlzZSIsImlubmVyRnVuY3Rpb24iLCJjb250ZXh0cyIsInN5bm9wdGljQ29udGV4dCIsIlN5bm9wdGljQ29udGV4dCIsImZyb21Db250ZXh0cyIsImNvbnRleHQiLCJub21pbmFsQ29udGV4dCIsIk5vbWluYWxDb250ZXh0IiwiZnJvbU5vdGhpbmciLCJsaXRlcmFsQ29udGV4dCIsIkxpdGVyYWxDb250ZXh0IiwiY29udGV4dE5vbWluYWxGaWxlQ29udGV4dCIsIk5vbWluYWxGaWxlQ29udGV4dCIsImdldENvbnRleHQiLCJicmFuY2hpbmdDb250ZXh0IiwiQnJhbmNoaW5nQ29udGV4dCIsImlsbGF0aXZlQ29udGV4dCIsIklsbGF0aXZlQ29udGV4dCIsInRoZXRpY0NvbnRleHQiLCJUaGV0aWNDb250ZXh0IiwiZXBoZW1lcmFsQ29udGV4dCIsIkVwaGVtZXJhbENvbnRleHQiLCJuZXN0ZWRDb250ZXh0IiwiTmVzdGVkQ29udGV4dCIsIm1ldGFMZXZlbEFzc3VtcHRpb25zIiwidW5kZWZpbmVkIiwiYm91bmRlZENvbnRleHQiLCJCb3VuZGVkQ29udGV4dCIsImZyb21NZXRhTGV2ZWxBc3N1bXB0aW9ucyIsInByb2NlZHVyZSIsInRlcm1zIiwiY2FsbCIsImxpbWluYWxDb250ZXh0IiwiTGltaW5hbENvbnRleHQiLCJlcGhlbWVyYWxDb250ZXh0SlNPTiIsImVwaGVtZXJhbENvbnRleHRUb0VwaGVtZXJhbENvbnRleHRKU09OIiwiY29udGV4dEpTT04iLCJqc29uIiwiZXBoZW1lcmFsQ29udGV4dEZyb21KU09OIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFxQ2dCQTtlQUFBQTs7UUFvQ0FDO2VBQUFBOztRQXhCQUM7ZUFBQUE7O1FBZ0JBQztlQUFBQTs7UUFSQUM7ZUFBQUE7O1FBd0JBQztlQUFBQTs7UUFRQUM7ZUFBQUE7O1FBY0FDO2VBQUFBOztRQWhGQUM7ZUFBQUE7O1FBZ0hBQztlQUFBQTs7UUF2SEFDO2VBQUFBOztRQTZGQUM7ZUFBQUE7O1FBUUFDO2VBQUFBOztRQVVBQztlQUFBQTs7OytEQTdIVTsrREFDQTtnRUFDQztnRUFDQTtnRUFDQTtnRUFDQTtpRUFDQztpRUFDQTtrRUFDQztrRUFDQTtpRUFDRTtzQkFFa0Q7Ozs7OztBQUUxRSxTQUFTSCxLQUFLSSxhQUFhLEVBQUUsR0FBR0MsUUFBUTtJQUM3QyxNQUFNQyxrQkFBa0JDLGlCQUFlLENBQUNDLFlBQVksSUFBSUgsV0FDbERJLFVBQVVILGlCQUFrQixHQUFHO0lBRXJDLE9BQU9GLGNBQWNLO0FBQ3ZCO0FBRU8sU0FBU1gsT0FBT00sYUFBYTtJQUNsQyxJQUFJSztJQUVKLE1BQU1DLGlCQUFpQkMsZ0JBQWMsQ0FBQ0MsV0FBVztJQUVqREgsVUFBVUMsZ0JBQWdCLEdBQUc7SUFFN0IsTUFBTUcsaUJBQWlCQyxnQkFBYyxDQUFDRixXQUFXLENBQUNIO0lBRWxEQSxV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