occam-verify-cli 0.0.453 → 0.0.455

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 (40) hide show
  1. package/bin/utilities/fileSystem.js +15 -2
  2. package/lib/assertion.js +8 -1
  3. package/lib/context/file.js +42 -6
  4. package/lib/context/proof.js +25 -4
  5. package/lib/context/release/directory.js +16 -5
  6. package/lib/context/release/file.js +25 -11
  7. package/lib/kinds.js +5 -1
  8. package/lib/theorem.js +146 -0
  9. package/lib/variable.js +8 -1
  10. package/lib/verify/declaration/topLevel.js +7 -3
  11. package/lib/verify/derivation.js +112 -0
  12. package/lib/verify/equality.js +3 -16
  13. package/lib/verify/metaDerivation.js +47 -39
  14. package/lib/verify/proof.js +83 -0
  15. package/lib/verify/statement/unqualified.js +65 -4
  16. package/lib/verify/statement.js +2 -2
  17. package/lib/verify/term.js +12 -12
  18. package/lib/verify/termAsConstructor.js +2 -2
  19. package/lib/verify/theorem.js +57 -0
  20. package/package.json +3 -3
  21. package/src/assertion.js +8 -1
  22. package/src/context/file.js +45 -5
  23. package/src/context/proof.js +8 -4
  24. package/src/context/release/directory.js +17 -4
  25. package/src/context/release/file.js +29 -12
  26. package/src/kinds.js +1 -0
  27. package/src/theorem.js +130 -0
  28. package/src/variable.js +6 -0
  29. package/src/verify/assertion/type.js +25 -12
  30. package/src/verify/declaration/topLevel.js +7 -0
  31. package/src/verify/derivation.js +156 -0
  32. package/src/verify/equality.js +3 -22
  33. package/src/verify/metaDerivation.js +57 -45
  34. package/src/verify/proof.js +123 -0
  35. package/src/verify/statement/unqualified.js +69 -2
  36. package/src/verify/statement.js +2 -1
  37. package/src/verify/term.js +16 -17
  38. package/src/verify/termAsConstructor.js +1 -2
  39. package/src/verify/theorem.js +77 -0
  40. package/lib/verify/assertion/type.js +0 -104
@@ -20,28 +20,15 @@ var firstTermNodeQuery = (0, _query.nodeQuery)("/equality/term[0]"), secondTermN
20
20
  function verifyEquality(equalityNode, proofContext) {
21
21
  var equalityVerified = false;
22
22
  proofContext.begin(equalityNode);
23
- var types = [], values = [], context = proofContext, firstTermNode = firstTermNodeQuery(equalityNode), secondTermNode = secondTermNodeQuery(equalityNode), firstTermVerified = (0, _term.default)(firstTermNode, types, values, context), secondTermVerified = (0, _term.default)(secondTermNode, types, values, context);
23
+ var types = [], context = proofContext, firstTermNode = firstTermNodeQuery(equalityNode), secondTermNode = secondTermNodeQuery(equalityNode), firstTermVerified = (0, _term.default)(firstTermNode, types, context), secondTermVerified = (0, _term.default)(secondTermNode, types, context);
24
24
  if (firstTermVerified && secondTermVerified) {
25
25
  var firstType = (0, _array.first)(types), secondType = (0, _array.second)(types), firstTypeEqualToSubTypeOfOrSuperTypeOfSecondType = firstType.isEqualToSubTypeOfOrSuperTypeOf(secondType);
26
26
  if (firstTypeEqualToSubTypeOfOrSuperTypeOfSecondType) {
27
- var derived = proofContext.isDerived();
28
- if (derived) {
29
- var termsEqual = equateTerms(firstTermNode, secondTermNode, proofContext);
30
- if (termsEqual) {
31
- equalityVerified = true;
32
- }
33
- } else {
34
- equalityVerified = true;
35
- }
27
+ equalityVerified = true;
36
28
  }
37
29
  }
38
30
  equalityVerified ? proofContext.complete(equalityNode) : proofContext.halt(equalityNode);
39
31
  return equalityVerified;
40
32
  }
41
- function equateTerms(firstTermNode, secondTermNode, proofContext) {
42
- var termsEqual = true; ///
43
- debugger;
44
- return termsEqual;
45
- }
46
33
 
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvZXF1YWxpdHkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB2ZXJpZnlUZXJtIGZyb20gXCIuLi92ZXJpZnkvdGVybVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBmaXJzdCwgc2Vjb25kIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuXG5jb25zdCBmaXJzdFRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZXF1YWxpdHkvdGVybVswXVwiKSxcbiAgICAgIHNlY29uZFRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZXF1YWxpdHkvdGVybVsxXVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5RXF1YWxpdHkoZXF1YWxpdHlOb2RlLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IGVxdWFsaXR5VmVyaWZpZWQgPSBmYWxzZTtcblxuICBwcm9vZkNvbnRleHQuYmVnaW4oZXF1YWxpdHlOb2RlKTtcblxuICBjb25zdCB0eXBlcyA9IFtdLFxuICAgICAgICB2YWx1ZXMgPSBbXSxcbiAgICAgICAgY29udGV4dCA9IHByb29mQ29udGV4dCxcbiAgICAgICAgZmlyc3RUZXJtTm9kZSA9IGZpcnN0VGVybU5vZGVRdWVyeShlcXVhbGl0eU5vZGUpLFxuICAgICAgICBzZWNvbmRUZXJtTm9kZSA9IHNlY29uZFRlcm1Ob2RlUXVlcnkoZXF1YWxpdHlOb2RlKSxcbiAgICAgICAgZmlyc3RUZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKGZpcnN0VGVybU5vZGUsIHR5cGVzLCB2YWx1ZXMsIGNvbnRleHQpLFxuICAgICAgICBzZWNvbmRUZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHNlY29uZFRlcm1Ob2RlLCB0eXBlcywgdmFsdWVzLCBjb250ZXh0KTtcblxuICBpZiAoZmlyc3RUZXJtVmVyaWZpZWQgJiYgc2Vjb25kVGVybVZlcmlmaWVkKSB7XG4gICAgY29uc3QgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuICAgICAgICAgIHNlY29uZFR5cGUgPSBzZWNvbmQodHlwZXMpLFxuICAgICAgICAgIGZpcnN0VHlwZUVxdWFsVG9TdWJUeXBlT2ZPclN1cGVyVHlwZU9mU2Vjb25kVHlwZSA9IGZpcnN0VHlwZS5pc0VxdWFsVG9TdWJUeXBlT2ZPclN1cGVyVHlwZU9mKHNlY29uZFR5cGUpO1xuXG4gICAgaWYgKGZpcnN0VHlwZUVxdWFsVG9TdWJUeXBlT2ZPclN1cGVyVHlwZU9mU2Vjb25kVHlwZSkge1xuICAgICAgY29uc3QgZGVyaXZlZCA9IHByb29mQ29udGV4dC5pc0Rlcml2ZWQoKTtcblxuICAgICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgICAgY29uc3QgdGVybXNFcXVhbCA9IGVxdWF0ZVRlcm1zKGZpcnN0VGVybU5vZGUsIHNlY29uZFRlcm1Ob2RlLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgIGlmICh0ZXJtc0VxdWFsKSB7XG4gICAgICAgICAgZXF1YWxpdHlWZXJpZmllZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVxdWFsaXR5VmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGVxdWFsaXR5VmVyaWZpZWQgP1xuICAgIHByb29mQ29udGV4dC5jb21wbGV0ZShlcXVhbGl0eU5vZGUpIDpcbiAgICAgIHByb29mQ29udGV4dC5oYWx0KGVxdWFsaXR5Tm9kZSk7XG5cbiAgcmV0dXJuIGVxdWFsaXR5VmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIGVxdWF0ZVRlcm1zKGZpcnN0VGVybU5vZGUsIHNlY29uZFRlcm1Ob2RlLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHRlcm1zRXF1YWwgPSB0cnVlOyAgLy8vXG5cbiAgZGVidWdnZXJcblxuICByZXR1cm4gdGVybXNFcXVhbDtcbn0iXSwibmFtZXMiOlsidmVyaWZ5RXF1YWxpdHkiLCJmaXJzdFRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJzZWNvbmRUZXJtTm9kZVF1ZXJ5IiwiZXF1YWxpdHlOb2RlIiwicHJvb2ZDb250ZXh0IiwiZXF1YWxpdHlWZXJpZmllZCIsImJlZ2luIiwidHlwZXMiLCJ2YWx1ZXMiLCJjb250ZXh0IiwiZmlyc3RUZXJtTm9kZSIsInNlY29uZFRlcm1Ob2RlIiwiZmlyc3RUZXJtVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtIiwic2Vjb25kVGVybVZlcmlmaWVkIiwiZmlyc3RUeXBlIiwiZmlyc3QiLCJzZWNvbmRUeXBlIiwic2Vjb25kIiwiZmlyc3RUeXBlRXF1YWxUb1N1YlR5cGVPZk9yU3VwZXJUeXBlT2ZTZWNvbmRUeXBlIiwiaXNFcXVhbFRvU3ViVHlwZU9mT3JTdXBlclR5cGVPZiIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJ0ZXJtc0VxdWFsIiwiZXF1YXRlVGVybXMiLCJjb21wbGV0ZSIsImhhbHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVVBOzs7ZUFBd0JBOzs7eURBUkQ7cUJBRUc7cUJBQ0k7Ozs7OztBQUU5QixJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUMsc0JBQy9CQyxzQkFBc0JELElBQUFBLGdCQUFTLEVBQUM7QUFFdkIsU0FBU0YsZUFBZUksWUFBWSxFQUFFQyxZQUFZLEVBQUU7SUFDakUsSUFBSUMsbUJBQW1CLEtBQUs7SUFFNUJELGFBQWFFLEtBQUssQ0FBQ0g7SUFFbkIsSUFBTUksUUFBUSxFQUFFLEVBQ1ZDLFNBQVMsRUFBRSxFQUNYQyxVQUFVTCxjQUNWTSxnQkFBZ0JWLG1CQUFtQkcsZUFDbkNRLGlCQUFpQlQsb0JBQW9CQyxlQUNyQ1Msb0JBQW9CQyxJQUFBQSxhQUFVLEVBQUNILGVBQWVILE9BQU9DLFFBQVFDLFVBQzdESyxxQkFBcUJELElBQUFBLGFBQVUsRUFBQ0YsZ0JBQWdCSixPQUFPQyxRQUFRQztJQUVyRSxJQUFJRyxxQkFBcUJFLG9CQUFvQjtRQUMzQyxJQUFNQyxZQUFZQyxJQUFBQSxZQUFLLEVBQUNULFFBQ2xCVSxhQUFhQyxJQUFBQSxhQUFNLEVBQUNYLFFBQ3BCWSxtREFBbURKLFVBQVVLLCtCQUErQixDQUFDSDtRQUVuRyxJQUFJRSxrREFBa0Q7WUFDcEQsSUFBTUUsVUFBVWpCLGFBQWFrQixTQUFTO1lBRXRDLElBQUlELFNBQVM7Z0JBQ1gsSUFBTUUsYUFBYUMsWUFBWWQsZUFBZUMsZ0JBQWdCUDtnQkFFOUQsSUFBSW1CLFlBQVk7b0JBQ2RsQixtQkFBbUIsSUFBSTtnQkFDekIsQ0FBQztZQUNILE9BQU87Z0JBQ0xBLG1CQUFtQixJQUFJO1lBQ3pCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEQSxtQkFDRUQsYUFBYXFCLFFBQVEsQ0FBQ3RCLGdCQUNwQkMsYUFBYXNCLElBQUksQ0FBQ3ZCLGFBQWE7SUFFbkMsT0FBT0U7QUFDVDtBQUVBLFNBQVNtQixZQUFZZCxhQUFhLEVBQUVDLGNBQWMsRUFBRVAsWUFBWSxFQUFFO0lBQ2hFLElBQUltQixhQUFhLElBQUksRUFBRyxHQUFHO0lBRTNCLFFBQVE7SUFFUixPQUFPQTtBQUNUIn0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvZXF1YWxpdHkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB2ZXJpZnlUZXJtIGZyb20gXCIuLi92ZXJpZnkvdGVybVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBmaXJzdCwgc2Vjb25kIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuXG5jb25zdCBmaXJzdFRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZXF1YWxpdHkvdGVybVswXVwiKSxcbiAgICAgIHNlY29uZFRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZXF1YWxpdHkvdGVybVsxXVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5RXF1YWxpdHkoZXF1YWxpdHlOb2RlLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IGVxdWFsaXR5VmVyaWZpZWQgPSBmYWxzZTtcblxuICBwcm9vZkNvbnRleHQuYmVnaW4oZXF1YWxpdHlOb2RlKTtcblxuICBjb25zdCB0eXBlcyA9IFtdLFxuICAgICAgICBjb250ZXh0ID0gcHJvb2ZDb250ZXh0LFxuICAgICAgICBmaXJzdFRlcm1Ob2RlID0gZmlyc3RUZXJtTm9kZVF1ZXJ5KGVxdWFsaXR5Tm9kZSksXG4gICAgICAgIHNlY29uZFRlcm1Ob2RlID0gc2Vjb25kVGVybU5vZGVRdWVyeShlcXVhbGl0eU5vZGUpLFxuICAgICAgICBmaXJzdFRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm0oZmlyc3RUZXJtTm9kZSwgdHlwZXMsIGNvbnRleHQpLFxuICAgICAgICBzZWNvbmRUZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHNlY29uZFRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgaWYgKGZpcnN0VGVybVZlcmlmaWVkICYmIHNlY29uZFRlcm1WZXJpZmllZCkge1xuICAgIGNvbnN0IGZpcnN0VHlwZSA9IGZpcnN0KHR5cGVzKSxcbiAgICAgICAgICBzZWNvbmRUeXBlID0gc2Vjb25kKHR5cGVzKSxcbiAgICAgICAgICBmaXJzdFR5cGVFcXVhbFRvU3ViVHlwZU9mT3JTdXBlclR5cGVPZlNlY29uZFR5cGUgPSBmaXJzdFR5cGUuaXNFcXVhbFRvU3ViVHlwZU9mT3JTdXBlclR5cGVPZihzZWNvbmRUeXBlKTtcblxuICAgIGlmIChmaXJzdFR5cGVFcXVhbFRvU3ViVHlwZU9mT3JTdXBlclR5cGVPZlNlY29uZFR5cGUpIHtcbiAgICAgIGVxdWFsaXR5VmVyaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGVxdWFsaXR5VmVyaWZpZWQgP1xuICAgIHByb29mQ29udGV4dC5jb21wbGV0ZShlcXVhbGl0eU5vZGUpIDpcbiAgICAgIHByb29mQ29udGV4dC5oYWx0KGVxdWFsaXR5Tm9kZSk7XG5cbiAgcmV0dXJuIGVxdWFsaXR5VmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5RXF1YWxpdHkiLCJmaXJzdFRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJzZWNvbmRUZXJtTm9kZVF1ZXJ5IiwiZXF1YWxpdHlOb2RlIiwicHJvb2ZDb250ZXh0IiwiZXF1YWxpdHlWZXJpZmllZCIsImJlZ2luIiwidHlwZXMiLCJjb250ZXh0IiwiZmlyc3RUZXJtTm9kZSIsInNlY29uZFRlcm1Ob2RlIiwiZmlyc3RUZXJtVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtIiwic2Vjb25kVGVybVZlcmlmaWVkIiwiZmlyc3RUeXBlIiwiZmlyc3QiLCJzZWNvbmRUeXBlIiwic2Vjb25kIiwiZmlyc3RUeXBlRXF1YWxUb1N1YlR5cGVPZk9yU3VwZXJUeXBlT2ZTZWNvbmRUeXBlIiwiaXNFcXVhbFRvU3ViVHlwZU9mT3JTdXBlclR5cGVPZiIsImNvbXBsZXRlIiwiaGFsdCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBVUE7OztlQUF3QkE7Ozt5REFSRDtxQkFFRztxQkFDSTs7Ozs7O0FBRTlCLElBQU1DLHFCQUFxQkMsSUFBQUEsZ0JBQVMsRUFBQyxzQkFDL0JDLHNCQUFzQkQsSUFBQUEsZ0JBQVMsRUFBQztBQUV2QixTQUFTRixlQUFlSSxZQUFZLEVBQUVDLFlBQVksRUFBRTtJQUNqRSxJQUFJQyxtQkFBbUIsS0FBSztJQUU1QkQsYUFBYUUsS0FBSyxDQUFDSDtJQUVuQixJQUFNSSxRQUFRLEVBQUUsRUFDVkMsVUFBVUosY0FDVkssZ0JBQWdCVCxtQkFBbUJHLGVBQ25DTyxpQkFBaUJSLG9CQUFvQkMsZUFDckNRLG9CQUFvQkMsSUFBQUEsYUFBVSxFQUFDSCxlQUFlRixPQUFPQyxVQUNyREsscUJBQXFCRCxJQUFBQSxhQUFVLEVBQUNGLGdCQUFnQkgsT0FBT0M7SUFFN0QsSUFBSUcscUJBQXFCRSxvQkFBb0I7UUFDM0MsSUFBTUMsWUFBWUMsSUFBQUEsWUFBSyxFQUFDUixRQUNsQlMsYUFBYUMsSUFBQUEsYUFBTSxFQUFDVixRQUNwQlcsbURBQW1ESixVQUFVSywrQkFBK0IsQ0FBQ0g7UUFFbkcsSUFBSUUsa0RBQWtEO1lBQ3BEYixtQkFBbUIsSUFBSTtRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVEQSxtQkFDRUQsYUFBYWdCLFFBQVEsQ0FBQ2pCLGdCQUNwQkMsYUFBYWlCLElBQUksQ0FBQ2xCLGFBQWE7SUFFbkMsT0FBT0U7QUFDVCJ9
@@ -22,51 +22,59 @@ function _interopRequireDefault(obj) {
22
22
  }
23
23
  var metaDerivationNodeQuery = (0, _query.nodeQuery)("/metaSubproof/metaDerivation!"), metaDerivationChildNodesQuery = (0, _query.nodesQuery)("/metaDerivation/*"), qualifiedMetastatementNodeQuery = (0, _query.nodeQuery)("/qualifiedMetastatement"), unqualifiedMetastatementNodeQuery = (0, _query.nodeQuery)("/unqualifiedMetastatement!"), qualifiedOrUnqualifiedMetastatementNodesQuery = (0, _query.nodesQuery)("/metaSubproof/qualifiedMetastatement|unqualifiedMetastatement");
24
24
  function verifyMetaDerivation(metaDerivationNode, metaproofContext) {
25
- var metaDerivationVerified;
25
+ var metaDerivationVerified, derived;
26
26
  metaproofContext.begin(metaDerivationNode);
27
- var derived = true;
27
+ derived = true;
28
28
  metaproofContext.setDerived(derived);
29
- var metaDerivationChildNodes = metaDerivationChildNodesQuery(metaDerivationNode), metaDerivationChildNodesVerified = metaDerivationChildNodes.every(function(metaDerivationChildNode) {
30
- var metaDerivationChildNodeVerified;
31
- var ruleName = metaDerivationChildNode.getRuleName();
32
- switch(ruleName){
33
- case _ruleNames.META_SUBPROOF_RULE_NAME:
34
- {
35
- var metaSubproofNode = metaDerivationChildNode, metaSubproofVerified = verifyMetaSubproof(metaSubproofNode, metaproofContext);
36
- if (metaSubproofVerified) {
37
- var metaAssertion = _metaAssertion.default.fromMetaSubproofNode(metaSubproofNode);
38
- metaproofContext.addMetaAssertion(metaAssertion);
39
- metaDerivationChildNodeVerified = true;
40
- }
41
- break;
42
- }
43
- case _ruleNames.QUALIFIED_METASTATEMENT_RULE_NAME:
44
- {
45
- var qualifiedMetastatementNode = metaDerivationChildNode, qualifiedMetastatementVerified = (0, _qualified.default)(qualifiedMetastatementNode, metaproofContext);
46
- if (qualifiedMetastatementVerified) {
47
- var metaAssertion1 = _metaAssertion.default.fromQualifiedMetastatementNode(qualifiedMetastatementNode);
48
- metaproofContext.addMetaAssertion(metaAssertion1);
49
- metaDerivationChildNodeVerified = qualifiedMetastatementVerified; ///
50
- }
51
- break;
52
- }
53
- case _ruleNames.UNQUALIFIED_METASTATEMENT_RULE_NAME:
54
- {
55
- var unqualifiedMetastatementNode = metaDerivationChildNode, unqualifiedMetastatementVerified = (0, _unqualified.default)(unqualifiedMetastatementNode, metaproofContext);
56
- if (unqualifiedMetastatementVerified) {
57
- var metaAssertion2 = _metaAssertion.default.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode);
58
- metaproofContext.addMetaAssertion(metaAssertion2);
59
- metaDerivationChildNodeVerified = true;
60
- }
61
- break;
62
- }
29
+ var metaDerivationChildNodes = metaDerivationChildNodesQuery(metaDerivationNode);
30
+ metaDerivationVerified = metaDerivationChildNodes.every(function(metaDerivationChildNode) {
31
+ var metaDerivationChildVerified = verifyMetaDerivationChild(metaDerivationChildNode, metaproofContext);
32
+ if (metaDerivationChildVerified) {
33
+ return true;
63
34
  }
64
- return metaDerivationChildNodeVerified;
65
35
  });
66
- metaDerivationVerified = metaDerivationChildNodesVerified; ///
36
+ derived = false;
37
+ metaproofContext.setDerived(derived);
67
38
  metaDerivationVerified ? metaproofContext.complete(metaDerivationNode) : metaproofContext.halt(metaDerivationNode);
68
39
  return metaDerivationVerified;
69
40
  }
41
+ function verifyMetaDerivationChild(metaDerivationChildNode, metaproofContext) {
42
+ var metaDerivationChildVerified;
43
+ var ruleName = metaDerivationChildNode.getRuleName();
44
+ switch(ruleName){
45
+ case _ruleNames.META_SUBPROOF_RULE_NAME:
46
+ {
47
+ var metaSubproofNode = metaDerivationChildNode, metaSubproofVerified = verifyMetaSubproof(metaSubproofNode, metaproofContext);
48
+ if (metaSubproofVerified) {
49
+ var metaAssertion = _metaAssertion.default.fromMetaSubproofNode(metaSubproofNode);
50
+ metaproofContext.addMetaAssertion(metaAssertion);
51
+ metaDerivationChildVerified = true;
52
+ }
53
+ break;
54
+ }
55
+ case _ruleNames.QUALIFIED_METASTATEMENT_RULE_NAME:
56
+ {
57
+ var qualifiedMetastatementNode = metaDerivationChildNode, qualifiedMetastatementVerified = (0, _qualified.default)(qualifiedMetastatementNode, metaproofContext);
58
+ if (qualifiedMetastatementVerified) {
59
+ var metaAssertion1 = _metaAssertion.default.fromQualifiedMetastatementNode(qualifiedMetastatementNode);
60
+ metaproofContext.addMetaAssertion(metaAssertion1);
61
+ metaDerivationChildVerified = qualifiedMetastatementVerified; ///
62
+ }
63
+ break;
64
+ }
65
+ case _ruleNames.UNQUALIFIED_METASTATEMENT_RULE_NAME:
66
+ {
67
+ var unqualifiedMetastatementNode = metaDerivationChildNode, unqualifiedMetastatementVerified = (0, _unqualified.default)(unqualifiedMetastatementNode, metaproofContext);
68
+ if (unqualifiedMetastatementVerified) {
69
+ var metaAssertion2 = _metaAssertion.default.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode);
70
+ metaproofContext.addMetaAssertion(metaAssertion2);
71
+ metaDerivationChildVerified = true;
72
+ }
73
+ break;
74
+ }
75
+ }
76
+ return metaDerivationChildVerified;
77
+ }
70
78
  function verifyMetaSubproof(metaSubproofNode, metaproofContext) {
71
79
  var metaSubproofVerified = false;
72
80
  metaproofContext = _metaproof.default.fromMetaproofContext(metaproofContext); ///
@@ -101,4 +109,4 @@ function verifyMetaSubproof(metaSubproofNode, metaproofContext) {
101
109
  return metaSubproofVerified;
102
110
  }
103
111
 
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YURlcml2YXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBNZXRhQXNzZXJ0aW9uIGZyb20gXCIuLi9tZXRhQXNzZXJ0aW9uXCI7XG5pbXBvcnQgTWV0YXByb29mQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9tZXRhcHJvb2ZcIjtcbmltcG9ydCB2ZXJpZnlRdWFsaWZpZWRNZXRhc3RhdGVtZW50IGZyb20gXCIuLi92ZXJpZnkvbWV0YXN0YXRlbWVudC9xdWFsaWZpZWRcIjtcbmltcG9ydCB2ZXJpZnlVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQgZnJvbSBcIi4uL3ZlcmlmeS9tZXRhc3RhdGVtZW50L3VucXVhbGlmaWVkXCI7XG5cbmltcG9ydCB7IGZyb250LCBsYXN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgTUVUQV9TVUJQUk9PRl9SVUxFX05BTUUsIFFVQUxJRklFRF9NRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSwgVU5RVUFMSUZJRURfTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5cbmNvbnN0IG1ldGFEZXJpdmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGFTdWJwcm9vZi9tZXRhRGVyaXZhdGlvbiFcIiksXG4gICAgICBtZXRhRGVyaXZhdGlvbkNoaWxkTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvbWV0YURlcml2YXRpb24vKlwiKSxcbiAgICAgIHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkTWV0YXN0YXRlbWVudFwiKSxcbiAgICAgIHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi91bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQhXCIpLFxuICAgICAgcXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9tZXRhU3VicHJvb2YvcXVhbGlmaWVkTWV0YXN0YXRlbWVudHx1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRcIilcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5TWV0YURlcml2YXRpb24obWV0YURlcml2YXRpb25Ob2RlLCBtZXRhcHJvb2ZDb250ZXh0KSB7XG4gIGxldCBtZXRhRGVyaXZhdGlvblZlcmlmaWVkO1xuXG4gIG1ldGFwcm9vZkNvbnRleHQuYmVnaW4obWV0YURlcml2YXRpb25Ob2RlKTtcblxuICBjb25zdCBkZXJpdmVkID0gdHJ1ZTtcblxuICBtZXRhcHJvb2ZDb250ZXh0LnNldERlcml2ZWQoZGVyaXZlZCk7XG5cbiAgY29uc3QgbWV0YURlcml2YXRpb25DaGlsZE5vZGVzID0gbWV0YURlcml2YXRpb25DaGlsZE5vZGVzUXVlcnkobWV0YURlcml2YXRpb25Ob2RlKSxcbiAgICAgICAgbWV0YURlcml2YXRpb25DaGlsZE5vZGVzVmVyaWZpZWQgPSBtZXRhRGVyaXZhdGlvbkNoaWxkTm9kZXMuZXZlcnkoKG1ldGFEZXJpdmF0aW9uQ2hpbGROb2RlKSA9PiB7XG4gICAgICAgICAgbGV0IG1ldGFEZXJpdmF0aW9uQ2hpbGROb2RlVmVyaWZpZWQ7XG5cbiAgICAgICAgICBjb25zdCBydWxlTmFtZSA9IG1ldGFEZXJpdmF0aW9uQ2hpbGROb2RlLmdldFJ1bGVOYW1lKCk7XG5cbiAgICAgICAgICBzd2l0Y2ggKHJ1bGVOYW1lKSB7XG4gICAgICAgICAgICBjYXNlIE1FVEFfU1VCUFJPT0ZfUlVMRV9OQU1FOiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1ldGFTdWJwcm9vZk5vZGUgPSBtZXRhRGVyaXZhdGlvbkNoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgICBtZXRhU3VicHJvb2ZWZXJpZmllZCA9IHZlcmlmeU1ldGFTdWJwcm9vZihtZXRhU3VicHJvb2ZOb2RlLCBtZXRhcHJvb2ZDb250ZXh0KTtcblxuICAgICAgICAgICAgICBpZiAobWV0YVN1YnByb29mVmVyaWZpZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXRhQXNzZXJ0aW9uID0gTWV0YUFzc2VydGlvbi5mcm9tTWV0YVN1YnByb29mTm9kZShtZXRhU3VicHJvb2ZOb2RlKTtcblxuICAgICAgICAgICAgICAgIG1ldGFwcm9vZkNvbnRleHQuYWRkTWV0YUFzc2VydGlvbihtZXRhQXNzZXJ0aW9uKTtcblxuICAgICAgICAgICAgICAgIG1ldGFEZXJpdmF0aW9uQ2hpbGROb2RlVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICAgICAgICAgIGNvbnN0IHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YURlcml2YXRpb25DaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgICAgICAgcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5UXVhbGlmaWVkTWV0YXN0YXRlbWVudChxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXByb29mQ29udGV4dCk7XG5cbiAgICAgICAgICAgICAgaWYgKHF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1ldGFBc3NlcnRpb24gPSBNZXRhQXNzZXJ0aW9uLmZyb21RdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZShxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgICAgICAgICAgICAgICBtZXRhcHJvb2ZDb250ZXh0LmFkZE1ldGFBc3NlcnRpb24obWV0YUFzc2VydGlvbik7XG5cbiAgICAgICAgICAgICAgICBtZXRhRGVyaXZhdGlvbkNoaWxkTm9kZVZlcmlmaWVkID0gcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkOyAvLy9cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFVOUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICAgICAgICAgIGNvbnN0IHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhRGVyaXZhdGlvbkNoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgICB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVVucXVhbGlmaWVkTWV0YXN0YXRlbWVudCh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhcHJvb2ZDb250ZXh0KTtcblxuICAgICAgICAgICAgICBpZiAodW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXRhQXNzZXJ0aW9uID0gTWV0YUFzc2VydGlvbi5mcm9tVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICAgICAgICAgIG1ldGFwcm9vZkNvbnRleHQuYWRkTWV0YUFzc2VydGlvbihtZXRhQXNzZXJ0aW9uKTtcblxuICAgICAgICAgICAgICAgIG1ldGFEZXJpdmF0aW9uQ2hpbGROb2RlVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG1ldGFEZXJpdmF0aW9uQ2hpbGROb2RlVmVyaWZpZWQ7XG4gICAgICAgIH0pO1xuXG4gIG1ldGFEZXJpdmF0aW9uVmVyaWZpZWQgPSBtZXRhRGVyaXZhdGlvbkNoaWxkTm9kZXNWZXJpZmllZDsgIC8vL1xuXG4gIG1ldGFEZXJpdmF0aW9uVmVyaWZpZWQgP1xuICAgIG1ldGFwcm9vZkNvbnRleHQuY29tcGxldGUobWV0YURlcml2YXRpb25Ob2RlKSA6XG4gICAgICBtZXRhcHJvb2ZDb250ZXh0LmhhbHQobWV0YURlcml2YXRpb25Ob2RlKTtcblxuICByZXR1cm4gbWV0YURlcml2YXRpb25WZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5TWV0YVN1YnByb29mKG1ldGFTdWJwcm9vZk5vZGUsIG1ldGFwcm9vZkNvbnRleHQpIHtcbiAgbGV0IG1ldGFTdWJwcm9vZlZlcmlmaWVkID0gZmFsc2U7XG5cbiAgbWV0YXByb29mQ29udGV4dCA9IE1ldGFwcm9vZkNvbnRleHQuZnJvbU1ldGFwcm9vZkNvbnRleHQobWV0YXByb29mQ29udGV4dCk7IC8vL1xuXG4gIGNvbnN0IHF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZXMgPSBxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVzUXVlcnkobWV0YVN1YnByb29mTm9kZSksXG4gICAgICAgIGZyb250UXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlcyA9IGZyb250KHF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZXMpLFxuICAgICAgICB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlcyA9IGZyb250UXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlcywgIC8vL1xuICAgICAgICB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRzVmVyaWZpZWQgPSB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2Rlcy5ldmVyeSgodW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5VW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50KHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUsIG1ldGFwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gIGlmICh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRzVmVyaWZpZWQpIHtcbiAgICB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2Rlcy5mb3JFYWNoKCh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSA9PiB7XG4gICAgICBjb25zdCBtZXRhQXNzZXJ0aW9uID0gTWV0YUFzc2VydGlvbi5mcm9tVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgbWV0YXByb29mQ29udGV4dC5hZGRNZXRhQXNzZXJ0aW9uKG1ldGFBc3NlcnRpb24pO1xuICAgIH0pO1xuXG4gICAgbGV0IG1ldGFEZXJpdmF0aW9uVmVyaWZpZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgbWV0YURlcml2YXRpb25Ob2RlID0gbWV0YURlcml2YXRpb25Ob2RlUXVlcnkobWV0YVN1YnByb29mTm9kZSk7XG5cbiAgICBpZiAobWV0YURlcml2YXRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICBtZXRhRGVyaXZhdGlvblZlcmlmaWVkID0gdmVyaWZ5TWV0YURlcml2YXRpb24obWV0YURlcml2YXRpb25Ob2RlLCBtZXRhcHJvb2ZDb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAobWV0YURlcml2YXRpb25WZXJpZmllZCkge1xuICAgICAgY29uc3QgbGFzdFF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSA9IGxhc3QocXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlcyksXG4gICAgICAgICAgICBxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUgPSBsYXN0UXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgICBxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSA9IHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICAgIHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUgPSB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgaWYgKHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVF1YWxpZmllZE1ldGFzdGF0ZW1lbnQocXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUsIG1ldGFwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgIG1ldGFTdWJwcm9vZlZlcmlmaWVkID0gcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkOyAgLy8vXG4gICAgICB9XG5cbiAgICAgIGlmICh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5VW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50KHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUsIG1ldGFwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgIG1ldGFTdWJwcm9vZlZlcmlmaWVkID0gdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQ7ICAvLy9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWV0YVN1YnByb29mVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5TWV0YURlcml2YXRpb24iLCJtZXRhRGVyaXZhdGlvbk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsIm1ldGFEZXJpdmF0aW9uQ2hpbGROb2Rlc1F1ZXJ5Iiwibm9kZXNRdWVyeSIsInF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlUXVlcnkiLCJ1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlUXVlcnkiLCJxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVzUXVlcnkiLCJtZXRhRGVyaXZhdGlvbk5vZGUiLCJtZXRhcHJvb2ZDb250ZXh0IiwibWV0YURlcml2YXRpb25WZXJpZmllZCIsImJlZ2luIiwiZGVyaXZlZCIsInNldERlcml2ZWQiLCJtZXRhRGVyaXZhdGlvbkNoaWxkTm9kZXMiLCJtZXRhRGVyaXZhdGlvbkNoaWxkTm9kZXNWZXJpZmllZCIsImV2ZXJ5IiwibWV0YURlcml2YXRpb25DaGlsZE5vZGUiLCJtZXRhRGVyaXZhdGlvbkNoaWxkTm9kZVZlcmlmaWVkIiwicnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsIk1FVEFfU1VCUFJPT0ZfUlVMRV9OQU1FIiwibWV0YVN1YnByb29mTm9kZSIsIm1ldGFTdWJwcm9vZlZlcmlmaWVkIiwidmVyaWZ5TWV0YVN1YnByb29mIiwibWV0YUFzc2VydGlvbiIsIk1ldGFBc3NlcnRpb24iLCJmcm9tTWV0YVN1YnByb29mTm9kZSIsImFkZE1ldGFBc3NlcnRpb24iLCJRVUFMSUZJRURfTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUiLCJxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsInF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVF1YWxpZmllZE1ldGFzdGF0ZW1lbnQiLCJmcm9tUXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUiLCJVTlFVQUxJRklFRF9NRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUiLCJ1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVVucXVhbGlmaWVkTWV0YXN0YXRlbWVudCIsImZyb21VbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlIiwiY29tcGxldGUiLCJoYWx0IiwiTWV0YXByb29mQ29udGV4dCIsImZyb21NZXRhcHJvb2ZDb250ZXh0IiwicXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlcyIsImZyb250UXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlcyIsImZyb250IiwidW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZXMiLCJ1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRzVmVyaWZpZWQiLCJmb3JFYWNoIiwibGFzdFF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsImxhc3QiLCJxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWlCQTs7O2VBQXdCQTs7O2tFQWZFOzhEQUNHOzhEQUNZO2dFQUNFO3FCQUVmO3FCQUNVO3lCQUMwRTs7Ozs7O0FBRWhILElBQU1DLDBCQUEwQkMsSUFBQUEsZ0JBQVMsRUFBQyxrQ0FDcENDLGdDQUFnQ0MsSUFBQUEsaUJBQVUsRUFBQyxzQkFDM0NDLGtDQUFrQ0gsSUFBQUEsZ0JBQVMsRUFBQyw0QkFDNUNJLG9DQUFvQ0osSUFBQUEsZ0JBQVMsRUFBQywrQkFDOUNLLGdEQUFnREgsSUFBQUEsaUJBQVUsRUFBQztBQUVsRCxTQUFTSixxQkFBcUJRLGtCQUFrQixFQUFFQyxnQkFBZ0IsRUFBRTtJQUNqRixJQUFJQztJQUVKRCxpQkFBaUJFLEtBQUssQ0FBQ0g7SUFFdkIsSUFBTUksVUFBVSxJQUFJO0lBRXBCSCxpQkFBaUJJLFVBQVUsQ0FBQ0Q7SUFFNUIsSUFBTUUsMkJBQTJCWCw4QkFBOEJLLHFCQUN6RE8sbUNBQW1DRCx5QkFBeUJFLEtBQUssQ0FBQyxTQUFDQyx5QkFBNEI7UUFDN0YsSUFBSUM7UUFFSixJQUFNQyxXQUFXRix3QkFBd0JHLFdBQVc7UUFF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
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YURlcml2YXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBNZXRhQXNzZXJ0aW9uIGZyb20gXCIuLi9tZXRhQXNzZXJ0aW9uXCI7XG5pbXBvcnQgTWV0YXByb29mQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9tZXRhcHJvb2ZcIjtcbmltcG9ydCB2ZXJpZnlRdWFsaWZpZWRNZXRhc3RhdGVtZW50IGZyb20gXCIuLi92ZXJpZnkvbWV0YXN0YXRlbWVudC9xdWFsaWZpZWRcIjtcbmltcG9ydCB2ZXJpZnlVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQgZnJvbSBcIi4uL3ZlcmlmeS9tZXRhc3RhdGVtZW50L3VucXVhbGlmaWVkXCI7XG5cbmltcG9ydCB7IGZyb250LCBsYXN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgTUVUQV9TVUJQUk9PRl9SVUxFX05BTUUsIFFVQUxJRklFRF9NRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSwgVU5RVUFMSUZJRURfTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5cbmNvbnN0IG1ldGFEZXJpdmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGFTdWJwcm9vZi9tZXRhRGVyaXZhdGlvbiFcIiksXG4gICAgICBtZXRhRGVyaXZhdGlvbkNoaWxkTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvbWV0YURlcml2YXRpb24vKlwiKSxcbiAgICAgIHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkTWV0YXN0YXRlbWVudFwiKSxcbiAgICAgIHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi91bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQhXCIpLFxuICAgICAgcXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9tZXRhU3VicHJvb2YvcXVhbGlmaWVkTWV0YXN0YXRlbWVudHx1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRcIilcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5TWV0YURlcml2YXRpb24obWV0YURlcml2YXRpb25Ob2RlLCBtZXRhcHJvb2ZDb250ZXh0KSB7XG4gIGxldCBtZXRhRGVyaXZhdGlvblZlcmlmaWVkLFxuICAgICAgZGVyaXZlZDtcblxuICBtZXRhcHJvb2ZDb250ZXh0LmJlZ2luKG1ldGFEZXJpdmF0aW9uTm9kZSk7XG5cbiAgZGVyaXZlZCA9IHRydWU7XG5cbiAgbWV0YXByb29mQ29udGV4dC5zZXREZXJpdmVkKGRlcml2ZWQpO1xuXG4gIGNvbnN0IG1ldGFEZXJpdmF0aW9uQ2hpbGROb2RlcyA9IG1ldGFEZXJpdmF0aW9uQ2hpbGROb2Rlc1F1ZXJ5KG1ldGFEZXJpdmF0aW9uTm9kZSk7XG5cbiAgbWV0YURlcml2YXRpb25WZXJpZmllZCA9IG1ldGFEZXJpdmF0aW9uQ2hpbGROb2Rlcy5ldmVyeSgobWV0YURlcml2YXRpb25DaGlsZE5vZGUpID0+IHsgIC8vL1xuICAgIGNvbnN0IG1ldGFEZXJpdmF0aW9uQ2hpbGRWZXJpZmllZCA9IHZlcmlmeU1ldGFEZXJpdmF0aW9uQ2hpbGQobWV0YURlcml2YXRpb25DaGlsZE5vZGUsIG1ldGFwcm9vZkNvbnRleHQpO1xuXG4gICAgaWYgKG1ldGFEZXJpdmF0aW9uQ2hpbGRWZXJpZmllZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICBkZXJpdmVkID0gZmFsc2U7XG5cbiAgbWV0YXByb29mQ29udGV4dC5zZXREZXJpdmVkKGRlcml2ZWQpO1xuXG4gIG1ldGFEZXJpdmF0aW9uVmVyaWZpZWQgP1xuICAgIG1ldGFwcm9vZkNvbnRleHQuY29tcGxldGUobWV0YURlcml2YXRpb25Ob2RlKSA6XG4gICAgICBtZXRhcHJvb2ZDb250ZXh0LmhhbHQobWV0YURlcml2YXRpb25Ob2RlKTtcblxuICByZXR1cm4gbWV0YURlcml2YXRpb25WZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5TWV0YURlcml2YXRpb25DaGlsZChtZXRhRGVyaXZhdGlvbkNoaWxkTm9kZSwgbWV0YXByb29mQ29udGV4dCkge1xuICBsZXQgbWV0YURlcml2YXRpb25DaGlsZFZlcmlmaWVkO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbWV0YURlcml2YXRpb25DaGlsZE5vZGUuZ2V0UnVsZU5hbWUoKTtcblxuICBzd2l0Y2ggKHJ1bGVOYW1lKSB7XG4gICAgY2FzZSBNRVRBX1NVQlBST09GX1JVTEVfTkFNRToge1xuICAgICAgY29uc3QgbWV0YVN1YnByb29mTm9kZSA9IG1ldGFEZXJpdmF0aW9uQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBtZXRhU3VicHJvb2ZWZXJpZmllZCA9IHZlcmlmeU1ldGFTdWJwcm9vZihtZXRhU3VicHJvb2ZOb2RlLCBtZXRhcHJvb2ZDb250ZXh0KTtcblxuICAgICAgaWYgKG1ldGFTdWJwcm9vZlZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IG1ldGFBc3NlcnRpb24gPSBNZXRhQXNzZXJ0aW9uLmZyb21NZXRhU3VicHJvb2ZOb2RlKG1ldGFTdWJwcm9vZk5vZGUpO1xuXG4gICAgICAgIG1ldGFwcm9vZkNvbnRleHQuYWRkTWV0YUFzc2VydGlvbihtZXRhQXNzZXJ0aW9uKTtcblxuICAgICAgICBtZXRhRGVyaXZhdGlvbkNoaWxkVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIFFVQUxJRklFRF9NRVRBU1RBVEVNRU5UX1JVTEVfTkFNRToge1xuICAgICAgY29uc3QgcXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhRGVyaXZhdGlvbkNoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5UXVhbGlmaWVkTWV0YXN0YXRlbWVudChxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXByb29mQ29udGV4dCk7XG5cbiAgICAgIGlmIChxdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgbWV0YUFzc2VydGlvbiA9IE1ldGFBc3NlcnRpb24uZnJvbVF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICBtZXRhcHJvb2ZDb250ZXh0LmFkZE1ldGFBc3NlcnRpb24obWV0YUFzc2VydGlvbik7XG5cbiAgICAgICAgbWV0YURlcml2YXRpb25DaGlsZFZlcmlmaWVkID0gcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkOyAvLy9cbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSBVTlFVQUxJRklFRF9NRVRBU1RBVEVNRU5UX1JVTEVfTkFNRToge1xuICAgICAgY29uc3QgdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFEZXJpdmF0aW9uQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVVucXVhbGlmaWVkTWV0YXN0YXRlbWVudCh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhcHJvb2ZDb250ZXh0KTtcblxuICAgICAgaWYgKHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IG1ldGFBc3NlcnRpb24gPSBNZXRhQXNzZXJ0aW9uLmZyb21VbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgICAgIG1ldGFwcm9vZkNvbnRleHQuYWRkTWV0YUFzc2VydGlvbihtZXRhQXNzZXJ0aW9uKTtcblxuICAgICAgICBtZXRhRGVyaXZhdGlvbkNoaWxkVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWV0YURlcml2YXRpb25DaGlsZFZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlNZXRhU3VicHJvb2YobWV0YVN1YnByb29mTm9kZSwgbWV0YXByb29mQ29udGV4dCkge1xuICBsZXQgbWV0YVN1YnByb29mVmVyaWZpZWQgPSBmYWxzZTtcblxuICBtZXRhcHJvb2ZDb250ZXh0ID0gTWV0YXByb29mQ29udGV4dC5mcm9tTWV0YXByb29mQ29udGV4dChtZXRhcHJvb2ZDb250ZXh0KTsgLy8vXG5cbiAgY29uc3QgcXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlcyA9IHF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZXNRdWVyeShtZXRhU3VicHJvb2ZOb2RlKSxcbiAgICAgICAgZnJvbnRRdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVzID0gZnJvbnQocXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlcyksXG4gICAgICAgIHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVzID0gZnJvbnRRdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVzLCAgLy8vXG4gICAgICAgIHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudHNWZXJpZmllZCA9IHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVzLmV2ZXJ5KCh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQodW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXByb29mQ29udGV4dCk7XG5cbiAgICAgICAgICBpZiAodW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgaWYgKHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudHNWZXJpZmllZCkge1xuICAgIHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVzLmZvckVhY2goKHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG1ldGFBc3NlcnRpb24gPSBNZXRhQXNzZXJ0aW9uLmZyb21VbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBtZXRhcHJvb2ZDb250ZXh0LmFkZE1ldGFBc3NlcnRpb24obWV0YUFzc2VydGlvbik7XG4gICAgfSk7XG5cbiAgICBsZXQgbWV0YURlcml2YXRpb25WZXJpZmllZCA9IHRydWU7XG5cbiAgICBjb25zdCBtZXRhRGVyaXZhdGlvbk5vZGUgPSBtZXRhRGVyaXZhdGlvbk5vZGVRdWVyeShtZXRhU3VicHJvb2ZOb2RlKTtcblxuICAgIGlmIChtZXRhRGVyaXZhdGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICAgIG1ldGFEZXJpdmF0aW9uVmVyaWZpZWQgPSB2ZXJpZnlNZXRhRGVyaXZhdGlvbihtZXRhRGVyaXZhdGlvbk5vZGUsIG1ldGFwcm9vZkNvbnRleHQpO1xuICAgIH1cblxuICAgIGlmIChtZXRhRGVyaXZhdGlvblZlcmlmaWVkKSB7XG4gICAgICBjb25zdCBsYXN0UXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlID0gbGFzdChxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVzKSxcbiAgICAgICAgICAgIHF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSA9IGxhc3RRdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgIHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlID0gcXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgICAgdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSA9IHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBpZiAocXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5UXVhbGlmaWVkTWV0YXN0YXRlbWVudChxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXByb29mQ29udGV4dCk7XG5cbiAgICAgICAgbWV0YVN1YnByb29mVmVyaWZpZWQgPSBxdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQ7ICAvLy9cbiAgICAgIH1cblxuICAgICAgaWYgKHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQodW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXByb29mQ29udGV4dCk7XG5cbiAgICAgICAgbWV0YVN1YnByb29mVmVyaWZpZWQgPSB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZDsgIC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXRhU3VicHJvb2ZWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlNZXRhRGVyaXZhdGlvbiIsIm1ldGFEZXJpdmF0aW9uTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwibWV0YURlcml2YXRpb25DaGlsZE5vZGVzUXVlcnkiLCJub2Rlc1F1ZXJ5IiwicXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVRdWVyeSIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVRdWVyeSIsInF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZXNRdWVyeSIsIm1ldGFEZXJpdmF0aW9uTm9kZSIsIm1ldGFwcm9vZkNvbnRleHQiLCJtZXRhRGVyaXZhdGlvblZlcmlmaWVkIiwiZGVyaXZlZCIsImJlZ2luIiwic2V0RGVyaXZlZCIsIm1ldGFEZXJpdmF0aW9uQ2hpbGROb2RlcyIsImV2ZXJ5IiwibWV0YURlcml2YXRpb25DaGlsZE5vZGUiLCJtZXRhRGVyaXZhdGlvbkNoaWxkVmVyaWZpZWQiLCJ2ZXJpZnlNZXRhRGVyaXZhdGlvbkNoaWxkIiwiY29tcGxldGUiLCJoYWx0IiwicnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsIk1FVEFfU1VCUFJPT0ZfUlVMRV9OQU1FIiwibWV0YVN1YnByb29mTm9kZSIsIm1ldGFTdWJwcm9vZlZlcmlmaWVkIiwidmVyaWZ5TWV0YVN1YnByb29mIiwibWV0YUFzc2VydGlvbiIsIk1ldGFBc3NlcnRpb24iLCJmcm9tTWV0YVN1YnByb29mTm9kZSIsImFkZE1ldGFBc3NlcnRpb24iLCJRVUFMSUZJRURfTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUiLCJxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsInF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVF1YWxpZmllZE1ldGFzdGF0ZW1lbnQiLCJmcm9tUXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUiLCJVTlFVQUxJRklFRF9NRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUiLCJ1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVVucXVhbGlmaWVkTWV0YXN0YXRlbWVudCIsImZyb21VbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlIiwiTWV0YXByb29mQ29udGV4dCIsImZyb21NZXRhcHJvb2ZDb250ZXh0IiwicXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlcyIsImZyb250UXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlcyIsImZyb250IiwidW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZXMiLCJ1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRzVmVyaWZpZWQiLCJmb3JFYWNoIiwibGFzdFF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsImxhc3QiLCJxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWlCQTs7O2VBQXdCQTs7O2tFQWZFOzhEQUNHOzhEQUNZO2dFQUNFO3FCQUVmO3FCQUNVO3lCQUMwRTs7Ozs7O0FBRWhILElBQU1DLDBCQUEwQkMsSUFBQUEsZ0JBQVMsRUFBQyxrQ0FDcENDLGdDQUFnQ0MsSUFBQUEsaUJBQVUsRUFBQyxzQkFDM0NDLGtDQUFrQ0gsSUFBQUEsZ0JBQVMsRUFBQyw0QkFDNUNJLG9DQUFvQ0osSUFBQUEsZ0JBQVMsRUFBQywrQkFDOUNLLGdEQUFnREgsSUFBQUEsaUJBQVUsRUFBQztBQUVsRCxTQUFTSixxQkFBcUJRLGtCQUFrQixFQUFFQyxnQkFBZ0IsRUFBRTtJQUNqRixJQUFJQyx3QkFDQUM7SUFFSkYsaUJBQWlCRyxLQUFLLENBQUNKO0lBRXZCRyxVQUFVLElBQUk7SUFFZEYsaUJBQWlCSSxVQUFVLENBQUNGO0lBRTVCLElBQU1HLDJCQUEyQlgsOEJBQThCSztJQUUvREUseUJBQXlCSSx5QkFBeUJDLEtBQUssQ0FBQyxTQUFDQyx5QkFBNEI7UUFDbkYsSUFBTUMsOEJBQThCQywwQkFBMEJGLHlCQUF5QlA7UUFFdkYsSUFBSVEsNkJBQTZCO1lBQy9CLE9BQU8sSUFBSTtRQUNiLENBQUM7SUFDSDtJQUVBTixVQUFVLEtB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
@@ -0,0 +1,83 @@
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 verifyProof;
9
+ }
10
+ });
11
+ var _derivation = /*#__PURE__*/ _interopRequireDefault(require("../verify/derivation"));
12
+ var _qualified = /*#__PURE__*/ _interopRequireDefault(require("../verify/statement/qualified"));
13
+ var _query = require("../utilities/query");
14
+ function _interopRequireDefault(obj) {
15
+ return obj && obj.__esModule ? obj : {
16
+ default: obj
17
+ };
18
+ }
19
+ var derivationNodeQuery = (0, _query.nodeQuery)("/proof/derivation!"), qualifiedStatementNodeQuery = (0, _query.nodeQuery)("/proof/qualifiedStatement!"), proofStatementNodeQuery = (0, _query.nodeQuery)("/proof/qualifiedStatement/statement!");
20
+ function verifyProof(proofNode, conclusion, proofContext) {
21
+ var proofVerified = false;
22
+ proofContext.begin(proofNode);
23
+ var derivationNode = derivationNodeQuery(proofNode);
24
+ var derivationVerified = true;
25
+ if (derivationNode !== null) {
26
+ derivationVerified = (0, _derivation.default)(derivationNode, proofContext);
27
+ }
28
+ if (derivationVerified) {
29
+ var qualifiedStatementNode = qualifiedStatementNodeQuery(proofNode), qualifiedStatementVerified = (0, _qualified.default)(qualifiedStatementNode, proofContext);
30
+ if (qualifiedStatementVerified) {
31
+ var statementNode = conclusion.getStatementNode(), proofStatementNode = proofStatementNodeQuery(proofNode), proofStatementNodeMatches = matchProofStatementNode(proofStatementNode, statementNode);
32
+ proofVerified = proofStatementNodeMatches; ///
33
+ }
34
+ }
35
+ proofVerified ? proofContext.complete(proofNode) : proofContext.complete(proofNode);
36
+ return proofVerified;
37
+ }
38
+ function matchProofStatementNode(proofStatementNode, statementNode) {
39
+ var proofNonTerminalNode = proofStatementNode, nonTerminalNode = statementNode, proofNonTerminalNodeMatches = matchProofNonTerminalNode(proofNonTerminalNode, nonTerminalNode), proofStatementNodeMatches = proofNonTerminalNodeMatches; ///
40
+ return proofStatementNodeMatches;
41
+ }
42
+ function matchProofNode(proofNode, node) {
43
+ var proofNodeMatches = false;
44
+ var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = proofNode.isTerminalNode();
45
+ if (nodeTerminalNode === ruleNodeTerminalNode) {
46
+ if (nodeTerminalNode) {
47
+ var terminalNode = node, proofTerminalNode = proofNode, proofTerminalNodeMatches = matchProofTerminalNode(proofTerminalNode, terminalNode);
48
+ proofNodeMatches = proofTerminalNodeMatches; ///
49
+ } else {
50
+ var nonTerminalNode = node, proofNonTerminalNode = proofNode, proofNonTerminalNodeMatches = matchProofNonTerminalNode(proofNonTerminalNode, nonTerminalNode);
51
+ proofNodeMatches = proofNonTerminalNodeMatches; ///
52
+ }
53
+ }
54
+ return proofNodeMatches;
55
+ }
56
+ function matchProofNodes(proofNodes, nodes) {
57
+ var proofNodesMatches = false;
58
+ var nodesLength = nodes.length, proofNodesLength = proofNodes.length;
59
+ if (nodesLength === proofNodesLength) {
60
+ proofNodesMatches = nodes.every(function(node, index) {
61
+ var proofNode = proofNodes[index], proofNodeMatches = matchProofNode(proofNode, node);
62
+ if (proofNodeMatches) {
63
+ return true;
64
+ }
65
+ });
66
+ }
67
+ return proofNodesMatches;
68
+ }
69
+ function matchProofTerminalNode(proofTerminalNode, terminalNode) {
70
+ var matches = proofTerminalNode.match(terminalNode), proofTerminalNodeMatches = matches; ///
71
+ return proofTerminalNodeMatches;
72
+ }
73
+ function matchProofNonTerminalNode(proofNonTerminalNode, nonTerminalNode) {
74
+ var proofNonTerminalNodeMatches = false;
75
+ var ruleName = nonTerminalNode.getRuleName(), proofRuleName = proofNonTerminalNode.getRuleName(); ///
76
+ if (ruleName === proofRuleName) {
77
+ var childNodes = nonTerminalNode.getChildNodes(), proofChildNodes = proofNonTerminalNode.getChildNodes(), nodes = childNodes, proofNodes = proofChildNodes, proofNodesMatches = matchProofNodes(proofNodes, nodes);
78
+ proofNonTerminalNodeMatches = proofNodesMatches; ///
79
+ }
80
+ return proofNonTerminalNodeMatches;
81
+ }
82
+
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvcHJvb2YuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB2ZXJpZnlEZXJpdmF0aW9uIGZyb20gXCIuLi92ZXJpZnkvZGVyaXZhdGlvblwiO1xuaW1wb3J0IHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudCBmcm9tIFwiLi4vdmVyaWZ5L3N0YXRlbWVudC9xdWFsaWZpZWRcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBkZXJpdmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Byb29mL2Rlcml2YXRpb24hXCIpLFxuICAgICAgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Byb29mL3F1YWxpZmllZFN0YXRlbWVudCFcIiksXG4gICAgICBwcm9vZlN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9wcm9vZi9xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5UHJvb2YocHJvb2ZOb2RlLCBjb25jbHVzaW9uLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHByb29mVmVyaWZpZWQgPSBmYWxzZTtcblxuICBwcm9vZkNvbnRleHQuYmVnaW4ocHJvb2ZOb2RlKTtcblxuICBjb25zdCBkZXJpdmF0aW9uTm9kZSA9IGRlcml2YXRpb25Ob2RlUXVlcnkocHJvb2ZOb2RlKTtcblxuICBsZXQgZGVyaXZhdGlvblZlcmlmaWVkID0gdHJ1ZTtcblxuICBpZiAoZGVyaXZhdGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICBkZXJpdmF0aW9uVmVyaWZpZWQgPSB2ZXJpZnlEZXJpdmF0aW9uKGRlcml2YXRpb25Ob2RlLCBwcm9vZkNvbnRleHQpO1xuICB9XG5cbiAgaWYgKGRlcml2YXRpb25WZXJpZmllZCkge1xuICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudE5vZGUgPSBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlUXVlcnkocHJvb2ZOb2RlKSxcbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudChxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gY29uY2x1c2lvbi5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgICAgICBwcm9vZlN0YXRlbWVudE5vZGUgPSBwcm9vZlN0YXRlbWVudE5vZGVRdWVyeShwcm9vZk5vZGUpLFxuICAgICAgICAgICAgcHJvb2ZTdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoUHJvb2ZTdGF0ZW1lbnROb2RlKHByb29mU3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICAgIHByb29mVmVyaWZpZWQgPSBwcm9vZlN0YXRlbWVudE5vZGVNYXRjaGVzOyAgLy8vXG4gICAgfVxuICB9XG5cbiAgcHJvb2ZWZXJpZmllZCA/XG4gICAgcHJvb2ZDb250ZXh0LmNvbXBsZXRlKHByb29mTm9kZSkgOlxuICAgICAgcHJvb2ZDb250ZXh0LmNvbXBsZXRlKHByb29mTm9kZSk7XG5cbiAgcmV0dXJuIHByb29mVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIG1hdGNoUHJvb2ZTdGF0ZW1lbnROb2RlKHByb29mU3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50Tm9kZSkge1xuICBjb25zdCBwcm9vZk5vblRlcm1pbmFsTm9kZSA9IHByb29mU3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICBub25UZXJtaW5hbE5vZGUgPSBzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgIHByb29mTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoUHJvb2ZOb25UZXJtaW5hbE5vZGUocHJvb2ZOb25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSksXG4gICAgICAgIHByb29mU3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBwcm9vZk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7ICAvLy9cblxuICByZXR1cm4gcHJvb2ZTdGF0ZW1lbnROb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hQcm9vZk5vZGUocHJvb2ZOb2RlLCBub2RlKSB7XG4gIGxldCBwcm9vZk5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgcnVsZU5vZGVUZXJtaW5hbE5vZGUgPSBwcm9vZk5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICBpZiAobm9kZVRlcm1pbmFsTm9kZSA9PT0gcnVsZU5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICBpZiAobm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgdGVybWluYWxOb2RlID0gbm9kZSwgIC8vL1xuICAgICAgICAgICAgcHJvb2ZUZXJtaW5hbE5vZGUgPSBwcm9vZk5vZGUsICAvLy9cbiAgICAgICAgICAgIHByb29mVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoUHJvb2ZUZXJtaW5hbE5vZGUocHJvb2ZUZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSk7XG5cbiAgICAgIHByb29mTm9kZU1hdGNoZXMgPSBwcm9vZlRlcm1pbmFsTm9kZU1hdGNoZXM7ICAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgICBwcm9vZk5vblRlcm1pbmFsTm9kZSA9IHByb29mTm9kZSwgIC8vL1xuICAgICAgICAgICAgcHJvb2ZOb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hQcm9vZk5vblRlcm1pbmFsTm9kZShwcm9vZk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlKTtcblxuICAgICAgcHJvb2ZOb2RlTWF0Y2hlcyA9IHByb29mTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHByb29mTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoUHJvb2ZOb2Rlcyhwcm9vZk5vZGVzLCBub2Rlcykge1xuICBsZXQgcHJvb2ZOb2Rlc01hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBub2Rlc0xlbmd0aCA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgcHJvb2ZOb2Rlc0xlbmd0aCA9IHByb29mTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChub2Rlc0xlbmd0aCA9PT0gcHJvb2ZOb2Rlc0xlbmd0aCkge1xuICAgIHByb29mTm9kZXNNYXRjaGVzID0gbm9kZXMuZXZlcnkoKG5vZGUsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBwcm9vZk5vZGUgPSBwcm9vZk5vZGVzW2luZGV4XSxcbiAgICAgICAgICAgIHByb29mTm9kZU1hdGNoZXMgPSBtYXRjaFByb29mTm9kZShwcm9vZk5vZGUsIG5vZGUpO1xuXG4gICAgICBpZiAocHJvb2ZOb2RlTWF0Y2hlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIHByb29mTm9kZXNNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaFByb29mVGVybWluYWxOb2RlKHByb29mVGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUpIHtcbiAgY29uc3QgbWF0Y2hlcyA9IHByb29mVGVybWluYWxOb2RlLm1hdGNoKHRlcm1pbmFsTm9kZSksXG4gICAgICAgIHByb29mVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoZXM7ICAvLy9cblxuICByZXR1cm4gcHJvb2ZUZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaFByb29mTm9uVGVybWluYWxOb2RlKHByb29mTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUpIHtcbiAgbGV0IHByb29mTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgIHByb29mUnVsZU5hbWUgPSBwcm9vZk5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpOyAvLy9cblxuICBpZiAocnVsZU5hbWUgPT09IHByb29mUnVsZU5hbWUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBwcm9vZkNoaWxkTm9kZXMgPSBwcm9vZk5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgbm9kZXMgPSBjaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICBwcm9vZk5vZGVzID0gcHJvb2ZDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICBwcm9vZk5vZGVzTWF0Y2hlcyA9IG1hdGNoUHJvb2ZOb2Rlcyhwcm9vZk5vZGVzLCBub2Rlcyk7XG5cbiAgICBwcm9vZk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBwcm9vZk5vZGVzTWF0Y2hlczsgLy8vXG4gIH1cblxuICByZXR1cm4gcHJvb2ZOb25UZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVByb29mIiwiZGVyaXZhdGlvbk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInF1YWxpZmllZFN0YXRlbWVudE5vZGVRdWVyeSIsInByb29mU3RhdGVtZW50Tm9kZVF1ZXJ5IiwicHJvb2ZOb2RlIiwiY29uY2x1c2lvbiIsInByb29mQ29udGV4dCIsInByb29mVmVyaWZpZWQiLCJiZWdpbiIsImRlcml2YXRpb25Ob2RlIiwiZGVyaXZhdGlvblZlcmlmaWVkIiwidmVyaWZ5RGVyaXZhdGlvbiIsInF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwicHJvb2ZTdGF0ZW1lbnROb2RlIiwicHJvb2ZTdGF0ZW1lbnROb2RlTWF0Y2hlcyIsIm1hdGNoUHJvb2ZTdGF0ZW1lbnROb2RlIiwiY29tcGxldGUiLCJwcm9vZk5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsInByb29mTm9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoUHJvb2ZOb25UZXJtaW5hbE5vZGUiLCJtYXRjaFByb29mTm9kZSIsIm5vZGUiLCJwcm9vZk5vZGVNYXRjaGVzIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwicnVsZU5vZGVUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJwcm9vZlRlcm1pbmFsTm9kZSIsInByb29mVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoUHJvb2ZUZXJtaW5hbE5vZGUiLCJtYXRjaFByb29mTm9kZXMiLCJwcm9vZk5vZGVzIiwibm9kZXMiLCJwcm9vZk5vZGVzTWF0Y2hlcyIsIm5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwicHJvb2ZOb2Rlc0xlbmd0aCIsImV2ZXJ5IiwiaW5kZXgiLCJtYXRjaGVzIiwibWF0Y2giLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwicHJvb2ZSdWxlTmFtZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwicHJvb2ZDaGlsZE5vZGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFXQTs7O2VBQXdCQTs7OytEQVRLOzhEQUNRO3FCQUVYOzs7Ozs7QUFFMUIsSUFBTUMsc0JBQXNCQyxJQUFBQSxnQkFBUyxFQUFDLHVCQUNoQ0MsOEJBQThCRCxJQUFBQSxnQkFBUyxFQUFDLCtCQUN4Q0UsMEJBQTBCRixJQUFBQSxnQkFBUyxFQUFDO0FBRTNCLFNBQVNGLFlBQVlLLFNBQVMsRUFBRUMsVUFBVSxFQUFFQyxZQUFZLEVBQUU7SUFDdkUsSUFBSUMsZ0JBQWdCLEtBQUs7SUFFekJELGFBQWFFLEtBQUssQ0FBQ0o7SUFFbkIsSUFBTUssaUJBQWlCVCxvQkFBb0JJO0lBRTNDLElBQUlN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
@@ -2,14 +2,68 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- Object.defineProperty(exports, "default", {
5
+ Object.defineProperty(exports, "default" // if (derived) {
6
+ // debugger
7
+ // } else {
8
+ // const types = [],
9
+ // context = proofContext, ///
10
+ // termNode = termNodeQuery(typeAssertionNode),
11
+ // variables = [],
12
+ // termString = nodeAsString(termNode),
13
+ // termVerifiedAsVariable = verifyTermAsVariable(termNode, variables, context);
14
+ //
15
+ // if (termVerifiedAsVariable) {
16
+ // const firstValue = first(values),
17
+ // variableName = termString, ///
18
+ // value = firstValue; ///
19
+ //
20
+ // if (value !== undefined) {
21
+ // proofContext.error(`The value of the ${variableName} variable is not undefined.`);
22
+ // } else {
23
+ // const type = proofContext.findTypeByTypeName(typeName),
24
+ // firstType = first(types),
25
+ // variableType = firstType, ///
26
+ // typeEqualToOrSubTypeOfVariableType = type.isEqualToOrSubTypeOf(variableType);
27
+ //
28
+ // if (!typeEqualToOrSubTypeOfVariableType) {
29
+ // proofContext.error(`The asserted type of the ${variableName} variable is not equal to or a sub-type of its declared type.`);
30
+ // } else {
31
+ // const name = variableName, ///
32
+ // variable = Variable.fromTypeAndName(type, name);
33
+ //
34
+ // proofContext.addVariable(variable);
35
+ //
36
+ // typeAssertionVerified = true;
37
+ // }
38
+ // }
39
+ // } else {
40
+ // const termVerifiedAgainstConstructors = verifyTermAgainstConstructors(termNode, types, values, context);
41
+ //
42
+ // if (termVerifiedAgainstConstructors) {
43
+ // const type = proofContext.findTypeByTypeName(typeName),
44
+ // firstType = first(types),
45
+ // termType = firstType, ///
46
+ // typeEqualToOrSubTypeOfTermType = type.isEqualToOrSubTypeOf(termType);
47
+ //
48
+ // if (!typeEqualToOrSubTypeOfTermType) {
49
+ // proofContext.error(`The asserted type of the '${termString}' term is not equal to or a sub-type of its declared type.`);
50
+ // } else {
51
+ //
52
+ // typeAssertionVerified = true;
53
+ // }
54
+ // }
55
+ // }
56
+ // }
57
+ , {
6
58
  enumerable: true,
7
59
  get: function() {
8
60
  return verifyUnqualifiedStatement;
9
61
  }
10
62
  });
11
63
  var _statement = /*#__PURE__*/ _interopRequireDefault(require("../../verify/statement"));
64
+ var _assertion = /*#__PURE__*/ _interopRequireDefault(require("../../assertion"));
12
65
  var _query = require("../../utilities/query");
66
+ var _string = require("../../utilities/string");
13
67
  function _interopRequireDefault(obj) {
14
68
  return obj && obj.__esModule ? obj : {
15
69
  default: obj
@@ -21,13 +75,20 @@ function verifyUnqualifiedStatement(unqualifiedStatementNode, proofContext) {
21
75
  proofContext.begin(unqualifiedStatementNode);
22
76
  var statementNode = statementNodeQuery(unqualifiedStatementNode);
23
77
  if (statementNode !== null) {
24
- var statementVerified = (0, _statement.default)(statementNode, proofContext);
25
- if (statementVerified) {
78
+ var derived = proofContext.isDerived();
79
+ if (derived) {
80
+ var assertion = _assertion.default.fromStatementNode(statementNode), assertionMatches = proofContext.matchAssertion(assertion);
81
+ unqualifiedStatementVerified = assertionMatches; ///
82
+ } else {
26
83
  unqualifiedStatementVerified = true;
27
84
  }
28
85
  }
86
+ if (unqualifiedStatementVerified) {
87
+ var statementString = (0, _string.nodeAsString)(statementNode);
88
+ proofContext.debug("Verified the '".concat(statementString, "' unqualified statement."));
89
+ }
29
90
  unqualifiedStatementVerified ? proofContext.complete(unqualifiedStatementNode) : proofContext.halt(unqualifiedStatementNode);
30
91
  return unqualifiedStatementVerified;
31
92
  }
32
93
 
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3VucXVhbGlmaWVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5U3RhdGVtZW50IGZyb20gXCIuLi8uLi92ZXJpZnkvc3RhdGVtZW50XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3Qgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3VucXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudCFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVVucXVhbGlmaWVkU3RhdGVtZW50KHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcHJvb2ZDb250ZXh0KSB7XG4gIGxldCB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgcHJvb2ZDb250ZXh0LmJlZ2luKHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeSh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgcHJvb2ZDb250ZXh0KTtcblxuICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA/XG4gICAgcHJvb2ZDb250ZXh0LmNvbXBsZXRlKHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSkgOlxuICAgICAgcHJvb2ZDb250ZXh0LmhhbHQodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCIsInN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsInByb29mQ29udGV4dCIsInVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJiZWdpbiIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVN0YXRlbWVudCIsImNvbXBsZXRlIiwiaGFsdCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBUUE7OztlQUF3QkE7Ozs4REFOSTtxQkFFRjs7Ozs7O0FBRTFCLElBQU1DLHFCQUFxQkMsSUFBQUEsZ0JBQVMsRUFBQztBQUV0QixTQUFTRiwyQkFBMkJHLHdCQUF3QixFQUFFQyxZQUFZLEVBQUU7SUFDekYsSUFBSUMsK0JBQStCLEtBQUs7SUFFeENELGFBQWFFLEtBQUssQ0FBQ0g7SUFFbkIsSUFBTUksZ0JBQWdCTixtQkFBbUJFO0lBRXpDLElBQUlJLGtCQUFrQixJQUFJLEVBQUU7UUFDMUIsSUFBTUMsb0JBQW9CQyxJQUFBQSxrQkFBZSxFQUFDRixlQUFlSDtRQUV6RCxJQUFJSSxtQkFBbUI7WUFDckJILCtCQUErQixJQUFJO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBRURBLCtCQUNFRCxhQUFhTSxRQUFRLENBQUNQLDRCQUNwQkMsYUFBYU8sSUFBSSxDQUFDUix5QkFBeUI7SUFFL0MsT0FBT0U7QUFDVCJ9
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3VucXVhbGlmaWVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5U3RhdGVtZW50IGZyb20gXCIuLi8uLi92ZXJpZnkvc3RhdGVtZW50XCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uLy4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBub2RlQXNTdHJpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuXG5jb25zdCBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdW5xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBmYWxzZTtcblxuICBwcm9vZkNvbnRleHQuYmVnaW4odW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKHN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBkZXJpdmVkID0gcHJvb2ZDb250ZXh0LmlzRGVyaXZlZCgpO1xuXG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGNvbnN0IGFzc2VydGlvbiA9IEFzc2VydGlvbi5mcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICAgIGFzc2VydGlvbk1hdGNoZXMgPSBwcm9vZkNvbnRleHQubWF0Y2hBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IGFzc2VydGlvbk1hdGNoZXM7ICAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBwcm9vZkNvbnRleHQuZGVidWcoYFZlcmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyB1bnF1YWxpZmllZCBzdGF0ZW1lbnQuYCk7XG4gIH1cblxuICB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID9cbiAgICBwcm9vZkNvbnRleHQuY29tcGxldGUodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSA6XG4gICAgICBwcm9vZkNvbnRleHQuaGFsdCh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkO1xufVxuXG4vLyBpZiAoZGVyaXZlZCkge1xuLy8gICBkZWJ1Z2dlclxuLy8gfSBlbHNlIHtcbi8vICAgY29uc3QgdHlwZXMgPSBbXSxcbi8vICAgICBjb250ZXh0ID0gcHJvb2ZDb250ZXh0LCAvLy9cbi8vICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuLy8gICAgIHZhcmlhYmxlcyA9IFtdLFxuLy8gICAgIHRlcm1TdHJpbmcgPSBub2RlQXNTdHJpbmcodGVybU5vZGUpLFxuLy8gICAgIHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB2ZXJpZnlUZXJtQXNWYXJpYWJsZSh0ZXJtTm9kZSwgdmFyaWFibGVzLCBjb250ZXh0KTtcbi8vXG4vLyAgIGlmICh0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlKSB7XG4vLyAgICAgY29uc3QgZmlyc3RWYWx1ZSA9IGZpcnN0KHZhbHVlcyksXG4vLyAgICAgICB2YXJpYWJsZU5hbWUgPSB0ZXJtU3RyaW5nLCAvLy9cbi8vICAgICAgIHZhbHVlID0gZmlyc3RWYWx1ZTsgLy8vXG4vL1xuLy8gICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4vLyAgICAgICBwcm9vZkNvbnRleHQuZXJyb3IoYFRoZSB2YWx1ZSBvZiB0aGUgJHt2YXJpYWJsZU5hbWV9IHZhcmlhYmxlIGlzIG5vdCB1bmRlZmluZWQuYCk7XG4vLyAgICAgfSBlbHNlIHtcbi8vICAgICAgIGNvbnN0IHR5cGUgPSBwcm9vZkNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKSxcbi8vICAgICAgICAgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuLy8gICAgICAgICB2YXJpYWJsZVR5cGUgPSBmaXJzdFR5cGUsIC8vL1xuLy8gICAgICAgICB0eXBlRXF1YWxUb09yU3ViVHlwZU9mVmFyaWFibGVUeXBlID0gdHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih2YXJpYWJsZVR5cGUpO1xuLy9cbi8vICAgICAgIGlmICghdHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSkge1xuLy8gICAgICAgICBwcm9vZkNvbnRleHQuZXJyb3IoYFRoZSBhc3NlcnRlZCB0eXBlIG9mIHRoZSAke3ZhcmlhYmxlTmFtZX0gdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIG9yIGEgc3ViLXR5cGUgb2YgaXRzIGRlY2xhcmVkIHR5cGUuYCk7XG4vLyAgICAgICB9IGVsc2Uge1xuLy8gICAgICAgICBjb25zdCBuYW1lID0gdmFyaWFibGVOYW1lLCAgLy8vXG4vLyAgICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVHlwZUFuZE5hbWUodHlwZSwgbmFtZSk7XG4vL1xuLy8gICAgICAgICBwcm9vZkNvbnRleHQuYWRkVmFyaWFibGUodmFyaWFibGUpO1xuLy9cbi8vICAgICAgICAgdHlwZUFzc2VydGlvblZlcmlmaWVkID0gdHJ1ZTtcbi8vICAgICAgIH1cbi8vICAgICB9XG4vLyAgIH0gZWxzZSB7XG4vLyAgICAgY29uc3QgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzKHRlcm1Ob2RlLCB0eXBlcywgdmFsdWVzLCBjb250ZXh0KTtcbi8vXG4vLyAgICAgaWYgKHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMpIHtcbi8vICAgICAgIGNvbnN0IHR5cGUgPSBwcm9vZkNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKSxcbi8vICAgICAgICAgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuLy8gICAgICAgICB0ZXJtVHlwZSA9IGZpcnN0VHlwZSwgLy8vXG4vLyAgICAgICAgIHR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUZXJtVHlwZSA9IHR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodGVybVR5cGUpO1xuLy9cbi8vICAgICAgIGlmICghdHlwZUVxdWFsVG9PclN1YlR5cGVPZlRlcm1UeXBlKSB7XG4vLyAgICAgICAgIHByb29mQ29udGV4dC5lcnJvcihgVGhlIGFzc2VydGVkIHR5cGUgb2YgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGlzIG5vdCBlcXVhbCB0byBvciBhIHN1Yi10eXBlIG9mIGl0cyBkZWNsYXJlZCB0eXBlLmApO1xuLy8gICAgICAgfSBlbHNlIHtcbi8vXG4vLyAgICAgICAgIHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHRydWU7XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy8gICB9XG4vLyB9XG4iXSwibmFtZXMiOlsidmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJwcm9vZkNvbnRleHQiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkIiwiYmVnaW4iLCJzdGF0ZW1lbnROb2RlIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsImFzc2VydGlvbiIsIkFzc2VydGlvbiIsImZyb21TdGF0ZW1lbnROb2RlIiwiYXNzZXJ0aW9uTWF0Y2hlcyIsIm1hdGNoQXNzZXJ0aW9uIiwic3RhdGVtZW50U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiZGVidWciLCJjb21wbGV0ZSIsImhhbHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVdBLFVBaUNBLGlCQUFpQjtDQUNqQixhQUFhO0NBQ2IsV0FBVztDQUNYLHNCQUFzQjtDQUN0QixrQ0FBa0M7Q0FDbEMsbURBQW1EO0NBQ25ELHNCQUFzQjtDQUN0QiwyQ0FBMkM7Q0FDM0MsbUZBQW1GO0NBQ25GLEVBQUU7Q0FDRixrQ0FBa0M7Q0FDbEMsd0NBQXdDO0NBQ3hDLHVDQUF1QztDQUN2QyxnQ0FBZ0M7Q0FDaEMsRUFBRTtDQUNGLGlDQUFpQztDQUNqQywyRkFBMkY7Q0FDM0YsZUFBZTtDQUNmLGdFQUFnRTtDQUNoRSxvQ0FBb0M7Q0FDcEMsd0NBQXdDO0NBQ3hDLHdGQUF3RjtDQUN4RixFQUFFO0NBQ0YsbURBQW1EO0NBQ25ELHVJQUF1STtDQUN2SSxpQkFBaUI7Q0FDakIsMENBQTBDO0NBQzFDLDZEQUE2RDtDQUM3RCxFQUFFO0NBQ0YsOENBQThDO0NBQzlDLEVBQUU7Q0FDRix3Q0FBd0M7Q0FDeEMsVUFBVTtDQUNWLFFBQVE7Q0FDUixhQUFhO0NBQ2IsK0dBQStHO0NBQy9HLEVBQUU7Q0FDRiw2Q0FBNkM7Q0FDN0MsZ0VBQWdFO0NBQ2hFLG9DQUFvQztDQUNwQyxvQ0FBb0M7Q0FDcEMsZ0ZBQWdGO0NBQ2hGLEVBQUU7Q0FDRiwrQ0FBK0M7Q0FDL0MsbUlBQW1JO0NBQ25JLGlCQUFpQjtDQUNqQixFQUFFO0NBQ0Ysd0NBQXdDO0NBQ3hDLFVBQVU7Q0FDVixRQUFRO0NBQ1IsTUFBTTtDQUNOLElBQUk7Ozs7ZUFwRm9CQTs7OzhEQVRJOzhEQUVOO3FCQUVJO3NCQUNHOzs7Ozs7QUFFN0IsSUFBTUMscUJBQXFCQyxJQUFBQSxnQkFBUyxFQUFDO0FBRXRCLFNBQVNGLDJCQUEyQkcsd0JBQXdCLEVBQUVDLFlBQVksRUFBRTtJQUN6RixJQUFJQywrQkFBK0IsS0FBSztJQUV4Q0QsYUFBYUUsS0FBSyxDQUFDSDtJQUVuQixJQUFNSSxnQkFBZ0JOLG1CQUFtQkU7SUFFekMsSUFBSUksa0JBQWtCLElBQUksRUFBRTtRQUMxQixJQUFNQyxVQUFVSixhQUFhSyxTQUFTO1FBRXRDLElBQUlELFNBQVM7WUFDWCxJQUFNRSxZQUFZQyxrQkFBUyxDQUFDQyxpQkFBaUIsQ0FBQ0wsZ0JBQ3hDTSxtQkFBbUJULGFBQWFVLGNBQWMsQ0FBQ0o7WUFFckRMLCtCQUErQlEsa0JBQW1CLEdBQUc7UUFDdkQsT0FBTztZQUNMUiwrQkFBK0IsSUFBSTtRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUlBLDhCQUE4QjtRQUNoQyxJQUFNVSxrQkFBa0JDLElBQUFBLG9CQUFZLEVBQUNUO1FBRXJDSCxhQUFhYSxLQUFLLENBQUMsQUFBQyxpQkFBZ0MsT0FBaEJGLGlCQUFnQjtJQUN0RCxDQUFDO0lBRURWLCtCQUNFRCxhQUFhYyxRQUFRLENBQUNmLDRCQUNwQkMsYUFBYWUsSUFBSSxDQUFDaEIseUJBQXlCO0lBRS9DLE9BQU9FO0FBQ1QifQ==
@@ -29,7 +29,7 @@ function verifyStatement(statementNode, proofContext) {
29
29
  var equalityVerified = (0, _equality.default)(equalityNode, proofContext);
30
30
  statementVerified = equalityVerified; ///
31
31
  } else if (typeAssertionNode !== null) {
32
- var typeAssertionVerified = (0, _type.default)(typeAssertionNode, proofContext);
32
+ var types = [], typeAssertionVerified = (0, _type.default)(typeAssertionNode, types, proofContext);
33
33
  statementVerified = typeAssertionVerified; ///
34
34
  } else {
35
35
  debugger;
@@ -38,4 +38,4 @@ function verifyStatement(statementNode, proofContext) {
38
38
  return statementVerified;
39
39
  }
40
40
 
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5RXF1YWxpdHkgZnJvbSBcIi4uL3ZlcmlmeS9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL3ZlcmlmeS9hc3NlcnRpb24vdHlwZVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBub2RlQXNTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuXG5jb25zdCBlcXVhbGl0eU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvZXF1YWxpdHkhXCIpLFxuICAgICAgdHlwZUFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvdHlwZUFzc2VydGlvbiFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgcHJvb2ZDb250ZXh0LmJlZ2luKHN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnN0IGVxdWFsaXR5Tm9kZSA9IGVxdWFsaXR5Tm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpLFxuICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgIHR5cGVBc3NlcnRpb25Ob2RlID0gdHlwZUFzc2VydGlvbk5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICBwcm9vZkNvbnRleHQuZGVidWcoYFZlcmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50Li4uYCk7XG5cbiAgaWYgKGZhbHNlKSB7XG4gICAgLy8vXG4gIH0gZWxzZSBpZiAoZXF1YWxpdHlOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgZXF1YWxpdHlWZXJpZmllZCA9IHZlcmlmeUVxdWFsaXR5KGVxdWFsaXR5Tm9kZSwgcHJvb2ZDb250ZXh0KTtcblxuICAgIHN0YXRlbWVudFZlcmlmaWVkID0gZXF1YWxpdHlWZXJpZmllZDsgLy8vXG4gIH0gZWxzZSBpZiAodHlwZUFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWQgPSB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7IC8vL1xuICB9IGVsc2Uge1xuICAgIGRlYnVnZ2VyXG4gIH1cblxuICBzdGF0ZW1lbnRWZXJpZmllZCA/XG4gICAgcHJvb2ZDb250ZXh0LmNvbXBsZXRlKHN0YXRlbWVudE5vZGUpIDpcbiAgICAgIHByb29mQ29udGV4dC5oYWx0KHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlTdGF0ZW1lbnQiLCJlcXVhbGl0eU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInR5cGVBc3NlcnRpb25Ob2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlIiwicHJvb2ZDb250ZXh0Iiwic3RhdGVtZW50VmVyaWZpZWQiLCJiZWdpbiIsImVxdWFsaXR5Tm9kZSIsInN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInR5cGVBc3NlcnRpb25Ob2RlIiwiZGVidWciLCJlcXVhbGl0eVZlcmlmaWVkIiwidmVyaWZ5RXF1YWxpdHkiLCJ0eXBlQXNzZXJ0aW9uVmVyaWZpZWQiLCJ2ZXJpZnlUeXBlQXNzZXJ0aW9uIiwiY29tcGxldGUiLCJoYWx0Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFXQTs7O2VBQXdCQTs7OzZEQVRHO3lEQUNLO3FCQUVOO3NCQUNHOzs7Ozs7QUFFN0IsSUFBTUMsb0JBQW9CQyxJQUFBQSxnQkFBUyxFQUFDLHlCQUM5QkMseUJBQXlCRCxJQUFBQSxnQkFBUyxFQUFDO0FBRTFCLFNBQVNGLGdCQUFnQkksYUFBYSxFQUFFQyxZQUFZLEVBQUU7SUFDbkUsSUFBSUMsb0JBQW9CLEtBQUs7SUFFN0JELGFBQWFFLEtBQUssQ0FBQ0g7SUFFbkIsSUFBTUksZUFBZVAsa0JBQWtCRyxnQkFDakNLLGtCQUFrQkMsSUFBQUEsb0JBQVksRUFBQ04sZ0JBQy9CTyxvQkFBb0JSLHVCQUF1QkM7SUFFakRDLGFBQWFPLEtBQUssQ0FBQyxBQUFDLGtCQUFpQyxPQUFoQkgsaUJBQWdCO0lBRXJELElBQUksS0FBSyxFQUFFO0lBQ1QsR0FBRztJQUNMLE9BQU8sSUFBSUQsaUJBQWlCLElBQUksRUFBRTtRQUNoQyxJQUFNSyxtQkFBbUJDLElBQUFBLGlCQUFjLEVBQUNOLGNBQWNIO1FBRXREQyxvQkFBb0JPLGtCQUFrQixHQUFHO0lBQzNDLE9BQU8sSUFBSUYsc0JBQXNCLElBQUksRUFBRTtRQUNyQyxJQUFNSSx3QkFBd0JDLElBQUFBLGFBQW1CLEVBQUNMLG1CQUFtQk47UUFFckVDLG9CQUFvQlMsdUJBQXVCLEdBQUc7SUFDaEQsT0FBTztRQUNMLFFBQVE7SUFDVixDQUFDO0lBRURULG9CQUNFRCxhQUFhWSxRQUFRLENBQUNiLGlCQUNwQkMsYUFBYWEsSUFBSSxDQUFDZCxjQUFjO0lBRXBDLE9BQU9FO0FBQ1QifQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5RXF1YWxpdHkgZnJvbSBcIi4uL3ZlcmlmeS9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL3ZlcmlmeS9hc3NlcnRpb24vdHlwZVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBub2RlQXNTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuXG5jb25zdCBlcXVhbGl0eU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvZXF1YWxpdHkhXCIpLFxuICAgICAgdHlwZUFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvdHlwZUFzc2VydGlvbiFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgcHJvb2ZDb250ZXh0LmJlZ2luKHN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnN0IGVxdWFsaXR5Tm9kZSA9IGVxdWFsaXR5Tm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpLFxuICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgIHR5cGVBc3NlcnRpb25Ob2RlID0gdHlwZUFzc2VydGlvbk5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICBwcm9vZkNvbnRleHQuZGVidWcoYFZlcmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50Li4uYCk7XG5cbiAgaWYgKGZhbHNlKSB7XG4gICAgLy8vXG4gIH0gZWxzZSBpZiAoZXF1YWxpdHlOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgZXF1YWxpdHlWZXJpZmllZCA9IHZlcmlmeUVxdWFsaXR5KGVxdWFsaXR5Tm9kZSwgcHJvb2ZDb250ZXh0KTtcblxuICAgIHN0YXRlbWVudFZlcmlmaWVkID0gZXF1YWxpdHlWZXJpZmllZDsgLy8vXG4gIH0gZWxzZSBpZiAodHlwZUFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB0eXBlcyA9IFtdLFxuICAgICAgICAgIHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZlcmlmeVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIHR5cGVzLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWQgPSB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7IC8vL1xuICB9IGVsc2Uge1xuICAgIGRlYnVnZ2VyXG4gIH1cblxuICBzdGF0ZW1lbnRWZXJpZmllZCA/XG4gICAgcHJvb2ZDb250ZXh0LmNvbXBsZXRlKHN0YXRlbWVudE5vZGUpIDpcbiAgICAgIHByb29mQ29udGV4dC5oYWx0KHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlTdGF0ZW1lbnQiLCJlcXVhbGl0eU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInR5cGVBc3NlcnRpb25Ob2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlIiwicHJvb2ZDb250ZXh0Iiwic3RhdGVtZW50VmVyaWZpZWQiLCJiZWdpbiIsImVxdWFsaXR5Tm9kZSIsInN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInR5cGVBc3NlcnRpb25Ob2RlIiwiZGVidWciLCJlcXVhbGl0eVZlcmlmaWVkIiwidmVyaWZ5RXF1YWxpdHkiLCJ0eXBlcyIsInR5cGVBc3NlcnRpb25WZXJpZmllZCIsInZlcmlmeVR5cGVBc3NlcnRpb24iLCJjb21wbGV0ZSIsImhhbHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVdBOzs7ZUFBd0JBOzs7NkRBVEc7eURBQ0s7cUJBRU47c0JBQ0c7Ozs7OztBQUU3QixJQUFNQyxvQkFBb0JDLElBQUFBLGdCQUFTLEVBQUMseUJBQzlCQyx5QkFBeUJELElBQUFBLGdCQUFTLEVBQUM7QUFFMUIsU0FBU0YsZ0JBQWdCSSxhQUFhLEVBQUVDLFlBQVksRUFBRTtJQUNuRSxJQUFJQyxvQkFBb0IsS0FBSztJQUU3QkQsYUFBYUUsS0FBSyxDQUFDSDtJQUVuQixJQUFNSSxlQUFlUCxrQkFBa0JHLGdCQUNqQ0ssa0JBQWtCQyxJQUFBQSxvQkFBWSxFQUFDTixnQkFDL0JPLG9CQUFvQlIsdUJBQXVCQztJQUVqREMsYUFBYU8sS0FBSyxDQUFDLEFBQUMsa0JBQWlDLE9BQWhCSCxpQkFBZ0I7SUFFckQsSUFBSSxLQUFLLEVBQUU7SUFDVCxHQUFHO0lBQ0wsT0FBTyxJQUFJRCxpQkFBaUIsSUFBSSxFQUFFO1FBQ2hDLElBQU1LLG1CQUFtQkMsSUFBQUEsaUJBQWMsRUFBQ04sY0FBY0g7UUFFdERDLG9CQUFvQk8sa0JBQWtCLEdBQUc7SUFDM0MsT0FBTyxJQUFJRixzQkFBc0IsSUFBSSxFQUFFO1FBQ3JDLElBQU1JLFFBQVEsRUFBRSxFQUNWQyx3QkFBd0JDLElBQUFBLGFBQW1CLEVBQUNOLG1CQUFtQkksT0FBT1Y7UUFFNUVDLG9CQUFvQlUsdUJBQXVCLEdBQUc7SUFDaEQsT0FBTztRQUNMLFFBQVE7SUFDVixDQUFDO0lBRURWLG9CQUNFRCxhQUFhYSxRQUFRLENBQUNkLGlCQUNwQkMsYUFBYWMsSUFBSSxDQUFDZixjQUFjO0lBRXBDLE9BQU9FO0FBQ1QifQ==
@@ -24,14 +24,16 @@ var _string = require("../utilities/string");
24
24
  var _ruleNames = require("../ruleNames");
25
25
  var _query = require("../utilities/query");
26
26
  var termNodeQuery = (0, _query.nodeQuery)("/argument/term!"), typeNodeQuery = (0, _query.nodeQuery)("/argument/type!"), variableNodeQuery = (0, _query.nodeQuery)("/term/variable!");
27
- function verifyTerm(termNode, types, values, context) {
27
+ function verifyTerm(termNode, types, context) {
28
28
  var termVerified = false;
29
29
  context.begin(termNode);
30
- var termVerifiedAsVariable = verifyTermAsVariable(termNode, types, values, context);
30
+ var variables = [], termVerifiedAsVariable = verifyTermAsVariable(termNode, variables, context);
31
31
  if (termVerifiedAsVariable) {
32
+ var firstVariable = (0, _array.first)(variables), variable = firstVariable, type = variable.getType();
33
+ types.push(type);
32
34
  termVerified = true;
33
35
  } else {
34
- var termVerifiedAgainstConstructors = verifyTermAgainstConstructors(termNode, types, values, context);
36
+ var termVerifiedAgainstConstructors = verifyTermAgainstConstructors(termNode, types, context);
35
37
  if (termVerifiedAgainstConstructors) {
36
38
  termVerified = true;
37
39
  }
@@ -39,7 +41,7 @@ function verifyTerm(termNode, types, values, context) {
39
41
  termVerified ? context.complete(termNode) : context.halt(termNode);
40
42
  return termVerified;
41
43
  }
42
- function verifyTermAsVariable(termNode, types, values, context) {
44
+ function verifyTermAsVariable(termNode, variables, context) {
43
45
  var termVerifiedAsVariable = false;
44
46
  context.begin(termNode);
45
47
  var variableNode = variableNodeQuery(termNode);
@@ -48,16 +50,15 @@ function verifyTermAsVariable(termNode, types, values, context) {
48
50
  if (!variablePresent) {
49
51
  context.error("The ".concat(variableName, " variable is not present."));
50
52
  } else {
51
- var variable = context.findVariableByVariableName(variableName), type = variable.getType(), value = variable.getValue();
52
- types.push(type);
53
- values.push(value);
53
+ var variable = context.findVariableByVariableName(variableName);
54
+ variables.push(variable);
54
55
  termVerifiedAsVariable = true;
55
56
  }
56
57
  }
57
58
  termVerifiedAsVariable ? context.complete(termNode) : context.halt(termNode);
58
59
  return termVerifiedAsVariable;
59
60
  }
60
- function verifyTermAgainstConstructors(termNode, types, values, context) {
61
+ function verifyTermAgainstConstructors(termNode, types, context) {
61
62
  var termVerifiedAgainstConstructors = false;
62
63
  context.begin(termNode);
63
64
  var constructors = context.getConstructors(), constructor = constructors.find(function(constructor) {
@@ -67,9 +68,8 @@ function verifyTermAgainstConstructors(termNode, types, values, context) {
67
68
  }
68
69
  }) || null;
69
70
  if (constructor !== null) {
70
- var type = constructor.getType(), value = termNode; ///
71
+ var type = constructor.getType();
71
72
  types.push(type);
72
- values.push(value);
73
73
  termVerifiedAgainstConstructors = true;
74
74
  }
75
75
  termVerifiedAgainstConstructors ? context.complete(termNode) : context.halt(termNode);
@@ -142,7 +142,7 @@ function verifyArgumentNode(argumentNode, constructorArgumentNode, context) {
142
142
  var argumentString = (0, _string.nodeAsString)(argumentNode);
143
143
  context.error("The ".concat(argumentString, " argument should be a term, not a type"));
144
144
  } else {
145
- var types = [], values = [], termVerified = verifyTerm(termNode, types, values, context);
145
+ var types = [], termVerified = verifyTerm(termNode, types, context);
146
146
  if (termVerified) {
147
147
  var firstType = (0, _array.first)(types), termType = firstType, typeNode = typeNodeQuery(constructorArgumentNode), typeName = (0, _query.typeNameFromTypeNode)(typeNode), type = context.findTypeByTypeName(typeName), termTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(type);
148
148
  if (termTypeEqualToOrSubTypeOfType) {
@@ -153,4 +153,4 @@ function verifyArgumentNode(argumentNode, constructorArgumentNode, context) {
153
153
  return argumentNodeVerified;
154
154
  }
155
155
 
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBub2RlQXNTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgQVJHVU1FTlRfUlVMRV9OQU1FIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCB0eXBlTmFtZUZyb21UeXBlTm9kZSwgdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9hcmd1bWVudC90ZXJtIVwiKSxcbiAgICAgIHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXJndW1lbnQvdHlwZSFcIiksXG4gICAgICB2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlIVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VGVybSh0ZXJtTm9kZSwgdHlwZXMsIHZhbHVlcywgY29udGV4dCkge1xuICBsZXQgdGVybVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29udGV4dC5iZWdpbih0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB0eXBlcywgdmFsdWVzLCBjb250ZXh0KTtcblxuICBpZiAodGVybVZlcmlmaWVkQXNWYXJpYWJsZSkge1xuICAgIHRlcm1WZXJpZmllZCA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzKHRlcm1Ob2RlLCB0eXBlcywgdmFsdWVzLCBjb250ZXh0KTtcblxuICAgIGlmICh0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzKSB7XG4gICAgICB0ZXJtVmVyaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHRlcm1WZXJpZmllZCA/XG4gICAgY29udGV4dC5jb21wbGV0ZSh0ZXJtTm9kZSkgOlxuICAgICAgY29udGV4dC5oYWx0KHRlcm1Ob2RlKTtcblxuICByZXR1cm4gdGVybVZlcmlmaWVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5VGVybUFzVmFyaWFibGUodGVybU5vZGUsIHR5cGVzLCB2YWx1ZXMsIGNvbnRleHQpIHtcbiAgbGV0IHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSBmYWxzZTtcblxuICBjb250ZXh0LmJlZ2luKHRlcm1Ob2RlKTtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSxcbiAgICAgICAgICB2YXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lKTtcblxuICAgIGlmICghdmFyaWFibGVQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LmVycm9yKGBUaGUgJHt2YXJpYWJsZU5hbWV9IHZhcmlhYmxlIGlzIG5vdCBwcmVzZW50LmApXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpLFxuICAgICAgICB0eXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpLFxuICAgICAgICB2YWx1ZSA9IHZhcmlhYmxlLmdldFZhbHVlKCk7XG5cbiAgICAgIHR5cGVzLnB1c2godHlwZSk7XG5cbiAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcblxuICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA/XG4gICAgY29udGV4dC5jb21wbGV0ZSh0ZXJtTm9kZSkgOlxuICAgICAgY29udGV4dC5oYWx0KHRlcm1Ob2RlKTtcblxuICByZXR1cm4gdGVybVZlcmlmaWVkQXNWYXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzKHRlcm1Ob2RlLCB0eXBlcywgdmFsdWVzLCBjb250ZXh0KSB7XG4gIGxldCB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzID0gZmFsc2U7XG5cbiAgY29udGV4dC5iZWdpbih0ZXJtTm9kZSk7XG5cbiAgY29uc3QgY29uc3RydWN0b3JzID0gY29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKSxcbiAgICAgICAgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZmluZCgoY29uc3RydWN0b3IpID0+IHtcbiAgICAgICAgICBjb25zdCB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IgPSB2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9yKHRlcm1Ob2RlLCBjb25zdHJ1Y3RvciwgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAodGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pIHx8IG51bGw7XG5cbiAgaWYgKGNvbnN0cnVjdG9yICE9PSBudWxsKSB7XG4gICAgY29uc3QgdHlwZSA9IGNvbnN0cnVjdG9yLmdldFR5cGUoKSxcbiAgICAgICAgICB2YWx1ZSA9IHRlcm1Ob2RlOyAvLy9cblxuICAgIHR5cGVzLnB1c2godHlwZSk7XG5cbiAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG5cbiAgICB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzID0gdHJ1ZTtcbiAgfVxuXG4gIHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMgP1xuICAgIGNvbnRleHQuY29tcGxldGUodGVybU5vZGUpIDpcbiAgICAgIGNvbnRleHQuaGFsdCh0ZXJtTm9kZSk7XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnM7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIGNvbnN0cnVjdG9yLCBjb250ZXh0KSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yVGVybU5vZGUgPSBjb25zdHJ1Y3Rvci5nZXRUZXJtTm9kZSgpLFxuICAgICAgICBub2RlID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgY29uc3RydWN0b3JOb2RlID0gY29uc3RydWN0b3JUZXJtTm9kZSwgLy8vXG4gICAgICAgIG5vZGVWZXJpZmllZCA9IHZlcmlmeU5vZGUobm9kZSwgY29uc3RydWN0b3JOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yID0gbm9kZVZlcmlmaWVkOyAgLy8vXG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3Rvcjtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Tm9kZShub2RlLCBjb25zdHJ1Y3Rvck5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IG5vZGVWZXJpZmllZDtcblxuICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICBjb25zdHJ1Y3Rvck5vZGVUZXJtaW5hbE5vZGUgPSBjb25zdHJ1Y3Rvck5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICBpZiAobm9kZVRlcm1pbmFsTm9kZSA9PT0gY29uc3RydWN0b3JOb2RlVGVybWluYWxOb2RlKSB7XG4gICAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbnN0cnVjdG9yVGVybWluYWxOb2RlID0gY29uc3RydWN0b3JOb2RlLCAgLy8vXG4gICAgICAgICAgICB0ZXJtaW5hbE5vZGVWZXJpZmllZCA9IHZlcmlmeVRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGUsIGNvbnN0cnVjdG9yVGVybWluYWxOb2RlLCBjb250ZXh0KTtcblxuICAgICAgbm9kZVZlcmlmaWVkID0gdGVybWluYWxOb2RlVmVyaWZpZWQ7ICAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgICBjb25zdHJ1Y3Rvck5vblRlcm1pbmFsTm9kZSA9IGNvbnN0cnVjdG9yTm9kZSwgIC8vL1xuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSB2ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCBjb25zdHJ1Y3Rvck5vblRlcm1pbmFsTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIG5vZGVWZXJpZmllZCA9IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkOyAvLy9cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlDaGlsZE5vZGVzKGNoaWxkTm9kZXMsIGNvbnN0cnVjdG9yQ2hpbGROb2RlcywgY29udGV4dCkge1xuICBsZXQgY2hpbGROb2Rlc1ZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IGNoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgICBjb25zdHJ1Y3RvckNoaWxkTm9kZXNMZW5ndGggPSBjb25zdHJ1Y3RvckNoaWxkTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChjaGlsZE5vZGVzTGVuZ3RoID09PSBjb25zdHJ1Y3RvckNoaWxkTm9kZXNMZW5ndGgpIHtcbiAgICBjaGlsZE5vZGVzVmVyaWZpZWQgPSBjaGlsZE5vZGVzLmV2ZXJ5KChjaGlsZE5vZGUsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBjb25zdHJ1Y3RvckNoaWxkTm9kZSA9IGNvbnN0cnVjdG9yQ2hpbGROb2Rlc1tpbmRleF0sXG4gICAgICAgICAgICBub2RlID0gY2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIGNvbnN0cnVjdG9yTm9kZSA9IGNvbnN0cnVjdG9yQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBub2RlVmVyaWZpZWQgPSB2ZXJpZnlOb2RlKG5vZGUsIGNvbnN0cnVjdG9yTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIGlmIChub2RlVmVyaWZpZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gY2hpbGROb2Rlc1ZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlLCBjb25zdHJ1Y3RvclRlcm1pbmFsTm9kZSwgY29udGV4dCkge1xuICBsZXQgdGVybWluYWxOb2RlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBtYXRjaGVzID0gdGVybWluYWxOb2RlLm1hdGNoKGNvbnN0cnVjdG9yVGVybWluYWxOb2RlKTtcblxuICBpZiAobWF0Y2hlcykge1xuICAgIHRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtaW5hbE5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgY29uc3RydWN0b3JOb25UZXJtaW5hbE5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgcnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgY29uc3RydWN0b3JSdWxlTmFtZSA9IGNvbnN0cnVjdG9yTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7XG5cbiAgaWYgKHJ1bGVOYW1lID09PSBjb25zdHJ1Y3RvclJ1bGVOYW1lKSB7XG4gICAgc3dpdGNoIChydWxlTmFtZSkge1xuICAgICAgY2FzZSBBUkdVTUVOVF9SVUxFX05BTUU6IHtcbiAgICAgICAgY29uc3QgYXJndW1lbnROb2RlID0gbm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICAgICAgY29uc3RydWN0b3JBcmd1bWVudE5vZGUgPSBjb25zdHJ1Y3Rvck5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGFyZ3VtZW50Tm9kZVZlcmlmaWVkID0gdmVyaWZ5QXJndW1lbnROb2RlKGFyZ3VtZW50Tm9kZSwgY29uc3RydWN0b3JBcmd1bWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gYXJndW1lbnROb2RlVmVyaWZpZWQ7IC8vL1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICBjb25zdHJ1Y3RvckNoaWxkTm9kZXMgPSBjb25zdHJ1Y3Rvck5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgIGNoaWxkTm9kZXNWZXJpZmllZCA9IHZlcmlmeUNoaWxkTm9kZXMoY2hpbGROb2RlcywgY29uc3RydWN0b3JDaGlsZE5vZGVzLCBjb250ZXh0KTtcblxuICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IGNoaWxkTm9kZXNWZXJpZmllZDsgLy8vXG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlBcmd1bWVudE5vZGUoYXJndW1lbnROb2RlLCBjb25zdHJ1Y3RvckFyZ3VtZW50Tm9kZSwgY29udGV4dCkge1xuICBsZXQgYXJndW1lbnROb2RlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkoYXJndW1lbnROb2RlKTtcblxuICBpZiAodGVybU5vZGUgPT09IG51bGwpIHtcbiAgICBjb25zdCBhcmd1bWVudFN0cmluZyA9IG5vZGVBc1N0cmluZyhhcmd1bWVudE5vZGUpO1xuXG4gICAgY29udGV4dC5lcnJvcihgVGhlICR7YXJndW1lbnRTdHJpbmd9IGFyZ3VtZW50IHNob3VsZCBiZSBhIHRlcm0sIG5vdCBhIHR5cGVgKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB0eXBlcyA9IFtdLFxuICAgICAgICAgIHZhbHVlcyA9IFtdLFxuICAgICAgICAgIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHR5cGVzLCB2YWx1ZXMsIGNvbnRleHQpO1xuXG4gICAgaWYgKHRlcm1WZXJpZmllZCkge1xuICAgICAgY29uc3QgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuICAgICAgICAgICAgdGVybVR5cGUgPSBmaXJzdFR5cGUsIC8vL1xuICAgICAgICAgICAgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KGNvbnN0cnVjdG9yQXJndW1lbnROb2RlKSxcbiAgICAgICAgICAgIHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKSxcbiAgICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICBpZiAodGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlKSB7XG4gICAgICAgIGFyZ3VtZW50Tm9kZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJndW1lbnROb2RlVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5VGVybSIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwidmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnMiLCJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidHlwZU5vZGVRdWVyeSIsInZhcmlhYmxlTm9kZVF1ZXJ5IiwidGVybU5vZGUiLCJ0eXBlcyIsInZhbHVlcyIsImNvbnRleHQiLCJ0ZXJtVmVyaWZpZWQiLCJiZWdpbiIsInRlcm1WZXJpZmllZEFzVmFyaWFibGUiLCJ0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzIiwiY29tcGxldGUiLCJoYWx0IiwidmFyaWFibGVOb2RlIiwidmFyaWFibGVOYW1lIiwidmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSIsInZhcmlhYmxlUHJlc2VudCIsImlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUiLCJlcnJvciIsInZhcmlhYmxlIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5hbWUiLCJ0eXBlIiwiZ2V0VHlwZSIsInZhbHVlIiwiZ2V0VmFsdWUiLCJwdXNoIiwiY29uc3RydWN0b3JzIiwiZ2V0Q29uc3RydWN0b3JzIiwiY29uc3RydWN0b3IiLCJmaW5kIiwidGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yIiwidmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yVGVybU5vZGUiLCJnZXRUZXJtTm9kZSIsIm5vZGUiLCJjb25zdHJ1Y3Rvck5vZGUiLCJub2RlVmVyaWZpZWQiLCJ2ZXJpZnlOb2RlIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwiY29uc3RydWN0b3JOb2RlVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiY29uc3RydWN0b3JUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGVWZXJpZmllZCIsInZlcmlmeVRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsImNvbnN0cnVjdG9yTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlOb25UZXJtaW5hbE5vZGUiLCJ2ZXJpZnlDaGlsZE5vZGVzIiwiY2hpbGROb2RlcyIsImNvbnN0cnVjdG9yQ2hpbGROb2RlcyIsImNoaWxkTm9kZXNWZXJpZmllZCIsImNoaWxkTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJjb25zdHJ1Y3RvckNoaWxkTm9kZXNMZW5ndGgiLCJldmVyeSIsImNoaWxkTm9kZSIsImluZGV4IiwiY29uc3RydWN0b3JDaGlsZE5vZGUiLCJtYXRjaGVzIiwibWF0Y2giLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiY29uc3RydWN0b3JSdWxlTmFtZSIsIkFSR1VNRU5UX1JVTEVfTkFNRSIsImFyZ3VtZW50Tm9kZSIsImNvbnN0cnVjdG9yQXJndW1lbnROb2RlIiwiYXJndW1lbnROb2RlVmVyaWZpZWQiLCJ2ZXJpZnlBcmd1bWVudE5vZGUiLCJnZXRDaGlsZE5vZGVzIiwiYXJndW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJmaXJzdFR5cGUiLCJmaXJzdCIsInRlcm1UeXBlIiwidHlwZU5vZGUiLCJ0eXBlTmFtZSIsInR5cGVOYW1lRnJvbVR5cGVOb2RlIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwidGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQVdBLE9Bc0JDO2VBdEJ1QkE7O0lBd0JSQyxvQkFBb0I7ZUFBcEJBOztJQWlDQUMsNkJBQTZCO2VBQTdCQTs7O3FCQWxFTTtzQkFDTzt5QkFDTTtxQkFDMkM7QUFFOUUsSUFBTUMsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLG9CQUMxQkMsZ0JBQWdCRCxJQUFBQSxnQkFBUyxFQUFDLG9CQUMxQkUsb0JBQW9CRixJQUFBQSxnQkFBUyxFQUFDO0FBRXJCLFNBQVNKLFdBQVdPLFFBQVEsRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLE9BQU8sRUFBRTtJQUNuRSxJQUFJQyxlQUFlLEtBQUs7SUFFeEJE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
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBub2RlQXNTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgQVJHVU1FTlRfUlVMRV9OQU1FIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCB0eXBlTmFtZUZyb21UeXBlTm9kZSwgdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9hcmd1bWVudC90ZXJtIVwiKSxcbiAgICAgIHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXJndW1lbnQvdHlwZSFcIiksXG4gICAgICB2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlIVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VGVybSh0ZXJtTm9kZSwgdHlwZXMsIGNvbnRleHQpIHtcbiAgbGV0IHRlcm1WZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnRleHQuYmVnaW4odGVybU5vZGUpO1xuXG4gIGNvbnN0IHZhcmlhYmxlcyA9IFtdLFxuICAgICAgICB0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlID0gdmVyaWZ5VGVybUFzVmFyaWFibGUodGVybU5vZGUsIHZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgaWYgKHRlcm1WZXJpZmllZEFzVmFyaWFibGUpIHtcbiAgICBjb25zdCBmaXJzdFZhcmlhYmxlID0gZmlyc3QodmFyaWFibGVzKSxcbiAgICAgICAgICB2YXJpYWJsZSA9IGZpcnN0VmFyaWFibGUsIC8vL1xuICAgICAgICAgIHR5cGUgPSB2YXJpYWJsZS5nZXRUeXBlKCk7XG5cbiAgICB0eXBlcy5wdXNoKHR5cGUpO1xuXG4gICAgdGVybVZlcmlmaWVkID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzID0gdmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnModGVybU5vZGUsIHR5cGVzLCBjb250ZXh0KTtcblxuICAgIGlmICh0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzKSB7XG4gICAgICB0ZXJtVmVyaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHRlcm1WZXJpZmllZCA/XG4gICAgY29udGV4dC5jb21wbGV0ZSh0ZXJtTm9kZSkgOlxuICAgICAgY29udGV4dC5oYWx0KHRlcm1Ob2RlKTtcblxuICByZXR1cm4gdGVybVZlcmlmaWVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5VGVybUFzVmFyaWFibGUodGVybU5vZGUsIHZhcmlhYmxlcywgY29udGV4dCkge1xuICBsZXQgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IGZhbHNlO1xuXG4gIGNvbnRleHQuYmVnaW4odGVybU5vZGUpO1xuXG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHZhcmlhYmxlUHJlc2VudCA9IGNvbnRleHQuaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpO1xuXG4gICAgaWYgKCF2YXJpYWJsZVByZXNlbnQpIHtcbiAgICAgIGNvbnRleHQuZXJyb3IoYFRoZSAke3ZhcmlhYmxlTmFtZX0gdmFyaWFibGUgaXMgbm90IHByZXNlbnQuYClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdmFyaWFibGUgPSBjb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lKHZhcmlhYmxlTmFtZSk7XG5cbiAgICAgIHZhcmlhYmxlcy5wdXNoKHZhcmlhYmxlKTtcblxuICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA/XG4gICAgY29udGV4dC5jb21wbGV0ZSh0ZXJtTm9kZSkgOlxuICAgICAgY29udGV4dC5oYWx0KHRlcm1Ob2RlKTtcblxuICByZXR1cm4gdGVybVZlcmlmaWVkQXNWYXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCkge1xuICBsZXQgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IGZhbHNlO1xuXG4gIGNvbnRleHQuYmVnaW4odGVybU5vZGUpO1xuXG4gIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGNvbnRleHQuZ2V0Q29uc3RydWN0b3JzKCksXG4gICAgICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JzLmZpbmQoKGNvbnN0cnVjdG9yKSA9PiB7XG4gICAgICAgICAgY29uc3QgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yID0gdmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgY29uc3RydWN0b3IsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KSB8fCBudWxsO1xuXG4gIGlmIChjb25zdHJ1Y3RvciAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHR5cGUgPSBjb25zdHJ1Y3Rvci5nZXRUeXBlKCk7XG5cbiAgICB0eXBlcy5wdXNoKHR5cGUpO1xuXG4gICAgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IHRydWU7XG4gIH1cblxuICB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzID9cbiAgICBjb250ZXh0LmNvbXBsZXRlKHRlcm1Ob2RlKSA6XG4gICAgICBjb250ZXh0LmhhbHQodGVybU5vZGUpO1xuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9yKHRlcm1Ob2RlLCBjb25zdHJ1Y3RvciwgY29udGV4dCkge1xuICBjb25zdCBjb25zdHJ1Y3RvclRlcm1Ob2RlID0gY29uc3RydWN0b3IuZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgbm9kZSA9IHRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIGNvbnN0cnVjdG9yTm9kZSA9IGNvbnN0cnVjdG9yVGVybU5vZGUsIC8vL1xuICAgICAgICBub2RlVmVyaWZpZWQgPSB2ZXJpZnlOb2RlKG5vZGUsIGNvbnN0cnVjdG9yTm9kZSwgY29udGV4dCksXG4gICAgICAgIHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvciA9IG5vZGVWZXJpZmllZDsgIC8vL1xuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3I7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeU5vZGUobm9kZSwgY29uc3RydWN0b3JOb2RlLCBjb250ZXh0KSB7XG4gIGxldCBub2RlVmVyaWZpZWQ7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgY29uc3RydWN0b3JOb2RlVGVybWluYWxOb2RlID0gY29uc3RydWN0b3JOb2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUgPT09IGNvbnN0cnVjdG9yTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBjb25zdHJ1Y3RvclRlcm1pbmFsTm9kZSA9IGNvbnN0cnVjdG9yTm9kZSwgIC8vL1xuICAgICAgICAgICAgdGVybWluYWxOb2RlVmVyaWZpZWQgPSB2ZXJpZnlUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlLCBjb25zdHJ1Y3RvclRlcm1pbmFsTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIG5vZGVWZXJpZmllZCA9IHRlcm1pbmFsTm9kZVZlcmlmaWVkOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgY29uc3RydWN0b3JOb25UZXJtaW5hbE5vZGUgPSBjb25zdHJ1Y3Rvck5vZGUsICAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgY29uc3RydWN0b3JOb25UZXJtaW5hbE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBub2RlVmVyaWZpZWQgPSBub25UZXJtaW5hbE5vZGVWZXJpZmllZDsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Q2hpbGROb2RlcyhjaGlsZE5vZGVzLCBjb25zdHJ1Y3RvckNoaWxkTm9kZXMsIGNvbnRleHQpIHtcbiAgbGV0IGNoaWxkTm9kZXNWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IGNoaWxkTm9kZXNMZW5ndGggPSBjaGlsZE5vZGVzLmxlbmd0aCxcbiAgICAgICAgY29uc3RydWN0b3JDaGlsZE5vZGVzTGVuZ3RoID0gY29uc3RydWN0b3JDaGlsZE5vZGVzLmxlbmd0aDtcblxuICBpZiAoY2hpbGROb2Rlc0xlbmd0aCA9PT0gY29uc3RydWN0b3JDaGlsZE5vZGVzTGVuZ3RoKSB7XG4gICAgY2hpbGROb2Rlc1ZlcmlmaWVkID0gY2hpbGROb2Rlcy5ldmVyeSgoY2hpbGROb2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY29uc3RydWN0b3JDaGlsZE5vZGUgPSBjb25zdHJ1Y3RvckNoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbm9kZSA9IGNoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGUgPSBjb25zdHJ1Y3RvckNoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgbm9kZVZlcmlmaWVkID0gdmVyaWZ5Tm9kZShub2RlLCBjb25zdHJ1Y3Rvck5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAobm9kZVZlcmlmaWVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNoaWxkTm9kZXNWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgY29uc3RydWN0b3JUZXJtaW5hbE5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHRlcm1pbmFsTm9kZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbWF0Y2hlcyA9IHRlcm1pbmFsTm9kZS5tYXRjaChjb25zdHJ1Y3RvclRlcm1pbmFsTm9kZSk7XG5cbiAgaWYgKG1hdGNoZXMpIHtcbiAgICB0ZXJtaW5hbE5vZGVWZXJpZmllZCA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gdGVybWluYWxOb2RlVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGUsIGNvbnN0cnVjdG9yTm9uVGVybWluYWxOb2RlLCBjb250ZXh0KSB7XG4gIGxldCBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgIGNvbnN0cnVjdG9yUnVsZU5hbWUgPSBjb25zdHJ1Y3Rvck5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gIGlmIChydWxlTmFtZSA9PT0gY29uc3RydWN0b3JSdWxlTmFtZSkge1xuICAgIHN3aXRjaCAocnVsZU5hbWUpIHtcbiAgICAgIGNhc2UgQVJHVU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICAgIGNvbnN0IGFyZ3VtZW50Tm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGNvbnN0cnVjdG9yQXJndW1lbnROb2RlID0gY29uc3RydWN0b3JOb25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgICBhcmd1bWVudE5vZGVWZXJpZmllZCA9IHZlcmlmeUFyZ3VtZW50Tm9kZShhcmd1bWVudE5vZGUsIGNvbnN0cnVjdG9yQXJndW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IGFyZ3VtZW50Tm9kZVZlcmlmaWVkOyAvLy9cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgY29uc3RydWN0b3JDaGlsZE5vZGVzID0gY29uc3RydWN0b3JOb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICBjaGlsZE5vZGVzVmVyaWZpZWQgPSB2ZXJpZnlDaGlsZE5vZGVzKGNoaWxkTm9kZXMsIGNvbnN0cnVjdG9yQ2hpbGROb2RlcywgY29udGV4dCk7XG5cbiAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBjaGlsZE5vZGVzVmVyaWZpZWQ7IC8vL1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub25UZXJtaW5hbE5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5QXJndW1lbnROb2RlKGFyZ3VtZW50Tm9kZSwgY29uc3RydWN0b3JBcmd1bWVudE5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IGFyZ3VtZW50Tm9kZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KGFyZ3VtZW50Tm9kZSk7XG5cbiAgaWYgKHRlcm1Ob2RlID09PSBudWxsKSB7XG4gICAgY29uc3QgYXJndW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcoYXJndW1lbnROb2RlKTtcblxuICAgIGNvbnRleHQuZXJyb3IoYFRoZSAke2FyZ3VtZW50U3RyaW5nfSBhcmd1bWVudCBzaG91bGQgYmUgYSB0ZXJtLCBub3QgYSB0eXBlYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdHlwZXMgPSBbXSxcbiAgICAgICAgICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICBjb25zdCBmaXJzdFR5cGUgPSBmaXJzdCh0eXBlcyksXG4gICAgICAgICAgICB0ZXJtVHlwZSA9IGZpcnN0VHlwZSwgLy8vXG4gICAgICAgICAgICB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkoY29uc3RydWN0b3JBcmd1bWVudE5vZGUpLFxuICAgICAgICAgICAgdHlwZU5hbWUgPSB0eXBlTmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSksXG4gICAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpLFxuICAgICAgICAgICAgdGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodHlwZSk7XG5cbiAgICAgIGlmICh0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUpIHtcbiAgICAgICAgYXJndW1lbnROb2RlVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmd1bWVudE5vZGVWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlUZXJtIiwidmVyaWZ5VGVybUFzVmFyaWFibGUiLCJ2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9ycyIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5IiwidmFyaWFibGVOb2RlUXVlcnkiLCJ0ZXJtTm9kZSIsInR5cGVzIiwiY29udGV4dCIsInRlcm1WZXJpZmllZCIsImJlZ2luIiwidmFyaWFibGVzIiwidGVybVZlcmlmaWVkQXNWYXJpYWJsZSIsImZpcnN0VmFyaWFibGUiLCJmaXJzdCIsInZhcmlhYmxlIiwidHlwZSIsImdldFR5cGUiLCJwdXNoIiwidGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyIsImNvbXBsZXRlIiwiaGFsdCIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTmFtZSIsInZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUiLCJ2YXJpYWJsZVByZXNlbnQiLCJpc1ZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVOYW1lIiwiZXJyb3IiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlTmFtZSIsImNvbnN0cnVjdG9ycyIsImdldENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9yIiwiZmluZCIsInRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvciIsInZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvclRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJub2RlIiwiY29uc3RydWN0b3JOb2RlIiwibm9kZVZlcmlmaWVkIiwidmVyaWZ5Tm9kZSIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsImNvbnN0cnVjdG9yTm9kZVRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsImNvbnN0cnVjdG9yVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJjb25zdHJ1Y3Rvck5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVZlcmlmaWVkIiwidmVyaWZ5Tm9uVGVybWluYWxOb2RlIiwidmVyaWZ5Q2hpbGROb2RlcyIsImNoaWxkTm9kZXMiLCJjb25zdHJ1Y3RvckNoaWxkTm9kZXMiLCJjaGlsZE5vZGVzVmVyaWZpZWQiLCJjaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwiY29uc3RydWN0b3JDaGlsZE5vZGVzTGVuZ3RoIiwiZXZlcnkiLCJjaGlsZE5vZGUiLCJpbmRleCIsImNvbnN0cnVjdG9yQ2hpbGROb2RlIiwibWF0Y2hlcyIsIm1hdGNoIiwicnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsImNvbnN0cnVjdG9yUnVsZU5hbWUiLCJBUkdVTUVOVF9SVUxFX05BTUUiLCJhcmd1bWVudE5vZGUiLCJjb25zdHJ1Y3RvckFyZ3VtZW50Tm9kZSIsImFyZ3VtZW50Tm9kZVZlcmlmaWVkIiwidmVyaWZ5QXJndW1lbnROb2RlIiwiZ2V0Q2hpbGROb2RlcyIsImFyZ3VtZW50U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiZmlyc3RUeXBlIiwidGVybVR5cGUiLCJ0eXBlTm9kZSIsInR5cGVOYW1lIiwidHlwZU5hbWVGcm9tVHlwZU5vZGUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJ0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBV0EsT0E2QkM7ZUE3QnVCQTs7SUErQlJDLG9CQUFvQjtlQUFwQkE7O0lBNkJBQyw2QkFBNkI7ZUFBN0JBOzs7cUJBckVNO3NCQUNPO3lCQUNNO3FCQUMyQztBQUU5RSxJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsb0JBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUMsb0JBQzFCRSxvQkFBb0JGLElBQUFBLGdCQUFTLEVBQUM7QUFFckIsU0FBU0osV0FBV08sUUFBUSxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRTtJQUMzRCxJQUFJQyxlQUFlLEtBQUs7SUFFeEJELFFBQVFFLEtBQUssQ0FBQ0o7SUFFZCxJQUFNSyxZQUFZLEVBQUUsRUFDZEMseUJBQXlCWixx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