occam-nominal 1.0.642 → 1.0.643

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.
@@ -299,6 +299,12 @@ const _default = (0, _elements.define)(class Type extends _occamlanguages.Elemen
299
299
  const { string } = json, typeNode = (0, _instantiate.instantiateType)(string, context), node = typeNode, breakPoint = null, name = (0, _element.nameFromTypeNode)(typeNode, context), closed = (0, _json.closedFromJSON)(json, context), prefixName = (0, _json.prefixNameFromJSON)(json, context), superTypes = (0, _json.superTypesFromJSON)(json, context), properties = (0, _json.propertiesFromJSON)(json, context), provisional = (0, _json.provisionalFromJSON)(json);
300
300
  context = null; ///
301
301
  type = new Type(context, string, node, breakPoint, name, closed, prefixName, superTypes, properties, provisional);
302
+ properties.forEach((property)=>{
303
+ const propertyType = property.getType();
304
+ if (propertyType === null) {
305
+ property.setType(type);
306
+ }
307
+ });
302
308
  }, context);
303
309
  return type;
304
310
  }
@@ -310,4 +316,4 @@ const _default = (0, _elements.define)(class Type extends _occamlanguages.Elemen
310
316
  }
311
317
  });
312
318
 
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVR5cGUgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgQkFTRV9UWVBFX1NZTUJPTCB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IG5hbWVGcm9tVHlwZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IGJhc2VUeXBlRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3R5cGVcIjtcbmltcG9ydCB7IGNsb3NlZEZyb21KU09OLFxuICAgICAgICAgbmFtZVRvTmFtZUpTT04sXG4gICAgICAgICBjbG9zZWRUb0Nsb3NlZEpTT04sXG4gICAgICAgICBwcm9wZXJ0aWVzRnJvbUpTT04sXG4gICAgICAgICBwcmVmaXhOYW1lRnJvbUpTT04sXG4gICAgICAgICBzdXBlclR5cGVzRnJvbUpTT04sXG4gICAgICAgICBwcm92aXNpb25hbEZyb21KU09OLFxuICAgICAgICAgcHJlZml4TmFtZVRvUHJldml4TmFtZUpTT04sXG4gICAgICAgICBzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTixcbiAgICAgICAgIHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OLFxuICAgICAgICAgcHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IGFsbCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgcHVzaCwgaW50ZXJzZWN0aW9uIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFR5cGUgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuYW1lLCBjbG9zZWQsIHByZWZpeE5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5jbG9zZWQgPSBjbG9zZWQ7XG4gICAgdGhpcy5wcmVmaXhOYW1lID0gcHJlZml4TmFtZTtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBzdXBlclR5cGVzO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgaXNDbG9zZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvc2VkO1xuICB9XG5cbiAgZ2V0UHJlZml4TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVmaXhOYW1lO1xuICB9XG5cbiAgZ2V0U3VwZXJUeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGVzO1xuICB9XG5cbiAgZ2V0VHlwZU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHR5cGVOb2RlO1xuICB9XG5cbiAgZ2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzID0gW10pIHtcbiAgICBwdXNoKHByb3BlcnRpZXMsIHRoaXMucHJvcGVydGllcyk7XG5cbiAgICB0aGlzLnN1cGVyVHlwZXMuZm9yRWFjaCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICBjb25zdCBzdXBlclR5cGVQcm9wZXJ0aWVzID0gc3VwZXJUeXBlLmdldFByb3BlcnRpZXMoKTtcblxuICAgICAgcHVzaChwcm9wZXJ0aWVzLCBzdXBlclR5cGVQcm9wZXJ0aWVzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aXNpb25hbDtcbiAgfVxuXG4gIHNldE5hbWUobmFtZSkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBzZXRDbG9zZWQoY2xvc2VkKSB7XG4gICAgdGhpcy5jbG9zZWQgPSBjbG9zZWQ7XG4gIH1cblxuICBzZXRQcmVmaXhOYW1lKHByZWZpeE5hbWUpIHtcbiAgICB0aGlzLnByZWZpeE5hbWUgPSBwcmVmaXhOYW1lO1xuICB9XG5cbiAgc2V0U3VwZXJUeXBlcyhzdXBlclR5cGVzKSB7XG4gICAgdGhpcy5zdXBlclR5cGVzID0gc3VwZXJUeXBlcztcbiAgfVxuXG4gIHNldFByb3BlcnRpZXMocHJvcGVydGllcykge1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gIH1cblxuICBzZXRQcm92aXNpb25hbChwcm92aXNpb25hbCkge1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgfVxuXG4gIHNldFN1cGVyVHlwZShzdXBlclR5cGUpIHtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBbXG4gICAgICBzdXBlclR5cGVcbiAgICBdO1xuICB9XG5cbiAgaXNPcGVuKCkge1xuICAgIGNvbnN0IG9wZW4gPSAhdGhpcy5jbG9zZWQ7XG5cbiAgICByZXR1cm4gb3BlbjtcbiAgfVxuXG4gIGlzQmFzZVR5cGUoKSB7XG4gICAgbGV0IGJhc2VUeXBlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBCQVNFX1RZUEVfU1lNQk9MKSB7XG4gICAgICBiYXNlVHlwZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2VUeXBlO1xuICB9XG5cbiAgaXNFc3RhYmxpc2hlZCgpIHtcbiAgICBjb25zdCBwcm92aXNpb25hbCA9IHRoaXMuaXNQcm92aXNpb25hbCgpLFxuICAgICAgICAgIGVzdGFibGlzaGVkID0gIXByb3Zpc2lvbmFsO1xuXG4gICAgcmV0dXJuIGVzdGFibGlzaGVkO1xuICB9XG5cbiAgcmV0cmlldmVBbmNlc3RvclR5cGVzKGFuY2VzdG9yVHlwZXMgPSBbXSkge1xuICAgIGNvbnN0IGJhc2VUeXBlID0gdGhpcy5pc0Jhc2VUeXBlKCk7XG5cbiAgICBpZiAoIWJhc2VUeXBlKSB7XG4gICAgICBjb25zdCBhbmNlc3RvclR5cGUgPSB0aGlzLCAgLy8vXG4gICAgICAgICAgICBhbmNlc3RvclR5cGVzSW5jbHVkZUFuY2VzdG9yVHlwZSA9IGFuY2VzdG9yVHlwZXMuaW5jbHVkZXMoYW5jZXN0b3JUeXBlKTtcblxuICAgICAgaWYgKCFhbmNlc3RvclR5cGVzSW5jbHVkZUFuY2VzdG9yVHlwZSkge1xuICAgICAgICBhbmNlc3RvclR5cGVzLnB1c2goYW5jZXN0b3JUeXBlKTtcblxuICAgICAgICB0aGlzLnN1cGVyVHlwZXMuZm9yRWFjaCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICAgICAgc3VwZXJUeXBlLnJldHJpZXZlQW5jZXN0b3JUeXBlcyhhbmNlc3RvclR5cGVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFuY2VzdG9yVHlwZXM7XG4gIH1cblxuICBpc1N0cmljdCgpIHtcbiAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpLFxuICAgICAgICAgIHN0cmljdCA9ICFwcmVmaXhlZDtcblxuICAgIHJldHVybiBzdHJpY3Q7XG4gIH1cblxuICBpc0NvdHlwZSgpIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCksXG4gICAgICAgICAgcHJvcGVydGllc0xlbmd0aCA9IHByb3BlcnRpZXMubGVuZ3RoLFxuICAgICAgICAgIGNvdHlwZSA9IChwcm9wZXJ0aWVzTGVuZ3RoID4gMCk7XG5cbiAgICByZXR1cm4gY290eXBlO1xuICB9XG5cbiAgaXNQcmVmaXhlZCgpIHtcbiAgICBjb25zdCBwcmVmaXhlZCA9ICh0aGlzLnByZWZpeE5hbWUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHByZWZpeGVkO1xuICB9XG5cbiAgZ2V0UHJlZml4ZWRUeXBlTmFtZSgpIHtcbiAgICBsZXQgcHJlZml4ZWRUeXBlTmFtZSA9IG51bGw7XG5cbiAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKHByZWZpeGVkKSB7XG4gICAgICBwcmVmaXhlZFR5cGVOYW1lID0gYCR7dGhpcy5wcmVmaXhOYW1lfSR7dGhpcy5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWZpeGVkVHlwZU5hbWU7XG4gIH1cblxuICBpc0pvaW5lZFRvKHR5cGUpIHtcbiAgICBsZXQgam9pbmVkVG8gPSBmYWxzZTtcblxuICAgIGNvbnN0IGFuY2VzdG9yVHlwZXMgPSB0aGlzLnJldHJpZXZlQW5jZXN0b3JUeXBlcygpLFxuICAgICAgICAgIHR5cGVBbmNlc3RvclR5cGVzID0gdHlwZS5yZXRyaWV2ZUFuY2VzdG9yVHlwZXMoKSxcbiAgICAgICAgICBpbnRlcnNlY3RpbmdBbmNlc3RvclR5cGVzID0gaW50ZXJzZWN0aW9uKGFuY2VzdG9yVHlwZXMsIHR5cGVBbmNlc3RvclR5cGVzLCAoYW5jZXN0b3JUeXBlLCB0eXBlQW5jZXN0b3JUeXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbmNlc3RvclR5cGVFcXVhbFRvQVR5cGVuY2VzdG9yVHlwZSA9IGFuY2VzdG9yVHlwZS5pc0VxdWFsVG8odHlwZUFuY2VzdG9yVHlwZSk7XG5cbiAgICAgICAgICAgIGlmIChhbmNlc3RvclR5cGVFcXVhbFRvQVR5cGVuY2VzdG9yVHlwZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBpbnRlcnNlY3RpbmdBbmNlc3RvclR5cGVzTGVuZ3RoID0gaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlc0xlbmd0aCA+IDApIHtcbiAgICAgIGpvaW5lZFRvID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gam9pbmVkVG87XG4gIH1cblxuICBpc0VxdWFsVG8odHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG8gPSAodGhpcyA9PT0gdHlwZSk7XG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIGlzU3ViVHlwZU9mKHR5cGUpIHtcbiAgICBsZXQgc3ViVHlwZU9mO1xuXG4gICAgY29uc3QgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgICBpZiAodGhpcyA9PT0gYmFzZVR5cGUpIHtcbiAgICAgIHN1YlR5cGVPZiA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdWJUeXBlT2YgPSB0aGlzLnN1cGVyVHlwZXMuc29tZSgoc3VwZXJUeXBlKSA9PiB7IC8vL1xuICAgICAgICBpZiAoc3VwZXJUeXBlID09PSB0eXBlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdXBlclR5cGVTdWJUeXBlT2ZUeXBlID0gc3VwZXJUeXBlLmlzU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICAgIGlmIChzdXBlclR5cGVTdWJUeXBlT2ZUeXBlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YlR5cGVPZjtcbiAgfVxuXG4gIGlzU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IHN1YlR5cGVPZiA9IHR5cGUuaXNTdWJUeXBlT2YodGhpcyksXG4gICAgICAgICAgc3VwZXJUeXBlT2YgPSBzdWJUeXBlT2Y7ICAvLy9cblxuICAgIHJldHVybiBzdXBlclR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3ViVHlwZU9mID0gdGhpcy5pc1N1YlR5cGVPZih0eXBlKSxcbiAgICAgICAgICBlcXVhbFRvT3JTdWJUeXBlT2YgPSAoZXF1YWxUbyB8fCBzdWJUeXBlT2YpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9PclN1YlR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG8gPSB0aGlzLmlzRXF1YWxUbyh0eXBlKSxcbiAgICAgICAgICBzdXBlclR5cGVPZiA9IHRoaXMuaXNTdXBlclR5cGVPZih0eXBlKSxcbiAgICAgICAgICBlcXVhbFRvT3JTdXBlclR5cGVPZiA9IChlcXVhbFRvIHx8IHN1cGVyVHlwZU9mKTtcblxuICAgIHJldHVybiBlcXVhbFRvT3JTdXBlclR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb1N1YlR5cGVPclN1cGVyVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3ViVHlwZU9mID0gdGhpcy5pc1N1YlR5cGVPZih0eXBlKSxcbiAgICAgICAgICBzdXBlclR5cGVPZiA9IHRoaXMuaXNTdXBlclR5cGVPZih0eXBlKSxcbiAgICAgICAgICBlcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2YgPSAoZXF1YWxUbyB8fCBzdWJUeXBlT2YgfHwgc3VwZXJUeXBlT2YpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9TdWJUeXBlT3JTdXBlclR5cGVPZjtcbiAgfVxuXG4gIGNvbXBhcmVUeXBlTmFtZSh0eXBlTmFtZSkge1xuICAgIGNvbnN0IG5hbWVUeXBlTmFtZSA9ICh0aGlzLm5hbWUgPT09IHR5cGVOYW1lKSxcbiAgICAgICAgICBjb21wYXJlc1RvVHlwZU5hbWUgPSBuYW1lVHlwZU5hbWU7ICAvLy9cblxuICAgIHJldHVybiBjb21wYXJlc1RvVHlwZU5hbWU7XG4gIH1cblxuICBjb21wYXJlUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpIHtcbiAgICBjb25zdCBjb21wYXJlc1RvUHJvdmlzaW9uYWwgPSAocHJvdmlzaW9uYWwgPT09IHRoaXMucHJvdmlzaW9uYWwpO1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9Qcm92aXNpb25hbDtcbiAgfVxuXG4gIGNvbXBhcmVQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpIHtcbiAgICBsZXQgY29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IHByZWZpeGVkID0gdGhpcy5pc1ByZWZpeGVkKCk7XG5cbiAgICBpZiAocHJlZml4ZWQpIHtcbiAgICAgIGNvbnN0IHByZWZpeGVkVHlwZU5hbWVBID0gcHJlZml4ZWRUeXBlTmFtZTsgLy8vXG5cbiAgICAgIHByZWZpeGVkVHlwZU5hbWUgPSB0aGlzLmdldFByZWZpeGVkVHlwZU5hbWUoKTtcblxuICAgICAgY29uc3QgcHJlZml4ZWRUeXBlTmFtZUIgPSBwcmVmaXhlZFR5cGVOYW1lOyAvLy9cblxuICAgICAgaWYgKHByZWZpeGVkVHlwZU5hbWVBID09PSBwcmVmaXhlZFR5cGVOYW1lQikge1xuICAgICAgICBjb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lO1xuICB9XG5cbiAgdmVyaWZ5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKGNvbnRleHQsICh0eXBlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHR5cGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9KTtcblxuICB2YWxpZGF0ZShjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlhZGluZyB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IHR5cGUgPSBudWxsLFxuICAgICAgICAgIHZhbGlkYXRlV2hlblN0cmljdCA9IHRoaXMudmFsaWRhdGVXaGVuU3RyaWN0LmJpbmQodGhpcyksXG4gICAgICAgICAgdmFsaWRhdGVXaGVuUHJlZml4ZWQgPSB0aGlzLnZhbGlkYXRlV2hlblByZWZpeGVkLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZhbGlkYXRlV2hlblN0cmljdCxcbiAgICAgIHZhbGlkYXRlV2hlblByZWZpeGVkXG4gICAgXSwgdHlwZSwgY29udGV4dCwgKHR5cGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHR5cGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZhbGlkYXRlIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlblN0cmljdCh0eXBlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3RyaWN0ID0gdGhpcy5pc1N0cmljdCgpO1xuXG4gICAgaWYgKCFzdHJpY3QpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHR5cGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZVN0cmluZ30nIHN0cmljdCB0eXBlLi4uYCk7XG5cbiAgICBjb25zdCB0eXBlTmFtZSA9IHRoaXMubmFtZSwgLy8vXG4gICAgICAgICAgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCksXG4gICAgICAgICAgYmFzZVR5cGVDb21wYXJlVHlwZU5hbWVUeXBlTmFtZSA9IGJhc2VUeXBlLmNvbXBhcmVUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICBpZiAoYmFzZVR5cGVDb21wYXJlVHlwZU5hbWVUeXBlTmFtZSkge1xuICAgICAgdHlwZSA9IGJhc2VUeXBlOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGFsaXNlZFR5cGUgPSBjb250ZXh0LmZpbmRhbGlhc2VkVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgICBpZiAoYWxpc2VkVHlwZSAhPT0gbnVsbCkge1xuICAgICAgICB0eXBlID0gYWxpc2VkVHlwZTsgIC8vL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaW5jbHVkZVJlbGVhc2UgPSB0cnVlLFxuICAgICAgICAgICAgICBpbmNsdWRlRGVwZW5kZW5jaWVzID0gZmFsc2U7XG5cbiAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSwgaW5jbHVkZURlcGVuZGVuY2llcyk7IC8vL1xuXG4gICAgICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3R5cGVTdHJpbmd9JyBzdHJpY3QgdHlwZSBpcyBub3QgcHJlc2VudCBsb2NhbGx5LmApO1xuXG4gICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZVN0cmluZ30nIHN0cmljdCB0eXBlLmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQodHlwZSwgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5QcmVmaXhlZCh0eXBlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgcHJlZml4ZWQgPSB0aGlzLmlzUHJlZml4ZWQoKTtcblxuICAgIGlmICghcHJlZml4ZWQpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHR5cGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZVN0cmluZ30nIHByZWZpeGVkIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IHByZWZpeGVkVHlwZU5hbWUgPSB0aGlzLmdldFByZWZpeGVkVHlwZU5hbWUoKSxcbiAgICAgICAgICBpbmNsdWRlUmVsZWFzZSA9IHRydWU7XG5cbiAgICBsZXQgaW5jbHVkZURlcGVuZGVuY2llcztcblxuICAgIGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlLCBpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3R5cGVTdHJpbmd9JyBwcmVmaXhlZCB0eXBlIGlzIHByZXNlbnQgbG9jYWxseS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBpbmNsdWRlRGVwZW5kZW5jaWVzID0gdHJ1ZTtcblxuICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlLCBpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGBUaGUgJyR7dHlwZVN0cmluZ30nIHByZWZpeGVkIHR5cGUgaXMgbm90IHByZXNlbnQgZ2xvYmFsbHkuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlU3RyaW5nfScgcHJlZml4ZWQgdHlwZS5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHR5cGUsIGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKGFicmlkZ2VkID0gZmFsc2UpIHtcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLFxuICAgICAgICAgIG5hbWVKU09OID0gbmFtZVRvTmFtZUpTT04odGhpcy5uYW1lKSxcbiAgICAgICAgICBwcmVmaXhOYW1lSlNPTiA9IHByZWZpeE5hbWVUb1ByZXZpeE5hbWVKU09OKHRoaXMucHJlZml4TmFtZSksXG4gICAgICAgICAgbmFtZSA9IG5hbWVKU09OLCAgLy8vXG4gICAgICAgICAgcHJlZml4TmFtZSA9IHByZWZpeE5hbWVKU09OOyAgLy8vXG5cbiAgICBjb25zdCBqc29uID0ge1xuICAgICAgc3RyaW5nLFxuICAgICAgbmFtZSxcbiAgICAgIHByZWZpeE5hbWVcbiAgICB9O1xuXG4gICAgaWYgKCFhYnJpZGdlZCkge1xuICAgICAgY29uc3QgY2xvc2VkSlNPTiA9IGNsb3NlZFRvQ2xvc2VkSlNPTih0aGlzLmNsb3NlZCksXG4gICAgICAgICAgICBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OKHRoaXMuc3VwZXJUeXBlcyksXG4gICAgICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OKHRoaXMucHJvcGVydGllcyksXG4gICAgICAgICAgICBwcm92aXNpbm9hbEpTT00gPSBwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OKHRoaXMucHJvdmlzaW9uYWwpLFxuICAgICAgICAgICAgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNKU09OLCAgLy8vXG4gICAgICAgICAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllc0pTT04sICAvLy9cbiAgICAgICAgICAgIHByb3Zpc2lvbmFsID0gcHJvdmlzaW5vYWxKU09NOyAgLy8vXG5cbiAgICAgIE9iamVjdC5hc3NpZ24oanNvbiwge1xuICAgICAgICBjbG9zZWRKU09OLFxuICAgICAgICBzdXBlclR5cGVzLFxuICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICBwcm92aXNpb25hbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVHlwZVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHR5cGU7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICB0eXBlTm9kZSA9IGluc3RhbnRpYXRlVHlwZShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IHR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgbmFtZSA9IG5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgY2xvc2VkID0gY2xvc2VkRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBwcmVmaXhOYW1lID0gcHJlZml4TmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBwcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsRnJvbUpTT04oanNvbik7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsOyAvLy9cblxuICAgICAgdHlwZSA9IG5ldyBUeXBlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSwgY2xvc2VkLCBwcmVmaXhOYW1lLCBzdXBlclR5cGVzLCBwcm9wZXJ0aWVzLCBwcm92aXNpb25hbCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTmFtZShuYW1lLCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RyaW5nID0gbmFtZSwgIC8vL1xuICAgICAgICAgIG5vZGUgPSBudWxsLFxuICAgICAgICAgIGNsb3NlZCA9IG51bGwsXG4gICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgcHJlZml4TmFtZSA9IG51bGwsXG4gICAgICAgICAgc3VwZXJUeXBlcyA9IFtdLFxuICAgICAgICAgIHByb3BlcnRpZXMgPSBbXSxcbiAgICAgICAgICBwcm92aXNpb25hbCA9IGZhbHNlO1xuXG4gICAgY29udGV4dCA9IG51bGw7XG5cbiAgICBjb25zdCB0eXBlID0gbmV3IFR5cGUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuYW1lLCBjbG9zZWQsIHByZWZpeE5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJhbGwiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJwdXNoIiwiaW50ZXJzZWN0aW9uIiwiYXJyYXlVdGlsaXRpZXMiLCJkZWZpbmUiLCJUeXBlIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsIm5hbWUiLCJjbG9zZWQiLCJwcmVmaXhOYW1lIiwic3VwZXJUeXBlcyIsInByb3BlcnRpZXMiLCJwcm92aXNpb25hbCIsImdldE5hbWUiLCJpc0Nsb3NlZCIsImdldFByZWZpeE5hbWUiLCJnZXRTdXBlclR5cGVzIiwiZ2V0VHlwZU5vZGUiLCJnZXROb2RlIiwidHlwZU5vZGUiLCJnZXRQcm9wZXJ0aWVzIiwiZm9yRWFjaCIsInN1cGVyVHlwZSIsInN1cGVyVHlwZVByb3BlcnRpZXMiLCJpc1Byb3Zpc2lvbmFsIiwic2V0TmFtZSIsInNldENsb3NlZCIsInNldFByZWZpeE5hbWUiLCJzZXRTdXBlclR5cGVzIiwic2V0UHJvcGVydGllcyIsInNldFByb3Zpc2lvbmFsIiwic2V0U3VwZXJUeXBlIiwiaXNPcGVuIiwib3BlbiIsImlzQmFzZVR5cGUiLCJiYXNlVHlwZSIsIkJBU0VfVFlQRV9TWU1CT0wiLCJpc0VzdGFibGlzaGVkIiwiZXN0YWJsaXNoZWQiLCJyZXRyaWV2ZUFuY2VzdG9yVHlwZXMiLCJhbmNlc3RvclR5cGVzIiwiYW5jZXN0b3JUeXBlIiwiYW5jZXN0b3JUeXBlc0luY2x1ZGVBbmNlc3RvclR5cGUiLCJpbmNsdWRlcyIsImlzU3RyaWN0IiwicHJlZml4ZWQiLCJpc1ByZWZpeGVkIiwic3RyaWN0IiwiaXNDb3R5cGUiLCJwcm9wZXJ0aWVzTGVuZ3RoIiwibGVuZ3RoIiwiY290eXBlIiwiZ2V0UHJlZml4ZWRUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWUiLCJpc0pvaW5lZFRvIiwidHlwZSIsImpvaW5lZFRvIiwidHlwZUFuY2VzdG9yVHlwZXMiLCJpbnRlcnNlY3RpbmdBbmNlc3RvclR5cGVzIiwidHlwZUFuY2VzdG9yVHlwZSIsImFuY2VzdG9yVHlwZUVxdWFsVG9BVHlwZW5jZXN0b3JUeXBlIiwiaXNFcXVhbFRvIiwiaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlc0xlbmd0aCIsImVxdWFsVG8iLCJpc1N1YlR5cGVPZiIsInN1YlR5cGVPZiIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJzb21lIiwic3VwZXJUeXBlU3ViVHlwZU9mVHlwZSIsImlzU3VwZXJUeXBlT2YiLCJzdXBlclR5cGVPZiIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwiZXF1YWxUb09yU3ViVHlwZU9mIiwiaXNFcXVhbFRvT3JTdXBlclR5cGVPZiIsImVxdWFsVG9PclN1cGVyVHlwZU9mIiwiaXNFcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2YiLCJlcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2YiLCJjb21wYXJlVHlwZU5hbWUiLCJ0eXBlTmFtZSIsIm5hbWVUeXBlTmFtZSIsImNvbXBhcmVzVG9UeXBlTmFtZSIsImNvbXBhcmVQcm92aXNpb25hbCIsImNvbXBhcmVzVG9Qcm92aXNpb25hbCIsImNvbXBhcmVQcmVmaXhlZFR5cGVOYW1lIiwiY29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUiLCJwcmVmaXhlZFR5cGVOYW1lQSIsInByZWZpeGVkVHlwZU5hbWVCIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJ0eXBlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2YWxpZGF0ZSIsImRlYnVnIiwidmFsaWRhdGVXaGVuU3RyaWN0IiwiYmluZCIsInZhbGlkYXRlV2hlblByZWZpeGVkIiwiZXhjZXB0aW9uIiwiYmFzZVR5cGVDb21wYXJlVHlwZU5hbWVUeXBlTmFtZSIsImFsaXNlZFR5cGUiLCJmaW5kYWxpYXNlZFR5cGVCeVR5cGVOYW1lIiwiaW5jbHVkZVJlbGVhc2UiLCJpbmNsdWRlRGVwZW5kZW5jaWVzIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lIiwiZmluZFR5cGVCeVByZWZpeGVkVHlwZU5hbWUiLCJ0b0pTT04iLCJhYnJpZGdlZCIsIm5hbWVKU09OIiwibmFtZVRvTmFtZUpTT04iLCJwcmVmaXhOYW1lSlNPTiIsInByZWZpeE5hbWVUb1ByZXZpeE5hbWVKU09OIiwianNvbiIsImNsb3NlZEpTT04iLCJjbG9zZWRUb0Nsb3NlZEpTT04iLCJzdXBlclR5cGVzSlNPTiIsInN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OIiwicHJvcGVydGllc0pTT04iLCJwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTiIsInByb3Zpc2lub2FsSlNPTSIsInByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04iLCJPYmplY3QiLCJhc3NpZ24iLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVUeXBlIiwibmFtZUZyb21UeXBlTm9kZSIsImNsb3NlZEZyb21KU09OIiwicHJlZml4TmFtZUZyb21KU09OIiwic3VwZXJUeXBlc0Zyb21KU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvdmlzaW9uYWxGcm9tSlNPTiIsImZyb21OYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkEyQkE7OztlQUFBOzs7MkJBekIrQjtnQ0FDcUM7MEJBRTdDO3lCQUNLOzZCQUNJOzJCQUNDO3lCQUNBO3NCQUNHO3NCQVdTO0FBRTdDLE1BQU0sRUFBRUEsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUMvQixFQUFFQyxXQUFXLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ3JDLEVBQUVDLElBQUksRUFBRUMsWUFBWSxFQUFFLEdBQUdDLHlC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
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVR5cGUgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgQkFTRV9UWVBFX1NZTUJPTCB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IG5hbWVGcm9tVHlwZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IGJhc2VUeXBlRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3R5cGVcIjtcbmltcG9ydCB7IGNsb3NlZEZyb21KU09OLFxuICAgICAgICAgbmFtZVRvTmFtZUpTT04sXG4gICAgICAgICBjbG9zZWRUb0Nsb3NlZEpTT04sXG4gICAgICAgICBwcm9wZXJ0aWVzRnJvbUpTT04sXG4gICAgICAgICBwcmVmaXhOYW1lRnJvbUpTT04sXG4gICAgICAgICBzdXBlclR5cGVzRnJvbUpTT04sXG4gICAgICAgICBwcm92aXNpb25hbEZyb21KU09OLFxuICAgICAgICAgcHJlZml4TmFtZVRvUHJldml4TmFtZUpTT04sXG4gICAgICAgICBzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTixcbiAgICAgICAgIHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OLFxuICAgICAgICAgcHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IGFsbCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgcHVzaCwgaW50ZXJzZWN0aW9uIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFR5cGUgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuYW1lLCBjbG9zZWQsIHByZWZpeE5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5jbG9zZWQgPSBjbG9zZWQ7XG4gICAgdGhpcy5wcmVmaXhOYW1lID0gcHJlZml4TmFtZTtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBzdXBlclR5cGVzO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgaXNDbG9zZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvc2VkO1xuICB9XG5cbiAgZ2V0UHJlZml4TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVmaXhOYW1lO1xuICB9XG5cbiAgZ2V0U3VwZXJUeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGVzO1xuICB9XG5cbiAgZ2V0VHlwZU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHR5cGVOb2RlO1xuICB9XG5cbiAgZ2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzID0gW10pIHtcbiAgICBwdXNoKHByb3BlcnRpZXMsIHRoaXMucHJvcGVydGllcyk7XG5cbiAgICB0aGlzLnN1cGVyVHlwZXMuZm9yRWFjaCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICBjb25zdCBzdXBlclR5cGVQcm9wZXJ0aWVzID0gc3VwZXJUeXBlLmdldFByb3BlcnRpZXMoKTtcblxuICAgICAgcHVzaChwcm9wZXJ0aWVzLCBzdXBlclR5cGVQcm9wZXJ0aWVzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aXNpb25hbDtcbiAgfVxuXG4gIHNldE5hbWUobmFtZSkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBzZXRDbG9zZWQoY2xvc2VkKSB7XG4gICAgdGhpcy5jbG9zZWQgPSBjbG9zZWQ7XG4gIH1cblxuICBzZXRQcmVmaXhOYW1lKHByZWZpeE5hbWUpIHtcbiAgICB0aGlzLnByZWZpeE5hbWUgPSBwcmVmaXhOYW1lO1xuICB9XG5cbiAgc2V0U3VwZXJUeXBlcyhzdXBlclR5cGVzKSB7XG4gICAgdGhpcy5zdXBlclR5cGVzID0gc3VwZXJUeXBlcztcbiAgfVxuXG4gIHNldFByb3BlcnRpZXMocHJvcGVydGllcykge1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gIH1cblxuICBzZXRQcm92aXNpb25hbChwcm92aXNpb25hbCkge1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgfVxuXG4gIHNldFN1cGVyVHlwZShzdXBlclR5cGUpIHtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBbXG4gICAgICBzdXBlclR5cGVcbiAgICBdO1xuICB9XG5cbiAgaXNPcGVuKCkge1xuICAgIGNvbnN0IG9wZW4gPSAhdGhpcy5jbG9zZWQ7XG5cbiAgICByZXR1cm4gb3BlbjtcbiAgfVxuXG4gIGlzQmFzZVR5cGUoKSB7XG4gICAgbGV0IGJhc2VUeXBlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBCQVNFX1RZUEVfU1lNQk9MKSB7XG4gICAgICBiYXNlVHlwZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2VUeXBlO1xuICB9XG5cbiAgaXNFc3RhYmxpc2hlZCgpIHtcbiAgICBjb25zdCBwcm92aXNpb25hbCA9IHRoaXMuaXNQcm92aXNpb25hbCgpLFxuICAgICAgICAgIGVzdGFibGlzaGVkID0gIXByb3Zpc2lvbmFsO1xuXG4gICAgcmV0dXJuIGVzdGFibGlzaGVkO1xuICB9XG5cbiAgcmV0cmlldmVBbmNlc3RvclR5cGVzKGFuY2VzdG9yVHlwZXMgPSBbXSkge1xuICAgIGNvbnN0IGJhc2VUeXBlID0gdGhpcy5pc0Jhc2VUeXBlKCk7XG5cbiAgICBpZiAoIWJhc2VUeXBlKSB7XG4gICAgICBjb25zdCBhbmNlc3RvclR5cGUgPSB0aGlzLCAgLy8vXG4gICAgICAgICAgICBhbmNlc3RvclR5cGVzSW5jbHVkZUFuY2VzdG9yVHlwZSA9IGFuY2VzdG9yVHlwZXMuaW5jbHVkZXMoYW5jZXN0b3JUeXBlKTtcblxuICAgICAgaWYgKCFhbmNlc3RvclR5cGVzSW5jbHVkZUFuY2VzdG9yVHlwZSkge1xuICAgICAgICBhbmNlc3RvclR5cGVzLnB1c2goYW5jZXN0b3JUeXBlKTtcblxuICAgICAgICB0aGlzLnN1cGVyVHlwZXMuZm9yRWFjaCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICAgICAgc3VwZXJUeXBlLnJldHJpZXZlQW5jZXN0b3JUeXBlcyhhbmNlc3RvclR5cGVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFuY2VzdG9yVHlwZXM7XG4gIH1cblxuICBpc1N0cmljdCgpIHtcbiAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpLFxuICAgICAgICAgIHN0cmljdCA9ICFwcmVmaXhlZDtcblxuICAgIHJldHVybiBzdHJpY3Q7XG4gIH1cblxuICBpc0NvdHlwZSgpIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCksXG4gICAgICAgICAgcHJvcGVydGllc0xlbmd0aCA9IHByb3BlcnRpZXMubGVuZ3RoLFxuICAgICAgICAgIGNvdHlwZSA9IChwcm9wZXJ0aWVzTGVuZ3RoID4gMCk7XG5cbiAgICByZXR1cm4gY290eXBlO1xuICB9XG5cbiAgaXNQcmVmaXhlZCgpIHtcbiAgICBjb25zdCBwcmVmaXhlZCA9ICh0aGlzLnByZWZpeE5hbWUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHByZWZpeGVkO1xuICB9XG5cbiAgZ2V0UHJlZml4ZWRUeXBlTmFtZSgpIHtcbiAgICBsZXQgcHJlZml4ZWRUeXBlTmFtZSA9IG51bGw7XG5cbiAgICBjb25zdCBwcmVmaXhlZCA9IHRoaXMuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKHByZWZpeGVkKSB7XG4gICAgICBwcmVmaXhlZFR5cGVOYW1lID0gYCR7dGhpcy5wcmVmaXhOYW1lfSR7dGhpcy5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWZpeGVkVHlwZU5hbWU7XG4gIH1cblxuICBpc0pvaW5lZFRvKHR5cGUpIHtcbiAgICBsZXQgam9pbmVkVG8gPSBmYWxzZTtcblxuICAgIGNvbnN0IGFuY2VzdG9yVHlwZXMgPSB0aGlzLnJldHJpZXZlQW5jZXN0b3JUeXBlcygpLFxuICAgICAgICAgIHR5cGVBbmNlc3RvclR5cGVzID0gdHlwZS5yZXRyaWV2ZUFuY2VzdG9yVHlwZXMoKSxcbiAgICAgICAgICBpbnRlcnNlY3RpbmdBbmNlc3RvclR5cGVzID0gaW50ZXJzZWN0aW9uKGFuY2VzdG9yVHlwZXMsIHR5cGVBbmNlc3RvclR5cGVzLCAoYW5jZXN0b3JUeXBlLCB0eXBlQW5jZXN0b3JUeXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbmNlc3RvclR5cGVFcXVhbFRvQVR5cGVuY2VzdG9yVHlwZSA9IGFuY2VzdG9yVHlwZS5pc0VxdWFsVG8odHlwZUFuY2VzdG9yVHlwZSk7XG5cbiAgICAgICAgICAgIGlmIChhbmNlc3RvclR5cGVFcXVhbFRvQVR5cGVuY2VzdG9yVHlwZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBpbnRlcnNlY3RpbmdBbmNlc3RvclR5cGVzTGVuZ3RoID0gaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoaW50ZXJzZWN0aW5nQW5jZXN0b3JUeXBlc0xlbmd0aCA+IDApIHtcbiAgICAgIGpvaW5lZFRvID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gam9pbmVkVG87XG4gIH1cblxuICBpc0VxdWFsVG8odHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG8gPSAodGhpcyA9PT0gdHlwZSk7XG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIGlzU3ViVHlwZU9mKHR5cGUpIHtcbiAgICBsZXQgc3ViVHlwZU9mO1xuXG4gICAgY29uc3QgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgICBpZiAodGhpcyA9PT0gYmFzZVR5cGUpIHtcbiAgICAgIHN1YlR5cGVPZiA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdWJUeXBlT2YgPSB0aGlzLnN1cGVyVHlwZXMuc29tZSgoc3VwZXJUeXBlKSA9PiB7IC8vL1xuICAgICAgICBpZiAoc3VwZXJUeXBlID09PSB0eXBlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdXBlclR5cGVTdWJUeXBlT2ZUeXBlID0gc3VwZXJUeXBlLmlzU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICAgIGlmIChzdXBlclR5cGVTdWJUeXBlT2ZUeXBlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YlR5cGVPZjtcbiAgfVxuXG4gIGlzU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IHN1YlR5cGVPZiA9IHR5cGUuaXNTdWJUeXBlT2YodGhpcyksXG4gICAgICAgICAgc3VwZXJUeXBlT2YgPSBzdWJUeXBlT2Y7ICAvLy9cblxuICAgIHJldHVybiBzdXBlclR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3ViVHlwZU9mID0gdGhpcy5pc1N1YlR5cGVPZih0eXBlKSxcbiAgICAgICAgICBlcXVhbFRvT3JTdWJUeXBlT2YgPSAoZXF1YWxUbyB8fCBzdWJUeXBlT2YpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9PclN1YlR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG8gPSB0aGlzLmlzRXF1YWxUbyh0eXBlKSxcbiAgICAgICAgICBzdXBlclR5cGVPZiA9IHRoaXMuaXNTdXBlclR5cGVPZih0eXBlKSxcbiAgICAgICAgICBlcXVhbFRvT3JTdXBlclR5cGVPZiA9IChlcXVhbFRvIHx8IHN1cGVyVHlwZU9mKTtcblxuICAgIHJldHVybiBlcXVhbFRvT3JTdXBlclR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb1N1YlR5cGVPclN1cGVyVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3ViVHlwZU9mID0gdGhpcy5pc1N1YlR5cGVPZih0eXBlKSxcbiAgICAgICAgICBzdXBlclR5cGVPZiA9IHRoaXMuaXNTdXBlclR5cGVPZih0eXBlKSxcbiAgICAgICAgICBlcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2YgPSAoZXF1YWxUbyB8fCBzdWJUeXBlT2YgfHwgc3VwZXJUeXBlT2YpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9TdWJUeXBlT3JTdXBlclR5cGVPZjtcbiAgfVxuXG4gIGNvbXBhcmVUeXBlTmFtZSh0eXBlTmFtZSkge1xuICAgIGNvbnN0IG5hbWVUeXBlTmFtZSA9ICh0aGlzLm5hbWUgPT09IHR5cGVOYW1lKSxcbiAgICAgICAgICBjb21wYXJlc1RvVHlwZU5hbWUgPSBuYW1lVHlwZU5hbWU7ICAvLy9cblxuICAgIHJldHVybiBjb21wYXJlc1RvVHlwZU5hbWU7XG4gIH1cblxuICBjb21wYXJlUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpIHtcbiAgICBjb25zdCBjb21wYXJlc1RvUHJvdmlzaW9uYWwgPSAocHJvdmlzaW9uYWwgPT09IHRoaXMucHJvdmlzaW9uYWwpO1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9Qcm92aXNpb25hbDtcbiAgfVxuXG4gIGNvbXBhcmVQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpIHtcbiAgICBsZXQgY29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IHByZWZpeGVkID0gdGhpcy5pc1ByZWZpeGVkKCk7XG5cbiAgICBpZiAocHJlZml4ZWQpIHtcbiAgICAgIGNvbnN0IHByZWZpeGVkVHlwZU5hbWVBID0gcHJlZml4ZWRUeXBlTmFtZTsgLy8vXG5cbiAgICAgIHByZWZpeGVkVHlwZU5hbWUgPSB0aGlzLmdldFByZWZpeGVkVHlwZU5hbWUoKTtcblxuICAgICAgY29uc3QgcHJlZml4ZWRUeXBlTmFtZUIgPSBwcmVmaXhlZFR5cGVOYW1lOyAvLy9cblxuICAgICAgaWYgKHByZWZpeGVkVHlwZU5hbWVBID09PSBwcmVmaXhlZFR5cGVOYW1lQikge1xuICAgICAgICBjb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lO1xuICB9XG5cbiAgdmVyaWZ5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKGNvbnRleHQsICh0eXBlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHR5cGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9KTtcblxuICB2YWxpZGF0ZShjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlhZGluZyB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IHR5cGUgPSBudWxsLFxuICAgICAgICAgIHZhbGlkYXRlV2hlblN0cmljdCA9IHRoaXMudmFsaWRhdGVXaGVuU3RyaWN0LmJpbmQodGhpcyksXG4gICAgICAgICAgdmFsaWRhdGVXaGVuUHJlZml4ZWQgPSB0aGlzLnZhbGlkYXRlV2hlblByZWZpeGVkLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZhbGlkYXRlV2hlblN0cmljdCxcbiAgICAgIHZhbGlkYXRlV2hlblByZWZpeGVkXG4gICAgXSwgdHlwZSwgY29udGV4dCwgKHR5cGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHR5cGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZhbGlkYXRlIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlblN0cmljdCh0eXBlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3RyaWN0ID0gdGhpcy5pc1N0cmljdCgpO1xuXG4gICAgaWYgKCFzdHJpY3QpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHR5cGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZVN0cmluZ30nIHN0cmljdCB0eXBlLi4uYCk7XG5cbiAgICBjb25zdCB0eXBlTmFtZSA9IHRoaXMubmFtZSwgLy8vXG4gICAgICAgICAgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCksXG4gICAgICAgICAgYmFzZVR5cGVDb21wYXJlVHlwZU5hbWVUeXBlTmFtZSA9IGJhc2VUeXBlLmNvbXBhcmVUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICBpZiAoYmFzZVR5cGVDb21wYXJlVHlwZU5hbWVUeXBlTmFtZSkge1xuICAgICAgdHlwZSA9IGJhc2VUeXBlOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGFsaXNlZFR5cGUgPSBjb250ZXh0LmZpbmRhbGlhc2VkVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgICBpZiAoYWxpc2VkVHlwZSAhPT0gbnVsbCkge1xuICAgICAgICB0eXBlID0gYWxpc2VkVHlwZTsgIC8vL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaW5jbHVkZVJlbGVhc2UgPSB0cnVlLFxuICAgICAgICAgICAgICBpbmNsdWRlRGVwZW5kZW5jaWVzID0gZmFsc2U7XG5cbiAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSwgaW5jbHVkZURlcGVuZGVuY2llcyk7IC8vL1xuXG4gICAgICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3R5cGVTdHJpbmd9JyBzdHJpY3QgdHlwZSBpcyBub3QgcHJlc2VudCBsb2NhbGx5LmApO1xuXG4gICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZVN0cmluZ30nIHN0cmljdCB0eXBlLmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQodHlwZSwgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5QcmVmaXhlZCh0eXBlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgcHJlZml4ZWQgPSB0aGlzLmlzUHJlZml4ZWQoKTtcblxuICAgIGlmICghcHJlZml4ZWQpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHR5cGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZVN0cmluZ30nIHByZWZpeGVkIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IHByZWZpeGVkVHlwZU5hbWUgPSB0aGlzLmdldFByZWZpeGVkVHlwZU5hbWUoKSxcbiAgICAgICAgICBpbmNsdWRlUmVsZWFzZSA9IHRydWU7XG5cbiAgICBsZXQgaW5jbHVkZURlcGVuZGVuY2llcztcblxuICAgIGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlLCBpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3R5cGVTdHJpbmd9JyBwcmVmaXhlZCB0eXBlIGlzIHByZXNlbnQgbG9jYWxseS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBpbmNsdWRlRGVwZW5kZW5jaWVzID0gdHJ1ZTtcblxuICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlLCBpbmNsdWRlRGVwZW5kZW5jaWVzKTtcblxuICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGBUaGUgJyR7dHlwZVN0cmluZ30nIHByZWZpeGVkIHR5cGUgaXMgbm90IHByZXNlbnQgZ2xvYmFsbHkuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlU3RyaW5nfScgcHJlZml4ZWQgdHlwZS5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHR5cGUsIGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKGFicmlkZ2VkID0gZmFsc2UpIHtcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLFxuICAgICAgICAgIG5hbWVKU09OID0gbmFtZVRvTmFtZUpTT04odGhpcy5uYW1lKSxcbiAgICAgICAgICBwcmVmaXhOYW1lSlNPTiA9IHByZWZpeE5hbWVUb1ByZXZpeE5hbWVKU09OKHRoaXMucHJlZml4TmFtZSksXG4gICAgICAgICAgbmFtZSA9IG5hbWVKU09OLCAgLy8vXG4gICAgICAgICAgcHJlZml4TmFtZSA9IHByZWZpeE5hbWVKU09OOyAgLy8vXG5cbiAgICBjb25zdCBqc29uID0ge1xuICAgICAgc3RyaW5nLFxuICAgICAgbmFtZSxcbiAgICAgIHByZWZpeE5hbWVcbiAgICB9O1xuXG4gICAgaWYgKCFhYnJpZGdlZCkge1xuICAgICAgY29uc3QgY2xvc2VkSlNPTiA9IGNsb3NlZFRvQ2xvc2VkSlNPTih0aGlzLmNsb3NlZCksXG4gICAgICAgICAgICBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OKHRoaXMuc3VwZXJUeXBlcyksXG4gICAgICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OKHRoaXMucHJvcGVydGllcyksXG4gICAgICAgICAgICBwcm92aXNpbm9hbEpTT00gPSBwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OKHRoaXMucHJvdmlzaW9uYWwpLFxuICAgICAgICAgICAgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNKU09OLCAgLy8vXG4gICAgICAgICAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllc0pTT04sICAvLy9cbiAgICAgICAgICAgIHByb3Zpc2lvbmFsID0gcHJvdmlzaW5vYWxKU09NOyAgLy8vXG5cbiAgICAgIE9iamVjdC5hc3NpZ24oanNvbiwge1xuICAgICAgICBjbG9zZWRKU09OLFxuICAgICAgICBzdXBlclR5cGVzLFxuICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICBwcm92aXNpb25hbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVHlwZVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHR5cGU7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICB0eXBlTm9kZSA9IGluc3RhbnRpYXRlVHlwZShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IHR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgbmFtZSA9IG5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgY2xvc2VkID0gY2xvc2VkRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBwcmVmaXhOYW1lID0gcHJlZml4TmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBwcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsRnJvbUpTT04oanNvbik7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsOyAvLy9cblxuICAgICAgdHlwZSA9IG5ldyBUeXBlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSwgY2xvc2VkLCBwcmVmaXhOYW1lLCBzdXBlclR5cGVzLCBwcm9wZXJ0aWVzLCBwcm92aXNpb25hbCk7XG5cbiAgICAgIHByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcbiAgICAgICAgY29uc3QgcHJvcGVydHlUeXBlID0gcHJvcGVydHkuZ2V0VHlwZSgpO1xuXG4gICAgICAgIGlmIChwcm9wZXJ0eVR5cGUgPT09IG51bGwpIHtcbiAgICAgICAgICBwcm9wZXJ0eS5zZXRUeXBlKHR5cGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgc3RhdGljIGZyb21OYW1lKG5hbWUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdHJpbmcgPSBuYW1lLCAgLy8vXG4gICAgICAgICAgbm9kZSA9IG51bGwsXG4gICAgICAgICAgY2xvc2VkID0gbnVsbCxcbiAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICBwcmVmaXhOYW1lID0gbnVsbCxcbiAgICAgICAgICBzdXBlclR5cGVzID0gW10sXG4gICAgICAgICAgcHJvcGVydGllcyA9IFtdLFxuICAgICAgICAgIHByb3Zpc2lvbmFsID0gZmFsc2U7XG5cbiAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgIGNvbnN0IHR5cGUgPSBuZXcgVHlwZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIGNsb3NlZCwgcHJlZml4TmFtZSwgc3VwZXJUeXBlcywgcHJvcGVydGllcywgcHJvdmlzaW9uYWwpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImFsbCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsInB1c2giLCJpbnRlcnNlY3Rpb24iLCJhcnJheVV0aWxpdGllcyIsImRlZmluZSIsIlR5cGUiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibmFtZSIsImNsb3NlZCIsInByZWZpeE5hbWUiLCJzdXBlclR5cGVzIiwicHJvcGVydGllcyIsInByb3Zpc2lvbmFsIiwiZ2V0TmFtZSIsImlzQ2xvc2VkIiwiZ2V0UHJlZml4TmFtZSIsImdldFN1cGVyVHlwZXMiLCJnZXRUeXBlTm9kZSIsImdldE5vZGUiLCJ0eXBlTm9kZSIsImdldFByb3BlcnRpZXMiLCJmb3JFYWNoIiwic3VwZXJUeXBlIiwic3VwZXJUeXBlUHJvcGVydGllcyIsImlzUHJvdmlzaW9uYWwiLCJzZXROYW1lIiwic2V0Q2xvc2VkIiwic2V0UHJlZml4TmFtZSIsInNldFN1cGVyVHlwZXMiLCJzZXRQcm9wZXJ0aWVzIiwic2V0UHJvdmlzaW9uYWwiLCJzZXRTdXBlclR5cGUiLCJpc09wZW4iLCJvcGVuIiwiaXNCYXNlVHlwZSIsImJhc2VUeXBlIiwiQkFTRV9UWVBFX1NZTUJPTCIsImlzRXN0YWJsaXNoZWQiLCJlc3RhYmxpc2hlZCIsInJldHJpZXZlQW5jZXN0b3JUeXBlcyIsImFuY2VzdG9yVHlwZXMiLCJhbmNlc3RvclR5cGUiLCJhbmNlc3RvclR5cGVzSW5jbHVkZUFuY2VzdG9yVHlwZSIsImluY2x1ZGVzIiwiaXNTdHJpY3QiLCJwcmVmaXhlZCIsImlzUHJlZml4ZWQiLCJzdHJpY3QiLCJpc0NvdHlwZSIsInByb3BlcnRpZXNMZW5ndGgiLCJsZW5ndGgiLCJjb3R5cGUiLCJnZXRQcmVmaXhlZFR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImlzSm9pbmVkVG8iLCJ0eXBlIiwiam9pbmVkVG8iLCJ0eXBlQW5jZXN0b3JUeXBlcyIsImludGVyc2VjdGluZ0FuY2VzdG9yVHlwZXMiLCJ0eXBlQW5jZXN0b3JUeXBlIiwiYW5jZXN0b3JUeXBlRXF1YWxUb0FUeXBlbmNlc3RvclR5cGUiLCJpc0VxdWFsVG8iLCJpbnRlcnNlY3RpbmdBbmNlc3RvclR5cGVzTGVuZ3RoIiwiZXF1YWxUbyIsImlzU3ViVHlwZU9mIiwic3ViVHlwZU9mIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInNvbWUiLCJzdXBlclR5cGVTdWJUeXBlT2ZUeXBlIiwiaXNTdXBlclR5cGVPZiIsInN1cGVyVHlwZU9mIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJlcXVhbFRvT3JTdWJUeXBlT2YiLCJpc0VxdWFsVG9PclN1cGVyVHlwZU9mIiwiZXF1YWxUb09yU3VwZXJUeXBlT2YiLCJpc0VxdWFsVG9TdWJUeXBlT3JTdXBlclR5cGVPZiIsImVxdWFsVG9TdWJUeXBlT3JTdXBlclR5cGVPZiIsImNvbXBhcmVUeXBlTmFtZSIsInR5cGVOYW1lIiwibmFtZVR5cGVOYW1lIiwiY29tcGFyZXNUb1R5cGVOYW1lIiwiY29tcGFyZVByb3Zpc2lvbmFsIiwiY29tcGFyZXNUb1Byb3Zpc2lvbmFsIiwiY29tcGFyZVByZWZpeGVkVHlwZU5hbWUiLCJjb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWVBIiwicHJlZml4ZWRUeXBlTmFtZUIiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsInR5cGVTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZhbGlkYXRlIiwiZGVidWciLCJ2YWxpZGF0ZVdoZW5TdHJpY3QiLCJiaW5kIiwidmFsaWRhdGVXaGVuUHJlZml4ZWQiLCJleGNlcHRpb24iLCJiYXNlVHlwZUNvbXBhcmVUeXBlTmFtZVR5cGVOYW1lIiwiYWxpc2VkVHlwZSIsImZpbmRhbGlhc2VkVHlwZUJ5VHlwZU5hbWUiLCJpbmNsdWRlUmVsZWFzZSIsImluY2x1ZGVEZXBlbmRlbmNpZXMiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJ0eXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUiLCJmaW5kVHlwZUJ5UHJlZml4ZWRUeXBlTmFtZSIsInRvSlNPTiIsImFicmlkZ2VkIiwibmFtZUpTT04iLCJuYW1lVG9OYW1lSlNPTiIsInByZWZpeE5hbWVKU09OIiwicHJlZml4TmFtZVRvUHJldml4TmFtZUpTT04iLCJqc29uIiwiY2xvc2VkSlNPTiIsImNsb3NlZFRvQ2xvc2VkSlNPTiIsInN1cGVyVHlwZXNKU09OIiwic3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04iLCJwcm9wZXJ0aWVzSlNPTiIsInByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OIiwicHJvdmlzaW5vYWxKU09NIiwicHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTiIsIk9iamVjdCIsImFzc2lnbiIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZVR5cGUiLCJuYW1lRnJvbVR5cGVOb2RlIiwiY2xvc2VkRnJvbUpTT04iLCJwcmVmaXhOYW1lRnJvbUpTT04iLCJzdXBlclR5cGVzRnJvbUpTT04iLCJwcm9wZXJ0aWVzRnJvbUpTT04iLCJwcm92aXNpb25hbEZyb21KU09OIiwicHJvcGVydHkiLCJwcm9wZXJ0eVR5cGUiLCJnZXRU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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-nominal",
3
3
  "author": "James Smith",
4
- "version": "1.0.642",
4
+ "version": "1.0.643",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-nominal",
7
7
  "description": "Occam's Nominal language.",
@@ -471,6 +471,14 @@ export default define(class Type extends Element {
471
471
  context = null; ///
472
472
 
473
473
  type = new Type(context, string, node, breakPoint, name, closed, prefixName, superTypes, properties, provisional);
474
+
475
+ properties.forEach((property) => {
476
+ const propertyType = property.getType();
477
+
478
+ if (propertyType === null) {
479
+ property.setType(type);
480
+ }
481
+ });
474
482
  }, context);
475
483
 
476
484
  return type;