occam-furtle 3.0.541 → 3.0.543

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.
@@ -124,11 +124,13 @@ const _default = (0, _elements.define)(class Apply extends _occamlanguages.Eleme
124
124
  let values;
125
125
  const { Values } = _elements.default;
126
126
  values = Values.fromValue(value);
127
- values = values.merge(this.values); ///
127
+ if (this.values !== null) {
128
+ values = values.merge(this.values); ///
129
+ }
128
130
  const { ProcedureCall } = _elements.default, procedureCall = ProcedureCall.fromReferenceAndValues(reference, values, context);
129
131
  return procedureCall.evaluate(context, forward, back);
130
132
  }
131
133
  static name = "Apply";
132
134
  });
133
135
 
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2FwcGx5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCBFeGNlcHRpb24gZnJvbSBcIi4uL2V4Y2VwdGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IHZhbHVlRnJvbUJvb2xlYW4gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3ZhbHVlXCI7XG5pbXBvcnQgeyBMSVNUX1RZUEVfTkFNRSwgQk9PTEVBTl9UWVBFX05BTUUgfSBmcm9tIFwiLi4vdHlwZU5hbWVzXCI7XG5cbmNvbnN0IHsgZXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBBcHBseSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhbHVlcywgdmFyaWFibGUsIHJlZmVyZW5jZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG4gICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgdGhpcy52YXJpYWJsZSA9IHZhcmlhYmxlO1xuICAgIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gIH1cblxuICBnZXRWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzO1xuICB9XG5cbiAgZ2V0VmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGU7XG4gIH1cblxuICBnZXRSZWZlcmVuY2VzKCkge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXM7XG4gIH1cblxuICBldmFsdWF0ZSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgYXBwbHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgRXZhbHVhdGluZyB0aGUgJyR7YXBwbHlTdHJpbmd9JyBmdW5jdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGUuZXZhbHVhdGUoY29udGV4dCwgKHZhbHVlLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZVR5cGUgPSB2YWx1ZS5nZXRUeXBlKCksXG4gICAgICAgICAgICB2YWx1ZVR5cGVMaXN0VHlwZSA9IHZhbHVlVHlwZS5pc0xpc3RUeXBlKCk7XG5cbiAgICAgIGlmICghdmFsdWVUeXBlTGlzdFR5cGUpIHtcbiAgICAgICAgY29uc3QgdmFsdWVTdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgbWVzc2FnZSA9IGBUaGUgJyR7dmFsdWVTdHJpbmd9JyB2YWx1ZSdzICcke3ZhbHVlVHlwZX0nIHR5cGUgc2hvdWxkIGJlICcke0xJU1RfVFlQRV9OQU1FfScuYCxcbiAgICAgICAgICAgICAgZXhjZXB0aW9uID0gRXhjZXB0aW9uLmZyb21NZXNzYWdlKG1lc3NhZ2UpO1xuXG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbHVlcyA9IHZhbHVlLmxpZnQoY29udGV4dCksXG4gICAgICAgICAgICB2YWx1ZXNMZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICAgICAgcmVmZXJlbmNlc0xlbmd0aCA9IHRoaXMucmVmZXJlbmNlcy5nZXRMZW5ndGgoKTtcblxuICAgICAgaWYgKHZhbHVlc0xlbmd0aCAhPT0gcmVmZXJlbmNlc0xlbmd0aCkge1xuICAgICAgICBjb25zdCBib29sZWFuID0gZmFsc2UsXG4gICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVGcm9tQm9vbGVhbihib29sZWFuLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGAuLi5ldmFsdWF0ZWQgdGhlICcke2FwcGx5U3RyaW5nfScgZnVuY3Rpb24gYXMgJyR7dmFsdWVTdHJpbmd9Jy5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZCh2YWx1ZSwgYmFjayk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBldmVyeSh2YWx1ZXMsICh2YWx1ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaywgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gdGhpcy5yZWZlcmVuY2VzLmdldFJlZmVyZW5jZShpbmRleCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbFByb2NlZHVyZShyZWZlcmVuY2UsIHZhbHVlLCBjb250ZXh0LCAodmFsdWUsIGJhY2spID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZVR5cGUgPSB2YWx1ZS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgICAgdmFsdWVUeXBlQm9vbGVhblR5cGUgPSB2YWx1ZVR5cGUuaXNCb29sZWFuVHlwZSgpO1xuXG4gICAgICAgICAgaWYgKCF2YWx1ZVR5cGVCb29sZWFuVHlwZSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVTdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgVGhlICcke3ZhbHVlU3RyaW5nfScgdmFsdWUncyAnJHt2YWx1ZVR5cGV9JyB0eXBlIHNob3VsZCBiZSAnJHtCT09MRUFOX1RZUEVfTkFNRX0nLmAsXG4gICAgICAgICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcHJpbWl0aXZlVmFsdWUgPSB2YWx1ZS5nZXRQcmltaXRpdmVWYWx1ZSgpLFxuICAgICAgICAgICAgICAgIGJvb2xlYW4gPSBwcmltaXRpdmVWYWx1ZTsgLy8vXG5cbiAgICAgICAgICBpZiAoIWJvb2xlYW4pIHtcbiAgICAgICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgYm9vbGVhbiA9IHRydWUsXG4gICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVGcm9tQm9vbGVhbihib29sZWFuLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGAuLi5ldmFsdWF0ZWQgdGhlICcke2FwcGx5U3RyaW5nfScgZnVuY3Rpb24gYXMgJyR7dmFsdWVTdHJpbmd9Jy5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZCh2YWx1ZSwgYmFjayk7XG4gICAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYm9vbGVhbiA9IGZhbHNlLFxuICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlRnJvbUJvb2xlYW4oYm9vbGVhbiwgY29udGV4dCksXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nID0gdmFsdWUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgY29udGV4dC50cmFjZShgLi4uZXZhbHVhdGVkIHRoZSAnJHthcHBseVN0cmluZ30nIGZ1bmN0aW9uIGFzICcke3ZhbHVlU3RyaW5nfScuYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQodmFsdWUsIGJhY2spO1xuICAgICAgfSk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIGNhbGxQcm9jZWR1cmUocmVmZXJlbmNlLCB2YWx1ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCB2YWx1ZXM7XG5cbiAgICBjb25zdCB7IFZhbHVlcyB9ID0gZWxlbWVudHM7XG5cbiAgICB2YWx1ZXMgPSBWYWx1ZXMuZnJvbVZhbHVlKHZhbHVlKTtcblxuICAgIHZhbHVlcyA9IHZhbHVlcy5tZXJnZSh0aGlzLnZhbHVlcyk7IC8vL1xuXG4gICAgY29uc3QgeyBQcm9jZWR1cmVDYWxsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsID0gUHJvY2VkdXJlQ2FsbC5mcm9tUmVmZXJlbmNlQW5kVmFsdWVzKHJlZmVyZW5jZSwgdmFsdWVzLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVDYWxsLmV2YWx1YXRlKGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkFwcGx5XCI7XG59KTtcbiJdLCJuYW1lcyI6WyJldmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkFwcGx5IiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInZhbHVlcyIsInZhcmlhYmxlIiwicmVmZXJlbmNlcyIsImdldFZhbHVlcyIsImdldFZhcmlhYmxlIiwiZ2V0UmVmZXJlbmNlcyIsImV2YWx1YXRlIiwiZm9yd2FyZCIsImJhY2siLCJhcHBseVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmFsdWUiLCJ2YWx1ZVR5cGUiLCJnZXRUeXBlIiwidmFsdWVUeXBlTGlzdFR5cGUiLCJpc0xpc3RUeXBlIiwidmFsdWVTdHJpbmciLCJtZXNzYWdlIiwiTElTVF9UWVBFX05BTUUiLCJleGNlcHRpb24iLCJFeGNlcHRpb24iLCJmcm9tTWVzc2FnZSIsImxpZnQiLCJ2YWx1ZXNMZW5ndGgiLCJsZW5ndGgiLCJyZWZlcmVuY2VzTGVuZ3RoIiwiZ2V0TGVuZ3RoIiwiYm9vbGVhbiIsInZhbHVlRnJvbUJvb2xlYW4iLCJpbmRleCIsInJlZmVyZW5jZSIsImdldFJlZmVyZW5jZSIsImNhbGxQcm9jZWR1cmUiLCJ2YWx1ZVR5cGVCb29sZWFuVHlwZSIsImlzQm9vbGVhblR5cGUiLCJCT09MRUFOX1RZUEVfTkFNRSIsInByaW1pdGl2ZVZhbHVlIiwiZ2V0UHJpbWl0aXZlVmFsdWUiLCJWYWx1ZXMiLCJlbGVtZW50cyIsImZyb21WYWx1ZSIsIm1lcmdlIiwiUHJvY2VkdXJlQ2FsbCIsInByb2NlZHVyZUNhbGwiLCJmcm9tUmVmZXJlbmNlQW5kVmFsdWVzIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWm9FO2tFQUUvQztrRUFDQzt1QkFHVzsyQkFDaUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxELE1BQU0sRUFBRUEsS0FBSyxFQUFFLEdBQUdDLHFDQUFxQixFQUNqQyxFQUFFQyxXQUFXLEVBQUUsR0FBR0MsbUNBQW1CO01BRTNDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsY0FBY0MsdUJBQU87SUFDL0MsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsVUFBVSxDQUFFO1FBQzNFLEtBQUssQ0FBQ04sU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDRixNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDRyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxRQUFRLEdBQUdBO1FBQ2hCLElBQUksQ0FBQ0MsVUFBVSxH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
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2FwcGx5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCBFeGNlcHRpb24gZnJvbSBcIi4uL2V4Y2VwdGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IHZhbHVlRnJvbUJvb2xlYW4gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3ZhbHVlXCI7XG5pbXBvcnQgeyBMSVNUX1RZUEVfTkFNRSwgQk9PTEVBTl9UWVBFX05BTUUgfSBmcm9tIFwiLi4vdHlwZU5hbWVzXCI7XG5cbmNvbnN0IHsgZXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBBcHBseSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhbHVlcywgdmFyaWFibGUsIHJlZmVyZW5jZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG4gICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgdGhpcy52YXJpYWJsZSA9IHZhcmlhYmxlO1xuICAgIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gIH1cblxuICBnZXRWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzO1xuICB9XG5cbiAgZ2V0VmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGU7XG4gIH1cblxuICBnZXRSZWZlcmVuY2VzKCkge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXM7XG4gIH1cblxuICBldmFsdWF0ZSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgYXBwbHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgRXZhbHVhdGluZyB0aGUgJyR7YXBwbHlTdHJpbmd9JyBmdW5jdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGUuZXZhbHVhdGUoY29udGV4dCwgKHZhbHVlLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZVR5cGUgPSB2YWx1ZS5nZXRUeXBlKCksXG4gICAgICAgICAgICB2YWx1ZVR5cGVMaXN0VHlwZSA9IHZhbHVlVHlwZS5pc0xpc3RUeXBlKCk7XG5cbiAgICAgIGlmICghdmFsdWVUeXBlTGlzdFR5cGUpIHtcbiAgICAgICAgY29uc3QgdmFsdWVTdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgbWVzc2FnZSA9IGBUaGUgJyR7dmFsdWVTdHJpbmd9JyB2YWx1ZSdzICcke3ZhbHVlVHlwZX0nIHR5cGUgc2hvdWxkIGJlICcke0xJU1RfVFlQRV9OQU1FfScuYCxcbiAgICAgICAgICAgICAgZXhjZXB0aW9uID0gRXhjZXB0aW9uLmZyb21NZXNzYWdlKG1lc3NhZ2UpO1xuXG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbHVlcyA9IHZhbHVlLmxpZnQoY29udGV4dCksXG4gICAgICAgICAgICB2YWx1ZXNMZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICAgICAgcmVmZXJlbmNlc0xlbmd0aCA9IHRoaXMucmVmZXJlbmNlcy5nZXRMZW5ndGgoKTtcblxuICAgICAgaWYgKHZhbHVlc0xlbmd0aCAhPT0gcmVmZXJlbmNlc0xlbmd0aCkge1xuICAgICAgICBjb25zdCBib29sZWFuID0gZmFsc2UsXG4gICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVGcm9tQm9vbGVhbihib29sZWFuLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGAuLi5ldmFsdWF0ZWQgdGhlICcke2FwcGx5U3RyaW5nfScgZnVuY3Rpb24gYXMgJyR7dmFsdWVTdHJpbmd9Jy5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZCh2YWx1ZSwgYmFjayk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBldmVyeSh2YWx1ZXMsICh2YWx1ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaywgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gdGhpcy5yZWZlcmVuY2VzLmdldFJlZmVyZW5jZShpbmRleCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbFByb2NlZHVyZShyZWZlcmVuY2UsIHZhbHVlLCBjb250ZXh0LCAodmFsdWUsIGJhY2spID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZVR5cGUgPSB2YWx1ZS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgICAgdmFsdWVUeXBlQm9vbGVhblR5cGUgPSB2YWx1ZVR5cGUuaXNCb29sZWFuVHlwZSgpO1xuXG4gICAgICAgICAgaWYgKCF2YWx1ZVR5cGVCb29sZWFuVHlwZSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVTdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgVGhlICcke3ZhbHVlU3RyaW5nfScgdmFsdWUncyAnJHt2YWx1ZVR5cGV9JyB0eXBlIHNob3VsZCBiZSAnJHtCT09MRUFOX1RZUEVfTkFNRX0nLmAsXG4gICAgICAgICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcHJpbWl0aXZlVmFsdWUgPSB2YWx1ZS5nZXRQcmltaXRpdmVWYWx1ZSgpLFxuICAgICAgICAgICAgICAgIGJvb2xlYW4gPSBwcmltaXRpdmVWYWx1ZTsgLy8vXG5cbiAgICAgICAgICBpZiAoIWJvb2xlYW4pIHtcbiAgICAgICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgYm9vbGVhbiA9IHRydWUsXG4gICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVGcm9tQm9vbGVhbihib29sZWFuLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGAuLi5ldmFsdWF0ZWQgdGhlICcke2FwcGx5U3RyaW5nfScgZnVuY3Rpb24gYXMgJyR7dmFsdWVTdHJpbmd9Jy5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZCh2YWx1ZSwgYmFjayk7XG4gICAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYm9vbGVhbiA9IGZhbHNlLFxuICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlRnJvbUJvb2xlYW4oYm9vbGVhbiwgY29udGV4dCksXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nID0gdmFsdWUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgY29udGV4dC50cmFjZShgLi4uZXZhbHVhdGVkIHRoZSAnJHthcHBseVN0cmluZ30nIGZ1bmN0aW9uIGFzICcke3ZhbHVlU3RyaW5nfScuYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQodmFsdWUsIGJhY2spO1xuICAgICAgfSk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIGNhbGxQcm9jZWR1cmUocmVmZXJlbmNlLCB2YWx1ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCB2YWx1ZXM7XG5cbiAgICBjb25zdCB7IFZhbHVlcyB9ID0gZWxlbWVudHM7XG5cbiAgICB2YWx1ZXMgPSBWYWx1ZXMuZnJvbVZhbHVlKHZhbHVlKTtcblxuICAgIGlmICh0aGlzLnZhbHVlcyAhPT0gbnVsbCkge1xuICAgICAgdmFsdWVzID0gdmFsdWVzLm1lcmdlKHRoaXMudmFsdWVzKTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgeyBQcm9jZWR1cmVDYWxsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsID0gUHJvY2VkdXJlQ2FsbC5mcm9tUmVmZXJlbmNlQW5kVmFsdWVzKHJlZmVyZW5jZSwgdmFsdWVzLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVDYWxsLmV2YWx1YXRlKGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkFwcGx5XCI7XG59KTtcbiJdLCJuYW1lcyI6WyJldmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkFwcGx5IiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInZhbHVlcyIsInZhcmlhYmxlIiwicmVmZXJlbmNlcyIsImdldFZhbHVlcyIsImdldFZhcmlhYmxlIiwiZ2V0UmVmZXJlbmNlcyIsImV2YWx1YXRlIiwiZm9yd2FyZCIsImJhY2siLCJhcHBseVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmFsdWUiLCJ2YWx1ZVR5cGUiLCJnZXRUeXBlIiwidmFsdWVUeXBlTGlzdFR5cGUiLCJpc0xpc3RUeXBlIiwidmFsdWVTdHJpbmciLCJtZXNzYWdlIiwiTElTVF9UWVBFX05BTUUiLCJleGNlcHRpb24iLCJFeGNlcHRpb24iLCJmcm9tTWVzc2FnZSIsImxpZnQiLCJ2YWx1ZXNMZW5ndGgiLCJsZW5ndGgiLCJyZWZlcmVuY2VzTGVuZ3RoIiwiZ2V0TGVuZ3RoIiwiYm9vbGVhbiIsInZhbHVlRnJvbUJvb2xlYW4iLCJpbmRleCIsInJlZmVyZW5jZSIsImdldFJlZmVyZW5jZSIsImNhbGxQcm9jZWR1cmUiLCJ2YWx1ZVR5cGVCb29sZWFuVHlwZSIsImlzQm9vbGVhblR5cGUiLCJCT09MRUFOX1RZUEVfTkFNRSIsInByaW1pdGl2ZVZhbHVlIiwiZ2V0UHJpbWl0aXZlVmFsdWUiLCJWYWx1ZXMiLCJlbGVtZW50cyIsImZyb21WYWx1ZSIsIm1lcmdlIiwiUHJvY2VkdXJlQ2FsbCIsInByb2NlZHVyZUNhbGwiLCJmcm9tUmVmZXJlbmNlQW5kVmFsdWVzIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWm9FO2tFQUUvQztrRUFDQzt1QkFHVzsyQkFDaUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxELE1BQU0sRUFBRUEsS0FBSyxFQUFFLEdBQUdDLHFDQUFxQixFQUNqQyxFQUFFQyxXQUFXLEVBQUUsR0FBR0MsbUNBQW1CO01BRTNDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsY0FBY0MsdUJBQU87SUFDL0MsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsVUFBVSxDQUFFO1FBQzNFLEtBQUssQ0FBQ04sU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDRixNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDRyxNQUFNLEdBQUdBO1FBQ2QsSUFB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
@@ -104,12 +104,12 @@ const _default = (0, _elements.define)(class Procedure extends _occamlanguages.E
104
104
  }, back);
105
105
  }, back);
106
106
  });
107
- callNominally(nominalValues, forward, back) {
107
+ evaluateNominally(nominalValues, forward, back) {
108
108
  const context = this.getContext(), procedureString = this.getString(); ///
109
- context.trace(`Calling the '${procedureString}' function nominally...`);
109
+ context.trace(`Evaluating the '${procedureString}' function nominally...`);
110
110
  const values = (0, _values.valuesFromNominalValues)(nominalValues, context);
111
111
  return this.evaluate(values, context, (value, back)=>{
112
- context.debug(`...called the '${procedureString}' function nominally.`);
112
+ context.debug(`...evaluated the '${procedureString}' function nominally.`);
113
113
  return forward(value, back);
114
114
  }, back);
115
115
  }
@@ -138,4 +138,4 @@ const _default = (0, _elements.define)(class Procedure extends _occamlanguages.E
138
138
  }
139
139
  });
140
140
 
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb2NlZHVyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gXCIuLi9leGNlcHRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyB2YWx1ZXNGcm9tTm9taW5hbFZhbHVlcyB9IGZyb20gXCIuLi91dGlsaXRpZXMvdmFsdWVzXCI7XG5pbXBvcnQgeyByZXR1cm5CbG9ja0Zyb21Qcm9jZWR1cmVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVmFsdWVzQW5kUGFyYW1ldGVycyB9IGZyb20gXCIuLi91dGlsaXRpZXMvcGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCBsYWJlbEZyb21KU09OLCBleHBvcnRlZEZyb21KU09OLCBwYXJhbWV0ZXJzRnJvbUpTT04sIHR5cGVUb1R5cGVKU09OLCBsYWJlbFRvTGFiZWxKU09OLCBleHBvcnRlZFRvRXhwb3J0ZWRKU09OLCBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IGN1dCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha2FibGUsIGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBQcm9jZWR1cmUgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBsYWJlbCwgZXhwb3J0ZWQsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICAgIHRoaXMuZXhwb3J0ZWQgPSBleHBvcnRlZDtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuICAgIHRoaXMucmV0dXJuQmxvY2sgPSByZXR1cm5CbG9jaztcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLmxhYmVsO1xuICB9XG5cbiAgaXNFeHBvcnRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5leHBvcnRlZDtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycztcbiAgfVxuXG4gIGdldFJldHVybkJsb2NrKCkge1xuICAgIHJldHVybiB0aGlzLnJldHVybkJsb2NrO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHsgcmV0dXJuIHRoaXMubGFiZWwuZ2V0TmFtZSgpOyB9XG5cbiAgaXNCb29sZWFuKCkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFR5cGUoKSxcbiAgICAgICAgICBib29sZWFuVHlwZSA9IHR5cGUuaXNCb29sZWFuVHlwZSgpLFxuICAgICAgICAgIGJvb2xlYW4gPSBib29sZWFuVHlwZTsgIC8vL1xuXG4gICAgcmV0dXJuIGJvb2xlYW47XG4gIH1cblxuICBnZXRQcm9jZWR1cmVOYW1lKCkge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICBwcm9jZWR1cmVOYW1lID0gbmFtZTsgLy8vXG5cbiAgICByZXR1cm4gcHJvY2VkdXJlTmFtZTtcbiAgfVxuXG4gIGdldFJldHVyblN0YXRlbWVudCgpIHsgcmV0dXJuIHRoaXMucmV0dXJuQmxvY2suZ2V0UmV0dXJuU3RhdGVtZW50KCk7IH1cblxuICBjb21wYXJlUmVsZWFzZU5hbWUocmVsZWFzZU5hbWUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5jb21wYXJlUmVsZWFzZU5hbWUocmVsZWFzZU5hbWUpOyB9XG5cbiAgY29tcGFyZVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSkgeyByZXR1cm4gdGhpcy5sYWJlbC5jb21wYXJlUHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTsgfVxuXG4gIGd1YXJhbnRlZVJldHVybkJsb2NrKCkge1xuICAgIGlmICh0aGlzLnJldHVybkJsb2NrICE9IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHByb2NlZHVyZU5vZGUgPSBub2RlO1xuXG4gICAgdGhpcy5yZXR1cm5CbG9jayA9IHJldHVybkJsb2NrRnJvbVByb2NlZHVyZU5vZGUocHJvY2VkdXJlTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHByb2NlZHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Byb2NlZHVyZVN0cmluZ30nIGZ1bmN0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBwcm9jZWR1cmVOYW1lID0gdGhpcy5nZXRQcm9jZWR1cmVOYW1lKCksXG4gICAgICAgICAgcHJvY2VkdXJlUHJlc2VudCA9IGNvbnRleHQuaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgaWYgKHByb2NlZHVyZVByZXNlbnQpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYFRoZSAnJHtwcm9jZWR1cmVTdHJpbmd9JyBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvY2VkdXJlID0gdGhpczsgLy8vXG5cbiAgICBjb250ZXh0LmFkZFByb2NlZHVyZShwcm9jZWR1cmUpO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3Byb2NlZHVyZVN0cmluZ30nIGZ1bmN0aW9uLmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gIH0pO1xuXG4gIGV2YWx1YXRlID0gYnJlYWthYmxlKGZ1bmN0aW9uICh2YWx1ZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spO1xuXG4gICAgY29uc3QgcHJvY2VkdXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgRXZhbHVhdGluZyB0aGUgJyR7cHJvY2VkdXJlU3RyaW5nfScgZnVuY3Rpb24uLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlcnMuY29tcGFyZVZhbHVlcyh2YWx1ZXMsIGNvbnRleHQsIChiYWNrKSA9PiB7XG4gICAgICB0aGlzLmd1YXJhbnRlZVJldHVybkJsb2NrKCk7XG5cbiAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHZhcmlhYmxlc0Zyb21WYWx1ZXNBbmRQYXJhbWV0ZXJzKHZhbHVlcywgdGhpcy5wYXJhbWV0ZXJzLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHRoaXMucmV0dXJuQmxvY2suZXZhbHVhdGUodmFyaWFibGVzLCBjb250ZXh0LCAodmFsdWUsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWVUeXBlID0gdmFsdWUuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICB0eXBlRXF1YWxUb1ZhbHVlVHlwZSA9IHRoaXMudHlwZS5pc0VxdWFsVG8odmFsdWVUeXBlKTtcblxuICAgICAgICBpZiAoIXR5cGVFcXVhbFRvVmFsdWVUeXBlKSB7XG4gICAgICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZyA9IHZhbHVlLmdldFN0cmluZygpLFxuICAgICAgICAgICAgICAgIHZhbHVlVHlwZVN0cmluZyA9IHZhbHVlVHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYFRoZSAnJHt2YWx1ZVN0cmluZ30nIHZhbHVlJ3MgJyR7dmFsdWVUeXBlU3RyaW5nfScgdHlwZSBpcyBub3QgZXF1YWwgdG8gdGhlICcke3Byb2NlZHVyZVN0cmluZ30nIGZ1bmN0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUuYCxcbiAgICAgICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uZXZhbHVhdGVkIHRoZSAnJHtwcm9jZWR1cmVTdHJpbmd9JyBmdW5jdGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZCh2YWx1ZSwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSk7XG5cbiAgY2FsbE5vbWluYWxseShub21pbmFsVmFsdWVzLCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHByb2NlZHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYENhbGxpbmcgdGhlICcke3Byb2NlZHVyZVN0cmluZ30nIGZ1bmN0aW9uIG5vbWluYWxseS4uLmApO1xuXG4gICAgY29uc3QgdmFsdWVzID0gdmFsdWVzRnJvbU5vbWluYWxWYWx1ZXMobm9taW5hbFZhbHVlcywgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGhpcy5ldmFsdWF0ZSh2YWx1ZXMsIGNvbnRleHQsICh2YWx1ZSwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uY2FsbGVkIHRoZSAnJHtwcm9jZWR1cmVTdHJpbmd9JyBmdW5jdGlvbiBub21pbmFsbHkuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHZhbHVlLCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgIGxhYmVsSlNPTiA9IGxhYmVsVG9MYWJlbEpTT04odGhpcy5sYWJlbCksXG4gICAgICAgICAgZXhwb3J0ZWRKSlNPTiA9IGV4cG9ydGVkVG9FeHBvcnRlZEpTT04odGhpcy5leHBvcnRlZCksXG4gICAgICAgICAgcGFyYW1ldGVyc0pTT04gPSBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTih0aGlzLnBhcmFtZXRlcnMpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCB0eXBlID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICBsYWJlbCA9IGxhYmVsSlNPTiwgIC8vL1xuICAgICAgICAgIGV4cG9ydGVkID0gZXhwb3J0ZWRKSlNPTiwgLy8vXG4gICAgICAgICAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnNKU09OOyAgLy8vXG5cbiAgICBqc29uID0ge1xuICAgICAgc3RyaW5nLFxuICAgICAgYnJlYWtQb2ludCxcbiAgICAgIHR5cGUsXG4gICAgICBsYWJlbCxcbiAgICAgIGV4cG9ydGVkLFxuICAgICAgcGFyYW1ldGVyc1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJQcm9jZWR1cmVcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgdHlwZSA9IHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBsYWJlbCA9IGxhYmVsRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZXhwb3J0ZWQgPSBleHBvcnRlZEZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgcHJvY2VkdXJlTm9kZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZU5vZGUobGFiZWwpLFxuICAgICAgICAgIHJldHVybkJsb2NrID0gbnVsbCwgLy8vXG4gICAgICAgICAgbm9kZSA9IHByb2NlZHVyZU5vZGUsIC8vL1xuICAgICAgICAgIHByb2NlZHVyZSA9IG5ldyBQcm9jZWR1cmUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBsYWJlbCwgZXhwb3J0ZWQsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImN1dCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrYWJsZSIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlByb2NlZHVyZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0eXBlIiwibGFiZWwiLCJleHBvcnRlZCIsInBhcmFtZXRlcnMiLCJyZXR1cm5CbG9jayIsImdldFR5cGUiLCJnZXRMYWJlbCIsImlzRXhwb3J0ZWQiLCJnZXRQYXJhbWV0ZXJzIiwiZ2V0UmV0dXJuQmxvY2siLCJnZXROYW1lIiwiaXNCb29sZWFuIiwiYm9vbGVhblR5cGUiLCJpc0Jvb2xlYW5UeXBlIiwiYm9vbGVhbiIsImdldFByb2NlZHVyZU5hbWUiLCJuYW1lIiwicHJvY2VkdXJlTmFtZSIsImdldFJldHVyblN0YXRlbWVudCIsImNvbXBhcmVSZWxlYXNlTmFtZSIsInJlbGVhc2VOYW1lIiwiY29tcGFyZVByb2NlZHVyZU5hbWUiLCJndWFyYW50ZWVSZXR1cm5CbG9jayIsImdldE5vZGUiLCJnZXRDb250ZXh0IiwicHJvY2VkdXJlTm9kZSIsInJldHVybkJsb2NrRnJvbVByb2NlZHVyZU5vZGUiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsInByb2NlZHVyZVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwicHJvY2VkdXJlUHJlc2VudCIsImlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZSIsImFkZFByb2NlZHVyZSIsImRlYnVnIiwiZXZhbHVhdGUiLCJ2YWx1ZXMiLCJjb21wYXJlVmFsdWVzIiwidmFyaWFibGVzIiwidmFyaWFibGVzRnJvbVZhbHVlc0FuZFBhcmFtZXRlcnMiLCJ2YWx1ZSIsInZhbHVlVHlwZSIsInR5cGVFcXVhbFRvVmFsdWVUeXBlIiwiaXNFcXVhbFRvIiwidHlwZVN0cmluZyIsInZhbHVlU3RyaW5nIiwidmFsdWVUeXBlU3RyaW5nIiwibWVzc2FnZSIsImV4Y2VwdGlvbiIsIkV4Y2VwdGlvbiIsImZyb21NZXNzYWdlIiwiY2FsbE5vbWluYWxseSIsIm5vbWluYWxWYWx1ZXMiLCJ2YWx1ZXNGcm9tTm9taW5hbFZhbHVlcyIsInRvSlNPTiIsImpzb24iLCJ0eXBlSlNPTiIsInR5cGVUb1R5cGVKU09OIiwibGFiZWxKU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsImV4cG9ydGVkSkpTT04iLCJleHBvcnRlZFRvRXhwb3J0ZWRKU09OIiwicGFyYW1ldGVyc0pTT04iLCJwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTiIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImZyb21KU09OIiwidHlwZUZyb21KU09OIiwibGFiZWxGcm9tSlNPTiIsImV4cG9ydGVkRnJvbUpTT04iLCJwYXJhbWV0ZXJzRnJvbUpTT04iLCJmaW5kUHJvY2VkdXJlTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZUE7OztlQUFBOzs7Z0NBYm9FO2tFQUU5QzswQkFFQzt3QkFDaUI7eUJBQ0s7NEJBQ0k7c0JBQ3VIOzs7Ozs7QUFFeEssTUFBTSxFQUFFQSxHQUFHLEVBQUUsR0FBR0MscUNBQXFCLEVBQy9CLEVBQUVDLFNBQVMsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUV6RixXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGtCQUFrQkMsdUJBQU87SUFDbkQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLEtBQUssRUFBRUMsUUFBUSxFQUFFQyxVQUFVLEVBQUVDLFdBQVcsQ0FBRTtRQUM3RixLQUFLLENBQUNSLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsUUFBUSxHQUFHQTtRQUNoQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBO0lBQ3JCO0lBRUFDLFVBQVU7UUFDUixP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
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb2NlZHVyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gXCIuLi9leGNlcHRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyB2YWx1ZXNGcm9tTm9taW5hbFZhbHVlcyB9IGZyb20gXCIuLi91dGlsaXRpZXMvdmFsdWVzXCI7XG5pbXBvcnQgeyByZXR1cm5CbG9ja0Zyb21Qcm9jZWR1cmVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVmFsdWVzQW5kUGFyYW1ldGVycyB9IGZyb20gXCIuLi91dGlsaXRpZXMvcGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCBsYWJlbEZyb21KU09OLCBleHBvcnRlZEZyb21KU09OLCBwYXJhbWV0ZXJzRnJvbUpTT04sIHR5cGVUb1R5cGVKU09OLCBsYWJlbFRvTGFiZWxKU09OLCBleHBvcnRlZFRvRXhwb3J0ZWRKU09OLCBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IGN1dCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha2FibGUsIGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBQcm9jZWR1cmUgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBsYWJlbCwgZXhwb3J0ZWQsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICAgIHRoaXMuZXhwb3J0ZWQgPSBleHBvcnRlZDtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuICAgIHRoaXMucmV0dXJuQmxvY2sgPSByZXR1cm5CbG9jaztcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLmxhYmVsO1xuICB9XG5cbiAgaXNFeHBvcnRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5leHBvcnRlZDtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycztcbiAgfVxuXG4gIGdldFJldHVybkJsb2NrKCkge1xuICAgIHJldHVybiB0aGlzLnJldHVybkJsb2NrO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHsgcmV0dXJuIHRoaXMubGFiZWwuZ2V0TmFtZSgpOyB9XG5cbiAgaXNCb29sZWFuKCkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFR5cGUoKSxcbiAgICAgICAgICBib29sZWFuVHlwZSA9IHR5cGUuaXNCb29sZWFuVHlwZSgpLFxuICAgICAgICAgIGJvb2xlYW4gPSBib29sZWFuVHlwZTsgIC8vL1xuXG4gICAgcmV0dXJuIGJvb2xlYW47XG4gIH1cblxuICBnZXRQcm9jZWR1cmVOYW1lKCkge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICBwcm9jZWR1cmVOYW1lID0gbmFtZTsgLy8vXG5cbiAgICByZXR1cm4gcHJvY2VkdXJlTmFtZTtcbiAgfVxuXG4gIGdldFJldHVyblN0YXRlbWVudCgpIHsgcmV0dXJuIHRoaXMucmV0dXJuQmxvY2suZ2V0UmV0dXJuU3RhdGVtZW50KCk7IH1cblxuICBjb21wYXJlUmVsZWFzZU5hbWUocmVsZWFzZU5hbWUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5jb21wYXJlUmVsZWFzZU5hbWUocmVsZWFzZU5hbWUpOyB9XG5cbiAgY29tcGFyZVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSkgeyByZXR1cm4gdGhpcy5sYWJlbC5jb21wYXJlUHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTsgfVxuXG4gIGd1YXJhbnRlZVJldHVybkJsb2NrKCkge1xuICAgIGlmICh0aGlzLnJldHVybkJsb2NrICE9IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHByb2NlZHVyZU5vZGUgPSBub2RlO1xuXG4gICAgdGhpcy5yZXR1cm5CbG9jayA9IHJldHVybkJsb2NrRnJvbVByb2NlZHVyZU5vZGUocHJvY2VkdXJlTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHByb2NlZHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Byb2NlZHVyZVN0cmluZ30nIGZ1bmN0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBwcm9jZWR1cmVOYW1lID0gdGhpcy5nZXRQcm9jZWR1cmVOYW1lKCksXG4gICAgICAgICAgcHJvY2VkdXJlUHJlc2VudCA9IGNvbnRleHQuaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgaWYgKHByb2NlZHVyZVByZXNlbnQpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYFRoZSAnJHtwcm9jZWR1cmVTdHJpbmd9JyBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvY2VkdXJlID0gdGhpczsgLy8vXG5cbiAgICBjb250ZXh0LmFkZFByb2NlZHVyZShwcm9jZWR1cmUpO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3Byb2NlZHVyZVN0cmluZ30nIGZ1bmN0aW9uLmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gIH0pO1xuXG4gIGV2YWx1YXRlID0gYnJlYWthYmxlKGZ1bmN0aW9uICh2YWx1ZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spO1xuXG4gICAgY29uc3QgcHJvY2VkdXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgRXZhbHVhdGluZyB0aGUgJyR7cHJvY2VkdXJlU3RyaW5nfScgZnVuY3Rpb24uLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlcnMuY29tcGFyZVZhbHVlcyh2YWx1ZXMsIGNvbnRleHQsIChiYWNrKSA9PiB7XG4gICAgICB0aGlzLmd1YXJhbnRlZVJldHVybkJsb2NrKCk7XG5cbiAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHZhcmlhYmxlc0Zyb21WYWx1ZXNBbmRQYXJhbWV0ZXJzKHZhbHVlcywgdGhpcy5wYXJhbWV0ZXJzLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHRoaXMucmV0dXJuQmxvY2suZXZhbHVhdGUodmFyaWFibGVzLCBjb250ZXh0LCAodmFsdWUsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWVUeXBlID0gdmFsdWUuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICB0eXBlRXF1YWxUb1ZhbHVlVHlwZSA9IHRoaXMudHlwZS5pc0VxdWFsVG8odmFsdWVUeXBlKTtcblxuICAgICAgICBpZiAoIXR5cGVFcXVhbFRvVmFsdWVUeXBlKSB7XG4gICAgICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZyA9IHZhbHVlLmdldFN0cmluZygpLFxuICAgICAgICAgICAgICAgIHZhbHVlVHlwZVN0cmluZyA9IHZhbHVlVHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYFRoZSAnJHt2YWx1ZVN0cmluZ30nIHZhbHVlJ3MgJyR7dmFsdWVUeXBlU3RyaW5nfScgdHlwZSBpcyBub3QgZXF1YWwgdG8gdGhlICcke3Byb2NlZHVyZVN0cmluZ30nIGZ1bmN0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUuYCxcbiAgICAgICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uZXZhbHVhdGVkIHRoZSAnJHtwcm9jZWR1cmVTdHJpbmd9JyBmdW5jdGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZCh2YWx1ZSwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSk7XG5cbiAgZXZhbHVhdGVOb21pbmFsbHkobm9taW5hbFZhbHVlcywgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBwcm9jZWR1cmVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBFdmFsdWF0aW5nIHRoZSAnJHtwcm9jZWR1cmVTdHJpbmd9JyBmdW5jdGlvbiBub21pbmFsbHkuLi5gKTtcblxuICAgIGNvbnN0IHZhbHVlcyA9IHZhbHVlc0Zyb21Ob21pbmFsVmFsdWVzKG5vbWluYWxWYWx1ZXMsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRoaXMuZXZhbHVhdGUodmFsdWVzLCBjb250ZXh0LCAodmFsdWUsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmV2YWx1YXRlZCB0aGUgJyR7cHJvY2VkdXJlU3RyaW5nfScgZnVuY3Rpb24gbm9taW5hbGx5LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh2YWx1ZSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLFxuICAgICAgICAgIHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICBsYWJlbEpTT04gPSBsYWJlbFRvTGFiZWxKU09OKHRoaXMubGFiZWwpLFxuICAgICAgICAgIGV4cG9ydGVkSkpTT04gPSBleHBvcnRlZFRvRXhwb3J0ZWRKU09OKHRoaXMuZXhwb3J0ZWQpLFxuICAgICAgICAgIHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVyc1RvUGFyYW1ldGVyc0pTT04odGhpcy5wYXJhbWV0ZXJzKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QgdHlwZSA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgbGFiZWwgPSBsYWJlbEpTT04sICAvLy9cbiAgICAgICAgICBleHBvcnRlZCA9IGV4cG9ydGVkSkpTT04sIC8vL1xuICAgICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzSlNPTjsgIC8vL1xuXG4gICAganNvbiA9IHtcbiAgICAgIHN0cmluZyxcbiAgICAgIGJyZWFrUG9pbnQsXG4gICAgICB0eXBlLFxuICAgICAgbGFiZWwsXG4gICAgICBleHBvcnRlZCxcbiAgICAgIHBhcmFtZXRlcnNcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiUHJvY2VkdXJlXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgbGFiZWwgPSBsYWJlbEZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGV4cG9ydGVkID0gZXhwb3J0ZWRGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHByb2NlZHVyZU5vZGUgPSBjb250ZXh0LmZpbmRQcm9jZWR1cmVOb2RlKGxhYmVsKSxcbiAgICAgICAgICByZXR1cm5CbG9jayA9IG51bGwsIC8vL1xuICAgICAgICAgIG5vZGUgPSBwcm9jZWR1cmVOb2RlLCAvLy9cbiAgICAgICAgICBwcm9jZWR1cmUgPSBuZXcgUHJvY2VkdXJlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgbGFiZWwsIGV4cG9ydGVkLCBwYXJhbWV0ZXJzLCByZXR1cm5CbG9jayk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJjdXQiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha2FibGUiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJQcm9jZWR1cmUiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidHlwZSIsImxhYmVsIiwiZXhwb3J0ZWQiLCJwYXJhbWV0ZXJzIiwicmV0dXJuQmxvY2siLCJnZXRUeXBlIiwiZ2V0TGFiZWwiLCJpc0V4cG9ydGVkIiwiZ2V0UGFyYW1ldGVycyIsImdldFJldHVybkJsb2NrIiwiZ2V0TmFtZSIsImlzQm9vbGVhbiIsImJvb2xlYW5UeXBlIiwiaXNCb29sZWFuVHlwZSIsImJvb2xlYW4iLCJnZXRQcm9jZWR1cmVOYW1lIiwibmFtZSIsInByb2NlZHVyZU5hbWUiLCJnZXRSZXR1cm5TdGF0ZW1lbnQiLCJjb21wYXJlUmVsZWFzZU5hbWUiLCJyZWxlYXNlTmFtZSIsImNvbXBhcmVQcm9jZWR1cmVOYW1lIiwiZ3VhcmFudGVlUmV0dXJuQmxvY2siLCJnZXROb2RlIiwiZ2V0Q29udGV4dCIsInByb2NlZHVyZU5vZGUiLCJyZXR1cm5CbG9ja0Zyb21Qcm9jZWR1cmVOb2RlIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJwcm9jZWR1cmVTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInByb2NlZHVyZVByZXNlbnQiLCJpc1Byb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmUiLCJhZGRQcm9jZWR1cmUiLCJkZWJ1ZyIsImV2YWx1YXRlIiwidmFsdWVzIiwiY29tcGFyZVZhbHVlcyIsInZhcmlhYmxlcyIsInZhcmlhYmxlc0Zyb21WYWx1ZXNBbmRQYXJhbWV0ZXJzIiwidmFsdWUiLCJ2YWx1ZVR5cGUiLCJ0eXBlRXF1YWxUb1ZhbHVlVHlwZSIsImlzRXF1YWxUbyIsInR5cGVTdHJpbmciLCJ2YWx1ZVN0cmluZyIsInZhbHVlVHlwZVN0cmluZyIsIm1lc3NhZ2UiLCJleGNlcHRpb24iLCJFeGNlcHRpb24iLCJmcm9tTWVzc2FnZSIsImV2YWx1YXRlTm9taW5hbGx5Iiwibm9taW5hbFZhbHVlcyIsInZhbHVlc0Zyb21Ob21pbmFsVmFsdWVzIiwidG9KU09OIiwianNvbiIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJsYWJlbEpTT04iLCJsYWJlbFRvTGFiZWxKU09OIiwiZXhwb3J0ZWRKSlNPTiIsImV4cG9ydGVkVG9FeHBvcnRlZEpTT04iLCJwYXJhbWV0ZXJzSlNPTiIsInBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwiZnJvbUpTT04iLCJ0eXBlRnJvbUpTT04iLCJsYWJlbEZyb21KU09OIiwiZXhwb3J0ZWRGcm9tSlNPTiIsInBhcmFtZXRlcnNGcm9tSlNPTiIsImZpbmRQcm9jZWR1cmVOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFlQTs7O2VBQUE7OztnQ0Fib0U7a0VBRTlDOzBCQUVDO3dCQUNpQjt5QkFDSzs0QkFDSTtzQkFDdUg7Ozs7OztBQUV4SyxNQUFNLEVBQUVBLEdBQUcsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDL0IsRUFBRUMsU0FBUyxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRXpGLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsa0JBQWtCQyx1QkFBTztJQUNuRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFQyxRQUFRLEVBQUVDLFVBQVUsRUFBRUMsV0FBVyxDQUFFO1FBQzdGLEtBQUssQ0FBQ1IsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxRQUFRLEdBQUdBO1FBQ2hCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFdBQVcsR0FBR0E7SUFDckI7SUFF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
@@ -813,7 +813,11 @@ function nameFromLabelNode(labelNode, context) {
813
813
  return name;
814
814
  }
815
815
  function valuesFromApplyNode(allNode, context) {
816
- const valuesNode = allNode.getValuesNode(), values = valuesFromValuesNode(valuesNode, context);
816
+ let values = null;
817
+ const valuesNode = allNode.getValuesNode();
818
+ if (valuesNode !== null) {
819
+ values = valuesFromValuesNode(valuesNode, context);
820
+ }
817
821
  return values;
818
822
  }
819
823
  function valueFromReduceNode(reduceNode, context) {
@@ -1409,4 +1413,4 @@ function variableAssignmentsArrayFromTypeAndVariableAssignmentsNode(type, variab
1409
1413
  return variableAssignmentsArray;
1410
1414
  }
1411
1415
 
1412
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZWxlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwib2NjYW0tcXVlcnlcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBCT09MRUFOX1RZUEVfTkFNRSB9IGZyb20gXCIuLi90eXBlTmFtZXNcIjtcbmltcG9ydCB7IHRlcm5hcnlTdHJpbmdGcm9tVGVybSxcbiAgICAgICAgIHZhcmlhYmxlU3RyaW5nRnJvbU5hbWUsXG4gICAgICAgICB0ZXJtU3RyaW5nRnJvbVByb3BlcnRpZXMsXG4gICAgICAgICB2YWx1ZVN0cmluZ0Zyb21Qcm9wZXJ0aWVzLFxuICAgICAgICAgZXhwcmVzc2lvblN0cmluZ0Zyb21Qcm9wZXJ0aWVzLFxuICAgICAgICAgYXBwbHlTdHJpbmdGcm9tVmFyaWFibGVBbmRWYWx1ZXMsXG4gICAgICAgICByZWZlcmVuY2VzU3RyaW5nRnJvbVJlZmVyZW5jZXNBcnJheSxcbiAgICAgICAgIHJldHVybkJsb2NrU3RyaW5nRnJvbVJldHVyblN0YXRlbWVudE5vZGUsXG4gICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlLFxuICAgICAgICAgc29tZVN0cmluZ0Zyb21WYXJpYWJsZUFuZEFub255bW91c1Byb2NlZHVyZSxcbiAgICAgICAgIGV2ZXJ5U3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlLFxuICAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVQYXJhbWV0ZXJzQW5kUmV0dXJuQmxvY2ssXG4gICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNBcnJheSxcbiAgICAgICAgIHByb2NlZHVyZVN0cmluZ0Zyb21UeXBlTGFiZWxFeHBvcnRlZFBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayxcbiAgICAgICAgIHJlZHVjZVN0cmluZ0Zyb21WYXJpYWJsZUluaXRpYWxFeHByZXNzaW9uQW5kQW5vbnltb3VzUHJvY2VkdXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdHJpbmdcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWVGcm9tU29tZU5vZGUoc29tZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBTb21lIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHNvbWVOb2RlLCAgLy8vXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tU29tZU5vZGUoc29tZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmUgPSBhbm9ueW1vdXNQcm9jZWR1cmVGcm9tU29tZU5vZGUoc29tZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBzb21lU3RyaW5nID0gc29tZVN0cmluZ0Zyb21WYXJpYWJsZUFuZEFub255bW91c1Byb2NlZHVyZSh2YXJpYWJsZSwgYW5vbnltb3VzUHJvY2VkdXJlKSxcbiAgICAgICAgc3RyaW5nID0gc29tZVN0cmluZywgIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBzb21lID0gbmV3IFNvbWUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YXJpYWJsZSwgYW5vbnltb3VzUHJvY2VkdXJlKTtcblxuICByZXR1cm4gc29tZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cyxcbiAgICBub2RlID0gdGVybU5vZGUsICAvLy9cbiAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICBwcmltaXRpdmUgPSBwcmltaXRpdmVGcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgIG5lZ2F0ZWRUZXJtID0gbmVnYXRlZFRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgIGxvZ2ljYWxUZXJtID0gbG9naWNhbFRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgIGJyYWNrZXRlZFRlcm0gPSBicmFja2V0ZWRUZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICBjb21wYXJpc29uVGVybSA9IGNvbXBhcmlzb25UZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICBwcm9wZXJ0aWVzID0gW1xuICAgICAgdmFyaWFibGUsXG4gICAgICBwcmltaXRpdmUsXG4gICAgICBuZWdhdGVkVGVybSxcbiAgICAgIGxvZ2ljYWxUZXJtLFxuICAgICAgYnJhY2tldGVkVGVybSxcbiAgICAgIGNvbXBhcmlzb25UZXJtXG4gICAgXSxcbiAgICB0ZXJtU3RyaW5nID0gdGVybVN0cmluZ0Zyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMsIGNvbnRleHQpLFxuICAgIHN0cmluZyA9IHRlcm1TdHJpbmcsICAvLy9cbiAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB0ZXJtID0gbmV3IFRlcm0oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YXJpYWJsZSwgcHJpbWl0aXZlLCBuZWdhdGVkVGVybSwgbG9naWNhbFRlcm0sIGJyYWNrZXRlZFRlcm0sIGNvbXBhcmlzb25UZXJtKTtcblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBUeXBlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHR5cGVOb2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBuYW1lID0gbmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCksXG4gICAgICAgIGFyZ3VtZW50VHlwZSA9IGFyZ3VtZW50VHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHR5cGUgPSBuZXcgVHlwZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIGFyZ3VtZW50VHlwZSk7XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUZyb21BcHBseU5vZGUoc29tZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBBcHBseSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBzb21lTm9kZSwgIC8vL1xuICAgICAgICB2YWx1ZXMgPSB2YWx1ZXNGcm9tQXBwbHlOb2RlKHNvbWVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21BcHBseU5vZGUoc29tZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICByZWZlcmVuY2VzID0gcmVmZXJlbmNlc0Zyb21BcHBseU5vZGUoc29tZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBhcHBseVN0cmluZyA9IGFwcGx5U3RyaW5nRnJvbVZhcmlhYmxlQW5kVmFsdWVzKHZhcmlhYmxlLCB2YWx1ZXMpLFxuICAgICAgICBzdHJpbmcgPSBhcHBseVN0cmluZywgIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBhcHBseSA9IG5ldyBBcHBseShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhbHVlcywgdmFyaWFibGUsIHJlZmVyZW5jZXMpO1xuXG4gIHJldHVybiBhcHBseTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYWx1ZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSB2YWx1ZU5vZGUsICAvLy9cbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgcHJpbWl0aXZlID0gcHJpbWl0aXZlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBwcm9wZXJ0aWVzID0gW1xuICAgICAgICAgIHZhcmlhYmxlLFxuICAgICAgICAgIHByaW1pdGl2ZVxuICAgICAgICBdLFxuICAgICAgICB2YWx1ZVN0cmluZyA9IHZhbHVlU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcywgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IHZhbHVlU3RyaW5nLCAgLy8vXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHZhbHVlID0gbmV3IFZhbHVlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIHByaW1pdGl2ZSk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JGcm9tRXJyb3JOb2RlKGVycm9yTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IEVycm9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGVycm9yTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZXJ5RnJvbUV2ZXJ5Tm9kZShldmVyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBFdmVyeSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBldmVyeU5vZGUsIC8vL1xuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbUV2ZXJ5Tm9kZShldmVyeU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmUgPSBhbm9ueW1vdXNQcm9jZWR1cmVGcm9tRXZlcnlOb2RlKGV2ZXJ5Tm9kZSwgY29udGV4dCksXG4gICAgICAgIGV2ZXJ5U3RyaW5nID0gZXZlcnlTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUodmFyaWFibGUsIGFub255bW91c1Byb2NlZHVyZSksXG4gICAgICAgIHN0cmluZyA9IGV2ZXJ5U3RyaW5nLCAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgZXZlcnkgPSBuZXcgRXZlcnkoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YXJpYWJsZSwgYW5vbnltb3VzUHJvY2VkdXJlKTtcblxuICByZXR1cm4gZXZlcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21MYWJlbE5vZGUobGFiZWxOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgTGFiZWwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gbGFiZWxOb2RlLFxuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIG5hbWUgPSBuYW1lRnJvbUxhYmVsTm9kZShsYWJlbE5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IGxhYmVsID0gbmV3IExhYmVsKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSk7XG5cbiAgcmV0dXJuIGxhYmVsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVzRnJvbVZhbHVlc05vZGUodmFsdWVzTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFZhbHVlcyB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSB2YWx1ZXNOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIHZhbHVlTm9kZXMgPSB2YWx1ZXNOb2RlLmdldFZhbHVlTm9kZXMoKSxcbiAgICAgICAgdmFsdWVzQXJyYXkgPSB2YWx1ZXNBcnJheUZyb21WYWx1ZU5vZGVzKHZhbHVlTm9kZXMsIGNvbnRleHQpLFxuICAgICAgICBhcnJheSA9IHZhbHVlc0FycmF5LCAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgdmFsdWVzID0gbmV3IFZhbHVlcyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGFycmF5KTtcblxuICByZXR1cm4gdmFsdWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlRnJvbVJlZHVjZU5vZGUocmVkdWNlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFJlZHVjZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSByZWR1Y2VOb2RlLCAgLy8vXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tUmVkdWNlTm9kZShyZWR1Y2VOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgaW5pdGlhbFZhbHVlID0gaW5pdGlhbFZhbHVlRnJvbVJlZHVjZU5vZGUocmVkdWNlTm9kZSwgY29udGV4dCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZSA9IGFub255bW91c1Byb2NlZHVyZUZyb21SZWR1Y2VOb2RlKHJlZHVjZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICByZWR1Y2VTdHJpbmcgPSByZWR1Y2VTdHJpbmdGcm9tVmFyaWFibGVJbml0aWFsRXhwcmVzc2lvbkFuZEFub255bW91c1Byb2NlZHVyZSh2YXJpYWJsZSwgaW5pdGlhbFZhbHVlLCBhbm9ueW1vdXNQcm9jZWR1cmUpLFxuICAgICAgICBzdHJpbmcgPSByZWR1Y2VTdHJpbmcsICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcmVkdWNlID0gbmV3IFJlZHVjZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBpbml0aWFsVmFsdWUsIGFub255bW91c1Byb2NlZHVyZSk7XG5cbiAgcmV0dXJuIHJlZHVjZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRpbmdGcm9tQmluZGluZ05vZGUoYmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBCaW5kaW5nIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGJpbmRpbmdOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB0eXBlID0gdHlwZUZyb21CaW5kaW5nTm9kZShiaW5kaW5nTm9kZSwgY29udGV4dCksXG4gICAgICAgIG5hbWUgPSBuYW1lRnJvbUJpbmRpbmdOb2RlKGJpbmRpbmdOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgZWxpZGVkID0gZWxpZGVkRnJvbUJpbmRpbmdOb2RlKGJpbmRpbmdOb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBiaW5kaW5nID0gbmV3IEJpbmRpbmcoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBuYW1lLCBlbGlkZWQpO1xuXG4gIHJldHVybiBiaW5kaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybmFyeUZyb21UZXJuYXJ5Tm9kZSh0ZXJuYXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFRlcm5hcnkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gdGVybmFyeU5vZGUsIC8vL1xuICAgICAgICB0ZXJtID0gdGVybUZyb21UZXJuYXJ5Tm9kZSh0ZXJuYXJ5Tm9kZSwgY29udGV4dCksXG4gICAgICAgIGlmRXhwcmVzc2lvbiA9IGlmRXhwcmVzc2lvbkZyb21UZXJuYXJ5Tm9kZSh0ZXJuYXJ5Tm9kZSwgY29udGV4dCksXG4gICAgICAgIGVsc2VFeHByZXNzaW9uID0gZWxzZUV4cHJlc3Npb25Gcm9tVGVybmFyeU5vZGUodGVybmFyeU5vZGUsIGNvbnRleHQpLFxuICAgICAgICB0ZXJuYXJ5U3RyaW5nID0gdGVybmFyeVN0cmluZ0Zyb21UZXJtKHRlcm0pLFxuICAgICAgICBzdHJpbmcgPSB0ZXJuYXJ5U3RyaW5nLCAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgdGVybmFyeSA9IG5ldyBUZXJuYXJ5KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgaWZFeHByZXNzaW9uLCBlbHNlRXhwcmVzc2lvbik7XG5cbiAgcmV0dXJuIHRlcm5hcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSByZWZlcmVuY2VOb2RlLFxuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIG5hbWUgPSBuYW1lRnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgbGFiZWwgPSBuZXcgTGFiZWwoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuYW1lKTtcblxuICByZXR1cm4gbGFiZWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250YWluc0Zyb21Db250YWluc05vZGUoY29udGFpbnNOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgQ29udGFpbnMgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gY29udGFpbnNOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbUNvbnRhaW5zTm9kZShjb250YWluc05vZGUsIGNvbnRleHQpLFxuICAgICAgICBzdWJzdHJpbmcgPSBzdWJzdHJpbmdGcm9tQ29udGFpbnNOb2RlKGNvbnRhaW5zTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgY29udGFpbnMgPSBuZXcgQ29udGFpbnMoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YXJpYWJsZSwgc3Vic3RyaW5nKTtcblxuICByZXR1cm4gY29udGFpbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmRzV2l0aEZyb21FbmRzV2l0aE5vZGUoZW5kc1dpdGhOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgRW5kc1dpdGggfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gZW5kc1dpdGhOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbUVuZHNXaXRoTm9kZShlbmRzV2l0aE5vZGUsIGNvbnRleHQpLFxuICAgICAgICBzdWJzdHJpbmcgPSBzdWJzdHJpbmdGcm9tRW5kc1dpdGhOb2RlKGVuZHNXaXRoTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgZW5kc1dpdGggPSBuZXcgRW5kc1dpdGgoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YXJpYWJsZSwgc3Vic3RyaW5nKTtcblxuICByZXR1cm4gZW5kc1dpdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCksXG4gICAgICAgIG5hbWUgPSBuYW1lRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBleHByZXNzaW9uID0gZXhwcmVzc2lvbkZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB2YXJpYWJsZSA9IG5ldyBWYXJpYWJsZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIG5hbWUsIGV4cHJlc3Npb24pO1xuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRpbmdzRnJvbUJpbmRpbmdzTm9kZShiaW5kaW5nc05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBCaW5kaW5ncyB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBiaW5kaW5nc05vZGUsICAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICBiaW5kaW5nc0FycmF5ID0gYmluZGluZ3NBcnJheUZyb21CaW5kaW5nc05vZGUoYmluZGluZ3NOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgYXJyYXkgPSBiaW5kaW5nc0FycmF5OyAvLy9cblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBiaW5kaW5ncyA9IG5ldyBCaW5kaW5ncyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGFycmF5KTtcblxuICByZXR1cm4gYmluZGluZ3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW5ndGhPZkZyb21MZW5ndGhPZk5vZGUobGVuZ3RoT2ZOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgTGVuZ3RoT2YgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gbGVuZ3RoT2ZOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbUxlbmd0aE9mTm9kZShsZW5ndGhPZk5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IGxlbmd0aE9mID0gbmV3IExlbmd0aE9mKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUpO1xuXG4gIHJldHVybiBsZW5ndGhPZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIGxpc3RBc3NpZ25tZW50ID0gbGlzdEFzc2lnbm1lbnRGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgb2JqZWN0QXNzaWdubWVudCA9IG9iamVjdEFzc2lnbm1lbnRGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgdmFyaWFibGVBc3NpZ25tZW50cyA9IHZhcmlhYmxlQXNzaWdubWVudHNGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBzdGF0ZW1lbnQgPSBuZXcgU3RhdGVtZW50KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGlzdEFzc2lnbm1lbnQsIG9iamVjdEFzc2lnbm1lbnQsIHZhcmlhYmxlQXNzaWdubWVudHMpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVGcm9tUHJvY2VkdXJlTm9kZShwcm9jZWR1cmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgUHJvY2VkdXJlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHByb2NlZHVyZU5vZGUsICAvLy9cbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tUHJvY2VkdXJlTm9kZShwcm9jZWR1cmVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbGFiZWwgPSBsYWJlbEZyb21Qcm9jZWR1cmVOb2RlKHByb2NlZHVyZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBleHBvcnRlZCA9IGV4cG9yZXRlZEZyb21Qcm9jZWR1cmVOb2RlKHByb2NlZHVyZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVOb2RlKHByb2NlZHVyZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICByZXR1cm5CbG9jayA9IHJldHVybkJsb2NrRnJvbVByb2NlZHVyZU5vZGUocHJvY2VkdXJlTm9kZSwgY29udGV4dCksXG4gICAgICAgIHByb2NlZHVyZVN0cmluZyA9IHByb2NlZHVyZVN0cmluZ0Zyb21UeXBlTGFiZWxFeHBvcnRlZFBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayh0eXBlLCBsYWJlbCwgZXhwb3J0ZWQsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKSxcbiAgICAgICAgc3RyaW5nID0gcHJvY2VkdXJlU3RyaW5nLCAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHByb2NlZHVyZSA9IG5ldyBQcm9jZWR1cmUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBsYWJlbCwgZXhwb3J0ZWQsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKTtcblxuICByZXR1cm4gcHJvY2VkdXJlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlRnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSByZWZlcmVuY2VOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICBuYW1lID0gbmFtZUZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHJlZmVyZW5jZSA9IG5ldyBSZWZlcmVuY2UoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuYW1lKTtcblxuICByZXR1cm4gcmVmZXJlbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyRnJvbVBhcmFtZXRlck5vZGUocGFyYW1ldGVyTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFBhcmFtZXRlciB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBwYXJhbWV0ZXJOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB0eXBlID0gdHlwZUZyb21QYXJhbmV0ZXJOb2RlKHBhcmFtZXRlck5vZGUsIGNvbnRleHQpLFxuICAgICAgICBuYW1lID0gbmFtZUZyb21QYXJhbmV0ZXJOb2RlKHBhcmFtZXRlck5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHBhcmFtZXRlciA9IG5ldyBQYXJhbWV0ZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBuYW1lKTtcblxuICByZXR1cm4gcGFyYW1ldGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9kZVF1ZXJ5RnJvbU5vZGVRdWVyeU5vZGUobm9kZVF1ZXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IE5vZGVRdWVyeSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBub2RlUXVlcnlOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbU5vZGVRdWVyeU5vZGUobm9kZVF1ZXJ5Tm9kZSwgY29udGV4dCksXG4gICAgICAgIHF1ZXJ5ID0gcXVlcnlGcm9tTm9kZVF1ZXJ5Tm9kZShub2RlUXVlcnlOb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBub2RlUXVlcnkgPSBuZXcgTm9kZVF1ZXJ5KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIHF1ZXJ5KTtcblxuICByZXR1cm4gbm9kZVF1ZXJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbWl0aXZlRnJvbVByaW1pdGl2ZU5vZGUocHJpbWl0aXZlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFByaW1pdGl2ZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBwcmltaXRpdmVOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB0eXBlID0gdHlwZUZyb21QcmltaXRpdmVOb2RlKHByaW1pdGl2ZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICB2YWx1ZSA9IHZhbHVlRnJvbVByaW1pdGl2ZU5vZGUocHJpbWl0aXZlTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcHJpbWl0aXZlID0gbmV3IFByaW1pdGl2ZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHZhbHVlKTtcblxuICByZXR1cm4gcHJpbWl0aXZlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9JbnRlZ2VyRnJvbVRvSW50ZWdlck5vZGUodG9JbnRlZ2VyTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFRvSW50ZWdlciB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSB0b0ludGVnZXJOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVRvSW50ZWdlck5vZGUodG9JbnRlZ2VyTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgdG9JbnRlZ2VyID0gbmV3IFRvSW50ZWdlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlKTtcblxuICByZXR1cm4gdG9JbnRlZ2VyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRzV2l0aEZyb21TdGFydHNXaXRoTm9kZShzdGFydHNXaXRoTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFN0YXJ0c1dpdGggfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gc3RhcnRzV2l0aE5vZGUsIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tU3RhcnRzV2l0aE5vZGUoc3RhcnRzV2l0aE5vZGUsIGNvbnRleHQpLFxuICAgICAgICBzdWJzdHJpbmcgPSBzdWJzdHJpbmdGcm9tU3RhcnRzV2l0aE5vZGUoc3RhcnRzV2l0aE5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHN0YXJ0c1dpdGggPSBuZXcgU3RhcnRzV2l0aChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBzdWJzdHJpbmcpO1xuXG4gIHJldHVybiBzdGFydHNXaXRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9kZXNRdWVyeUZyb21Ob2Rlc1F1ZXJ5Tm9kZShub2Rlc1F1ZXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IE5vZGVzUXVlcnkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gbm9kZXNRdWVyeU5vZGUsICAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbU5vZGVzUXVlcnlOb2RlKG5vZGVzUXVlcnlOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgcXVlcnkgPSBxdWVyeUZyb21Ob2Rlc1F1ZXJ5Tm9kZShub2Rlc1F1ZXJ5Tm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3Qgbm9kZXNRdWVyeSA9IG5ldyBOb2Rlc1F1ZXJ5KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIHF1ZXJ5KTtcblxuICByZXR1cm4gbm9kZXNRdWVyeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNGcm9tUGFyYW1ldGVyc05vZGUocGFyYW1ldGVyc05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBQYXJhbWV0ZXJzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHBhcmFtZXRlcnNOb2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgcGFyYW1ldGVyc0FycmF5ID0gcGFyYW1ldGVyc0FycmF5RnJvbVBhcmFtZXRlcnNOb2RlKHBhcmFtZXRlcnNOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgYXJyYXkgPSBwYXJhbWV0ZXJzQXJyYXk7IC8vL1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHBhcmFtZXRlcnMgPSBuZXcgUGFyYW1ldGVycyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGFycmF5KTtcblxuICByZXR1cm4gcGFyYW1ldGVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cHJlc3Npb25Gcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBFeHByZXNzaW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGV4cHJlc3Npb25Ob2RlLCAgLy8vXG4gICAgICAgIHRlcm0gPSB0ZXJtRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgc29tZSA9IHNvbWVGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICBldmVyeSA9IGV2ZXJ5RnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgcmVkdWNlID0gcmVkdWNlRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgYXBwbHkgPSBhcHBseUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgIHRlcm5hcnkgPSB0ZXJuYXJ5RnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5RnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9kZXNRdWVyeSA9IG5vZGVzUXVlcnlGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICBsZW5ndGhPZiA9IGxlbmd0aE9mRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgdG9JbnRlZ2VyID0gdG9JbnRlZ2VyRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgdHJ5SW50ZWdlciA9IHRyeUludGVnZXJGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICBjb250YWlucyA9IGNvbnRhaW5zRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgZW5kc1dpdGggPSBlbmRzV2l0aEZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgIHN0YXJ0c1dpdGggPSBzdGFydHNXaXRoRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgcmV0dXJuQmxvY2sgPSByZXR1cm5CbG9ja0Zyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgIHByb2NlZHVyZUNhbGwgPSBwcm9jZWR1cmVDYWxsRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgcHJvcGVydGllcyA9IFtcbiAgICAgICAgICB0ZXJtLFxuICAgICAgICAgIHNvbWUsXG4gICAgICAgICAgZXZlcnksXG4gICAgICAgICAgcmVkdWNlLFxuICAgICAgICAgIGFwcGx5LFxuICAgICAgICAgIHRlcm5hcnksXG4gICAgICAgICAgbm9kZVF1ZXJ5LFxuICAgICAgICAgIG5vZGVzUXVlcnksXG4gICAgICAgICAgbGVuZ3RoT2YsXG4gICAgICAgICAgdG9JbnRlZ2VyLFxuICAgICAgICAgIHRyeUludGVnZXIsXG4gICAgICAgICAgY29udGFpbnMsXG4gICAgICAgICAgZW5kc1dpdGgsXG4gICAgICAgICAgc3RhcnRzV2l0aCxcbiAgICAgICAgICByZXR1cm5CbG9jayxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsXG4gICAgICAgIF0sXG4gICAgICAgIGV4cHJlc3Npb25TdHJpbmcgPSBleHByZXNzaW9uU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcywgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IGV4cHJlc3Npb25TdHJpbmcsICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgZXhwcmVzc2lvbiA9IG5ldyBFeHByZXNzaW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgc29tZSwgZXZlcnksIHJlZHVjZSwgYXBwbHksIHRlcm5hcnksIG5vZGVRdWVyeSwgbm9kZXNRdWVyeSwgbGVuZ3RoT2YsIHRvSW50ZWdlciwgdHJ5SW50ZWdlciwgY29udGFpbnMsIGVuZHNXaXRoLCBzdGFydHNXaXRoLCByZXR1cm5CbG9jaywgcHJvY2VkdXJlQ2FsbCk7XG5cbiAgcmV0dXJuIGV4cHJlc3Npb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cnlJbnRlZ2VyRnJvbVRyeUludGVnZXJOb2RlKHRyeUludGVnZXJOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVHJ5SW50ZWdlciB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSB0cnlJbnRlZ2VyTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21UcnlJbnRlZ2VyTm9kZSh0cnlJbnRlZ2VyTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgdHJ5SW50ZWdlciA9IG5ldyBUcnlJbnRlZ2VyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUpO1xuXG4gIHJldHVybiB0cnlJbnRlZ2VyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlc0Zyb21SZWZlcmVuY2VzTm9kZShyZWZlcmVuY2VzTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFJlZmVyZW5jZXMgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcmVmZXJlbmNlc05vZGUsIC8vL1xuICAgICAgICByZWZlcmVuY2VOb2RlcyA9IHJlZmVyZW5jZXNOb2RlLmdldFJlZmVyZW5jZU5vZGVzKCksXG4gICAgICAgIHJlZmVyZW5jZXNBcnJheSA9IHJlZmVyZW5jZXNBcnJheUZyb21SZWZlcmVuY2VOb2RlcyhyZWZlcmVuY2VOb2RlcywgY29udGV4dCksXG4gICAgICAgIHJlZmVyZW5jZXNTdHJpbmcgPSByZWZlcmVuY2VzU3RyaW5nRnJvbVJlZmVyZW5jZXNBcnJheShyZWZlcmVuY2VzQXJyYXkpLFxuICAgICAgICBzdHJpbmcgPSByZWZlcmVuY2VzU3RyaW5nLCAgLy8vXG4gICAgICAgIGFycmF5ID0gcmVmZXJlbmNlc0FycmF5LCAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcmVmZXJlbmNlcyA9IG5ldyBSZWZlcmVuY2VzKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgYXJyYXkpO1xuXG4gIHJldHVybiByZWZlcmVuY2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV0dXJuQmxvY2tGcm9tUmV0dXJuQmxvY2tOb2RlKHJldHVybkJsb2NrTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFJldHVybkJsb2NrIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHJldHVybkJsb2NrTm9kZSwgLy8vXG4gICAgICAgIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzRnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpLFxuICAgICAgICBub25zZW5zaWNhbCA9IG5vbnNlbnNpY2FsRnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpLFxuICAgICAgICByZXR1cm5TdGF0ZW1lbnQgPSByZXR1cm5TdGF0ZW1lbnRGcm9tUmV0dXJuQmxvY2tOb2RlKHJldHVybkJsb2NrTm9kZSwgY29udGV4dCksXG4gICAgICAgIHJldHVybkJsb2NrU3RyaW5nID0gcmV0dXJuQmxvY2tTdHJpbmdGcm9tUmV0dXJuU3RhdGVtZW50Tm9kZShyZXR1cm5TdGF0ZW1lbnQpLFxuICAgICAgICBzdHJpbmcgPSByZXR1cm5CbG9ja1N0cmluZywgIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCByZXR1cm5CbG9jayA9IG5ldyBSZXR1cm5CbG9jayhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudHMsIG5vbnNlbnNpY2FsLCByZXR1cm5TdGF0ZW1lbnQpO1xuXG4gIHJldHVybiByZXR1cm5CbG9jaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lZ2F0ZWRUZXJtRnJvbU5lZ2F0ZWRUZXJtTm9kZShuZWdhdGVkVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBOZWdhdGVkVGVybSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBuZWdhdGVkVGVybU5vZGUsIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHRlcm1Ob2RlID0gbmVnYXRlZFRlcm1Ob2RlLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbU5lZ2F0ZWRUZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIHRlcm0gPSB0ZXJtRnJvbU5lZ2F0ZWRUZXJtTm9kZShuZWdhdGVkVGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBuZWdhdGVkVGVybSA9IG5ldyBOZWdhdGVkVGVybShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHRlcm0pO1xuXG4gIHJldHVybiBuZWdhdGVkVGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ2ljYWxUZXJtRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBMb2dpY2FsVGVybSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBsb2dpY2FsVGVybU5vZGUsIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBkaXNqdW5jdGlvbiA9IGRpc2p1bmN0aW9uRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBsZWZ0VGVybSA9IGxlZnRUZXJtRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICByaWdodFRlcm0gPSByaWdodFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIGxvZ2ljYWxUZXJtID0gbmV3IExvZ2ljYWxUZXJtKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgZGlzanVuY3Rpb24sIGxlZnRUZXJtLCByaWdodFRlcm0pO1xuXG4gIHJldHVybiBsb2dpY2FsVGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVkQmluZGluZ0Zyb21OYW1lZEJpbmRpbmdOb2RlKG5hbWVkQmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBOYW1lZEJpbmRpbmcgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gbmFtZWRCaW5kaW5nTm9kZSwgIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbU5hbWVkQmluZGluZ05vZGUobmFtZWRCaW5kaW5nTm9kZSwgY29udGV4dCksXG4gICAgICAgIG5hbWUgPSBuYW1lRnJvbU5hbWVkQmluZGluZ05vZGUobmFtZWRCaW5kaW5nTm9kZSwgY29udGV4dCksXG4gICAgICAgIGFsaWFzID0gYWxpYXNGcm9tTmFtZWRCaW5kaW5nTm9kZShuYW1lZEJpbmRpbmdOb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBuYW1lZEJpbmRpbmcgPSBuZXcgTmFtZWRCaW5kaW5nKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgbmFtZSwgYWxpYXMpO1xuXG4gIHJldHVybiBuYW1lZEJpbmRpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lZEJpbmRpbmdzRnJvbU5hbWVkQmluZGluZ3NOb2RlKG5hbWVkQmluZGluZ3NOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgTmFtZWRCaW5kaW5ncyB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBuYW1lZEJpbmRpbmdzTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgbmFtZWRCaW5kaW5nTm9kZXMgPSBuYW1lZEJpbmRpbmdzTm9kZS5nZXROYW1lZEJpbmRpbmdOb2RlcygpLFxuICAgICAgICBuYW1lZEJpbmRpbmdzQXJyYXkgPSBuYW1lZFBhcmFtZXRlcnNBcnJheUZyb21OYW1lZEJpbmRpbmdOb2RlcyhuYW1lZEJpbmRpbmdOb2RlcywgY29udGV4dCksXG4gICAgICAgIGFycmF5ID0gbmFtZWRCaW5kaW5nc0FycmF5OyAvLy9cblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBuYW1lZEJpbmRpbmdzID0gbmV3IE5hbWVkQmluZGluZ3MoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBhcnJheSk7XG5cbiAgcmV0dXJuIG5hbWVkQmluZGluZ3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBicmFja2V0ZWRUZXJtRnJvbUJyYWNrZXRlZFRlcm1Ob2RlKGJyYWNrZXRlZFRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgQnJhY2tldGVkVGVybSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBicmFja2V0ZWRUZXJtTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLCAgLy8vXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB0ZXJtID0gdGVybUZyb21CcmFja2V0ZWRUZXJtTm9kZShicmFja2V0ZWRUZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIGJyYWNrZXRlZFRlcm0gPSBuZXcgQnJhY2tldGVkVGVybShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0pO1xuXG4gIHJldHVybiBicmFja2V0ZWRUZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlQ2FsbEZyb21Qcm9jZWR1cmVDYWxsTm9kZShwcm9jZWR1cmVDYWxsTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFByb2NlZHVyZUNhbGwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcHJvY2VkdXJlQ2FsbE5vZGUsIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZUZyb21Qcm9jZWR1cmVDYWxsTm9kZShwcm9jZWR1cmVDYWxsTm9kZSwgY29udGV4dCksXG4gICAgICAgIHZhbHVlcyA9IHZhbHVlc0Zyb21Qcm9jZWR1cmVDYWxsTm9kZShwcm9jZWR1cmVDYWxsTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcHJvY2VkdXJlQ2FsbCA9IG5ldyBQcm9jZWR1cmVDYWxsKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCB2YWx1ZXMpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1wb3J0QmluZGluZ0Zyb21JbXBvcnRCaW5kaW5nTm9kZShpbXBvcnRCaW5kaW5nTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IEltcG9ydEJpbmRpbmcgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gaW1wb3J0QmluZGluZ05vZGUsIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIGxhYmVsID0gbGFiZWxGcm9tSW1wb3J0QmluZGluZ05vZGUoaW1wb3J0QmluZGluZ05vZGUsIGNvbnRleHQpLFxuICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2VGcm9tSW1wb3J0QmluZGluZ05vZGUoaW1wb3J0QmluZGluZ05vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IGltcG9ydEJpbmRpbmcgPSBuZXcgSW1wb3J0QmluZGluZyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVsLCByZWZlcmVuY2UpO1xuXG4gIHJldHVybiBpbXBvcnRCaW5kaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyaXNvblRlcm1Gcm9tQ29tcGFyaXNvblRlcm1Ob2RlKGNvbXBhcmlzb25UZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IENvbXBhcmlzb25UZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGNvbXBhcmlzb25UZXJtTm9kZSwgIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIG5lZ2F0ZWQgPSBuZWdhdGVkRnJvbUNvbXBhcmlzb25UZXJtTm9kZShjb21wYXJpc29uVGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBsZWZ0VGVybSA9IGxlZnRUZXJtRnJvbUNvbXB6cmlzb25UZXJtTm9kZShjb21wYXJpc29uVGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICByaWdodFRlcm0gPSByaWdodFRlcm1Gcm9tQ29tcHpyaXNvblRlcm1Ob2RlKGNvbXBhcmlzb25UZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIGNvbXBhcmlzb25UZXJtID0gbmV3IENvbXBhcmlzb25UZXJtKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmVnYXRlZCwgbGVmdFRlcm0sIHJpZ2h0VGVybSk7XG5cbiAgcmV0dXJuIGNvbXBhcmlzb25UZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdEFzc2lnbm1lbnRGcm9tTGlzdEFzc2lnbm1lbnROb2RlKGxpc3RBc3NpZ25tZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IExpc3RBc3NpZ25tZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGxpc3RBc3NpZ25tZW50Tm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21MaXN0QXNzaWdubWVudE5vZGUobGlzdEFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgYmluZGluZ3MgPSBiaW5kaW5nc0Zyb21MaXN0QXNzaWdubWVudE5vZGUobGlzdEFzc2lnbm1lbnROb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBsaXN0QXNzaWdubWVudCA9IG5ldyBMaXN0QXNzaWdubWVudChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBiaW5kaW5ncyk7XG5cbiAgcmV0dXJuIGxpc3RBc3NpZ25tZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZWRCaW5kaW5nc0Zyb21PYmplY3RBc3NpZ25tZW50Tm9kZShvYmplY3RBc3NpZ25tZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuYW1lZEJpbmRpbmdzTm9kZSA9IG9iamVjdEFzc2lnbm1lbnROb2RlLmdldE5hbWVkQmluZGluZ3NOb2RlKCksXG4gICAgICAgIG5hbWVkQmluZGluZ3MgPSBuYW1lZEJpbmRpbmdzRnJvbU5hbWVkQmluZGluZ3NOb2RlKG5hbWVkQmluZGluZ3NOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gbmFtZWRCaW5kaW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltcG9ydFN0YXRlbWVudEZyb21JbXBvcnRTdGF0ZW1lbnROb2RlKGltcG9ydFN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBJbXBvcnRTdGF0ZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gaW1wb3J0U3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSByZWxlYXNlTmFtZUZyb21JbXBvcnRTdGF0ZW1lbnROb2RlKGltcG9ydFN0YXRlbWVudE5vZGUsIGNvbnRleHQpLFxuICAgICAgICBpbXBvcnRCaW5kaW5ncyA9IGltcG9ydEJpbmRpbmdzRnJvbUltcG9ydFN0YXRlbWVudE5vZGUoaW1wb3J0U3RhdGVtZW50Tm9kZSwgY29udGV4dCksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICBpbXBvcnRTdGF0ZW1lbnQgPSBuZXcgSW1wb3J0U3RhdGVtZW50KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVsZWFzZU5hbWUsIGltcG9ydEJpbmRpbmdzKTtcblxuICByZXR1cm4gaW1wb3J0U3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV0dXJuU3RhdGVtZW50RnJvbVJldHVyblN0YXRlbWVudE5vZGUocmV0dXJuU3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFJldHVyblN0YXRlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSByZXR1cm5TdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YWx1ZSA9IHZhbHVlRnJvbVJldHVyblN0YXRlbWVudE5vZGUocmV0dXJuU3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcmV0dXJuU3RhdGVtZW50ID0gbmV3IFJldHVyblN0YXRlbWVudChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhbHVlKTtcblxuICByZXR1cm4gcmV0dXJuU3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0QXNzaWdubWVudEZyb21PYmplY3RBc3NpZ25tZW50Tm9kZShvYmplY3RBc3NpZ25tZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IE9iamVjdEFzc2lnbm1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gb2JqZWN0QXNzaWdubWVudE5vZGUsICAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbU9iamVjdEFzc2lnbm1lbnROb2RlKG9iamVjdEFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbmFtZWRCaW5kaW5ncyA9IG5hbWVkQmluZGluZ3NGcm9tT2JqZWN0QXNzaWdubWVudE5vZGUob2JqZWN0QXNzaWdubWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IG9iamVjdEFzc2lnbm1lbnQgPSBuZXcgT2JqZWN0QXNzaWdubWVudChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBuYW1lZEJpbmRpbmdzKTtcblxuICByZXR1cm4gb2JqZWN0QXNzaWdubWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFub255bW91c1Byb2NlZHVyZUZyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBBbm9ueW1vdXNQcm9jZWR1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgIC8vL1xuICAgICAgICB0eXBlID0gdHlwZUZyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0Zyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICByZXR1cm5CbG9jayA9IHJldHVybkJsb2NrRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCksXG4gICAgICAgIG5vbnltb3VzUHJvY2VkdXJlU3RyaW5nID0gYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVQYXJhbWV0ZXJzQW5kUmV0dXJuQmxvY2sodHlwZSwgcGFyYW1ldGVycywgcmV0dXJuQmxvY2spLFxuICAgICAgICBzdHJpbmcgPSBub255bW91c1Byb2NlZHVyZVN0cmluZywgLy8vXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IGFub255bW91c1Byb2NlZHVyZSA9IG5ldyBBbm9ueW1vdXNQcm9jZWR1cmUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBwYXJhbWV0ZXJzLCByZXR1cm5CbG9jayk7XG5cbiAgcmV0dXJuIGFub255bW91c1Byb2NlZHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlQXNzaWdubWVudHNGcm9tVmFyaWFibGVBc3NpZ25tZW50c05vZGUodmFyaWFibGVBc3NpZ25tZW50c05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYXJpYWJsZUFzc2lnbm1lbnRzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHZhcmlhYmxlQXNzaWdubWVudHNOb2RlLCAvLy9cbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tVmFyaWFibGVBc3NpZ25tZW50c05vZGUodmFyaWFibGVBc3NpZ25tZW50c05vZGUsIGNvbnRleHQpLFxuICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkgPSB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXlGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNOb2RlKHR5cGUsIHZhcmlhYmxlQXNzaWdubWVudHNOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nID0gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkodHlwZSwgdmFyaWFibGVBc3NpZ25tZW50c0FycmF5KSxcbiAgICAgICAgYXJyYXkgPSB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXksIC8vL1xuICAgICAgICBzdHJpbmcgPSB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmcsICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgdmFyaWFibGVBc3NpZ25tZW50cyA9IG5ldyBWYXJpYWJsZUFzc2lnbm1lbnRzKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgYXJyYXkpO1xuXG4gIHJldHVybiB2YXJpYWJsZUFzc2lnbm1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnROb2RlKHR5cGUsIHZhcmlhYmxlQXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYXJpYWJsZUFzc2lnbm1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gdmFyaWFibGVBc3NpZ25tZW50Tm9kZSwgIC8vL1xuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnROb2RlKHR5cGUsIHZhcmlhYmxlQXNzaWdubWVudE5vZGUsIGNvbnRleHQpLFxuICAgICAgICBleHByZXNzaW9uID0gZXhwcmVzc2lvbkZyb21WYXJpYWJsZUFzc2lnbm1lbnROb2RlKHZhcmlhYmxlQXNzaWdubWVudE5vZGUsIGNvbnRleHQpLFxuICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmcgPSB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlKHR5cGUsIHZhcmlhYmxlLCBjb250ZXh0KSxcbiAgICAgICAgc3RyaW5nID0gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nLCAgLy8vXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICBhc3NpZ25tZW50ID0gbmV3IFZhcmlhYmxlQXNzaWdubWVudChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBleHByZXNzaW9uKTtcblxuICByZXR1cm4gYXNzaWdubWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbmFtZSA9IHR5cGVOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tTGFiZWxOb2RlKGxhYmVsTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuYW1lID0gbGFiZWxOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlc0Zyb21BcHBseU5vZGUoYWxsTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YWx1ZXNOb2RlID0gYWxsTm9kZS5nZXRWYWx1ZXNOb2RlKCksIC8vL1xuICAgICAgICB2YWx1ZXMgPSB2YWx1ZXNGcm9tVmFsdWVzTm9kZSh2YWx1ZXNOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFsdWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGcm9tUmVkdWNlTm9kZShyZWR1Y2VOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhbHVlTm9kZSA9IHJlZHVjZU5vZGUuZ2V0VmFsdWVOb2RlKCksXG4gICAgICAgIHZhbHVlID0gdmFsdWVGcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21UZXJuYXJ5Tm9kZSh0ZXJuYXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm5hcnlOb2RlLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tQmluZGluZ05vZGUoYmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbmFtZSA9IGJpbmRpbmdOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tQmluZGluZ05vZGUoYmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHR5cGUgPSBudWxsO1xuXG4gIGNvbnN0IHR5cGVOb2RlID0gYmluZGluZ05vZGUuZ2V0VHlwZU5vZGUoKTtcblxuICBpZiAodHlwZU5vZGUgIT0gbnVsbCkge1xuICAgIHR5cGUgPSB0eXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tU29tZU5vZGUoc29tZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gc29tZU5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHZhcmlhYmxlID0gbnVsbDtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB0ZXJtTm9kZS5nZXRWYXJpYWJsZU5vZGUoKTtcblxuICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSkge1xuICBjb25zdCBuYW1lID0gdmFyaWFibGVOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0eXBlID0gbnVsbDtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbUFwcGx5Tm9kZShhbGxOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IGFsbE5vZGUuZ2V0VmFyaWFibGVOb2RlKCksIC8vL1xuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tUHJvY2VkdXJlTm9kZShwcm9jZWR1cmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOb2RlID0gcHJvY2VkdXJlTm9kZS5nZXRUeXBlTm9kZSgpLFxuICAgICAgICB0eXBlID0gdHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmltaXRpdmVGcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHByaW1pdGl2ZSA9IG51bGw7XG5cbiAgY29uc3QgcHJpbWl0aXZlTm9kZSA9IHRlcm1Ob2RlLmdldFByaW1pdGl2ZU5vZGUoKTtcblxuICBpZiAocHJpbWl0aXZlTm9kZSAhPT0gbnVsbCkge1xuICAgIHByaW1pdGl2ZSA9IHByaW1pdGl2ZUZyb21QcmltaXRpdmVOb2RlKHByaW1pdGl2ZU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHByaW1pdGl2ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbUV2ZXJ5Tm9kZShldmVyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gZXZlcnlOb2RlLmdldFZhcmlhYmxlTm9kZSgpLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVsaWRlZEZyb21CaW5kaW5nTm9kZShiaW5kaW5nTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBlbGlkZWQgPSBiaW5kaW5nTm9kZS5pc0VsaWRlZCgpO1xuXG4gIHJldHVybiBlbGlkZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbVBhcmFuZXRlck5vZGUocGFyYW1ldGVyTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0eXBlTm9kZSA9IHBhcmFtZXRlck5vZGUuZ2V0VHlwZU5vZGUoKSxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZUZyb21QYXJhbmV0ZXJOb2RlKHBhcmFtZXRlck5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbmFtZSA9IHBhcmFtZXRlck5vZGUuZ2V0TmFtZSgpO1xuXG4gIHJldHVybiBuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZUZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbmFtZSA9IHJlZmVyZW5jZU5vZGUuZ2V0TmFtZSgpO1xuXG4gIHJldHVybiBuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21QcmltaXRpdmVOb2RlKHByaW1pdGl2ZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBUeXBlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdHlwZU5hbWUgPSBwcmltaXRpdmVOb2RlLmdldFR5cGVOYW1lKCksXG4gICAgICAgIHR5cGUgPSBUeXBlLmZyb21UeXBlTmFtZSh0eXBlTmFtZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSB7XG4gIGxldCB2YXJpYWJsZSA9IG51bGw7XG5cbiAgY29uc3QgdmFyaWFibGVOb2RlID0gdmFsdWVOb2RlLmdldFZhcmlhYmxlTm9kZSgpO1xuXG4gIGlmICh2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbWl0aXZlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHByaW1pdGl2ZSA9IG51bGw7XG5cbiAgY29uc3QgcHJpbWl0aXZlTm9kZSA9IHZhbHVlTm9kZS5nZXRQcmltaXRpdmVOb2RlKCk7XG5cbiAgaWYgKHByaW1pdGl2ZU5vZGUgIT09IG51bGwpIHtcbiAgICBwcmltaXRpdmUgPSBwcmltaXRpdmVGcm9tUHJpbWl0aXZlTm9kZShwcmltaXRpdmVOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBwcmltaXRpdmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21SZWR1Y2VOb2RlKHJlZHVjZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gcmVkdWNlTm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeUZyb21Ob2RlUXVlcnlOb2RlKG5vZGVRdWVyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RyaW5nID0gbm9kZVF1ZXJ5Tm9kZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgZXhwcmVzc2lvblN0cmluZyA9IHN0cmluZywgIC8vL1xuICAgICAgICBxdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uU3RyaW5nKGV4cHJlc3Npb25TdHJpbmcpO1xuXG4gIHJldHVybiBxdWVyeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbVByaW1pdGl2ZU5vZGUocHJpbWl0aXZlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YWx1ZSA9IHByaW1pdGl2ZU5vZGUuZ2V0VmFsdWUoKTtcblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21Qcm9jZWR1cmVOb2RlKHByb2NlZHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbGFiZWxOb2RlID0gcHJvY2VkdXJlTm9kZS5nZXRMYWJlbE5vZGUoKSxcbiAgICAgICAgbGFiZWwgPSBsYWJlbEZyb21MYWJlbE5vZGUobGFiZWxOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gbGFiZWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCB0ZXJtID0gbnVsbDtcblxuICBjb25zdCB0ZXJtTm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldFRlcm1Ob2RlKCk7XG5cbiAgaWYgKHRlcm1Ob2RlICE9PSBudWxsKSB7XG4gICAgdGVybSA9IHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb21lRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCBzb21lID0gbnVsbDtcblxuICBjb25zdCBzb21lTm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldFNvbWVOb2RlKCk7XG5cbiAgaWYgKHNvbWVOb2RlICE9PSBudWxsKSB7XG4gICAgc29tZSA9IHNvbWVGcm9tU29tZU5vZGUoc29tZU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHNvbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VzRnJvbUFwcGx5Tm9kZShhbGxOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlZmVyZW5jZXNOb2RlID0gYWxsTm9kZS5nZXRSZWZlcmVuY2VzTm9kZSgpLFxuICAgICAgICByZWZlcmVuY2VzID0gcmVmZXJlbmNlc0Zyb21SZWZlcmVuY2VzTm9kZShyZWZlcmVuY2VzTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWdhdGVkVGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCkge1xuICBsZXQgbmVnYXRlZFRlcm0gPSBudWxsO1xuXG4gIGNvbnN0IG5lZ2F0ZWRUZXJtTm9kZSA9IHRlcm1Ob2RlLmdldE5lZ2F0ZWRUZXJtTm9kZSgpO1xuXG4gIGlmIChuZWdhdGVkVGVybU5vZGUgIT09IG51bGwpIHtcbiAgICBuZWdhdGVkVGVybSA9IG5lZ2F0ZWRUZXJtRnJvbU5lZ2F0ZWRUZXJtTm9kZShuZWdhdGVkVGVybU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIG5lZ2F0ZWRUZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9naWNhbFRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IGxvZ2ljYWxUZXJtID0gbnVsbDtcblxuICBjb25zdCBsb2dpY2FsVGVybU5vZGUgPSB0ZXJtTm9kZS5nZXRMb2dpY2FsVGVybU5vZGUoKTtcblxuICBpZiAobG9naWNhbFRlcm1Ob2RlICE9PSBudWxsKSB7XG4gICAgbG9naWNhbFRlcm0gPSBsb2dpY2FsVGVybUZyb21Mb2dpY2FsVGVybU5vZGUobG9naWNhbFRlcm1Ob2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBsb2dpY2FsVGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5RnJvbU5vZGVzUXVlcnlOb2RlKG5vZGVzUXVlcnlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0cmluZyA9IG5vZGVzUXVlcnlOb2RlLmdldFN0cmluZygpLFxuICAgICAgICBleHByZXNzaW9uU3RyaW5nID0gc3RyaW5nLCAgLy8vXG4gICAgICAgIHF1ZXJ5ID0gUXVlcnkuZnJvbUV4cHJlc3Npb25TdHJpbmcoZXhwcmVzc2lvblN0cmluZyk7XG5cbiAgcmV0dXJuIHF1ZXJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlcnlGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IGV2ZXJ5ID0gbnVsbDtcblxuICBjb25zdCBldmVyeU5vZGUgPSBleHByZXNzaW9uTm9kZS5nZXRFdmVyeU5vZGUoKTtcblxuICBpZiAoZXZlcnlOb2RlICE9PSBudWxsKSB7XG4gICAgZXZlcnkgPSBldmVyeUZyb21FdmVyeU5vZGUoZXZlcnlOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBldmVyeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCBhcHBseSA9IG51bGw7XG5cbiAgY29uc3QgYXBwbHlOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0QXBwbHlOb2RlKCk7XG5cbiAgaWYgKGFwcGx5Tm9kZSAhPT0gbnVsbCkge1xuICAgIGFwcGx5ID0gYXBwbHlGcm9tQXBwbHlOb2RlKGFwcGx5Tm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gYXBwbHk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdHlwZSA9IEJPT0xFQU5fVFlQRV9OQU1FO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21OZWdhdGVkVGVybU5vZGUobG9naWNhbFRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGUgPSBCT09MRUFOX1RZUEVfTkFNRTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tTmVnYXRlZFRlcm1Ob2RlKG5lZ2F0ZWRUZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IG5lZ2F0ZWRUZXJtTm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcmd1bWVudFR5cGVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IGFyZ3VtZW50VHlwZSA9IG51bGw7XG5cbiAgY29uc3QgYXJndW1lbnRUeXBlTmFtZSA9IHR5cGVOb2RlLmdldEFyZ3VtZW50VHlwZU5hbWUoKTtcblxuICBpZiAoYXJndW1lbnRUeXBlTmFtZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgVHlwZSB9ID0gZWxlbWVudHM7XG5cbiAgICBhcmd1bWVudFR5cGUgPSBUeXBlLmZyb21UeXBlTmFtZShhcmd1bWVudFR5cGVOYW1lLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBhcmd1bWVudFR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21MZW5ndGhPZk5vZGUobGVuZ3RoT2ZOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IGxlbmd0aE9mTm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21Db250YWluc05vZGUoY29udGFpbnNOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IGNvbnRhaW5zTm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21FbmRzV2l0aE5vZGUoZW5kc1dpdGhOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IGVuZHNXaXRoTm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHJlZHVjZSA9IG51bGw7XG5cbiAgY29uc3QgcmVkdWNlTm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldFJlZHVjZU5vZGUoKTtcblxuICBpZiAocmVkdWNlTm9kZSAhPT0gbnVsbCkge1xuICAgIHJlZHVjZSA9IHJlZHVjZUZyb21SZWR1Y2VOb2RlKHJlZHVjZU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlZHVjZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tTmFtZWRCaW5kaW5nTm9kZShuYW1lZEJpbmRpbmdOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOb2RlID0gbmFtZWRCaW5kaW5nTm9kZS5nZXRUeXBlTm9kZSgpLFxuICAgICAgICB0eXBlID0gdHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lRnJvbU5hbWVkQmluZGluZ05vZGUobmFtZWRCaW5kaW5nTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuYW1lID0gbmFtZWRCaW5kaW5nTm9kZS5nZXROYW1lKCk7XG5cbiAgcmV0dXJuIG5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdHJpbmdGcm9tQ29udGFpbnNOb2RlKGNvbnRhaW5zTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdHJpbmcgPSBjb250YWluc05vZGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1YnN0cmluZyA9IHN0cmluZzsgIC8vL1xuXG4gIHJldHVybiBzdWJzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdHJpbmdGcm9tRW5kc1dpdGhOb2RlKGVuZHNXaXRoTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdHJpbmcgPSBlbmRzV2l0aE5vZGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1YnN0cmluZyA9IHN0cmluZzsgIC8vL1xuXG4gIHJldHVybiBzdWJzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGlhc0Zyb21OYW1lZEJpbmRpbmdOb2RlKG5hbWVkQmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgYWxpYXMgPSBuYW1lZEJpbmRpbmdOb2RlLmdldEFsaWFzKCk7XG5cbiAgcmV0dXJuIGFsaWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tTm9kZVF1ZXJ5Tm9kZShub2RlUXVlcnlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IG5vZGVRdWVyeU5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybmFyeUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgdGVybmFyeSA9IG51bGw7XG5cbiAgY29uc3QgdGVybmFyeU5vZGUgPSBleHByZXNzaW9uTm9kZS5nZXRUZXJuYXJ5Tm9kZSgpO1xuXG4gIGlmICh0ZXJuYXJ5Tm9kZSAhPT0gbnVsbCkge1xuICAgIHRlcm5hcnkgPSB0ZXJuYXJ5RnJvbVRlcm5hcnlOb2RlKHRlcm5hcnlOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJuYXJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnJhY2tldGVkVGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCkge1xuICBsZXQgYnJhY2tldGVkVGVybSA9IG51bGw7XG5cbiAgY29uc3QgYnJhY2tldGVkVGVybU5vZGUgPSB0ZXJtTm9kZS5nZXRCcmFja2V0ZWRUZXJtTm9kZSgpO1xuXG4gIGlmIChicmFja2V0ZWRUZXJtTm9kZSAhPT0gbnVsbCkge1xuICAgIGJyYWNrZXRlZFRlcm0gPSBicmFja2V0ZWRUZXJtRnJvbUJyYWNrZXRlZFRlcm1Ob2RlKGJyYWNrZXRlZFRlcm1Ob2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWRUZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tVG9JbnRlZ2VyTm9kZSh0b0ludGVnZXJOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHRvSW50ZWdlck5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21CcmFja2V0ZWRUZXJtTm9kZShicmFja2V0ZWRUZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IGJyYWNrZXRlZFRlcm1Ob2RlLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmlzb25UZXJtRnJvbVRlcm1Ob2RlKHRlcm1OT2RlLCBjb250ZXh0KSB7XG4gIGxldCBjb21wYXJpc29uVGVybSA9IG51bGw7XG5cbiAgY29uc3QgY29tcGFyaXNvblRlcm1Ob2RlID0gdGVybU5PZGUuZ2V0Q29tcGFyaXNvblRlcm1Ob2RlKCk7XG5cbiAgaWYgKGNvbXBhcmlzb25UZXJtTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbXBhcmlzb25UZXJtID0gY29tcGFyaXNvblRlcm1Gcm9tQ29tcGFyaXNvblRlcm1Ob2RlKGNvbXBhcmlzb25UZXJtTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gY29tcGFyaXNvblRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsVmFsdWVGcm9tUmVkdWNlTm9kZShyZWR1Y2VOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVGcm9tUmVkdWNlTm9kZShyZWR1Y2VOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgaW5pdGlhbFZhbHVlID0gdmFsdWU7IC8vL1xuXG4gIHJldHVybiBpbml0aWFsVmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHByZXNzaW9uRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgZXhwcmVzc2lvbiA9IG51bGw7XG5cbiAgcmV0dXJuIGV4cHJlc3Npb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBvcmV0ZWRGcm9tUHJvY2VkdXJlTm9kZShwcm9jZWR1cmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGV4cG9ydGVkID0gcHJvY2VkdXJlTm9kZS5pc0V4cG9ydGVkKCk7XG5cbiAgcmV0dXJuIGV4cG9ydGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tVHJ5SW50ZWdlck5vZGUodHJ5SW50ZWdlck5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gdHJ5SW50ZWdlck5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tU3RhcnRzV2l0aE5vZGUoc3RhcnRzV2l0aE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gc3RhcnRzV2l0aE5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tTm9kZXNRdWVyeU5vZGUobm9kZXNRdWVyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gbm9kZXNRdWVyeU5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGVuZ3RoT2ZGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IGxlbmd0aE9mID0gbnVsbDtcblxuICBjb25zdCBsZW5ndGhPZk5vZGUgPSBleHByZXNzaW9uTm9kZS5nZXRMZW5ndGhPZk5vZGUoKTtcblxuICBpZiAobGVuZ3RoT2ZOb2RlICE9PSBudWxsKSB7XG4gICAgbGVuZ3RoT2YgPSBsZW5ndGhPZkZyb21MZW5ndGhPZk5vZGUobGVuZ3RoT2ZOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBsZW5ndGhPZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRhaW5zRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCBjb250YWlucyA9IG51bGw7XG5cbiAgY29uc3QgY29udGFpbnNOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0Q29udGFpbnNOb2RlKCk7XG5cbiAgaWYgKGNvbnRhaW5zTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnRhaW5zID0gY29udGFpbnNGcm9tQ29udGFpbnNOb2RlKGNvbnRhaW5zTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gY29udGFpbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmRzV2l0aEZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgZW5kc1dpdGggPSBudWxsO1xuXG4gIGNvbnN0IGVuZHNXaXRoTm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldEVuZHNXaXRoTm9kZSgpO1xuXG4gIGlmIChlbmRzV2l0aE5vZGUgIT09IG51bGwpIHtcbiAgICBlbmRzV2l0aCA9IGVuZHNXaXRoRnJvbUVuZHNXaXRoTm9kZShlbmRzV2l0aE5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGVuZHNXaXRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxGcm9tSW1wb3J0QmluZGluZ05vZGUoaW1wb3J0QmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgbGV0IGxhYmVsID0gbnVsbDtcblxuICBjb25zdCBsYWJlbE5vZGUgPSBpbXBvcnRCaW5kaW5nTm9kZS5nZXRMYWJlbE5vZGUoKTtcblxuICBpZiAobGFiZWxOb2RlICE9PSBudWxsKSB7XG4gICAgbGFiZWwgPSBsYWJlbEZyb21MYWJlbE5vZGUobGFiZWxOb2RlLCBjb250ZXh0KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCByZWZlcmVuY2VOb2RlID0gaW1wb3J0QmluZGluZ05vZGUuZ2V0UmVmZXJlbmNlTm9kZSgpO1xuXG4gICAgbGFiZWwgPSBsYWJlbEZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGxhYmVsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaWZFeHByZXNzaW9uRnJvbVRlcm5hcnlOb2RlKHRlcm5hcnlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGlmRXhwcmVzc2lvbk5vZGUgPSB0ZXJuYXJ5Tm9kZS5nZXRJZkV4cHJlc3Npb25Ob2RlKCksXG4gICAgICAgIGlmRXhwcmVzc2lvbiA9IGV4cHJlc3Npb25Gcm9tRXhwcmVzc2lvbk5vZGUoaWZFeHByZXNzaW9uTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGlmRXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNGcm9tUHJvY2VkdXJlTm9kZShwcm9jZWR1cmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNOb2RlID0gcHJvY2VkdXJlTm9kZS5nZXRQYXJhbWV0ZXJzTm9kZSgpLFxuICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0Zyb21QYXJhbWV0ZXJzTm9kZShwYXJhbWV0ZXJzTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0ludGVnZXJGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHRvSW50ZWdlciA9IG51bGw7XG5cbiAgY29uc3QgdG9JbnRlZ2VyTm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldFRvSW50ZWdlck5vZGUoKTtcblxuICBpZiAodG9JbnRlZ2VyTm9kZSAhPT0gbnVsbCkge1xuICAgIHRvSW50ZWdlciA9IHRvSW50ZWdlckZyb21Ub0ludGVnZXJOb2RlKHRvSW50ZWdlck5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHRvSW50ZWdlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVRdWVyeUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgbm9kZVF1ZXJ5ID0gbnVsbDtcblxuICBjb25zdCBub2RlUXVlcnlOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0Tm9kZVF1ZXJ5Tm9kZSgpO1xuXG4gIGlmIChub2RlUXVlcnlOb2RlICE9PSBudWxsKSB7XG4gICAgbm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5RnJvbU5vZGVRdWVyeU5vZGUobm9kZVF1ZXJ5Tm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbm9kZVF1ZXJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RyaW5nRnJvbVN0YXJ0c1dpdGhOb2RlKHN0YXJ0c1dpdGhOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0cmluZyA9IHN0YXJ0c1dpdGhOb2RlLmdldFN0cmluZygpLFxuICAgICAgICBzdWJzdHJpbmcgPSBzdHJpbmc7ICAvLy9cblxuICByZXR1cm4gc3Vic3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGVmdFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBsZWZ0VGVybU5vZGUgPSBsb2dpY2FsVGVybU5vZGUuZ2V0TGVmdFRlcm1Ob2RlKCksXG4gICAgICAgIGxlZnRUZXJtID0gdGVybUZyb21UZXJtTm9kZShsZWZ0VGVybU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBsZWZ0VGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlc0Zyb21Qcm9jZWR1cmVDYWxsTm9kZShwcm9jZWR1cmVDYWxsTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YWx1ZXNOb2RlID0gcHJvY2VkdXJlQ2FsbE5vZGUuZ2V0VmFsdWVzTm9kZSgpLFxuICAgICAgICB2YWx1ZXMgPSB2YWx1ZXNGcm9tVmFsdWVzTm9kZSh2YWx1ZXNOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFsdWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV0dXJuQmxvY2tGcm9tUHJvY2VkdXJlTm9kZShwcm9jZWR1cmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJldHVybkJsb2NrTm9kZSA9IHByb2NlZHVyZU5vZGUuZ2V0UmV0dXJuQmxvY2tOb2RlKCksXG4gICAgICAgIHJldHVybkJsb2NrID0gcmV0dXJuQmxvY2tGcm9tUmV0dXJuQmxvY2tOb2RlKHJldHVybkJsb2NrTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHJldHVybkJsb2NrO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGcm9tVHlwZUFuZFZhcmlhYmxlTm9kZSh0eXBlLCB2YXJpYWJsZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFsdWUgPSBudWxsO1xuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVzUXVlcnlGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IG5vZGVzUXVlcnkgPSBudWxsO1xuXG4gIGNvbnN0IG5vZGVzUXVlcnlOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0Tm9kZXNRdWVyeU5vZGUoKTtcblxuICBpZiAobm9kZXNRdWVyeU5vZGUgIT09IG51bGwpIHtcbiAgICBub2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeUZyb21Ob2Rlc1F1ZXJ5Tm9kZShub2Rlc1F1ZXJ5Tm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbm9kZXNRdWVyeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyeUludGVnZXJGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHRyeUludGVnZXIgPSBudWxsO1xuXG4gIGNvbnN0IHRyeUludGVnZXJOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0VHJ5SW50ZWdlck5vZGUoKTtcblxuICBpZiAodHJ5SW50ZWdlck5vZGUgIT09IG51bGwpIHtcbiAgICB0cnlJbnRlZ2VyID0gdHJ5SW50ZWdlckZyb21UcnlJbnRlZ2VyTm9kZSh0cnlJbnRlZ2VyTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdHJ5SW50ZWdlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXJ0c1dpdGggPSBudWxsO1xuXG4gIGNvbnN0IHN0YXJ0c1dpdGhOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0U3RhcnRzV2l0aE5vZGUoKTtcblxuICBpZiAoc3RhcnRzV2l0aE5vZGUgIT09IG51bGwpIHtcbiAgICBzdGFydHNXaXRoID0gc3RhcnRzV2l0aEZyb21TdGFydHNXaXRoTm9kZShzdGFydHNXaXRoTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc3RhcnRzV2l0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJpZ2h0VGVybUZyb21Mb2dpY2FsVGVybU5vZGUobG9naWNhbFRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJpZ2h0VGVybU5vZGUgPSBsb2dpY2FsVGVybU5vZGUuZ2V0UmlnaHRUZXJtTm9kZSgpLFxuICAgICAgIHJpZ2h0VGVybSA9IHRlcm1Gcm9tVGVybU5vZGUocmlnaHRUZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHJpZ2h0VGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbVJldHVyblN0YXRlbWVudE5vZGUocmV0dXJuU3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YWx1ZU5vZGUgPSByZXR1cm5TdGF0ZW1lbnROb2RlLmdldFZhbHVlTm9kZSgpLFxuICAgICAgICB2YWx1ZSA9IHZhbHVlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVsc2VFeHByZXNzaW9uRnJvbVRlcm5hcnlOb2RlKHRlcm5hcnlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGVsc2VFeHByZXNzaW9uTm9kZSA9IHRlcm5hcnlOb2RlLmdldEVsc2VFeHByZXNzaW9uTm9kZSgpLFxuICAgICAgICBlbHNlRXhwcmVzc2lvbiA9IGV4cHJlc3Npb25Gcm9tRXhwcmVzc2lvbk5vZGUoZWxzZUV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gZWxzZUV4cHJlc3Npb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXR1cm5CbG9ja0Zyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgcmV0dXJuQmxvY2sgPSBudWxsO1xuXG4gIGNvbnN0IHJldHVybkJsb2NrTm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldFJldHVybkJsb2NrTm9kZSgpO1xuXG4gIGlmIChyZXR1cm5CbG9ja05vZGUgIT09IG51bGwpIHtcbiAgICByZXR1cm5CbG9jayA9IHJldHVybkJsb2NrRnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHJldHVybkJsb2NrO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50c0Zyb21SZXR1cm5CbG9ja05vZGUocmV0dXJuQmxvY2tOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGVzID0gcmV0dXJuQmxvY2tOb2RlLmdldFN0YXRlbWVudE5vZGVzKCksXG4gICAgICAgIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnROb2Rlcy5tYXAoKHN0YXRlbWVudE5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBzdGF0ZW1lbnQ7XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZEZyb21Db21wYXJpc29uVGVybU5vZGUoY29tcGFyaXNvblRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5lZ2F0ZWQgPSBjb21wYXJpc29uVGVybU5vZGUuaXNOZWdhdGVkKCk7XG5cbiAgcmV0dXJuIG5lZ2F0ZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbm9ueW1vdXNQcm9jZWR1cmVGcm9tU29tZU5vZGUoc29tZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgYW5vbnltb3VzUHJvY2VkdXJlTm9kZSA9IHNvbWVOb2RlLmdldEFub255bW91c1Byb2NlZHVyZU5vZGUoKSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlID0gYW5vbnltb3VzUHJvY2VkdXJlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGFub255bW91c1Byb2NlZHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vbnNlbnNpY2FsRnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgbm9uc2Vuc2ljYWwgPSByZXR1cm5CbG9ja05vZGUuaXNOb25zZW5zaWNhbCgpO1xuXG4gIHJldHVybiBub25zZW5zaWNhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc2p1bmN0aW9uRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgZGlzanVuY3Rpb24gPSBsb2dpY2FsVGVybU5vZGUuaXNEaXNqdW5jdGlvbigpO1xuXG4gIHJldHVybiBkaXNqdW5jdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZUZyb21Qcm9jZWR1cmVDYWxsTm9kZShwcm9jZWR1cmVDYWxsTm9kZSwgY29udGV4dCkge1xuICBjb25zdCByZWZlcmVuY2VOb2RlID0gcHJvY2VkdXJlQ2FsbE5vZGUuZ2V0UmVmZXJlbmNlTm9kZSgpLFxuICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2VGcm9tUmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gcmVmZXJlbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGVmdFRlcm1Gcm9tQ29tcHpyaXNvblRlcm1Ob2RlKGNvbXBhcmlzb25UZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBsZWZ0VGVybU5vZGUgPSBjb21wYXJpc29uVGVybU5vZGUuZ2V0TGVmdFRlcm1Ob2RlKCksXG4gICAgICAgIGxlZnRUZXJtID0gdGVybUZyb21UZXJtTm9kZShsZWZ0VGVybU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBsZWZ0VGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZShhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOb2RlID0gYW5vbnltb3VzUHJvY2VkdXJlTm9kZS5nZXRUeXBlTm9kZSgpLFxuICAgICAgICB0eXBlID0gdHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VGcm9tSW1wb3J0QmluZGluZ05vZGUoaW1wb3J0QmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmVmZXJlbmNlTm9kZSA9IGltcG9ydEJpbmRpbmdOb2RlLmdldFJlZmVyZW5jZU5vZGUoKSxcbiAgICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbUxpc3RBc3NpZ25tZW50Tm9kZShsaXN0QXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gbGlzdEFzc2lnbm1lbnROb2RlLmdldFZhcmlhYmxlTm9kZSgpLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRpbmdzRnJvbUxpc3RBc3NpZ25tZW50Tm9kZShsaXN0QXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgYmluZGluZ3NOb2RlID0gbGlzdEFzc2lnbm1lbnROb2RlLmdldEJpbmRpbmdzTm9kZSgpLFxuICAgICAgICBiaW5kaW5ncyA9IGJpbmRpbmdzRnJvbUJpbmRpbmdzTm9kZShiaW5kaW5nc05vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBiaW5kaW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbVR5cGVBbmRWYXJpYWJsZU5vZGUodHlwZSwgdmFyaWFibGVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgIG5vZGUgPSB2YXJpYWJsZU5vZGUsICAvLy9cbiAgICBuYW1lID0gbmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSxcbiAgICB2YWx1ZSA9IHZhbHVlRnJvbVR5cGVBbmRWYXJpYWJsZU5vZGUodHlwZSwgdmFyaWFibGVOb2RlLCBjb250ZXh0KSxcbiAgICB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlU3RyaW5nRnJvbU5hbWUobmFtZSksXG4gICAgc3RyaW5nID0gdmFyaWFibGVTdHJpbmcsICAvLy9cbiAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICB2YXJpYWJsZSA9IG5ldyBWYXJpYWJsZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIG5hbWUsIHZhbHVlKTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbm9ueW1vdXNQcm9jZWR1cmVGcm9tRXZlcnlOb2RlKGV2ZXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBhbm9ueW1vdXNQcm9jZWR1cmVOb2RlID0gZXZlcnlOb2RlLmdldEFub255bW91c1Byb2NlZHVyZU5vZGUoKSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlID0gYW5vbnltb3VzUHJvY2VkdXJlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGFub255bW91c1Byb2NlZHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RBc3NpZ25tZW50RnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICBsZXQgbGlzdEFzc2lnbm1lbnQgPSBudWxsO1xuXG4gIGNvbnN0IGxpc3RBc3NpZ25tZW50Tm9kZSA9IHN0YXRlbWVudE5vZGUuZ2V0TGlzdEFzc2lnbm1lbnROb2RlKCk7XG5cbiAgaWYgKGxpc3RBc3NpZ25tZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgIGxpc3RBc3NpZ25tZW50ID0gbGlzdEFzc2lnbm1lbnRGcm9tTGlzdEFzc2lnbm1lbnROb2RlKGxpc3RBc3NpZ25tZW50Tm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbGlzdEFzc2lnbm1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCBwcm9jZWR1cmVDYWxsID0gbnVsbDtcblxuICBjb25zdCBwcm9jZWR1cmVDYWxsTm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldFByb2NlZHVyZUNhbGxOb2RlKCk7XG5cbiAgaWYgKHByb2NlZHVyZUNhbGxOb2RlICE9PSBudWxsKSB7XG4gICAgcHJvY2VkdXJlQ2FsbCA9IHByb2NlZHVyZUNhbGxGcm9tUHJvY2VkdXJlQ2FsbE5vZGUocHJvY2VkdXJlQ2FsbE5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByaWdodFRlcm1Gcm9tQ29tcHpyaXNvblRlcm1Ob2RlKGNvbXBhcmlzb25UZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCByaWdodFRlcm1Ob2RlID0gY29tcGFyaXNvblRlcm1Ob2RlLmdldFJpZ2h0VGVybU5vZGUoKSxcbiAgICAgICAgcmlnaHRUZXJtID0gdGVybUZyb21UZXJtTm9kZShyaWdodFRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gcmlnaHRUZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21WYXJpYWJsZUFzc2lnbm1lbnRzTm9kZSh2YXJpYWJsZUFzc2lnbm1lbnRzTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0eXBlTm9kZSA9IHZhcmlhYmxlQXNzaWdubWVudHNOb2RlLmdldFR5cGVOb2RlKCksXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFub255bW91c1Byb2NlZHVyZUZyb21SZWR1Y2VOb2RlKHJlZHVjZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgYW5vbnltb3VzUHJvY2VkdXJlTm9kZSA9IHJlZHVjZU5vZGUuZ2V0QW5vbnltb3VzUHJvY2VkdXJlTm9kZSgpLFxuICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmUgPSBhbm9ueW1vdXNQcm9jZWR1cmVGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZShhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gYW5vbnltb3VzUHJvY2VkdXJlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tT2JqZWN0QXNzaWdubWVudE5vZGUob2JqZWN0QXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gb2JqZWN0QXNzaWdubWVudE5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0QXNzaWdubWVudEZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IG9iamVjdEFzc2lnbm1lbnQgPSBudWxsO1xuXG4gIGNvbnN0IG9iamVjdEFzc2lnbm1lbnROb2RlID0gc3RhdGVtZW50Tm9kZS5nZXRPYmplY3RBc3NpZ25tZW50Tm9kZSgpO1xuXG4gIGlmIChvYmplY3RBc3NpZ25tZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgIG9iamVjdEFzc2lnbm1lbnQgPSBvYmplY3RBc3NpZ25tZW50RnJvbU9iamVjdEFzc2lnbm1lbnROb2RlKG9iamVjdEFzc2lnbm1lbnROb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBvYmplY3RBc3NpZ25tZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV0dXJuU3RhdGVtZW50RnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmV0dXJuU3RhdGVtZW50Tm9kZSA9IHJldHVybkJsb2NrTm9kZS5nZXRSZXR1cm5TdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHJldHVyblN0YXRlbWVudCA9IHJldHVyblN0YXRlbWVudEZyb21SZXR1cm5TdGF0ZW1lbnROb2RlKHJldHVyblN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiByZXR1cm5TdGF0ZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxlYXNlTmFtZUZyb21JbXBvcnRTdGF0ZW1lbnROb2RlKGltcG9ydFN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmVsZWFzZU5hbWUgPSBpbXBvcnRTdGF0ZW1lbnROb2RlLmdldFJlbGVhc2VOYW1lKCk7XG5cbiAgcmV0dXJuIHJlbGVhc2VOYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVBc3NpZ25tZW50c0Zyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHZhcmlhYmxlQXNzaWdubWVudHMgPSBudWxsO1xuXG4gIGNvbnN0IHZhcmlhYmxlQXNzaWdubWVudHNOb2RlID0gc3RhdGVtZW50Tm9kZS5nZXRWYXJpYWJsZUFzc2lnbm1lbnRzTm9kZSgpO1xuXG4gIGlmICh2YXJpYWJsZUFzc2lnbm1lbnRzTm9kZSAhPT0gbnVsbCkge1xuICAgIHZhcmlhYmxlQXNzaWdubWVudHMgPSB2YXJpYWJsZUFzc2lnbm1lbnRzRnJvbVZhcmlhYmxlQXNzaWdubWVudHNOb2RlKHZhcmlhYmxlQXNzaWdubWVudHNOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB2YXJpYWJsZUFzc2lnbm1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwcmVzc2lvbkZyb21WYXJpYWJsZUFzc2lnbm1lbnROb2RlKHZhcmlhYmxlQXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgZXhwcmVzc2lvbk5vZGUgPSB2YXJpYWJsZUFzc2lnbm1lbnROb2RlLmdldEV4cHJlc3Npb25Ob2RlKCksXG4gICAgICAgIGV4cHJlc3Npb24gPSBleHByZXNzaW9uRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gZXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZShhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNOb2RlID0gYW5vbnltb3VzUHJvY2VkdXJlTm9kZS5nZXRQYXJhbWV0ZXJzTm9kZSgpLFxuICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0Zyb21QYXJhbWV0ZXJzTm9kZShwYXJhbWV0ZXJzTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbXBvcnRCaW5kaW5nc0Zyb21JbXBvcnRTdGF0ZW1lbnROb2RlKGltcG9ydFN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgaW1wb3J0QmluZGluZ05vZGVzID0gaW1wb3J0U3RhdGVtZW50Tm9kZS5nZXRJbXBvcnRCaW5kaW5nTm9kZXMoKSxcbiAgICAgICAgaW1wb3J0QmluZGluZ3MgPSBpbXBvcnRCaW5kaW5nc0Zyb21JbXBvcnRCaW5kaW5nTm9kZXMoaW1wb3J0QmluZGluZ05vZGVzLCBjb250ZXh0KTtcblxuICByZXR1cm4gaW1wb3J0QmluZGluZ3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXR1cm5CbG9ja0Zyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmV0dXJuQmxvY2tOb2RlID0gYW5vbnltb3VzUHJvY2VkdXJlTm9kZS5nZXRSZXR1cm5CbG9ja05vZGUoKSxcbiAgICAgICAgcmV0dXJuQmxvY2sgPSByZXR1cm5CbG9ja0Zyb21SZXR1cm5CbG9ja05vZGUocmV0dXJuQmxvY2tOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gcmV0dXJuQmxvY2s7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50Tm9kZSh0eXBlLCB2YXJpYWJsZUFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlQXNzaWdubWVudE5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVHlwZUFuZFZhcmlhYmxlTm9kZSh0eXBlLCB2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlc0FycmF5RnJvbVZhbHVlTm9kZXModmFsdWVOb2RlcywgY29udGV4dCkge1xuICBjb25zdCB2YWx1ZXNBcnJheSA9IHZhbHVlTm9kZXMubWFwKCh2YWx1ZU5vZGUpID0+IHsgLy8vXG4gICAgY29uc3QgdmFsdWUgPSB2YWx1ZUZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHZhbHVlc0FycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmluZGluZ3NBcnJheUZyb21CaW5kaW5nc05vZGUoYmluZGluZ3NOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGJpbmRpbmdOb2RlcyA9IGJpbmRpbmdzTm9kZS5nZXRCaW5kaW5nTm9kZXMoKSxcbiAgICAgICAgYmluZGluZ3NBcnJheSA9IGJpbmRpbmdOb2Rlcy5tYXAoKGJpbmRpbmdOb2RlKSA9PiB7IC8vL1xuICAgICAgICAgIGNvbnN0IGJpbmRpbmcgPSBiaW5kaW5nRnJvbUJpbmRpbmdOb2RlKGJpbmRpbmdOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBiaW5kaW5nO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gYmluZGluZ3NBcnJheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZXNBcnJheUZyb21SZWZlcmVuY2VOb2RlcyhyZWZlcmVuY2VOb2RlcywgY29udGV4dCkge1xuICBjb25zdCByZWZlcmVuY2VzQXJyYXkgPSByZWZlcmVuY2VOb2Rlcy5tYXAoKHJlZmVyZW5jZU5vZGUpID0+IHsgLy8vXG4gICAgY29uc3QgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlO1xuICB9KTtcblxuICByZXR1cm4gcmVmZXJlbmNlc0FycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc0FycmF5RnJvbVBhcmFtZXRlcnNOb2RlKHBhcmFtZXRlcnNOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHBhcmFtZXRlck5vZGVzID0gcGFyYW1ldGVyc05vZGUuZ2V0UGFyYW1ldGVyTm9kZXMoKSxcbiAgICAgICAgcGFyYW1ldGVyc0FycmF5ID0gcGFyYW1ldGVyTm9kZXMubWFwKChwYXJhbWV0ZXJOb2RlKSA9PiB7IC8vL1xuICAgICAgICAgIGNvbnN0IHBhcmFtZXRlciA9IHBhcmFtZXRlckZyb21QYXJhbWV0ZXJOb2RlKHBhcmFtZXRlck5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnNBcnJheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltcG9ydEJpbmRpbmdzRnJvbUltcG9ydEJpbmRpbmdOb2RlcyhpbXBvcnRCaW5kaW5nTm9kZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgaW1wb3J0QmluZGluZ3MgPSBpbXBvcnRCaW5kaW5nTm9kZXMubWFwKChpbXBvcnRCaW5kaW5nTm9kZSkgPT4geyAvLy9cbiAgICAgICAgICBjb25zdCBpbXBvcnRCaW5kaW5nID0gaW1wb3J0QmluZGluZ0Zyb21JbXBvcnRCaW5kaW5nTm9kZShpbXBvcnRCaW5kaW5nTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gaW1wb3J0QmluZGluZztcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIGltcG9ydEJpbmRpbmdzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZWRQYXJhbWV0ZXJzQXJyYXlGcm9tTmFtZWRCaW5kaW5nTm9kZXMobmFtZWRCaW5kaW5nTm9kZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgbmFtZWRQYXJhbWV0ZXJzQXJyYXkgPSBuYW1lZEJpbmRpbmdOb2Rlcy5tYXAoKG5hbWVkQmluZGluZ05vZGUpID0+IHsgLy8vXG4gICAgY29uc3QgbmFtZWRCaW5kaW5nID0gbmFtZWRCaW5kaW5nRnJvbU5hbWVkQmluZGluZ05vZGUobmFtZWRCaW5kaW5nTm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbmFtZWRCaW5kaW5nO1xuICB9KTtcblxuICByZXR1cm4gbmFtZWRQYXJhbWV0ZXJzQXJyYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXlGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNOb2RlKHR5cGUsIHZhcmlhYmxlQXNzaWdubWVudHNOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlQXNzaWdubWVudE5vZGVzID0gdmFyaWFibGVBc3NpZ25tZW50c05vZGUuZ2V0VmFyaWFibGVBc3NpZ25tZW50Tm9kZXMoKSxcbiAgICAgICAgdmFyaWFibGVBc3NpZ25tZW50c0FycmF5ID0gdmFyaWFibGVBc3NpZ25tZW50Tm9kZXMubWFwKCh2YXJpYWJsZUFzc2lnbm1lbnROb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFyaWFibGVBc3NpZ25tZW50ID0gdmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnROb2RlKHR5cGUsIHZhcmlhYmxlQXNzaWdubWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXNzaWdubWVudDtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlQXNzaWdubWVudHNBcnJheTtcbn1cbiJdLCJuYW1lcyI6WyJhbGlhc0Zyb21OYW1lZEJpbmRpbmdOb2RlIiwiYW5vbnltb3VzUHJvY2VkdXJlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUiLCJhbm9ueW1vdXNQcm9jZWR1cmVGcm9tRXZlcnlOb2RlIiwiYW5vbnltb3VzUHJvY2VkdXJlRnJvbVJlZHVjZU5vZGUiLCJhbm9ueW1vdXNQcm9jZWR1cmVGcm9tU29tZU5vZGUiLCJhcHBseUZyb21BcHBseU5vZGUiLCJhcHBseUZyb21FeHByZXNzaW9uTm9kZSIsImFyZ3VtZW50VHlwZUZyb21UeXBlTm9kZSIsImJpbmRpbmdGcm9tQmluZGluZ05vZGUiLCJiaW5kaW5nc0FycmF5RnJvbUJpbmRpbmdzTm9kZSIsImJpbmRpbmdzRnJvbUJpbmRpbmdzTm9kZSIsImJpbmRpbmdzRnJvbUxpc3RBc3NpZ25tZW50Tm9kZSIsImJyYWNrZXRlZFRlcm1Gcm9tQnJhY2tldGVkVGVybU5vZGUiLCJicmFja2V0ZWRUZXJtRnJvbVRlcm1Ob2RlIiwiY29tcGFyaXNvblRlcm1Gcm9tQ29tcGFyaXNvblRlcm1Ob2RlIiwiY29tcGFyaXNvblRlcm1Gcm9tVGVybU5vZGUiLCJjb250YWluc0Zyb21Db250YWluc05vZGUiLCJjb250YWluc0Zyb21FeHByZXNzaW9uTm9kZSIsImRpc2p1bmN0aW9uRnJvbUxvZ2ljYWxUZXJtTm9kZSIsImVsaWRlZEZyb21CaW5kaW5nTm9kZSIsImVsc2VFeHByZXNzaW9uRnJvbVRlcm5hcnlOb2RlIiwiZW5kc1dpdGhGcm9tRW5kc1dpdGhOb2RlIiwiZW5kc1dpdGhGcm9tRXhwcmVzc2lvbk5vZGUiLCJlcnJvckZyb21FcnJvck5vZGUiLCJldmVyeUZyb21FdmVyeU5vZGUiLCJldmVyeUZyb21FeHByZXNzaW9uTm9kZSIsImV4cG9yZXRlZEZyb21Qcm9jZWR1cmVOb2RlIiwiZXhwcmVzc2lvbkZyb21FeHByZXNzaW9uTm9kZSIsImV4cHJlc3Npb25Gcm9tVmFyaWFibGVBc3NpZ25tZW50Tm9kZSIsImV4cHJlc3Npb25Gcm9tVmFyaWFibGVOb2RlIiwiaWZFeHByZXNzaW9uRnJvbVRlcm5hcnlOb2RlIiwiaW1wb3J0QmluZGluZ0Zyb21JbXBvcnRCaW5kaW5nTm9kZSIsImltcG9ydEJpbmRpbmdzRnJvbUltcG9ydEJpbmRpbmdOb2RlcyIsImltcG9ydEJpbmRpbmdzRnJvbUltcG9ydFN0YXRlbWVudE5vZGUiLCJpbXBvcnRTdGF0ZW1lbnRGcm9tSW1wb3J0U3RhdGVtZW50Tm9kZSIsImluaXRpYWxWYWx1ZUZyb21SZWR1Y2VOb2RlIiwibGFiZWxGcm9tSW1wb3J0QmluZGluZ05vZGUiLCJsYWJlbEZyb21MYWJlbE5vZGUiLCJsYWJlbEZyb21Qcm9jZWR1cmVOb2RlIiwibGFiZWxGcm9tUmVmZXJlbmNlTm9kZSIsImxlZnRUZXJtRnJvbUNvbXB6cmlzb25UZXJtTm9kZSIsImxlZnRUZXJtRnJvbUxvZ2ljYWxUZXJtTm9kZSIsImxlbmd0aE9mRnJvbUV4cHJlc3Npb25Ob2RlIiwibGVuZ3RoT2ZGcm9tTGVuZ3RoT2ZOb2RlIiwibGlzdEFzc2lnbm1lbnRGcm9tTGlzdEFzc2lnbm1lbnROb2RlIiwibGlzdEFzc2lnbm1lbnRGcm9tU3RhdGVtZW50Tm9kZSIsImxvZ2ljYWxUZXJtRnJvbUxvZ2ljYWxUZXJtTm9kZSIsImxvZ2ljYWxUZXJtRnJvbVRlcm1Ob2RlIiwibmFtZUZyb21CaW5kaW5nTm9kZSIsIm5hbWVGcm9tTGFiZWxOb2RlIiwibmFtZUZyb21OYW1lZEJpbmRpbmdOb2RlIiwibmFtZUZyb21QYXJhbmV0ZXJOb2RlIiwibmFtZUZyb21SZWZlcmVuY2VOb2RlIiwibmFtZUZyb21UeXBlTm9kZSIsIm5hbWVGcm9tVmFyaWFibGVOb2RlIiwibmFtZWRCaW5kaW5nRnJvbU5hbWVkQmluZGluZ05vZGUiLCJuYW1lZEJpbmRpbmdzRnJvbU5hbWVkQmluZGluZ3NOb2RlIiwibmFtZWRCaW5kaW5nc0Zyb21PYmplY3RBc3NpZ25tZW50Tm9kZSIsIm5hbWVkUGFyYW1ldGVyc0FycmF5RnJvbU5hbWVkQmluZGluZ05vZGVzIiwibmVnYXRlZEZyb21Db21wYXJpc29uVGVybU5vZGUiLCJuZWdhdGVkVGVybUZyb21OZWdhdGVkVGVybU5vZGUiLCJuZWdhdGVkVGVybUZyb21UZXJtTm9kZSIsIm5vZGVRdWVyeUZyb21FeHByZXNzaW9uTm9kZSIsIm5vZGVRdWVyeUZyb21Ob2RlUXVlcnlOb2RlIiwibm9kZXNRdWVyeUZyb21FeHByZXNzaW9uTm9kZSIsIm5vZGVzUXVlcnlGcm9tTm9kZXNRdWVyeU5vZGUiLCJub25zZW5zaWNhbEZyb21SZXR1cm5CbG9ja05vZGUiLCJvYmplY3RBc3NpZ25tZW50RnJvbU9iamVjdEFzc2lnbm1lbnROb2RlIiwib2JqZWN0QXNzaWdubWVudEZyb21TdGF0ZW1lbnROb2RlIiwicGFyYW1ldGVyRnJvbVBhcmFtZXRlck5vZGUiLCJwYXJhbWV0ZXJzQXJyYXlGcm9tUGFyYW1ldGVyc05vZGUiLCJwYXJhbWV0ZXJzRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUiLCJwYXJhbWV0ZXJzRnJvbVBhcmFtZXRlcnNOb2RlIiwicGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVOb2RlIiwicHJpbWl0aXZlRnJvbVByaW1pdGl2ZU5vZGUiLCJwcmltaXRpdmVGcm9tVGVybU5vZGUiLCJwcmltaXRpdmVGcm9tVmFsdWVOb2RlIiwicHJvY2VkdXJlQ2FsbEZyb21FeHByZXNzaW9uTm9kZSIsInByb2NlZHVyZUNhbGxGcm9tUHJvY2VkdXJlQ2FsbE5vZGUiLCJwcm9jZWR1cmVGcm9tUHJvY2VkdXJlTm9kZSIsInF1ZXJ5RnJvbU5vZGVRdWVyeU5vZGUiLCJxdWVyeUZyb21Ob2Rlc1F1ZXJ5Tm9kZSIsInJlZHVjZUZyb21FeHByZXNzaW9uTm9kZSIsInJlZHVjZUZyb21SZWR1Y2VOb2RlIiwicmVmZXJlbmNlRnJvbUltcG9ydEJpbmRpbmdOb2RlIiwicmVmZXJlbmNlRnJvbVByb2NlZHVyZUNhbGxOb2RlIiwicmVmZXJlbmNlRnJvbVJlZmVyZW5jZU5vZGUiLCJyZWZlcmVuY2VzQXJyYXlGcm9tUmVmZXJlbmNlTm9kZXMiLCJyZWZlcmVuY2VzRnJvbUFwcGx5Tm9kZSIsInJlZmVyZW5jZXNGcm9tUmVmZXJlbmNlc05vZGUiLCJyZWxlYXNlTmFtZUZyb21JbXBvcnRTdGF0ZW1lbnROb2RlIiwicmV0dXJuQmxvY2tGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZSIsInJldHVybkJsb2NrRnJvbUV4cHJlc3Npb25Ob2RlIiwicmV0dXJuQmxvY2tGcm9tUHJvY2VkdXJlTm9kZSIsInJldHVybkJsb2NrRnJvbVJldHVybkJsb2NrTm9kZSIsInJldHVyblN0YXRlbWVudEZyb21SZXR1cm5CbG9ja05vZGUiLCJyZXR1cm5TdGF0ZW1lbnRGcm9tUmV0dXJuU3RhdGVtZW50Tm9kZSIsInJpZ2h0VGVybUZyb21Db21wenJpc29uVGVybU5vZGUiLCJyaWdodFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlIiwic29tZUZyb21FeHByZXNzaW9uTm9kZSIsInNvbWVGcm9tU29tZU5vZGUiLCJzdGFydHNXaXRoRnJvbUV4cHJlc3Npb25Ob2RlIiwic3RhcnRzV2l0aEZyb21TdGFydHNXaXRoTm9kZSIsInN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50c0Zyb21SZXR1cm5CbG9ja05vZGUiLCJzdWJzdHJpbmdGcm9tQ29udGFpbnNOb2RlIiwic3Vic3RyaW5nRnJvbUVuZHNXaXRoTm9kZSIsInN1YnN0cmluZ0Zyb21TdGFydHNXaXRoTm9kZSIsInRlcm1Gcm9tQnJhY2tldGVkVGVybU5vZGUiLCJ0ZXJtRnJvbUV4cHJlc3Npb25Ob2RlIiwidGVybUZyb21OZWdhdGVkVGVybU5vZGUiLCJ0ZXJtRnJvbVRlcm1Ob2RlIiwidGVybUZyb21UZXJuYXJ5Tm9kZSIsInRlcm5hcnlGcm9tRXhwcmVzc2lvbk5vZGUiLCJ0ZXJuYXJ5RnJvbVRlcm5hcnlOb2RlIiwidG9JbnRlZ2VyRnJvbUV4cHJlc3Npb25Ob2RlIiwidG9JbnRlZ2VyRnJvbVRvSW50ZWdlck5vZGUiLCJ0cnlJbnRlZ2VyRnJvbUV4cHJlc3Npb25Ob2RlIiwidHJ5SW50ZWdlckZyb21UcnlJbnRlZ2VyTm9kZSIsInR5cGVGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZSIsInR5cGVGcm9tQmluZGluZ05vZGUiLCJ0eXBlRnJvbUxvZ2ljYWxUZXJtTm9kZSIsInR5cGVGcm9tTmFtZWRCaW5kaW5nTm9kZSIsInR5cGVGcm9tTmVnYXRlZFRlcm1Ob2RlIiwidHlwZUZyb21QYXJhbmV0ZXJOb2RlIiwidHlwZUZyb21QcmltaXRpdmVOb2RlIiwidHlwZUZyb21Qcm9jZWR1cmVOb2RlIiwidHlwZUZyb21UeXBlTm9kZSIsInR5cGVGcm9tVmFyaWFibGVBc3NpZ25tZW50c05vZGUiLCJ0eXBlRnJvbVZhcmlhYmxlTm9kZSIsInZhbHVlRnJvbVByaW1pdGl2ZU5vZGUiLCJ2YWx1ZUZyb21SZWR1Y2VOb2RlIiwidmFsdWVGcm9tUmV0dXJuU3RhdGVtZW50Tm9kZSIsInZhbHVlRnJvbVR5cGVBbmRWYXJpYWJsZU5vZGUiLCJ2YWx1ZUZyb21WYWx1ZU5vZGUiLCJ2YWx1ZXNBcnJheUZyb21WYWx1ZU5vZGVzIiwidmFsdWVzRnJvbUFwcGx5Tm9kZSIsInZhbHVlc0Zyb21Qcm9jZWR1cmVDYWxsTm9kZSIsInZhbHVlc0Zyb21WYWx1ZXNOb2RlIiwidmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnROb2RlIiwidmFyaWFibGVBc3NpZ25tZW50c0FycmF5RnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnRzTm9kZSIsInZhcmlhYmxlQXNzaWdubWVudHNGcm9tU3RhdGVtZW50Tm9kZSIsInZhcmlhYmxlQXNzaWdubWVudHNGcm9tVmFyaWFibGVBc3NpZ25tZW50c05vZGUiLCJ2YXJpYWJsZUZyb21BcHBseU5vZGUiLCJ2YXJpYWJsZUZyb21Db250YWluc05vZGUiLCJ2YXJpYWJsZUZyb21FbmRzV2l0aE5vZGUiLCJ2YXJpYWJsZUZyb21FdmVyeU5vZGUiLCJ2YXJpYWJsZUZyb21MZW5ndGhPZk5vZGUiLCJ2YXJpYWJsZUZyb21MaXN0QXNzaWdubWVudE5vZGUiLCJ2YXJpYWJsZUZyb21Ob2RlUXVlcnlOb2RlIiwidmFyaWFibGVGcm9tTm9kZXNRdWVyeU5vZGUiLCJ2YXJpYWJsZUZyb21PYmplY3RBc3NpZ25tZW50Tm9kZSIsInZhcmlhYmxlRnJvbVJlZHVjZU5vZGUiLCJ2YXJpYWJsZUZyb21Tb21lTm9kZSIsInZhcmlhYmxlRnJvbVN0YXJ0c1dpdGhOb2RlIiwidmFyaWFibGVGcm9tVGVybU5vZGUiLCJ2YXJpYWJsZUZyb21Ub0ludGVnZXJOb2RlIiwidmFyaWFibGVGcm9tVHJ5SW50ZWdlck5vZGUiLCJ2YXJpYWJsZUZyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50Tm9kZSIsInZhcmlhYmxlRnJvbVR5cGVBbmRWYXJpYWJsZU5vZGUiLCJ2YXJpYWJsZUZyb21WYWx1ZU5vZGUiLCJ2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUiLCJzb21lTm9kZSIsImNvbnRleHQiLCJTb21lIiwiZWxlbWVudHMiLCJub2RlIiwidmFyaWFibGUiLCJhbm9ueW1vdXNQcm9jZWR1cmUiLCJzb21lU3RyaW5nIiwic29tZVN0cmluZ0Zyb21WYXJpYWJsZUFuZEFub255bW91c1Byb2NlZHVyZSIsInN0cmluZyIsImJyZWFrUG9pbnQiLCJzb21lIiwidGVybU5vZGUiLCJUZXJtIiwicHJpbWl0aXZlIiwibmVnYXRlZFRlcm0iLCJsb2dpY2FsVGVybSIsImJyYWNrZXRlZFRlcm0iLCJjb21wYXJpc29uVGVybSIsInByb3BlcnRpZXMiLCJ0ZXJtU3RyaW5nIiwidGVybVN0cmluZ0Zyb21Qcm9wZXJ0aWVzIiwidGVybSIsInR5cGVOb2RlIiwiVHlwZSIsIm5vZGVBc1N0cmluZyIsIm5hbWUiLCJhcmd1bWVudFR5cGUiLCJ0eXBlIiwiQXBwbHkiLCJ2YWx1ZXMiLCJyZWZlcmVuY2VzIiwiYXBwbHlTdHJpbmciLCJhcHBseVN0cmluZ0Zyb21WYXJpYWJsZUFuZFZhbHVlcyIsImFwcGx5IiwidmFsdWVOb2RlIiwiVmFsdWUiLCJ2YWx1ZVN0cmluZyIsInZhbHVlU3RyaW5nRnJvbVByb3BlcnRpZXMiLCJ2YWx1ZSIsImVycm9yTm9kZSIsIkVycm9yIiwiZXJyb3IiLCJldmVyeU5vZGUiLCJFdmVyeSIsImV2ZXJ5U3RyaW5nIiwiZXZlcnlTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUiLCJldmVyeSIsImxhYmVsTm9kZSIsIkxhYmVsIiwibGFiZWwiLCJ2YWx1ZXNOb2RlIiwiVmFsdWVzIiwidmFsdWVOb2RlcyIsImdldFZhbHVlTm9kZXMiLCJ2YWx1ZXNBcnJheSIsImFycmF5IiwicmVkdWNlTm9kZSIsIlJlZHVjZSIsImluaXRpYWxWYWx1ZSIsInJlZHVjZVN0cmluZyIsInJlZHVjZVN0cmluZ0Zyb21WYXJpYWJsZUluaXRpYWxFeHByZXNzaW9uQW5kQW5vbnltb3VzUHJvY2VkdXJlIiwicmVkdWNlIiwiYmluZGluZ05vZGUiLCJCaW5kaW5nIiwiZWxpZGVkIiwiYmluZGluZyIsInRlcm5hcnlOb2RlIiwiVGVybmFyeSIsImlmRXhwcmVzc2lvbiIsImVsc2VFeHByZXNzaW9uIiwidGVybmFyeVN0cmluZyIsInRlcm5hcnlTdHJpbmdGcm9tVGVybSIsInRlcm5hcnkiLCJyZWZlcmVuY2VOb2RlIiwiY29udGFpbnNOb2RlIiwiQ29udGFpbnMiLCJzdWJzdHJpbmciLCJjb250YWlucyIsImVuZHNXaXRoTm9kZSIsIkVuZHNXaXRoIiwiZW5kc1dpdGgiLCJ2YXJpYWJsZU5vZGUiLCJWYXJpYWJsZSIsImV4cHJlc3Npb24iLCJiaW5kaW5nc05vZGUiLCJCaW5kaW5ncyIsImJpbmRpbmdzQXJyYXkiLCJiaW5kaW5ncyIsImxlbmd0aE9mTm9kZSIsIkxlbmd0aE9mIiwibGVuZ3RoT2YiLCJzdGF0ZW1lbnROb2RlIiwiU3RhdGVtZW50IiwibGlzdEFzc2lnbm1lbnQiLCJvYmplY3RBc3NpZ25tZW50IiwidmFyaWFibGVBc3NpZ25tZW50cyIsInN0YXRlbWVudCIsInByb2NlZHVyZU5vZGUiLCJQcm9jZWR1cmUiLCJleHBvcnRlZCIsInBhcmFtZXRlcnMiLCJyZXR1cm5CbG9jayIsInByb2NlZHVyZVN0cmluZyIsInByb2NlZHVyZVN0cmluZ0Zyb21UeXBlTGFiZWxFeHBvcnRlZFBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayIsInByb2NlZHVyZSIsIlJlZmVyZW5jZSIsInJlZmVyZW5jZSIsInBhcmFtZXRlck5vZGUiLCJQYXJhbWV0ZXIiLCJwYXJhbWV0ZXIiLCJub2RlUXVlcnlOb2RlIiwiTm9kZVF1ZXJ5IiwicXVlcnkiLCJub2RlUXVlcnkiLCJwcmltaXRpdmVOb2RlIiwiUHJpbWl0aXZlIiwidG9JbnRlZ2VyTm9kZSIsIlRvSW50ZWdlciIsInRvSW50ZWdlciIsInN0YXJ0c1dpdGhOb2RlIiwiU3RhcnRzV2l0aCIsInN0YXJ0c1dpdGgiLCJub2Rlc1F1ZXJ5Tm9kZSIsIk5vZGVzUXVlcnkiLCJub2Rlc1F1ZXJ5IiwicGFyYW1ldGVyc05vZGUiLCJQYXJhbWV0ZXJzIiwicGFyYW1ldGVyc0FycmF5IiwiZXhwcmVzc2lvbk5vZGUiLCJFeHByZXNzaW9uIiwidHJ5SW50ZWdlciIsInByb2NlZHVyZUNhbGwiLCJleHByZXNzaW9uU3RyaW5nIiwiZXhwcmVzc2lvblN0cmluZ0Zyb21Qcm9wZXJ0aWVzIiwidHJ5SW50ZWdlck5vZGUiLCJUcnlJbnRlZ2VyIiwicmVmZXJlbmNlc05vZGUiLCJSZWZlcmVuY2VzIiwicmVmZXJlbmNlTm9kZXMiLCJnZXRSZWZlcmVuY2VOb2RlcyIsInJlZmVyZW5jZXNBcnJheSIsInJlZmVyZW5jZXNTdHJpbmciLCJyZWZlcmVuY2VzU3RyaW5nRnJvbVJlZmVyZW5jZXNBcnJheSIsInJldHVybkJsb2NrTm9kZSIsIlJldHVybkJsb2NrIiwic3RhdGVtZW50cyIsIm5vbnNlbnNpY2FsIiwicmV0dXJuU3RhdGVtZW50IiwicmV0dXJuQmxvY2tTdHJpbmciLCJyZXR1cm5CbG9ja1N0cmluZ0Zyb21SZXR1cm5TdGF0ZW1lbnROb2RlIiwibmVnYXRlZFRlcm1Ob2RlIiwiTmVnYXRlZFRlcm0iLCJnZXRUZXJtTm9kZSIsImxvZ2ljYWxUZXJtTm9kZSIsIkxvZ2ljYWxUZXJtIiwiZGlzanVuY3Rpb24iLCJsZWZ0VGVybSIsInJpZ2h0VGVybSIsIm5hbWVkQmluZGluZ05vZGUiLCJOYW1lZEJpbmRpbmciLCJhbGlhcyIsIm5hbWVkQmluZGluZyIsIm5hbWVkQmluZGluZ3NOb2RlIiwiTmFtZWRCaW5kaW5ncyIsIm5hbWVkQmluZGluZ05vZGVzIiwiZ2V0TmFtZWRCaW5kaW5nTm9kZXMiLCJuYW1lZEJpbmRpbmdzQXJyYXkiLCJuYW1lZEJpbmRpbmdzIiwiYnJhY2tldGVkVGVybU5vZGUiLCJCcmFja2V0ZWRUZXJtIiwicHJvY2VkdXJlQ2FsbE5vZGUiLCJQcm9jZWR1cmVDYWxsIiwiaW1wb3J0QmluZGluZ05vZGUiLCJJbXBvcnRCaW5kaW5nIiwiaW1wb3J0QmluZGluZyIsImNvbXBhcmlzb25UZXJtTm9kZSIsIkNvbXBhcmlzb25UZXJtIiwibmVnYXRlZCIsImxpc3RBc3NpZ25tZW50Tm9kZSIsIkxpc3RBc3NpZ25tZW50Iiwib2JqZWN0QXNzaWdubWVudE5vZGUiLCJnZXROYW1lZEJpbmRpbmdzTm9kZSIsImltcG9ydFN0YXRlbWVudE5vZGUiLCJJbXBvcnRTdGF0ZW1lbnQiLCJyZWxlYXNlTmFtZSIsImltcG9ydEJpbmRpbmdzIiwiaW1wb3J0U3RhdGVtZW50IiwicmV0dXJuU3RhdGVtZW50Tm9kZSIsIlJldHVyblN0YXRlbWVudCIsIk9iamVjdEFzc2lnbm1lbnQiLCJhbm9ueW1vdXNQcm9jZWR1cmVOb2RlIiwiQW5vbnltb3VzUHJvY2VkdXJlIiwibm9ueW1vdXNQcm9jZWR1cmVTdHJpbmciLCJhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmdGcm9tVHlwZVBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayIsInZhcmlhYmxlQXNzaWdubWVudHNOb2RlIiwiVmFyaWFibGVBc3NpZ25tZW50cyIsInZhcmlhYmxlQXNzaWdubWVudHNBcnJheSIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZyIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50c0FycmF5IiwidmFyaWFibGVBc3NpZ25tZW50Tm9kZSIsIlZhcmlhYmxlQXNzaWdubWVudCIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21UeXBlQW5kVmFyaWFibGUiLCJhc3NpZ25tZW50IiwiZ2V0TmFtZSIsImFsbE5vZGUiLCJnZXRWYWx1ZXNOb2RlIiwiZ2V0VmFsdWVOb2RlIiwiZ2V0VHlwZU5vZGUiLCJnZXRWYXJpYWJsZU5vZGUiLCJnZXRQcmltaXRpdmVOb2RlIiwiaXNFbGlkZWQiLCJ0eXBlTmFtZSIsImdldFR5cGVOYW1lIiwiZnJvbVR5cGVOYW1lIiwiZ2V0U3RyaW5nIiwiUXVlcnkiLCJmcm9tRXhwcmVzc2lvblN0cmluZyIsImdldFZhbHVlIiwiZ2V0TGFiZWxOb2RlIiwiZ2V0U29tZU5vZGUiLCJnZXRSZWZlcmVuY2VzTm9kZSIsImdldE5lZ2F0ZWRUZXJtTm9kZSIsImdldExvZ2ljYWxUZXJtTm9kZSIsImdldEV2ZXJ5Tm9kZSIsImFwcGx5Tm9kZSIsImdldEFwcGx5Tm9kZSIsIkJPT0xFQU5fVFlQRV9OQU1FIiwiYXJndW1lbnRUeXBlTmFtZSIsImdldEFyZ3VtZW50VHlwZU5hbWUiLCJnZXRSZWR1Y2VOb2RlIiwiZ2V0QWxpYXMiLCJnZXRUZXJuYXJ5Tm9kZSIsImdldEJyYWNrZXRlZFRlcm1Ob2RlIiwidGVybU5PZGUiLCJnZXRDb21wYXJpc29uVGVybU5vZGUiLCJpc0V4cG9ydGVkIiwiZ2V0TGVuZ3RoT2ZOb2RlIiwiZ2V0Q29udGFpbnNOb2RlIiwiZ2V0RW5kc1dpdGhOb2RlIiwiZ2V0UmVmZXJlbmNlTm9kZSIsImlmRXhwcmVzc2lvbk5vZGUiLCJnZXRJZkV4cHJlc3Npb25Ob2RlIiwiZ2V0UGFyYW1ldGVyc05vZGUiLCJnZXRUb0ludGVnZXJOb2RlIiwiZ2V0Tm9kZVF1ZXJ5Tm9kZSIsImxlZnRUZXJtTm9kZSIsImdldExlZnRUZXJtTm9kZSIsImdldFJldHVybkJsb2NrTm9kZSIsImdldE5vZGVzUXVlcnlOb2RlIiwiZ2V0VHJ5SW50ZWdlck5vZGUiLCJnZXRTdGFydHNXaXRoTm9kZSIsInJpZ2h0VGVybU5vZGUiLCJnZXRSaWdodFRlcm1Ob2RlIiwiZWxzZUV4cHJlc3Npb25Ob2RlIiwiZ2V0RWxzZUV4cHJlc3Npb25Ob2RlIiwic3RhdGVtZW50Tm9kZXMiLCJnZXRTdGF0ZW1lbnROb2RlcyIsIm1hcCIsImlzTmVnYXRlZCIsImdldEFub255bW91c1Byb2NlZHVyZU5vZGUiLCJpc05vbnNlbnNpY2FsIiwiaXNEaXNqdW5jdGlvbiIsImdldEJpbmRpbmdzTm9kZSIsInZhcmlhYmxlU3RyaW5nIiwidmFyaWFibGVTdHJpbmdGcm9tTmFtZSIsImdldExpc3RBc3NpZ25tZW50Tm9kZSIsImdldFByb2NlZHVyZUNhbGxOb2RlIiwiZ2V0T2JqZWN0QXNzaWdubWVudE5vZGUiLCJnZXRSZXR1cm5TdGF0ZW1lbnROb2RlIiwiZ2V0UmVsZWFzZU5hbWUiLCJnZXRWYXJpYWJsZUFzc2lnbm1lbnRzTm9kZSIsImdldEV4cHJlc3Npb25Ob2RlIiwiaW1wb3J0QmluZGluZ05vZGVzIiwiZ2V0SW1wb3J0QmluZGluZ05vZGVzIiwiYmluZGluZ05vZGVzIiwiZ2V0QmluZGluZ05vZGVzIiwicGFyYW1ldGVyTm9kZXMiLCJnZXRQYXJhbWV0ZXJOb2RlcyIsIm5hbWVkUGFyYW1ldGVyc0FycmF5IiwidmFyaWFibGVBc3NpZ25tZW50Tm9kZXMiLCJnZXRWYXJpYWJsZUFzc2lnbm1lbnROb2RlcyIsInZhcmlhYmxlQXNzaWdubWVudCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBOG9DZ0JBO2VBQUFBOztRQTNhQUM7ZUFBQUE7O1FBOHlCQUM7ZUFBQUE7O1FBNkNBQztlQUFBQTs7UUF2SEFDO2VBQUFBOztRQXIzQ0FDO2VBQUFBOztRQW05QkFDO2VBQUFBOztRQStCQUM7ZUFBQUE7O1FBajRCQUM7ZUFBQUE7O1FBMjlDQUM7ZUFBQUE7O1FBOTNDQUM7ZUFBQUE7O1FBNnRDQUM7ZUFBQUE7O1FBLzRCQUM7ZUFBQUE7O1FBeWpCQUM7ZUFBQUE7O1FBaGhCQUM7ZUFBQUE7O1FBMGlCQUM7ZUFBQUE7O1FBLzhCQUM7ZUFBQUE7O1FBK2dDQUM7ZUFBQUE7O1FBbU5BQztlQUFBQTs7UUEva0JBQztlQUFBQTs7UUE4aEJBQztlQUFBQTs7UUFscUNBQztlQUFBQTs7UUE0Z0NBQztlQUFBQTs7UUF0cENBQztlQUFBQTs7UUFhQUM7ZUFBQUE7O1FBcTVCQUM7ZUFBQUE7O1FBaU1BQztlQUFBQTs7UUF2d0JBQztlQUFBQTs7UUE4cENBQztlQUFBQTs7UUE3WkFDO2VBQUFBOztRQXFGQUM7ZUFBQUE7O1FBanFCQUM7ZUFBQUE7O1FBc2pDQUM7ZUFBQUE7O1FBL0RBQztlQUFBQTs7UUFyOEJBQztlQUFBQTs7UUFtaEJBQztlQUFBQTs7UUE0RUFDO2VBQUFBOztRQXJv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
1416
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZWxlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwib2NjYW0tcXVlcnlcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBCT09MRUFOX1RZUEVfTkFNRSB9IGZyb20gXCIuLi90eXBlTmFtZXNcIjtcbmltcG9ydCB7IHRlcm5hcnlTdHJpbmdGcm9tVGVybSxcbiAgICAgICAgIHZhcmlhYmxlU3RyaW5nRnJvbU5hbWUsXG4gICAgICAgICB0ZXJtU3RyaW5nRnJvbVByb3BlcnRpZXMsXG4gICAgICAgICB2YWx1ZVN0cmluZ0Zyb21Qcm9wZXJ0aWVzLFxuICAgICAgICAgZXhwcmVzc2lvblN0cmluZ0Zyb21Qcm9wZXJ0aWVzLFxuICAgICAgICAgYXBwbHlTdHJpbmdGcm9tVmFyaWFibGVBbmRWYWx1ZXMsXG4gICAgICAgICByZWZlcmVuY2VzU3RyaW5nRnJvbVJlZmVyZW5jZXNBcnJheSxcbiAgICAgICAgIHJldHVybkJsb2NrU3RyaW5nRnJvbVJldHVyblN0YXRlbWVudE5vZGUsXG4gICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlLFxuICAgICAgICAgc29tZVN0cmluZ0Zyb21WYXJpYWJsZUFuZEFub255bW91c1Byb2NlZHVyZSxcbiAgICAgICAgIGV2ZXJ5U3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlLFxuICAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVQYXJhbWV0ZXJzQW5kUmV0dXJuQmxvY2ssXG4gICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNBcnJheSxcbiAgICAgICAgIHByb2NlZHVyZVN0cmluZ0Zyb21UeXBlTGFiZWxFeHBvcnRlZFBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayxcbiAgICAgICAgIHJlZHVjZVN0cmluZ0Zyb21WYXJpYWJsZUluaXRpYWxFeHByZXNzaW9uQW5kQW5vbnltb3VzUHJvY2VkdXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdHJpbmdcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWVGcm9tU29tZU5vZGUoc29tZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBTb21lIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHNvbWVOb2RlLCAgLy8vXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tU29tZU5vZGUoc29tZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmUgPSBhbm9ueW1vdXNQcm9jZWR1cmVGcm9tU29tZU5vZGUoc29tZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBzb21lU3RyaW5nID0gc29tZVN0cmluZ0Zyb21WYXJpYWJsZUFuZEFub255bW91c1Byb2NlZHVyZSh2YXJpYWJsZSwgYW5vbnltb3VzUHJvY2VkdXJlKSxcbiAgICAgICAgc3RyaW5nID0gc29tZVN0cmluZywgIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBzb21lID0gbmV3IFNvbWUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YXJpYWJsZSwgYW5vbnltb3VzUHJvY2VkdXJlKTtcblxuICByZXR1cm4gc29tZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cyxcbiAgICBub2RlID0gdGVybU5vZGUsICAvLy9cbiAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICBwcmltaXRpdmUgPSBwcmltaXRpdmVGcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgIG5lZ2F0ZWRUZXJtID0gbmVnYXRlZFRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgIGxvZ2ljYWxUZXJtID0gbG9naWNhbFRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgIGJyYWNrZXRlZFRlcm0gPSBicmFja2V0ZWRUZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICBjb21wYXJpc29uVGVybSA9IGNvbXBhcmlzb25UZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICBwcm9wZXJ0aWVzID0gW1xuICAgICAgdmFyaWFibGUsXG4gICAgICBwcmltaXRpdmUsXG4gICAgICBuZWdhdGVkVGVybSxcbiAgICAgIGxvZ2ljYWxUZXJtLFxuICAgICAgYnJhY2tldGVkVGVybSxcbiAgICAgIGNvbXBhcmlzb25UZXJtXG4gICAgXSxcbiAgICB0ZXJtU3RyaW5nID0gdGVybVN0cmluZ0Zyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMsIGNvbnRleHQpLFxuICAgIHN0cmluZyA9IHRlcm1TdHJpbmcsICAvLy9cbiAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB0ZXJtID0gbmV3IFRlcm0oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YXJpYWJsZSwgcHJpbWl0aXZlLCBuZWdhdGVkVGVybSwgbG9naWNhbFRlcm0sIGJyYWNrZXRlZFRlcm0sIGNvbXBhcmlzb25UZXJtKTtcblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBUeXBlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHR5cGVOb2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBuYW1lID0gbmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCksXG4gICAgICAgIGFyZ3VtZW50VHlwZSA9IGFyZ3VtZW50VHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHR5cGUgPSBuZXcgVHlwZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIGFyZ3VtZW50VHlwZSk7XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUZyb21BcHBseU5vZGUoc29tZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBBcHBseSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBzb21lTm9kZSwgIC8vL1xuICAgICAgICB2YWx1ZXMgPSB2YWx1ZXNGcm9tQXBwbHlOb2RlKHNvbWVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21BcHBseU5vZGUoc29tZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICByZWZlcmVuY2VzID0gcmVmZXJlbmNlc0Zyb21BcHBseU5vZGUoc29tZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBhcHBseVN0cmluZyA9IGFwcGx5U3RyaW5nRnJvbVZhcmlhYmxlQW5kVmFsdWVzKHZhcmlhYmxlLCB2YWx1ZXMpLFxuICAgICAgICBzdHJpbmcgPSBhcHBseVN0cmluZywgIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBhcHBseSA9IG5ldyBBcHBseShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhbHVlcywgdmFyaWFibGUsIHJlZmVyZW5jZXMpO1xuXG4gIHJldHVybiBhcHBseTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYWx1ZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSB2YWx1ZU5vZGUsICAvLy9cbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgcHJpbWl0aXZlID0gcHJpbWl0aXZlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBwcm9wZXJ0aWVzID0gW1xuICAgICAgICAgIHZhcmlhYmxlLFxuICAgICAgICAgIHByaW1pdGl2ZVxuICAgICAgICBdLFxuICAgICAgICB2YWx1ZVN0cmluZyA9IHZhbHVlU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcywgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IHZhbHVlU3RyaW5nLCAgLy8vXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHZhbHVlID0gbmV3IFZhbHVlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIHByaW1pdGl2ZSk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JGcm9tRXJyb3JOb2RlKGVycm9yTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IEVycm9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGVycm9yTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZXJ5RnJvbUV2ZXJ5Tm9kZShldmVyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBFdmVyeSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBldmVyeU5vZGUsIC8vL1xuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbUV2ZXJ5Tm9kZShldmVyeU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmUgPSBhbm9ueW1vdXNQcm9jZWR1cmVGcm9tRXZlcnlOb2RlKGV2ZXJ5Tm9kZSwgY29udGV4dCksXG4gICAgICAgIGV2ZXJ5U3RyaW5nID0gZXZlcnlTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUodmFyaWFibGUsIGFub255bW91c1Byb2NlZHVyZSksXG4gICAgICAgIHN0cmluZyA9IGV2ZXJ5U3RyaW5nLCAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgZXZlcnkgPSBuZXcgRXZlcnkoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YXJpYWJsZSwgYW5vbnltb3VzUHJvY2VkdXJlKTtcblxuICByZXR1cm4gZXZlcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21MYWJlbE5vZGUobGFiZWxOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgTGFiZWwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gbGFiZWxOb2RlLFxuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIG5hbWUgPSBuYW1lRnJvbUxhYmVsTm9kZShsYWJlbE5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IGxhYmVsID0gbmV3IExhYmVsKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSk7XG5cbiAgcmV0dXJuIGxhYmVsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVzRnJvbVZhbHVlc05vZGUodmFsdWVzTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFZhbHVlcyB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSB2YWx1ZXNOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIHZhbHVlTm9kZXMgPSB2YWx1ZXNOb2RlLmdldFZhbHVlTm9kZXMoKSxcbiAgICAgICAgdmFsdWVzQXJyYXkgPSB2YWx1ZXNBcnJheUZyb21WYWx1ZU5vZGVzKHZhbHVlTm9kZXMsIGNvbnRleHQpLFxuICAgICAgICBhcnJheSA9IHZhbHVlc0FycmF5LCAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgdmFsdWVzID0gbmV3IFZhbHVlcyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGFycmF5KTtcblxuICByZXR1cm4gdmFsdWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlRnJvbVJlZHVjZU5vZGUocmVkdWNlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFJlZHVjZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSByZWR1Y2VOb2RlLCAgLy8vXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tUmVkdWNlTm9kZShyZWR1Y2VOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgaW5pdGlhbFZhbHVlID0gaW5pdGlhbFZhbHVlRnJvbVJlZHVjZU5vZGUocmVkdWNlTm9kZSwgY29udGV4dCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZSA9IGFub255bW91c1Byb2NlZHVyZUZyb21SZWR1Y2VOb2RlKHJlZHVjZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICByZWR1Y2VTdHJpbmcgPSByZWR1Y2VTdHJpbmdGcm9tVmFyaWFibGVJbml0aWFsRXhwcmVzc2lvbkFuZEFub255bW91c1Byb2NlZHVyZSh2YXJpYWJsZSwgaW5pdGlhbFZhbHVlLCBhbm9ueW1vdXNQcm9jZWR1cmUpLFxuICAgICAgICBzdHJpbmcgPSByZWR1Y2VTdHJpbmcsICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcmVkdWNlID0gbmV3IFJlZHVjZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBpbml0aWFsVmFsdWUsIGFub255bW91c1Byb2NlZHVyZSk7XG5cbiAgcmV0dXJuIHJlZHVjZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRpbmdGcm9tQmluZGluZ05vZGUoYmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBCaW5kaW5nIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGJpbmRpbmdOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB0eXBlID0gdHlwZUZyb21CaW5kaW5nTm9kZShiaW5kaW5nTm9kZSwgY29udGV4dCksXG4gICAgICAgIG5hbWUgPSBuYW1lRnJvbUJpbmRpbmdOb2RlKGJpbmRpbmdOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgZWxpZGVkID0gZWxpZGVkRnJvbUJpbmRpbmdOb2RlKGJpbmRpbmdOb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBiaW5kaW5nID0gbmV3IEJpbmRpbmcoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBuYW1lLCBlbGlkZWQpO1xuXG4gIHJldHVybiBiaW5kaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybmFyeUZyb21UZXJuYXJ5Tm9kZSh0ZXJuYXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFRlcm5hcnkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gdGVybmFyeU5vZGUsIC8vL1xuICAgICAgICB0ZXJtID0gdGVybUZyb21UZXJuYXJ5Tm9kZSh0ZXJuYXJ5Tm9kZSwgY29udGV4dCksXG4gICAgICAgIGlmRXhwcmVzc2lvbiA9IGlmRXhwcmVzc2lvbkZyb21UZXJuYXJ5Tm9kZSh0ZXJuYXJ5Tm9kZSwgY29udGV4dCksXG4gICAgICAgIGVsc2VFeHByZXNzaW9uID0gZWxzZUV4cHJlc3Npb25Gcm9tVGVybmFyeU5vZGUodGVybmFyeU5vZGUsIGNvbnRleHQpLFxuICAgICAgICB0ZXJuYXJ5U3RyaW5nID0gdGVybmFyeVN0cmluZ0Zyb21UZXJtKHRlcm0pLFxuICAgICAgICBzdHJpbmcgPSB0ZXJuYXJ5U3RyaW5nLCAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgdGVybmFyeSA9IG5ldyBUZXJuYXJ5KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgaWZFeHByZXNzaW9uLCBlbHNlRXhwcmVzc2lvbik7XG5cbiAgcmV0dXJuIHRlcm5hcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSByZWZlcmVuY2VOb2RlLFxuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIG5hbWUgPSBuYW1lRnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgbGFiZWwgPSBuZXcgTGFiZWwoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuYW1lKTtcblxuICByZXR1cm4gbGFiZWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250YWluc0Zyb21Db250YWluc05vZGUoY29udGFpbnNOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgQ29udGFpbnMgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gY29udGFpbnNOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbUNvbnRhaW5zTm9kZShjb250YWluc05vZGUsIGNvbnRleHQpLFxuICAgICAgICBzdWJzdHJpbmcgPSBzdWJzdHJpbmdGcm9tQ29udGFpbnNOb2RlKGNvbnRhaW5zTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgY29udGFpbnMgPSBuZXcgQ29udGFpbnMoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YXJpYWJsZSwgc3Vic3RyaW5nKTtcblxuICByZXR1cm4gY29udGFpbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmRzV2l0aEZyb21FbmRzV2l0aE5vZGUoZW5kc1dpdGhOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgRW5kc1dpdGggfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gZW5kc1dpdGhOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbUVuZHNXaXRoTm9kZShlbmRzV2l0aE5vZGUsIGNvbnRleHQpLFxuICAgICAgICBzdWJzdHJpbmcgPSBzdWJzdHJpbmdGcm9tRW5kc1dpdGhOb2RlKGVuZHNXaXRoTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgZW5kc1dpdGggPSBuZXcgRW5kc1dpdGgoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YXJpYWJsZSwgc3Vic3RyaW5nKTtcblxuICByZXR1cm4gZW5kc1dpdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCksXG4gICAgICAgIG5hbWUgPSBuYW1lRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBleHByZXNzaW9uID0gZXhwcmVzc2lvbkZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB2YXJpYWJsZSA9IG5ldyBWYXJpYWJsZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIG5hbWUsIGV4cHJlc3Npb24pO1xuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRpbmdzRnJvbUJpbmRpbmdzTm9kZShiaW5kaW5nc05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBCaW5kaW5ncyB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBiaW5kaW5nc05vZGUsICAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICBiaW5kaW5nc0FycmF5ID0gYmluZGluZ3NBcnJheUZyb21CaW5kaW5nc05vZGUoYmluZGluZ3NOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgYXJyYXkgPSBiaW5kaW5nc0FycmF5OyAvLy9cblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBiaW5kaW5ncyA9IG5ldyBCaW5kaW5ncyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGFycmF5KTtcblxuICByZXR1cm4gYmluZGluZ3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW5ndGhPZkZyb21MZW5ndGhPZk5vZGUobGVuZ3RoT2ZOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgTGVuZ3RoT2YgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gbGVuZ3RoT2ZOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbUxlbmd0aE9mTm9kZShsZW5ndGhPZk5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IGxlbmd0aE9mID0gbmV3IExlbmd0aE9mKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUpO1xuXG4gIHJldHVybiBsZW5ndGhPZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIGxpc3RBc3NpZ25tZW50ID0gbGlzdEFzc2lnbm1lbnRGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgb2JqZWN0QXNzaWdubWVudCA9IG9iamVjdEFzc2lnbm1lbnRGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgdmFyaWFibGVBc3NpZ25tZW50cyA9IHZhcmlhYmxlQXNzaWdubWVudHNGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBzdGF0ZW1lbnQgPSBuZXcgU3RhdGVtZW50KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGlzdEFzc2lnbm1lbnQsIG9iamVjdEFzc2lnbm1lbnQsIHZhcmlhYmxlQXNzaWdubWVudHMpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVGcm9tUHJvY2VkdXJlTm9kZShwcm9jZWR1cmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgUHJvY2VkdXJlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHByb2NlZHVyZU5vZGUsICAvLy9cbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tUHJvY2VkdXJlTm9kZShwcm9jZWR1cmVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbGFiZWwgPSBsYWJlbEZyb21Qcm9jZWR1cmVOb2RlKHByb2NlZHVyZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBleHBvcnRlZCA9IGV4cG9yZXRlZEZyb21Qcm9jZWR1cmVOb2RlKHByb2NlZHVyZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVOb2RlKHByb2NlZHVyZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICByZXR1cm5CbG9jayA9IHJldHVybkJsb2NrRnJvbVByb2NlZHVyZU5vZGUocHJvY2VkdXJlTm9kZSwgY29udGV4dCksXG4gICAgICAgIHByb2NlZHVyZVN0cmluZyA9IHByb2NlZHVyZVN0cmluZ0Zyb21UeXBlTGFiZWxFeHBvcnRlZFBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayh0eXBlLCBsYWJlbCwgZXhwb3J0ZWQsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKSxcbiAgICAgICAgc3RyaW5nID0gcHJvY2VkdXJlU3RyaW5nLCAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHByb2NlZHVyZSA9IG5ldyBQcm9jZWR1cmUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBsYWJlbCwgZXhwb3J0ZWQsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKTtcblxuICByZXR1cm4gcHJvY2VkdXJlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlRnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSByZWZlcmVuY2VOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICBuYW1lID0gbmFtZUZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHJlZmVyZW5jZSA9IG5ldyBSZWZlcmVuY2UoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuYW1lKTtcblxuICByZXR1cm4gcmVmZXJlbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyRnJvbVBhcmFtZXRlck5vZGUocGFyYW1ldGVyTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFBhcmFtZXRlciB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBwYXJhbWV0ZXJOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB0eXBlID0gdHlwZUZyb21QYXJhbmV0ZXJOb2RlKHBhcmFtZXRlck5vZGUsIGNvbnRleHQpLFxuICAgICAgICBuYW1lID0gbmFtZUZyb21QYXJhbmV0ZXJOb2RlKHBhcmFtZXRlck5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHBhcmFtZXRlciA9IG5ldyBQYXJhbWV0ZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBuYW1lKTtcblxuICByZXR1cm4gcGFyYW1ldGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9kZVF1ZXJ5RnJvbU5vZGVRdWVyeU5vZGUobm9kZVF1ZXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IE5vZGVRdWVyeSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBub2RlUXVlcnlOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbU5vZGVRdWVyeU5vZGUobm9kZVF1ZXJ5Tm9kZSwgY29udGV4dCksXG4gICAgICAgIHF1ZXJ5ID0gcXVlcnlGcm9tTm9kZVF1ZXJ5Tm9kZShub2RlUXVlcnlOb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBub2RlUXVlcnkgPSBuZXcgTm9kZVF1ZXJ5KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIHF1ZXJ5KTtcblxuICByZXR1cm4gbm9kZVF1ZXJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbWl0aXZlRnJvbVByaW1pdGl2ZU5vZGUocHJpbWl0aXZlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFByaW1pdGl2ZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBwcmltaXRpdmVOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB0eXBlID0gdHlwZUZyb21QcmltaXRpdmVOb2RlKHByaW1pdGl2ZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICB2YWx1ZSA9IHZhbHVlRnJvbVByaW1pdGl2ZU5vZGUocHJpbWl0aXZlTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcHJpbWl0aXZlID0gbmV3IFByaW1pdGl2ZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHZhbHVlKTtcblxuICByZXR1cm4gcHJpbWl0aXZlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9JbnRlZ2VyRnJvbVRvSW50ZWdlck5vZGUodG9JbnRlZ2VyTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFRvSW50ZWdlciB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSB0b0ludGVnZXJOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVRvSW50ZWdlck5vZGUodG9JbnRlZ2VyTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgdG9JbnRlZ2VyID0gbmV3IFRvSW50ZWdlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlKTtcblxuICByZXR1cm4gdG9JbnRlZ2VyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRzV2l0aEZyb21TdGFydHNXaXRoTm9kZShzdGFydHNXaXRoTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFN0YXJ0c1dpdGggfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gc3RhcnRzV2l0aE5vZGUsIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tU3RhcnRzV2l0aE5vZGUoc3RhcnRzV2l0aE5vZGUsIGNvbnRleHQpLFxuICAgICAgICBzdWJzdHJpbmcgPSBzdWJzdHJpbmdGcm9tU3RhcnRzV2l0aE5vZGUoc3RhcnRzV2l0aE5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHN0YXJ0c1dpdGggPSBuZXcgU3RhcnRzV2l0aChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBzdWJzdHJpbmcpO1xuXG4gIHJldHVybiBzdGFydHNXaXRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9kZXNRdWVyeUZyb21Ob2Rlc1F1ZXJ5Tm9kZShub2Rlc1F1ZXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IE5vZGVzUXVlcnkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gbm9kZXNRdWVyeU5vZGUsICAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbU5vZGVzUXVlcnlOb2RlKG5vZGVzUXVlcnlOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgcXVlcnkgPSBxdWVyeUZyb21Ob2Rlc1F1ZXJ5Tm9kZShub2Rlc1F1ZXJ5Tm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3Qgbm9kZXNRdWVyeSA9IG5ldyBOb2Rlc1F1ZXJ5KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIHF1ZXJ5KTtcblxuICByZXR1cm4gbm9kZXNRdWVyeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNGcm9tUGFyYW1ldGVyc05vZGUocGFyYW1ldGVyc05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBQYXJhbWV0ZXJzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHBhcmFtZXRlcnNOb2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgcGFyYW1ldGVyc0FycmF5ID0gcGFyYW1ldGVyc0FycmF5RnJvbVBhcmFtZXRlcnNOb2RlKHBhcmFtZXRlcnNOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgYXJyYXkgPSBwYXJhbWV0ZXJzQXJyYXk7IC8vL1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHBhcmFtZXRlcnMgPSBuZXcgUGFyYW1ldGVycyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGFycmF5KTtcblxuICByZXR1cm4gcGFyYW1ldGVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cHJlc3Npb25Gcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBFeHByZXNzaW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGV4cHJlc3Npb25Ob2RlLCAgLy8vXG4gICAgICAgIHRlcm0gPSB0ZXJtRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgc29tZSA9IHNvbWVGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICBldmVyeSA9IGV2ZXJ5RnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgcmVkdWNlID0gcmVkdWNlRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgYXBwbHkgPSBhcHBseUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgIHRlcm5hcnkgPSB0ZXJuYXJ5RnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5RnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9kZXNRdWVyeSA9IG5vZGVzUXVlcnlGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICBsZW5ndGhPZiA9IGxlbmd0aE9mRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgdG9JbnRlZ2VyID0gdG9JbnRlZ2VyRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgdHJ5SW50ZWdlciA9IHRyeUludGVnZXJGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICBjb250YWlucyA9IGNvbnRhaW5zRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgZW5kc1dpdGggPSBlbmRzV2l0aEZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgIHN0YXJ0c1dpdGggPSBzdGFydHNXaXRoRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgcmV0dXJuQmxvY2sgPSByZXR1cm5CbG9ja0Zyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgIHByb2NlZHVyZUNhbGwgPSBwcm9jZWR1cmVDYWxsRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgcHJvcGVydGllcyA9IFtcbiAgICAgICAgICB0ZXJtLFxuICAgICAgICAgIHNvbWUsXG4gICAgICAgICAgZXZlcnksXG4gICAgICAgICAgcmVkdWNlLFxuICAgICAgICAgIGFwcGx5LFxuICAgICAgICAgIHRlcm5hcnksXG4gICAgICAgICAgbm9kZVF1ZXJ5LFxuICAgICAgICAgIG5vZGVzUXVlcnksXG4gICAgICAgICAgbGVuZ3RoT2YsXG4gICAgICAgICAgdG9JbnRlZ2VyLFxuICAgICAgICAgIHRyeUludGVnZXIsXG4gICAgICAgICAgY29udGFpbnMsXG4gICAgICAgICAgZW5kc1dpdGgsXG4gICAgICAgICAgc3RhcnRzV2l0aCxcbiAgICAgICAgICByZXR1cm5CbG9jayxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsXG4gICAgICAgIF0sXG4gICAgICAgIGV4cHJlc3Npb25TdHJpbmcgPSBleHByZXNzaW9uU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcywgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IGV4cHJlc3Npb25TdHJpbmcsICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgZXhwcmVzc2lvbiA9IG5ldyBFeHByZXNzaW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgc29tZSwgZXZlcnksIHJlZHVjZSwgYXBwbHksIHRlcm5hcnksIG5vZGVRdWVyeSwgbm9kZXNRdWVyeSwgbGVuZ3RoT2YsIHRvSW50ZWdlciwgdHJ5SW50ZWdlciwgY29udGFpbnMsIGVuZHNXaXRoLCBzdGFydHNXaXRoLCByZXR1cm5CbG9jaywgcHJvY2VkdXJlQ2FsbCk7XG5cbiAgcmV0dXJuIGV4cHJlc3Npb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cnlJbnRlZ2VyRnJvbVRyeUludGVnZXJOb2RlKHRyeUludGVnZXJOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVHJ5SW50ZWdlciB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSB0cnlJbnRlZ2VyTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21UcnlJbnRlZ2VyTm9kZSh0cnlJbnRlZ2VyTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgdHJ5SW50ZWdlciA9IG5ldyBUcnlJbnRlZ2VyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUpO1xuXG4gIHJldHVybiB0cnlJbnRlZ2VyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlc0Zyb21SZWZlcmVuY2VzTm9kZShyZWZlcmVuY2VzTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFJlZmVyZW5jZXMgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcmVmZXJlbmNlc05vZGUsIC8vL1xuICAgICAgICByZWZlcmVuY2VOb2RlcyA9IHJlZmVyZW5jZXNOb2RlLmdldFJlZmVyZW5jZU5vZGVzKCksXG4gICAgICAgIHJlZmVyZW5jZXNBcnJheSA9IHJlZmVyZW5jZXNBcnJheUZyb21SZWZlcmVuY2VOb2RlcyhyZWZlcmVuY2VOb2RlcywgY29udGV4dCksXG4gICAgICAgIHJlZmVyZW5jZXNTdHJpbmcgPSByZWZlcmVuY2VzU3RyaW5nRnJvbVJlZmVyZW5jZXNBcnJheShyZWZlcmVuY2VzQXJyYXkpLFxuICAgICAgICBzdHJpbmcgPSByZWZlcmVuY2VzU3RyaW5nLCAgLy8vXG4gICAgICAgIGFycmF5ID0gcmVmZXJlbmNlc0FycmF5LCAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcmVmZXJlbmNlcyA9IG5ldyBSZWZlcmVuY2VzKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgYXJyYXkpO1xuXG4gIHJldHVybiByZWZlcmVuY2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV0dXJuQmxvY2tGcm9tUmV0dXJuQmxvY2tOb2RlKHJldHVybkJsb2NrTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFJldHVybkJsb2NrIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHJldHVybkJsb2NrTm9kZSwgLy8vXG4gICAgICAgIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzRnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpLFxuICAgICAgICBub25zZW5zaWNhbCA9IG5vbnNlbnNpY2FsRnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpLFxuICAgICAgICByZXR1cm5TdGF0ZW1lbnQgPSByZXR1cm5TdGF0ZW1lbnRGcm9tUmV0dXJuQmxvY2tOb2RlKHJldHVybkJsb2NrTm9kZSwgY29udGV4dCksXG4gICAgICAgIHJldHVybkJsb2NrU3RyaW5nID0gcmV0dXJuQmxvY2tTdHJpbmdGcm9tUmV0dXJuU3RhdGVtZW50Tm9kZShyZXR1cm5TdGF0ZW1lbnQpLFxuICAgICAgICBzdHJpbmcgPSByZXR1cm5CbG9ja1N0cmluZywgIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCByZXR1cm5CbG9jayA9IG5ldyBSZXR1cm5CbG9jayhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudHMsIG5vbnNlbnNpY2FsLCByZXR1cm5TdGF0ZW1lbnQpO1xuXG4gIHJldHVybiByZXR1cm5CbG9jaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lZ2F0ZWRUZXJtRnJvbU5lZ2F0ZWRUZXJtTm9kZShuZWdhdGVkVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBOZWdhdGVkVGVybSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBuZWdhdGVkVGVybU5vZGUsIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHRlcm1Ob2RlID0gbmVnYXRlZFRlcm1Ob2RlLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbU5lZ2F0ZWRUZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIHRlcm0gPSB0ZXJtRnJvbU5lZ2F0ZWRUZXJtTm9kZShuZWdhdGVkVGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBuZWdhdGVkVGVybSA9IG5ldyBOZWdhdGVkVGVybShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHRlcm0pO1xuXG4gIHJldHVybiBuZWdhdGVkVGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ2ljYWxUZXJtRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBMb2dpY2FsVGVybSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBsb2dpY2FsVGVybU5vZGUsIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBkaXNqdW5jdGlvbiA9IGRpc2p1bmN0aW9uRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBsZWZ0VGVybSA9IGxlZnRUZXJtRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICByaWdodFRlcm0gPSByaWdodFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIGxvZ2ljYWxUZXJtID0gbmV3IExvZ2ljYWxUZXJtKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgZGlzanVuY3Rpb24sIGxlZnRUZXJtLCByaWdodFRlcm0pO1xuXG4gIHJldHVybiBsb2dpY2FsVGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVkQmluZGluZ0Zyb21OYW1lZEJpbmRpbmdOb2RlKG5hbWVkQmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBOYW1lZEJpbmRpbmcgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gbmFtZWRCaW5kaW5nTm9kZSwgIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbU5hbWVkQmluZGluZ05vZGUobmFtZWRCaW5kaW5nTm9kZSwgY29udGV4dCksXG4gICAgICAgIG5hbWUgPSBuYW1lRnJvbU5hbWVkQmluZGluZ05vZGUobmFtZWRCaW5kaW5nTm9kZSwgY29udGV4dCksXG4gICAgICAgIGFsaWFzID0gYWxpYXNGcm9tTmFtZWRCaW5kaW5nTm9kZShuYW1lZEJpbmRpbmdOb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBuYW1lZEJpbmRpbmcgPSBuZXcgTmFtZWRCaW5kaW5nKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgbmFtZSwgYWxpYXMpO1xuXG4gIHJldHVybiBuYW1lZEJpbmRpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lZEJpbmRpbmdzRnJvbU5hbWVkQmluZGluZ3NOb2RlKG5hbWVkQmluZGluZ3NOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgTmFtZWRCaW5kaW5ncyB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBuYW1lZEJpbmRpbmdzTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgbmFtZWRCaW5kaW5nTm9kZXMgPSBuYW1lZEJpbmRpbmdzTm9kZS5nZXROYW1lZEJpbmRpbmdOb2RlcygpLFxuICAgICAgICBuYW1lZEJpbmRpbmdzQXJyYXkgPSBuYW1lZFBhcmFtZXRlcnNBcnJheUZyb21OYW1lZEJpbmRpbmdOb2RlcyhuYW1lZEJpbmRpbmdOb2RlcywgY29udGV4dCksXG4gICAgICAgIGFycmF5ID0gbmFtZWRCaW5kaW5nc0FycmF5OyAvLy9cblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBuYW1lZEJpbmRpbmdzID0gbmV3IE5hbWVkQmluZGluZ3MoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBhcnJheSk7XG5cbiAgcmV0dXJuIG5hbWVkQmluZGluZ3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBicmFja2V0ZWRUZXJtRnJvbUJyYWNrZXRlZFRlcm1Ob2RlKGJyYWNrZXRlZFRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgQnJhY2tldGVkVGVybSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBicmFja2V0ZWRUZXJtTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLCAgLy8vXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB0ZXJtID0gdGVybUZyb21CcmFja2V0ZWRUZXJtTm9kZShicmFja2V0ZWRUZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIGJyYWNrZXRlZFRlcm0gPSBuZXcgQnJhY2tldGVkVGVybShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0pO1xuXG4gIHJldHVybiBicmFja2V0ZWRUZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlQ2FsbEZyb21Qcm9jZWR1cmVDYWxsTm9kZShwcm9jZWR1cmVDYWxsTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFByb2NlZHVyZUNhbGwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcHJvY2VkdXJlQ2FsbE5vZGUsIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZUZyb21Qcm9jZWR1cmVDYWxsTm9kZShwcm9jZWR1cmVDYWxsTm9kZSwgY29udGV4dCksXG4gICAgICAgIHZhbHVlcyA9IHZhbHVlc0Zyb21Qcm9jZWR1cmVDYWxsTm9kZShwcm9jZWR1cmVDYWxsTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcHJvY2VkdXJlQ2FsbCA9IG5ldyBQcm9jZWR1cmVDYWxsKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCB2YWx1ZXMpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1wb3J0QmluZGluZ0Zyb21JbXBvcnRCaW5kaW5nTm9kZShpbXBvcnRCaW5kaW5nTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IEltcG9ydEJpbmRpbmcgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gaW1wb3J0QmluZGluZ05vZGUsIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIGxhYmVsID0gbGFiZWxGcm9tSW1wb3J0QmluZGluZ05vZGUoaW1wb3J0QmluZGluZ05vZGUsIGNvbnRleHQpLFxuICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2VGcm9tSW1wb3J0QmluZGluZ05vZGUoaW1wb3J0QmluZGluZ05vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IGltcG9ydEJpbmRpbmcgPSBuZXcgSW1wb3J0QmluZGluZyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVsLCByZWZlcmVuY2UpO1xuXG4gIHJldHVybiBpbXBvcnRCaW5kaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyaXNvblRlcm1Gcm9tQ29tcGFyaXNvblRlcm1Ob2RlKGNvbXBhcmlzb25UZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IENvbXBhcmlzb25UZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGNvbXBhcmlzb25UZXJtTm9kZSwgIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIG5lZ2F0ZWQgPSBuZWdhdGVkRnJvbUNvbXBhcmlzb25UZXJtTm9kZShjb21wYXJpc29uVGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBsZWZ0VGVybSA9IGxlZnRUZXJtRnJvbUNvbXB6cmlzb25UZXJtTm9kZShjb21wYXJpc29uVGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICByaWdodFRlcm0gPSByaWdodFRlcm1Gcm9tQ29tcHpyaXNvblRlcm1Ob2RlKGNvbXBhcmlzb25UZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIGNvbXBhcmlzb25UZXJtID0gbmV3IENvbXBhcmlzb25UZXJtKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmVnYXRlZCwgbGVmdFRlcm0sIHJpZ2h0VGVybSk7XG5cbiAgcmV0dXJuIGNvbXBhcmlzb25UZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdEFzc2lnbm1lbnRGcm9tTGlzdEFzc2lnbm1lbnROb2RlKGxpc3RBc3NpZ25tZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IExpc3RBc3NpZ25tZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGxpc3RBc3NpZ25tZW50Tm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21MaXN0QXNzaWdubWVudE5vZGUobGlzdEFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgYmluZGluZ3MgPSBiaW5kaW5nc0Zyb21MaXN0QXNzaWdubWVudE5vZGUobGlzdEFzc2lnbm1lbnROb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBsaXN0QXNzaWdubWVudCA9IG5ldyBMaXN0QXNzaWdubWVudChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBiaW5kaW5ncyk7XG5cbiAgcmV0dXJuIGxpc3RBc3NpZ25tZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZWRCaW5kaW5nc0Zyb21PYmplY3RBc3NpZ25tZW50Tm9kZShvYmplY3RBc3NpZ25tZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuYW1lZEJpbmRpbmdzTm9kZSA9IG9iamVjdEFzc2lnbm1lbnROb2RlLmdldE5hbWVkQmluZGluZ3NOb2RlKCksXG4gICAgICAgIG5hbWVkQmluZGluZ3MgPSBuYW1lZEJpbmRpbmdzRnJvbU5hbWVkQmluZGluZ3NOb2RlKG5hbWVkQmluZGluZ3NOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gbmFtZWRCaW5kaW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltcG9ydFN0YXRlbWVudEZyb21JbXBvcnRTdGF0ZW1lbnROb2RlKGltcG9ydFN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBJbXBvcnRTdGF0ZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gaW1wb3J0U3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSByZWxlYXNlTmFtZUZyb21JbXBvcnRTdGF0ZW1lbnROb2RlKGltcG9ydFN0YXRlbWVudE5vZGUsIGNvbnRleHQpLFxuICAgICAgICBpbXBvcnRCaW5kaW5ncyA9IGltcG9ydEJpbmRpbmdzRnJvbUltcG9ydFN0YXRlbWVudE5vZGUoaW1wb3J0U3RhdGVtZW50Tm9kZSwgY29udGV4dCksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICBpbXBvcnRTdGF0ZW1lbnQgPSBuZXcgSW1wb3J0U3RhdGVtZW50KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVsZWFzZU5hbWUsIGltcG9ydEJpbmRpbmdzKTtcblxuICByZXR1cm4gaW1wb3J0U3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV0dXJuU3RhdGVtZW50RnJvbVJldHVyblN0YXRlbWVudE5vZGUocmV0dXJuU3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFJldHVyblN0YXRlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSByZXR1cm5TdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YWx1ZSA9IHZhbHVlRnJvbVJldHVyblN0YXRlbWVudE5vZGUocmV0dXJuU3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcmV0dXJuU3RhdGVtZW50ID0gbmV3IFJldHVyblN0YXRlbWVudChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhbHVlKTtcblxuICByZXR1cm4gcmV0dXJuU3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0QXNzaWdubWVudEZyb21PYmplY3RBc3NpZ25tZW50Tm9kZShvYmplY3RBc3NpZ25tZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IE9iamVjdEFzc2lnbm1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gb2JqZWN0QXNzaWdubWVudE5vZGUsICAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbU9iamVjdEFzc2lnbm1lbnROb2RlKG9iamVjdEFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbmFtZWRCaW5kaW5ncyA9IG5hbWVkQmluZGluZ3NGcm9tT2JqZWN0QXNzaWdubWVudE5vZGUob2JqZWN0QXNzaWdubWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IG9iamVjdEFzc2lnbm1lbnQgPSBuZXcgT2JqZWN0QXNzaWdubWVudChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBuYW1lZEJpbmRpbmdzKTtcblxuICByZXR1cm4gb2JqZWN0QXNzaWdubWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFub255bW91c1Byb2NlZHVyZUZyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBBbm9ueW1vdXNQcm9jZWR1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgIC8vL1xuICAgICAgICB0eXBlID0gdHlwZUZyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0Zyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICByZXR1cm5CbG9jayA9IHJldHVybkJsb2NrRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCksXG4gICAgICAgIG5vbnltb3VzUHJvY2VkdXJlU3RyaW5nID0gYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVQYXJhbWV0ZXJzQW5kUmV0dXJuQmxvY2sodHlwZSwgcGFyYW1ldGVycywgcmV0dXJuQmxvY2spLFxuICAgICAgICBzdHJpbmcgPSBub255bW91c1Byb2NlZHVyZVN0cmluZywgLy8vXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IGFub255bW91c1Byb2NlZHVyZSA9IG5ldyBBbm9ueW1vdXNQcm9jZWR1cmUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBwYXJhbWV0ZXJzLCByZXR1cm5CbG9jayk7XG5cbiAgcmV0dXJuIGFub255bW91c1Byb2NlZHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlQXNzaWdubWVudHNGcm9tVmFyaWFibGVBc3NpZ25tZW50c05vZGUodmFyaWFibGVBc3NpZ25tZW50c05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYXJpYWJsZUFzc2lnbm1lbnRzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHZhcmlhYmxlQXNzaWdubWVudHNOb2RlLCAvLy9cbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tVmFyaWFibGVBc3NpZ25tZW50c05vZGUodmFyaWFibGVBc3NpZ25tZW50c05vZGUsIGNvbnRleHQpLFxuICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkgPSB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXlGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNOb2RlKHR5cGUsIHZhcmlhYmxlQXNzaWdubWVudHNOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nID0gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkodHlwZSwgdmFyaWFibGVBc3NpZ25tZW50c0FycmF5KSxcbiAgICAgICAgYXJyYXkgPSB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXksIC8vL1xuICAgICAgICBzdHJpbmcgPSB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmcsICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgdmFyaWFibGVBc3NpZ25tZW50cyA9IG5ldyBWYXJpYWJsZUFzc2lnbm1lbnRzKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgYXJyYXkpO1xuXG4gIHJldHVybiB2YXJpYWJsZUFzc2lnbm1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnROb2RlKHR5cGUsIHZhcmlhYmxlQXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYXJpYWJsZUFzc2lnbm1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gdmFyaWFibGVBc3NpZ25tZW50Tm9kZSwgIC8vL1xuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnROb2RlKHR5cGUsIHZhcmlhYmxlQXNzaWdubWVudE5vZGUsIGNvbnRleHQpLFxuICAgICAgICBleHByZXNzaW9uID0gZXhwcmVzc2lvbkZyb21WYXJpYWJsZUFzc2lnbm1lbnROb2RlKHZhcmlhYmxlQXNzaWdubWVudE5vZGUsIGNvbnRleHQpLFxuICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmcgPSB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlKHR5cGUsIHZhcmlhYmxlLCBjb250ZXh0KSxcbiAgICAgICAgc3RyaW5nID0gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nLCAgLy8vXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICBhc3NpZ25tZW50ID0gbmV3IFZhcmlhYmxlQXNzaWdubWVudChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBleHByZXNzaW9uKTtcblxuICByZXR1cm4gYXNzaWdubWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbmFtZSA9IHR5cGVOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tTGFiZWxOb2RlKGxhYmVsTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuYW1lID0gbGFiZWxOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlc0Zyb21BcHBseU5vZGUoYWxsTm9kZSwgY29udGV4dCkge1xuICBsZXQgdmFsdWVzID0gbnVsbDtcblxuICBjb25zdCB2YWx1ZXNOb2RlID0gYWxsTm9kZS5nZXRWYWx1ZXNOb2RlKCk7XG5cbiAgaWYgKHZhbHVlc05vZGUgIT09IG51bGwpICB7XG4gICAgdmFsdWVzID0gdmFsdWVzRnJvbVZhbHVlc05vZGUodmFsdWVzTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdmFsdWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGcm9tUmVkdWNlTm9kZShyZWR1Y2VOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhbHVlTm9kZSA9IHJlZHVjZU5vZGUuZ2V0VmFsdWVOb2RlKCksXG4gICAgICAgIHZhbHVlID0gdmFsdWVGcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21UZXJuYXJ5Tm9kZSh0ZXJuYXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm5hcnlOb2RlLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tQmluZGluZ05vZGUoYmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbmFtZSA9IGJpbmRpbmdOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tQmluZGluZ05vZGUoYmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHR5cGUgPSBudWxsO1xuXG4gIGNvbnN0IHR5cGVOb2RlID0gYmluZGluZ05vZGUuZ2V0VHlwZU5vZGUoKTtcblxuICBpZiAodHlwZU5vZGUgIT0gbnVsbCkge1xuICAgIHR5cGUgPSB0eXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tU29tZU5vZGUoc29tZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gc29tZU5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHZhcmlhYmxlID0gbnVsbDtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB0ZXJtTm9kZS5nZXRWYXJpYWJsZU5vZGUoKTtcblxuICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSkge1xuICBjb25zdCBuYW1lID0gdmFyaWFibGVOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0eXBlID0gbnVsbDtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbUFwcGx5Tm9kZShhbGxOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IGFsbE5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21Qcm9jZWR1cmVOb2RlKHByb2NlZHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdHlwZU5vZGUgPSBwcm9jZWR1cmVOb2RlLmdldFR5cGVOb2RlKCksXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW1pdGl2ZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCkge1xuICBsZXQgcHJpbWl0aXZlID0gbnVsbDtcblxuICBjb25zdCBwcmltaXRpdmVOb2RlID0gdGVybU5vZGUuZ2V0UHJpbWl0aXZlTm9kZSgpO1xuXG4gIGlmIChwcmltaXRpdmVOb2RlICE9PSBudWxsKSB7XG4gICAgcHJpbWl0aXZlID0gcHJpbWl0aXZlRnJvbVByaW1pdGl2ZU5vZGUocHJpbWl0aXZlTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcHJpbWl0aXZlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tRXZlcnlOb2RlKGV2ZXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YXJpYWJsZU5vZGUgPSBldmVyeU5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZWxpZGVkRnJvbUJpbmRpbmdOb2RlKGJpbmRpbmdOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGVsaWRlZCA9IGJpbmRpbmdOb2RlLmlzRWxpZGVkKCk7XG5cbiAgcmV0dXJuIGVsaWRlZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tUGFyYW5ldGVyTm9kZShwYXJhbWV0ZXJOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOb2RlID0gcGFyYW1ldGVyTm9kZS5nZXRUeXBlTm9kZSgpLFxuICAgICAgICB0eXBlID0gdHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lRnJvbVBhcmFuZXRlck5vZGUocGFyYW1ldGVyTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuYW1lID0gcGFyYW1ldGVyTm9kZS5nZXROYW1lKCk7XG5cbiAgcmV0dXJuIG5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lRnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuYW1lID0gcmVmZXJlbmNlTm9kZS5nZXROYW1lKCk7XG5cbiAgcmV0dXJuIG5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbVByaW1pdGl2ZU5vZGUocHJpbWl0aXZlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFR5cGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICB0eXBlTmFtZSA9IHByaW1pdGl2ZU5vZGUuZ2V0VHlwZU5hbWUoKSxcbiAgICAgICAgdHlwZSA9IFR5cGUuZnJvbVR5cGVOYW1lKHR5cGVOYW1lLCBjb250ZXh0KTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHZhcmlhYmxlID0gbnVsbDtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YWx1ZU5vZGUuZ2V0VmFyaWFibGVOb2RlKCk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmltaXRpdmVGcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCkge1xuICBsZXQgcHJpbWl0aXZlID0gbnVsbDtcblxuICBjb25zdCBwcmltaXRpdmVOb2RlID0gdmFsdWVOb2RlLmdldFByaW1pdGl2ZU5vZGUoKTtcblxuICBpZiAocHJpbWl0aXZlTm9kZSAhPT0gbnVsbCkge1xuICAgIHByaW1pdGl2ZSA9IHByaW1pdGl2ZUZyb21QcmltaXRpdmVOb2RlKHByaW1pdGl2ZU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHByaW1pdGl2ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbVJlZHVjZU5vZGUocmVkdWNlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YXJpYWJsZU5vZGUgPSByZWR1Y2VOb2RlLmdldFZhcmlhYmxlTm9kZSgpLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5RnJvbU5vZGVRdWVyeU5vZGUobm9kZVF1ZXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdHJpbmcgPSBub2RlUXVlcnlOb2RlLmdldFN0cmluZygpLFxuICAgICAgICBleHByZXNzaW9uU3RyaW5nID0gc3RyaW5nLCAgLy8vXG4gICAgICAgIHF1ZXJ5ID0gUXVlcnkuZnJvbUV4cHJlc3Npb25TdHJpbmcoZXhwcmVzc2lvblN0cmluZyk7XG5cbiAgcmV0dXJuIHF1ZXJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGcm9tUHJpbWl0aXZlTm9kZShwcmltaXRpdmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhbHVlID0gcHJpbWl0aXZlTm9kZS5nZXRWYWx1ZSgpO1xuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsRnJvbVByb2NlZHVyZU5vZGUocHJvY2VkdXJlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBsYWJlbE5vZGUgPSBwcm9jZWR1cmVOb2RlLmdldExhYmVsTm9kZSgpLFxuICAgICAgICBsYWJlbCA9IGxhYmVsRnJvbUxhYmVsTm9kZShsYWJlbE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBsYWJlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHRlcm0gPSBudWxsO1xuXG4gIGNvbnN0IHRlcm1Ob2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0VGVybU5vZGUoKTtcblxuICBpZiAodGVybU5vZGUgIT09IG51bGwpIHtcbiAgICB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWVGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHNvbWUgPSBudWxsO1xuXG4gIGNvbnN0IHNvbWVOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0U29tZU5vZGUoKTtcblxuICBpZiAoc29tZU5vZGUgIT09IG51bGwpIHtcbiAgICBzb21lID0gc29tZUZyb21Tb21lTm9kZShzb21lTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc29tZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZXNGcm9tQXBwbHlOb2RlKGFsbE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmVmZXJlbmNlc05vZGUgPSBhbGxOb2RlLmdldFJlZmVyZW5jZXNOb2RlKCksXG4gICAgICAgIHJlZmVyZW5jZXMgPSByZWZlcmVuY2VzRnJvbVJlZmVyZW5jZXNOb2RlKHJlZmVyZW5jZXNOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gcmVmZXJlbmNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lZ2F0ZWRUZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCBuZWdhdGVkVGVybSA9IG51bGw7XG5cbiAgY29uc3QgbmVnYXRlZFRlcm1Ob2RlID0gdGVybU5vZGUuZ2V0TmVnYXRlZFRlcm1Ob2RlKCk7XG5cbiAgaWYgKG5lZ2F0ZWRUZXJtTm9kZSAhPT0gbnVsbCkge1xuICAgIG5lZ2F0ZWRUZXJtID0gbmVnYXRlZFRlcm1Gcm9tTmVnYXRlZFRlcm1Ob2RlKG5lZ2F0ZWRUZXJtTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbmVnYXRlZFRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2dpY2FsVGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCkge1xuICBsZXQgbG9naWNhbFRlcm0gPSBudWxsO1xuXG4gIGNvbnN0IGxvZ2ljYWxUZXJtTm9kZSA9IHRlcm1Ob2RlLmdldExvZ2ljYWxUZXJtTm9kZSgpO1xuXG4gIGlmIChsb2dpY2FsVGVybU5vZGUgIT09IG51bGwpIHtcbiAgICBsb2dpY2FsVGVybSA9IGxvZ2ljYWxUZXJtRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGxvZ2ljYWxUZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlGcm9tTm9kZXNRdWVyeU5vZGUobm9kZXNRdWVyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RyaW5nID0gbm9kZXNRdWVyeU5vZGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGV4cHJlc3Npb25TdHJpbmcgPSBzdHJpbmcsICAvLy9cbiAgICAgICAgcXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvblN0cmluZyhleHByZXNzaW9uU3RyaW5nKTtcblxuICByZXR1cm4gcXVlcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmVyeUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgZXZlcnkgPSBudWxsO1xuXG4gIGNvbnN0IGV2ZXJ5Tm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldEV2ZXJ5Tm9kZSgpO1xuXG4gIGlmIChldmVyeU5vZGUgIT09IG51bGwpIHtcbiAgICBldmVyeSA9IGV2ZXJ5RnJvbUV2ZXJ5Tm9kZShldmVyeU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGV2ZXJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IGFwcGx5ID0gbnVsbDtcblxuICBjb25zdCBhcHBseU5vZGUgPSBleHByZXNzaW9uTm9kZS5nZXRBcHBseU5vZGUoKTtcblxuICBpZiAoYXBwbHlOb2RlICE9PSBudWxsKSB7XG4gICAgYXBwbHkgPSBhcHBseUZyb21BcHBseU5vZGUoYXBwbHlOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBhcHBseTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0eXBlID0gQk9PTEVBTl9UWVBFX05BTUU7XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbU5lZ2F0ZWRUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdHlwZSA9IEJPT0xFQU5fVFlQRV9OQU1FO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21OZWdhdGVkVGVybU5vZGUobmVnYXRlZFRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gbmVnYXRlZFRlcm1Ob2RlLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFyZ3VtZW50VHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCkge1xuICBsZXQgYXJndW1lbnRUeXBlID0gbnVsbDtcblxuICBjb25zdCBhcmd1bWVudFR5cGVOYW1lID0gdHlwZU5vZGUuZ2V0QXJndW1lbnRUeXBlTmFtZSgpO1xuXG4gIGlmIChhcmd1bWVudFR5cGVOYW1lICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBUeXBlIH0gPSBlbGVtZW50cztcblxuICAgIGFyZ3VtZW50VHlwZSA9IFR5cGUuZnJvbVR5cGVOYW1lKGFyZ3VtZW50VHlwZU5hbWUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGFyZ3VtZW50VHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbUxlbmd0aE9mTm9kZShsZW5ndGhPZk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gbGVuZ3RoT2ZOb2RlLmdldFZhcmlhYmxlTm9kZSgpLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbUNvbnRhaW5zTm9kZShjb250YWluc05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gY29udGFpbnNOb2RlLmdldFZhcmlhYmxlTm9kZSgpLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbUVuZHNXaXRoTm9kZShlbmRzV2l0aE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gZW5kc1dpdGhOb2RlLmdldFZhcmlhYmxlTm9kZSgpLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZHVjZUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgcmVkdWNlID0gbnVsbDtcblxuICBjb25zdCByZWR1Y2VOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0UmVkdWNlTm9kZSgpO1xuXG4gIGlmIChyZWR1Y2VOb2RlICE9PSBudWxsKSB7XG4gICAgcmVkdWNlID0gcmVkdWNlRnJvbVJlZHVjZU5vZGUocmVkdWNlTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcmVkdWNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21OYW1lZEJpbmRpbmdOb2RlKG5hbWVkQmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdHlwZU5vZGUgPSBuYW1lZEJpbmRpbmdOb2RlLmdldFR5cGVOb2RlKCksXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tTmFtZWRCaW5kaW5nTm9kZShuYW1lZEJpbmRpbmdOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5hbWUgPSBuYW1lZEJpbmRpbmdOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0cmluZ0Zyb21Db250YWluc05vZGUoY29udGFpbnNOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0cmluZyA9IGNvbnRhaW5zTm9kZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3Vic3RyaW5nID0gc3RyaW5nOyAgLy8vXG5cbiAgcmV0dXJuIHN1YnN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0cmluZ0Zyb21FbmRzV2l0aE5vZGUoZW5kc1dpdGhOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0cmluZyA9IGVuZHNXaXRoTm9kZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3Vic3RyaW5nID0gc3RyaW5nOyAgLy8vXG5cbiAgcmV0dXJuIHN1YnN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzRnJvbU5hbWVkQmluZGluZ05vZGUobmFtZWRCaW5kaW5nTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBhbGlhcyA9IG5hbWVkQmluZGluZ05vZGUuZ2V0QWxpYXMoKTtcblxuICByZXR1cm4gYWxpYXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21Ob2RlUXVlcnlOb2RlKG5vZGVRdWVyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gbm9kZVF1ZXJ5Tm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJuYXJ5RnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCB0ZXJuYXJ5ID0gbnVsbDtcblxuICBjb25zdCB0ZXJuYXJ5Tm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldFRlcm5hcnlOb2RlKCk7XG5cbiAgaWYgKHRlcm5hcnlOb2RlICE9PSBudWxsKSB7XG4gICAgdGVybmFyeSA9IHRlcm5hcnlGcm9tVGVybmFyeU5vZGUodGVybmFyeU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm5hcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBicmFja2V0ZWRUZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCBicmFja2V0ZWRUZXJtID0gbnVsbDtcblxuICBjb25zdCBicmFja2V0ZWRUZXJtTm9kZSA9IHRlcm1Ob2RlLmdldEJyYWNrZXRlZFRlcm1Ob2RlKCk7XG5cbiAgaWYgKGJyYWNrZXRlZFRlcm1Ob2RlICE9PSBudWxsKSB7XG4gICAgYnJhY2tldGVkVGVybSA9IGJyYWNrZXRlZFRlcm1Gcm9tQnJhY2tldGVkVGVybU5vZGUoYnJhY2tldGVkVGVybU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNrZXRlZFRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21Ub0ludGVnZXJOb2RlKHRvSW50ZWdlck5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gdG9JbnRlZ2VyTm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtRnJvbUJyYWNrZXRlZFRlcm1Ob2RlKGJyYWNrZXRlZFRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gYnJhY2tldGVkVGVybU5vZGUuZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgdGVybSA9IHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyaXNvblRlcm1Gcm9tVGVybU5vZGUodGVybU5PZGUsIGNvbnRleHQpIHtcbiAgbGV0IGNvbXBhcmlzb25UZXJtID0gbnVsbDtcblxuICBjb25zdCBjb21wYXJpc29uVGVybU5vZGUgPSB0ZXJtTk9kZS5nZXRDb21wYXJpc29uVGVybU5vZGUoKTtcblxuICBpZiAoY29tcGFyaXNvblRlcm1Ob2RlICE9PSBudWxsKSB7XG4gICAgY29tcGFyaXNvblRlcm0gPSBjb21wYXJpc29uVGVybUZyb21Db21wYXJpc29uVGVybU5vZGUoY29tcGFyaXNvblRlcm1Ob2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBjb21wYXJpc29uVGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxWYWx1ZUZyb21SZWR1Y2VOb2RlKHJlZHVjZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZUZyb21SZWR1Y2VOb2RlKHJlZHVjZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBpbml0aWFsVmFsdWUgPSB2YWx1ZTsgLy8vXG5cbiAgcmV0dXJuIGluaXRpYWxWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cHJlc3Npb25Gcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBleHByZXNzaW9uID0gbnVsbDtcblxuICByZXR1cm4gZXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9yZXRlZEZyb21Qcm9jZWR1cmVOb2RlKHByb2NlZHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgZXhwb3J0ZWQgPSBwcm9jZWR1cmVOb2RlLmlzRXhwb3J0ZWQoKTtcblxuICByZXR1cm4gZXhwb3J0ZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21UcnlJbnRlZ2VyTm9kZSh0cnlJbnRlZ2VyTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB0cnlJbnRlZ2VyTm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21TdGFydHNXaXRoTm9kZShzdGFydHNXaXRoTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YXJpYWJsZU5vZGUgPSBzdGFydHNXaXRoTm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21Ob2Rlc1F1ZXJ5Tm9kZShub2Rlc1F1ZXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YXJpYWJsZU5vZGUgPSBub2Rlc1F1ZXJ5Tm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW5ndGhPZkZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgbGVuZ3RoT2YgPSBudWxsO1xuXG4gIGNvbnN0IGxlbmd0aE9mTm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldExlbmd0aE9mTm9kZSgpO1xuXG4gIGlmIChsZW5ndGhPZk5vZGUgIT09IG51bGwpIHtcbiAgICBsZW5ndGhPZiA9IGxlbmd0aE9mRnJvbUxlbmd0aE9mTm9kZShsZW5ndGhPZk5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGxlbmd0aE9mO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGFpbnNGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IGNvbnRhaW5zID0gbnVsbDtcblxuICBjb25zdCBjb250YWluc05vZGUgPSBleHByZXNzaW9uTm9kZS5nZXRDb250YWluc05vZGUoKTtcblxuICBpZiAoY29udGFpbnNOb2RlICE9PSBudWxsKSB7XG4gICAgY29udGFpbnMgPSBjb250YWluc0Zyb21Db250YWluc05vZGUoY29udGFpbnNOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBjb250YWlucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuZHNXaXRoRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCBlbmRzV2l0aCA9IG51bGw7XG5cbiAgY29uc3QgZW5kc1dpdGhOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0RW5kc1dpdGhOb2RlKCk7XG5cbiAgaWYgKGVuZHNXaXRoTm9kZSAhPT0gbnVsbCkge1xuICAgIGVuZHNXaXRoID0gZW5kc1dpdGhGcm9tRW5kc1dpdGhOb2RlKGVuZHNXaXRoTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gZW5kc1dpdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21JbXBvcnRCaW5kaW5nTm9kZShpbXBvcnRCaW5kaW5nTm9kZSwgY29udGV4dCkge1xuICBsZXQgbGFiZWwgPSBudWxsO1xuXG4gIGNvbnN0IGxhYmVsTm9kZSA9IGltcG9ydEJpbmRpbmdOb2RlLmdldExhYmVsTm9kZSgpO1xuXG4gIGlmIChsYWJlbE5vZGUgIT09IG51bGwpIHtcbiAgICBsYWJlbCA9IGxhYmVsRnJvbUxhYmVsTm9kZShsYWJlbE5vZGUsIGNvbnRleHQpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJlZmVyZW5jZU5vZGUgPSBpbXBvcnRCaW5kaW5nTm9kZS5nZXRSZWZlcmVuY2VOb2RlKCk7XG5cbiAgICBsYWJlbCA9IGxhYmVsRnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbGFiZWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZkV4cHJlc3Npb25Gcm9tVGVybmFyeU5vZGUodGVybmFyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgaWZFeHByZXNzaW9uTm9kZSA9IHRlcm5hcnlOb2RlLmdldElmRXhwcmVzc2lvbk5vZGUoKSxcbiAgICAgICAgaWZFeHByZXNzaW9uID0gZXhwcmVzc2lvbkZyb21FeHByZXNzaW9uTm9kZShpZkV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gaWZFeHByZXNzaW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVOb2RlKHByb2NlZHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcGFyYW1ldGVyc05vZGUgPSBwcm9jZWR1cmVOb2RlLmdldFBhcmFtZXRlcnNOb2RlKCksXG4gICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzRnJvbVBhcmFtZXRlcnNOb2RlKHBhcmFtZXRlcnNOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gcGFyYW1ldGVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvSW50ZWdlckZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgdG9JbnRlZ2VyID0gbnVsbDtcblxuICBjb25zdCB0b0ludGVnZXJOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0VG9JbnRlZ2VyTm9kZSgpO1xuXG4gIGlmICh0b0ludGVnZXJOb2RlICE9PSBudWxsKSB7XG4gICAgdG9JbnRlZ2VyID0gdG9JbnRlZ2VyRnJvbVRvSW50ZWdlck5vZGUodG9JbnRlZ2VyTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdG9JbnRlZ2VyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9kZVF1ZXJ5RnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCBub2RlUXVlcnkgPSBudWxsO1xuXG4gIGNvbnN0IG5vZGVRdWVyeU5vZGUgPSBleHByZXNzaW9uTm9kZS5nZXROb2RlUXVlcnlOb2RlKCk7XG5cbiAgaWYgKG5vZGVRdWVyeU5vZGUgIT09IG51bGwpIHtcbiAgICBub2RlUXVlcnkgPSBub2RlUXVlcnlGcm9tTm9kZVF1ZXJ5Tm9kZShub2RlUXVlcnlOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBub2RlUXVlcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdHJpbmdGcm9tU3RhcnRzV2l0aE5vZGUoc3RhcnRzV2l0aE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RyaW5nID0gc3RhcnRzV2l0aE5vZGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1YnN0cmluZyA9IHN0cmluZzsgIC8vL1xuXG4gIHJldHVybiBzdWJzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZWZ0VGVybUZyb21Mb2dpY2FsVGVybU5vZGUobG9naWNhbFRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxlZnRUZXJtTm9kZSA9IGxvZ2ljYWxUZXJtTm9kZS5nZXRMZWZ0VGVybU5vZGUoKSxcbiAgICAgICAgbGVmdFRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKGxlZnRUZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGxlZnRUZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVzRnJvbVByb2NlZHVyZUNhbGxOb2RlKHByb2NlZHVyZUNhbGxOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhbHVlc05vZGUgPSBwcm9jZWR1cmVDYWxsTm9kZS5nZXRWYWx1ZXNOb2RlKCksXG4gICAgICAgIHZhbHVlcyA9IHZhbHVlc0Zyb21WYWx1ZXNOb2RlKHZhbHVlc05vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YWx1ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXR1cm5CbG9ja0Zyb21Qcm9jZWR1cmVOb2RlKHByb2NlZHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmV0dXJuQmxvY2tOb2RlID0gcHJvY2VkdXJlTm9kZS5nZXRSZXR1cm5CbG9ja05vZGUoKSxcbiAgICAgICAgcmV0dXJuQmxvY2sgPSByZXR1cm5CbG9ja0Zyb21SZXR1cm5CbG9ja05vZGUocmV0dXJuQmxvY2tOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gcmV0dXJuQmxvY2s7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZyb21UeXBlQW5kVmFyaWFibGVOb2RlKHR5cGUsIHZhcmlhYmxlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9kZXNRdWVyeUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgbm9kZXNRdWVyeSA9IG51bGw7XG5cbiAgY29uc3Qgbm9kZXNRdWVyeU5vZGUgPSBleHByZXNzaW9uTm9kZS5nZXROb2Rlc1F1ZXJ5Tm9kZSgpO1xuXG4gIGlmIChub2Rlc1F1ZXJ5Tm9kZSAhPT0gbnVsbCkge1xuICAgIG5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5RnJvbU5vZGVzUXVlcnlOb2RlKG5vZGVzUXVlcnlOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBub2Rlc1F1ZXJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJ5SW50ZWdlckZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgdHJ5SW50ZWdlciA9IG51bGw7XG5cbiAgY29uc3QgdHJ5SW50ZWdlck5vZGUgPSBleHByZXNzaW9uTm9kZS5nZXRUcnlJbnRlZ2VyTm9kZSgpO1xuXG4gIGlmICh0cnlJbnRlZ2VyTm9kZSAhPT0gbnVsbCkge1xuICAgIHRyeUludGVnZXIgPSB0cnlJbnRlZ2VyRnJvbVRyeUludGVnZXJOb2RlKHRyeUludGVnZXJOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB0cnlJbnRlZ2VyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRzV2l0aEZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgc3RhcnRzV2l0aCA9IG51bGw7XG5cbiAgY29uc3Qgc3RhcnRzV2l0aE5vZGUgPSBleHByZXNzaW9uTm9kZS5nZXRTdGFydHNXaXRoTm9kZSgpO1xuXG4gIGlmIChzdGFydHNXaXRoTm9kZSAhPT0gbnVsbCkge1xuICAgIHN0YXJ0c1dpdGggPSBzdGFydHNXaXRoRnJvbVN0YXJ0c1dpdGhOb2RlKHN0YXJ0c1dpdGhOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzdGFydHNXaXRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmlnaHRUZXJtRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmlnaHRUZXJtTm9kZSA9IGxvZ2ljYWxUZXJtTm9kZS5nZXRSaWdodFRlcm1Ob2RlKCksXG4gICAgICAgcmlnaHRUZXJtID0gdGVybUZyb21UZXJtTm9kZShyaWdodFRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gcmlnaHRUZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGcm9tUmV0dXJuU3RhdGVtZW50Tm9kZShyZXR1cm5TdGF0ZW1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhbHVlTm9kZSA9IHJldHVyblN0YXRlbWVudE5vZGUuZ2V0VmFsdWVOb2RlKCksXG4gICAgICAgIHZhbHVlID0gdmFsdWVGcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZWxzZUV4cHJlc3Npb25Gcm9tVGVybmFyeU5vZGUodGVybmFyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgZWxzZUV4cHJlc3Npb25Ob2RlID0gdGVybmFyeU5vZGUuZ2V0RWxzZUV4cHJlc3Npb25Ob2RlKCksXG4gICAgICAgIGVsc2VFeHByZXNzaW9uID0gZXhwcmVzc2lvbkZyb21FeHByZXNzaW9uTm9kZShlbHNlRXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBlbHNlRXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJldHVybkJsb2NrRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCByZXR1cm5CbG9jayA9IG51bGw7XG5cbiAgY29uc3QgcmV0dXJuQmxvY2tOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0UmV0dXJuQmxvY2tOb2RlKCk7XG5cbiAgaWYgKHJldHVybkJsb2NrTm9kZSAhPT0gbnVsbCkge1xuICAgIHJldHVybkJsb2NrID0gcmV0dXJuQmxvY2tGcm9tUmV0dXJuQmxvY2tOb2RlKHJldHVybkJsb2NrTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcmV0dXJuQmxvY2s7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRzRnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZXMgPSByZXR1cm5CbG9ja05vZGUuZ2V0U3RhdGVtZW50Tm9kZXMoKSxcbiAgICAgICAgc3RhdGVtZW50cyA9IHN0YXRlbWVudE5vZGVzLm1hcCgoc3RhdGVtZW50Tm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWdhdGVkRnJvbUNvbXBhcmlzb25UZXJtTm9kZShjb21wYXJpc29uVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbmVnYXRlZCA9IGNvbXBhcmlzb25UZXJtTm9kZS5pc05lZ2F0ZWQoKTtcblxuICByZXR1cm4gbmVnYXRlZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFub255bW91c1Byb2NlZHVyZUZyb21Tb21lTm9kZShzb21lTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBhbm9ueW1vdXNQcm9jZWR1cmVOb2RlID0gc29tZU5vZGUuZ2V0QW5vbnltb3VzUHJvY2VkdXJlTm9kZSgpLFxuICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmUgPSBhbm9ueW1vdXNQcm9jZWR1cmVGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZShhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gYW5vbnltb3VzUHJvY2VkdXJlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9uc2Vuc2ljYWxGcm9tUmV0dXJuQmxvY2tOb2RlKHJldHVybkJsb2NrTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBub25zZW5zaWNhbCA9IHJldHVybkJsb2NrTm9kZS5pc05vbnNlbnNpY2FsKCk7XG5cbiAgcmV0dXJuIG5vbnNlbnNpY2FsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzanVuY3Rpb25Gcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBkaXNqdW5jdGlvbiA9IGxvZ2ljYWxUZXJtTm9kZS5pc0Rpc2p1bmN0aW9uKCk7XG5cbiAgcmV0dXJuIGRpc2p1bmN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlRnJvbVByb2NlZHVyZUNhbGxOb2RlKHByb2NlZHVyZUNhbGxOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlZmVyZW5jZU5vZGUgPSBwcm9jZWR1cmVDYWxsTm9kZS5nZXRSZWZlcmVuY2VOb2RlKCksXG4gICAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZUZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZWZ0VGVybUZyb21Db21wenJpc29uVGVybU5vZGUoY29tcGFyaXNvblRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxlZnRUZXJtTm9kZSA9IGNvbXBhcmlzb25UZXJtTm9kZS5nZXRMZWZ0VGVybU5vZGUoKSxcbiAgICAgICAgbGVmdFRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKGxlZnRUZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGxlZnRUZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdHlwZU5vZGUgPSBhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLmdldFR5cGVOb2RlKCksXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZUZyb21JbXBvcnRCaW5kaW5nTm9kZShpbXBvcnRCaW5kaW5nTm9kZSwgY29udGV4dCkge1xuICBjb25zdCByZWZlcmVuY2VOb2RlID0gaW1wb3J0QmluZGluZ05vZGUuZ2V0UmVmZXJlbmNlTm9kZSgpLFxuICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2VGcm9tUmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gcmVmZXJlbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tTGlzdEFzc2lnbm1lbnROb2RlKGxpc3RBc3NpZ25tZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YXJpYWJsZU5vZGUgPSBsaXN0QXNzaWdubWVudE5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmluZGluZ3NGcm9tTGlzdEFzc2lnbm1lbnROb2RlKGxpc3RBc3NpZ25tZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBiaW5kaW5nc05vZGUgPSBsaXN0QXNzaWdubWVudE5vZGUuZ2V0QmluZGluZ3NOb2RlKCksXG4gICAgICAgIGJpbmRpbmdzID0gYmluZGluZ3NGcm9tQmluZGluZ3NOb2RlKGJpbmRpbmdzTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGJpbmRpbmdzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tVHlwZUFuZFZhcmlhYmxlTm9kZSh0eXBlLCB2YXJpYWJsZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgbm9kZSA9IHZhcmlhYmxlTm9kZSwgIC8vL1xuICAgIG5hbWUgPSBuYW1lRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpLFxuICAgIHZhbHVlID0gdmFsdWVGcm9tVHlwZUFuZFZhcmlhYmxlTm9kZSh0eXBlLCB2YXJpYWJsZU5vZGUsIGNvbnRleHQpLFxuICAgIHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGVTdHJpbmdGcm9tTmFtZShuYW1lKSxcbiAgICBzdHJpbmcgPSB2YXJpYWJsZVN0cmluZywgIC8vL1xuICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgIHZhcmlhYmxlID0gbmV3IFZhcmlhYmxlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgbmFtZSwgdmFsdWUpO1xuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFub255bW91c1Byb2NlZHVyZUZyb21FdmVyeU5vZGUoZXZlcnlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGFub255bW91c1Byb2NlZHVyZU5vZGUgPSBldmVyeU5vZGUuZ2V0QW5vbnltb3VzUHJvY2VkdXJlTm9kZSgpLFxuICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmUgPSBhbm9ueW1vdXNQcm9jZWR1cmVGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZShhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gYW5vbnltb3VzUHJvY2VkdXJlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdEFzc2lnbm1lbnRGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGxldCBsaXN0QXNzaWdubWVudCA9IG51bGw7XG5cbiAgY29uc3QgbGlzdEFzc2lnbm1lbnROb2RlID0gc3RhdGVtZW50Tm9kZS5nZXRMaXN0QXNzaWdubWVudE5vZGUoKTtcblxuICBpZiAobGlzdEFzc2lnbm1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgbGlzdEFzc2lnbm1lbnQgPSBsaXN0QXNzaWdubWVudEZyb21MaXN0QXNzaWdubWVudE5vZGUobGlzdEFzc2lnbm1lbnROb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBsaXN0QXNzaWdubWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZUNhbGxGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHByb2NlZHVyZUNhbGwgPSBudWxsO1xuXG4gIGNvbnN0IHByb2NlZHVyZUNhbGxOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0UHJvY2VkdXJlQ2FsbE5vZGUoKTtcblxuICBpZiAocHJvY2VkdXJlQ2FsbE5vZGUgIT09IG51bGwpIHtcbiAgICBwcm9jZWR1cmVDYWxsID0gcHJvY2VkdXJlQ2FsbEZyb21Qcm9jZWR1cmVDYWxsTm9kZShwcm9jZWR1cmVDYWxsTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJpZ2h0VGVybUZyb21Db21wenJpc29uVGVybU5vZGUoY29tcGFyaXNvblRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJpZ2h0VGVybU5vZGUgPSBjb21wYXJpc29uVGVybU5vZGUuZ2V0UmlnaHRUZXJtTm9kZSgpLFxuICAgICAgICByaWdodFRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHJpZ2h0VGVybU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiByaWdodFRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbVZhcmlhYmxlQXNzaWdubWVudHNOb2RlKHZhcmlhYmxlQXNzaWdubWVudHNOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOb2RlID0gdmFyaWFibGVBc3NpZ25tZW50c05vZGUuZ2V0VHlwZU5vZGUoKSxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW5vbnltb3VzUHJvY2VkdXJlRnJvbVJlZHVjZU5vZGUocmVkdWNlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBhbm9ueW1vdXNQcm9jZWR1cmVOb2RlID0gcmVkdWNlTm9kZS5nZXRBbm9ueW1vdXNQcm9jZWR1cmVOb2RlKCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZSA9IGFub255bW91c1Byb2NlZHVyZUZyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBhbm9ueW1vdXNQcm9jZWR1cmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21PYmplY3RBc3NpZ25tZW50Tm9kZShvYmplY3RBc3NpZ25tZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YXJpYWJsZU5vZGUgPSBvYmplY3RBc3NpZ25tZW50Tm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RBc3NpZ25tZW50RnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICBsZXQgb2JqZWN0QXNzaWdubWVudCA9IG51bGw7XG5cbiAgY29uc3Qgb2JqZWN0QXNzaWdubWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlLmdldE9iamVjdEFzc2lnbm1lbnROb2RlKCk7XG5cbiAgaWYgKG9iamVjdEFzc2lnbm1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgb2JqZWN0QXNzaWdubWVudCA9IG9iamVjdEFzc2lnbm1lbnRGcm9tT2JqZWN0QXNzaWdubWVudE5vZGUob2JqZWN0QXNzaWdubWVudE5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIG9iamVjdEFzc2lnbm1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXR1cm5TdGF0ZW1lbnRGcm9tUmV0dXJuQmxvY2tOb2RlKHJldHVybkJsb2NrTm9kZSwgY29udGV4dCkge1xuICBjb25zdCByZXR1cm5TdGF0ZW1lbnROb2RlID0gcmV0dXJuQmxvY2tOb2RlLmdldFJldHVyblN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgcmV0dXJuU3RhdGVtZW50ID0gcmV0dXJuU3RhdGVtZW50RnJvbVJldHVyblN0YXRlbWVudE5vZGUocmV0dXJuU3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHJldHVyblN0YXRlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGVhc2VOYW1lRnJvbUltcG9ydFN0YXRlbWVudE5vZGUoaW1wb3J0U3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCByZWxlYXNlTmFtZSA9IGltcG9ydFN0YXRlbWVudE5vZGUuZ2V0UmVsZWFzZU5hbWUoKTtcblxuICByZXR1cm4gcmVsZWFzZU5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUFzc2lnbm1lbnRzRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICBsZXQgdmFyaWFibGVBc3NpZ25tZW50cyA9IG51bGw7XG5cbiAgY29uc3QgdmFyaWFibGVBc3NpZ25tZW50c05vZGUgPSBzdGF0ZW1lbnROb2RlLmdldFZhcmlhYmxlQXNzaWdubWVudHNOb2RlKCk7XG5cbiAgaWYgKHZhcmlhYmxlQXNzaWdubWVudHNOb2RlICE9PSBudWxsKSB7XG4gICAgdmFyaWFibGVBc3NpZ25tZW50cyA9IHZhcmlhYmxlQXNzaWdubWVudHNGcm9tVmFyaWFibGVBc3NpZ25tZW50c05vZGUodmFyaWFibGVBc3NpZ25tZW50c05vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHZhcmlhYmxlQXNzaWdubWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHByZXNzaW9uRnJvbVZhcmlhYmxlQXNzaWdubWVudE5vZGUodmFyaWFibGVBc3NpZ25tZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBleHByZXNzaW9uTm9kZSA9IHZhcmlhYmxlQXNzaWdubWVudE5vZGUuZ2V0RXhwcmVzc2lvbk5vZGUoKSxcbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25Gcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBleHByZXNzaW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcGFyYW1ldGVyc05vZGUgPSBhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLmdldFBhcmFtZXRlcnNOb2RlKCksXG4gICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzRnJvbVBhcmFtZXRlcnNOb2RlKHBhcmFtZXRlcnNOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gcGFyYW1ldGVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltcG9ydEJpbmRpbmdzRnJvbUltcG9ydFN0YXRlbWVudE5vZGUoaW1wb3J0U3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBpbXBvcnRCaW5kaW5nTm9kZXMgPSBpbXBvcnRTdGF0ZW1lbnROb2RlLmdldEltcG9ydEJpbmRpbmdOb2RlcygpLFxuICAgICAgICBpbXBvcnRCaW5kaW5ncyA9IGltcG9ydEJpbmRpbmdzRnJvbUltcG9ydEJpbmRpbmdOb2RlcyhpbXBvcnRCaW5kaW5nTm9kZXMsIGNvbnRleHQpO1xuXG4gIHJldHVybiBpbXBvcnRCaW5kaW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJldHVybkJsb2NrRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCByZXR1cm5CbG9ja05vZGUgPSBhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLmdldFJldHVybkJsb2NrTm9kZSgpLFxuICAgICAgICByZXR1cm5CbG9jayA9IHJldHVybkJsb2NrRnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiByZXR1cm5CbG9jaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnROb2RlKHR5cGUsIHZhcmlhYmxlQXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gdmFyaWFibGVBc3NpZ25tZW50Tm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21UeXBlQW5kVmFyaWFibGVOb2RlKHR5cGUsIHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVzQXJyYXlGcm9tVmFsdWVOb2Rlcyh2YWx1ZU5vZGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhbHVlc0FycmF5ID0gdmFsdWVOb2Rlcy5tYXAoKHZhbHVlTm9kZSkgPT4geyAvLy9cbiAgICBjb25zdCB2YWx1ZSA9IHZhbHVlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9KTtcblxuICByZXR1cm4gdmFsdWVzQXJyYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaW5kaW5nc0FycmF5RnJvbUJpbmRpbmdzTm9kZShiaW5kaW5nc05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgYmluZGluZ05vZGVzID0gYmluZGluZ3NOb2RlLmdldEJpbmRpbmdOb2RlcygpLFxuICAgICAgICBiaW5kaW5nc0FycmF5ID0gYmluZGluZ05vZGVzLm1hcCgoYmluZGluZ05vZGUpID0+IHsgLy8vXG4gICAgICAgICAgY29uc3QgYmluZGluZyA9IGJpbmRpbmdGcm9tQmluZGluZ05vZGUoYmluZGluZ05vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGJpbmRpbmc7XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBiaW5kaW5nc0FycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlc0FycmF5RnJvbVJlZmVyZW5jZU5vZGVzKHJlZmVyZW5jZU5vZGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlZmVyZW5jZXNBcnJheSA9IHJlZmVyZW5jZU5vZGVzLm1hcCgocmVmZXJlbmNlTm9kZSkgPT4geyAvLy9cbiAgICBjb25zdCByZWZlcmVuY2UgPSByZWZlcmVuY2VGcm9tUmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH0pO1xuXG4gIHJldHVybiByZWZlcmVuY2VzQXJyYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzQXJyYXlGcm9tUGFyYW1ldGVyc05vZGUocGFyYW1ldGVyc05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcGFyYW1ldGVyTm9kZXMgPSBwYXJhbWV0ZXJzTm9kZS5nZXRQYXJhbWV0ZXJOb2RlcygpLFxuICAgICAgICBwYXJhbWV0ZXJzQXJyYXkgPSBwYXJhbWV0ZXJOb2Rlcy5tYXAoKHBhcmFtZXRlck5vZGUpID0+IHsgLy8vXG4gICAgICAgICAgY29uc3QgcGFyYW1ldGVyID0gcGFyYW1ldGVyRnJvbVBhcmFtZXRlck5vZGUocGFyYW1ldGVyTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gcGFyYW1ldGVyO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVyc0FycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1wb3J0QmluZGluZ3NGcm9tSW1wb3J0QmluZGluZ05vZGVzKGltcG9ydEJpbmRpbmdOb2RlcywgY29udGV4dCkge1xuICBjb25zdCBpbXBvcnRCaW5kaW5ncyA9IGltcG9ydEJpbmRpbmdOb2Rlcy5tYXAoKGltcG9ydEJpbmRpbmdOb2RlKSA9PiB7IC8vL1xuICAgICAgICAgIGNvbnN0IGltcG9ydEJpbmRpbmcgPSBpbXBvcnRCaW5kaW5nRnJvbUltcG9ydEJpbmRpbmdOb2RlKGltcG9ydEJpbmRpbmdOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBpbXBvcnRCaW5kaW5nO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gaW1wb3J0QmluZGluZ3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lZFBhcmFtZXRlcnNBcnJheUZyb21OYW1lZEJpbmRpbmdOb2RlcyhuYW1lZEJpbmRpbmdOb2RlcywgY29udGV4dCkge1xuICBjb25zdCBuYW1lZFBhcmFtZXRlcnNBcnJheSA9IG5hbWVkQmluZGluZ05vZGVzLm1hcCgobmFtZWRCaW5kaW5nTm9kZSkgPT4geyAvLy9cbiAgICBjb25zdCBuYW1lZEJpbmRpbmcgPSBuYW1lZEJpbmRpbmdGcm9tTmFtZWRCaW5kaW5nTm9kZShuYW1lZEJpbmRpbmdOb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBuYW1lZEJpbmRpbmc7XG4gIH0pO1xuXG4gIHJldHVybiBuYW1lZFBhcmFtZXRlcnNBcnJheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlQXNzaWdubWVudHNBcnJheUZyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50c05vZGUodHlwZSwgdmFyaWFibGVBc3NpZ25tZW50c05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVBc3NpZ25tZW50Tm9kZXMgPSB2YXJpYWJsZUFzc2lnbm1lbnRzTm9kZS5nZXRWYXJpYWJsZUFzc2lnbm1lbnROb2RlcygpLFxuICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkgPSB2YXJpYWJsZUFzc2lnbm1lbnROb2Rlcy5tYXAoKHZhcmlhYmxlQXNzaWdubWVudE5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCB2YXJpYWJsZUFzc2lnbm1lbnQgPSB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudE5vZGUodHlwZSwgdmFyaWFibGVBc3NpZ25tZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gdmFyaWFibGVBc3NpZ25tZW50O1xuICAgICAgICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVBc3NpZ25tZW50c0FycmF5O1xufVxuIl0sIm5hbWVzIjpbImFsaWFzRnJvbU5hbWVkQmluZGluZ05vZGUiLCJhbm9ueW1vdXNQcm9jZWR1cmVGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZSIsImFub255bW91c1Byb2NlZHVyZUZyb21FdmVyeU5vZGUiLCJhbm9ueW1vdXNQcm9jZWR1cmVGcm9tUmVkdWNlTm9kZSIsImFub255bW91c1Byb2NlZHVyZUZyb21Tb21lTm9kZSIsImFwcGx5RnJvbUFwcGx5Tm9kZSIsImFwcGx5RnJvbUV4cHJlc3Npb25Ob2RlIiwiYXJndW1lbnRUeXBlRnJvbVR5cGVOb2RlIiwiYmluZGluZ0Zyb21CaW5kaW5nTm9kZSIsImJpbmRpbmdzQXJyYXlGcm9tQmluZGluZ3NOb2RlIiwiYmluZGluZ3NGcm9tQmluZGluZ3NOb2RlIiwiYmluZGluZ3NGcm9tTGlzdEFzc2lnbm1lbnROb2RlIiwiYnJhY2tldGVkVGVybUZyb21CcmFja2V0ZWRUZXJtTm9kZSIsImJyYWNrZXRlZFRlcm1Gcm9tVGVybU5vZGUiLCJjb21wYXJpc29uVGVybUZyb21Db21wYXJpc29uVGVybU5vZGUiLCJjb21wYXJpc29uVGVybUZyb21UZXJtTm9kZSIsImNvbnRhaW5zRnJvbUNvbnRhaW5zTm9kZSIsImNvbnRhaW5zRnJvbUV4cHJlc3Npb25Ob2RlIiwiZGlzanVuY3Rpb25Gcm9tTG9naWNhbFRlcm1Ob2RlIiwiZWxpZGVkRnJvbUJpbmRpbmdOb2RlIiwiZWxzZUV4cHJlc3Npb25Gcm9tVGVybmFyeU5vZGUiLCJlbmRzV2l0aEZyb21FbmRzV2l0aE5vZGUiLCJlbmRzV2l0aEZyb21FeHByZXNzaW9uTm9kZSIsImVycm9yRnJvbUVycm9yTm9kZSIsImV2ZXJ5RnJvbUV2ZXJ5Tm9kZSIsImV2ZXJ5RnJvbUV4cHJlc3Npb25Ob2RlIiwiZXhwb3JldGVkRnJvbVByb2NlZHVyZU5vZGUiLCJleHByZXNzaW9uRnJvbUV4cHJlc3Npb25Ob2RlIiwiZXhwcmVzc2lvbkZyb21WYXJpYWJsZUFzc2lnbm1lbnROb2RlIiwiZXhwcmVzc2lvbkZyb21WYXJpYWJsZU5vZGUiLCJpZkV4cHJlc3Npb25Gcm9tVGVybmFyeU5vZGUiLCJpbXBvcnRCaW5kaW5nRnJvbUltcG9ydEJpbmRpbmdOb2RlIiwiaW1wb3J0QmluZGluZ3NGcm9tSW1wb3J0QmluZGluZ05vZGVzIiwiaW1wb3J0QmluZGluZ3NGcm9tSW1wb3J0U3RhdGVtZW50Tm9kZSIsImltcG9ydFN0YXRlbWVudEZyb21JbXBvcnRTdGF0ZW1lbnROb2RlIiwiaW5pdGlhbFZhbHVlRnJvbVJlZHVjZU5vZGUiLCJsYWJlbEZyb21JbXBvcnRCaW5kaW5nTm9kZSIsImxhYmVsRnJvbUxhYmVsTm9kZSIsImxhYmVsRnJvbVByb2NlZHVyZU5vZGUiLCJsYWJlbEZyb21SZWZlcmVuY2VOb2RlIiwibGVmdFRlcm1Gcm9tQ29tcHpyaXNvblRlcm1Ob2RlIiwibGVmdFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlIiwibGVuZ3RoT2ZGcm9tRXhwcmVzc2lvbk5vZGUiLCJsZW5ndGhPZkZyb21MZW5ndGhPZk5vZGUiLCJsaXN0QXNzaWdubWVudEZyb21MaXN0QXNzaWdubWVudE5vZGUiLCJsaXN0QXNzaWdubWVudEZyb21TdGF0ZW1lbnROb2RlIiwibG9naWNhbFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlIiwibG9naWNhbFRlcm1Gcm9tVGVybU5vZGUiLCJuYW1lRnJvbUJpbmRpbmdOb2RlIiwibmFtZUZyb21MYWJlbE5vZGUiLCJuYW1lRnJvbU5hbWVkQmluZGluZ05vZGUiLCJuYW1lRnJvbVBhcmFuZXRlck5vZGUiLCJuYW1lRnJvbVJlZmVyZW5jZU5vZGUiLCJuYW1lRnJvbVR5cGVOb2RlIiwibmFtZUZyb21WYXJpYWJsZU5vZGUiLCJuYW1lZEJpbmRpbmdGcm9tTmFtZWRCaW5kaW5nTm9kZSIsIm5hbWVkQmluZGluZ3NGcm9tTmFtZWRCaW5kaW5nc05vZGUiLCJuYW1lZEJpbmRpbmdzRnJvbU9iamVjdEFzc2lnbm1lbnROb2RlIiwibmFtZWRQYXJhbWV0ZXJzQXJyYXlGcm9tTmFtZWRCaW5kaW5nTm9kZXMiLCJuZWdhdGVkRnJvbUNvbXBhcmlzb25UZXJtTm9kZSIsIm5lZ2F0ZWRUZXJtRnJvbU5lZ2F0ZWRUZXJtTm9kZSIsIm5lZ2F0ZWRUZXJtRnJvbVRlcm1Ob2RlIiwibm9kZVF1ZXJ5RnJvbUV4cHJlc3Npb25Ob2RlIiwibm9kZVF1ZXJ5RnJvbU5vZGVRdWVyeU5vZGUiLCJub2Rlc1F1ZXJ5RnJvbUV4cHJlc3Npb25Ob2RlIiwibm9kZXNRdWVyeUZyb21Ob2Rlc1F1ZXJ5Tm9kZSIsIm5vbnNlbnNpY2FsRnJvbVJldHVybkJsb2NrTm9kZSIsIm9iamVjdEFzc2lnbm1lbnRGcm9tT2JqZWN0QXNzaWdubWVudE5vZGUiLCJvYmplY3RBc3NpZ25tZW50RnJvbVN0YXRlbWVudE5vZGUiLCJwYXJhbWV0ZXJGcm9tUGFyYW1ldGVyTm9kZSIsInBhcmFtZXRlcnNBcnJheUZyb21QYXJhbWV0ZXJzTm9kZSIsInBhcmFtZXRlcnNGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZSIsInBhcmFtZXRlcnNGcm9tUGFyYW1ldGVyc05vZGUiLCJwYXJhbWV0ZXJzRnJvbVByb2NlZHVyZU5vZGUiLCJwcmltaXRpdmVGcm9tUHJpbWl0aXZlTm9kZSIsInByaW1pdGl2ZUZyb21UZXJtTm9kZSIsInByaW1pdGl2ZUZyb21WYWx1ZU5vZGUiLCJwcm9jZWR1cmVDYWxsRnJvbUV4cHJlc3Npb25Ob2RlIiwicHJvY2VkdXJlQ2FsbEZyb21Qcm9jZWR1cmVDYWxsTm9kZSIsInByb2NlZHVyZUZyb21Qcm9jZWR1cmVOb2RlIiwicXVlcnlGcm9tTm9kZVF1ZXJ5Tm9kZSIsInF1ZXJ5RnJvbU5vZGVzUXVlcnlOb2RlIiwicmVkdWNlRnJvbUV4cHJlc3Npb25Ob2RlIiwicmVkdWNlRnJvbVJlZHVjZU5vZGUiLCJyZWZlcmVuY2VGcm9tSW1wb3J0QmluZGluZ05vZGUiLCJyZWZlcmVuY2VGcm9tUHJvY2VkdXJlQ2FsbE5vZGUiLCJyZWZlcmVuY2VGcm9tUmVmZXJlbmNlTm9kZSIsInJlZmVyZW5jZXNBcnJheUZyb21SZWZlcmVuY2VOb2RlcyIsInJlZmVyZW5jZXNGcm9tQXBwbHlOb2RlIiwicmVmZXJlbmNlc0Zyb21SZWZlcmVuY2VzTm9kZSIsInJlbGVhc2VOYW1lRnJvbUltcG9ydFN0YXRlbWVudE5vZGUiLCJyZXR1cm5CbG9ja0Zyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlIiwicmV0dXJuQmxvY2tGcm9tRXhwcmVzc2lvbk5vZGUiLCJyZXR1cm5CbG9ja0Zyb21Qcm9jZWR1cmVOb2RlIiwicmV0dXJuQmxvY2tGcm9tUmV0dXJuQmxvY2tOb2RlIiwicmV0dXJuU3RhdGVtZW50RnJvbVJldHVybkJsb2NrTm9kZSIsInJldHVyblN0YXRlbWVudEZyb21SZXR1cm5TdGF0ZW1lbnROb2RlIiwicmlnaHRUZXJtRnJvbUNvbXB6cmlzb25UZXJtTm9kZSIsInJpZ2h0VGVybUZyb21Mb2dpY2FsVGVybU5vZGUiLCJzb21lRnJvbUV4cHJlc3Npb25Ob2RlIiwic29tZUZyb21Tb21lTm9kZSIsInN0YXJ0c1dpdGhGcm9tRXhwcmVzc2lvbk5vZGUiLCJzdGFydHNXaXRoRnJvbVN0YXJ0c1dpdGhOb2RlIiwic3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRzRnJvbVJldHVybkJsb2NrTm9kZSIsInN1YnN0cmluZ0Zyb21Db250YWluc05vZGUiLCJzdWJzdHJpbmdGcm9tRW5kc1dpdGhOb2RlIiwic3Vic3RyaW5nRnJvbVN0YXJ0c1dpdGhOb2RlIiwidGVybUZyb21CcmFja2V0ZWRUZXJtTm9kZSIsInRlcm1Gcm9tRXhwcmVzc2lvbk5vZGUiLCJ0ZXJtRnJvbU5lZ2F0ZWRUZXJtTm9kZSIsInRlcm1Gcm9tVGVybU5vZGUiLCJ0ZXJtRnJvbVRlcm5hcnlOb2RlIiwidGVybmFyeUZyb21FeHByZXNzaW9uTm9kZSIsInRlcm5hcnlGcm9tVGVybmFyeU5vZGUiLCJ0b0ludGVnZXJGcm9tRXhwcmVzc2lvbk5vZGUiLCJ0b0ludGVnZXJGcm9tVG9JbnRlZ2VyTm9kZSIsInRyeUludGVnZXJGcm9tRXhwcmVzc2lvbk5vZGUiLCJ0cnlJbnRlZ2VyRnJvbVRyeUludGVnZXJOb2RlIiwidHlwZUZyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlIiwidHlwZUZyb21CaW5kaW5nTm9kZSIsInR5cGVGcm9tTG9naWNhbFRlcm1Ob2RlIiwidHlwZUZyb21OYW1lZEJpbmRpbmdOb2RlIiwidHlwZUZyb21OZWdhdGVkVGVybU5vZGUiLCJ0eXBlRnJvbVBhcmFuZXRlck5vZGUiLCJ0eXBlRnJvbVByaW1pdGl2ZU5vZGUiLCJ0eXBlRnJvbVByb2NlZHVyZU5vZGUiLCJ0eXBlRnJvbVR5cGVOb2RlIiwidHlwZUZyb21WYXJpYWJsZUFzc2lnbm1lbnRzTm9kZSIsInR5cGVGcm9tVmFyaWFibGVOb2RlIiwidmFsdWVGcm9tUHJpbWl0aXZlTm9kZSIsInZhbHVlRnJvbVJlZHVjZU5vZGUiLCJ2YWx1ZUZyb21SZXR1cm5TdGF0ZW1lbnROb2RlIiwidmFsdWVGcm9tVHlwZUFuZFZhcmlhYmxlTm9kZSIsInZhbHVlRnJvbVZhbHVlTm9kZSIsInZhbHVlc0FycmF5RnJvbVZhbHVlTm9kZXMiLCJ2YWx1ZXNGcm9tQXBwbHlOb2RlIiwidmFsdWVzRnJvbVByb2NlZHVyZUNhbGxOb2RlIiwidmFsdWVzRnJvbVZhbHVlc05vZGUiLCJ2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudE5vZGUiLCJ2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXlGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNOb2RlIiwidmFyaWFibGVBc3NpZ25tZW50c0Zyb21TdGF0ZW1lbnROb2RlIiwidmFyaWFibGVBc3NpZ25tZW50c0Zyb21WYXJpYWJsZUFzc2lnbm1lbnRzTm9kZSIsInZhcmlhYmxlRnJvbUFwcGx5Tm9kZSIsInZhcmlhYmxlRnJvbUNvbnRhaW5zTm9kZSIsInZhcmlhYmxlRnJvbUVuZHNXaXRoTm9kZSIsInZhcmlhYmxlRnJvbUV2ZXJ5Tm9kZSIsInZhcmlhYmxlRnJvbUxlbmd0aE9mTm9kZSIsInZhcmlhYmxlRnJvbUxpc3RBc3NpZ25tZW50Tm9kZSIsInZhcmlhYmxlRnJvbU5vZGVRdWVyeU5vZGUiLCJ2YXJpYWJsZUZyb21Ob2Rlc1F1ZXJ5Tm9kZSIsInZhcmlhYmxlRnJvbU9iamVjdEFzc2lnbm1lbnROb2RlIiwidmFyaWFibGVGcm9tUmVkdWNlTm9kZSIsInZhcmlhYmxlRnJvbVNvbWVOb2RlIiwidmFyaWFibGVGcm9tU3RhcnRzV2l0aE5vZGUiLCJ2YXJpYWJsZUZyb21UZXJtTm9kZSIsInZhcmlhYmxlRnJvbVRvSW50ZWdlck5vZGUiLCJ2YXJpYWJsZUZyb21UcnlJbnRlZ2VyTm9kZSIsInZhcmlhYmxlRnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnROb2RlIiwidmFyaWFibGVGcm9tVHlwZUFuZFZhcmlhYmxlTm9kZSIsInZhcmlhYmxlRnJvbVZhbHVlTm9kZSIsInZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSIsInNvbWVOb2RlIiwiY29udGV4dCIsIlNvbWUiLCJlbGVtZW50cyIsIm5vZGUiLCJ2YXJpYWJsZSIsImFub255bW91c1Byb2NlZHVyZSIsInNvbWVTdHJpbmciLCJzb21lU3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlIiwic3RyaW5nIiwiYnJlYWtQb2ludCIsInNvbWUiLCJ0ZXJtTm9kZSIsIlRlcm0iLCJwcmltaXRpdmUiLCJuZWdhdGVkVGVybSIsImxvZ2ljYWxUZXJtIiwiYnJhY2tldGVkVGVybSIsImNvbXBhcmlzb25UZXJtIiwicHJvcGVydGllcyIsInRlcm1TdHJpbmciLCJ0ZXJtU3RyaW5nRnJvbVByb3BlcnRpZXMiLCJ0ZXJtIiwidHlwZU5vZGUiLCJUeXBlIiwibm9kZUFzU3RyaW5nIiwibmFtZSIsImFyZ3VtZW50VHlwZSIsInR5cGUiLCJBcHBseSIsInZhbHVlcyIsInJlZmVyZW5jZXMiLCJhcHBseVN0cmluZyIsImFwcGx5U3RyaW5nRnJvbVZhcmlhYmxlQW5kVmFsdWVzIiwiYXBwbHkiLCJ2YWx1ZU5vZGUiLCJWYWx1ZSIsInZhbHVlU3RyaW5nIiwidmFsdWVTdHJpbmdGcm9tUHJvcGVydGllcyIsInZhbHVlIiwiZXJyb3JOb2RlIiwiRXJyb3IiLCJlcnJvciIsImV2ZXJ5Tm9kZSIsIkV2ZXJ5IiwiZXZlcnlTdHJpbmciLCJldmVyeVN0cmluZ0Zyb21WYXJpYWJsZUFuZEFub255bW91c1Byb2NlZHVyZSIsImV2ZXJ5IiwibGFiZWxOb2RlIiwiTGFiZWwiLCJsYWJlbCIsInZhbHVlc05vZGUiLCJWYWx1ZXMiLCJ2YWx1ZU5vZGVzIiwiZ2V0VmFsdWVOb2RlcyIsInZhbHVlc0FycmF5IiwiYXJyYXkiLCJyZWR1Y2VOb2RlIiwiUmVkdWNlIiwiaW5pdGlhbFZhbHVlIiwicmVkdWNlU3RyaW5nIiwicmVkdWNlU3RyaW5nRnJvbVZhcmlhYmxlSW5pdGlhbEV4cHJlc3Npb25BbmRBbm9ueW1vdXNQcm9jZWR1cmUiLCJyZWR1Y2UiLCJiaW5kaW5nTm9kZSIsIkJpbmRpbmciLCJlbGlkZWQiLCJiaW5kaW5nIiwidGVybmFyeU5vZGUiLCJUZXJuYXJ5IiwiaWZFeHByZXNzaW9uIiwiZWxzZUV4cHJlc3Npb24iLCJ0ZXJuYXJ5U3RyaW5nIiwidGVybmFyeVN0cmluZ0Zyb21UZXJtIiwidGVybmFyeSIsInJlZmVyZW5jZU5vZGUiLCJjb250YWluc05vZGUiLCJDb250YWlucyIsInN1YnN0cmluZyIsImNvbnRhaW5zIiwiZW5kc1dpdGhOb2RlIiwiRW5kc1dpdGgiLCJlbmRzV2l0aCIsInZhcmlhYmxlTm9kZSIsIlZhcmlhYmxlIiwiZXhwcmVzc2lvbiIsImJpbmRpbmdzTm9kZSIsIkJpbmRpbmdzIiwiYmluZGluZ3NBcnJheSIsImJpbmRpbmdzIiwibGVuZ3RoT2ZOb2RlIiwiTGVuZ3RoT2YiLCJsZW5ndGhPZiIsInN0YXRlbWVudE5vZGUiLCJTdGF0ZW1lbnQiLCJsaXN0QXNzaWdubWVudCIsIm9iamVjdEFzc2lnbm1lbnQiLCJ2YXJpYWJsZUFzc2lnbm1lbnRzIiwic3RhdGVtZW50IiwicHJvY2VkdXJlTm9kZSIsIlByb2NlZHVyZSIsImV4cG9ydGVkIiwicGFyYW1ldGVycyIsInJldHVybkJsb2NrIiwicHJvY2VkdXJlU3RyaW5nIiwicHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVMYWJlbEV4cG9ydGVkUGFyYW1ldGVyc0FuZFJldHVybkJsb2NrIiwicHJvY2VkdXJlIiwiUmVmZXJlbmNlIiwicmVmZXJlbmNlIiwicGFyYW1ldGVyTm9kZSIsIlBhcmFtZXRlciIsInBhcmFtZXRlciIsIm5vZGVRdWVyeU5vZGUiLCJOb2RlUXVlcnkiLCJxdWVyeSIsIm5vZGVRdWVyeSIsInByaW1pdGl2ZU5vZGUiLCJQcmltaXRpdmUiLCJ0b0ludGVnZXJOb2RlIiwiVG9JbnRlZ2VyIiwidG9JbnRlZ2VyIiwic3RhcnRzV2l0aE5vZGUiLCJTdGFydHNXaXRoIiwic3RhcnRzV2l0aCIsIm5vZGVzUXVlcnlOb2RlIiwiTm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJwYXJhbWV0ZXJzTm9kZSIsIlBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzQXJyYXkiLCJleHByZXNzaW9uTm9kZSIsIkV4cHJlc3Npb24iLCJ0cnlJbnRlZ2VyIiwicHJvY2VkdXJlQ2FsbCIsImV4cHJlc3Npb25TdHJpbmciLCJleHByZXNzaW9uU3RyaW5nRnJvbVByb3BlcnRpZXMiLCJ0cnlJbnRlZ2VyTm9kZSIsIlRyeUludGVnZXIiLCJyZWZlcmVuY2VzTm9kZSIsIlJlZmVyZW5jZXMiLCJyZWZlcmVuY2VOb2RlcyIsImdldFJlZmVyZW5jZU5vZGVzIiwicmVmZXJlbmNlc0FycmF5IiwicmVmZXJlbmNlc1N0cmluZyIsInJlZmVyZW5jZXNTdHJpbmdGcm9tUmVmZXJlbmNlc0FycmF5IiwicmV0dXJuQmxvY2tOb2RlIiwiUmV0dXJuQmxvY2siLCJzdGF0ZW1lbnRzIiwibm9uc2Vuc2ljYWwiLCJyZXR1cm5TdGF0ZW1lbnQiLCJyZXR1cm5CbG9ja1N0cmluZyIsInJldHVybkJsb2NrU3RyaW5nRnJvbVJldHVyblN0YXRlbWVudE5vZGUiLCJuZWdhdGVkVGVybU5vZGUiLCJOZWdhdGVkVGVybSIsImdldFRlcm1Ob2RlIiwibG9naWNhbFRlcm1Ob2RlIiwiTG9naWNhbFRlcm0iLCJkaXNqdW5jdGlvbiIsImxlZnRUZXJtIiwicmlnaHRUZXJtIiwibmFtZWRCaW5kaW5nTm9kZSIsIk5hbWVkQmluZGluZyIsImFsaWFzIiwibmFtZWRCaW5kaW5nIiwibmFtZWRCaW5kaW5nc05vZGUiLCJOYW1lZEJpbmRpbmdzIiwibmFtZWRCaW5kaW5nTm9kZXMiLCJnZXROYW1lZEJpbmRpbmdOb2RlcyIsIm5hbWVkQmluZGluZ3NBcnJheSIsIm5hbWVkQmluZGluZ3MiLCJicmFja2V0ZWRUZXJtTm9kZSIsIkJyYWNrZXRlZFRlcm0iLCJwcm9jZWR1cmVDYWxsTm9kZSIsIlByb2NlZHVyZUNhbGwiLCJpbXBvcnRCaW5kaW5nTm9kZSIsIkltcG9ydEJpbmRpbmciLCJpbXBvcnRCaW5kaW5nIiwiY29tcGFyaXNvblRlcm1Ob2RlIiwiQ29tcGFyaXNvblRlcm0iLCJuZWdhdGVkIiwibGlzdEFzc2lnbm1lbnROb2RlIiwiTGlzdEFzc2lnbm1lbnQiLCJvYmplY3RBc3NpZ25tZW50Tm9kZSIsImdldE5hbWVkQmluZGluZ3NOb2RlIiwiaW1wb3J0U3RhdGVtZW50Tm9kZSIsIkltcG9ydFN0YXRlbWVudCIsInJlbGVhc2VOYW1lIiwiaW1wb3J0QmluZGluZ3MiLCJpbXBvcnRTdGF0ZW1lbnQiLCJyZXR1cm5TdGF0ZW1lbnROb2RlIiwiUmV0dXJuU3RhdGVtZW50IiwiT2JqZWN0QXNzaWdubWVudCIsImFub255bW91c1Byb2NlZHVyZU5vZGUiLCJBbm9ueW1vdXNQcm9jZWR1cmUiLCJub255bW91c1Byb2NlZHVyZVN0cmluZyIsImFub255bW91c1Byb2NlZHVyZVN0cmluZ0Zyb21UeXBlUGFyYW1ldGVyc0FuZFJldHVybkJsb2NrIiwidmFyaWFibGVBc3NpZ25tZW50c05vZGUiLCJWYXJpYWJsZUFzc2lnbm1lbnRzIiwidmFyaWFibGVBc3NpZ25tZW50c0FycmF5IiwidmFyaWFibGVBc3NpZ25tZW50U3RyaW5nIiwidmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkiLCJ2YXJpYWJsZUFzc2lnbm1lbnROb2RlIiwiVmFyaWFibGVBc3NpZ25tZW50IiwidmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZSIsImFzc2lnbm1lbnQiLCJnZXROYW1lIiwiYWxsTm9kZSIsImdldFZhbHVlc05vZGUiLCJnZXRWYWx1ZU5vZGUiLCJnZXRUeXBlTm9kZSIsImdldFZhcmlhYmxlTm9kZSIsImdldFByaW1pdGl2ZU5vZGUiLCJpc0VsaWRlZCIsInR5cGVOYW1lIiwiZ2V0VHlwZU5hbWUiLCJmcm9tVHlwZU5hbWUiLCJnZXRTdHJpbmciLCJRdWVyeSIsImZyb21FeHByZXNzaW9uU3RyaW5nIiwiZ2V0VmFsdWUiLCJnZXRMYWJlbE5vZGUiLCJnZXRTb21lTm9kZSIsImdldFJlZmVyZW5jZXNOb2RlIiwiZ2V0TmVnYXRlZFRlcm1Ob2RlIiwiZ2V0TG9naWNhbFRlcm1Ob2RlIiwiZ2V0RXZlcnlOb2RlIiwiYXBwbHlOb2RlIiwiZ2V0QXBwbHlOb2RlIiwiQk9PTEVBTl9UWVBFX05BTUUiLCJhcmd1bWVudFR5cGVOYW1lIiwiZ2V0QXJndW1lbnRUeXBlTmFtZSIsImdldFJlZHVjZU5vZGUiLCJnZXRBbGlhcyIsImdldFRlcm5hcnlOb2RlIiwiZ2V0QnJhY2tldGVkVGVybU5vZGUiLCJ0ZXJtTk9kZSIsImdldENvbXBhcmlzb25UZXJtTm9kZSIsImlzRXhwb3J0ZWQiLCJnZXRMZW5ndGhPZk5vZGUiLCJnZXRDb250YWluc05vZGUiLCJnZXRFbmRzV2l0aE5vZGUiLCJnZXRSZWZlcmVuY2VOb2RlIiwiaWZFeHByZXNzaW9uTm9kZSIsImdldElmRXhwcmVzc2lvbk5vZGUiLCJnZXRQYXJhbWV0ZXJzTm9kZSIsImdldFRvSW50ZWdlck5vZGUiLCJnZXROb2RlUXVlcnlOb2RlIiwibGVmdFRlcm1Ob2RlIiwiZ2V0TGVmdFRlcm1Ob2RlIiwiZ2V0UmV0dXJuQmxvY2tOb2RlIiwiZ2V0Tm9kZXNRdWVyeU5vZGUiLCJnZXRUcnlJbnRlZ2VyTm9kZSIsImdldFN0YXJ0c1dpdGhOb2RlIiwicmlnaHRUZXJtTm9kZSIsImdldFJpZ2h0VGVybU5vZGUiLCJlbHNlRXhwcmVzc2lvbk5vZGUiLCJnZXRFbHNlRXhwcmVzc2lvbk5vZGUiLCJzdGF0ZW1lbnROb2RlcyIsImdldFN0YXRlbWVudE5vZGVzIiwibWFwIiwiaXNOZWdhdGVkIiwiZ2V0QW5vbnltb3VzUHJvY2VkdXJlTm9kZSIsImlzTm9uc2Vuc2ljYWwiLCJpc0Rpc2p1bmN0aW9uIiwiZ2V0QmluZGluZ3NOb2RlIiwidmFyaWFibGVTdHJpbmciLCJ2YXJpYWJsZVN0cmluZ0Zyb21OYW1lIiwiZ2V0TGlzdEFzc2lnbm1lbnROb2RlIiwiZ2V0UHJvY2VkdXJlQ2FsbE5vZGUiLCJnZXRPYmplY3RBc3NpZ25tZW50Tm9kZSIsImdldFJldHVyblN0YXRlbWVudE5vZGUiLCJnZXRSZWxlYXNlTmFtZSIsImdldFZhcmlhYmxlQXNzaWdubWVudHNOb2RlIiwiZ2V0RXhwcmVzc2lvbk5vZGUiLCJpbXBvcnRCaW5kaW5nTm9kZXMiLCJnZXRJbXBvcnRCaW5kaW5nTm9kZXMiLCJiaW5kaW5nTm9kZXMiLCJnZXRCaW5kaW5nTm9kZXMiLCJwYXJhbWV0ZXJOb2RlcyIsImdldFBhcmFtZXRlck5vZGVzIiwibmFtZWRQYXJhbWV0ZXJzQXJyYXkiLCJ2YXJpYWJsZUFzc2lnbm1lbnROb2RlcyIsImdldFZhcmlhYmxlQXNzaWdubWVudE5vZGVzIiwidmFyaWFibGVBc3NpZ25tZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFtcENnQkE7ZUFBQUE7O1FBaGJBQztlQUFBQTs7UUFtekJBQztlQUFBQTs7UUE2Q0FDO2VBQUFBOztRQXZIQUM7ZUFBQUE7O1FBMTNDQUM7ZUFBQUE7O1FBdzlCQUM7ZUFBQUE7O1FBK0JBQztlQUFBQTs7UUF0NEJBQztlQUFBQTs7UUFnK0NBQztlQUFBQTs7UUFuNENBQztlQUFBQTs7UUFrdUNBQztlQUFBQTs7UUFwNUJBQztlQUFBQTs7UUE4akJBQztlQUFBQTs7UUFyaEJBQztlQUFBQTs7UUEraUJBQztlQUFBQTs7UUFwOUJBQztlQUFBQTs7UUFvaENBQztlQUFBQTs7UUFtTkFDO2VBQUFBOztRQS9rQkFDO2VBQUFBOztRQThoQkFDO2VBQUFBOztRQXZxQ0FDO2VBQUFBOztRQWloQ0FDO2VBQUFBOztRQTNwQ0FDO2VBQUFBOztRQWFBQztlQUFBQTs7UUEwNUJBQztlQUFBQTs7UUFpTUFDO2VBQUFBOztRQTV3QkFDO2VBQUFBOztRQW1xQ0FDO2VBQUFBOztRQTdaQUM7ZUFBQUE7O1FBcUZBQztlQUFBQTs7UUF0cUJBQztlQUFBQTs7UUEyakNBQztlQUFBQTs7UUEvREFDO2VBQUFBOztRQTE4QkFDO2VBQUFBOztRQXdoQkFDO2VBQUFBOztRQTRFQUM7ZUFBQUE7O1FBMW9DQUM7ZUFBQUE7O1FBbzBCQUM7ZUFBQUE7O1FBcHZCQUM7ZUFBQUE7O1FBa3dDQUM7ZUFBQUE7O1FBM0lBQztlQUFBQTs7UUFqR0FDO2VBQUFBOztRQTM4QkFDO2VBQUFBOztRQXFYQUM7ZUFBQUE7O1FBeTNCQUM7ZUFBQUE7O1FBNzlCQUM7ZUFBQUE7O1FBMGNBQztlQUFBQTs7UUFsTkFDO2VBQUFBOztRQWhDQUM7ZUFBQUE7O1FBdVdBQztlQUFBQTs7UUF4T0FDO2VBQUFBOztRQU1BQztlQUFBQTs7UUEzSUFDO2VBQUFBOztRQTJFQUM7ZUFBQUE7O1FBL1FBQztlQUFBQTs7UUFnQkFDO2VBQUFBOztRQXFGQUM7ZUFBQUE7O1FBMGhDQUM7ZUFBQUE7O1FBdlFBQztlQUFBQTs7UUFuNUJBQztlQUFBQTs7UUEyY0FDO2VBQUFBOztRQTBVQUM7ZUFBQUE7O1FBOThCQUM7ZUFBQUE7O1FBNC9CQUM7ZUFBQUE7O1FBajhCQUM7ZUFBQUE7O1FBOGhDQUM7ZUFBQUE7O1FBL3ZCQUM7ZUFBQUE7O1FBNjNCQUM7ZUFBQUE7O1FBdHVDQUM7ZUFBQUE7O1FBNjBDQUM7ZUFBQUE7O1FBM0RBQztlQUFBQTs7UUF6ckNBQztlQUFBQTs7UUFpM0JBQztlQUFBQTs7UUE1NkJBQztlQUFBQTs7UUE4ZUFDO2VBQUFBOztRQWdFQUM7ZUFBQUE7O1FBa25CQUM7ZUFBQUE7O1FBaDdCQUM7ZUFBQUE7O1FBNVNBQztlQUFBQTs7UUE2bkJBQztlQUFBQTs7UUE0RUFDO2VBQUFBOztRQXNGQUM7ZUFBQUE7O1FBMTdCQUM7ZUFBQUE7O1FBazBDQUM7ZUFBQUE7O1FBckJBQztlQUFBQTs7UUFsb0NBQztlQUFBQTs7UUFpMUNBQztlQUFBQTs7UUF2ckJBQztlQUFBQTs7UUF0ZUFDO2VBQUFBOztRQW1sQ0FDO2VBQUFBOztRQXVDQUM7ZUFBQUE7O1FBNU5BQztlQUFBQTs7UUF0RUFDO2VBQUFBOztRQXYwQkFDO2VBQUFBOztRQTJqQ0FDO2VBQUFBOztRQXY1QkFDO2VBQUFBOztRQSsyQkFDO2VBQUFBOztRQTNKQUM7ZUFBQUE7O1FBL2FBQztlQUFBQTs7UUFwOUJBQztlQUFBQTs7UUF1M0NBQztlQUFBQTs7UUF4K0JBQztlQUFBQTs7UUF6R0FDO2VBQUFBOztRQThuQ0FDO2VBQUFBOztRQXRUQUM7ZUFBQUE7O1FBT0FDO2VBQUFBOztRQXdNQUM7ZUFBQUE7O1FBckpBQztlQUFBQTs7UUFoT0FDO2VBQUFBOztRQW1HQUM7ZUFBQUE7O1FBM2hDQUM7ZUFBQUE7O1FBMHdCQUM7ZUFBQUE7O1FBK1dBQztlQUFBQTs7UUE3OEJBQztlQUFBQTs7UUF5bUNBQztlQUFBQTs7UUFwNkJBQztlQUFBQTs7UUEwK0JBQztlQUFBQTs7UUEvM0JBQztlQUFBQTs7UUEwK0JBQztlQUFBQTs7UUEvcUJBQztlQUFBQTs7UUF3UEFDO2VBQUFBOztRQWtFQUM7ZUFBQUE7O1FBNURBQztlQUFBQTs7UUE1S0FDO2VBQUFBOztRQW1CQUM7ZUFBQUE7O1FBbkRBQztlQUFBQTs7UUE3eUJBQztlQUFBQTs7UUF5L0NBQztlQUFBQTs7UUF6dEJBQztlQUFBQTs7UUErR0FDO2VBQUFBOztRQXhLQUM7ZUFBQUE7O1FBdW5CQUM7ZUFBQUE7O1FBakRBQztlQUFBQTs7UUE3d0NBQztlQUFBQTs7UUFzakRBQztlQUFBQTs7UUEzM0JBQztlQUFBQTs7UUFva0JBQztlQUFBQTs7UUFoc0NBQztlQUFBQTs7UUFtbUJBQztlQUFBQTs7UUFrOUJBQztlQUFBQTs7UUE3R0FDO2VBQUFBOztRQXQzQkFDO2VBQUFBOztRQXFIQUM7ZUFBQUE7O1FBcVBBQztlQUFBQTs7UUFPQUM7ZUFBQUE7O1FBbE9BQztlQUFBQTs7UUFvTkFDO2VBQUFBOztRQW9hQUM7ZUFBQUE7O1FBbFdBQztlQUFBQTs7UUEwRkFDO2VBQUFBOztRQXVWQUM7ZUFBQUE7O1FBdm9CQUM7ZUFBQUE7O1FBekhBQztlQUFBQTs7UUFrYUFDO2VBQUFBOztRQTNaQUM7ZUFBQUE7O1FBdVdBQztlQUFBQTs7UUE2Q0FDO2VBQUFBOztRQTZhQUM7ZUFBQUE7O1FBeklBQztlQUFBQTs7UUE5bEJBQztlQUFBQTs7UUEzcEJBQztlQUFBQTs7OzRCQTlRTTtpRUFFRDsyQkFFYTt3QkFlNkM7Ozs7OztBQUV4RSxTQUFTN0QsaUJBQWlCOEQsUUFBUSxFQUFFQyxPQUFPO0lBQ2hELE1BQU0sRUFBRUMsSUFBSSxFQUFFLEdBQUdDLGlCQUFRLEVBQ25CQyxPQUFPSixVQUNQSyxXQUFXZCxxQkFBcUJTLFVBQVVDLFVBQzFDSyxxQkFBcUJwSywrQkFBK0I4SixVQUFVQyxVQUM5RE0sYUFBYUMsSUFBQUEsbURBQTJDLEVBQUNILFVBQVVDLHFCQUNuRUcsU0FBU0YsWUFDVEcsYUFBYTtJQUVuQlQsVUFBVTtJQUVWLE1BQU1VLE9BQU8sSUFBSVQsS0FBS0QsU0FBU1EsUUFBUUwsTUFBTU0sWUFBWUwsVUFBVUM7SUFFbkUsT0FBT0s7QUFDVDtBQUVPLFNBQVM5RCxpQkFBaUIrRCxRQUFRLEVBQUVYLE9BQU87SUFDaEQsTUFBTSxFQUFFWSxJQUFJLEVBQUUsR0FBR1YsaUJBQVEsRUFDdkJDLE9BQU9RLFVBQ1BQLFdBQVdaLHFCQUFxQm1CLFVBQVVYLFVBQzFDYSxZQUFZckcsc0JBQXNCbUcsVUFBVVgsVUFDNUNjLGNBQWNwSCx3QkFBd0JpSCxVQUFVWCxVQUNoRGUsY0FBY25JLHdCQUF3QitILFVBQVVYLFVBQ2hEZ0IsZ0JBQWdCdEssMEJBQTBCaUssVUFBVVgsVUFDcERpQixpQkFBaUJySywyQkFBMkIrSixVQUFVWCxVQUN0RGtCLGFBQWE7UUFDWGQ7UUFDQVM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7S0FDRCxFQUNERSxhQUFhQyxJQUFBQSxnQ0FBd0IsRUFBQ0YsWUFBWWxCLFVBQ2xEUSxTQUFTVyxZQUNUVixhQUFhO0lBRWZULFVBQVU7SUFFVixNQUFNcUIsT0FBTyxJQUFJVCxLQUFLWixTQUFTUSxRQUFRTCxNQUFNTSxZQUFZTCxVQUFVUyxXQUFXQyxhQUFhQyxhQUFhQyxlQUFlQztJQUV2SCxPQUFPSTtBQUNUO0FBRU8sU0FBU3pELGlCQUFpQjBELFFBQVEsRUFBRXRCLE9BQU87SUFDaEQsTUFBTSxFQUFFdUIsSUFBSSxFQUFFLEdBQUdyQixpQkFBUSxFQUNuQkMsT0FBT21CLFVBQ1BkLFNBQVNSLFFBQVF3QixZQUFZLENBQUNyQixPQUM5QnNCLE9BQU92SSxpQkFBaUJvSSxVQUFVdEIsVUFDbEMwQixlQUFldEwseUJBQXlCa0wsVUFBVXRCLFVBQ2xEUyxhQUFhO0lBRW5CVCxVQUFVO0lBRVYsTUFBTTJCLE9BQU8sSUFBSUosS0FBS3ZCLFNBQVNRLFFBQVFMLE1BQU1NLFlBQVlnQixNQUFNQztJQUUvRCxPQUFPQztBQUNUO0FBRU8sU0FBU3pMLG1CQUFtQjZKLFFBQVEsRUFBRUMsT0FBTztJQUNsRCxNQUFNLEVBQUU0QixLQUFLLEVBQUUsR0FBRzFCLGlCQUFRLEVBQ3BCQyxPQUFPSixVQUNQOEIsU0FBU3hELG9CQUFvQjBCLFVBQVVDLFVBQ3ZDSSxXQUFXeEIsc0JBQXNCbUIsVUFBVUMsVUFDM0M4QixhQUFhekcsd0JBQXdCMEUsVUFBVUMsVUFDL0MrQixjQUFjQyxJQUFBQSx3Q0FBZ0MsRUFBQzVCLFVBQVV5QixTQUN6RHJCLFNBQVN1QixhQUNUdEIsYUFBYTtJQUVuQlQsVUFBVTtJQUVWLE1BQU1pQyxRQUFRLElBQUlMLE1BQU01QixTQUFTUSxRQUFRTCxNQUFNTSxZQUFZb0IsUUFBUXpCLFVBQVUwQjtJQUU3RSxPQUFPRztBQUNUO0FBRU8sU0FBUzlELG1CQUFtQitELFNBQVMsRUFBRWxDLE9BQU87SUFDbkQsTUFBTSxFQUFFbUMsS0FBSyxFQUFFLEdBQUdqQyxpQkFBUSxFQUNwQkMsT0FBTytCLFdBQ1A5QixXQUFXUCxzQkFBc0JxQyxXQUFXbEMsVUFDNUNhLFlBQVlwRyx1QkFBdUJ5SCxXQUFXbEMsVUFDOUNrQixhQUFhO1FBQ1hkO1FBQ0FTO0tBQ0QsRUFDRHVCLGNBQWNDLElBQUFBLGlDQUF5QixFQUFDbkIsWUFBWWxCLFVBQ3BEUSxTQUFTNEIsYUFDVDNCLGFBQWE7SUFFbkJULFVBQVU7SUFFVixNQUFNc0MsUUFBUSxJQUFJSCxNQUFNbkMsU0FBU1EsUUFBUUwsTUFBTU0sWUFBWUwsVUFBVVM7SUFFckUsT0FBT3lCO0FBQ1Q7QUFFTyxTQUFTbEwsbUJBQW1CbUwsU0FBUyxFQUFFdkMsT0FBTztJQUNuRCxNQUFNLEVBQUV3QyxLQUFLLEVBQUUsR0FBR3RDLGlCQUFRLEVBQ3BCQyxPQUFPb0MsV0FDUC9CLFNBQVNSLFFBQVF3QixZQUFZLENBQUNyQixPQUM5Qk0sYUFBYTtJQUVuQlQsVUFBVTtJQUVWLE1BQU15QyxRQUFRLElBQUlELE1BQU14QyxTQUFTUSxRQUFRTCxNQUFNTTtJQUUvQyxPQUFPZ0M7QUFDVDtBQUVPLFNBQVNwTCxtQkFBbUJxTCxTQUFTLEVBQUUxQyxPQUFPO0lBQ25ELE1BQU0sRUFBRTJDLEtBQUssRUFBRSxHQUFHekMsaUJBQVEsRUFDcEJDLE9BQU91QyxXQUNQdEMsV0FBV3JCLHNCQUFzQjJELFdBQVcxQyxVQUM1Q0sscUJBQXFCdEssZ0NBQWdDMk0sV0FBVzFDLFVBQ2hFNEMsY0FBY0MsSUFBQUEsb0RBQTRDLEVBQUN6QyxVQUFVQyxxQkFDckVHLFNBQVNvQyxhQUNUbkMsYUFBYTtJQUVuQlQsVUFBVTtJQUVWLE1BQU04QyxRQUFRLElBQUlILE1BQU0zQyxTQUFTUSxRQUFRTCxNQUFNTSxZQUFZTCxVQUFVQztJQUVyRSxPQUFPeUM7QUFDVDtBQUVPLFNBQVM1SyxtQkFBbUI2SyxTQUFTLEVBQUUvQyxPQUFPO0lBQ25ELE1BQU0sRUFBRWdELEtBQUssRUFBRSxHQUFHOUMsaUJBQVEsRUFDcEJDLE9BQU80QyxXQUNQdkMsU0FBU1IsUUFBUXdCLFlBQVksQ0FBQ3JCLE9BQzlCTSxhQUFhLE1BQ2JnQixPQUFPM0ksa0JBQWtCaUssV0FBVy9DO0lBRTFDQSxVQUFVO0lBRVYsTUFBTWlELFFBQVEsSUFBSUQsTUFBTWhELFNBQVNRLFFBQVFMLE1BQU1NLFlBQVlnQjtJQUUzRCxPQUFPd0I7QUFDVDtBQUVPLFNBQVMxRSxxQkFBcUIyRSxVQUFVLEVBQUVsRCxPQUFPO0lBQ3RELE1BQU0sRUFBRW1ELE1BQU0sRUFBRSxHQUFHakQsaUJBQVEsRUFDckJDLE9BQU8rQyxZQUNQMUMsU0FBU1IsUUFBUXdCLFlBQVksQ0FBQ3JCLE9BQzlCaUQsYUFBYUYsV0FBV0csYUFBYSxJQUNyQ0MsY0FBY2xGLDBCQUEwQmdGLFlBQVlwRCxVQUNwRHVELFFBQVFELGFBQ1I3QyxhQUFhO0lBRW5CVCxVQUFVO0lBRVYsTUFBTTZCLFNBQVMsSUFBSXNCLE9BQU9uRCxTQUFTUSxRQUFRTCxNQUFNTSxZQUFZOEM7SUFFN0QsT0FBTzFCO0FBQ1Q7QUFFTyxTQUFTN0cscUJBQXFCd0ksVUFBVSxFQUFFeEQsT0FBTztJQUN0RCxNQUFNLEVBQUV5RCxNQUFNLEVBQUUsR0FBR3ZELGlCQUFRLEVBQ3JCQyxPQUFPcUQsWUFDUHBELFdBQVdmLHVCQUF1Qm1FLFlBQVl4RCxVQUM5QzBELGVBQWUxTCwyQkFBMkJ3TCxZQUFZeEQsVUFDdERLLHFCQUFxQnJLLGlDQUFpQ3dOLFlBQVl4RCxVQUNsRTJELGVBQWVDLElBQUFBLHNFQUE4RCxFQUFDeEQsVUFBVXNELGNBQWNyRCxxQkFDdEdHLFNBQVNtRCxjQUNUbEQsYUFBYTtJQUVuQlQsVUFBVTtJQUVWLE1BQU02RCxTQUFTLElBQUlKLE9BQU96RCxTQUFTUSxRQUFRTCxNQUFNTSxZQUFZTCxVQUFVc0QsY0FBY3JEO0lBRXJGLE9BQU93RDtBQUNUO0FBRU8sU0FBU3hOLHVCQUF1QnlOLFdBQVcsRUFBRTlELE9BQU87SUFDekQsTUFBTSxFQUFFK0QsT0FBTyxFQUFFLEdBQUc3RCxpQkFBUSxFQUN0QkMsT0FBTzJELGFBQ1B0RCxTQUFTUixRQUFRd0IsWUFBWSxDQUFDckIsT0FDOUJNLGFBQWEsTUFDYmtCLE9BQU90RSxvQkFBb0J5RyxhQUFhOUQsVUFDeEN5QixPQUFPNUksb0JBQW9CaUwsYUFBYTlELFVBQ3hDZ0UsU0FBU2hOLHNCQUFzQjhNLGFBQWE5RDtJQUVsREEsVUFBVTtJQUVWLE1BQU1pRSxVQUFVLElBQUlGLFFBQVEvRCxTQUFTUSxRQUFRTCxNQUFNTSxZQUFZa0IsTUFBTUYsTUFBTXVDO0lBRTNFLE9BQU9DO0FBQ1Q7QUFFTyxTQUFTbEgsdUJBQXVCbUgsV0FBVyxFQUFFbEUsT0FBTztJQUN6RCxNQUFNLEVBQUVtRSxPQUFPLEVBQUUsR0FBR2pFLGlCQUFRLEVBQ3RCQyxPQUFPK0QsYUFDUDdDLE9BQU94RSxvQkFBb0JxSCxhQUFhbEUsVUFDeENvRSxlQUFlek0sNEJBQTRCdU0sYUFBYWxFLFVBQ3hEcUUsaUJBQWlCcE4sOEJBQThCaU4sYUFBYWxFLFVBQzVEc0UsZ0JBQWdCQyxJQUFBQSw2QkFBcUIsRUFBQ2xELE9BQ3RDYixTQUFTOEQsZUFDVDdELGFBQWE7SUFFbkJULFVBQVU7SUFFVixNQUFNd0UsVUFBVSxJQUFJTCxRQUFRbkUsU0FBU1EsUUFBUUwsTUFBTU0sWUFBWVksTUFBTStDLGNBQWNDO0lBRW5GLE9BQU9HO0FBQ1Q7QUFFTyxTQUFTcE0sdUJBQXVCcU0sYUFBYSxFQUFFekUsT0FBTztJQUMzRCxNQUFNLEVBQUVnRCxLQUFLLEVBQUUsR0FBRzlDLGlCQUFRLEVBQ3BCQyxPQUFPc0UsZUFDUGpFLFNBQVNSLFFBQVF3QixZQUFZLENBQUNyQixPQUM5Qk0sYUFBYSxNQUNiZ0IsT0FBT3hJLHNCQUFzQndMLGVBQWV6RTtJQUVsREEsVUFBVTtJQUVWLE1BQU1pRCxRQUFRLElBQUlELE1BQU1oRCxTQUFTUSxRQUFRTCxNQUFNTSxZQUFZZ0I7SUFFM0QsT0FBT3dCO0FBQ1Q7QUFFTyxTQUFTcE0seUJBQXlCNk4sWUFBWSxFQUFFMUUsT0FBTztJQUM1RCxNQUFNLEVBQUUyRSxRQUFRLEVBQUUsR0FBR3pFLGlCQUFRLEVBQ3ZCQyxPQUFPdUUsY0FDUGxFLFNBQVNSLFFBQVF3QixZQUFZLENBQUNyQixPQUM5Qk0sYUFBYSxNQUNiTCxXQUFXdkIseUJBQXlCNkYsY0FBYzFFLFVBQ2xENEUsWUFBWXRJLDBCQUEwQm9JLGNBQWMxRTtJQUUxREEsVUFBVTtJQUVWLE1BQU02RSxXQUFXLElBQUlGLFNBQVMzRSxTQUFTUSxRQUFRTCxNQUFNTSxZQUFZTCxVQUFVd0U7SUFFM0UsT0FBT0M7QUFDVDtBQUVPLFNBQVMzTix5QkFBeUI0TixZQUFZLEVBQUU5RSxPQUFPO0lBQzVELE1BQU0sRUFBRStFLFFBQVEsRUFBRSxHQUFHN0UsaUJBQVEsRUFDdkJDLE9BQU8yRSxjQUNQdEUsU0FBU1IsUUFBUXdCLFlBQVksQ0FBQ3JCLE9BQzlCTSxhQUFhLE1BQ2JMLFdBQVd0Qix5QkFBeUJnRyxjQUFjOUUsVUFDbEQ0RSxZQUFZckksMEJBQTBCdUksY0FBYzlFO0lBRTFEQSxVQUFVO0lBRVYsTUFBTWdGLFdBQVcsSUFBSUQsU0FBUy9FLFNBQVNRLFFBQVFMLE1BQU1NLFlBQVlMLFVBQVV3RTtJQUUzRSxPQUFPSTtBQUNUO0FBRU8sU0FBU2xGLHlCQUF5Qm1GLFlBQVksRUFBRWpGLE9BQU87SUFDNUQsTUFBTSxFQUFFa0YsUUFBUSxFQUFFLEdBQUdoRixpQkFBUSxFQUN2QkMsT0FBTzhFLGNBQ1B6RSxTQUFTUixRQUFRd0IsWUFBWSxDQUFDckIsT0FDOUJNLGFBQWEsTUFDYmtCLE9BQU83RCxxQkFBcUJtSCxjQUFjakYsVUFDMUN5QixPQUFPdEkscUJBQXFCOEwsY0FBY2pGLFVBQzFDbUYsYUFBYXpOLDJCQUEyQnVOLGNBQWNqRjtJQUU1REEsVUFBVTtJQUVWLE1BQU1JLFdBQVcsSUFBSThFLFNBQVNsRixTQUFTUSxRQUFRTCxNQUFNTSxZQUFZa0IsTUFBTUYsTUFBTTBEO0lBRTdFLE9BQU8vRTtBQUNUO0FBRU8sU0FBUzdKLHlCQUF5QjZPLFlBQVksRUFBRXBGLE9BQU87SUFDNUQsTUFBTSxFQUFFcUYsUUFBUSxFQUFFLEdBQUduRixpQkFBUSxFQUN2QkMsT0FBT2lGLGNBQ1A1RSxTQUFTUixRQUFRd0IsWUFBWSxDQUFDckIsT0FDOUJNLGFBQWEsTUFDYjZFLGdCQUFnQmhQLDhCQUE4QjhPLGNBQWNwRixVQUM1RHVELFFBQVErQixlQUFlLEdBQUc7SUFFaEN0RixVQUFVO0lBRVYsTUFBTXVGLFdBQVcsSUFBSUYsU0FBU3JGLFNBQVNRLFFBQVFMLE1BQU1NLFlBQVk4QztJQUVqRSxPQUFPZ0M7QUFDVDtBQUVPLFNBQVMvTSx5QkFBeUJnTixZQUFZLEVBQUV4RixPQUFPO0lBQzVELE1BQU0sRUFBRXlGLFFBQVEsRUFBRSxHQUFHdkYsaUJBQVEsRUFDdkJDLE9BQU9xRixjQUNQaEYsU0FBU1IsUUFBUXdCLFlBQVksQ0FBQ3JCLE9BQzlCTSxhQUFhLE1BQ2JMLFdBQVdwQix5QkFBeUJ3RyxjQUFjeEY7SUFFeERBLFVBQVU7SUFFVixNQUFNMEYsV0FBVyxJQUFJRCxTQUFTekYsU0FBU1EsUUFBUUwsTUFBTU0sWUFBWUw7SUFFakUsT0FBT3NGO0FBQ1Q7QUFFTyxTQUFTdEosMkJBQTJCdUosYUFBYSxFQUFFM0YsT0FBTztJQUMvRCxNQUFNLEVBQUU0RixTQUFTLEVBQUUsR0FBRzFGLGlCQUFRLEVBQ3hCQyxPQUFPd0YsZUFDUG5GLFNBQVNSLFFBQVF3QixZQUFZLENBQUNyQixPQUM5Qk0sYUFBYSxNQUNib0YsaUJBQWlCbk4sZ0NBQWdDaU4sZUFBZTNGLFVBQ2hFOEYsbUJBQW1CN0wsa0NBQWtDMEwsZUFBZTNGLFVBQ3BFK0Ysc0JBQXNCckgscUNBQXFDaUgsZUFBZTNGO0lBRWhGQSxVQUFVO0lBRVYsTUFBTWdHLFlBQVksSUFBSUosVUFBVTVGLFNBQVNRLFFBQVFMLE1BQU1NLFlBQVlvRixnQkFBZ0JDLGtCQUFrQkM7SUFFckcsT0FBT0M7QUFDVDtBQUVPLFNBQVNwTCwyQkFBMkJxTCxhQUFhLEVBQUVqRyxPQUFPO0lBQy9ELE1BQU0sRUFBRWtHLFNBQVMsRUFBRSxHQUFHaEcsaUJBQVEsRUFDeEJDLE9BQU84RixlQUNQdEUsT0FBT2hFLHNCQUFzQnNJLGVBQWVqRyxVQUM1Q2lELFFBQVE5Syx1QkFBdUI4TixlQUFlakcsVUFDOUNtRyxXQUFXNU8sMkJBQTJCME8sZUFBZWpHLFVBQ3JEb0csYUFBYTlMLDRCQUE0QjJMLGVBQWVqRyxVQUN4RHFHLGNBQWMzSyw2QkFBNkJ1SyxlQUFlakcsVUFDMURzRyxrQkFBa0JDLElBQUFBLG9FQUE0RCxFQUFDNUUsTUFBTXNCLE9BQU9rRCxVQUFVQyxZQUFZQyxjQUNsSDdGLFNBQVM4RixpQkFDVDdGLGFBQWEsTUFDYitGLFlBQVksSUFBSU4sVUFBVWxHLFNBQVNRLFFBQVFMLE1BQU1NLFlBQVlrQixNQUFNc0IsT0FBT2tELFVBQVVDLFlBQVlDO0lBRXRHLE9BQU9HO0FBQ1Q7QUFFTyxTQUFTckwsMkJBQTJCc0osYUFBYSxFQUFFekUsT0FBTztJQUMvRCxNQUFNLEVBQUV5RyxTQUFTLEVBQUUsR0FBR3ZHLGlCQUFRLEVBQ3hCQyxPQUFPc0UsZUFDUGpFLFNBQVNSLFFBQVF3QixZQUFZLENBQUNyQixPQUM5Qk0sYUFBYSxNQUNiZ0IsT0FBT3hJLHNCQUFzQndMLGVBQWV6RTtJQUVsREEsVUFBVTtJQUVWLE1BQU0wRyxZQUFZLElBQUlELFVBQVV6RyxTQUFTUSxRQUFRTCxNQUFNTSxZQUFZZ0I7SUFFbkUsT0FBT2lGO0FBQ1Q7QUFFTyxTQUFTeE0sMkJBQTJCeU0sYUFBYSxFQUFFM0csT0FBTztJQUMvRCxNQUFNLEVBQUU0RyxTQUFTLEVBQUUsR0FBRzFHLGlCQUFRLEVBQ3hCQyxPQUFPd0csZUFDUG5HLFNBQVNSLFFBQVF3QixZQUFZLENBQUNyQixPQUM5Qk0sYUFBYSxNQUNia0IsT0FBT2xFLHNCQUFzQmtKLGVBQWUzRyxVQUM1Q3lCLE9BQU96SSxzQkFBc0IyTixlQUFlM0c7SUFFbERBLFVBQVU7SUFFVixNQUFNNkcsWUFBWSxJQUFJRCxVQUFVNUcsU0FBU1EsUUFBUUwsTUFBTU0sWUFBWWtCLE1BQU1GO0lBRXpFLE9BQU9vRjtBQUNUO0FBRU8sU0FBU2pOLDJCQUEyQmtOLGFBQWEsRUFBRTlHLE9BQU87SUFDL0QsTUFBTSxFQUFFK0csU0FBUyxFQUFFLEdBQUc3RyxpQkFBUSxFQUN4QkMsT0FBTzJHLGVBQ1B0RyxTQUFTUixRQUFRd0IsWUFBWSxDQUFDckIsT0FDOUJNLGFBQWEsTUFDYkwsV0FBV2xCLDBCQUEwQjRILGVBQWU5RyxVQUNwRGdILFFBQVFuTSx1QkFBdUJpTSxlQUFlOUc7SUFFcERBLFVBQVU7SUFFVixNQUFNaUgsWUFBWSxJQUFJRixVQUFVL0csU0FBU1EsUUFBUUwsTUFBTU0sWUFBWUwsVUFBVTRHO0lBRTdFLE9BQU9DO0FBQ1Q7QUFFTyxTQUFTMU0sMkJBQTJCMk0sYUFBYSxFQUFFbEgsT0FBTztJQUMvRCxNQUFNLEVBQUVtSCxTQUFTLEVBQUUsR0FBR2pILGlCQUFRLEVBQ3hCQyxPQUFPK0csZUFDUDFHLFNBQVNSLFFBQVF3QixZQUFZLENBQUNyQixPQUM5Qk0sYUFBYSxNQUNia0IsT0FBT2pFLHNCQUFzQndKLGVBQWVsSCxVQUM1Q3NDLFFBQVF2RSx1QkFBdUJtSixlQUFlbEg7SUFFcERBLFVBQVU7SUFFVixNQUFNYSxZQUFZLElBQUlzRyxVQUFVbkgsU0FBU1EsUUFBUUwsTUFBTU0sWUFBWWtCLE1BQU1XO0lBRXpFLE9BQU96QjtBQUNUO0FBRU8sU0FBUzVELDJCQUEyQm1LLGFBQWEsRUFBRXBILE9BQU87SUFDL0QsTUFBTSxFQUFFcUgsU0FBUyxFQUFFLEdBQUduSCxpQkFBUSxFQUN4QkMsT0FBT2lILGVBQ1A1RyxTQUFTUixRQUFRd0IsWUFBWSxDQUFDckIsT0FDOUJNLGFBQWEsTUFDYkwsV0FBV1gsMEJBQTBCMkgsZUFBZXBIO0lBRTFEQSxVQUFVO0lBRVYsTUFBTXNILFlBQVksSUFBSUQsVUFBVXJILFNBQVNRLFFBQVFMLE1BQU1NLFlBQVlMO0lBRW5FLE9BQU9rSDtBQUNUO0FBRU8sU0FBU25MLDZCQUE2Qm9MLGNBQWMsRUFBRXZILE9BQU87SUFDbEUsTUFBTSxFQUFFd0gsVUFBVSxFQUFFLEdBQUd0SCxpQkFBUSxFQUN6QkMsT0FBT29ILGdCQUNQL0csU0FBU1IsUUFBUXdCLFlBQVksQ0FBQ3JCLE9BQzlCTSxhQUFhLE1BQ2JMLFdBQVdiLDJCQUEyQmdJLGdCQUFnQnZILFVBQ3RENEUsWUFBWXBJLDRCQUE0QitLLGdCQUFnQnZIO0lBRTlEQSxVQUFVO0lBRVYsTUFBTXlILGFBQWEsSUFBSUQsV0FBV3hILFNBQVNRLFFBQVFMLE1BQU1NLFlBQVlMLFVBQVV3RTtJQUUvRSxPQUFPNkM7QUFDVDtBQUVPLFNBQVMzTiw2QkFBNkI0TixjQUFjLEVBQUUxSCxPQUFPO0lBQ2xFLE1BQU0sRUFBRTJILFVBQVUsRUFBRSxHQUFHekgsaUJBQVEsRUFDekJDLE9BQU91SCxnQkFDUGxILFNBQVNSLFFBQVF3QixZQUFZLENBQUNyQixPQUM5Qk0sYUFBYSxNQUNiTCxXQUFXakIsMkJBQTJCdUksZ0JBQWdCMUgsVUFDdERnSCxRQUFRbE0sd0JBQXdCNE0sZ0JBQWdCMUg7SUFFdERBLFVBQVU7SUFFVixNQUFNNEgsYUFBYSxJQUFJRCxXQUFXM0gsU0FBU1EsUUFBUUwsTUFBTU0sWUFBWUwsVUFBVTRHO0lBRS9FLE9BQU9ZO0FBQ1Q7QUFFTyxTQUFTdk4sNkJBQTZCd04sY0FBYyxFQUFFN0gsT0FBTztJQUNsRSxNQUFNLEVBQUU4SCxVQUFVLEVBQUUsR0FBRzVILGlCQUFRLEVBQ3pCQyxPQUFPMEgsZ0JBQ1BySCxTQUFTUixRQUFRd0IsWUFBWSxDQUFDckIsT0FDOUJNLGFBQWEsTUFDYnNILGtCQUFrQjVOLGtDQUFrQzBOLGdCQUFnQjdILFVBQ3BFdUQsUUFBUXdFLGlCQUFpQixHQUFHO0lBRWxDL0gsVUFBVTtJQUVWLE1BQU1vRyxhQUFhLElBQUkwQixXQUFXOUgsU0FBU1EsUUFBUUwsTUFBTU0sWUFBWThDO0lBRXJFLE9BQU82QztBQUNUO0FBRU8sU0FBUzVPLDZCQUE2QndRLGNBQWMsRUFBRWhJLE9BQU87SUFDbEUsTUFBTSxFQUFFaUksVUFBVSxFQUFFLEdBQUcvSCxpQkFBUSxFQUN6QkMsT0FBTzZILGdCQUNQM0csT0FBTzNFLHVCQUF1QnNMLGdCQUFnQmhJLFVBQzlDVSxPQUFPMUUsdUJBQXVCZ00sZ0JBQWdCaEksVUFDOUM4QyxRQUFReEwsd0JBQXdCMFEsZ0JBQWdCaEksVUFDaEQ2RCxTQUFTOUkseUJBQXlCaU4sZ0JBQWdCaEksVUFDbERpQyxRQUFROUwsd0JBQXdCNlIsZ0JBQWdCaEksVUFDaER3RSxVQUFVMUgsMEJBQTBCa0wsZ0JBQWdCaEksVUFDcERpSCxZQUFZdE4sNEJBQTRCcU8sZ0JBQWdCaEksVUFDeEQ0SCxhQUFhL04sNkJBQTZCbU8sZ0JBQWdCaEksVUFDMUQwRixXQUFXbk4sMkJBQTJCeVAsZ0JBQWdCaEksVUFDdERzSCxZQUFZdEssNEJBQTRCZ0wsZ0JBQWdCaEksVUFDeERrSSxhQUFhaEwsNkJBQTZCOEssZ0JBQWdCaEksVUFDMUQ2RSxXQUFXL04sMkJBQTJCa1IsZ0JBQWdCaEksVUFDdERnRixXQUFXN04sMkJBQTJCNlEsZ0JBQWdCaEksVUFDdER5SCxhQUFhdkwsNkJBQTZCOEwsZ0JBQWdCaEksVUFDMURxRyxjQUFjNUssOEJBQThCdU0sZ0JBQWdCaEksVUFDNURtSSxnQkFBZ0J6TixnQ0FBZ0NzTixnQkFBZ0JoSSxVQUNoRWtCLGFBQWE7UUFDWEc7UUFDQVg7UUFDQW9DO1FBQ0FlO1FBQ0E1QjtRQUNBdUM7UUFDQXlDO1FBQ0FXO1FBQ0FsQztRQUNBNEI7UUFDQVk7UUFDQXJEO1FBQ0FHO1FBQ0F5QztRQUNBcEI7UUFDQThCO0tBQ0QsRUFDREMsbUJBQW1CQyxJQUFBQSxzQ0FBOEIsRUFBQ25ILFlBQVlsQixVQUM5RFEsU0FBUzRILGtCQUNUM0gsYUFBYTtJQUVuQlQsVUFBVTtJQUVWLE1BQU1tRixhQUFhLElBQUk4QyxXQUFXakksU0FBU1EsUUFBUUwsTUFBTU0sWUFBWVksTUFBTVgsTUFBTW9DLE9BQU9lLFFBQVE1QixPQUFPdUMsU0FBU3lDLFdBQVdXLFlBQVlsQyxVQUFVNEIsV0FBV1ksWUFBWXJELFVBQVVHLFVBQVV5QyxZQUFZcEIsYUFBYThCO0lBRXJOLE9BQU9oRDtBQUNUO0FBRU8sU0FBU2hJLDZCQUE2Qm1MLGNBQWMsRUFBRXRJLE9BQU87SUFDbEUsTUFBTSxFQUFFdUksVUFBVSxFQUFFLEdBQUdySSxpQkFBUSxFQUN6QkMsT0FBT21JLGdCQUNQOUgsU0FBU1IsUUFBUXdCLFlBQVksQ0FBQ3JCLE9BQzlCTSxhQUFhLE1BQ2JMLFdBQVdWLDJCQUEyQjRJLGdCQUFnQnRJO0lBRTVEQSxVQUFVO0lBRVYsTUFBTWtJLGFBQWEsSUFBSUssV0FBV3ZJLFNBQVNRLFFBQVFMLE1BQU1NLFlBQVlMO0lBRXJFLE9BQU84SDtBQUNUO0FBRU8sU0FBUzVNLDZCQUE2QmtOLGNBQWMsRUFBRXhJLE9BQU87SUFDbEUsTUFBTSxFQUFFeUksVUFBVSxFQUFFLEdBQUd2SSxpQkFBUSxFQUN6QkMsT0FBT3FJLGdCQUNQRSxpQkFBaUJGLGVBQWVHLGlCQUFpQixJQUNqREMsa0JBQWtCeE4sa0NBQWtDc04sZ0JBQWdCMUksVUFDcEU2SSxtQkFBbUJDLElBQUFBLDJDQUFtQyxFQUFDRixrQkFDdkRwSSxTQUFTcUksa0JBQ1R0RixRQUFRcUYsaUJBQ1JuSSxhQUFhO0lBRW5CVCxVQUFVO0lBRVYsTUFBTThCLGFBQWEsSUFBSTJHLFdBQVd6SSxTQUFTUSxRQUFRTCxNQUFNTSxZQUFZOEM7SUFFckUsT0FBT3pCO0FBQ1Q7QUFFTyxTQUFTbkcsK0JBQStCb04sZUFBZSxFQUFFL0ksT0FBTztJQUNyRSxNQUFNLEVBQUVnSixXQUFXLEVBQUUsR0FBRzlJLGlCQUFRLEVBQzFCQyxPQUFPNEksaUJBQ1BFLGFBQWE1TSw4QkFBOEIwTSxpQkFBaUIvSSxVQUM1RGtKLGNBQWNuUCwrQkFBK0JnUCxpQkFBaUIvSSxVQUM5RG1KLGtCQUFrQnZOLG1DQUFtQ21OLGlCQUFpQi9JLFVBQ3RFb0osb0JBQW9CQyxJQUFBQSxnREFBd0MsRUFBQ0Ysa0JBQzdEM0ksU0FBUzRJLG1CQUNUM0ksYUFBYTtJQUVuQlQsVUFBVTtJQUVWLE1BQU1xRyxjQUFjLElBQUkyQyxZQUFZaEosU0FBU1EsUUFBUUwsTUFBTU0sWUFBWXdJLFlBQVlDLGFBQWFDO0lBRWhHLE9BQU85QztBQUNUO0FBRU8sU0FBUzVNLCtCQUErQjZQLGVBQWUsRUFBRXRKLE9BQU87SUFDckUsTUFBTSxFQUFFdUosV0FBVyxFQUFFLEdBQUdySixpQkFBUSxFQUMxQkMsT0FBT21KLGlCQUNQOUksU0FBU1IsUUFBUXdCLFlBQVksQ0FBQ3JCLE9BQzlCTSxhQUFhLE1BQ2JFLFdBQVcySSxnQkFBZ0JFLFdBQVcsSUFDdEM3SCxPQUFPbkUsd0JBQXdCbUQsVUFBVVgsVUFDekNxQixPQUFPMUUsd0JBQXdCMk0saUJBQWlCdEosVUFDaERjLGNBQWMsSUFBSXlJLFlBQVl2SixTQUFTUSxRQUFRTCxNQUFNTSxZQUFZa0IsTUFBTU47SUFFN0UsT0FBT1A7QUFDVDtBQUVPLFNBQVNuSSwrQkFBK0I4USxlQUFlLEVBQUV6SixPQUFPO0lBQ3JFLE1BQU0sRUFBRTBKLFdBQVcsRUFBRSxHQUFHeEosaUJBQVEsRUFDMUJDLE9BQU9zSixpQkFDUGpKLFNBQVNSLFFBQVF3QixZQUFZLENBQUNyQixPQUM5Qk0sYUFBYSxNQUNia0IsT0FBT3JFLHdCQUF3Qm1NLGlCQUFpQnpKLFVBQ2hEMkosY0FBYzVTLCtCQUErQjBTLGlCQUFpQnpKLFVBQzlENEosV0FBV3RSLDRCQUE0Qm1SLGlCQUFpQnpKLFVBQ3hENkosWUFBWTlOLDZCQUE2QjBOLGlCQUFpQnpKLFVBQzFEZSxjQUFjLElBQUkySSxZQUFZMUosU0FBU1EsUUFBUUwsTUFBTU0sWUFBWWtCLE1BQU1nSSxhQUFhQyxVQUFVQztJQUVwRyxPQUFPOUk7QUFDVDtBQUVPLFNBQVMzSCxpQ0FBaUMwUSxnQkFBZ0IsRUFBRTlKLE9BQU87SUFDeEUsTUFBTSxFQUFFK0osWUFBWSxFQUFFLEdBQUc3SixpQkFBUSxFQUMzQkMsT0FBTzJKLGtCQUNQdEosU0FBU1IsUUFBUXdCLFlBQVksQ0FBQ3JCLE9BQzlCTSxhQUFhLE1BQ2JrQixPQUFPcEUseUJBQXlCdU0sa0JBQWtCOUosVUFDbER5QixPQUFPMUkseUJBQXlCK1Esa0JBQWtCOUosVUFDbERnSyxRQUFRblUsMEJBQTBCaVUsa0JBQWtCOUo7SUFFMURBLFVBQVU7SUFFVixNQUFNaUssZUFBZSxJQUFJRixhQUFhL0osU0FBU1EsUUFBUUwsTUFBTU0sWUFBWWtCLE1BQU1GLE1BQU11STtJQUVyRixPQUFPQztBQUNUO0FBRU8sU0FBUzVRLG1DQUFtQzZRLGlCQUFpQixFQUFFbEssT0FBTztJQUMzRSxNQUFNLEVBQUVtSyxhQUFhLEVBQUUsR0FBR2pLLGlCQUFRLEVBQzVCQyxPQUFPK0osbUJBQ1AxSixTQUFTUixRQUFRd0IsWUFBWSxDQUFDckIsT0FDOUJNLGFBQWEsTUFDYjJKLG9CQUFvQkYsa0JBQWtCRyxvQkFBb0IsSUFDMURDLHFCQUFxQi9RLDBDQUEwQzZRLG1CQUFtQnBLLFVBQ2xGdUQsUUFBUStHLG9CQUFvQixHQUFHO0lBRXJDdEssVUFBVTtJQUVWLE1BQU11SyxnQkFBZ0IsSUFBSUosY0FBY25LLFNBQVNRLFFBQVFMLE1BQU1NLFlBQVk4QztJQUUzRSxPQUFPZ0g7QUFDVDtBQUVPLFNBQVM5VCxtQ0FBbUMrVCxpQkFBaUIsRUFBRXhLLE9BQU87SUFDM0UsTUFBTSxFQUFFeUssYUFBYSxFQUFFLEdBQUd2SyxpQkFBUSxFQUM1QkMsT0FBT3FLLG1CQUNQaEssU0FBU1IsUUFBUXdCLFlBQVksQ0FBQ3JCLE9BQzlCTSxhQUFhLE1BQ2JZLE9BQU81RSwwQkFBMEIrTixtQkFBbUJ4SyxVQUNwRGdCLGdCQUFnQixJQUFJeUosY0FBY3pLLFNBQVNRLFFBQVFMLE1BQU1NLFlBQVlZO0lBRTNFLE9BQU9MO0FBQ1Q7QUFFTyxTQUFTckcsbUNBQW1DK1AsaUJBQWlCLEVBQUUxSyxPQUFPO0lBQzNFLE1BQU0sRUFBRTJLLGFBQWEsRUFBRSxHQUFHekssaUJBQVEsRUFDNUJDLE9BQU91SyxtQkFDUGxLLFNBQVNSLFFBQVF3QixZQUFZLENBQUNyQixPQUM5Qk0sYUFBYSxNQUNiaUcsWUFBWXhMLCtCQUErQndQLG1CQUFtQjFLLFVBQzlENkIsU0FBU3ZELDRCQUE0Qm9NLG1CQUFtQjFLO0lBRTlEQSxVQUFVO0lBRVYsTUFBTW1JLGdCQUFnQixJQUFJd0MsY0FBYzNLLFNBQVNRLFFBQVFMLE1BQU1NLFlBQVlpRyxXQUFXN0U7SUFFdEYsT0FBT3NHO0FBQ1Q7QUFFTyxTQUFTdlEsbUNBQW1DZ1QsaUJBQWlCLEVBQUU1SyxPQUFPO0lBQzNFLE1BQU0sRUFBRTZLLGFBQWEsRUFBRSxHQUFHM0ssaUJBQVEsRUFDNUJDLE9BQU95SyxtQkFDUHBLLFNBQVNSLFFBQVF3QixZQUFZLENBQUNyQixPQUM5Qk0sYUFBYSxNQUNid0MsUUFBUWhMLDJCQUEyQjJTLG1CQUFtQjVLLFVBQ3REMEcsWUFBWXpMLCtCQUErQjJQLG1CQUFtQjVLO0lBRXBFQSxVQUFVO0lBRVYsTUFBTThLLGdCQUFnQixJQUFJRCxjQUFjN0ssU0FBU1EsUUFBUUwsTUFBTU0sWUFBWXdDLE9BQU95RDtJQUVsRixPQUFPb0U7QUFDVDtBQUVPLFNBQVNuVSxxQ0FBcUNvVSxrQkFBa0IsRUFBRS9LLE9BQU87SUFDOUUsTUFBTSxFQUFFZ0wsY0FBYyxFQUFFLEdBQUc5SyxpQkFBUSxFQUM3QkMsT0FBTzRLLG9CQUNQdkssU0FBU1IsUUFBUXdCLFlBQVksQ0FBQ3JCLE9BQzlCTSxhQUFhLE1BQ2J3SyxVQUFVelIsOEJBQThCdVIsb0JBQW9CL0ssVUFDNUQ0SixXQUFXdlIsK0JBQStCMFMsb0JBQW9CL0ssVUFDOUQ2SixZQUFZL04sZ0NBQWdDaVAsb0JBQW9CL0ssVUFDaEVpQixpQkFBaUIsSUFBSStKLGVBQWVoTCxTQUFTUSxRQUFRTCxNQUFNTSxZQUFZd0ssU0FBU3JCLFVBQVVDO0lBRWhHLE9BQU81STtBQUNUO0FBRU8sU0FBU3hJLHFDQUFxQ3lTLGtCQUFrQixFQUFFbEwsT0FBTztJQUM5RSxNQUFNLEVBQUVtTCxjQUFjLEVBQUUsR0FBR2pMLGlCQUFRLEVBQzdCQyxPQUFPK0ssb0JBQ1AxSyxTQUFTUixRQUFRd0IsWUFBWSxDQUFDckIsT0FDOUJNLGFBQWEsTUFDYkwsV0FBV25CLCtCQUErQmlNLG9CQUFvQmxMLFVBQzlEdUYsV0FBVy9PLCtCQUErQjBVLG9CQUFvQmxMO0lBRXBFQSxVQUFVO0lBRVYsTUFBTTZGLGlCQUFpQixJQUFJc0YsZUFBZW5MLFNBQVNRLFFBQVFMLE1BQU1NLFlBQVlMLFVBQVVtRjtJQUV2RixPQUFPTTtBQUNUO0FBRU8sU0FBU3ZNLHNDQUFzQzhSLG9CQUFvQixFQUFFcEwsT0FBTztJQUNqRixNQUFNa0ssb0JBQW9Ca0IscUJBQXFCQyxvQkFBb0IsSUFDN0RkLGdCQUFnQmxSLG1DQUFtQzZRLG1CQUFtQmxLO0lBRTVFLE9BQU91SztBQUNUO0FBRU8sU0FBU3hTLHVDQUF1Q3VULG1CQUFtQixFQUFFdEwsT0FBTztJQUNqRixNQUFNLEVBQUV1TCxlQUFlLEVBQUUsR0FBR3JMLGlCQUFRLEVBQzlCQyxPQUFPbUwscUJBQ1A5SyxTQUFTUixRQUFRd0IsWUFBWSxDQUFDckIsT0FDOUJxTCxjQUFjalEsbUNBQW1DK1AscUJBQXFCdEwsVUFDdEV5TCxpQkFBaUIzVCxzQ0FBc0N3VCxxQkFBcUJ0TCxVQUM1RVMsYUFBYSxNQUNiaUwsa0JBQWtCLElBQUlILGdCQUFnQnZMLFNBQVNRLFFBQVFMLE1BQU1NLFlBQVkrSyxhQUFhQztJQUU1RixPQUFPQztBQUNUO0FBRU8sU0FBUzdQLHVDQUF1QzhQLG1CQUFtQixFQUFFM0wsT0FBTztJQUNqRixNQUFNLEVBQUU0TCxlQUFlLEVBQUUsR0FBRzFMLGlCQUFRLEVBQzlCQyxPQUFPd0wscUJBQ1BuTCxTQUFTUixRQUFRd0IsWUFBWSxDQUFDckIsT0FDOUJNLGFBQWEsTUFDYjZCLFFBQVFyRSw2QkFBNkIwTixxQkFBcUIzTDtJQUVoRUEsVUFBVTtJQUVWLE1BQU1tSixrQkFBa0IsSUFBSXlDLGdCQUFnQjVMLFNBQVNRLFFBQVFMLE1BQU1NLFlBQVk2QjtJQUUvRSxPQUFPNkc7QUFDVDtBQUVPLFNBQVNuUCx5Q0FBeUNvUixvQkFBb0IsRUFBRXBMLE9BQU87SUFDcEYsTUFBTSxFQUFFNkwsZ0JBQWdCLEVBQUUsR0FBRzNMLGlCQUFRLEVBQy9CQyxPQUFPaUwsc0JBQ1A1SyxTQUFTUixRQUFRd0IsWUFBWSxDQUFDckIsT0FDOUJNLGFBQWEsTUFDYkwsV0FBV2hCLGlDQUFpQ2dNLHNCQUFzQnBMLFVBQ2xFdUssZ0JBQWdCalIsc0NBQXNDOFIsc0JBQXNCcEw7SUFFbEZBLFVBQVU7SUFFVixNQUFNOEYsbUJBQW1CLElBQUkrRixpQkFBaUI3TCxTQUFTUSxRQUFRTCxNQUFNTSxZQUFZTCxVQUFVbUs7SUFFM0YsT0FBT3pFO0FBQ1Q7QUFFTyxTQUFTaFEsNkNBQTZDZ1csc0JBQXNCLEVBQUU5TCxPQUFPO0lBQzFGLE1BQU0sRUFBRStMLGtCQUFrQixFQUFFLEdBQUc3TCxpQkFBUSxFQUNqQ0MsT0FBTzJMLHdCQUNQbkssT0FBT3ZFLCtCQUErQjBPLHdCQUF3QjlMLFVBQzlEb0csYUFBYWhNLHFDQUFxQzBSLHdCQUF3QjlMLFVBQzFFcUcsY0FBYzdLLHNDQUFzQ3NRLHdCQUF3QjlMLFVBQzVFZ00sMEJBQTBCQyxJQUFBQSxnRUFBd0QsRUFBQ3RLLE1BQU15RSxZQUFZQyxjQUNyRzdGLFNBQVN3TCx5QkFDVHZMLGFBQWE7SUFFbkJULFVBQVU7SUFFVixNQUFNSyxxQkFBcUIsSUFBSTBMLG1CQUFtQi9MLFNBQVNRLFFBQVFMLE1BQU1NLFlBQVlrQixNQUFNeUUsWUFBWUM7SUFFdkcsT0FBT2hHO0FBQ1Q7QUFFTyxTQUFTMUIsK0NBQStDdU4sdUJBQXVCLEVBQUVsTSxPQUFPO0lBQzdGLE1BQU0sRUFBRW1NLG1CQUFtQixFQUFFLEdBQUdqTSxpQkFBUSxFQUNsQ0MsT0FBTytMLHlCQUNQdkssT0FBTzlELGdDQUFnQ3FPLHlCQUF5QmxNLFVBQ2hFb00sMkJBQTJCM04sMkRBQTJEa0QsTUFBTXVLLHlCQUF5QmxNLFVBQ3JIcU0sMkJBQTJCQyxJQUFBQSxtRUFBMkQsRUFBQzNLLE1BQU15SywyQkFDN0Y3SSxRQUFRNkksMEJBQ1I1TCxTQUFTNkwsMEJBQ1Q1TCxhQUFhO0lBRW5CVCxVQUFVO0lBRVYsTUFBTStGLHNCQUFzQixJQUFJb0csb0JBQW9Cbk0sU0FBU1EsUUFBUUwsTUFBTU0sWUFBWThDO0lBRXZGLE9BQU93QztBQUNUO0FBRU8sU0FBU3ZILG9EQUFvRG1ELElBQUksRUFBRTRLLHNCQUFzQixFQUFFdk0sT0FBTztJQUN2RyxNQUFNLEVBQUV3TSxrQkFBa0IsRUFBRSxHQUFHdE0saUJBQVEsRUFDakNDLE9BQU9vTSx3QkFDUG5NLFdBQVdULDBDQUEwQ2dDLE1BQU00Syx3QkFBd0J2TSxVQUNuRm1GLGFBQWExTixxQ0FBcUM4VSx3QkFBd0J2TSxVQUMxRXFNLDJCQUEyQkksSUFBQUEsbURBQTJDLEVBQUM5SyxNQUFNdkIsVUFBVUosVUFDdkZRLFNBQVM2TCwwQkFDVDVMLGFBQWEsTUFDYmlNLGFBQWEsSUFBSUYsbUJBQW1CeE0sU0FBU1EsUUFBUUwsTUFBTU0sWUFBWUwsVUFBVStFO0lBRXZGLE9BQU91SDtBQUNUO0FBRU8sU0FBU3hULGlCQUFpQm9JLFFBQVEsRUFBRXRCLE9BQU87SUFDaEQsTUFBTXlCLE9BQU9ILFNBQVNxTCxPQUFPO0lBRTdCLE9BQU9sTDtBQUNUO0FBRU8sU0FBUzNJLGtCQUFrQmlLLFNBQVMsRUFBRS9DLE9BQU87SUFDbEQsTUFBTXlCLE9BQU9zQixVQUFVNEosT0FBTztJQUU5QixPQUFPbEw7QUFDVDtBQUVPLFNBQVNwRCxvQkFBb0J1TyxPQUFPLEVBQUU1TSxPQUFPO0lBQ2xELElBQUk2QixTQUFTO0lBRWIsTUFBTXFCLGFBQWEwSixRQUFRQyxhQUFhO0lBRXhDLElBQUkzSixlQUFlLE1BQU87UUFDeEJyQixTQUFTdEQscUJBQXFCMkUsWUFBWWxEO0lBQzVDO0lBRUEsT0FBTzZCO0FBQ1Q7QUFFTyxTQUFTN0Qsb0JBQW9Cd0YsVUFBVSxFQUFFeEQsT0FBTztJQUNyRCxNQUFNa0MsWUFBWXNCLFdBQVdzSixZQUFZLElBQ25DeEssUUFBUW5FLG1CQUFtQitELFdBQVdsQztJQUU1QyxPQUFPc0M7QUFDVDtBQUVPLFNBQVN6RixvQkFBb0JxSCxXQUFXLEVBQUVsRSxPQUFPO0lBQ3RELE1BQU1XLFdBQVd1RCxZQUFZc0YsV0FBVyxJQUNsQ25JLE9BQU96RSxpQkFBaUIrRCxVQUFVWDtJQUV4QyxPQUFPcUI7QUFDVDtBQUVPLFNBQVN4SSxvQkFBb0JpTCxXQUFXLEVBQUU5RCxPQUFPO0lBQ3RELE1BQU15QixPQUFPcUMsWUFBWTZJLE9BQU87SUFFaEMsT0FBT2xMO0FBQ1Q7QUFFTyxTQUFTcEUsb0JBQW9CeUcsV0FBVyxFQUFFOUQsT0FBTztJQUN0RCxJQUFJMkIsT0FBTztJQUVYLE1BQU1MLFdBQVd3QyxZQUFZaUosV0FBVztJQUV4QyxJQUFJekwsWUFBWSxNQUFNO1FBQ3BCSyxPQUFPL0QsaUJBQWlCMEQsVUFBVXRCO0lBQ3BDO0lBRUEsT0FBTzJCO0FBQ1Q7QUFFTyxTQUFTckMscUJBQXFCUyxRQUFRLEVBQUVDLE9BQU87SUFDcEQsTUFBTWlGLGVBQWVsRixTQUFTaU4sZUFBZSxJQUN2QzVNLFdBQVdOLHlCQUF5Qm1GLGNBQWNqRjtJQUV4RCxPQUFPSTtBQUNUO0FBRU8sU0FBU1oscUJBQXFCbUIsUUFBUSxFQUFFWCxPQUFPO0lBQ3BELElBQUlJLFdBQVc7SUFFZixNQUFNNkUsZUFBZXRFLFNBQVNxTSxlQUFlO0lBRTdDLElBQUkvSCxpQkFBaUIsTUFBTTtRQUN6QjdFLFdBQVdOLHlCQUF5Qm1GLGNBQWNqRjtJQUNwRDtJQUVBLE9BQU9JO0FBQ1Q7QUFFTyxTQUFTakgscUJBQXFCOEwsWUFBWTtJQUMvQyxNQUFNeEQsT0FBT3dELGFBQWEwSCxPQUFPO0lBRWpDLE9BQU9sTDtBQUNUO0FBRU8sU0FBUzNELHFCQUFxQm1ILFlBQVksRUFBRWpGLE9BQU87SUFDeEQsTUFBTTJCLE9BQU87SUFFYixPQUFPQTtBQUNUO0FBRU8sU0FBUy9DLHNCQUFzQmdPLE9BQU8sRUFBRTVNLE9BQU87SUFDcEQsTUFBTWlGLGVBQWUySCxRQUFRSSxlQUFlLElBQ3RDNU0sV0FBV04seUJBQXlCbUYsY0FBY2pGO0lBRXhELE9BQU9JO0FBQ1Q7QUFFTyxTQUFTekMsc0JBQXNCc0ksYUFBYSxFQUFFakcsT0FBTztJQUMxRCxNQUFNc0IsV0FBVzJFLGNBQWM4RyxXQUFXLElBQ3BDcEwsT0FBTy9ELGlCQUFpQjBELFVBQVV0QjtJQUV4QyxPQUFPMkI7QUFDVDtBQUVPLFNBQVNuSCxzQkFBc0JtRyxRQUFRLEVBQUVYLE9BQU87SUFDckQsSUFBSWEsWUFBWTtJQUVoQixNQUFNcUcsZ0JBQWdCdkcsU0FBU3NNLGdCQUFnQjtJQUUvQyxJQUFJL0Ysa0JBQWtCLE1BQU07UUFDMUJyRyxZQUFZdEcsMkJBQTJCMk0sZUFBZWxIO0lBQ3hEO0lBRUEsT0FBT2E7QUFDVDtBQUVPLFNBQVM5QixzQkFBc0IyRCxTQUFTLEVBQUUxQyxPQUFPO0lBQ3RELE1BQU1pRixlQUFldkMsVUFBVXNLLGVBQWUsSUFDeEM1TSxXQUFXTix5QkFBeUJtRixjQUFjakY7SUFFeEQsT0FBT0k7QUFDVDtBQUVPLFNBQVNwSixzQkFBc0I4TSxXQUFXLEVBQUU5RCxPQUFPO0lBQ3hELE1BQU1nRSxTQUFTRixZQUFZb0osUUFBUTtJQUVuQyxPQUFPbEo7QUFDVDtBQUVPLFNBQVN2RyxzQkFBc0JrSixhQUFhLEVBQUUzRyxPQUFPO0lBQzFELE1BQU1zQixXQUFXcUYsY0FBY29HLFdBQVcsSUFDcENwTCxPQUFPL0QsaUJBQWlCMEQsVUFBVXRCO0lBRXhDLE9BQU8yQjtBQUNUO0FBRU8sU0FBUzNJLHNCQUFzQjJOLGFBQWEsRUFBRTNHLE9BQU87SUFDMUQsTUFBTXlCLE9BQU9rRixjQUFjZ0csT0FBTztJQUVsQyxPQUFPbEw7QUFDVDtBQUVPLFNBQVN4SSxzQkFBc0J3TCxhQUFhLEVBQUV6RSxPQUFPO0lBQzFELE1BQU15QixPQUFPZ0QsY0FBY2tJLE9BQU87SUFFbEMsT0FBT2xMO0FBQ1Q7QUFFTyxTQUFTL0Qsc0JBQXNCd0osYUFBYSxFQUFFbEgsT0FBTztJQUMxRCxNQUFNLEVBQUV1QixJQUFJLEVBQUUsR0FBR3JCLGlCQUFRLEVBQ25CaU4sV0FBV2pHLGNBQWNrRyxXQUFXLElBQ3BDekwsT0FBT0osS0FBSzhMLFlBQVksQ0FBQ0YsVUFBVW5OO0lBRXpDLE9BQU8yQjtBQUNUO0FBRU8sU0FBUzlCLHNCQUFzQnFDLFNBQVMsRUFBRWxDLE9BQU87SUFDdEQsSUFBSUksV0FBVztJQUVmLE1BQU02RSxlQUFlL0MsVUFBVThLLGVBQWU7SUFFOUMsSUFBSS9ILGlCQUFpQixNQUFNO1FBQ3pCN0UsV0FBV04seUJBQXlCbUYsY0FBY2pGO0lBQ3BEO0lBRUEsT0FBT0k7QUFDVDtBQUVPLFNBQVMzRix1QkFBdUJ5SCxTQUFTLEVBQUVsQyxPQUFPO0lBQ3ZELElBQUlhLFlBQVk7SUFFaEIsTUFBTXFHLGdCQUFnQmhGLFVBQVUrSyxnQkFBZ0I7SUFFaEQsSUFBSS9GLGtCQUFrQixNQUFNO1FBQzFCckcsWUFBWXRHLDJCQUEyQjJNLGVBQWVsSDtJQUN4RDtJQUVBLE9BQU9hO0FBQ1Q7QUFFTyxTQUFTeEIsdUJBQXVCbUUsVUFBVSxFQUFFeEQsT0FBTztJQUN4RCxNQUFNaUYsZUFBZXpCLFdBQVd3SixlQUFlLElBQ3pDNU0sV0FBV04seUJBQXlCbUYsY0FBY2pGO0lBRXhELE9BQU9JO0FBQ1Q7QUFFTyxTQUFTdkYsdUJBQXVCaU0sYUFBYSxFQUFFOUcsT0FBTztJQUMzRCxNQUFNUSxTQUFTc0csY0FBY3dHLFNBQVMsSUFDaENsRixtQkFBbUI1SCxRQUNuQndHLFFBQVF1RyxpQkFBSyxDQUFDQyxvQkFBb0IsQ0FBQ3BGO0lBRXpDLE9BQU9wQjtBQUNUO0FBRU8sU0FBU2pKLHVCQUF1Qm1KLGFBQWEsRUFBRWxILE9BQU87SUFDM0QsTUFBTXNDLFFBQVE0RSxjQUFjdUcsUUFBUTtJQUVwQyxPQUFPbkw7QUFDVDtBQUVPLFNBQVNuSyx1QkFBdUI4TixhQUFhLEVBQUVqRyxPQUFPO0lBQzNELE1BQU0rQyxZQUFZa0QsY0FBY3lILFlBQVksSUFDdEN6SyxRQUFRL0ssbUJBQW1CNkssV0FBVy9DO0lBRTVDLE9BQU9pRDtBQUNUO0FBRU8sU0FBU3ZHLHVCQUF1QnNMLGNBQWMsRUFBRWhJLE9BQU87SUFDNUQsSUFBSXFCLE9BQU87SUFFWCxNQUFNVixXQUFXcUgsZUFBZXdCLFdBQVc7SUFFM0MsSUFBSTdJLGFBQWEsTUFBTTtRQUNyQlUsT0FBT3pFLGlCQUFpQitELFVBQVVYO0lBQ3BDO0lBRUEsT0FBT3FCO0FBQ1Q7QUFFTyxTQUFTckYsdUJBQXVCZ00sY0FBYyxFQUFFaEksT0FBTztJQUM1RCxJQUFJVSxPQUFPO0lBRVgsTUFBTVgsV0FBV2lJLGVBQWUyRixXQUFXO0lBRTNDLElBQUk1TixhQUFhLE1BQU07UUFDckJXLE9BQU96RSxpQkFBaUI4RCxVQUFVQztJQUNwQztJQUVBLE9BQU9VO0FBQ1Q7QUFFTyxTQUFTckYsd0JBQXdCdVIsT0FBTyxFQUFFNU0sT0FBTztJQUN0RCxNQUFNd0ksaUJBQWlCb0UsUUFBUWdCLGlCQUFpQixJQUMxQzlMLGFBQWF4Ryw2QkFBNkJrTixnQkFBZ0J4STtJQUVoRSxPQUFPOEI7QUFDVDtBQUVPLFNBQVNwSSx3QkFBd0JpSCxRQUFRLEVBQUVYLE9BQU87SUFDdkQsSUFBSWMsY0FBYztJQUVsQixNQUFNd0ksa0JBQWtCM0ksU0FBU2tOLGtCQUFrQjtJQUVuRCxJQUFJdkUsb0JBQW9CLE1BQU07UUFDNUJ4SSxjQUFjckgsK0JBQStCNlAsaUJBQWlCdEo7SUFDaEU7SUFFQSxPQUFPYztBQUNUO0FBRU8sU0FBU2xJLHdCQUF3QitILFFBQVEsRUFBRVgsT0FBTztJQUN2RCxJQUFJZSxjQUFjO0lBRWxCLE1BQU0wSSxrQkFBa0I5SSxTQUFTbU4sa0JBQWtCO0lBRW5ELElBQUlyRSxvQkFBb0IsTUFBTTtRQUM1QjFJLGNBQWNwSSwrQkFBK0I4USxpQkFBaUJ6SjtJQUNoRTtJQUVBLE9BQU9lO0FBQ1Q7QUFFTyxTQUFTakcsd0JBQXdCNE0sY0FBYyxFQUFFMUgsT0FBTztJQUM3RCxNQUFNUSxTQUFTa0gsZUFBZTRGLFNBQVMsSUFDakNsRixtQkFBbUI1SCxRQUNuQndHLFFBQVF1RyxpQkFBSyxDQUFDQyxvQkFBb0IsQ0FBQ3BGO0lBRXpDLE9BQU9wQjtBQUNUO0FBRU8sU0FBUzFQLHdCQUF3QjBRLGNBQWMsRUFBRWhJLE9BQU87SUFDN0QsSUFBSThDLFFBQVE7SUFFWixNQUFNSixZQUFZc0YsZUFBZStGLFlBQVk7SUFFN0MsSUFBSXJMLGNBQWMsTUFBTTtRQUN0QkksUUFBUXpMLG1CQUFtQnFMLFdBQVcxQztJQUN4QztJQUVBLE9BQU84QztBQUNUO0FBRU8sU0FBUzNNLHdCQUF3QjZSLGNBQWMsRUFBRWhJLE9BQU87SUFDN0QsSUFBSWlDLFFBQVE7SUFFWixNQUFNK0wsWUFBWWhHLGVBQWVpRyxZQUFZO0lBRTdDLElBQUlELGNBQWMsTUFBTTtRQUN0Qi9MLFFBQVEvTCxtQkFBbUI4WCxXQUFXaE87SUFDeEM7SUFFQSxPQUFPaUM7QUFDVDtBQUVPLFNBQVMzRSx3QkFBd0JtTSxlQUFlLEVBQUV6SixPQUFPO0lBQzlELE1BQU0yQixPQUFPdU0sNEJBQWlCO0lBRTlCLE9BQU92TTtBQUNUO0FBRU8sU0FBU25FLHdCQUF3QmlNLGVBQWUsRUFBRXpKLE9BQU87SUFDOUQsTUFBTTJCLE9BQU91TSw0QkFBaUI7SUFFOUIsT0FBT3ZNO0FBQ1Q7QUFFTyxTQUFTaEYsd0JBQXdCMk0sZUFBZSxFQUFFdEosT0FBTztJQUM5RCxNQUFNVyxXQUFXMkksZ0JBQWdCRSxXQUFXLElBQ3RDbkksT0FBT3pFLGlCQUFpQitELFVBQVVYO0lBRXhDLE9BQU9xQjtBQUNUO0FBRU8sU0FBU2pMLHlCQUF5QmtMLFFBQVEsRUFBRXRCLE9BQU87SUFDeEQsSUFBSTBCLGVBQWU7SUFFbkIsTUFBTXlNLG1CQUFtQjdNLFNBQVM4TSxtQkFBbUI7SUFFckQsSUFBSUQscUJBQXFCLE1BQU07UUFDN0IsTUFBTSxFQUFFNU0sSUFBSSxFQUFFLEdBQUdyQixpQkFBUTtRQUV6QndCLGVBQWVILEtBQUs4TCxZQUFZLENBQUNjLGtCQUFrQm5PO0lBQ3JEO0lBRUEsT0FBTzBCO0FBQ1Q7QUFFTyxTQUFTMUMseUJBQXlCd0csWUFBWSxFQUFFeEYsT0FBTztJQUM1RCxNQUFNaUYsZUFBZU8sYUFBYXdILGVBQWUsSUFDM0M1TSxXQUFXTix5QkFBeUJtRixjQUFjakY7SUFFeEQsT0FBT0k7QUFDVDtBQUVPLFNBQVN2Qix5QkFBeUI2RixZQUFZLEVBQUUxRSxPQUFPO0lBQzVELE1BQU1pRixlQUFlUCxhQUFhc0ksZUFBZSxJQUMzQzVNLFdBQVdOLHlCQUF5Qm1GLGNBQWNqRjtJQUV4RCxPQUFPSTtBQUNUO0FBRU8sU0FBU3RCLHlCQUF5QmdHLFlBQVksRUFBRTlFLE9BQU87SUFDNUQsTUFBTWlGLGVBQWVILGFBQWFrSSxlQUFlLElBQzNDNU0sV0FBV04seUJBQXlCbUYsY0FBY2pGO0lBRXhELE9BQU9JO0FBQ1Q7QUFFTyxTQUFTckYseUJBQXlCaU4sY0FBYyxFQUFFaEksT0FBTztJQUM5RCxJQUFJNkQsU0FBUztJQUViLE1BQU1MLGFBQWF3RSxlQUFlcUcsYUFBYTtJQUUvQyxJQUFJN0ssZUFBZSxNQUFNO1FBQ3ZCSyxTQUFTN0kscUJBQXFCd0ksWUFBWXhEO0lBQzVDO0lBRUEsT0FBTzZEO0FBQ1Q7QUFFTyxTQUFTdEcseUJBQXlCdU0sZ0JBQWdCLEVBQUU5SixPQUFPO0lBQ2hFLE1BQU1zQixXQUFXd0ksaUJBQWlCaUQsV0FBVyxJQUN2Q3BMLE9BQU8vRCxpQkFBaUIwRCxVQUFVdEI7SUFFeEMsT0FBTzJCO0FBQ1Q7QUFFTyxTQUFTNUkseUJBQXlCK1EsZ0JBQWdCLEVBQUU5SixPQUFPO0lBQ2hFLE1BQU15QixPQUFPcUksaUJBQWlCNkMsT0FBTztJQUVyQyxPQUFPbEw7QUFDVDtBQUVPLFNBQVNuRiwwQkFBMEJvSSxZQUFZLEVBQUUxRSxPQUFPO0lBQzdELE1BQU1RLFNBQVNrRSxhQUFhNEksU0FBUyxJQUMvQjFJLFlBQVlwRSxRQUFTLEdBQUc7SUFFOUIsT0FBT29FO0FBQ1Q7QUFFTyxTQUFTckksMEJBQTBCdUksWUFBWSxFQUFFOUUsT0FBTztJQUM3RCxNQUFNUSxTQUFTc0UsYUFBYXdJLFNBQVMsSUFDL0IxSSxZQUFZcEUsUUFBUyxHQUFHO0lBRTlCLE9BQU9vRTtBQUNUO0FBRU8sU0FBUy9PLDBCQUEwQmlVLGdCQUFnQixFQUFFOUosT0FBTztJQUNqRSxNQUFNZ0ssUUFBUUYsaUJBQWlCd0UsUUFBUTtJQUV2QyxPQUFPdEU7QUFDVDtBQUVPLFNBQVM5SywwQkFBMEI0SCxhQUFhLEVBQUU5RyxPQUFPO0lBQzlELE1BQU1pRixlQUFlNkIsY0FBY2tHLGVBQWUsSUFDNUM1TSxXQUFXTix5QkFBeUJtRixjQUFjakY7SUFFeEQsT0FBT0k7QUFDVDtBQUVPLFNBQVN0RCwwQkFBMEJrTCxjQUFjLEVBQUVoSSxPQUFPO0lBQy9ELElBQUl3RSxVQUFVO0lBRWQsTUFBTU4sY0FBYzhELGVBQWV1RyxjQUFjO0lBRWpELElBQUlySyxnQkFBZ0IsTUFBTTtRQUN4Qk0sVUFBVXpILHVCQUF1Qm1ILGFBQWFsRTtJQUNoRDtJQUVBLE9BQU93RTtBQUNUO0FBRU8sU0FBUzlOLDBCQUEwQmlLLFFBQVEsRUFBRVgsT0FBTztJQUN6RCxJQUFJZ0IsZ0JBQWdCO0lBRXBCLE1BQU13SixvQkFBb0I3SixTQUFTNk4sb0JBQW9CO0lBRXZELElBQUloRSxzQkFBc0IsTUFBTTtRQUM5QnhKLGdCQUFnQnZLLG1DQUFtQytULG1CQUFtQnhLO0lBQ3hFO0lBRUEsT0FBT2dCO0FBQ1Q7QUFFTyxTQUFTdkIsMEJBQTBCMkgsYUFBYSxFQUFFcEgsT0FBTztJQUM5RCxNQUFNaUYsZUFBZW1DLGNBQWM0RixlQUFlLElBQzVDNU0sV0FBV04seUJBQXlCbUYsY0FBY2pGO0lBRXhELE9BQU9JO0FBQ1Q7QUFFTyxTQUFTM0QsMEJBQTBCK04saUJBQWlCLEVBQUV4SyxPQUFPO0lBQ2xFLE1BQU1XLFdBQVc2SixrQkFBa0JoQixXQUFXLElBQ3hDbkksT0FBT3pFLGlCQUFpQitELFVBQVVYO0lBRXhDLE9BQU9xQjtBQUNUO0FBRU8sU0FBU3pLLDJCQUEyQjZYLFFBQVEsRUFBRXpPLE9BQU87SUFDMUQsSUFBSWlCLGlCQUFpQjtJQUVyQixNQUFNOEoscUJBQXFCMEQsU0FBU0MscUJBQXFCO0lBRXpELElBQUkzRCx1QkFBdUIsTUFBTTtRQUMvQjlKLGlCQUFpQnRLLHFDQUFxQ29VLG9CQUFvQi9LO0lBQzVFO0lBRUEsT0FBT2lCO0FBQ1Q7QUFFTyxTQUFTakosMkJBQTJCd0wsVUFBVSxFQUFFeEQsT0FBTztJQUM1RCxNQUFNc0MsUUFBUXRFLG9CQUFvQndGLFlBQVl4RCxVQUN4QzBELGVBQWVwQixPQUFPLEdBQUc7SUFFL0IsT0FBT29CO0FBQ1Q7QUFFTyxTQUFTaE0sMkJBQTJCdU4sWUFBWSxFQUFFakYsT0FBTztJQUM5RCxNQUFNbUYsYUFBYTtJQUVuQixPQUFPQTtBQUNUO0FBRU8sU0FBUzVOLDJCQUEyQjBPLGFBQWEsRUFBRWpHLE9BQU87SUFDL0QsTUFBTW1HLFdBQVdGLGNBQWMwSSxVQUFVO0lBRXpDLE9BQU94STtBQUNUO0FBRU8sU0FBU3pHLDJCQUEyQjRJLGNBQWMsRUFBRXRJLE9BQU87SUFDaEUsTUFBTWlGLGVBQWVxRCxlQUFlMEUsZUFBZSxJQUM3QzVNLFdBQVdOLHlCQUF5Qm1GLGNBQWNqRjtJQUV4RCxPQUFPSTtBQUNUO0FBRU8sU0FBU2IsMkJBQTJCZ0ksY0FBYyxFQUFFdkgsT0FBTztJQUNoRSxNQUFNaUYsZUFBZXNDLGVBQWV5RixlQUFlLElBQzdDNU0sV0FBV04seUJBQXlCbUYsY0FBY2pGO0lBRXhELE9BQU9JO0FBQ1Q7QUFFTyxTQUFTakIsMkJBQTJCdUksY0FBYyxFQUFFMUgsT0FBTztJQUNoRSxNQUFNaUYsZUFBZXlDLGVBQWVzRixlQUFlLElBQzdDNU0sV0FBV04seUJBQXlCbUYsY0FBY2pGO0lBRXhELE9BQU9JO0FBQ1Q7QUFFTyxTQUFTN0gsMkJBQTJCeVAsY0FBYyxFQUFFaEksT0FBTztJQUNoRSxJQUFJMEYsV0FBVztJQUVmLE1BQU1GLGVBQWV3QyxlQUFlNEcsZUFBZTtJQUVuRCxJQUFJcEosaUJBQWlCLE1BQU07UUFDekJFLFdBQVdsTix5QkFBeUJnTixjQUFjeEY7SUFDcEQ7SUFFQSxPQUFPMEY7QUFDVDtBQUVPLFNBQVM1TywyQkFBMkJrUixjQUFjLEVBQUVoSSxPQUFPO0lBQ2hFLElBQUk2RSxXQUFXO0lBRWYsTUFBTUgsZUFBZXNELGVBQWU2RyxlQUFlO0lBRW5ELElBQUluSyxpQkFBaUIsTUFBTTtRQUN6QkcsV0FBV2hPLHlCQUF5QjZOLGNBQWMxRTtJQUNwRDtJQUVBLE9BQU82RTtBQUNUO0FBRU8sU0FBUzFOLDJCQUEyQjZRLGNBQWMsRUFBRWhJLE9BQU87SUFDaEUsSUFBSWdGLFdBQVc7SUFFZixNQUFNRixlQUFla0QsZUFBZThHLGVBQWU7SUFFbkQsSUFBSWhLLGlCQUFpQixNQUFNO1FBQ3pCRSxXQUFXOU4seUJBQXlCNE4sY0FBYzlFO0lBQ3BEO0lBRUEsT0FBT2dGO0FBQ1Q7QUFFTyxTQUFTL00sMkJBQTJCMlMsaUJBQWlCLEVBQUU1SyxPQUFPO0lBQ25FLElBQUlpRCxRQUFRO0lBRVosTUFBTUYsWUFBWTZILGtCQUFrQjhDLFlBQVk7SUFFaEQsSUFBSTNLLGNBQWMsTUFBTTtRQUN0QkUsUUFBUS9LLG1CQUFtQjZLLFdBQVcvQztJQUN4QyxPQUFPO1FBQ0wsTUFBTXlFLGdCQUFnQm1HLGtCQUFrQm1FLGdCQUFnQjtRQUV4RDlMLFFBQVE3Syx1QkFBdUJxTSxlQUFlekU7SUFDaEQ7SUFFQSxPQUFPaUQ7QUFDVDtBQUVPLFNBQVN0TCw0QkFBNEJ1TSxXQUFXLEVBQUVsRSxPQUFPO0lBQzlELE1BQU1nUCxtQkFBbUI5SyxZQUFZK0ssbUJBQW1CLElBQ2xEN0ssZUFBZTVNLDZCQUE2QndYLGtCQUFrQmhQO0lBRXBFLE9BQU9vRTtBQUNUO0FBRU8sU0FBUzlKLDRCQUE0QjJMLGFBQWEsRUFBRWpHLE9BQU87SUFDaEUsTUFBTTZILGlCQUFpQjVCLGNBQWNpSixpQkFBaUIsSUFDaEQ5SSxhQUFhL0wsNkJBQTZCd04sZ0JBQWdCN0g7SUFFaEUsT0FBT29HO0FBQ1Q7QUFFTyxTQUFTcEosNEJBQTRCZ0wsY0FBYyxFQUFFaEksT0FBTztJQUNqRSxJQUFJc0gsWUFBWTtJQUVoQixNQUFNRixnQkFBZ0JZLGVBQWVtSCxnQkFBZ0I7SUFFckQsSUFBSS9ILGtCQUFrQixNQUFNO1FBQzFCRSxZQUFZckssMkJBQTJCbUssZUFBZXBIO0lBQ3hEO0lBRUEsT0FBT3NIO0FBQ1Q7QUFFTyxTQUFTM04sNEJBQTRCcU8sY0FBYyxFQUFFaEksT0FBTztJQUNqRSxJQUFJaUgsWUFBWTtJQUVoQixNQUFNSCxnQkFBZ0JrQixlQUFlb0gsZ0JBQWdCO0lBRXJELElBQUl0SSxrQkFBa0IsTUFBTTtRQUMxQkcsWUFBWXJOLDJCQUEyQmtOLGVBQWU5RztJQUN4RDtJQUVBLE9BQU9pSDtBQUNUO0FBRU8sU0FBU3pLLDRCQUE0QitLLGNBQWMsRUFBRXZILE9BQU87SUFDakUsTUFBTVEsU0FBUytHLGVBQWUrRixTQUFTLElBQ2pDMUksWUFBWXBFLFFBQVMsR0FBRztJQUU5QixPQUFPb0U7QUFDVDtBQUVPLFNBQVN0TSw0QkFBNEJtUixlQUFlLEVBQUV6SixPQUFPO0lBQ2xFLE1BQU1xUCxlQUFlNUYsZ0JBQWdCNkYsZUFBZSxJQUM5QzFGLFdBQVdoTixpQkFBaUJ5UyxjQUFjclA7SUFFaEQsT0FBTzRKO0FBQ1Q7QUFFTyxTQUFTdEwsNEJBQTRCb00saUJBQWlCLEVBQUUxSyxPQUFPO0lBQ3BFLE1BQU1rRCxhQUFhd0gsa0JBQWtCbUMsYUFBYSxJQUM1Q2hMLFNBQVN0RCxxQkFBcUIyRSxZQUFZbEQ7SUFFaEQsT0FBTzZCO0FBQ1Q7QUFFTyxTQUFTbkcsNkJBQTZCdUssYUFBYSxFQUFFakcsT0FBTztJQUNqRSxNQUFNK0ksa0JBQWtCOUMsY0FBY3NKLGtCQUFrQixJQUNsRGxKLGNBQWMxSywrQkFBK0JvTixpQkFBaUIvSTtJQUVwRSxPQUFPcUc7QUFDVDtBQUVPLFNBQVNuSSw2QkFBNkJ5RCxJQUFJLEVBQUVzRCxZQUFZLEVBQUVqRixPQUFPO0lBQ3RFLE1BQU1zQyxRQUFRO0lBRWQsT0FBT0E7QUFDVDtBQUVPLFNBQVN6SSw2QkFBNkJtTyxjQUFjLEVBQUVoSSxPQUFPO0lBQ2xFLElBQUk0SCxhQUFhO0lBRWpCLE1BQU1GLGlCQUFpQk0sZUFBZXdILGlCQUFpQjtJQUV2RCxJQUFJOUgsbUJBQW1CLE1BQU07UUFDM0JFLGFBQWE5Tiw2QkFBNkI0TixnQkFBZ0IxSDtJQUM1RDtJQUVBLE9BQU80SDtBQUNUO0FBRU8sU0FBUzFLLDZCQUE2QjhLLGNBQWMsRUFBRWhJLE9BQU87SUFDbEUsSUFBSWtJLGFBQWE7SUFFakIsTUFBTUksaUJBQWlCTixlQUFleUgsaUJBQWlCO0lBRXZELElBQUluSCxtQkFBbUIsTUFBTTtRQUMzQkosYUFBYS9LLDZCQUE2Qm1MLGdCQUFnQnRJO0lBQzVEO0lBRUEsT0FBT2tJO0FBQ1Q7QUFFTyxTQUFTaE0sNkJBQTZCOEwsY0FBYyxFQUFFaEksT0FBTztJQUNsRSxJQUFJeUgsYUFBYTtJQUVqQixNQUFNRixpQkFBaUJTLGVBQWUwSCxpQkFBaUI7SUFFdkQsSUFBSW5JLG1CQUFtQixNQUFNO1FBQzNCRSxhQUFhdEwsNkJBQTZCb0wsZ0JBQWdCdkg7SUFDNUQ7SUFFQSxPQUFPeUg7QUFDVDtBQUVPLFNBQVMxTCw2QkFBNkIwTixlQUFlLEVBQUV6SixPQUFPO0lBQ25FLE1BQU0yUCxnQkFBZ0JsRyxnQkFBZ0JtRyxnQkFBZ0IsSUFDakQvRixZQUFZak4saUJBQWlCK1MsZUFBZTNQO0lBRWpELE9BQU82SjtBQUNUO0FBRU8sU0FBUzVMLDZCQUE2QjBOLG1CQUFtQixFQUFFM0wsT0FBTztJQUN2RSxNQUFNa0MsWUFBWXlKLG9CQUFvQm1CLFlBQVksSUFDNUN4SyxRQUFRbkUsbUJBQW1CK0QsV0FBV2xDO0lBRTVDLE9BQU9zQztBQUNUO0FBRU8sU0FBU3JMLDhCQUE4QmlOLFdBQVcsRUFBRWxFLE9BQU87SUFDaEUsTUFBTTZQLHFCQUFxQjNMLFlBQVk0TCxxQkFBcUIsSUFDdER6TCxpQkFBaUI3TSw2QkFBNkJxWSxvQkFBb0I3UDtJQUV4RSxPQUFPcUU7QUFDVDtBQUVPLFNBQVM1SSw4QkFBOEJ1TSxjQUFjLEVBQUVoSSxPQUFPO0lBQ25FLElBQUlxRyxjQUFjO0lBRWxCLE1BQU0wQyxrQkFBa0JmLGVBQWV1SCxrQkFBa0I7SUFFekQsSUFBSXhHLG9CQUFvQixNQUFNO1FBQzVCMUMsY0FBYzFLLCtCQUErQm9OLGlCQUFpQi9JO0lBQ2hFO0lBRUEsT0FBT3FHO0FBQ1Q7QUFFTyxTQUFTaEssOEJBQThCME0sZUFBZSxFQUFFL0ksT0FBTztJQUNwRSxNQUFNK1AsaUJBQWlCaEgsZ0JBQWdCaUgsaUJBQWlCLElBQ2xEL0csYUFBYThHLGVBQWVFLEdBQUcsQ0FBQyxDQUFDdEs7UUFDL0IsTUFBTUssWUFBWTVKLDJCQUEyQnVKLGVBQWUzRjtRQUU1RCxPQUFPZ0c7SUFDVDtJQUVOLE9BQU9pRDtBQUNUO0FBRU8sU0FBU3pQLDhCQUE4QnVSLGtCQUFrQixFQUFFL0ssT0FBTztJQUN2RSxNQUFNaUwsVUFBVUYsbUJBQW1CbUYsU0FBUztJQUU1QyxPQUFPakY7QUFDVDtBQUVPLFNBQVNoViwrQkFBK0I4SixRQUFRLEVBQUVDLE9BQU87SUFDOUQsTUFBTThMLHlCQUF5Qi9MLFNBQVNvUSx5QkFBeUIsSUFDM0Q5UCxxQkFBcUJ2Syw2Q0FBNkNnVyx3QkFBd0I5TDtJQUVoRyxPQUFPSztBQUNUO0FBRU8sU0FBU3RHLCtCQUErQmdQLGVBQWUsRUFBRS9JLE9BQU87SUFDckUsTUFBTWtKLGNBQWNILGdCQUFnQnFILGFBQWE7SUFFakQsT0FBT2xIO0FBQ1Q7QUFFTyxTQUFTblMsK0JBQStCMFMsZUFBZSxFQUFFekosT0FBTztJQUNyRSxNQUFNMkosY0FBY0YsZ0JBQWdCNEcsYUFBYTtJQUVqRCxPQUFPMUc7QUFDVDtBQUVPLFNBQVN6TywrQkFBK0J3UCxpQkFBaUIsRUFBRTFLLE9BQU87SUFDdkUsTUFBTXlFLGdCQUFnQmlHLGtCQUFrQnFFLGdCQUFnQixJQUNsRHJJLFlBQVl2TCwyQkFBMkJzSixlQUFlekU7SUFFNUQsT0FBTzBHO0FBQ1Q7QUFFTyxTQUFTck8sK0JBQStCMFMsa0JBQWtCLEVBQUUvSyxPQUFPO0lBQ3hFLE1BQU1xUCxlQUFldEUsbUJBQW1CdUUsZUFBZSxJQUNqRDFGLFdBQVdoTixpQkFBaUJ5UyxjQUFjclA7SUFFaEQsT0FBTzRKO0FBQ1Q7QUFFTyxTQUFTeE0sK0JBQStCME8sc0JBQXNCLEVBQUU5TCxPQUFPO0lBQzVFLE1BQU1zQixXQUFXd0ssdUJBQXVCaUIsV0FBVyxJQUM3Q3BMLE9BQU8vRCxpQkFBaUIwRCxVQUFVdEI7SUFFeEMsT0FBTzJCO0FBQ1Q7QUFFTyxTQUFTMUcsK0JBQStCMlAsaUJBQWlCLEVBQUU1SyxPQUFPO0lBQ3ZFLE1BQU15RSxnQkFBZ0JtRyxrQkFBa0JtRSxnQkFBZ0IsSUFDbERySSxZQUFZdkwsMkJBQTJCc0osZUFBZXpFO0lBRTVELE9BQU8wRztBQUNUO0FBRU8sU0FBU3pILCtCQUErQmlNLGtCQUFrQixFQUFFbEwsT0FBTztJQUN4RSxNQUFNaUYsZUFBZWlHLG1CQUFtQjhCLGVBQWUsSUFDakQ1TSxXQUFXTix5QkFBeUJtRixjQUFjakY7SUFFeEQsT0FBT0k7QUFDVDtBQUVPLFNBQVM1SiwrQkFBK0IwVSxrQkFBa0IsRUFBRWxMLE9BQU87SUFDeEUsTUFBTW9GLGVBQWU4RixtQkFBbUJvRixlQUFlLElBQ2pEL0ssV0FBV2hQLHlCQUF5QjZPLGNBQWNwRjtJQUV4RCxPQUFPdUY7QUFDVDtBQUVPLFNBQVMzRixnQ0FBZ0MrQixJQUFJLEVBQUVzRCxZQUFZLEVBQUVqRixPQUFPO0lBQ3pFLE1BQU0sRUFBRWtGLFFBQVEsRUFBRSxHQUFHaEYsaUJBQVEsRUFDM0JDLE9BQU84RSxjQUNQeEQsT0FBT3RJLHFCQUFxQjhMLGVBQzVCM0MsUUFBUXBFLDZCQUE2QnlELE1BQU1zRCxjQUFjakYsVUFDekR1USxpQkFBaUJDLElBQUFBLDhCQUFzQixFQUFDL08sT0FDeENqQixTQUFTK1AsZ0JBQ1Q5UCxhQUFhLE1BQ2JMLFdBQVcsSUFBSThFLFNBQVNsRixTQUFTUSxRQUFRTCxNQUFNTSxZQUFZa0IsTUFBTUYsTUFBTWE7SUFFekUsT0FBT2xDO0FBQ1Q7QUFFTyxTQUFTckssZ0NBQWdDMk0sU0FBUyxFQUFFMUMsT0FBTztJQUNoRSxNQUFNOEwseUJBQXlCcEosVUFBVXlOLHlCQUF5QixJQUM1RDlQLHFCQUFxQnZLLDZDQUE2Q2dXLHdCQUF3QjlMO0lBRWhHLE9BQU9LO0FBQ1Q7QUFFTyxTQUFTM0gsZ0NBQWdDaU4sYUFBYSxFQUFFM0YsT0FBTztJQUNwRSxJQUFJNkYsaUJBQWlCO0lBRXJCLE1BQU1xRixxQkFBcUJ2RixjQUFjOEsscUJBQXFCO0lBRTlELElBQUl2Rix1QkFBdUIsTUFBTTtRQUMvQnJGLGlCQUFpQnBOLHFDQUFxQ3lTLG9CQUFvQmxMO0lBQzVFO0lBRUEsT0FBTzZGO0FBQ1Q7QUFFTyxTQUFTbkwsZ0NBQWdDc04sY0FBYyxFQUFFaEksT0FBTztJQUNyRSxJQUFJbUksZ0JBQWdCO0lBRXBCLE1BQU11QyxvQkFBb0IxQyxlQUFlMEksb0JBQW9CO0lBRTdELElBQUloRyxzQkFBc0IsTUFBTTtRQUM5QnZDLGdCQUFnQnhOLG1DQUFtQytQLG1CQUFtQjFLO0lBQ3hFO0lBRUEsT0FBT21JO0FBQ1Q7QUFFTyxTQUFTck0sZ0NBQWdDaVAsa0JBQWtCLEVBQUUvSyxPQUFPO0lBQ3pFLE1BQU0yUCxnQkFBZ0I1RSxtQkFBbUI2RSxnQkFBZ0IsSUFDbkQvRixZQUFZak4saUJBQWlCK1MsZUFBZTNQO0lBRWxELE9BQU82SjtBQUNUO0FBRU8sU0FBU2hNLGdDQUFnQ3FPLHVCQUF1QixFQUFFbE0sT0FBTztJQUM5RSxNQUFNc0IsV0FBVzRLLHdCQUF3QmEsV0FBVyxJQUM5Q3BMLE9BQU8vRCxpQkFBaUIwRCxVQUFVdEI7SUFFeEMsT0FBTzJCO0FBQ1Q7QUFFTyxTQUFTM0wsaUNBQWlDd04sVUFBVSxFQUFFeEQsT0FBTztJQUNsRSxNQUFNOEwseUJBQXlCdEksV0FBVzJNLHlCQUF5QixJQUM3RDlQLHFCQUFxQnZLLDZDQUE2Q2dXLHdCQUF3QjlMO0lBRWhHLE9BQU9LO0FBQ1Q7QUFFTyxTQUFTakIsaUNBQWlDZ00sb0JBQW9CLEVBQUVwTCxPQUFPO0lBQzVFLE1BQU1pRixlQUFlbUcscUJBQXFCNEIsZUFBZSxJQUNuRDVNLFdBQVdOLHlCQUF5Qm1GLGNBQWNqRjtJQUV4RCxPQUFPSTtBQUNUO0FBRU8sU0FBU25HLGtDQUFrQzBMLGFBQWEsRUFBRTNGLE9BQU87SUFDdEUsSUFBSThGLG1CQUFtQjtJQUV2QixNQUFNc0YsdUJBQXVCekYsY0FBY2dMLHVCQUF1QjtJQUVsRSxJQUFJdkYseUJBQXlCLE1BQU07UUFDakN0RixtQkFBbUI5TCx5Q0FBeUNvUixzQkFBc0JwTDtJQUNwRjtJQUVBLE9BQU84RjtBQUNUO0FBRU8sU0FBU2xLLG1DQUFtQ21OLGVBQWUsRUFBRS9JLE9BQU87SUFDekUsTUFBTTJMLHNCQUFzQjVDLGdCQUFnQjZILHNCQUFzQixJQUM1RHpILGtCQUFrQnROLHVDQUF1QzhQLHFCQUFxQjNMO0lBRXBGLE9BQU9tSjtBQUNUO0FBRU8sU0FBUzVOLG1DQUFtQytQLG1CQUFtQixFQUFFdEwsT0FBTztJQUM3RSxNQUFNd0wsY0FBY0Ysb0JBQW9CdUYsY0FBYztJQUV0RCxPQUFPckY7QUFDVDtBQUVPLFNBQVM5TSxxQ0FBcUNpSCxhQUFhLEVBQUUzRixPQUFPO0lBQ3pFLElBQUkrRixzQkFBc0I7SUFFMUIsTUFBTW1HLDBCQUEwQnZHLGNBQWNtTCwwQkFBMEI7SUFFeEUsSUFBSTVFLDRCQUE0QixNQUFNO1FBQ3BDbkcsc0JBQXNCcEgsK0NBQStDdU4seUJBQXlCbE07SUFDaEc7SUFFQSxPQUFPK0Y7QUFDVDtBQUVPLFNBQVN0TyxxQ0FBcUM4VSxzQkFBc0IsRUFBRXZNLE9BQU87SUFDbEYsTUFBTWdJLGlCQUFpQnVFLHVCQUF1QndFLGlCQUFpQixJQUN6RDVMLGFBQWEzTiw2QkFBNkJ3USxnQkFBZ0JoSTtJQUVoRSxPQUFPbUY7QUFDVDtBQUVPLFNBQVMvSyxxQ0FBcUMwUixzQkFBc0IsRUFBRTlMLE9BQU87SUFDbEYsTUFBTTZILGlCQUFpQmlFLHVCQUF1Qm9ELGlCQUFpQixJQUN6RDlJLGFBQWEvTCw2QkFBNkJ3TixnQkFBZ0I3SDtJQUVoRSxPQUFPb0c7QUFDVDtBQUVPLFNBQVN0TyxzQ0FBc0N3VCxtQkFBbUIsRUFBRXRMLE9BQU87SUFDaEYsTUFBTWdSLHFCQUFxQjFGLG9CQUFvQjJGLHFCQUFxQixJQUM5RHhGLGlCQUFpQjVULHFDQUFxQ21aLG9CQUFvQmhSO0lBRWhGLE9BQU95TDtBQUNUO0FBRU8sU0FBU2pRLHNDQUFzQ3NRLHNCQUFzQixFQUFFOUwsT0FBTztJQUNuRixNQUFNK0ksa0JBQWtCK0MsdUJBQXVCeUQsa0JBQWtCLElBQzNEbEosY0FBYzFLLCtCQUErQm9OLGlCQUFpQi9JO0lBRXBFLE9BQU9xRztBQUNUO0FBRU8sU0FBUzFHLDBDQUEwQ2dDLElBQUksRUFBRTRLLHNCQUFzQixFQUFFdk0sT0FBTztJQUM3RixNQUFNaUYsZUFBZXNILHVCQUF1QlMsZUFBZSxJQUNyRDVNLFdBQVdSLGdDQUFnQytCLE1BQU1zRCxjQUFjakY7SUFFckUsT0FBT0k7QUFDVDtBQUVPLFNBQVNoQywwQkFBMEJnRixVQUFVLEVBQUVwRCxPQUFPO0lBQzNELE1BQU1zRCxjQUFjRixXQUFXNk0sR0FBRyxDQUFDLENBQUMvTjtRQUNsQyxNQUFNSSxRQUFRbkUsbUJBQW1CK0QsV0FBV2xDO1FBRTVDLE9BQU9zQztJQUNUO0lBRUEsT0FBT2dCO0FBQ1Q7QUFFTyxTQUFTaE4sOEJBQThCOE8sWUFBWSxFQUFFcEYsT0FBTztJQUNqRSxNQUFNa1IsZUFBZTlMLGFBQWErTCxlQUFlLElBQzNDN0wsZ0JBQWdCNEwsYUFBYWpCLEdBQUcsQ0FBQyxDQUFDbk07UUFDaEMsTUFBTUcsVUFBVTVOLHVCQUF1QnlOLGFBQWE5RDtRQUVwRCxPQUFPaUU7SUFDVDtJQUVOLE9BQU9xQjtBQUNUO0FBRU8sU0FBU2xLLGtDQUFrQ3NOLGNBQWMsRUFBRTFJLE9BQU87SUFDdkUsTUFBTTRJLGtCQUFrQkYsZUFBZXVILEdBQUcsQ0FBQyxDQUFDeEw7UUFDMUMsTUFBTWlDLFlBQVl2TCwyQkFBMkJzSixlQUFlekU7UUFFNUQsT0FBTzBHO0lBQ1Q7SUFFQSxPQUFPa0M7QUFDVDtBQUVPLFNBQVN6TyxrQ0FBa0MwTixjQUFjLEVBQUU3SCxPQUFPO0lBQ3ZFLE1BQU1vUixpQkFBaUJ2SixlQUFld0osaUJBQWlCLElBQ2pEdEosa0JBQWtCcUosZUFBZW5CLEdBQUcsQ0FBQyxDQUFDdEo7UUFDcEMsTUFBTUUsWUFBWTNNLDJCQUEyQnlNLGVBQWUzRztRQUU1RCxPQUFPNkc7SUFDVDtJQUVOLE9BQU9rQjtBQUNUO0FBRU8sU0FBU2xRLHFDQUFxQ21aLGtCQUFrQixFQUFFaFIsT0FBTztJQUM5RSxNQUFNeUwsaUJBQWlCdUYsbUJBQW1CZixHQUFHLENBQUMsQ0FBQ3JGO1FBQ3ZDLE1BQU1FLGdCQUFnQmxULG1DQUFtQ2dULG1CQUFtQjVLO1FBRTVFLE9BQU84SztJQUNUO0lBRU4sT0FBT1c7QUFDVDtBQUVPLFNBQVNsUywwQ0FBMEM2USxpQkFBaUIsRUFBRXBLLE9BQU87SUFDbEYsTUFBTXNSLHVCQUF1QmxILGtCQUFrQjZGLEdBQUcsQ0FBQyxDQUFDbkc7UUFDbEQsTUFBTUcsZUFBZTdRLGlDQUFpQzBRLGtCQUFrQjlKO1FBRXhFLE9BQU9pSztJQUNUO0lBRUEsT0FBT3FIO0FBQ1Q7QUFFTyxTQUFTN1MsMkRBQTJEa0QsSUFBSSxFQUFFdUssdUJBQXVCLEVBQUVsTSxPQUFPO0lBQy9HLE1BQU11UiwwQkFBMEJyRix3QkFBd0JzRiwwQkFBMEIsSUFDNUVwRiwyQkFBMkJtRix3QkFBd0J0QixHQUFHLENBQUMsQ0FBQzFEO1FBQ3RELE1BQU1rRixxQkFBcUJqVCxvREFBb0RtRCxNQUFNNEssd0JBQXdCdk07UUFFN0csT0FBT3lSO0lBQ1Q7SUFFTixPQUFPckY7QUFDVCJ9
@@ -175,7 +175,14 @@ function primtiveStringFromNominalValues(nominalValues) {
175
175
  return primtiveString;
176
176
  }
177
177
  function applyStringFromVariableAndValues(variable, values) {
178
- const variableString = variable.getString(), valuesString = values.getString(), applyString = valuesString !== _constants.EMPTY_STRING ? `apply(${variableString}, ${valuesString})` : `apply(${variableString})`;
178
+ let parametersString;
179
+ const variableString = variable.getString();
180
+ parametersString = `${variableString}`;
181
+ if (values !== null) {
182
+ const valuesString = values.getString();
183
+ parametersString = `${parametersString}, ${valuesString}`;
184
+ }
185
+ const applyString = `apply(${parametersString})`;
179
186
  return applyString;
180
187
  }
181
188
  function referencesStringFromReferencesArray(referencesArray) {
@@ -254,4 +261,4 @@ function reduceStringFromVariableInitialExpressionAndAnonymousProcedure(variable
254
261
  return reduceString;
255
262
  }
256
263
 
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFWFBPUlQsIEVNUFRZX1NUUklORyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHN0cmluZ0Zyb21TdHJpbmdMaXRlcmFsIH0gZnJvbSBcIi4vc3RyaW5nTGl0ZXJhbFwiO1xuaW1wb3J0IHtyZWZlcmVuY2VGcm9tUmVmZXJlbmNlTm9kZX0gZnJvbSBcIi4vZWxlbWVudFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVybmFyeVN0cmluZ0Zyb21UZXJtKHRlcm0pIHtcbiAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgIHRlcm5hcnlTdHJpbmcgPSBgaWYgKCR7dGVybVN0cmluZ30pIHsgLi4uIH0gZWxzZSB7IC4uLiB9YDtcblxuICByZXR1cm4gdGVybmFyeVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlU3RyaW5nRnJvbU5hbWUobmFtZSkge1xuICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IG5hbWU7ICAvLy9cblxuICByZXR1cm4gdmFyaWFibGVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcykge1xuICBsZXQgdGVybVN0cmluZztcblxuICBwcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgaWYgKHByb3BlcnR5ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eVN0cmluZyA9IHByb3BlcnR5LmdldFN0cmluZygpO1xuXG4gICAgICB0ZXJtU3RyaW5nID0gcHJvcGVydHlTdHJpbmc7ICAvLy9cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVTdHJpbmdGcm9tUHJvcGVydGllcyhwcm9wZXJ0aWVzKSB7XG4gIGxldCB2YWx1ZVN0cmluZztcblxuICBwcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgaWYgKHByb3BlcnR5ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eVN0cmluZyA9IHByb3BlcnR5LmdldFN0cmluZygpO1xuXG4gICAgICB2YWx1ZVN0cmluZyA9IHByb3BlcnR5U3RyaW5nOyAgLy8vXG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdmFsdWVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmltdGl2ZVN0cmluZ0Zyb21Cb29sZWFuKGJvb2xlYW4pIHtcbiAgY29uc3QgZXhwcmVzc3Npb25TdHJpbmcgPSBgJHtib29sZWFufWA7XG5cbiAgcmV0dXJuIGV4cHJlc3NzaW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbXRpdmVTdHJpbmdGcm9tSW50ZWdlcihpbnRlZ2VyKSB7XG4gIGNvbnN0IGV4cHJlc3NzaW9uU3RyaW5nID0gYCR7aW50ZWdlcn1gO1xuXG4gIHJldHVybiBleHByZXNzc2lvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1zU3RyaW5nRnJvbVRlcm1zQXJyYXkodGVybXNBcnJheSkge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zQXJyYXkucmVkdWNlKCh0ZXJtc1N0cmluZywgdGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpO1xuXG4gICAgdGVybXNTdHJpbmcgPSAodGVybXNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgIHRlcm1TdHJpbmcgOlxuICAgICAgYCR7dGVybXNTdHJpbmd9LCAke3Rlcm1TdHJpbmd9YDtcblxuICAgIHJldHVybiB0ZXJtc1N0cmluZztcbiAgfSwgbnVsbCk7IC8vL1xuXG4gIHJldHVybiB0ZXJtc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlc1N0cmluZ0Zyb21WYWx1ZXNBcnJheSh2YWx1ZXNBcnJheSkge1xuICBjb25zdCB2YWx1ZXNTdHJpbmcgPSB2YWx1ZXNBcnJheS5yZWR1Y2UoKHZhbHVlc1N0cmluZywgdmFsdWUpID0+IHtcbiAgICBjb25zdCB2YWx1ZVN0cmluZyA9IHZhbHVlLmdldFN0cmluZygpO1xuXG4gICAgdmFsdWVzU3RyaW5nID0gKHZhbHVlc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmcgOlxuICAgICAgICAgICAgICAgICAgICAgICBgJHt2YWx1ZXNTdHJpbmd9LCAke3ZhbHVlU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gdmFsdWVzU3RyaW5nO1xuICB9LCBudWxsKTsgLy8vXG5cbiAgcmV0dXJuIHZhbHVlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cHJlc3Npb25TdHJpbmdGcm9tUHJvcGVydGllcyhwcm9wZXJ0aWVzKSB7XG4gIGxldCBleHByZXNzaW9uU3RyaW5nO1xuXG4gIHByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcbiAgICBpZiAocHJvcGVydHkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5U3RyaW5nID0gcHJvcGVydHkuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGV4cHJlc3Npb25TdHJpbmcgPSBwcm9wZXJ0eVN0cmluZzsgIC8vL1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGV4cHJlc3Npb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmltdGl2ZVN0cmluZ0Zyb21Ob21pbmFsVmFsdWUobm9taW5hbFZhbHVlKSB7XG4gIGNvbnN0IHN0cmluZyA9IG5vbWluYWxWYWx1ZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcHJpbXRpdmVTdHJpbmcgPSBzdHJpbmc7ICAvLy9cblxuICByZXR1cm4gcHJpbXRpdmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmltdGl2ZVN0cmluZ0Zyb21TdHJpbmdMaXRlcmFsKHN0cmluZ0xpdGVyYWwpIHtcbiAgY29uc3Qgc3RyaW5nID0gc3RyaW5nRnJvbVN0cmluZ0xpdGVyYWwoc3RyaW5nTGl0ZXJhbCksXG4gICAgICAgIHByaW10aXZlU3RyaW5nID0gc3RyaW5nOyAgLy8vXG5cbiAgcmV0dXJuIHByaW10aXZlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbXRpdmVTdHJpbmdGcm9tTm9taW5hbFZhbHVlcyhub21pbmFsVmFsdWVzKSB7XG4gIGxldCBwcmltdGl2ZVN0cmluZztcblxuICBwcmltdGl2ZVN0cmluZyA9IG5vbWluYWxWYWx1ZXMucmVkdWNlKChwcmltaXRpdmVTdHJpbmcsIG5vbWluYWxWYWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5vbWluYWxWYWx1ZVN0cmluZyA9IG5vbWluYWxWYWx1ZS5nZXRTdHJpbmcoKTtcblxuICAgIHByaW1pdGl2ZVN0cmluZyA9IChwcmltaXRpdmVTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYCR7cHJpbWl0aXZlU3RyaW5nfSwgJyR7bm9taW5hbFZhbHVlU3RyaW5nfSdgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGAnJHtub21pbmFsVmFsdWVTdHJpbmd9J2A7XG5cbiAgICByZXR1cm4gcHJpbWl0aXZlU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICBwcmltdGl2ZVN0cmluZyA9IGBbJHtwcmltdGl2ZVN0cmluZ31dYDtcblxuICByZXR1cm4gcHJpbXRpdmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVN0cmluZ0Zyb21WYXJpYWJsZUFuZFZhbHVlcyh2YXJpYWJsZSwgdmFsdWVzKSB7XG4gIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHZhbHVlc1N0cmluZyA9IHZhbHVlcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgYXBwbHlTdHJpbmcgPSAodmFsdWVzU3RyaW5nICE9PSBFTVBUWV9TVFJJTkcpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYGFwcGx5KCR7dmFyaWFibGVTdHJpbmd9LCAke3ZhbHVlc1N0cmluZ30pYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgYGFwcGx5KCR7dmFyaWFibGVTdHJpbmd9KWA7XG5cbiAgcmV0dXJuIGFwcGx5U3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlc1N0cmluZ0Zyb21SZWZlcmVuY2VzQXJyYXkocmVmZXJlbmNlc0FycmF5KSB7XG4gIGNvbnN0IHJlZmVyZW5jZXNTdHJpbmcgPSByZWZlcmVuY2VzQXJyYXkucmVkdWNlKChyZWZlcmVuY2VzU3RyaW5nLCByZWZlcmVuY2UpID0+IHtcbiAgICBjb25zdCByZWZlcmVuY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCk7XG5cbiAgICByZWZlcmVuY2VzU3RyaW5nID0gKHJlZmVyZW5jZXNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VTdHJpbmcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtyZWZlcmVuY2VzU3RyaW5nfSwgJHtyZWZlcmVuY2VTdHJpbmd9YDtcblxuICAgIHJldHVybiByZWZlcmVuY2VzU3RyaW5nO1xuICB9LCBudWxsKTsgLy8vXG5cbiAgcmV0dXJuIHJlZmVyZW5jZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXR1cm5CbG9ja1N0cmluZ0Zyb21SZXR1cm5TdGF0ZW1lbnROb2RlKHJldHVyblN0YXRlbWVudCkge1xuICBjb25zdCByZXR1cm5TdGF0ZW1lbnRTdHJpbmcgPSByZXR1cm5TdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIHJldHVybkJsb2NrU3RyaW5nID0gYHsgLi4uICR7cmV0dXJuU3RhdGVtZW50U3RyaW5nfSB9YDtcblxuICByZXR1cm4gcmV0dXJuQmxvY2tTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub21pbmFsVmFsdWVQcm9wZXJ0eVN0cmluZ0Zyb21OYW1lQW5kVHlwZShuYW1lLCB0eXBlKSB7XG4gIGNvbnN0IG5hbWVTdHJpbmcgPSBuYW1lLCAgLy8vXG4gICAgICAgIHR5cGVTdHJpbmcgPSB0eXBlLmdldFN0cmluZygpLFxuICAgICAgICBub21pbmFsVmFsdWVQcm9wZXJ0eVN0cmluZyA9IGAke3R5cGVTdHJpbmd9ICR7bmFtZVN0cmluZ31gO1xuXG4gIHJldHVybiBub21pbmFsVmFsdWVQcm9wZXJ0eVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVTdHJpbmdGcm9tVHlwZU5hbWVBbmRBcmd1bWVudFR5cGVOYW1lKHR5cGVOYW1lLCBhcmd1bWVudFR5cGVOYW1lKSB7XG4gIGxldCB0eXBlU3RyaW5nO1xuXG4gIHR5cGVTdHJpbmcgPSBgJHt0eXBlTmFtZX1gO1xuXG4gIGlmIChhcmd1bWVudFR5cGVOYW1lICE9PSBudWxsKSB7XG4gICAgdHlwZVN0cmluZyA9IGAke3R5cGVTdHJpbmd9PCR7YXJndW1lbnRUeXBlTmFtZX0+YDtcbiAgfVxuXG4gIHJldHVybiB0eXBlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlQ2FsbFN0cmluZ0Zyb21SZWZlcmVuY2VBbmRWYWx1ZXMocmVmZXJlbmNlLCB2YWx1ZXMpIHtcbiAgY29uc3QgdmFsdWVzU3RyaW5nID0gdmFsdWVzLmdldFN0cmluZygpLFxuICAgICAgICByZWZlcmVuY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCksXG4gICAgICAgIHByb2NlZHVyZUNhbGxTdHJpbmcgPSBgJHtyZWZlcmVuY2VTdHJpbmd9KCR7dmFsdWVzU3RyaW5nfSlgO1xuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZSh0eXBlLCB2YXJpYWJsZSkge1xuICBjb25zdCB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nID0gYCR7dHlwZVN0cmluZ30gJHt2YXJpYWJsZVN0cmluZ30gPSAuLi4gO2A7XG5cbiAgcmV0dXJuIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWVTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUodmFyaWFibGUsIGFub255bW91c1Byb2NlZHVyZSkge1xuICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmcgPSBhbm9ueW1vdXNQcm9jZWR1cmUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHNvbWVTdHJpbmcgPSBgU29tZSgke3ZhcmlhYmxlU3RyaW5nfSwgJHthbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmd9KSBgO1xuXG4gIHJldHVybiBzb21lU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlcnlTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUodmFyaWFibGUsIGFub255bW91c1Byb2NlZHVyZSkge1xuICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmcgPSBhbm9ueW1vdXNQcm9jZWR1cmUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGV2ZXJ5U3RyaW5nID0gYEV2ZXJ5KCR7dmFyaWFibGVTdHJpbmd9LCAke2Fub255bW91c1Byb2NlZHVyZVN0cmluZ30pIGA7XG5cbiAgcmV0dXJuIGV2ZXJ5U3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVZhcmlhYmxlQXNzaWdubWVudCh2YXJpYWJsZUFzc2lnbm1lbnQpIHtcbiAgY29uc3QgdmFyaWFibGUgPSB2YXJpYWJsZUFzc2lnbm1lbnQuZ2V0VmFyaWFibGUoKSxcbiAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nID0gYCR7dmFyaWFibGVTdHJpbmd9ID0gLi4uYDtcblxuICByZXR1cm4gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVQYXJhbWV0ZXJzQW5kUmV0dXJuQmxvY2sodHlwZSwgcGFyYW1ldGVycywgcmV0dXJuQmxvY2spIHtcbiAgY29uc3QgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzLmdldFN0cmluZygpLFxuICAgICAgICByZXR1cm5CbG9ja1N0cmluZyA9IHJldHVybkJsb2NrLmdldFN0cmluZygpLFxuICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmcgPSBgJHt0eXBlU3RyaW5nfSAoJHtwYXJhbWV0ZXJzU3RyaW5nfSkgJHtyZXR1cm5CbG9ja1N0cmluZ31gO1xuXG4gIHJldHVybiBhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nRnJvbU5vbWluYWxWYWx1ZVByb3BlcnRpZXNBcnJheShub21pbmFsVmFsdWVQcm9wZXJ0aWVzQXJyYXkpIHtcbiAgY29uc3Qgbm9taW5hbFZhbHVlUHJvcGVydGllc1N0cmluZyA9IG5vbWluYWxWYWx1ZVByb3BlcnRpZXNBcnJheS5yZWR1Y2UoKG5vbWluYWxWYWx1ZVByb3BlcnRpZXNTdHJpbmcsIG5vbWluYWxWYWx1ZVByb3BlcnR5KSA9PiB7XG4gICAgY29uc3Qgbm9taW5hbFZhbHVlUHJvcGVydHlTdHJpbmcgPSBub21pbmFsVmFsdWVQcm9wZXJ0eS5nZXRTdHJpbmcoKTtcblxuICAgIG5vbWluYWxWYWx1ZVByb3BlcnRpZXNTdHJpbmcgPSAobm9taW5hbFZhbHVlUHJvcGVydGllc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWluYWxWYWx1ZVByb3BlcnR5U3RyaW5nIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7bm9taW5hbFZhbHVlUHJvcGVydGllc1N0cmluZ30sICR7bm9taW5hbFZhbHVlUHJvcGVydHlTdHJpbmd9YDtcblxuICAgIHJldHVybiBub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gbm9taW5hbFZhbHVlUHJvcGVydGllc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50c0FycmF5KHR5cGUsIHZhcmlhYmxlQXNzaWdubWVudHNBcnJheSkge1xuICBsZXQgdmFyaWFibGVBc3NpZ25tZW50c1N0cmluZztcblxuICBjb25zdCB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKTtcblxuICB2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nID0gdmFyaWFibGVBc3NpZ25tZW50c0FycmF5LnJlZHVjZSgodmFyaWFibGVBc3NpZ25tZW50c1N0cmluZywgdmFyaWFibGVBc3NpZ25tZW50KSA9PiB7XG4gICAgY29uc3QgdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nID0gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVZhcmlhYmxlQXNzaWdubWVudCh2YXJpYWJsZUFzc2lnbm1lbnQpO1xuXG4gICAgdmFyaWFibGVBc3NpZ25tZW50c1N0cmluZyA9ICh2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nID09PSBudWxsKSA/XG4gICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmcgOlxuICAgICAgYCR7dmFyaWFibGVBc3NpZ25tZW50c1N0cmluZ30sICR7dmFyaWFibGVBc3NpZ25tZW50U3RyaW5nfWA7XG5cbiAgICByZXR1cm4gdmFyaWFibGVBc3NpZ25tZW50c1N0cmluZztcbiAgfSwgbnVsbCk7IC8vL1xuXG4gIHZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmcgPSBgJHt0eXBlU3RyaW5nfSAke3ZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmd9IDtgOyAvLy9cblxuICByZXR1cm4gdmFyaWFibGVBc3NpZ25tZW50c1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVN0cmluZ0Zyb21UeXBlTGFiZWxFeHBvcnRlZFBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayh0eXBlLCBsYWJlbCwgZXhwb3J0ZWQsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKSB7XG4gIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlLmdldFN0cmluZygpLFxuICAgICAgICBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICBleHBvcnRTVHJpbmcgPSBleHBvcnRlZCA/XG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtFWFBPUlR9IGAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkcsXG4gICAgICAgIHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzLmdldFN0cmluZygpLFxuICAgICAgICByZXR1cm5CbG9ja1N0cmluZyA9IHJldHVybkJsb2NrLmdldFN0cmluZygpLFxuICAgICAgICBwcm9jZWR1cmVTdHJpbmcgPSBgJHtleHBvcnRTVHJpbmd9JHt0eXBlU3RyaW5nfSAke2xhYmVsU3RyaW5nfSgke3BhcmFtZXRlcnNTdHJpbmd9KSAke3JldHVybkJsb2NrU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHByb2NlZHVyZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZHVjZVN0cmluZ0Zyb21WYXJpYWJsZUluaXRpYWxFeHByZXNzaW9uQW5kQW5vbnltb3VzUHJvY2VkdXJlKHZhcmlhYmxlLCBpbml0aWFsRXhwcmVzc2lvbiwgYW5vbnltb3VzUHJvY2VkdXJlKSB7XG4gIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGluaXRpYWxFeHByZXNzaW9uU3RyaW5nID0gaW5pdGlhbEV4cHJlc3Npb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZVN0cmluZyA9IGFub255bW91c1Byb2NlZHVyZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmVkdWNlU3RyaW5nID0gYFJlZHVjZSgke3ZhcmlhYmxlU3RyaW5nfSwgJHthbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmd9LCAke2luaXRpYWxFeHByZXNzaW9uU3RyaW5nfSlgO1xuXG4gIHJldHVybiByZWR1Y2VTdHJpbmc7XG59XG5cbiJdLCJuYW1lcyI6WyJhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmdGcm9tVHlwZVBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayIsImFwcGx5U3RyaW5nRnJvbVZhcmlhYmxlQW5kVmFsdWVzIiwiZXZlcnlTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUiLCJleHByZXNzaW9uU3RyaW5nRnJvbVByb3BlcnRpZXMiLCJub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nRnJvbU5vbWluYWxWYWx1ZVByb3BlcnRpZXNBcnJheSIsIm5vbWluYWxWYWx1ZVByb3BlcnR5U3RyaW5nRnJvbU5hbWVBbmRUeXBlIiwicHJpbXRpdmVTdHJpbmdGcm9tQm9vbGVhbiIsInByaW10aXZlU3RyaW5nRnJvbUludGVnZXIiLCJwcmltdGl2ZVN0cmluZ0Zyb21Ob21pbmFsVmFsdWUiLCJwcmltdGl2ZVN0cmluZ0Zyb21Ob21pbmFsVmFsdWVzIiwicHJpbXRpdmVTdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbCIsInByb2NlZHVyZUNhbGxTdHJpbmdGcm9tUmVmZXJlbmNlQW5kVmFsdWVzIiwicHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVMYWJlbEV4cG9ydGVkUGFyYW1ldGVyc0FuZFJldHVybkJsb2NrIiwicmVkdWNlU3RyaW5nRnJvbVZhcmlhYmxlSW5pdGlhbEV4cHJlc3Npb25BbmRBbm9ueW1vdXNQcm9jZWR1cmUiLCJyZWZlcmVuY2VzU3RyaW5nRnJvbVJlZmVyZW5jZXNBcnJheSIsInJldHVybkJsb2NrU3RyaW5nRnJvbVJldHVyblN0YXRlbWVudE5vZGUiLCJzb21lU3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlIiwidGVybVN0cmluZ0Zyb21Qcm9wZXJ0aWVzIiwidGVybXNTdHJpbmdGcm9tVGVybXNBcnJheSIsInRlcm5hcnlTdHJpbmdGcm9tVGVybSIsInR5cGVTdHJpbmdGcm9tVHlwZU5hbWVBbmRBcmd1bWVudFR5cGVOYW1lIiwidmFsdWVTdHJpbmdGcm9tUHJvcGVydGllcyIsInZhbHVlc1N0cmluZ0Zyb21WYWx1ZXNBcnJheSIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21UeXBlQW5kVmFyaWFibGUiLCJ2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNBcnJheSIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21WYXJpYWJsZUFzc2lnbm1lbnQiLCJ2YXJpYWJsZVN0cmluZ0Zyb21OYW1lIiwidGVybSIsInRlcm1TdHJpbmciLCJnZXRTdHJpbmciLCJ0ZXJuYXJ5U3RyaW5nIiwibmFtZSIsInZhcmlhYmxlU3RyaW5nIiwicHJvcGVydGllcyIsImZvckVhY2giLCJwcm9wZXJ0eSIsInByb3BlcnR5U3RyaW5nIiwidmFsdWVTdHJpbmciLCJib29sZWFuIiwiZXhwcmVzc3Npb25TdHJpbmciLCJpbnRlZ2VyIiwidGVybXNBcnJheSIsInRlcm1zU3RyaW5nIiwicmVkdWNlIiwidmFsdWVzQXJyYXkiLCJ2YWx1ZXNTdHJpbmciLCJ2YWx1ZSIsImV4cHJlc3Npb25TdHJpbmciLCJub21pbmFsVmFsdWUiLCJzdHJpbmciLCJwcmltdGl2ZVN0cmluZyIsInN0cmluZ0xpdGVyYWwiLCJzdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbCIsIm5vbWluYWxWYWx1ZXMiLCJwcmltaXRpdmVTdHJpbmciLCJub21pbmFsVmFsdWVTdHJpbmciLCJ2YXJpYWJsZSIsInZhbHVlcyIsImFwcGx5U3RyaW5nIiwiRU1QVFlfU1RSSU5HIiwicmVmZXJlbmNlc0FycmF5IiwicmVmZXJlbmNlc1N0cmluZyIsInJlZmVyZW5jZSIsInJlZmVyZW5jZVN0cmluZyIsInJldHVyblN0YXRlbWVudCIsInJldHVyblN0YXRlbWVudFN0cmluZyIsInJldHVybkJsb2NrU3RyaW5nIiwidHlwZSIsIm5hbWVTdHJpbmciLCJ0eXBlU3RyaW5nIiwibm9taW5hbFZhbHVlUHJvcGVydHlTdHJpbmciLCJ0eXBlTmFtZSIsImFyZ3VtZW50VHlwZU5hbWUiLCJwcm9jZWR1cmVDYWxsU3RyaW5nIiwidmFyaWFibGVBc3NpZ25tZW50U3RyaW5nIiwiYW5vbnltb3VzUHJvY2VkdXJlIiwiYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nIiwic29tZVN0cmluZyIsImV2ZXJ5U3RyaW5nIiwidmFyaWFibGVBc3NpZ25tZW50IiwiZ2V0VmFyaWFibGUiLCJwYXJhbWV0ZXJzIiwicmV0dXJuQmxvY2siLCJwYXJhbWV0ZXJzU3RyaW5nIiwibm9taW5hbFZhbHVlUHJvcGVydGllc0FycmF5Iiwibm9taW5hbFZhbHVlUHJvcGVydGllc1N0cmluZyIsIm5vbWluYWxWYWx1ZVByb3BlcnR5IiwidmFyaWFibGVBc3NpZ25tZW50c0FycmF5IiwidmFyaWFibGVBc3NpZ25tZW50c1N0cmluZyIsImxhYmVsIiwiZXhwb3J0ZWQiLCJsYWJlbFN0cmluZyIsImV4cG9ydFNUcmluZyIsIkVYUE9SVCIsInByb2NlZHVyZVN0cmluZyIsImluaXRpYWxFeHByZXNzaW9uIiwiaW5pdGlhbEV4cHJlc3Npb25TdHJpbmciLCJyZWR1Y2VTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWdPZ0JBO2VBQUFBOztRQTNGQUM7ZUFBQUE7O1FBMkVBQztlQUFBQTs7UUF6SEFDO2VBQUFBOztRQWtK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
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFWFBPUlQsIEVNUFRZX1NUUklORyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHN0cmluZ0Zyb21TdHJpbmdMaXRlcmFsIH0gZnJvbSBcIi4vc3RyaW5nTGl0ZXJhbFwiO1xuaW1wb3J0IHtyZWZlcmVuY2VGcm9tUmVmZXJlbmNlTm9kZX0gZnJvbSBcIi4vZWxlbWVudFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVybmFyeVN0cmluZ0Zyb21UZXJtKHRlcm0pIHtcbiAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgIHRlcm5hcnlTdHJpbmcgPSBgaWYgKCR7dGVybVN0cmluZ30pIHsgLi4uIH0gZWxzZSB7IC4uLiB9YDtcblxuICByZXR1cm4gdGVybmFyeVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlU3RyaW5nRnJvbU5hbWUobmFtZSkge1xuICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IG5hbWU7ICAvLy9cblxuICByZXR1cm4gdmFyaWFibGVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcykge1xuICBsZXQgdGVybVN0cmluZztcblxuICBwcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgaWYgKHByb3BlcnR5ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eVN0cmluZyA9IHByb3BlcnR5LmdldFN0cmluZygpO1xuXG4gICAgICB0ZXJtU3RyaW5nID0gcHJvcGVydHlTdHJpbmc7ICAvLy9cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVTdHJpbmdGcm9tUHJvcGVydGllcyhwcm9wZXJ0aWVzKSB7XG4gIGxldCB2YWx1ZVN0cmluZztcblxuICBwcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgaWYgKHByb3BlcnR5ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eVN0cmluZyA9IHByb3BlcnR5LmdldFN0cmluZygpO1xuXG4gICAgICB2YWx1ZVN0cmluZyA9IHByb3BlcnR5U3RyaW5nOyAgLy8vXG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdmFsdWVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmltdGl2ZVN0cmluZ0Zyb21Cb29sZWFuKGJvb2xlYW4pIHtcbiAgY29uc3QgZXhwcmVzc3Npb25TdHJpbmcgPSBgJHtib29sZWFufWA7XG5cbiAgcmV0dXJuIGV4cHJlc3NzaW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbXRpdmVTdHJpbmdGcm9tSW50ZWdlcihpbnRlZ2VyKSB7XG4gIGNvbnN0IGV4cHJlc3NzaW9uU3RyaW5nID0gYCR7aW50ZWdlcn1gO1xuXG4gIHJldHVybiBleHByZXNzc2lvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1zU3RyaW5nRnJvbVRlcm1zQXJyYXkodGVybXNBcnJheSkge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zQXJyYXkucmVkdWNlKCh0ZXJtc1N0cmluZywgdGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpO1xuXG4gICAgdGVybXNTdHJpbmcgPSAodGVybXNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgIHRlcm1TdHJpbmcgOlxuICAgICAgYCR7dGVybXNTdHJpbmd9LCAke3Rlcm1TdHJpbmd9YDtcblxuICAgIHJldHVybiB0ZXJtc1N0cmluZztcbiAgfSwgbnVsbCk7IC8vL1xuXG4gIHJldHVybiB0ZXJtc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlc1N0cmluZ0Zyb21WYWx1ZXNBcnJheSh2YWx1ZXNBcnJheSkge1xuICBjb25zdCB2YWx1ZXNTdHJpbmcgPSB2YWx1ZXNBcnJheS5yZWR1Y2UoKHZhbHVlc1N0cmluZywgdmFsdWUpID0+IHtcbiAgICBjb25zdCB2YWx1ZVN0cmluZyA9IHZhbHVlLmdldFN0cmluZygpO1xuXG4gICAgdmFsdWVzU3RyaW5nID0gKHZhbHVlc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmcgOlxuICAgICAgICAgICAgICAgICAgICAgICBgJHt2YWx1ZXNTdHJpbmd9LCAke3ZhbHVlU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gdmFsdWVzU3RyaW5nO1xuICB9LCBudWxsKTsgLy8vXG5cbiAgcmV0dXJuIHZhbHVlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cHJlc3Npb25TdHJpbmdGcm9tUHJvcGVydGllcyhwcm9wZXJ0aWVzKSB7XG4gIGxldCBleHByZXNzaW9uU3RyaW5nO1xuXG4gIHByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcbiAgICBpZiAocHJvcGVydHkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5U3RyaW5nID0gcHJvcGVydHkuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGV4cHJlc3Npb25TdHJpbmcgPSBwcm9wZXJ0eVN0cmluZzsgIC8vL1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGV4cHJlc3Npb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmltdGl2ZVN0cmluZ0Zyb21Ob21pbmFsVmFsdWUobm9taW5hbFZhbHVlKSB7XG4gIGNvbnN0IHN0cmluZyA9IG5vbWluYWxWYWx1ZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcHJpbXRpdmVTdHJpbmcgPSBzdHJpbmc7ICAvLy9cblxuICByZXR1cm4gcHJpbXRpdmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmltdGl2ZVN0cmluZ0Zyb21TdHJpbmdMaXRlcmFsKHN0cmluZ0xpdGVyYWwpIHtcbiAgY29uc3Qgc3RyaW5nID0gc3RyaW5nRnJvbVN0cmluZ0xpdGVyYWwoc3RyaW5nTGl0ZXJhbCksXG4gICAgICAgIHByaW10aXZlU3RyaW5nID0gc3RyaW5nOyAgLy8vXG5cbiAgcmV0dXJuIHByaW10aXZlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbXRpdmVTdHJpbmdGcm9tTm9taW5hbFZhbHVlcyhub21pbmFsVmFsdWVzKSB7XG4gIGxldCBwcmltdGl2ZVN0cmluZztcblxuICBwcmltdGl2ZVN0cmluZyA9IG5vbWluYWxWYWx1ZXMucmVkdWNlKChwcmltaXRpdmVTdHJpbmcsIG5vbWluYWxWYWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5vbWluYWxWYWx1ZVN0cmluZyA9IG5vbWluYWxWYWx1ZS5nZXRTdHJpbmcoKTtcblxuICAgIHByaW1pdGl2ZVN0cmluZyA9IChwcmltaXRpdmVTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYCR7cHJpbWl0aXZlU3RyaW5nfSwgJyR7bm9taW5hbFZhbHVlU3RyaW5nfSdgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGAnJHtub21pbmFsVmFsdWVTdHJpbmd9J2A7XG5cbiAgICByZXR1cm4gcHJpbWl0aXZlU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICBwcmltdGl2ZVN0cmluZyA9IGBbJHtwcmltdGl2ZVN0cmluZ31dYDtcblxuICByZXR1cm4gcHJpbXRpdmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVN0cmluZ0Zyb21WYXJpYWJsZUFuZFZhbHVlcyh2YXJpYWJsZSwgdmFsdWVzKSB7XG4gIGxldCBwYXJhbWV0ZXJzU3RyaW5nO1xuXG4gIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgcGFyYW1ldGVyc1N0cmluZyA9IGAke3ZhcmlhYmxlU3RyaW5nfWA7XG5cbiAgaWYgKHZhbHVlcyAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHZhbHVlc1N0cmluZyA9IHZhbHVlcy5nZXRTdHJpbmcoKTtcblxuICAgIHBhcmFtZXRlcnNTdHJpbmcgPSBgJHtwYXJhbWV0ZXJzU3RyaW5nfSwgJHt2YWx1ZXNTdHJpbmd9YDtcbiAgfVxuXG4gIGNvbnN0IGFwcGx5U3RyaW5nID0gYGFwcGx5KCR7cGFyYW1ldGVyc1N0cmluZ30pYDtcblxuICByZXR1cm4gYXBwbHlTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VzU3RyaW5nRnJvbVJlZmVyZW5jZXNBcnJheShyZWZlcmVuY2VzQXJyYXkpIHtcbiAgY29uc3QgcmVmZXJlbmNlc1N0cmluZyA9IHJlZmVyZW5jZXNBcnJheS5yZWR1Y2UoKHJlZmVyZW5jZXNTdHJpbmcsIHJlZmVyZW5jZSkgPT4ge1xuICAgIGNvbnN0IHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgIHJlZmVyZW5jZXNTdHJpbmcgPSAocmVmZXJlbmNlc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGAke3JlZmVyZW5jZXNTdHJpbmd9LCAke3JlZmVyZW5jZVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZXNTdHJpbmc7XG4gIH0sIG51bGwpOyAvLy9cblxuICByZXR1cm4gcmVmZXJlbmNlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJldHVybkJsb2NrU3RyaW5nRnJvbVJldHVyblN0YXRlbWVudE5vZGUocmV0dXJuU3RhdGVtZW50KSB7XG4gIGNvbnN0IHJldHVyblN0YXRlbWVudFN0cmluZyA9IHJldHVyblN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmV0dXJuQmxvY2tTdHJpbmcgPSBgeyAuLi4gJHtyZXR1cm5TdGF0ZW1lbnRTdHJpbmd9IH1gO1xuXG4gIHJldHVybiByZXR1cm5CbG9ja1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vbWluYWxWYWx1ZVByb3BlcnR5U3RyaW5nRnJvbU5hbWVBbmRUeXBlKG5hbWUsIHR5cGUpIHtcbiAgY29uc3QgbmFtZVN0cmluZyA9IG5hbWUsICAvLy9cbiAgICAgICAgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIG5vbWluYWxWYWx1ZVByb3BlcnR5U3RyaW5nID0gYCR7dHlwZVN0cmluZ30gJHtuYW1lU3RyaW5nfWA7XG5cbiAgcmV0dXJuIG5vbWluYWxWYWx1ZVByb3BlcnR5U3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVN0cmluZ0Zyb21UeXBlTmFtZUFuZEFyZ3VtZW50VHlwZU5hbWUodHlwZU5hbWUsIGFyZ3VtZW50VHlwZU5hbWUpIHtcbiAgbGV0IHR5cGVTdHJpbmc7XG5cbiAgdHlwZVN0cmluZyA9IGAke3R5cGVOYW1lfWA7XG5cbiAgaWYgKGFyZ3VtZW50VHlwZU5hbWUgIT09IG51bGwpIHtcbiAgICB0eXBlU3RyaW5nID0gYCR7dHlwZVN0cmluZ308JHthcmd1bWVudFR5cGVOYW1lfT5gO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsU3RyaW5nRnJvbVJlZmVyZW5jZUFuZFZhbHVlcyhyZWZlcmVuY2UsIHZhbHVlcykge1xuICBjb25zdCB2YWx1ZXNTdHJpbmcgPSB2YWx1ZXMuZ2V0U3RyaW5nKCksXG4gICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcHJvY2VkdXJlQ2FsbFN0cmluZyA9IGAke3JlZmVyZW5jZVN0cmluZ30oJHt2YWx1ZXNTdHJpbmd9KWA7XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGxTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlKHR5cGUsIHZhcmlhYmxlKSB7XG4gIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlLmdldFN0cmluZygpLFxuICAgICAgICB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmcgPSBgJHt0eXBlU3RyaW5nfSAke3ZhcmlhYmxlU3RyaW5nfSA9IC4uLiA7YDtcblxuICByZXR1cm4gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29tZVN0cmluZ0Zyb21WYXJpYWJsZUFuZEFub255bW91c1Byb2NlZHVyZSh2YXJpYWJsZSwgYW5vbnltb3VzUHJvY2VkdXJlKSB7XG4gIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZVN0cmluZyA9IGFub255bW91c1Byb2NlZHVyZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc29tZVN0cmluZyA9IGBTb21lKCR7dmFyaWFibGVTdHJpbmd9LCAke2Fub255bW91c1Byb2NlZHVyZVN0cmluZ30pIGA7XG5cbiAgcmV0dXJuIHNvbWVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmVyeVN0cmluZ0Zyb21WYXJpYWJsZUFuZEFub255bW91c1Byb2NlZHVyZSh2YXJpYWJsZSwgYW5vbnltb3VzUHJvY2VkdXJlKSB7XG4gIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZVN0cmluZyA9IGFub255bW91c1Byb2NlZHVyZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgZXZlcnlTdHJpbmcgPSBgRXZlcnkoJHt2YXJpYWJsZVN0cmluZ30sICR7YW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nfSkgYDtcblxuICByZXR1cm4gZXZlcnlTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVmFyaWFibGVBc3NpZ25tZW50KHZhcmlhYmxlQXNzaWdubWVudCkge1xuICBjb25zdCB2YXJpYWJsZSA9IHZhcmlhYmxlQXNzaWdubWVudC5nZXRWYXJpYWJsZSgpLFxuICAgICAgICB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmcgPSBgJHt2YXJpYWJsZVN0cmluZ30gPSAuLi5gO1xuXG4gIHJldHVybiB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmdGcm9tVHlwZVBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayh0eXBlLCBwYXJhbWV0ZXJzLCByZXR1cm5CbG9jaykge1xuICBjb25zdCB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcGFyYW1ldGVyc1N0cmluZyA9IHBhcmFtZXRlcnMuZ2V0U3RyaW5nKCksXG4gICAgICAgIHJldHVybkJsb2NrU3RyaW5nID0gcmV0dXJuQmxvY2suZ2V0U3RyaW5nKCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZVN0cmluZyA9IGAke3R5cGVTdHJpbmd9ICgke3BhcmFtZXRlcnNTdHJpbmd9KSAke3JldHVybkJsb2NrU3RyaW5nfWA7XG5cbiAgcmV0dXJuIGFub255bW91c1Byb2NlZHVyZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vbWluYWxWYWx1ZVByb3BlcnRpZXNTdHJpbmdGcm9tTm9taW5hbFZhbHVlUHJvcGVydGllc0FycmF5KG5vbWluYWxWYWx1ZVByb3BlcnRpZXNBcnJheSkge1xuICBjb25zdCBub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nID0gbm9taW5hbFZhbHVlUHJvcGVydGllc0FycmF5LnJlZHVjZSgobm9taW5hbFZhbHVlUHJvcGVydGllc1N0cmluZywgbm9taW5hbFZhbHVlUHJvcGVydHkpID0+IHtcbiAgICBjb25zdCBub21pbmFsVmFsdWVQcm9wZXJ0eVN0cmluZyA9IG5vbWluYWxWYWx1ZVByb3BlcnR5LmdldFN0cmluZygpO1xuXG4gICAgbm9taW5hbFZhbHVlUHJvcGVydGllc1N0cmluZyA9IChub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9taW5hbFZhbHVlUHJvcGVydHlTdHJpbmcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nfSwgJHtub21pbmFsVmFsdWVQcm9wZXJ0eVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIG5vbWluYWxWYWx1ZVByb3BlcnRpZXNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkodHlwZSwgdmFyaWFibGVBc3NpZ25tZW50c0FycmF5KSB7XG4gIGxldCB2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nO1xuXG4gIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlLmdldFN0cmluZygpO1xuXG4gIHZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmcgPSB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkucmVkdWNlKCh2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nLCB2YXJpYWJsZUFzc2lnbm1lbnQpID0+IHtcbiAgICBjb25zdCB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmcgPSB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVmFyaWFibGVBc3NpZ25tZW50KHZhcmlhYmxlQXNzaWdubWVudCk7XG5cbiAgICB2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nID0gKHZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZyA6XG4gICAgICBgJHt2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nfSwgJHt2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmd9YDtcblxuICAgIHJldHVybiB2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nO1xuICB9LCBudWxsKTsgLy8vXG5cbiAgdmFyaWFibGVBc3NpZ25tZW50c1N0cmluZyA9IGAke3R5cGVTdHJpbmd9ICR7dmFyaWFibGVBc3NpZ25tZW50c1N0cmluZ30gO2A7IC8vL1xuXG4gIHJldHVybiB2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVMYWJlbEV4cG9ydGVkUGFyYW1ldGVyc0FuZFJldHVybkJsb2NrKHR5cGUsIGxhYmVsLCBleHBvcnRlZCwgcGFyYW1ldGVycywgcmV0dXJuQmxvY2spIHtcbiAgY29uc3QgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCksXG4gICAgICAgIGV4cG9ydFNUcmluZyA9IGV4cG9ydGVkID9cbiAgICAgICAgICAgICAgICAgICAgICAgIGAke0VYUE9SVH0gYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORyxcbiAgICAgICAgcGFyYW1ldGVyc1N0cmluZyA9IHBhcmFtZXRlcnMuZ2V0U3RyaW5nKCksXG4gICAgICAgIHJldHVybkJsb2NrU3RyaW5nID0gcmV0dXJuQmxvY2suZ2V0U3RyaW5nKCksXG4gICAgICAgIHByb2NlZHVyZVN0cmluZyA9IGAke2V4cG9ydFNUcmluZ30ke3R5cGVTdHJpbmd9ICR7bGFiZWxTdHJpbmd9KCR7cGFyYW1ldGVyc1N0cmluZ30pICR7cmV0dXJuQmxvY2tTdHJpbmd9YDtcblxuICByZXR1cm4gcHJvY2VkdXJlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlU3RyaW5nRnJvbVZhcmlhYmxlSW5pdGlhbEV4cHJlc3Npb25BbmRBbm9ueW1vdXNQcm9jZWR1cmUodmFyaWFibGUsIGluaXRpYWxFeHByZXNzaW9uLCBhbm9ueW1vdXNQcm9jZWR1cmUpIHtcbiAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgaW5pdGlhbEV4cHJlc3Npb25TdHJpbmcgPSBpbml0aWFsRXhwcmVzc2lvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nID0gYW5vbnltb3VzUHJvY2VkdXJlLmdldFN0cmluZygpLFxuICAgICAgICByZWR1Y2VTdHJpbmcgPSBgUmVkdWNlKCR7dmFyaWFibGVTdHJpbmd9LCAke2Fub255bW91c1Byb2NlZHVyZVN0cmluZ30sICR7aW5pdGlhbEV4cHJlc3Npb25TdHJpbmd9KWA7XG5cbiAgcmV0dXJuIHJlZHVjZVN0cmluZztcbn1cblxuIl0sIm5hbWVzIjpbImFub255bW91c1Byb2NlZHVyZVN0cmluZ0Zyb21UeXBlUGFyYW1ldGVyc0FuZFJldHVybkJsb2NrIiwiYXBwbHlTdHJpbmdGcm9tVmFyaWFibGVBbmRWYWx1ZXMiLCJldmVyeVN0cmluZ0Zyb21WYXJpYWJsZUFuZEFub255bW91c1Byb2NlZHVyZSIsImV4cHJlc3Npb25TdHJpbmdGcm9tUHJvcGVydGllcyIsIm5vbWluYWxWYWx1ZVByb3BlcnRpZXNTdHJpbmdGcm9tTm9taW5hbFZhbHVlUHJvcGVydGllc0FycmF5Iiwibm9taW5hbFZhbHVlUHJvcGVydHlTdHJpbmdGcm9tTmFtZUFuZFR5cGUiLCJwcmltdGl2ZVN0cmluZ0Zyb21Cb29sZWFuIiwicHJpbXRpdmVTdHJpbmdGcm9tSW50ZWdlciIsInByaW10aXZlU3RyaW5nRnJvbU5vbWluYWxWYWx1ZSIsInByaW10aXZlU3RyaW5nRnJvbU5vbWluYWxWYWx1ZXMiLCJwcmltdGl2ZVN0cmluZ0Zyb21TdHJpbmdMaXRlcmFsIiwicHJvY2VkdXJlQ2FsbFN0cmluZ0Zyb21SZWZlcmVuY2VBbmRWYWx1ZXMiLCJwcm9jZWR1cmVTdHJpbmdGcm9tVHlwZUxhYmVsRXhwb3J0ZWRQYXJhbWV0ZXJzQW5kUmV0dXJuQmxvY2siLCJyZWR1Y2VTdHJpbmdGcm9tVmFyaWFibGVJbml0aWFsRXhwcmVzc2lvbkFuZEFub255bW91c1Byb2NlZHVyZSIsInJlZmVyZW5jZXNTdHJpbmdGcm9tUmVmZXJlbmNlc0FycmF5IiwicmV0dXJuQmxvY2tTdHJpbmdGcm9tUmV0dXJuU3RhdGVtZW50Tm9kZSIsInNvbWVTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUiLCJ0ZXJtU3RyaW5nRnJvbVByb3BlcnRpZXMiLCJ0ZXJtc1N0cmluZ0Zyb21UZXJtc0FycmF5IiwidGVybmFyeVN0cmluZ0Zyb21UZXJtIiwidHlwZVN0cmluZ0Zyb21UeXBlTmFtZUFuZEFyZ3VtZW50VHlwZU5hbWUiLCJ2YWx1ZVN0cmluZ0Zyb21Qcm9wZXJ0aWVzIiwidmFsdWVzU3RyaW5nRnJvbVZhbHVlc0FycmF5IiwidmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZSIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50c0FycmF5IiwidmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVZhcmlhYmxlQXNzaWdubWVudCIsInZhcmlhYmxlU3RyaW5nRnJvbU5hbWUiLCJ0ZXJtIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsInRlcm5hcnlTdHJpbmciLCJuYW1lIiwidmFyaWFibGVTdHJpbmciLCJwcm9wZXJ0aWVzIiwiZm9yRWFjaCIsInByb3BlcnR5IiwicHJvcGVydHlTdHJpbmciLCJ2YWx1ZVN0cmluZyIsImJvb2xlYW4iLCJleHByZXNzc2lvblN0cmluZyIsImludGVnZXIiLCJ0ZXJtc0FycmF5IiwidGVybXNTdHJpbmciLCJyZWR1Y2UiLCJ2YWx1ZXNBcnJheSIsInZhbHVlc1N0cmluZyIsInZhbHVlIiwiZXhwcmVzc2lvblN0cmluZyIsIm5vbWluYWxWYWx1ZSIsInN0cmluZyIsInByaW10aXZlU3RyaW5nIiwic3RyaW5nTGl0ZXJhbCIsInN0cmluZ0Zyb21TdHJpbmdMaXRlcmFsIiwibm9taW5hbFZhbHVlcyIsInByaW1pdGl2ZVN0cmluZyIsIm5vbWluYWxWYWx1ZVN0cmluZyIsInZhcmlhYmxlIiwidmFsdWVzIiwicGFyYW1ldGVyc1N0cmluZyIsImFwcGx5U3RyaW5nIiwicmVmZXJlbmNlc0FycmF5IiwicmVmZXJlbmNlc1N0cmluZyIsInJlZmVyZW5jZSIsInJlZmVyZW5jZVN0cmluZyIsInJldHVyblN0YXRlbWVudCIsInJldHVyblN0YXRlbWVudFN0cmluZyIsInJldHVybkJsb2NrU3RyaW5nIiwidHlwZSIsIm5hbWVTdHJpbmciLCJ0eXBlU3RyaW5nIiwibm9taW5hbFZhbHVlUHJvcGVydHlTdHJpbmciLCJ0eXBlTmFtZSIsImFyZ3VtZW50VHlwZU5hbWUiLCJwcm9jZWR1cmVDYWxsU3RyaW5nIiwidmFyaWFibGVBc3NpZ25tZW50U3RyaW5nIiwiYW5vbnltb3VzUHJvY2VkdXJlIiwiYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nIiwic29tZVN0cmluZyIsImV2ZXJ5U3RyaW5nIiwidmFyaWFibGVBc3NpZ25tZW50IiwiZ2V0VmFyaWFibGUiLCJwYXJhbWV0ZXJzIiwicmV0dXJuQmxvY2siLCJub21pbmFsVmFsdWVQcm9wZXJ0aWVzQXJyYXkiLCJub21pbmFsVmFsdWVQcm9wZXJ0aWVzU3RyaW5nIiwibm9taW5hbFZhbHVlUHJvcGVydHkiLCJ2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkiLCJ2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nIiwibGFiZWwiLCJleHBvcnRlZCIsImxhYmVsU3RyaW5nIiwiZXhwb3J0U1RyaW5nIiwiRVhQT1JUIiwiRU1QVFlfU1RSSU5HIiwicHJvY2VkdXJlU3RyaW5nIiwiaW5pdGlhbEV4cHJlc3Npb24iLCJpbml0aWFsRXhwcmVzc2lvblN0cmluZyIsInJlZHVjZVN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBd09nQkE7ZUFBQUE7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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-furtle",
3
3
  "author": "James Smith",
4
- "version": "3.0.541",
4
+ "version": "3.0.543",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-furtle",
7
7
  "description": "Occam's Furtle language.",
@@ -11,8 +11,8 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "necessary": "^17.7.2",
14
- "occam-grammars": "^1.3.694",
15
- "occam-languages": "^3.0.91",
14
+ "occam-grammars": "^1.3.696",
15
+ "occam-languages": "^3.0.92",
16
16
  "occam-lexers": "^23.2.12",
17
17
  "occam-parsers": "^23.2.17",
18
18
  "occam-query": "^4.1.210"
@@ -28,8 +28,8 @@
28
28
  "juxtapose": "^4.0.143",
29
29
  "lively-cli": "^3.0.3",
30
30
  "occam-grammar-utilities": "^8.1.27",
31
- "occam-model": "^1.0.597",
32
- "occam-server": "^7.0.96",
31
+ "occam-model": "^1.0.598",
32
+ "occam-server": "^7.0.97",
33
33
  "watchful-cli": "^1.7.102"
34
34
  },
35
35
  "scripts": {
@@ -120,7 +120,9 @@ export default define(class Apply extends Element {
120
120
 
121
121
  values = Values.fromValue(value);
122
122
 
123
- values = values.merge(this.values); ///
123
+ if (this.values !== null) {
124
+ values = values.merge(this.values); ///
125
+ }
124
126
 
125
127
  const { ProcedureCall } = elements,
126
128
  procedureCall = ProcedureCall.fromReferenceAndValues(reference, values, context);
@@ -137,16 +137,16 @@ export default define(class Procedure extends Element {
137
137
  }, back);
138
138
  });
139
139
 
140
- callNominally(nominalValues, forward, back) {
140
+ evaluateNominally(nominalValues, forward, back) {
141
141
  const context = this.getContext(),
142
142
  procedureString = this.getString(); ///
143
143
 
144
- context.trace(`Calling the '${procedureString}' function nominally...`);
144
+ context.trace(`Evaluating the '${procedureString}' function nominally...`);
145
145
 
146
146
  const values = valuesFromNominalValues(nominalValues, context);
147
147
 
148
148
  return this.evaluate(values, context, (value, back) => {
149
- context.debug(`...called the '${procedureString}' function nominally.`);
149
+ context.debug(`...evaluated the '${procedureString}' function nominally.`);
150
150
 
151
151
  return forward(value, back);
152
152
  }, back);
@@ -797,8 +797,13 @@ export function nameFromLabelNode(labelNode, context) {
797
797
  }
798
798
 
799
799
  export function valuesFromApplyNode(allNode, context) {
800
- const valuesNode = allNode.getValuesNode(), ///
801
- values = valuesFromValuesNode(valuesNode, context);
800
+ let values = null;
801
+
802
+ const valuesNode = allNode.getValuesNode();
803
+
804
+ if (valuesNode !== null) {
805
+ values = valuesFromValuesNode(valuesNode, context);
806
+ }
802
807
 
803
808
  return values;
804
809
  }
@@ -867,7 +872,7 @@ export function typeFromVariableNode(variableNode, context) {
867
872
  }
868
873
 
869
874
  export function variableFromApplyNode(allNode, context) {
870
- const variableNode = allNode.getVariableNode(), ///
875
+ const variableNode = allNode.getVariableNode(),
871
876
  variable = variableFromVariableNode(variableNode, context);
872
877
 
873
878
  return variable;
@@ -132,11 +132,19 @@ export function primtiveStringFromNominalValues(nominalValues) {
132
132
  }
133
133
 
134
134
  export function applyStringFromVariableAndValues(variable, values) {
135
- const variableString = variable.getString(),
136
- valuesString = values.getString(),
137
- applyString = (valuesString !== EMPTY_STRING) ?
138
- `apply(${variableString}, ${valuesString})` :
139
- `apply(${variableString})`;
135
+ let parametersString;
136
+
137
+ const variableString = variable.getString();
138
+
139
+ parametersString = `${variableString}`;
140
+
141
+ if (values !== null) {
142
+ const valuesString = values.getString();
143
+
144
+ parametersString = `${parametersString}, ${valuesString}`;
145
+ }
146
+
147
+ const applyString = `apply(${parametersString})`;
140
148
 
141
149
  return applyString;
142
150
  }