occam-nominal 1.0.520 → 1.0.524

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 (65) hide show
  1. package/lib/context/temenic.js +3 -2
  2. package/lib/element/assertion/schema.js +68 -71
  3. package/lib/element/assertion/signature.js +1 -1
  4. package/lib/element/assumption/implicit.js +5 -11
  5. package/lib/element/assumption.js +34 -47
  6. package/lib/element/claim/axiom.js +1 -1
  7. package/lib/element/claim/conjecture.js +1 -1
  8. package/lib/element/claim/lemma.js +1 -1
  9. package/lib/element/claim/theorem.js +1 -1
  10. package/lib/element/claim.js +1 -1
  11. package/lib/element/constraint.js +73 -92
  12. package/lib/element/constructor.js +2 -2
  13. package/lib/element/fact/step.js +2 -2
  14. package/lib/element/frame.js +49 -107
  15. package/lib/element/generator.js +2 -2
  16. package/lib/element/hypothesis.js +6 -4
  17. package/lib/element/label.js +20 -11
  18. package/lib/element/link.js +8 -15
  19. package/lib/element/metavariable.js +9 -11
  20. package/lib/element/parameter.js +3 -9
  21. package/lib/element/reference.js +18 -30
  22. package/lib/element/resolution.js +7 -9
  23. package/lib/element/rule.js +2 -2
  24. package/lib/element/schema.js +121 -119
  25. package/lib/element/signature.js +2 -2
  26. package/lib/element/subproof.js +2 -2
  27. package/lib/element/substitution/frame.js +2 -2
  28. package/lib/element/variable.js +2 -2
  29. package/lib/process/unification.js +4 -4
  30. package/lib/utilities/context.js +22 -4
  31. package/lib/utilities/element.js +5 -5
  32. package/lib/utilities/string.js +16 -12
  33. package/package.json +5 -5
  34. package/src/context/temenic.js +3 -1
  35. package/src/element/assertion/schema.js +73 -92
  36. package/src/element/assertion/signature.js +1 -1
  37. package/src/element/assumption/implicit.js +4 -14
  38. package/src/element/assumption.js +36 -56
  39. package/src/element/claim/axiom.js +1 -1
  40. package/src/element/claim/conjecture.js +1 -1
  41. package/src/element/claim/lemma.js +1 -1
  42. package/src/element/claim/theorem.js +1 -1
  43. package/src/element/claim.js +1 -1
  44. package/src/element/constraint.js +95 -115
  45. package/src/element/constructor.js +1 -1
  46. package/src/element/fact/step.js +2 -2
  47. package/src/element/frame.js +65 -152
  48. package/src/element/generator.js +1 -1
  49. package/src/element/hypothesis.js +7 -3
  50. package/src/element/label.js +32 -13
  51. package/src/element/link.js +10 -18
  52. package/src/element/metavariable.js +8 -10
  53. package/src/element/parameter.js +3 -14
  54. package/src/element/reference.js +19 -36
  55. package/src/element/resolution.js +8 -10
  56. package/src/element/rule.js +2 -2
  57. package/src/element/schema.js +147 -135
  58. package/src/element/signature.js +1 -1
  59. package/src/element/subproof.js +2 -2
  60. package/src/element/substitution/frame.js +1 -2
  61. package/src/element/variable.js +1 -1
  62. package/src/process/unification.js +3 -4
  63. package/src/utilities/context.js +26 -4
  64. package/src/utilities/element.js +7 -7
  65. package/src/utilities/string.js +23 -17
@@ -114,7 +114,8 @@ class TemenicContext extends _context.default {
114
114
  }
115
115
  addConstraint(constraint) {
116
116
  if (this.constraints === null) {
117
- super.addConstraint(constraint);
117
+ const context = this.getContext();
118
+ context.addConstraint(constraint);
118
119
  return;
119
120
  }
120
121
  const context = this, constraintA = constraint, constraintString = constraint.getString();
@@ -206,4 +207,4 @@ class TemenicContext extends _context.default {
206
207
  }
207
208
  const _default = TemenicContext;
208
209
 
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3RlbWVuaWMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dFwiO1xuXG5pbXBvcnQgeyBtZXJnZUVxdWl2YWxlbmNlcywgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VzXCI7XG5cbmNvbnN0IHsgbGFzdCwgcHVzaCwgY2xlYXIgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5jbGFzcyBUZW1lbmljQ29udGV4dCBleHRlbmRzIENvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBjb25zdHJhaW50cywgYXNzaWdubWVudHMsIGVxdWl2YWxlbmNlcywgZmFjdE9yU3VicHJvb2ZzLCBkZWNsYXJlZFZhcmlhYmxlcykge1xuICAgIHN1cGVyKGNvbnRleHQpO1xuXG4gICAgdGhpcy5jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzO1xuICAgIHRoaXMuYXNzaWdubWVudHMgPSBhc3NpZ25tZW50cztcbiAgICB0aGlzLmVxdWl2YWxlbmNlcyA9IGVxdWl2YWxlbmNlcztcbiAgICB0aGlzLmZhY3RPclN1YnByb29mcyA9IGZhY3RPclN1YnByb29mcztcbiAgICB0aGlzLmRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXM7XG4gIH1cblxuICBnZXRDb25zdHJhaW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJhaW50cztcbiAgfVxuXG4gIGdldEFzc2lnbm1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLmFzc2lnbm1lbnRzO1xuICB9XG5cbiAgZ2V0RXF1aXZhbGVuY2VzKCkge1xuICAgIGxldCBlcXVpdmFsZW5jZXM7XG5cbiAgICBsZXQgY29udGV4dDtcblxuICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGVxdWl2YWxlbmNlcyA9IGNvbnRleHQuZ2V0RXF1aXZhbGVuY2VzKCk7XG5cbiAgICBjb250ZXh0ID0gdGhpczsgLy8vXG5cbiAgICBlcXVpdmFsZW5jZXMgPSBtZXJnZUVxdWl2YWxlbmNlcyh0aGlzLmVxdWl2YWxlbmNlcywgZXF1aXZhbGVuY2VzLCBjb250ZXh0KTsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlcztcbiAgfVxuXG4gIGdldEZhY3RPclN1YnByb29mcygpIHtcbiAgICBsZXQgZmFjdE9yU3VicHJvb2ZzO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgZmFjdE9yU3VicHJvb2ZzID0gY29udGV4dC5nZXRGYWN0T3JTdWJwcm9vZnMoKTtcblxuICAgIGZhY3RPclN1YnByb29mcyA9IFsgIC8vL1xuICAgICAgLi4uZmFjdE9yU3VicHJvb2ZzLFxuICAgICAgLi4udGhpcy5mYWN0T3JTdWJwcm9vZnNcbiAgICBdO1xuXG4gICAgcmV0dXJuIGZhY3RPclN1YnByb29mcztcbiAgfVxuXG4gIGdldERlY2xhcmVkVmFyaWFibGVzKGRlY2xhcmVkVmFyaWFibGVzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKGRlY2xhcmVkVmFyaWFibGVzLCB0aGlzLmRlY2xhcmVkVmFyaWFibGVzKTtcblxuICAgIGNvbnRleHQuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgc2V0RXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcykge1xuICAgIHRoaXMuZXF1aXZhbGVuY2VzID0gZXF1aXZhbGVuY2VzO1xuICB9XG5cbiAgZ2V0RmFjdHMoKSB7XG4gICAgY29uc3QgZmFjdE9yU3VicHJvb2ZzID0gdGhpcy5nZXRGYWN0T3JTdWJwcm9vZnMoKSxcbiAgICAgICAgICBmYWN0cyA9IGZhY3RPclN1YnByb29mcy5maWx0ZXIoKGZhY3RPclN1YnByb29mKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYWN0T3JTdWJwcm9vZkZhY3QgPSBmYWN0T3JTdWJwcm9vZi5pc0ZhY3QoKTtcblxuICAgICAgICAgICAgaWYgKGZhY3RPclN1YnByb29mRmFjdCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBmYWN0cztcbiAgfVxuXG4gIGdldFN0ZXBzKCkge1xuICAgIGNvbnN0IGZhY3RzID0gdGhpcy5nZXRGYWN0cygpLFxuICAgICAgICAgIHN0ZXBzID0gZmFjdHMuZmlsdGVyKChmYWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYWN0U3RlcCA9IGZhY3QuaXNTdGVwKCk7XG5cbiAgICAgICAgICAgIGlmIChmYWN0U3RlcCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIGdldExhc3RTdGVwKCkge1xuICAgIGxldCBsYXN0U3RlcCA9IG51bGw7XG5cbiAgICBjb25zdCBzdGVwcyA9IHRoaXMuZ2V0U3RlcHMoKSxcbiAgICAgICAgICBzdGVwc0xlbmd0aCA9IHN0ZXBzLmxlbmd0aDtcblxuICAgIGlmIChzdGVwc0xlbmd0aCA+IDApIHtcbiAgICAgIGxhc3RTdGVwID0gbGFzdChzdGVwcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RTdGVwO1xuICB9XG5cbiAgaXNNZXRhTGV2ZWwoKSB7XG4gICAgbGV0IG1ldGFMZXZlbDtcblxuICAgIGlmICh0aGlzLmNvbnN0cmFpbnRzICE9PSBudWxsKSB7XG4gICAgICBtZXRhTGV2ZWwgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgIG1ldGFMZXZlbCA9IGNvbnRleHQuaXNNZXRhTGV2ZWwoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YUxldmVsO1xuICB9XG5cbiAgYWRkQXNzaWdubWVudChhc3NpZ25tZW50KSB7XG4gICAgdGhpcy5hc3NpZ25tZW50cy5wdXNoKGFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYXNzaWduQXNzaWdubWVudHMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXM7IC8vL1xuXG4gICAgdGhpcy5hc3NpZ25tZW50cy5mb3JFYWNoKChhc3NpZ25tZW50KSA9PiB7XG4gICAgICBhc3NpZ25tZW50KGNvbnRleHQpO1xuICAgIH0pO1xuXG4gICAgY2xlYXIodGhpcy5hc3NpZ25tZW50cyk7XG4gIH1cblxuICBhZGREZWNsYXJlZFZhcmlhYmxlKGRlY2xhcmVkVmFyaWFibGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZVN0cmluZyA9IGRlY2xhcmVkVmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2RlY2xhcmVkVmFyaWFibGVTdHJpbmd9JyBkZWNsYXJlZCB2YXJpYWJsZSB0byB0aGUgdGVtZXJpYyBjb250ZXh0Li4uYCk7XG5cbiAgICB0aGlzLmRlY2xhcmVkVmFyaWFibGVzLnB1c2goZGVjbGFyZWRWYXJpYWJsZSk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7ZGVjbGFyZWRWYXJpYWJsZVN0cmluZ30nIGRlY2xhcmVkIHZhcmlhYmxlIHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpIHtcbiAgICBpZiAodGhpcy5jb25zdHJhaW50cyA9PT0gbnVsbCkge1xuICAgICAgc3VwZXIuYWRkQ29uc3RyYWludChjb25zdHJhaW50KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBjb25zdHJhaW50QSA9IGNvbnN0cmFpbnQsIC8vL1xuICAgICAgICAgIGNvbnN0cmFpbnRTdHJpbmcgPSBjb25zdHJhaW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCB0byB0aGUgdGVtZXJpYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBjb25zdHJhaW50QiA9IHRoaXMuY29uc3RyYWludHMuZmluZCgoY29uc3RyYWludCkgPT4ge1xuICAgICAgY29uc3QgY29uc3RyYWludEIgPSBjb25zdHJhaW50LCAvLy9cbiAgICAgICAgICAgIGNvbnN0cmFpbnRBRXF1YWxUb0Fzc3VtcHRpb25CID0gY29uc3RyYWludEEuaXNFcXVhbFRvKGNvbnN0cmFpbnRCKTtcblxuICAgICAgaWYgKGNvbnN0cmFpbnRBRXF1YWxUb0Fzc3VtcHRpb25CKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pIHx8IG51bGw7XG5cbiAgICBpZiAoY29uc3RyYWludEIgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uc3RyYWludHMucHVzaChjb25zdHJhaW50KTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgdG8gdGhlIHRlbWVyaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEdlbmVyYXRvcihnZW5lcmF0b3IpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEdlbmVyYXRvcihnZW5lcmF0b3IpO1xuICB9XG5cbiAgYWRkQ29uc3RydWN0b3IoY29uc3RydWN0b3IpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIGFkZEZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMsIC8vL1xuICAgICAgICAgIGZhY3RPclN1YnByb29mU3RyaW5nID0gZmFjdE9yU3VicHJvb2YuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2ZhY3RPclN1YnByb29mU3RyaW5nfScgZmFjdCBvciBzdWJwcm9vZiB0byB0aGUgdGVtZXJpYyBjb250ZXh0Li4uYCk7XG5cbiAgICB0aGlzLmZhY3RPclN1YnByb29mcy5wdXNoKGZhY3RPclN1YnByb29mKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHtmYWN0T3JTdWJwcm9vZlN0cmluZ30nIGZhY3Qgb3Igc3VicHJvb2YgdG8gdGhlIHRlbWVyaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZXMgPSB0aGlzLmdldERlY2xhcmVkVmFyaWFibGVzKCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZSA9IGRlY2xhcmVkVmFyaWFibGVzLmZpbmQoKGRlY2xhcmVkVmFyaWFibGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciA9IGRlY2xhcmVkVmFyaWFibGUuY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgICAgICAgICBpZiAodmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZTtcbiAgfVxuXG4gIGZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGxldCBkZWNsYXJlZFZhcmlhYmxlcztcblxuICAgIGRlY2xhcmVkVmFyaWFibGVzID0gdGhpcy5nZXREZWNsYXJlZFZhcmlhYmxlcygpO1xuXG4gICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlcy5maWx0ZXIoKGRlY2xhcmVkVmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciA9IGRlY2xhcmVkVmFyaWFibGUuY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgICBpZiAodmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKSB7XG4gICAgbGV0IGNvbnN0cmFpbnQ7XG5cbiAgICBpZiAodGhpcy5jb25zdHJhaW50cyA9PT0gbnVsbCkge1xuICAgICAgY29uc3RyYWludCA9IHN1cGVyLmZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0cmFpbnQgPSB0aGlzLmNvbnN0cmFpbnRzLmZpbmQoKGNvbnN0cmFpbnQpID0+IHtcbiAgICAgICAgY29uc3QgY29uc3RyYWludE5vZGVNYXRjaGVzID0gY29uc3RyYWludC5tYXRjaENvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKTtcblxuICAgICAgICBpZiAoY29uc3RyYWludE5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pIHx8IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gIH1cblxuICBpc0RlY2xhcmVkVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZSA9IHRoaXMuZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVQcmVzZW50ID0gKGRlY2xhcmVkVmFyaWFibGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVQcmVzZW50O1xuICB9XG5cbiAgaXNUZXJtR3JvdW5kZWQodGVybSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBlcXVpdmFsZW5jZXMgPSB0aGlzLmdldEVxdWl2YWxlbmNlcygpLFxuICAgICAgICAgIGdyb3VuZGVkVGVybXMgPSBbXSxcbiAgICAgICAgICBkZWZpbmVkVmFyaWFibGVzID0gW107XG5cbiAgICBzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzKGVxdWl2YWxlbmNlcywgZ3JvdW5kZWRUZXJtcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICBjb25zdCB0ZXJtTWF0Y2hlc0dyb3VuZGVkVGVybSA9IGdyb3VuZGVkVGVybXMuc29tZSgoZ3JvdW5kZWRUZXJtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBncm91bmRlZFRlcm1Ob2RlID0gZ3JvdW5kZWRUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICAgICAgICAgIGdyb3VuZGVkVGVybU5vZGVNYXRjaGVzID0gdGVybS5tYXRjaFRlcm1Ob2RlKGdyb3VuZGVkVGVybU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoZ3JvdW5kZWRUZXJtTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGVybUdyb3VuZGVkID0gdGVybU1hdGNoZXNHcm91bmRlZFRlcm07IC8vL1xuXG4gICAgcmV0dXJuIHRlcm1Hcm91bmRlZDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTm90aGluZyhjb250ZXh0KSB7XG4gICAgY29uc3QgYXNzaWdubWVudHMgPSBbXSxcbiAgICAgICAgICBlcXVpdmFsZW5jZXMgPSBbXSxcbiAgICAgICAgICBjb25zdHJhaW50cyA9IG51bGwsXG4gICAgICAgICAgZmFjdE9yU3VicHJvb2ZzID0gW10sXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICB0ZW1lbmljQ29udGV4dCA9IG5ldyBUZW1lbmljQ29udGV4dChjb250ZXh0LCBjb25zdHJhaW50cywgYXNzaWdubWVudHMsIGVxdWl2YWxlbmNlcywgZmFjdE9yU3VicHJvb2ZzLCBkZWNsYXJlZFZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gdGVtZW5pY0NvbnRleHQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLCBjb250ZXh0KSB7XG4gICAgY29uc3QgYXNzaWdubWVudHMgPSBbXSxcbiAgICAgICAgICBlcXVpdmFsZW5jZXMgPSBbXSxcbiAgICAgICAgICBmYWN0T3JTdWJwcm9vZnMgPSBbXSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIHRlbWVuaWNDb250ZXh0ID0gbmV3IFRlbWVuaWNDb250ZXh0KGNvbnRleHQsIGNvbnN0cmFpbnRzLCBhc3NpZ25tZW50cywgZXF1aXZhbGVuY2VzLCBmYWN0T3JTdWJwcm9vZnMsIGRlY2xhcmVkVmFyaWFibGVzKTtcblxuICAgIHJldHVybiB0ZW1lbmljQ29udGV4dDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBUZW1lbmljQ29udGV4dDsiXSwibmFtZXMiOlsibGFzdCIsInB1c2giLCJjbGVhciIsImFycmF5VXRpbGl0aWVzIiwiVGVtZW5pY0NvbnRleHQiLCJDb250ZXh0IiwiY29udGV4dCIsImNvbnN0cmFpbnRzIiwiYXNzaWdubWVudHMiLCJlcXVpdmFsZW5jZXMiLCJmYWN0T3JTdWJwcm9vZnMiLCJkZWNsYXJlZFZhcmlhYmxlcyIsImdldENvbnN0cmFpbnRzIiwiZ2V0QXNzaWdubWVudHMiLCJnZXRFcXVpdmFsZW5jZXMiLCJnZXRDb250ZXh0IiwibWVyZ2VFcXVpdmFsZW5jZXMiLCJnZXRGYWN0T3JTdWJwcm9vZnMiLCJnZXREZWNsYXJlZFZhcmlhYmxlcyIsInNldEVxdWl2YWxlbmNlcyIsImdldEZhY3RzIiwiZmFjdHMiLCJmaWx0ZXIiLCJmYWN0T3JTdWJwcm9vZiIsImZhY3RPclN1YnByb29mRmFjdCIsImlzRmFjdCIsImdldFN0ZXBzIiwic3RlcHMiLCJmYWN0IiwiZmFjdFN0ZXAiLCJpc1N0ZXAiLCJnZXRMYXN0U3RlcCIsImxhc3RTdGVwIiwic3RlcHNMZW5ndGgiLCJsZW5ndGgiLCJpc01ldGFMZXZlbCIsIm1ldGFMZXZlbCIsImFkZEFzc2lnbm1lbnQiLCJhc3NpZ25tZW50IiwiYXNzaWduQXNzaWdubWVudHMiLCJmb3JFYWNoIiwiYWRkRGVjbGFyZWRWYXJpYWJsZSIsImRlY2xhcmVkVmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsImFkZENvbnN0cmFpbnQiLCJjb25zdHJhaW50IiwiY29uc3RyYWludEEiLCJjb25zdHJhaW50U3RyaW5nIiwiY29uc3RyYWludEIiLCJmaW5kIiwiY29uc3RyYWludEFFcXVhbFRvQXNzdW1wdGlvbkIiLCJpc0VxdWFsVG8iLCJhZGRHZW5lcmF0b3IiLCJnZW5lcmF0b3IiLCJhZGRDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yIiwiYWRkRmFjdE9yU3VicHJvb2YiLCJmYWN0T3JTdWJwcm9vZlN0cmluZyIsImZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIiLCJjb21wYXJlVmFyaWFibGVJZGVudGlmaWVyIiwiZmluZERlY2xhcmVkVmFyaWFibGVzQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJmaW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUiLCJjb25zdHJhaW50Tm9kZSIsImNvbnN0cmFpbnROb2RlTWF0Y2hlcyIsIm1hdGNoQ29uc3RyYWludE5vZGUiLCJpc0RlY2xhcmVkVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZUlkZW50aWZpZXIiLCJkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCIsImlzVGVybUdyb3VuZGVkIiwidGVybSIsImdyb3VuZGVkVGVybXMiLCJkZWZpbmVkVmFyaWFibGVzIiwic2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyIsInRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtIiwic29tZSIsImdyb3VuZGVkVGVybSIsImdyb3VuZGVkVGVybU5vZGUiLCJnZXROb2RlIiwiZ3JvdW5kZWRUZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlIiwidGVybUdyb3VuZGVkIiwiZnJvbU5vdGhpbmciLCJ0ZW1lbmljQ29udGV4dCIsImZyb21Db25zdHJhaW50cyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBK1NBOzs7ZUFBQTs7OzJCQTdTK0I7Z0VBRVg7OEJBRXdEOzs7Ozs7QUFFNUUsTUFBTSxFQUFFQSxJQUFJLEVBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHlCQUFjO0FBRTVDLE1BQU1DLHVCQUF1QkMsZ0JBQU87SUFD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
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3RlbWVuaWMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dFwiO1xuXG5pbXBvcnQgeyBtZXJnZUVxdWl2YWxlbmNlcywgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VzXCI7XG5cbmNvbnN0IHsgbGFzdCwgcHVzaCwgY2xlYXIgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5jbGFzcyBUZW1lbmljQ29udGV4dCBleHRlbmRzIENvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBjb25zdHJhaW50cywgYXNzaWdubWVudHMsIGVxdWl2YWxlbmNlcywgZmFjdE9yU3VicHJvb2ZzLCBkZWNsYXJlZFZhcmlhYmxlcykge1xuICAgIHN1cGVyKGNvbnRleHQpO1xuXG4gICAgdGhpcy5jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzO1xuICAgIHRoaXMuYXNzaWdubWVudHMgPSBhc3NpZ25tZW50cztcbiAgICB0aGlzLmVxdWl2YWxlbmNlcyA9IGVxdWl2YWxlbmNlcztcbiAgICB0aGlzLmZhY3RPclN1YnByb29mcyA9IGZhY3RPclN1YnByb29mcztcbiAgICB0aGlzLmRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXM7XG4gIH1cblxuICBnZXRDb25zdHJhaW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJhaW50cztcbiAgfVxuXG4gIGdldEFzc2lnbm1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLmFzc2lnbm1lbnRzO1xuICB9XG5cbiAgZ2V0RXF1aXZhbGVuY2VzKCkge1xuICAgIGxldCBlcXVpdmFsZW5jZXM7XG5cbiAgICBsZXQgY29udGV4dDtcblxuICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGVxdWl2YWxlbmNlcyA9IGNvbnRleHQuZ2V0RXF1aXZhbGVuY2VzKCk7XG5cbiAgICBjb250ZXh0ID0gdGhpczsgLy8vXG5cbiAgICBlcXVpdmFsZW5jZXMgPSBtZXJnZUVxdWl2YWxlbmNlcyh0aGlzLmVxdWl2YWxlbmNlcywgZXF1aXZhbGVuY2VzLCBjb250ZXh0KTsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlcztcbiAgfVxuXG4gIGdldEZhY3RPclN1YnByb29mcygpIHtcbiAgICBsZXQgZmFjdE9yU3VicHJvb2ZzO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgZmFjdE9yU3VicHJvb2ZzID0gY29udGV4dC5nZXRGYWN0T3JTdWJwcm9vZnMoKTtcblxuICAgIGZhY3RPclN1YnByb29mcyA9IFsgIC8vL1xuICAgICAgLi4uZmFjdE9yU3VicHJvb2ZzLFxuICAgICAgLi4udGhpcy5mYWN0T3JTdWJwcm9vZnNcbiAgICBdO1xuXG4gICAgcmV0dXJuIGZhY3RPclN1YnByb29mcztcbiAgfVxuXG4gIGdldERlY2xhcmVkVmFyaWFibGVzKGRlY2xhcmVkVmFyaWFibGVzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKGRlY2xhcmVkVmFyaWFibGVzLCB0aGlzLmRlY2xhcmVkVmFyaWFibGVzKTtcblxuICAgIGNvbnRleHQuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgc2V0RXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcykge1xuICAgIHRoaXMuZXF1aXZhbGVuY2VzID0gZXF1aXZhbGVuY2VzO1xuICB9XG5cbiAgZ2V0RmFjdHMoKSB7XG4gICAgY29uc3QgZmFjdE9yU3VicHJvb2ZzID0gdGhpcy5nZXRGYWN0T3JTdWJwcm9vZnMoKSxcbiAgICAgICAgICBmYWN0cyA9IGZhY3RPclN1YnByb29mcy5maWx0ZXIoKGZhY3RPclN1YnByb29mKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYWN0T3JTdWJwcm9vZkZhY3QgPSBmYWN0T3JTdWJwcm9vZi5pc0ZhY3QoKTtcblxuICAgICAgICAgICAgaWYgKGZhY3RPclN1YnByb29mRmFjdCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBmYWN0cztcbiAgfVxuXG4gIGdldFN0ZXBzKCkge1xuICAgIGNvbnN0IGZhY3RzID0gdGhpcy5nZXRGYWN0cygpLFxuICAgICAgICAgIHN0ZXBzID0gZmFjdHMuZmlsdGVyKChmYWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYWN0U3RlcCA9IGZhY3QuaXNTdGVwKCk7XG5cbiAgICAgICAgICAgIGlmIChmYWN0U3RlcCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIGdldExhc3RTdGVwKCkge1xuICAgIGxldCBsYXN0U3RlcCA9IG51bGw7XG5cbiAgICBjb25zdCBzdGVwcyA9IHRoaXMuZ2V0U3RlcHMoKSxcbiAgICAgICAgICBzdGVwc0xlbmd0aCA9IHN0ZXBzLmxlbmd0aDtcblxuICAgIGlmIChzdGVwc0xlbmd0aCA+IDApIHtcbiAgICAgIGxhc3RTdGVwID0gbGFzdChzdGVwcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RTdGVwO1xuICB9XG5cbiAgaXNNZXRhTGV2ZWwoKSB7XG4gICAgbGV0IG1ldGFMZXZlbDtcblxuICAgIGlmICh0aGlzLmNvbnN0cmFpbnRzICE9PSBudWxsKSB7XG4gICAgICBtZXRhTGV2ZWwgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgIG1ldGFMZXZlbCA9IGNvbnRleHQuaXNNZXRhTGV2ZWwoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YUxldmVsO1xuICB9XG5cbiAgYWRkQXNzaWdubWVudChhc3NpZ25tZW50KSB7XG4gICAgdGhpcy5hc3NpZ25tZW50cy5wdXNoKGFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYXNzaWduQXNzaWdubWVudHMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXM7IC8vL1xuXG4gICAgdGhpcy5hc3NpZ25tZW50cy5mb3JFYWNoKChhc3NpZ25tZW50KSA9PiB7XG4gICAgICBhc3NpZ25tZW50KGNvbnRleHQpO1xuICAgIH0pO1xuXG4gICAgY2xlYXIodGhpcy5hc3NpZ25tZW50cyk7XG4gIH1cblxuICBhZGREZWNsYXJlZFZhcmlhYmxlKGRlY2xhcmVkVmFyaWFibGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZVN0cmluZyA9IGRlY2xhcmVkVmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2RlY2xhcmVkVmFyaWFibGVTdHJpbmd9JyBkZWNsYXJlZCB2YXJpYWJsZSB0byB0aGUgdGVtZXJpYyBjb250ZXh0Li4uYCk7XG5cbiAgICB0aGlzLmRlY2xhcmVkVmFyaWFibGVzLnB1c2goZGVjbGFyZWRWYXJpYWJsZSk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7ZGVjbGFyZWRWYXJpYWJsZVN0cmluZ30nIGRlY2xhcmVkIHZhcmlhYmxlIHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpIHtcbiAgICBpZiAodGhpcy5jb25zdHJhaW50cyA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgICBjb250ZXh0LmFkZENvbnN0cmFpbnQoY29uc3RyYWludCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgY29uc3RyYWludEEgPSBjb25zdHJhaW50LCAvLy9cbiAgICAgICAgICBjb25zdHJhaW50U3RyaW5nID0gY29uc3RyYWludC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgdG8gdGhlIHRlbWVyaWMgY29udGV4dC4uLmApO1xuXG4gICAgY29uc3QgY29uc3RyYWludEIgPSB0aGlzLmNvbnN0cmFpbnRzLmZpbmQoKGNvbnN0cmFpbnQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnN0cmFpbnRCID0gY29uc3RyYWludCwgLy8vXG4gICAgICAgICAgICBjb25zdHJhaW50QUVxdWFsVG9Bc3N1bXB0aW9uQiA9IGNvbnN0cmFpbnRBLmlzRXF1YWxUbyhjb25zdHJhaW50Qik7XG5cbiAgICAgIGlmIChjb25zdHJhaW50QUVxdWFsVG9Bc3N1bXB0aW9uQikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgaWYgKGNvbnN0cmFpbnRCICE9PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byB0aGUgdGVtZXJpYyBjb250ZXh0LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnN0cmFpbnRzLnB1c2goY29uc3RyYWludCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uYWRkZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50IHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGRHZW5lcmF0b3IoZ2VuZXJhdG9yKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRHZW5lcmF0b3IoZ2VuZXJhdG9yKTtcbiAgfVxuXG4gIGFkZENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvcik7XG4gIH1cblxuICBhZGRGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBmYWN0T3JTdWJwcm9vZlN0cmluZyA9IGZhY3RPclN1YnByb29mLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHtmYWN0T3JTdWJwcm9vZlN0cmluZ30nIGZhY3Qgb3Igc3VicHJvb2YgdG8gdGhlIHRlbWVyaWMgY29udGV4dC4uLmApO1xuXG4gICAgdGhpcy5mYWN0T3JTdWJwcm9vZnMucHVzaChmYWN0T3JTdWJwcm9vZik7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7ZmFjdE9yU3VicHJvb2ZTdHJpbmd9JyBmYWN0IG9yIHN1YnByb29mIHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGVzID0gdGhpcy5nZXREZWNsYXJlZFZhcmlhYmxlcygpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSBkZWNsYXJlZFZhcmlhYmxlcy5maW5kKChkZWNsYXJlZFZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIgPSBkZWNsYXJlZFZhcmlhYmxlLmNvbXBhcmVWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgICAgICAgaWYgKHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGU7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpIHtcbiAgICBsZXQgZGVjbGFyZWRWYXJpYWJsZXM7XG5cbiAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IHRoaXMuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoKTtcblxuICAgIGRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXMuZmlsdGVyKChkZWNsYXJlZFZhcmlhYmxlKSA9PiB7XG4gICAgICBjb25zdCB2YXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIgPSBkZWNsYXJlZFZhcmlhYmxlLmNvbXBhcmVWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlcztcbiAgfVxuXG4gIGZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSkge1xuICAgIGxldCBjb25zdHJhaW50O1xuXG4gICAgaWYgKHRoaXMuY29uc3RyYWludHMgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0cmFpbnQgPSBzdXBlci5maW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdHJhaW50ID0gdGhpcy5jb25zdHJhaW50cy5maW5kKChjb25zdHJhaW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnROb2RlTWF0Y2hlcyA9IGNvbnN0cmFpbnQubWF0Y2hDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSk7XG5cbiAgICAgICAgaWYgKGNvbnN0cmFpbnROb2RlTWF0Y2hlcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KSB8fCBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjb25zdHJhaW50O1xuICB9XG5cbiAgaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGUgPSB0aGlzLmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCA9IChkZWNsYXJlZFZhcmlhYmxlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzVGVybUdyb3VuZGVkKHRlcm0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gdGhpcy5nZXRFcXVpdmFsZW5jZXMoKSxcbiAgICAgICAgICBncm91bmRlZFRlcm1zID0gW10sXG4gICAgICAgICAgZGVmaW5lZFZhcmlhYmxlcyA9IFtdO1xuXG4gICAgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyhlcXVpdmFsZW5jZXMsIGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgY29uc3QgdGVybU1hdGNoZXNHcm91bmRlZFRlcm0gPSBncm91bmRlZFRlcm1zLnNvbWUoKGdyb3VuZGVkVGVybSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ3JvdW5kZWRUZXJtTm9kZSA9IGdyb3VuZGVkVGVybS5nZXROb2RlKCksXG4gICAgICAgICAgICAgICAgICBncm91bmRlZFRlcm1Ob2RlTWF0Y2hlcyA9IHRlcm0ubWF0Y2hUZXJtTm9kZShncm91bmRlZFRlcm1Ob2RlKTtcblxuICAgICAgICAgICAgaWYgKGdyb3VuZGVkVGVybU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRlcm1Hcm91bmRlZCA9IHRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtOyAvLy9cblxuICAgIHJldHVybiB0ZXJtR3JvdW5kZWQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoY29udGV4dCkge1xuICAgIGNvbnN0IGFzc2lnbm1lbnRzID0gW10sXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gW10sXG4gICAgICAgICAgY29uc3RyYWludHMgPSBudWxsLFxuICAgICAgICAgIGZhY3RPclN1YnByb29mcyA9IFtdLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gW10sXG4gICAgICAgICAgdGVtZW5pY0NvbnRleHQgPSBuZXcgVGVtZW5pY0NvbnRleHQoY29udGV4dCwgY29uc3RyYWludHMsIGFzc2lnbm1lbnRzLCBlcXVpdmFsZW5jZXMsIGZhY3RPclN1YnByb29mcywgZGVjbGFyZWRWYXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIHRlbWVuaWNDb250ZXh0O1xuICB9XG5cbiAgc3RhdGljIGZyb21Db25zdHJhaW50cyhjb25zdHJhaW50cywgY29udGV4dCkge1xuICAgIGNvbnN0IGFzc2lnbm1lbnRzID0gW10sXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gW10sXG4gICAgICAgICAgZmFjdE9yU3VicHJvb2ZzID0gW10sXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICB0ZW1lbmljQ29udGV4dCA9IG5ldyBUZW1lbmljQ29udGV4dChjb250ZXh0LCBjb25zdHJhaW50cywgYXNzaWdubWVudHMsIGVxdWl2YWxlbmNlcywgZmFjdE9yU3VicHJvb2ZzLCBkZWNsYXJlZFZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gdGVtZW5pY0NvbnRleHQ7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGVtZW5pY0NvbnRleHQ7Il0sIm5hbWVzIjpbImxhc3QiLCJwdXNoIiwiY2xlYXIiLCJhcnJheVV0aWxpdGllcyIsIlRlbWVuaWNDb250ZXh0IiwiQ29udGV4dCIsImNvbnRleHQiLCJjb25zdHJhaW50cyIsImFzc2lnbm1lbnRzIiwiZXF1aXZhbGVuY2VzIiwiZmFjdE9yU3VicHJvb2ZzIiwiZGVjbGFyZWRWYXJpYWJsZXMiLCJnZXRDb25zdHJhaW50cyIsImdldEFzc2lnbm1lbnRzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZ2V0Q29udGV4dCIsIm1lcmdlRXF1aXZhbGVuY2VzIiwiZ2V0RmFjdE9yU3VicHJvb2ZzIiwiZ2V0RGVjbGFyZWRWYXJpYWJsZXMiLCJzZXRFcXVpdmFsZW5jZXMiLCJnZXRGYWN0cyIsImZhY3RzIiwiZmlsdGVyIiwiZmFjdE9yU3VicHJvb2YiLCJmYWN0T3JTdWJwcm9vZkZhY3QiLCJpc0ZhY3QiLCJnZXRTdGVwcyIsInN0ZXBzIiwiZmFjdCIsImZhY3RTdGVwIiwiaXNTdGVwIiwiZ2V0TGFzdFN0ZXAiLCJsYXN0U3RlcCIsInN0ZXBzTGVuZ3RoIiwibGVuZ3RoIiwiaXNNZXRhTGV2ZWwiLCJtZXRhTGV2ZWwiLCJhZGRBc3NpZ25tZW50IiwiYXNzaWdubWVudCIsImFzc2lnbkFzc2lnbm1lbnRzIiwiZm9yRWFjaCIsImFkZERlY2xhcmVkVmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlIiwiZGVjbGFyZWRWYXJpYWJsZVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVidWciLCJhZGRDb25zdHJhaW50IiwiY29uc3RyYWludCIsImNvbnN0cmFpbnRBIiwiY29uc3RyYWludFN0cmluZyIsImNvbnN0cmFpbnRCIiwiZmluZCIsImNvbnN0cmFpbnRBRXF1YWxUb0Fzc3VtcHRpb25CIiwiaXNFcXVhbFRvIiwiYWRkR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiYWRkQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvciIsImFkZEZhY3RPclN1YnByb29mIiwiZmFjdE9yU3VicHJvb2ZTdHJpbmciLCJmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyIiwiY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllciIsImZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyIiwiZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlIiwiY29uc3RyYWludE5vZGUiLCJjb25zdHJhaW50Tm9kZU1hdGNoZXMiLCJtYXRjaENvbnN0cmFpbnROb2RlIiwiaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyIiwiZGVjbGFyZWRWYXJpYWJsZVByZXNlbnQiLCJpc1Rlcm1Hcm91bmRlZCIsInRlcm0iLCJncm91bmRlZFRlcm1zIiwiZGVmaW5lZFZhcmlhYmxlcyIsInNlcGFyYXRlR3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXMiLCJ0ZXJtTWF0Y2hlc0dyb3VuZGVkVGVybSIsInNvbWUiLCJncm91bmRlZFRlcm0iLCJncm91bmRlZFRlcm1Ob2RlIiwiZ2V0Tm9kZSIsImdyb3VuZGVkVGVybU5vZGVNYXRjaGVzIiwibWF0Y2hUZXJtTm9kZSIsInRlcm1Hcm91bmRlZCIsImZyb21Ob3RoaW5nIiwidGVtZW5pY0NvbnRleHQiLCJmcm9tQ29uc3RyYWludHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWlUQTs7O2VBQUE7OzsyQkEvUytCO2dFQUVYOzhCQUV3RDs7Ozs7O0FBRTVFLE1BQU0sRUFBRUEsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLEtBQUss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
@@ -12,6 +12,7 @@ const _occamlanguages = require("occam-languages");
12
12
  const _elements = /*#__PURE__*/ _interop_require_wildcard(require("../../elements"));
13
13
  const _assertion = /*#__PURE__*/ _interop_require_default(require("../assertion"));
14
14
  const _state = require("../../utilities/state");
15
+ const _context = require("../../utilities/context");
15
16
  function _interop_require_default(obj) {
16
17
  return obj && obj.__esModule ? obj : {
17
18
  default: obj
@@ -58,7 +59,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
58
59
  }
59
60
  return newObj;
60
61
  }
61
- const { cut, some } = _occamlanguages.continuationUtilities, { unbreakable } = _occamlanguages.breakPointUtilities;
62
+ const { unbreakable } = _occamlanguages.breakPointUtilities, { cut, all, some, every, isolate } = _occamlanguages.continuationUtilities;
62
63
  const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.default {
63
64
  constructor(context, string, node, breakPoint, link, frame){
64
65
  super(context, string, node, breakPoint);
@@ -75,105 +76,101 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
75
76
  const node = this.getNode(), schemaAssertionNode = node; ///
76
77
  return schemaAssertionNode;
77
78
  }
79
+ isSingular() {
80
+ return this.frame.isSingular();
81
+ }
78
82
  getAssumptions() {
79
83
  return this.frame.getAssumptions();
80
84
  }
81
85
  getMetavariable() {
82
86
  return this.frame.getMetavariable();
83
87
  }
84
- getImplicitAssumptions(context) {
88
+ getImplicitAssumptions(context, forward, back) {
85
89
  const implicitAssumptions = [], metavariable = this.getMetavariable();
86
- if (metavariable !== null) {
87
- const { ImplicitAssumption } = _elements.default, facts = context.getFacts();
88
- facts.forEach((fact)=>{
89
- const statement = fact.getStatement(), implicitAssumption = ImplicitAssumption.fromStatement(statement, context);
90
- implicitAssumption.verify(context, (implicitAssumption, context)=>true); ///
91
- implicitAssumptions.push(implicitAssumption);
92
- });
90
+ if (metavariable === null) {
91
+ return forward(implicitAssumptions, context, back);
93
92
  }
94
- return implicitAssumptions;
93
+ const facts = context.getFacts();
94
+ facts.forEach((fact)=>{
95
+ const { ImplicitAssumption } = _elements.default, statement = fact.getStatement(), implicitAssumption = ImplicitAssumption.fromStatement(statement, context);
96
+ implicitAssumptions.push(implicitAssumption);
97
+ });
98
+ return every(implicitAssumptions, (implicitAssumption, context, forward, back)=>{
99
+ return implicitAssumption.verify(context, forward, back);
100
+ }, context, (context, back)=>{
101
+ return forward(implicitAssumptions, context, back);
102
+ }, back);
95
103
  }
96
104
  verify = unbreakable(function(context, forward, back) {
97
105
  forward = cut(forward, back); ///
98
106
  const schemaAssertionString = this.getString(); ///
99
107
  context.trace(`Verifying the '${schemaAssertionString}' schema assertion...`);
100
- return (0, _state.declare)((state)=>{
101
- return this.validate(state, context, (schemaAssertion, context, back)=>{
102
- context.debug(`...verified the '${schemaAssertionString}' schema assertion.`);
103
- return forward(context, back);
104
- }, back);
108
+ return isolate((context, forward, back)=>{
109
+ return (0, _state.declare)((state)=>{
110
+ return this.validate(state, context, (schemaAssertion, context, back)=>{
111
+ return forward(back);
112
+ }, back);
113
+ });
114
+ }, context, (context, back)=>{
115
+ context.debug(`...verified the '${schemaAssertionString}' schema assertion.`);
116
+ return forward(context, back);
117
+ }, (exception)=>{
118
+ if (exception) {
119
+ return back(exception);
120
+ }
121
+ context.trace(`Unable to verify the '${schemaAssertionString}' schema assertion.`);
122
+ return back();
105
123
  });
106
124
  });
107
125
  apply = unbreakable(function(step, context, forward, back) {
108
126
  forward = cut(forward, back); ///
109
- const schemas = context.getSchemas(), statement = step.getStatement(), schemaAssertion = this, schemaAssertionString = this.getString();
127
+ const schemas = context.getSchemas(), statement = step.getStatement(), schemaAssertion = this, schemaAssertionString = this.getString(); ///
110
128
  context.trace(`Applying the '${schemaAssertionString}' schema assertion...`);
111
129
  return some(schemas, (schema, forward, back)=>{
112
- return schema.unifyStatementAndSchemaAssertion(statement, schemaAssertion, context, (context, back)=>{
130
+ return schema.apply(statement, schemaAssertion, context, (context, back)=>{
113
131
  context.debug(`...applied the '${schemaAssertionString}' schema assertion.`);
114
132
  return forward(context, back);
115
133
  }, back);
116
134
  }, forward, back);
117
135
  });
118
136
  validate(state, context, forward, back) {
119
- let validates;
120
- const schameAssertionString = this.getString(); ///
121
- context.trace(`Validating the '${schameAssertionString}' schame assertion...`);
122
- let assertion;
123
- assertion = this.findAssertion(context);
124
- if (assertion !== null) {
125
- const schameAssertion = assertion; ///
126
- context.debug(`The '${schameAssertionString}' schame assertion is already present.`);
127
- validates = continuation(schameAssertion, context);
128
- } else {
129
- assertion = this; ///
130
- const validateFrame = this.validateFrame.bind(this), validateLink = this.validateLink.bind(this);
131
- validates = all([
132
- validateFrame,
133
- validateLink
134
- ], state, context, (state, context)=>{
135
- let validates;
136
- const schameAssertion = assertion; ///
137
- validates = continuation(schameAssertion, context);
138
- return validates;
139
- });
140
- }
141
- if (validates) {
142
- context.debug(`...validated the '${schameAssertionString}' schame assertion.`);
143
- }
144
- return validates;
145
- }
146
- validateFrame(state, context, forward, back) {
147
- let frameValidates;
148
- const schameAssertionString = this.getString(); ///
149
- context.trace(`Validating the '${schameAssertionString}' schame assertion's frame...`);
150
- frameValidates = this.frame.validate(state, context, (frame, context)=>{
151
- let validates;
152
- this.frame = frame;
153
- validates = continuation(state, context);
154
- return validates;
155
- });
156
- if (frameValidates) {
157
- context.debug(`...validated the '${schameAssertionString}' schame assertion's frame.`);
158
- }
159
- return frameValidates;
137
+ const schemaAssertionString = this.getString(); ///
138
+ context.trace(`Validating the '${schemaAssertionString}' schema assertion...`);
139
+ return isolate((state, context, forward, back)=>{
140
+ return (0, _context.attempt)((context)=>{
141
+ const validateLink = this.validateLink.bind(this), validateFrame = this.validateFrame.bind(this);
142
+ return all([
143
+ validateLink,
144
+ validateFrame
145
+ ], state, context, (state, context, back)=>{
146
+ this.commit(context);
147
+ return forward(back);
148
+ }, back);
149
+ }, context);
150
+ }, state, context, (state, context, back)=>{
151
+ context.debug(`...validated the '${schemaAssertionString}' schema assertion.`);
152
+ return forward(context, back);
153
+ }, back);
160
154
  }
161
155
  validateLink(state, context, forward, back) {
162
- let linkValidates;
163
- const schameAssertionString = this.getString(); ///
164
- context.trace(`Validating the '${schameAssertionString}' schame assertion's link...`);
165
- linkValidates = this.link.validate(state, context, (link, context)=>{
166
- let validates;
156
+ const schemaAssertionString = this.getString(); ///
157
+ context.trace(`Validating the '${schemaAssertionString}' schema assertion's link...`);
158
+ return this.link.validate(state, context, (link, context, back)=>{
167
159
  this.link = link;
168
- validates = continuation(state, context);
169
- return validates;
170
- });
171
- if (linkValidates) {
172
- context.debug(`...validated the '${schameAssertionString}' schame assertion's link.`);
173
- }
174
- return linkValidates;
160
+ context.debug(`...validated the '${schemaAssertionString}' schema assertion's link.`);
161
+ return forward(state, context, back);
162
+ }, back);
163
+ }
164
+ validateFrame(state, context, forward, back) {
165
+ const schemaAssertionString = this.getString(); ///
166
+ context.trace(`Validating the '${schemaAssertionString}' schema assertion's frame...`);
167
+ return this.frame.validate(state, context, (frame, context, back)=>{
168
+ this.frame = frame;
169
+ context.debug(`...validated the '${schemaAssertionString}' schema assertion's frame.`);
170
+ return forward(state, context, back);
171
+ }, back);
175
172
  }
176
173
  static name = "SchemaAssertion";
177
174
  });
178
175
 
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcblxuY29uc3QgeyBjdXQsIHNvbWUgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTY2hlbWFBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIGZyYW1lKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuICB9XG5cbiAgZ2V0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5saW5rO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBnZXRTY2hlbWFBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzY2hlbWFBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNjaGVtYUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICBnZXRBc3N1bXB0aW9ucygpIHsgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0QXNzdW1wdGlvbnMoKTsgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0TWV0YXZhcmlhYmxlKCk7IH1cblxuICBnZXRJbXBsaWNpdEFzc3VtcHRpb25zKGNvbnRleHQpIHtcbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25zID0gW10sXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gdGhpcy5nZXRNZXRhdmFyaWFibGUoKTtcblxuICAgIGlmIChtZXRhdmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHsgSW1wbGljaXRBc3N1bXB0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICAgIGZhY3RzID0gY29udGV4dC5nZXRGYWN0cygpO1xuXG4gICAgICBmYWN0cy5mb3JFYWNoKChmYWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGZhY3QuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbiA9IEltcGxpY2l0QXNzdW1wdGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uLnZlcmlmeShjb250ZXh0LCAoaW1wbGljaXRBc3N1bXB0aW9uLCBjb250ZXh0KSA9PiB0cnVlKSAgLy8vXG5cbiAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9ucy5wdXNoKGltcGxpY2l0QXNzdW1wdGlvbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9ucztcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBzY2hlbWFBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCAsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYXBwbHkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RlcCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2NoZW1hcyA9IGNvbnRleHQuZ2V0U2NoZW1hcygpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gc29tZShzY2hlbWFzLCAoc2NoZW1hLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gc2NoZW1hLnVuaWZ5U3RhdGVtZW50QW5kU2NoZW1hQXNzZXJ0aW9uKHN0YXRlbWVudCwgc2NoZW1hQXNzZXJ0aW9uLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgZm9yd2FyZCwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzY2hhbWVBc3NlcnRpb24gPSBhc3NlcnRpb247ICAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc2NoYW1lQXNzZXJ0aW9uLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICBjb25zdCB2YWxpZGF0ZUZyYW1lID0gdGhpcy52YWxpZGF0ZUZyYW1lLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZUxpbmsgPSB0aGlzLnZhbGlkYXRlTGluay5iaW5kKHRoaXMpO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBhbGwoW1xuICAgICAgICB2YWxpZGF0ZUZyYW1lLFxuICAgICAgICB2YWxpZGF0ZUxpbmtcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICBjb25zdCBzY2hhbWVBc3NlcnRpb24gPSBhc3NlcnRpb247ICAvLy9cblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc2NoYW1lQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZUZyYW1lKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGZyYW1lVmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIGZyYW1lLi4uYCk7XG5cbiAgICBmcmFtZVZhbGlkYXRlcyA9IHRoaXMuZnJhbWUudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChmcmFtZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGZyYW1lVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24ncyBmcmFtZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhbWVWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZUxpbmsoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgbGlua1ZhbGlkYXRlcztcblxuICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24ncyBsaW5rLi4uYCk7XG5cbiAgICBsaW5rVmFsaWRhdGVzID0gdGhpcy5saW5rLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAobGluaywgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5saW5rID0gbGluaztcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmIChsaW5rVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24ncyBsaW5rLmApO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5rVmFsaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNjaGVtYUFzc2VydGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiY3V0Iiwic29tZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNjaGVtYUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxpbmsiLCJmcmFtZSIsImdldExpbmsiLCJnZXRGcmFtZSIsImdldFNjaGVtYUFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic2NoZW1hQXNzZXJ0aW9uTm9kZSIsImdldEFzc3VtcHRpb25zIiwiZ2V0TWV0YXZhcmlhYmxlIiwiZ2V0SW1wbGljaXRBc3N1bXB0aW9ucyIsImltcGxpY2l0QXNzdW1wdGlvbnMiLCJtZXRhdmFyaWFibGUiLCJJbXBsaWNpdEFzc3VtcHRpb24iLCJlbGVtZW50cyIsImZhY3RzIiwiZ2V0RmFjdHMiLCJmb3JFYWNoIiwiZmFjdCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImltcGxpY2l0QXNzdW1wdGlvbiIsImZyb21TdGF0ZW1lbnQiLCJ2ZXJpZnkiLCJwdXNoIiwiZm9yd2FyZCIsImJhY2siLCJzY2hlbWFBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwic2NoZW1hQXNzZXJ0aW9uIiwiZGVidWciLCJhcHBseSIsInN0ZXAiLCJzY2hlbWFzIiwiZ2V0U2NoZW1hcyIsInNjaGVtYSIsInVuaWZ5U3RhdGVtZW50QW5kU2NoZW1hQXNzZXJ0aW9uIiwidmFsaWRhdGVzIiwic2NoYW1lQXNzZXJ0aW9uU3RyaW5nIiwiYXNzZXJ0aW9uIiwiZmluZEFzc2VydGlvbiIsInNjaGFtZUFzc2VydGlvbiIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlRnJhbWUiLCJiaW5kIiwidmFsaWRhdGVMaW5rIiwiYWxsIiwiZnJhbWVWYWxpZGF0ZXMiLCJsaW5rVmFsaWRhdGVzIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7Z0NBWDJEO2tFQUV0QztrRUFDQzt1QkFHRTs7Ozs7Ozs7Ozs7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
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGF0dGVtcHQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgY3V0LCBhbGwsIHNvbWUsIGV2ZXJ5LCBpc29sYXRlIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTY2hlbWFBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIGZyYW1lKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuICB9XG5cbiAgZ2V0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5saW5rO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBnZXRTY2hlbWFBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzY2hlbWFBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNjaGVtYUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICBpc1Npbmd1bGFyKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5pc1Npbmd1bGFyKCk7IH1cblxuICBnZXRBc3N1bXB0aW9ucygpIHsgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0QXNzdW1wdGlvbnMoKTsgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0TWV0YXZhcmlhYmxlKCk7IH1cblxuICBnZXRJbXBsaWNpdEFzc3VtcHRpb25zKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25zID0gW10sXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gdGhpcy5nZXRNZXRhdmFyaWFibGUoKTtcblxuICAgIGlmIChtZXRhdmFyaWFibGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGltcGxpY2l0QXNzdW1wdGlvbnMsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGZhY3RzID0gY29udGV4dC5nZXRGYWN0cygpO1xuXG4gICAgZmFjdHMuZm9yRWFjaCgoZmFjdCkgPT4ge1xuICAgICAgY29uc3QgeyBJbXBsaWNpdEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgc3RhdGVtZW50ID0gZmFjdC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbiA9IEltcGxpY2l0QXNzdW1wdGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICAgIGltcGxpY2l0QXNzdW1wdGlvbnMucHVzaChpbXBsaWNpdEFzc3VtcHRpb24pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGV2ZXJ5KGltcGxpY2l0QXNzdW1wdGlvbnMsIChpbXBsaWNpdEFzc3VtcHRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb24udmVyaWZ5KGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gZm9yd2FyZChpbXBsaWNpdEFzc3VtcHRpb25zLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBzY2hlbWFBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICBhcHBseSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChzdGVwLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBzY2hlbWFzID0gY29udGV4dC5nZXRTY2hlbWFzKCksXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBzY2hlbWFBc3NlcnRpb24gPSB0aGlzLCAvLy9cbiAgICAgICAgICBzY2hlbWFBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gc29tZShzY2hlbWFzLCAoc2NoZW1hLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gc2NoZW1hLmFwcGx5KHN0YXRlbWVudCwgc2NoZW1hQXNzZXJ0aW9uLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgZm9yd2FyZCwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc2NoZW1hQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2YWxpZGF0ZUxpbmsgPSB0aGlzLnZhbGlkYXRlTGluay5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZUZyYW1lID0gdGhpcy52YWxpZGF0ZUZyYW1lLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmFsaWRhdGVMaW5rLFxuICAgICAgICAgIHZhbGlkYXRlRnJhbWVcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlTGluayhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24ncyBsaW5rLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5saW5rLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAobGluaywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5saW5rID0gbGluaztcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uJ3MgbGluay5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVGcmFtZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24ncyBmcmFtZS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuZnJhbWUudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChmcmFtZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24ncyBmcmFtZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNjaGVtYUFzc2VydGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiYWxsIiwic29tZSIsImV2ZXJ5IiwiaXNvbGF0ZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlNjaGVtYUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxpbmsiLCJmcmFtZSIsImdldExpbmsiLCJnZXRGcmFtZSIsImdldFNjaGVtYUFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic2NoZW1hQXNzZXJ0aW9uTm9kZSIsImlzU2luZ3VsYXIiLCJnZXRBc3N1bXB0aW9ucyIsImdldE1ldGF2YXJpYWJsZSIsImdldEltcGxpY2l0QXNzdW1wdGlvbnMiLCJmb3J3YXJkIiwiYmFjayIsImltcGxpY2l0QXNzdW1wdGlvbnMiLCJtZXRhdmFyaWFibGUiLCJmYWN0cyIsImdldEZhY3RzIiwiZm9yRWFjaCIsImZhY3QiLCJJbXBsaWNpdEFzc3VtcHRpb24iLCJlbGVtZW50cyIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImltcGxpY2l0QXNzdW1wdGlvbiIsImZyb21TdGF0ZW1lbnQiLCJwdXNoIiwidmVyaWZ5Iiwic2NoZW1hQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsInNjaGVtYUFzc2VydGlvbiIsImRlYnVnIiwiZXhjZXB0aW9uIiwiYXBwbHkiLCJzdGVwIiwic2NoZW1hcyIsImdldFNjaGVtYXMiLCJzY2hlbWEiLCJhdHRlbXB0IiwidmFsaWRhdGVMaW5rIiwiYmluZCIsInZhbGlkYXRlRnJhbWUiLCJjb21taXQiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0FaMkQ7a0VBRXRDO2tFQUNDO3VCQUdFO3lCQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -173,4 +173,4 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
173
173
  }
174
174
  });
175
175
 
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IHJlY29uY2lsZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgc2lnbmF0dXJlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBjdXQgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTaWduYXR1cmVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIHRlcm1zKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybXM7XG4gIH1cblxuICBnZXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmxpbms7XG4gIH1cblxuICBnZXRTaWduYXR1cmVBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2ZXJpZnkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzaWduYXR1cmVBc3NlcnRpb24sIGNvbnRleHQgLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFwcGx5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgbGV0IHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsodGhpcy5saW5rKSxcbiAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICByZXR1cm4gYXhpb20udW5pZnlTaWduYXR1cmVBc3NlcnRpb24oc2lnbmF0dXJlQXNzZXJ0aW9uLCBjb250ZXh0LCAoc2lnbmF0dXJlQXNzZXJ0aW9uVW5pZmllcykgPT4ge1xuICAgICAgICBpZiAoIXNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMpIHtcbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0LmRlYnVnKGBhcHBsaWVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIGF4aW9tLnVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyhzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm1zID0gdGhpcy52YWxpZGF0ZVRlcm1zLmJpbmQodGhpcyksXG4gICAgICAgICAgdmFsaWRhdGVMaW5rID0gdGhpcy52YWxpZGF0ZUxpbmsuYmluZCh0aGlzKTtcblxuICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICB2YWxpZGF0ZVRlcm1zLFxuICAgICAgdmFsaWRhdGVMaW5rXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybSh0ZXJtLCB0ZXJtcywgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgdGVybVZhbGlkYXRlcztcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgdGVybVZhbGlkYXRlcyA9IHRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24odGVybXMsIHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy4uLmApO1xuXG4gICAgY29uc3QgdGVybXMgPSBbXSxcbiAgICAgICAgICB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpO1xuXG4gICAgdGVybXNWYWxpZGF0ZSA9IGV2ZXJ5KHRoaXMudGVybXMsIHZhbGlkYXRlVGVybSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCAodGVybXMsIHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgICAgdGVybXNWYWxpZGF0ZSA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtc1ZhbGlkYXRlKSB7XG4gICAgICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRlcm1zVmFsaWRhdGU7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSl7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNWYWxpZGF0ZVxuICB9XG5cbiAgdmFsaWRhdGVMaW5rKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGxpbmtWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgbGluay4uLmApO1xuXG4gICAgbGlua1ZhbGlkYXRlcyA9IHRoaXMubGluay52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxpbmssIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayhsaW5rKTtcblxuICAgICAgaWYgKGF4aW9tICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGF4aW9tU2F0aXNmaWFibGUgPSBheGlvbS5pc1NhdGlzZmlhYmxlKCk7XG5cbiAgICAgICAgaWYgKGF4aW9tU2F0aXNmaWFibGUpIHtcbiAgICAgICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgdGhpcy5saW5rID0gbGluaztcblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGxpbmtWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIGxpbmsuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmtWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSBjbGFpbS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayh0aGlzLmxpbmspO1xuXG4gICAgICByZXR1cm4gYXhpb20udW5pZnlUZXJtcyh0aGlzLnRlcm1zLCBjb250ZXh0LCAodGVybXNVbmlmeSkgPT4ge1xuICAgICAgICBpZiAoIXRlcm1zVW5pZnkpIHtcbiAgICAgICAgICBjb25zdCBjbGFpbVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY2xhaW1VbmlmaWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBheGlvbS51bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCAoY2xhaW1VbmlmaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKGNsYWltVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjbGFpbVVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjbGFpbVVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNpZ25hdHVyZUFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tU3RlcChzdGVwLCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0ZXAuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IHNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IHNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbjtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiY3V0IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiU2lnbmF0dXJlQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibGluayIsInRlcm1zIiwiZ2V0VGVybXMiLCJnZXRMaW5rIiwiZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJzaWduYXR1cmVBc3NlcnRpb25Ob2RlIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJzaWduYXR1cmVBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwic2lnbmF0dXJlQXNzZXJ0aW9uIiwiZGVidWciLCJhcHBseSIsInN0ZXAiLCJmYWN0T3JTdWJwcm9vZnMiLCJzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkiLCJyZWNvbmNpbGUiLCJheGlvbSIsImZpbmRBeGlvbUJ5TGluayIsInVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uIiwic2lnbmF0dXJlQXNzZXJ0aW9uVW5pZmllcyIsImNvbnRpbnVhdGlvbiIsInVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyIsImFzc2VydGlvbiIsInZhbGlkYXRlVGVybXMiLCJiaW5kIiwidmFsaWRhdGVMaW5rIiwidmFsaWRhdGVzIiwiYWxsIiwiYWRkQXNzZXJ0aW9uIiwidmFsaWRhdGVUZXJtIiwidGVybSIsInRlcm1WYWxpZGF0ZXMiLCJ0ZXJtU3RyaW5nIiwicHVzaCIsInRlcm1zVmFsaWRhdGUiLCJldmVyeSIsImxpbmtWYWxpZGF0ZXMiLCJheGlvbVNhdGlzZmlhYmxlIiwiaXNTYXRpc2ZpYWJsZSIsInVuaWZ5Q2xhaW0iLCJjbGFpbSIsImNsYWltU3RyaW5nIiwidW5pZnlUZXJtcyIsInRlcm1zVW5pZnkiLCJjbGFpbVVuaWZpZXMiLCJjb21taXQiLCJuYW1lIiwiZnJvbVN0ZXAiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsInNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWjJEO2tFQUVyQzswQkFFQzt1QkFDQzt5QkFDRTt5QkFDMEI7Ozs7OztBQUVwRCxNQUFNLEVBQUVBLEdBQUcsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDL0IsRUFBRUMsV0FBVyxFQUFFLEdBQUdDLG1DQUFtQjtNQUUzQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDJCQUEyQkMsa0JBQVM7SUFDOUQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLEtBQUssQ0FBRTtRQUMxRCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtJQUNmO0lBRUFDLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQ0QsS0FBSztJQUNuQjtJQUVBRSxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNILElBQUk7SUFDbEI7SUFFQUksNEJBQTRCO1FBQzFCLE1BQU1OLE9BQU8sSUFBSSxDQUFDTyxPQUFPLElBQ25CQyx5QkFBeUJSLE1BQU8sR0FBRztRQUV6QyxPQUFPUTtJQUNUO0lBRUFDLFNBQVNoQixZQUFZLFNBQVVLLE9BQU8sRUFBRVksT0FBTyxFQUFFQyxJQUFJO1FBQ25ERCxVQUFVbkIsSUFBSW1CLFNBQVNDLE9BQU8sR0FBRztRQUVqQyxNQUFNQywyQkFBMkIsSUFBSSxDQUFDQyxTQUFTLElBQUksR0FBRztRQUV0RGYsUUFBUWdCLEtBQUssQ0FBQyxDQUFDLGVBQWUsRUFBRUYseUJBQXlCLHdCQUF3QixDQUFDO1FBRWxGLE9BQU9HLElBQUFBLGNBQU8sRUFBQyxDQUFDQztZQUNkLE9BQU8sSUFBSSxDQUFDQyxR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
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IHJlY29uY2lsZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgc2lnbmF0dXJlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBjdXQgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTaWduYXR1cmVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIHRlcm1zKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybXM7XG4gIH1cblxuICBnZXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmxpbms7XG4gIH1cblxuICBnZXRTaWduYXR1cmVBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2ZXJpZnkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzaWduYXR1cmVBc3NlcnRpb24sIGNvbnRleHQgLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFwcGx5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgbGV0IHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsodGhpcy5saW5rKSxcbiAgICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgcmV0dXJuIGF4aW9tLnVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgKHNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMpID0+IHtcbiAgICAgICAgaWYgKCFzaWduYXR1cmVBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgYXBwbGllZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICBheGlvbS51bmlmeVN0ZXBBbmRGYWN0T3JTdWJwcm9vZnMoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgY29uc3QgdmFsaWRhdGVUZXJtcyA9IHRoaXMudmFsaWRhdGVUZXJtcy5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlTGluayA9IHRoaXMudmFsaWRhdGVMaW5rLmJpbmQodGhpcyk7XG5cbiAgICB2YWxpZGF0ZXMgPSBhbGwoW1xuICAgICAgdmFsaWRhdGVUZXJtcyxcbiAgICAgIHZhbGlkYXRlTGlua1xuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzaWduYXR1cmVBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0odGVybSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHRlcm1WYWxpZGF0ZXM7XG5cbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIHRlcm1WYWxpZGF0ZXMgPSB0ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHRlcm1zLCBzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1WYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1zKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHRlcm1zVmFsaWRhdGU7XG5cbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IHRlcm1zID0gW10sXG4gICAgICAgICAgdmFsaWRhdGVUZXJtID0gdGhpcy52YWxpZGF0ZVRlcm0uYmluZCh0aGlzKTtcblxuICAgIHRlcm1zVmFsaWRhdGUgPSBldmVyeSh0aGlzLnRlcm1zLCB2YWxpZGF0ZVRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgKHRlcm1zLCBzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHRlcm1zVmFsaWRhdGU7XG5cbiAgICAgIHRlcm1zVmFsaWRhdGUgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybXNWYWxpZGF0ZSkge1xuICAgICAgICB0aGlzLnRlcm1zID0gdGVybXM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0ZXJtc1ZhbGlkYXRlO1xuICAgIH0pO1xuXG4gICAgaWYgKHRlcm1zVmFsaWRhdGUpe1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgdGVybXMuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1zVmFsaWRhdGVcbiAgfVxuXG4gIHZhbGlkYXRlTGluayhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBsaW5rVmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIGxpbmsuLi5gKTtcblxuICAgIGxpbmtWYWxpZGF0ZXMgPSB0aGlzLmxpbmsudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChsaW5rLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsobGluayk7XG5cbiAgICAgIGlmIChheGlvbSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBheGlvbVNhdGlzZmlhYmxlID0gYXhpb20uaXNTYXRpc2ZpYWJsZSgpO1xuXG4gICAgICAgIGlmIChheGlvbVNhdGlzZmlhYmxlKSB7XG4gICAgICAgICAgdmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgIHRoaXMubGluayA9IGxpbms7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmIChsaW5rVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyBsaW5rLmApO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5rVmFsaWRhdGVzO1xuICB9XG5cbiAgdW5pZnlDbGFpbShjbGFpbSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gY2xhaW0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltIHdpdGggdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsodGhpcy5saW5rKTtcblxuICAgICAgcmV0dXJuIGF4aW9tLnVuaWZ5VGVybXModGhpcy50ZXJtcywgY29udGV4dCwgKHRlcm1zVW5pZnkpID0+IHtcbiAgICAgICAgaWYgKCF0ZXJtc1VuaWZ5KSB7XG4gICAgICAgICAgY29uc3QgY2xhaW1VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNsYWltVW5pZmllcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXhpb20udW5pZnlDbGFpbShjbGFpbSwgY29udGV4dCwgKGNsYWltVW5pZmllcykgPT4ge1xuICAgICAgICAgIGlmIChjbGFpbVVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2xhaW1VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmNvbW1pdCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY2xhaW1VbmlmaWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaWduYXR1cmVBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbVN0ZXAoc3RlcCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGVwLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImN1dCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxpbmsiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0TGluayIsImdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwic2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsInNpZ25hdHVyZUFzc2VydGlvbiIsImRlYnVnIiwiYXBwbHkiLCJzdGVwIiwiZmFjdE9yU3VicHJvb2ZzIiwic3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5IiwicmVjb25jaWxlIiwiYXhpb20iLCJmaW5kQXhpb21CeUxpbmsiLCJ1bmlmeVNpZ25hdHVyZUFzc2VydGlvbiIsInNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMiLCJjb250aW51YXRpb24iLCJ1bmlmeVN0ZXBBbmRGYWN0T3JTdWJwcm9vZnMiLCJhc3NlcnRpb24iLCJ2YWxpZGF0ZVRlcm1zIiwiYmluZCIsInZhbGlkYXRlTGluayIsInZhbGlkYXRlcyIsImFsbCIsImFkZEFzc2VydGlvbiIsInZhbGlkYXRlVGVybSIsInRlcm0iLCJ0ZXJtVmFsaWRhdGVzIiwidGVybVN0cmluZyIsInB1c2giLCJ0ZXJtc1ZhbGlkYXRlIiwiZXZlcnkiLCJsaW5rVmFsaWRhdGVzIiwiYXhpb21TYXRpc2ZpYWJsZSIsImlzU2F0aXNmaWFibGUiLCJ1bmlmeUNsYWltIiwiY2xhaW0iLCJjbGFpbVN0cmluZyIsInVuaWZ5VGVybXMiLCJ0ZXJtc1VuaWZ5IiwiY2xhaW1VbmlmaWVzIiwiY29tbWl0IiwibmFtZSIsImZyb21TdGVwIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVoyRDtrRUFFckM7MEJBRUM7dUJBQ0M7eUJBQ0U7eUJBQzBCOzs7Ozs7QUFFcEQsTUFBTSxFQUFFQSxHQUFHLEVBQUUsR0FBR0MscUNBQXFCLEVBQy9CLEVBQUVDLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFM0MsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQywyQkFBMkJDLGtCQUFTO0lBQzlELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxLQUFLLENBQUU7UUFDMUQsS0FBSyxDQUFDTCxTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLEtBQUssR0FBR0E7SUFDZjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNELEtBQUs7SUFDbkI7SUFFQUUsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO0lBQ2xCO0lBRUFJLDRCQUE0QjtRQUMxQixNQUFNTixPQUFPLElBQUksQ0FBQ08sT0FBTyxJQUNuQkMseUJBQXlCUixNQUFPLEdBQUc7UUFFekMsT0FBT1E7SUFDVDtJQUVBQyxTQUFTaEIsWUFBWSxTQUFVSyxPQUFPLEVBQUVZLE9BQU8sRUFBRUMsSUFBSTtRQUNuREQsVUFBVW5CLElBQUltQixTQUFTQyxPQUFPLEdBQUc7UUFFakMsTUFBTUMsMkJBQTJCLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7UUFFdERmLFFBQVFnQixLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLHlCQUF5Qix3QkFBd0IsQ0FBQztRQUVsRixPQUFPRyxJQUFBQSxjQUFPLEVBQUMsQ0FBQ0M7WUFDZCxPQUFPLElBQUksQ0FB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
@@ -71,19 +71,13 @@ const _default = (0, _elements.define)(class ImplicitAssumption extends _occamla
71
71
  }, back);
72
72
  }
73
73
  validateStatement(state, context, forward, back) {
74
- let statementValidates;
75
74
  const implicitAssumptionString = this.getString(); ///
76
75
  context.trace(`Validating the '${implicitAssumptionString}' implicit assumption's statement...`);
77
- statementValidates = this.statement.validate(state, context, (statement, context)=>{
78
- let validates;
76
+ return this.statement.validate(state, context, (statement, context, back)=>{
79
77
  this.statement = statement;
80
- validates = continuation(state, context);
81
- return validates;
82
- });
83
- if (statementValidates) {
84
- context.debug(`...validated the '${implicitAssumptionString}' implicit assumption's statement.`);
85
- }
86
- return statementValidates;
78
+ context.trace(`...validated the '${implicitAssumptionString}' implicit assumption's statement.`);
79
+ return forward(state, context, back);
80
+ }, back);
87
81
  }
88
82
  unifyStatement(statement, generalContext, specificContext) {
89
83
  debugger;
@@ -109,4 +103,4 @@ const _default = (0, _elements.define)(class ImplicitAssumption extends _occamla
109
103
  }
110
104
  });
111
105
 
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24vaW1wbGljaXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgYWJsYXRlLCBhdHRlbXB0LCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVJbXBsaWNpdEFzc3VtcHRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nRnJvbVN0YXRlbWVudCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBpbXBsaWNpdEFzc3VtcHRpb25Gcm9tSW1wbGljaXRBc3N1bXB0aW9uTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgaXNvbGF0ZSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgSW1wbGljaXRBc3N1bXB0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldEltcGxpY2l0QXNzdW1wdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9uTm9kZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5nZXRTdGF0ZW1lbnROb2RlKCk7IH1cblxuICBpc0VxdWFsVG8oaW1wbGljaXRBc3N1bXB0aW9uKSB7XG4gICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uTm9kZSA9IGltcGxpY2l0QXNzdW1wdGlvbi5nZXROb2RlKCksXG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoSW1wbGljaXRBc3N1bXB0aW9uTm9kZShpbXBsaWNpdEFzc3VtcHRpb25Ob2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hJbXBsaWNpdEFzc3VtcHRpb25Ob2RlKGltcGxpY2l0QXNzdW1wdGlvbk5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gaW1wbGljaXRBc3N1bXB0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgaW1wbGljaXQgYXNzdW1wdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCAsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24ncyBzdGF0ZW1lbnQuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudFZhbGlkYXRlcztcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGRlYnVnZ2VyXG5cbiAgICBsZXQgc3RhdGVtZW50VW5pZmllcztcblxuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBwcm9vZkFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7cHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBpbXBsaWNpdEFzc3VtcHRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHN0YXRlbWVudFVuaWZpZXMgPSB0aGlzLnN0YXRlbWVudC51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtwcm9vZkFzc2VydGlvblN0cmluZ30nIGltcGxpY2l0QXNzdW1wdGlvbidzIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VW5pZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJJbXBsaWNpdEFzc3VtcHRpb25cIjtcblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBsZXQgaW1wbGljaXRBc3N1bXB0aW9uO1xuXG4gICAgYWJsYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmdGcm9tU3RhdGVtZW50KHN0YXRlbWVudCksXG4gICAgICAgICAgICAgIHN0cmluZyA9IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZywgIC8vL1xuICAgICAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlID0gaW5zdGFudGlhdGVJbXBsaWNpdEFzc3VtcHRpb24oc3RyaW5nLCBjb250ZXh0KTtcblxuICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb24gPSBpbXBsaWNpdEFzc3VtcHRpb25Gcm9tSW1wbGljaXRBc3N1bXB0aW9uTm9kZShpbXBsaWNpdEFzc3VtcHRpb25Ob2RlLCBjb250ZXh0KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGltcGxpY2l0QXNzdW1wdGlvbjtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiYWxsIiwiaXNvbGF0ZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIkltcGxpY2l0QXNzdW1wdGlvbiIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJnZXRJbXBsaWNpdEFzc3VtcHRpb25Ob2RlIiwiZ2V0Tm9kZSIsImltcGxpY2l0QXNzdW1wdGlvbk5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiaXNFcXVhbFRvIiwiaW1wbGljaXRBc3N1bXB0aW9uIiwiaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaEltcGxpY2l0QXNzdW1wdGlvbk5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImltcGxpY2l0QXNzdW1wdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGUiLCJkZWJ1ZyIsImdldENvbnRleHQiLCJhdHRlbXB0IiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJiaW5kIiwiY29tbWl0Iiwic3RhdGVtZW50VmFsaWRhdGVzIiwidmFsaWRhdGVzIiwiY29udGludWF0aW9uIiwidW5pZnlTdGF0ZW1lbnQiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInN0YXRlbWVudFVuaWZpZXMiLCJzdGF0ZW1lbnRTdHJpbmciLCJwcm9vZkFzc2VydGlvblN0cmluZyIsIm5hbWUiLCJmcm9tU3RhdGVtZW50IiwiYWJsYXRlIiwiaW5zdGFudGlhdGUiLCJpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmdGcm9tU3RhdGVtZW50IiwiaW5zdGFudGlhdGVJbXBsaWNpdEFzc3VtcHRpb24iLCJpbXBsaWNpdEFzc3VtcHRpb25Gcm9tSW1wbGljaXRBc3N1bXB0aW9uTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWm9FOzBCQUU3Qzt1QkFDQzt5QkFDcUI7NkJBQ0M7d0JBQ1E7eUJBQ087QUFFN0QsTUFBTSxFQUFFQSxXQUFXLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ3JDLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxPQUFPLEVBQUUsR0FBR0MscUNB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
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24vaW1wbGljaXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgYWJsYXRlLCBhdHRlbXB0LCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVJbXBsaWNpdEFzc3VtcHRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nRnJvbVN0YXRlbWVudCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBpbXBsaWNpdEFzc3VtcHRpb25Gcm9tSW1wbGljaXRBc3N1bXB0aW9uTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgaXNvbGF0ZSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgSW1wbGljaXRBc3N1bXB0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldEltcGxpY2l0QXNzdW1wdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9uTm9kZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5nZXRTdGF0ZW1lbnROb2RlKCk7IH1cblxuICBpc0VxdWFsVG8oaW1wbGljaXRBc3N1bXB0aW9uKSB7XG4gICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uTm9kZSA9IGltcGxpY2l0QXNzdW1wdGlvbi5nZXROb2RlKCksXG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoSW1wbGljaXRBc3N1bXB0aW9uTm9kZShpbXBsaWNpdEFzc3VtcHRpb25Ob2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hJbXBsaWNpdEFzc3VtcHRpb25Ob2RlKGltcGxpY2l0QXNzdW1wdGlvbk5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gaW1wbGljaXRBc3N1bXB0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgaW1wbGljaXQgYXNzdW1wdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCAsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZhbGlkYXRlZCB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgaW1wbGljaXQgYXNzdW1wdGlvbidzIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgZGVidWdnZXJcblxuICAgIGxldCBzdGF0ZW1lbnRVbmlmaWVzO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIHByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtwcm9vZkFzc2VydGlvblN0cmluZ30nIGltcGxpY2l0QXNzdW1wdGlvbidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgc3RhdGVtZW50VW5pZmllcyA9IHRoaXMuc3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke3Byb29mQXNzZXJ0aW9uU3RyaW5nfScgaW1wbGljaXRBc3N1bXB0aW9uJ3Mgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVzO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkltcGxpY2l0QXNzdW1wdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGxldCBpbXBsaWNpdEFzc3VtcHRpb247XG5cbiAgICBhYmxhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZ0Zyb21TdGF0ZW1lbnQoc3RhdGVtZW50KSxcbiAgICAgICAgICAgICAgc3RyaW5nID0gaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nLCAgLy8vXG4gICAgICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbk5vZGUgPSBpbnN0YW50aWF0ZUltcGxpY2l0QXNzdW1wdGlvbihzdHJpbmcsIGNvbnRleHQpO1xuXG4gICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbiA9IGltcGxpY2l0QXNzdW1wdGlvbkZyb21JbXBsaWNpdEFzc3VtcHRpb25Ob2RlKGltcGxpY2l0QXNzdW1wdGlvbk5vZGUsIGNvbnRleHQpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9uO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJhbGwiLCJpc29sYXRlIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiSW1wbGljaXRBc3N1bXB0aW9uIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImdldEltcGxpY2l0QXNzdW1wdGlvbk5vZGUiLCJnZXROb2RlIiwiaW1wbGljaXRBc3N1bXB0aW9uTm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJpc0VxdWFsVG8iLCJpbXBsaWNpdEFzc3VtcHRpb24iLCJpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcyIsIm1hdGNoSW1wbGljaXRBc3N1bXB0aW9uTm9kZSIsImVxdWFsVG8iLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwiaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsImRlYnVnIiwiZ2V0Q29udGV4dCIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImJpbmQiLCJjb21taXQiLCJ1bmlmeVN0YXRlbWVudCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0Iiwic3RhdGVtZW50VW5pZmllcyIsInN0YXRlbWVudFN0cmluZyIsInByb29mQXNzZXJ0aW9uU3RyaW5nIiwibmFtZSIsImZyb21TdGF0ZW1lbnQiLCJhYmxhdGUiLCJpbnN0YW50aWF0ZSIsImltcGxpY2l0QXNzdW1wdGlvblN0cmluZ0Zyb21TdGF0ZW1lbnQiLCJpbnN0YW50aWF0ZUltcGxpY2l0QXNzdW1wdGlvbiIsImltcGxpY2l0QXNzdW1wdGlvbkZyb21JbXBsaWNpdEFzc3VtcHRpb25Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0Fab0U7MEJBRTdDO3VCQUNDO3lCQUNxQjs2QkFDQzt3QkFDUTt5QkFDTztBQUU3RCxNQUFNLEVBQUVBLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDckMsRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLE9BQU8sRUFBRSxHQUFHQyxxQ0FBcUI7TUFFbkQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQywyQkFBMkJDLHVCQUFPO0lBQzVELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsU0FBUyxDQUFFO1FBQ3hELEtBQUssQ0FBQ0osU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO0lBQ25CO0lBRUFDLGVBQWU7UUFDYixPQUFP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