occam-furtle 3.0.516 → 3.0.520

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/lib/context/block.js +9 -1
  2. package/lib/context/file/furtle.js +66 -11
  3. package/lib/element/importBinding.js +108 -0
  4. package/lib/element/importBindings.js +17 -0
  5. package/lib/element/importStatement.js +67 -0
  6. package/lib/element/label.js +7 -5
  7. package/lib/element/parameters.js +7 -5
  8. package/lib/element/procedure.js +9 -5
  9. package/lib/element/procedureCall.js +10 -4
  10. package/lib/element/reference.js +21 -1
  11. package/lib/element/type.js +8 -5
  12. package/lib/element/values.js +2 -2
  13. package/lib/example/furtle/bnf.js +2 -2
  14. package/lib/example/furtle/entries.js +1 -1
  15. package/lib/node/importBinding.js +27 -0
  16. package/lib/node/importBindings.js +23 -0
  17. package/lib/node/importStatement.js +42 -0
  18. package/lib/node/procedure.js +8 -13
  19. package/lib/nonTerminalNodeMap.js +7 -1
  20. package/lib/preamble.js +4 -1
  21. package/lib/process/instantiate.js +20 -2
  22. package/lib/process/verify.js +9 -2
  23. package/lib/ruleNames.js +13 -1
  24. package/lib/utilities/element.js +87 -27
  25. package/lib/utilities/json.js +59 -6
  26. package/package.json +2 -2
  27. package/src/context/block.js +14 -0
  28. package/src/context/file/furtle.js +102 -19
  29. package/src/element/importBinding.js +165 -0
  30. package/src/element/importBindings.js +9 -0
  31. package/src/element/importStatement.js +89 -0
  32. package/src/element/label.js +9 -5
  33. package/src/element/parameters.js +9 -5
  34. package/src/element/procedure.js +19 -16
  35. package/src/element/procedureCall.js +12 -3
  36. package/src/element/reference.js +33 -0
  37. package/src/element/type.js +13 -8
  38. package/src/element/values.js +1 -1
  39. package/src/example/furtle/bnf.js +1 -1
  40. package/src/example/furtle/entries.js +1 -1
  41. package/src/node/importBinding.js +23 -0
  42. package/src/node/importBindings.js +16 -0
  43. package/src/node/importStatement.js +45 -0
  44. package/src/node/procedure.js +7 -14
  45. package/src/nonTerminalNodeMap.js +9 -0
  46. package/src/preamble.js +3 -0
  47. package/src/process/instantiate.js +11 -2
  48. package/src/process/verify.js +11 -2
  49. package/src/ruleNames.js +3 -0
  50. package/src/utilities/element.js +120 -43
  51. package/src/utilities/json.js +62 -5
@@ -67,10 +67,18 @@ class BlockContext extends _occamlanguages.Context {
67
67
  }) || null;
68
68
  return variable;
69
69
  }
70
+ findImportedProcedureByProcedureName(procedureName) {
71
+ const context = this.getContext(), importedProcedure = context.findImportedProcedureByProcedureName(procedureName);
72
+ return importedProcedure;
73
+ }
70
74
  isVariablePresentByVariableName(variableName, nested = true) {
71
75
  const variable = this.findVariableByVariableName(variableName, nested), variablePresent = variable !== null;
72
76
  return variablePresent;
73
77
  }
78
+ isImportedProcedurePresentByProcedureName(procedureName) {
79
+ const context = this.getContext(), importedProcedurePresent = context.isImportedProcedurePresentByProcedureName(procedureName);
80
+ return importedProcedurePresent;
81
+ }
74
82
  static fromVariables(variables, context) {
75
83
  const blockContext = _occamlanguages.Context.fromNothing(BlockContext, variables, context);
76
84
  return blockContext;
@@ -81,4 +89,4 @@ function isContextBlockContext(context) {
81
89
  return contextBlockContext;
82
90
  }
83
91
 
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L2Jsb2NrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCBFeGNlcHRpb24gZnJvbSBcIi4uL2V4Y2VwdGlvblwiO1xuXG5jb25zdCB7IHB1c2ggfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCbG9ja0NvbnRleHQgZXh0ZW5kcyBDb250ZXh0IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgdmFyaWFibGVzKSB7XG4gICAgc3VwZXIoY29udGV4dCk7XG5cbiAgICB0aGlzLnZhcmlhYmxlcyA9IHZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFZhcmlhYmxlcyhuZXN0ZWQgPSB0cnVlKSB7XG4gICAgY29uc3QgdmFyaWFibGVzID0gW107XG5cbiAgICBwdXNoKHZhcmlhYmxlcywgdGhpcy52YXJpYWJsZXMpO1xuXG4gICAgaWYgKG5lc3RlZCkge1xuICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgICAgY29udGV4dFZhcmlhYmxlcyA9IGNvbnRleHQuZ2V0VmFyaWFibGVzKG5lc3RlZCk7XG5cbiAgICAgIHB1c2godmFyaWFibGVzLCBjb250ZXh0VmFyaWFibGVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFyaWFibGVzO1xuICB9XG5cbiAgYWRkVmFyaWFibGUodmFyaWFibGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBuZXN0ZWQgPSBmYWxzZSxcbiAgICAgICAgICB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZS5nZXROYW1lKCksXG4gICAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB2YXJpYWJsZVByZXNlbnQgPSB0aGlzLmlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lLCBuZXN0ZWQpO1xuXG4gICAgaWYgKHZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBUaGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZSBpcyBhbHJlYWR5IHByZXNlbnQuJ2AsXG4gICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXM7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkZWQgdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUgdG8gdGhlIGNvbnRleHQuYCk7XG5cbiAgICB0aGlzLnZhcmlhYmxlcy5wdXNoKHZhcmlhYmxlKTtcblxuICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICB9XG5cbiAgZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHByb2NlZHVyZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cblxuICBpc1Byb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBwcm9jZWR1cmVQcmVzZW50ID0gY29udGV4dC5pc1Byb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlUHJlc2VudDtcbiAgfVxuXG4gIGZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lKHZhcmlhYmxlTmFtZSwgbmVzdGVkID0gdHJ1ZSkge1xuICAgIGNvbnN0IHZhcmlhYmxlcyA9IHRoaXMuZ2V0VmFyaWFibGVzKG5lc3RlZCksXG4gICAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZXMuZmluZCgodmFyaWFibGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlLmNvbXBhcmVWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lKTtcblxuICAgICAgICAgICAgaWYgKHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlTmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG5cbiAgaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUsIG5lc3RlZCA9IHRydWUpIHtcbiAgICBjb25zdCB2YXJpYWJsZSA9IHRoaXMuZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lLCBuZXN0ZWQpLFxuICAgICAgICAgIHZhcmlhYmxlUHJlc2VudCA9ICh2YXJpYWJsZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVQcmVzZW50O1xuICB9XG5cbiAgc3RhdGljIGZyb21WYXJpYWJsZXModmFyaWFibGVzLCBjb250ZXh0KSB7XG4gICAgY29uc3QgYmxvY2tDb250ZXh0ID0gQ29udGV4dC5mcm9tTm90aGluZyhCbG9ja0NvbnRleHQsIHZhcmlhYmxlcywgY29udGV4dClcblxuICAgIHJldHVybiBibG9ja0NvbnRleHQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udGV4dEJsb2NrQ29udGV4dChjb250ZXh0KSB7XG4gIGNvbnN0IGNvbnRleHRCbG9ja0NvbnRleHQgPSBCbG9ja0NvbnRleHQucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoY29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbnRleHRCbG9ja0NvbnRleHQ7XG59XG4iXSwibmFtZXMiOlsiQmxvY2tDb250ZXh0IiwiaXNDb250ZXh0QmxvY2tDb250ZXh0IiwicHVzaCIsImFycmF5VXRpbGl0aWVzIiwiQ29udGV4dCIsImNvbnRleHQiLCJ2YXJpYWJsZXMiLCJnZXRWYXJpYWJsZXMiLCJuZXN0ZWQiLCJnZXRDb250ZXh0IiwiY29udGV4dFZhcmlhYmxlcyIsImFkZFZhcmlhYmxlIiwidmFyaWFibGUiLCJmb3J3YXJkIiwiYmFjayIsInZhcmlhYmxlTmFtZSIsImdldE5hbWUiLCJ2YXJpYWJsZVN0cmluZyIsImdldFN0cmluZyIsInZhcmlhYmxlUHJlc2VudCIsImlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUiLCJtZXNzYWdlIiwiZXhjZXB0aW9uIiwiRXhjZXB0aW9uIiwiZnJvbU1lc3NhZ2UiLCJ0cmFjZSIsImZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlIiwiaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlUHJlc2VudCIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lIiwiZmluZCIsInZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlTmFtZSIsImNvbXBhcmVWYXJpYWJsZU5hbWUiLCJmcm9tVmFyaWFibGVzIiwiYmxvY2tDb250ZXh0IiwiZnJvbU5vdGhpbmciLCJjb250ZXh0QmxvY2tDb250ZXh0IiwicHJvdG90eXBlIiwiaXNQcm90b3R5cGVPZiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBU0E7ZUFBcUJBOztRQXFGTEM7ZUFBQUE7OztnQ0E1RlE7MkJBQ087a0VBRVQ7Ozs7OztBQUV0QixNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHQyx5QkFBYztBQUVoQixNQUFNSCxxQkFBcUJJLHVCQUFPO0lBQy9DLFlBQVlDLE9BQU8sRUFBRUMsU0FBUyxDQUFFO1FBQzlCLEtBQUssQ0FBQ0Q7UUFFTixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsYUFBYUMsU0FBUyxJQUFJLEVBQUU7UUFDMUIsTUFBTUYsWUFBWSxFQUFFO1FBRXBCSixLQUFLSSxXQUFXLElBQUksQ0FBQ0EsU0FBUztRQUU5QixJQUFJRSxRQUFRO1lBQ1YsTUFBTUgsVUFBVSxJQUFJLENBQUNJLFVBQVUsSUFDekJDLG1CQUFtQkwsUUFBUUUsWUFBWSxDQUFDQztZQUU5Q04sS0FBS0ksV0FBV0k7UUFDbEI7UUFFQSxPQUFPSjtJQUNUO0lBRUFLLFlBQVlDLFFBQVEsRUFBRUMsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDbkMsTUFBTU4sU0FBUyxPQUNUTyxlQUFlSCxTQUFTSSxPQUFPLElBQy9CQyxpQkFBaUJMLFNBQVNNLFNBQVMsSUFDbkNDLGtCQUFrQixJQUFJLENBQUNDLCtCQUErQixDQUFDTCxjQUFjUDtRQUUzRSxJQUFJVyxpQkFBaUI7WUFDbkIsTUFBTUUsVUFBVSxDQUFDLEtBQUssRUFBRUosZUFBZSwrQkFBK0IsQ0FBQyxFQUNqRUssWUFBWUMsa0JBQVMsQ0FBQ0MsV0FBVyxDQUFDSDtZQUV4QyxPQUFPUCxLQUFLUTtRQUNkO1FBRUEsTUFBTWpCLFVBQVUsSUFBSSxFQUFFLEdBQUc7UUFFekJBLFFBQVFvQixLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUVSLGVBQWUsMEJBQTBCLENBQUM7UUFFdEUsSUFBSSxDQUFDWCxTQUFTLENBQUNKLElBQUksQ0FBQ1U7UUFFcEIsT0FBT0MsUUFBUUM7SUFDakI7SUFFQVksNkJBQTZCQyxhQUFhLEVBQUU7UUFDMUMsTUFBTXRCLFVBQVUsSUFBSSxDQUFDSSxVQUFVLElBQ3pCbUIsWUFBWXZCLFFBQVFxQiw0QkFBNEIsQ0FBQ0M7UUFFdkQsT0FBT0M7SUFDVDtJQUVBQyxrQ0FBa0NGLGFBQWEsRUFBRTtRQUMvQyxNQUFNdEIsVUFBVSxJQUFJLENBQUNJLFVBQVUsSUFDekJxQixtQkFBbUJ6QixRQUFRd0IsaUNBQWlDLENBQUNGO1FBRW5FLE9BQU9HO0lBQ1Q7SUFFQUMsMkJBQTJCaEIsWUFBWSxFQUFFUCxTQUFTLElBQUksRUFBRTtRQUN0RCxNQUFNRixZQUFZLElBQUksQ0FBQ0MsWUFBWSxDQUFDQyxTQUM5QkksV0FBV04sVUFBVTBCLElBQUksQ0FBQyxDQUFDcEI7WUFDekIsTUFBTXFCLGlDQUFpQ3JCLFNBQVNzQixtQkFBbUIsQ0FBQ25CO1lBRXBFLElBQUlrQixnQ0FBZ0M7Z0JBQ2xDLE9BQU87WUFDVDtRQUNGLE1BQU07UUFFWixPQUFPckI7SUFDVDtJQUVBUSxnQ0FBZ0NMLFlBQVksRUFBRVAsU0FBUyxJQUFJLEVBQUU7UUFDM0QsTUFBTUksV0FBVyxJQUFJLENBQUNtQiwwQkFBMEIsQ0FBQ2hCLGNBQWNQLFNBQ3pEVyxrQkFBbUJQLGFBQWE7UUFFdEMsT0FBT087SUFDVDtJQUVBLE9BQU9nQixjQUFjN0IsU0FBUyxFQUFFRCxPQUFPLEVBQUU7UUFDdkMsTUFBTStCLGVBQWVoQyx1QkFBTyxDQUFDaUMsV0FBVyxDQUFDckMsY0FBY00sV0FBV0Q7UUFFbEUsT0FBTytCO0lBQ1Q7QUFDRjtBQUVPLFNBQVNuQyxzQkFBc0JJLE9BQU87SUFDM0MsTUFBTWlDLHNCQUFzQnRDLGFBQWF1QyxTQUFTLENBQUNDLGFBQWEsQ0FBQ25DO0lBRWpFLE9BQU9pQztBQUNUIn0=
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L2Jsb2NrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCBFeGNlcHRpb24gZnJvbSBcIi4uL2V4Y2VwdGlvblwiO1xuXG5jb25zdCB7IHB1c2ggfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCbG9ja0NvbnRleHQgZXh0ZW5kcyBDb250ZXh0IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgdmFyaWFibGVzKSB7XG4gICAgc3VwZXIoY29udGV4dCk7XG5cbiAgICB0aGlzLnZhcmlhYmxlcyA9IHZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFZhcmlhYmxlcyhuZXN0ZWQgPSB0cnVlKSB7XG4gICAgY29uc3QgdmFyaWFibGVzID0gW107XG5cbiAgICBwdXNoKHZhcmlhYmxlcywgdGhpcy52YXJpYWJsZXMpO1xuXG4gICAgaWYgKG5lc3RlZCkge1xuICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgICAgY29udGV4dFZhcmlhYmxlcyA9IGNvbnRleHQuZ2V0VmFyaWFibGVzKG5lc3RlZCk7XG5cbiAgICAgIHB1c2godmFyaWFibGVzLCBjb250ZXh0VmFyaWFibGVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFyaWFibGVzO1xuICB9XG5cbiAgYWRkVmFyaWFibGUodmFyaWFibGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBuZXN0ZWQgPSBmYWxzZSxcbiAgICAgICAgICB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZS5nZXROYW1lKCksXG4gICAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB2YXJpYWJsZVByZXNlbnQgPSB0aGlzLmlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lLCBuZXN0ZWQpO1xuXG4gICAgaWYgKHZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBUaGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZSBpcyBhbHJlYWR5IHByZXNlbnQuJ2AsXG4gICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXM7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkZWQgdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUgdG8gdGhlIGNvbnRleHQuYCk7XG5cbiAgICB0aGlzLnZhcmlhYmxlcy5wdXNoKHZhcmlhYmxlKTtcblxuICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICB9XG5cbiAgZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHByb2NlZHVyZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cblxuICBpc1Byb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBwcm9jZWR1cmVQcmVzZW50ID0gY29udGV4dC5pc1Byb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlUHJlc2VudDtcbiAgfVxuXG4gIGZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lKHZhcmlhYmxlTmFtZSwgbmVzdGVkID0gdHJ1ZSkge1xuICAgIGNvbnN0IHZhcmlhYmxlcyA9IHRoaXMuZ2V0VmFyaWFibGVzKG5lc3RlZCksXG4gICAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZXMuZmluZCgodmFyaWFibGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlLmNvbXBhcmVWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lKTtcblxuICAgICAgICAgICAgaWYgKHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlTmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG5cbiAgZmluZEltcG9ydGVkUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgaW1wb3J0ZWRQcm9jZWR1cmUgPSBjb250ZXh0LmZpbmRJbXBvcnRlZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTtcblxuICAgIHJldHVybiBpbXBvcnRlZFByb2NlZHVyZTtcbiAgfVxuXG4gIGlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lLCBuZXN0ZWQgPSB0cnVlKSB7XG4gICAgY29uc3QgdmFyaWFibGUgPSB0aGlzLmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lKHZhcmlhYmxlTmFtZSwgbmVzdGVkKSxcbiAgICAgICAgICB2YXJpYWJsZVByZXNlbnQgPSAodmFyaWFibGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzSW1wb3J0ZWRQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgaW1wb3J0ZWRQcm9jZWR1cmVQcmVzZW50ID0gY29udGV4dC5pc0ltcG9ydGVkUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTtcblxuICAgIHJldHVybiBpbXBvcnRlZFByb2NlZHVyZVByZXNlbnQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbVZhcmlhYmxlcyh2YXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgICBjb25zdCBibG9ja0NvbnRleHQgPSBDb250ZXh0LmZyb21Ob3RoaW5nKEJsb2NrQ29udGV4dCwgdmFyaWFibGVzLCBjb250ZXh0KVxuXG4gICAgcmV0dXJuIGJsb2NrQ29udGV4dDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb250ZXh0QmxvY2tDb250ZXh0KGNvbnRleHQpIHtcbiAgY29uc3QgY29udGV4dEJsb2NrQ29udGV4dCA9IEJsb2NrQ29udGV4dC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihjb250ZXh0KTtcblxuICByZXR1cm4gY29udGV4dEJsb2NrQ29udGV4dDtcbn1cbiJdLCJuYW1lcyI6WyJCbG9ja0NvbnRleHQiLCJpc0NvbnRleHRCbG9ja0NvbnRleHQiLCJwdXNoIiwiYXJyYXlVdGlsaXRpZXMiLCJDb250ZXh0IiwiY29udGV4dCIsInZhcmlhYmxlcyIsImdldFZhcmlhYmxlcyIsIm5lc3RlZCIsImdldENvbnRleHQiLCJjb250ZXh0VmFyaWFibGVzIiwiYWRkVmFyaWFibGUiLCJ2YXJpYWJsZSIsImZvcndhcmQiLCJiYWNrIiwidmFyaWFibGVOYW1lIiwiZ2V0TmFtZSIsInZhcmlhYmxlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidmFyaWFibGVQcmVzZW50IiwiaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTmFtZSIsIm1lc3NhZ2UiLCJleGNlcHRpb24iLCJFeGNlcHRpb24iLCJmcm9tTWVzc2FnZSIsInRyYWNlIiwiZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmUiLCJpc1Byb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVQcmVzZW50IiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5hbWUiLCJmaW5kIiwidmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVOYW1lIiwiY29tcGFyZVZhcmlhYmxlTmFtZSIsImZpbmRJbXBvcnRlZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZSIsImltcG9ydGVkUHJvY2VkdXJlIiwiaXNJbXBvcnRlZFByb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUiLCJpbXBvcnRlZFByb2NlZHVyZVByZXNlbnQiLCJmcm9tVmFyaWFibGVzIiwiYmxvY2tDb250ZXh0IiwiZnJvbU5vdGhpbmciLCJjb250ZXh0QmxvY2tDb250ZXh0IiwicHJvdG90eXBlIiwiaXNQcm90b3R5cGVPZiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBU0E7ZUFBcUJBOztRQW1HTEM7ZUFBQUE7OztnQ0ExR1E7MkJBQ087a0VBRVQ7Ozs7OztBQUV0QixNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHQyx5QkFBYztBQUVoQixNQUFNSCxxQkFBcUJJLHVCQUFPO0lBQy9DLFlBQVlDLE9BQU8sRUFBRUMsU0FBUyxDQUFFO1FBQzlCLEtBQUssQ0FBQ0Q7UUFFTixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsYUFBYUMsU0FBUyxJQUFJLEVBQUU7UUFDMUIsTUFBTUYsWUFBWSxFQUFFO1FBRXBCSixLQUFLSSxXQUFXLElBQUksQ0FBQ0EsU0FBUztRQUU5QixJQUFJRSxRQUFRO1lBQ1YsTUFBTUgsVUFBVSxJQUFJLENBQUNJLFVBQVUsSUFDekJDLG1CQUFtQkwsUUFBUUUsWUFBWSxDQUFDQztZQUU5Q04sS0FBS0ksV0FBV0k7UUFDbEI7UUFFQSxPQUFPSjtJQUNUO0lBRUFLLFlBQVlDLFFBQVEsRUFBRUMsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDbkMsTUFBTU4sU0FBUyxPQUNUTyxlQUFlSCxTQUFTSSxPQUFPLElBQy9CQyxpQkFBaUJMLFNBQVNNLFNBQVMsSUFDbkNDLGtCQUFrQixJQUFJLENBQUNDLCtCQUErQixDQUFDTCxjQUFjUDtRQUUzRSxJQUFJVyxpQkFBaUI7WUFDbkIsTUFBTUUsVUFBVSxDQUFDLEtBQUssRUFBRUosZUFBZSwrQkFBK0IsQ0FBQyxFQUNqRUssWUFBWUMsa0JBQVMsQ0FBQ0MsV0FBVyxDQUFDSDtZQUV4QyxPQUFPUCxLQUFLUTtRQUNkO1FBRUEsTUFBTWpCLFVBQVUsSUFBSSxFQUFFLEdBQUc7UUFFekJBLFFBQVFvQixLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUVSLGVBQWUsMEJBQTBCLENBQUM7UUFFdEUsSUFBSSxDQUFDWCxTQUFTLENBQUNKLElBQUksQ0FBQ1U7UUFFcEIsT0FBT0MsUUFBUUM7SUFDakI7SUFFQVksNkJBQTZCQyxhQUFhLEVBQUU7UUFDMUMsTUFBTXRCLFVBQVUsSUFBSSxDQUFDSSxVQUFVLElBQ3pCbUIsWUFBWXZCLFFBQVFxQiw0QkFBNEIsQ0FBQ0M7UUFFdkQsT0FBT0M7SUFDVDtJQUVBQyxrQ0FBa0NGLGFBQWEsRUFBRTtRQUMvQyxNQUFNdEIsVUFBVSxJQUFJLENBQUNJLFVBQVUsSUFDekJxQixtQkFBbUJ6QixRQUFRd0IsaUNBQWlDLENBQUNGO1FBRW5FLE9BQU9HO0lBQ1Q7SUFFQUMsMkJBQTJCaEIsWUFBWSxFQUFFUCxTQUFTLElBQUksRUFBRTtRQUN0RCxNQUFNRixZQUFZLElBQUksQ0FBQ0MsWUFBWSxDQUFDQyxTQUM5QkksV0FBV04sVUFBVTBCLElBQUksQ0FBQyxDQUFDcEI7WUFDekIsTUFBTXFCLGlDQUFpQ3JCLFNBQVNzQixtQkFBbUIsQ0FBQ25CO1lBRXBFLElBQUlrQixnQ0FBZ0M7Z0JBQ2xDLE9BQU87WUFDVDtRQUNGLE1BQU07UUFFWixPQUFPckI7SUFDVDtJQUVBdUIscUNBQXFDUixhQUFhLEVBQUU7UUFDbEQsTUFBTXRCLFVBQVUsSUFBSSxDQUFDSSxVQUFVLElBQ3pCMkIsb0JBQW9CL0IsUUFBUThCLG9DQUFvQyxDQUFDUjtRQUV2RSxPQUFPUztJQUNUO0lBRUFoQixnQ0FBZ0NMLFlBQVksRUFBRVAsU0FBUyxJQUFJLEVBQUU7UUFDM0QsTUFBTUksV0FBVyxJQUFJLENBQUNtQiwwQkFBMEIsQ0FBQ2hCLGNBQWNQLFNBQ3pEVyxrQkFBbUJQLGFBQWE7UUFFdEMsT0FBT087SUFDVDtJQUVBa0IsMENBQTBDVixhQUFhLEVBQUU7UUFDdkQsTUFBTXRCLFVBQVUsSUFBSSxDQUFDSSxVQUFVLElBQ3pCNkIsMkJBQTJCakMsUUFBUWdDLHlDQUF5QyxDQUFDVjtRQUVuRixPQUFPVztJQUNUO0lBRUEsT0FBT0MsY0FBY2pDLFNBQVMsRUFBRUQsT0FBTyxFQUFFO1FBQ3ZDLE1BQU1tQyxlQUFlcEMsdUJBQU8sQ0FBQ3FDLFdBQVcsQ0FBQ3pDLGNBQWNNLFdBQVdEO1FBRWxFLE9BQU9tQztJQUNUO0FBQ0Y7QUFFTyxTQUFTdkMsc0JBQXNCSSxPQUFPO0lBQzNDLE1BQU1xQyxzQkFBc0IxQyxhQUFhMkMsU0FBUyxDQUFDQyxhQUFhLENBQUN2QztJQUVqRSxPQUFPcUM7QUFDVCJ9
@@ -14,14 +14,21 @@ const _context = require("../../utilities/context");
14
14
  const _verify = require("../../process/verify");
15
15
  const _furtle = require("../../utilities/furtle");
16
16
  const _json = require("../../utilities/json");
17
+ const _procedure = /*#__PURE__*/ _interop_require_default(require("../../element/procedure"));
18
+ function _interop_require_default(obj) {
19
+ return obj && obj.__esModule ? obj : {
20
+ default: obj
21
+ };
22
+ }
17
23
  const { nodesQuery } = _occamquery.queryUtilities;
18
24
  const procedureNodesQuery = nodesQuery("/document/procedure");
19
25
  class FurtleFileContext extends _occamlanguages.FileContext {
20
- constructor(context, fileContent, filePath, tokens, node, json, lexer, parser, procedures){
26
+ constructor(context, fileContent, filePath, tokens, node, json, lexer, parser, procedures, importBindings){
21
27
  super(context, fileContent, filePath, tokens, node, json);
22
28
  this.lexer = lexer;
23
29
  this.parser = parser;
24
30
  this.procedures = procedures;
31
+ this.importBindings = importBindings;
25
32
  }
26
33
  getLexer() {
27
34
  return this.lexer;
@@ -29,6 +36,13 @@ class FurtleFileContext extends _occamlanguages.FileContext {
29
36
  getParser() {
30
37
  return this.parser;
31
38
  }
39
+ getProcedures(includeRelease = true) {
40
+ const procedures = includeRelease ? this.context.getProcedures() : this.procedures;
41
+ return procedures;
42
+ }
43
+ getImportBindings() {
44
+ return this.importBindings;
45
+ }
32
46
  getLabels(includeRelease = true) {
33
47
  const labels = [];
34
48
  return labels;
@@ -85,10 +99,6 @@ class FurtleFileContext extends _occamlanguages.FileContext {
85
99
  const metavariables = [];
86
100
  return metavariables;
87
101
  }
88
- getProcedures(includeRelease = true) {
89
- const procedures = includeRelease ? this.context.getProcedures() : this.procedures;
90
- return procedures;
91
- }
92
102
  getVariables(nested = true) {
93
103
  const variables = [];
94
104
  return variables;
@@ -99,6 +109,12 @@ class FurtleFileContext extends _occamlanguages.FileContext {
99
109
  const filePath = this.getFilePath();
100
110
  this.debug(`Added the '${procedureString}' function to the '${filePath}' file context.`);
101
111
  }
112
+ addImportBinding(importBinding) {
113
+ const importBindingString = importBinding.getString();
114
+ this.importBindings.push(importBinding);
115
+ const filePath = this.getFilePath();
116
+ this.debug(`Added the '${importBindingString}' import binding to the '${filePath}' file context.`);
117
+ }
102
118
  findProcedureNode(label) {
103
119
  const node = this.getNode(), labelNode = label.getNode(), documentNode = node, procedureNodes = procedureNodesQuery(documentNode), procedureNode = procedureNodes.find((procedureNode)=>{
104
120
  const labelMatches = procedureNode.matchLabelNode(labelNode);
@@ -117,10 +133,45 @@ class FurtleFileContext extends _occamlanguages.FileContext {
117
133
  }) || null;
118
134
  return procedure;
119
135
  }
136
+ findImportedProcedureByProcedureName(procedureName) {
137
+ let importedProcedure = null;
138
+ this.importBindings.some((importBinding)=>{
139
+ const lablledProcedureName = procedureName; ///
140
+ const labelledProcedureNameClmpares = importBinding.compareLablledProcedureName(lablledProcedureName);
141
+ if (labelledProcedureNameClmpares) {
142
+ const referencedProcedureName = importBinding.getReferencedProcedureName();
143
+ procedureName = referencedProcedureName; ///
144
+ const procedure = this.findProcedureByProcedureName(procedureName);
145
+ importedProcedure = procedure; ///
146
+ return true;
147
+ }
148
+ });
149
+ return importedProcedure;
150
+ }
151
+ findImportBindingByLabelledProcedureName(labelledProcedureName) {
152
+ const importBinding = this.importBindings.find((importBinding)=>{
153
+ const labelledProcedureNameCompares = importBinding.compareLablledProcedureName(labelledProcedureName);
154
+ if (labelledProcedureNameCompares) {
155
+ return true;
156
+ }
157
+ }) || null;
158
+ return importBinding;
159
+ }
120
160
  isProcedurePresentByProcedureName(procedureName) {
121
161
  const procedure = this.findProcedureByProcedureName(procedureName), procedurePresent = procedure !== null;
122
162
  return procedurePresent;
123
163
  }
164
+ isImportedProcedurePresentByProcedureName(procedureName) {
165
+ const importedProceudre = this.findImportedProcedureByProcedureName(procedureName), importedProceudrePresent = importedProceudre !== null;
166
+ return importedProceudrePresent;
167
+ }
168
+ isImportBindingPresentByLabelledProcedureName(labelledProcedureName) {
169
+ const importBinding = this.findImportBindingByLabelledProcedureName(labelledProcedureName), importBindingPresent = importBinding !== null;
170
+ return importBindingPresent;
171
+ }
172
+ compareReleaseName(releaseName) {
173
+ return this.context.compareReleaseName(releaseName);
174
+ }
124
175
  clear() {
125
176
  this.procedures = [];
126
177
  }
@@ -133,6 +184,7 @@ class FurtleFileContext extends _occamlanguages.FileContext {
133
184
  if (json !== null) {
134
185
  const fileContext = this; ///
135
186
  this.procedures = (0, _json.proceduresFromJSON)(json, fileContext);
187
+ this.importBindings = (0, _json.importBindingsFromJSON)(json, fileContext);
136
188
  }
137
189
  }
138
190
  verifyFile(forward, back) {
@@ -142,21 +194,24 @@ class FurtleFileContext extends _occamlanguages.FileContext {
142
194
  }, forward, back);
143
195
  }
144
196
  toJSON() {
145
- const proceduresJSON = (0, _json.proceduresToProceduresJSON)(this.procedures), fileContent = this.getFileContent(), filePath = this.getFilePath(), procedures = proceduresJSON, json = {
146
- fileContent,
197
+ let json;
198
+ const filePath = this.getFilePath(), fileContent = this.getFileContent(), proceduresJSON = (0, _json.proceduresToProceduresJSON)(this.procedures), importBindingsJSON = (0, _json.importBindingsToImportBindingsJSON)(this.importBindings), procedures = proceduresJSON, importBindings = importBindingsJSON;
199
+ json = {
147
200
  filePath,
148
- procedures
201
+ fileContent,
202
+ procedures,
203
+ importBindings
149
204
  };
150
205
  return json;
151
206
  }
152
207
  static fromFile(file, context) {
153
- const lexer = _furtle.furtleLexer, parser = _furtle.furtleParser, procedures = [], furtleFileContext = _occamlanguages.FileContext.fromFile(FurtleFileContext, file, lexer, parser, procedures, context);
208
+ const lexer = _furtle.furtleLexer, parser = _furtle.furtleParser, procedures = [], importBindings = [], furtleFileContext = _occamlanguages.FileContext.fromFile(FurtleFileContext, file, lexer, parser, procedures, importBindings, context);
154
209
  return furtleFileContext;
155
210
  }
156
211
  static fromJSON(json, context) {
157
- const lexer = _furtle.furtleLexer, parser = _furtle.furtleParser, procedures = null, furtleFileContext = _occamlanguages.FileContext.fromJSON(FurtleFileContext, json, lexer, parser, procedures, context);
212
+ const lexer = _furtle.furtleLexer, parser = _furtle.furtleParser, procedures = null, importBindings = null, furtleFileContext = _occamlanguages.FileContext.fromJSON(FurtleFileContext, json, lexer, parser, procedures, importBindings, context);
158
213
  return furtleFileContext;
159
214
  }
160
215
  }
161
216
 
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0L2ZpbGUvZnVydGxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBGaWxlQ29udGV4dCB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcbmltcG9ydCB7IHF1ZXJ5VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLXF1ZXJ5XCI7XG5cbmltcG9ydCB7IGlzb2xhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHZlcmlmeUZpbGUgfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy92ZXJpZnlcIjtcbmltcG9ydCB7IGZ1cnRsZUxleGVyLCBmdXJ0bGVQYXJzZXIgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2Z1cnRsZVwiO1xuaW1wb3J0IHsgcHJvY2VkdXJlc0Zyb21KU09OLCBwcm9jZWR1cmVzVG9Qcm9jZWR1cmVzSlNPTiB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IG5vZGVzUXVlcnkgfSA9IHF1ZXJ5VXRpbGl0aWVzO1xuXG5jb25zdCBwcm9jZWR1cmVOb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9kb2N1bWVudC9wcm9jZWR1cmVcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZ1cnRsZUZpbGVDb250ZXh0IGV4dGVuZHMgRmlsZUNvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBmaWxlQ29udGVudCwgZmlsZVBhdGgsIHRva2Vucywgbm9kZSwganNvbiwgbGV4ZXIsIHBhcnNlciwgcHJvY2VkdXJlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIGZpbGVDb250ZW50LCBmaWxlUGF0aCwgdG9rZW5zLCBub2RlLCBqc29uKTtcblxuICAgIHRoaXMubGV4ZXIgPSBsZXhlcjtcbiAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICB0aGlzLnByb2NlZHVyZXMgPSBwcm9jZWR1cmVzO1xuICB9XG5cbiAgZ2V0TGV4ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMubGV4ZXI7XG4gIH1cblxuICBnZXRQYXJzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyO1xuICB9XG5cbiAgZ2V0TGFiZWxzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGxhYmVscyA9IFtdO1xuXG4gICAgcmV0dXJuIGxhYmVscztcbiAgfVxuXG4gIGdldFR5cGVzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGVzID0gW107XG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cblxuICBnZXRSdWxlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBydWxlcyA9IFtdXG5cbiAgICByZXR1cm4gcnVsZXM7XG4gIH1cblxuICBnZXRBeGlvbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgYXhpb21zID0gW107XG5cbiAgICByZXR1cm4gYXhpb21zO1xuICB9XG5cbiAgZ2V0TGVtbWFzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbW1hcyA9IFtdO1xuXG4gICAgcmV0dXJuIGxlbW1hcztcbiAgfVxuXG4gIGdldFRoZW9yZW1zKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHRoZW9yZW1zID0gW107XG5cbiAgICByZXR1cm4gdGhlb3JlbXM7XG4gIH1cblxuICBnZXRNZXRhTGVtbWFzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IG1ldGFMZW1tYXMgPSBbXTtcblxuICAgIHJldHVybiBtZXRhTGVtbWFzO1xuICB9XG5cbiAgZ2V0R2VuZXJhdG9ycyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBnZW5lcmF0b3JzID0gW107XG5cbiAgICByZXR1cm4gZ2VuZXJhdG9ycztcbiAgfVxuXG4gIGdldENvbmplY3R1cmVzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbmplY3R1cmVzID0gW107XG5cbiAgICByZXR1cm4gY29uamVjdHVyZXM7XG4gIH1cblxuICBnZXRDb21iaW5hdG9ycyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb21iaW5hdG9ycyA9IFtdO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JzO1xuICB9XG5cbiAgZ2V0VHlwZVByZWZpeGVzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGVQcmVmaXhlcyA9IFtdO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhlcztcbiAgfVxuXG4gIGdldENvbnN0cnVjdG9ycyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvcnMgPSBbXTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcnM7XG4gIH1cblxuICBnZXRNZXRhdGhlb3JlbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgbWV0YXRoZW9yZW1zID0gW107XG5cbiAgICByZXR1cm4gbWV0YXRoZW9yZW1zO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVzID0gW107XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFByb2NlZHVyZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZ2V0UHJvY2VkdXJlcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2VkdXJlcztcblxuICAgIHJldHVybiBwcm9jZWR1cmVzO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVzKG5lc3RlZCA9IHRydWUpIHtcbiAgICBjb25zdCB2YXJpYWJsZXMgPSBbXTtcblxuICAgIHJldHVybiB2YXJpYWJsZXM7XG4gIH1cblxuICBhZGRQcm9jZWR1cmUocHJvY2VkdXJlKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlU3RyaW5nID0gcHJvY2VkdXJlLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy5wcm9jZWR1cmVzLnB1c2gocHJvY2VkdXJlKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpO1xuXG4gICAgdGhpcy5kZWJ1ZyhgQWRkZWQgdGhlICcke3Byb2NlZHVyZVN0cmluZ30nIGZ1bmN0aW9uIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKTtcbiAgfVxuXG4gIGZpbmRQcm9jZWR1cmVOb2RlKGxhYmVsKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGxhYmVsTm9kZSA9IGxhYmVsLmdldE5vZGUoKSxcbiAgICAgICAgICBkb2N1bWVudE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgcHJvY2VkdXJlTm9kZXMgPSBwcm9jZWR1cmVOb2Rlc1F1ZXJ5KGRvY3VtZW50Tm9kZSksXG4gICAgICAgICAgcHJvY2VkdXJlTm9kZSA9IHByb2NlZHVyZU5vZGVzLmZpbmQoKHByb2NlZHVyZU5vZGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsTWF0Y2hlcyA9IHByb2NlZHVyZU5vZGUubWF0Y2hMYWJlbE5vZGUobGFiZWxOb2RlKTtcblxuICAgICAgICAgICAgaWYgKGxhYmVsTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZU5vZGU7XG4gIH1cblxuICBmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBwcm9jZWR1cmVzID0gdGhpcy5nZXRQcm9jZWR1cmVzKCksXG4gICAgICAgICAgcHJvY2VkdXJlID0gcHJvY2VkdXJlcy5maW5kKChwcm9jZWR1cmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb2NlZHVyZUNvbXBhcmVzVG9Qcm9jZWR1cmVOYW1lID0gcHJvY2VkdXJlLmNvbXBhcmVQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAocHJvY2VkdXJlQ29tcGFyZXNUb1Byb2NlZHVyZU5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cblxuICBpc1Byb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSkge1xuICAgIGNvbnN0IHByb2NlZHVyZSA9IHRoaXMuZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKSxcbiAgICAgICAgICBwcm9jZWR1cmVQcmVzZW50ID0gKHByb2NlZHVyZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlUHJlc2VudDtcbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMucHJvY2VkdXJlcyA9IFtdO1xuICB9XG5cbiAgY29tcGxldGUoKSB7XG4gICAgLy8vXG4gIH1cblxuICBpbml0aWFsaXNlKCkge1xuICAgIHN1cGVyLmluaXRpYWxpc2UoKTsgLy8vXG5cbiAgICBjb25zdCBqc29uID0gdGhpcy5nZXRKU09OKCk7XG5cbiAgICBpZiAoanNvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZmlsZUNvbnRleHQgPSB0aGlzOyAvLy9cblxuICAgICAgdGhpcy5wcm9jZWR1cmVzID0gcHJvY2VkdXJlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcbiAgICB9XG4gIH1cblxuICB2ZXJpZnlGaWxlKGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gaXNvbGF0ZSgoZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgICAgY29udGV4dCA9IHRoaXMsIC8vL1xuICAgICAgICAgICAgZmlsZU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICAgIHJldHVybiB2ZXJpZnlGaWxlKGZpbGVOb2RlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBmb3J3YXJkLCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBwcm9jZWR1cmVzSlNPTiA9IHByb2NlZHVyZXNUb1Byb2NlZHVyZXNKU09OKHRoaXMucHJvY2VkdXJlcyksXG4gICAgICAgICAgZmlsZUNvbnRlbnQgPSB0aGlzLmdldEZpbGVDb250ZW50KCksXG4gICAgICAgICAgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgcHJvY2VkdXJlcyA9IHByb2NlZHVyZXNKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIGZpbGVDb250ZW50LFxuICAgICAgICAgICAgZmlsZVBhdGgsXG4gICAgICAgICAgICBwcm9jZWR1cmVzXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21GaWxlKGZpbGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBsZXhlciA9IGZ1cnRsZUxleGVyLCAgLy8vXG4gICAgICAgICAgcGFyc2VyID0gZnVydGxlUGFyc2VyLCAgLy8vXG4gICAgICAgICAgcHJvY2VkdXJlcyA9IFtdLFxuICAgICAgICAgIGZ1cnRsZUZpbGVDb250ZXh0ID0gRmlsZUNvbnRleHQuZnJvbUZpbGUoRnVydGxlRmlsZUNvbnRleHQsIGZpbGUsIGxleGVyLCBwYXJzZXIsIHByb2NlZHVyZXMsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGZ1cnRsZUZpbGVDb250ZXh0O1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCBsZXhlciA9IGZ1cnRsZUxleGVyLCAgLy8vXG4gICAgICAgICAgcGFyc2VyID0gZnVydGxlUGFyc2VyLCAgLy8vXG4gICAgICAgICAgcHJvY2VkdXJlcyA9IG51bGwsXG4gICAgICAgICAgZnVydGxlRmlsZUNvbnRleHQgPSBGaWxlQ29udGV4dC5mcm9tSlNPTihGdXJ0bGVGaWxlQ29udGV4dCwganNvbiwgbGV4ZXIsIHBhcnNlciwgcHJvY2VkdXJlcywgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZnVydGxlRmlsZUNvbnRleHQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJGdXJ0bGVGaWxlQ29udGV4dCIsIm5vZGVzUXVlcnkiLCJxdWVyeVV0aWxpdGllcyIsInByb2NlZHVyZU5vZGVzUXVlcnkiLCJGaWxlQ29udGV4dCIsImNvbnRleHQiLCJmaWxlQ29udGVudCIsImZpbGVQYXRoIiwidG9rZW5zIiwibm9kZSIsImpzb24iLCJsZXhlciIsInBhcnNlciIsInByb2NlZHVyZXMiLCJnZXRMZXhlciIsImdldFBhcnNlciIsImdldExhYmVscyIsImluY2x1ZGVSZWxlYXNlIiwibGFiZWxzIiwiZ2V0VHlwZXMiLCJ0eXBlcyIsImdldFJ1bGVzIiwicnVsZXMiLCJnZXRBeGlvbXMiLCJheGlvbXMiLCJnZXRMZW1tYXMiLCJsZW1tYXMiLCJnZXRUaGVvcmVtcyIsInRoZW9yZW1zIiwiZ2V0TWV0YUxlbW1hcyIsIm1ldGFMZW1tYXMiLCJnZXRHZW5lcmF0b3JzIiwiZ2VuZXJhdG9ycyIsImdldENvbmplY3R1cmVzIiwiY29uamVjdHVyZXMiLCJnZXRDb21iaW5hdG9ycyIsImNvbWJpbmF0b3JzIiwiZ2V0VHlwZVByZWZpeGVzIiwidHlwZVByZWZpeGVzIiwiZ2V0Q29uc3RydWN0b3JzIiwiY29uc3RydWN0b3JzIiwiZ2V0TWV0YXRoZW9yZW1zIiwibWV0YXRoZW9yZW1zIiwiZ2V0TWV0YXZhcmlhYmxlcyIsIm1ldGF2YXJpYWJsZXMiLCJnZXRQcm9jZWR1cmVzIiwiZ2V0VmFyaWFibGVzIiwibmVzdGVkIiwidmFyaWFibGVzIiwiYWRkUHJvY2VkdXJlIiwicHJvY2VkdXJlIiwicHJvY2VkdXJlU3RyaW5nIiwiZ2V0U3RyaW5nIiwicHVzaCIsImdldEZpbGVQYXRoIiwiZGVidWciLCJmaW5kUHJvY2VkdXJlTm9kZSIsImxhYmVsIiwiZ2V0Tm9kZSIsImxhYmVsTm9kZSIsImRvY3VtZW50Tm9kZSIsInByb2NlZHVyZU5vZGVzIiwicHJvY2VkdXJlTm9kZSIsImZpbmQiLCJsYWJlbE1hdGNoZXMiLCJtYXRjaExhYmVsTm9kZSIsImZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlQ29tcGFyZXNUb1Byb2NlZHVyZU5hbWUiLCJjb21wYXJlUHJvY2VkdXJlTmFtZSIsImlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZVByZXNlbnQiLCJjbGVhciIsImNvbXBsZXRlIiwiaW5pdGlhbGlzZSIsImdldEpTT04iLCJmaWxlQ29udGV4dCIsInByb2NlZHVyZXNGcm9tSlNPTiIsInZlcmlmeUZpbGUiLCJmb3J3YXJkIiwiYmFjayIsImlzb2xhdGUiLCJmaWxlTm9kZSIsInRvSlNPTiIsInByb2NlZHVyZXNKU09OIiwicHJvY2VkdXJlc1RvUHJvY2VkdXJlc0pTT04iLCJnZXRGaWxlQ29udGVudCIsImZyb21GaWxlIiwiZmlsZSIsImZ1cnRsZUxleGVyIiwiZnVydGxlUGFyc2VyIiwiZnVydGxlRmlsZUNvbnRleHQiLCJmcm9tSlNPTiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFxQkE7OztnQ0FaTzs0QkFDRzt5QkFFUDt3QkFDRzt3QkFDZTtzQkFDcUI7QUFFL0QsTUFBTSxFQUFFQyxVQUFVLEVBQUUsR0FBR0MsMEJBQWM7QUFFckMsTUFBTUMsc0JBQXNCRixXQUFXO0FBRXhCLE1BQU1ELDBCQUEwQkksMkJBQVc7SUFDeEQsWUFBWUMsT0FBTyxFQUFFQyxXQUFXLEVBQUVDLFFBQVEsRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLFVBQVUsQ0FBRTtRQUN6RixLQUFLLENBQUNSLFNBQVNDLGFBQWFDLFVBQVVDLFFBQVFDLE1BQU1DO1FBRXBELElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNILEtBQUs7SUFDbkI7SUFFQUksWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDSCxNQUFNO0lBQ3BCO0lBRUFJLFVBQVVDLGlCQUFpQixJQUFJLEVBQUU7UUFDL0IsTUFBTUMsU0FBUyxFQUFFO1FBRWpCLE9BQU9BO0lBQ1Q7SUFFQUMsU0FBU0YsaUJBQWlCLElBQUksRUFBRTtRQUM5QixNQUFNRyxRQUFRLEVBQUU7UUFFaEIsT0FBT0E7SUFDVDtJQUVBQyxTQUFTSixpQkFBaUIsSUFBSSxFQUFFO1FBQzlCLE1BQU1LLFFBQVEsRUFBRTtRQUVoQixPQUFPQTtJQUNUO0lBRUFDLFVBQVVOLGlCQUFpQixJQUFJLEVBQUU7UUFDL0IsTUFBTU8sU0FBUyxFQUFFO1FBRWpCLE9BQU9BO0lBQ1Q7SUFFQUMsVUFBVVIsaUJBQWlCLElBQUksRUFBRTtRQUMvQixNQUFNUyxTQUFTLEVBQUU7UUFFakIsT0FBT0E7SUFDVDtJQUVBQyxZQUFZVixpQkFBaUIsSUFBSSxFQUFFO1FBQ2pDLE1BQU1XLFdBQVcsRUFBRTtRQUVuQixPQUFPQTtJQUNUO0lBRUFDLGNBQWNaLGlCQUFpQixJQUFJLEVBQUU7UUFDbkMsTUFBTWEsYUFBYSxFQUFFO1FBRXJCLE9BQU9BO0lBQ1Q7SUFFQUMsY0FBY2QsaUJBQWlCLElBQUksRUFBRTtRQUNuQyxNQUFNZSxhQUFhLEVBQUU7UUFFckIsT0FBT0E7SUFDVDtJQUVBQyxlQUFlaEIsaUJBQWlCLElBQUksRUFBRTtRQUNwQyxNQUFNaUIsY0FBYyxFQUFFO1FBRXRCLE9BQU9BO0lBQ1Q7SUFFQUMsZUFBZWxCLGlCQUFpQixJQUFJLEVBQUU7UUFDcEMsTUFBTW1CLGNBQWMsRUFBRTtRQUV0QixPQUFPQTtJQUNUO0lBRUFDLGdCQUFnQnBCLGlCQUFpQixJQUFJLEVBQUU7UUFDckMsTUFBTXFCLGVBQWUsRUFBRTtRQUV2QixPQUFPQTtJQUNUO0lBRUFDLGdCQUFnQnRCLGlCQUFpQixJQUFJLEVBQUU7UUFDckMsTUFBTXVCLGVBQWUsRUFBRTtRQUV2QixPQUFPQTtJQUNUO0lBRUFDLGdCQUFnQnhCLGlCQUFpQixJQUFJLEVBQUU7UUFDckMsTUFBTXlCLGVBQWUsRUFBRTtRQUV2QixPQUFPQTtJQUNUO0lBRUFDLGlCQUFpQjFCLGlCQUFpQixJQUFJLEVBQUU7UUFDdEMsTUFBTTJCLGdCQUFnQixFQUFFO1FBRXhCLE9BQU9BO0lBQ1Q7SUFFQUMsY0FBYzVCLGlCQUFpQixJQUFJLEVBQUU7UUFDbkMsTUFBTUosYUFBYUksaUJBQ0UsSUFBSSxDQUFDWixPQUFPLENBQUN3QyxhQUFhLEtBQ3hCLElBQUksQ0FBQ2hDLFVBQVU7UUFFdEMsT0FBT0E7SUFDVDtJQUVBaUMsYUFBYUMsU0FBUyxJQUFJLEVBQUU7UUFDMUIsTUFBTUMsWUFBWSxFQUFFO1FBRXBCLE9BQU9BO0lBQ1Q7SUFFQUMsYUFBYUMsU0FBUyxFQUFFO1FBQ3RCLE1BQU1DLGtCQUFrQkQsVUFBVUUsU0FBUztRQUUzQyxJQUFJLENBQUN2QyxVQUFVLENBQUN3QyxJQUFJLENBQUNIO1FBRXJCLE1BQU0zQyxXQUFXLElBQUksQ0FBQytDLFdBQVc7UUFFakMsSUFBSSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUVKLGdCQUFnQixtQkFBbUIsRUFBRTVDLFNBQVMsZUFBZSxDQUFDO0lBQ3pGO0lBRUFpRCxrQkFBa0JDLEtBQUssRUFBRTtRQUN2QixNQUFNaEQsT0FBTyxJQUFJLENBQUNpRCxPQUFPLElBQ25CQyxZQUFZRixNQUFNQyxPQUFPLElBQ3pCRSxlQUFlbkQsTUFDZm9ELGlCQUFpQjFELG9CQUFvQnlELGVBQ3JDRSxnQkFBZ0JELGVBQWVFLElBQUksQ0FBQyxDQUFDRDtZQUNuQyxNQUFNRSxlQUFlRixjQUFjRyxjQUFjLENBQUNOO1lBRWxELElBQUlLLGNBQWM7Z0JBQ2hCLE9BQU87WUFDVDtRQUNGLE1BQU07UUFFWixPQUFPRjtJQUNUO0lBRUFJLDZCQUE2QkMsYUFBYSxFQUFFO1FBQzFDLE1BQU10RCxhQUFhLElBQUksQ0FBQ2dDLGFBQWEsSUFDL0JLLFlBQVlyQyxXQUFXa0QsSUFBSSxDQUFDLENBQUNiO1lBQzNCLE1BQU1rQixtQ0FBbUNsQixVQUFVbUIsb0JBQW9CLENBQUNGO1lBRXhFLElBQUlDLGtDQUFrQztnQkFDcEMsT0FBTztZQUNUO1FBQ0YsTUFBTTtRQUVaLE9BQU9sQjtJQUNUO0lBRUFvQixrQ0FBa0NILGFBQWEsRUFBRTtRQUMvQyxNQUFNakIsWUFBWSxJQUFJLENBQUNnQiw0QkFBNEIsQ0FBQ0MsZ0JBQzlDSSxtQkFBb0JyQixjQUFjO1FBRXhDLE9BQU9xQjtJQUNUO0lBRUFDLFFBQVE7UUFDTixJQUFJLENBQUMzRCxVQUFVLEdBQUcsRUFBRTtJQUN0QjtJQUVBNEQsV0FBVztJQUNULEdBQUc7SUFDTDtJQUVBQyxhQUFhO1FBQ1gsS0FBSyxDQUFDQSxjQUFjLEdBQUc7UUFFdkIsTUFBTWhFLE9BQU8sSUFBSSxDQUFDaUUsT0FBTztRQUV6QixJQUFJakUsU0FBUyxNQUFNO1lBQ2pCLE1BQU1rRSxjQUFjLElBQUksRUFBRSxHQUFHO1lBRTdCLElBQUksQ0FBQy9ELFVBQVUsR0FBR2dFLElBQUFBLHdCQUFrQixFQUFDbkUsTUFBTWtFO1FBQzdDO0lBQ0Y7SUFFQUUsV0FBV0MsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDeEIsT0FBT0MsSUFBQUEsZ0JBQU8sRUFBQyxDQUFDRixTQUFTQztZQUN2QixNQUFNdkUsT0FBTyxJQUFJLENBQUNpRCxPQUFPLElBQ25CckQsVUFBVSxJQUFJLEVBQ2Q2RSxXQUFXekUsTUFBTyxHQUFHO1lBRTNCLE9BQU9xRSxJQUFBQSxrQkFBVSxFQUFDSSxVQUFVN0UsU0FBUzBFLFNBQVNDO1FBQ2hELEdBQUdELFNBQVNDO0lBQ2Q7SUFFQUcsU0FBUztRQUNQLE1BQU1DLGlCQUFpQkMsSUFBQUEsZ0NBQTBCLEVBQUMsSUFBSSxDQUFDeEUsVUFBVSxHQUMzRFAsY0FBYyxJQUFJLENBQUNnRixjQUFjLElBQ2pDL0UsV0FBVyxJQUFJLENBQUMrQyxXQUFXLElBQzNCekMsYUFBYXVFLGdCQUNiMUUsT0FBTztZQUNMSjtZQUNBQztZQUNBTTtRQUNGO1FBRU4sT0FBT0g7SUFDVDtJQUVBLE9BQU82RSxTQUFTQyxJQUFJLEVBQUVuRixPQUFPLEVBQUU7UUFDN0IsTUFBTU0sUUFBUThFLG1CQUFXLEVBQ25CN0UsU0FBUzhFLG9CQUFZLEVBQ3JCN0UsYUFBYSxFQUFFLEVBQ2Y4RSxvQkFBb0J2RiwyQkFBVyxDQUFDbUYsUUFBUSxDQUFDdkYsbUJBQW1Cd0YsTUFBTTdFLE9BQU9DLFFBQVFDLFlBQVlSO1FBRW5HLE9BQU9zRjtJQUNUO0lBRUEsT0FBT0MsU0FBU2xGLElBQUksRUFBRUwsT0FBTyxFQUFFO1FBQzdCLE1BQU1NLFFBQVE4RSxtQkFBVyxFQUNuQjdFLFNBQVM4RSxvQkFBWSxFQUNyQjdFLGFBQWEsTUFDYjhFLG9CQUFvQnZGLDJCQUFXLENBQUN3RixRQUFRLENBQUM1RixtQkFBbUJVLE1BQU1DLE9BQU9DLFFBQVFDLFlBQVlSO1FBRW5HLE9BQU9zRjtJQUNUO0FBQ0YifQ==
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0L2ZpbGUvZnVydGxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBGaWxlQ29udGV4dCB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcbmltcG9ydCB7IHF1ZXJ5VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLXF1ZXJ5XCI7XG5cbmltcG9ydCB7IGlzb2xhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHZlcmlmeUZpbGUgfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy92ZXJpZnlcIjtcbmltcG9ydCB7IGZ1cnRsZUxleGVyLCBmdXJ0bGVQYXJzZXIgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2Z1cnRsZVwiO1xuaW1wb3J0IHtcbiAgcHJvY2VkdXJlc0Zyb21KU09OLFxuICBpbXBvcnRCaW5kaW5nc0Zyb21KU09OLFxuICBwcm9jZWR1cmVzVG9Qcm9jZWR1cmVzSlNPTixcbiAgaW1wb3J0QmluZGluZ3NUb0ltcG9ydEJpbmRpbmdzSlNPTlxufSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2pzb25cIjtcbmltcG9ydCBwcm9jZWR1cmUgZnJvbSBcIi4uLy4uL2VsZW1lbnQvcHJvY2VkdXJlXCI7XG5cbmNvbnN0IHsgbm9kZXNRdWVyeSB9ID0gcXVlcnlVdGlsaXRpZXM7XG5cbmNvbnN0IHByb2NlZHVyZU5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL2RvY3VtZW50L3Byb2NlZHVyZVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnVydGxlRmlsZUNvbnRleHQgZXh0ZW5kcyBGaWxlQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIGZpbGVDb250ZW50LCBmaWxlUGF0aCwgdG9rZW5zLCBub2RlLCBqc29uLCBsZXhlciwgcGFyc2VyLCBwcm9jZWR1cmVzLCBpbXBvcnRCaW5kaW5ncykge1xuICAgIHN1cGVyKGNvbnRleHQsIGZpbGVDb250ZW50LCBmaWxlUGF0aCwgdG9rZW5zLCBub2RlLCBqc29uKTtcblxuICAgIHRoaXMubGV4ZXIgPSBsZXhlcjtcbiAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICB0aGlzLnByb2NlZHVyZXMgPSBwcm9jZWR1cmVzO1xuICAgIHRoaXMuaW1wb3J0QmluZGluZ3MgPSBpbXBvcnRCaW5kaW5ncztcbiAgfVxuXG4gIGdldExleGVyKCkge1xuICAgIHJldHVybiB0aGlzLmxleGVyO1xuICB9XG5cbiAgZ2V0UGFyc2VyKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlcjtcbiAgfVxuXG4gIGdldFByb2NlZHVyZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZ2V0UHJvY2VkdXJlcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2VkdXJlcztcblxuICAgIHJldHVybiBwcm9jZWR1cmVzO1xuICB9XG5cbiAgZ2V0SW1wb3J0QmluZGluZ3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1wb3J0QmluZGluZ3M7XG4gIH1cblxuICBnZXRMYWJlbHMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgbGFiZWxzID0gW107XG5cbiAgICByZXR1cm4gbGFiZWxzO1xuICB9XG5cbiAgZ2V0VHlwZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZXMgPSBbXTtcblxuICAgIHJldHVybiB0eXBlcztcbiAgfVxuXG4gIGdldFJ1bGVzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHJ1bGVzID0gW11cblxuICAgIHJldHVybiBydWxlcztcbiAgfVxuXG4gIGdldEF4aW9tcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBheGlvbXMgPSBbXTtcblxuICAgIHJldHVybiBheGlvbXM7XG4gIH1cblxuICBnZXRMZW1tYXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgbGVtbWFzID0gW107XG5cbiAgICByZXR1cm4gbGVtbWFzO1xuICB9XG5cbiAgZ2V0VGhlb3JlbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdGhlb3JlbXMgPSBbXTtcblxuICAgIHJldHVybiB0aGVvcmVtcztcbiAgfVxuXG4gIGdldE1ldGFMZW1tYXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgbWV0YUxlbW1hcyA9IFtdO1xuXG4gICAgcmV0dXJuIG1ldGFMZW1tYXM7XG4gIH1cblxuICBnZXRHZW5lcmF0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGdlbmVyYXRvcnMgPSBbXTtcblxuICAgIHJldHVybiBnZW5lcmF0b3JzO1xuICB9XG5cbiAgZ2V0Q29uamVjdHVyZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgY29uamVjdHVyZXMgPSBbXTtcblxuICAgIHJldHVybiBjb25qZWN0dXJlcztcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbWJpbmF0b3JzID0gW107XG5cbiAgICByZXR1cm4gY29tYmluYXRvcnM7XG4gIH1cblxuICBnZXRUeXBlUHJlZml4ZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZVByZWZpeGVzID0gW107XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeGVzO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IFtdO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ycztcbiAgfVxuXG4gIGdldE1ldGF0aGVvcmVtcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBtZXRhdGhlb3JlbXMgPSBbXTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbXM7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZXMgPSBbXTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVzKG5lc3RlZCA9IHRydWUpIHtcbiAgICBjb25zdCB2YXJpYWJsZXMgPSBbXTtcblxuICAgIHJldHVybiB2YXJpYWJsZXM7XG4gIH1cblxuICBhZGRQcm9jZWR1cmUocHJvY2VkdXJlKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlU3RyaW5nID0gcHJvY2VkdXJlLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy5wcm9jZWR1cmVzLnB1c2gocHJvY2VkdXJlKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpO1xuXG4gICAgdGhpcy5kZWJ1ZyhgQWRkZWQgdGhlICcke3Byb2NlZHVyZVN0cmluZ30nIGZ1bmN0aW9uIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEltcG9ydEJpbmRpbmcoaW1wb3J0QmluZGluZykge1xuICAgIGNvbnN0IGltcG9ydEJpbmRpbmdTdHJpbmcgPSBpbXBvcnRCaW5kaW5nLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy5pbXBvcnRCaW5kaW5ncy5wdXNoKGltcG9ydEJpbmRpbmcpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCk7XG5cbiAgICB0aGlzLmRlYnVnKGBBZGRlZCB0aGUgJyR7aW1wb3J0QmluZGluZ1N0cmluZ30nIGltcG9ydCBiaW5kaW5nIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKTtcbiAgfVxuXG4gIGZpbmRQcm9jZWR1cmVOb2RlKGxhYmVsKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGxhYmVsTm9kZSA9IGxhYmVsLmdldE5vZGUoKSxcbiAgICAgICAgICBkb2N1bWVudE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgcHJvY2VkdXJlTm9kZXMgPSBwcm9jZWR1cmVOb2Rlc1F1ZXJ5KGRvY3VtZW50Tm9kZSksXG4gICAgICAgICAgcHJvY2VkdXJlTm9kZSA9IHByb2NlZHVyZU5vZGVzLmZpbmQoKHByb2NlZHVyZU5vZGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsTWF0Y2hlcyA9IHByb2NlZHVyZU5vZGUubWF0Y2hMYWJlbE5vZGUobGFiZWxOb2RlKTtcblxuICAgICAgICAgICAgaWYgKGxhYmVsTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZU5vZGU7XG4gIH1cblxuICBmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBwcm9jZWR1cmVzID0gdGhpcy5nZXRQcm9jZWR1cmVzKCksXG4gICAgICAgICAgcHJvY2VkdXJlID0gcHJvY2VkdXJlcy5maW5kKChwcm9jZWR1cmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb2NlZHVyZUNvbXBhcmVzVG9Qcm9jZWR1cmVOYW1lID0gcHJvY2VkdXJlLmNvbXBhcmVQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAocHJvY2VkdXJlQ29tcGFyZXNUb1Byb2NlZHVyZU5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cblxuICBmaW5kSW1wb3J0ZWRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSkge1xuICAgIGxldCBpbXBvcnRlZFByb2NlZHVyZSA9IG51bGw7XG5cbiAgICB0aGlzLmltcG9ydEJpbmRpbmdzLnNvbWUoKGltcG9ydEJpbmRpbmcpID0+IHtcbiAgICAgIGNvbnN0IGxhYmxsZWRQcm9jZWR1cmVOYW1lID0gcHJvY2VkdXJlTmFtZTsgLy8vXG5cbiAgICAgIGNvbnN0IGxhYmVsbGVkUHJvY2VkdXJlTmFtZUNsbXBhcmVzID0gaW1wb3J0QmluZGluZy5jb21wYXJlTGFibGxlZFByb2NlZHVyZU5hbWUobGFibGxlZFByb2NlZHVyZU5hbWUpO1xuXG4gICAgICBpZiAobGFiZWxsZWRQcm9jZWR1cmVOYW1lQ2xtcGFyZXMpIHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlZFByb2NlZHVyZU5hbWUgPSBpbXBvcnRCaW5kaW5nLmdldFJlZmVyZW5jZWRQcm9jZWR1cmVOYW1lKCk7XG5cbiAgICAgICAgcHJvY2VkdXJlTmFtZSA9IHJlZmVyZW5jZWRQcm9jZWR1cmVOYW1lOyAgLy8vXG5cbiAgICAgICAgY29uc3QgcHJvY2VkdXJlID0gdGhpcy5maW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgICAgIGltcG9ydGVkUHJvY2VkdXJlID0gcHJvY2VkdXJlOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaW1wb3J0ZWRQcm9jZWR1cmU7XG4gIH1cblxuICBmaW5kSW1wb3J0QmluZGluZ0J5TGFiZWxsZWRQcm9jZWR1cmVOYW1lKGxhYmVsbGVkUHJvY2VkdXJlTmFtZSkge1xuICAgIGNvbnN0IGltcG9ydEJpbmRpbmcgPSB0aGlzLmltcG9ydEJpbmRpbmdzLmZpbmQoKGltcG9ydEJpbmRpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsbGVkUHJvY2VkdXJlTmFtZUNvbXBhcmVzID0gaW1wb3J0QmluZGluZy5jb21wYXJlTGFibGxlZFByb2NlZHVyZU5hbWUobGFiZWxsZWRQcm9jZWR1cmVOYW1lKTtcblxuICAgICAgICAgICAgaWYgKGxhYmVsbGVkUHJvY2VkdXJlTmFtZUNvbXBhcmVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gaW1wb3J0QmluZGluZztcbiAgfVxuXG4gIGlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlID0gdGhpcy5maW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpLFxuICAgICAgICAgIHByb2NlZHVyZVByZXNlbnQgPSAocHJvY2VkdXJlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVQcmVzZW50O1xuICB9XG5cbiAgaXNJbXBvcnRlZFByb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSkge1xuICAgIGNvbnN0IGltcG9ydGVkUHJvY2V1ZHJlID0gdGhpcy5maW5kSW1wb3J0ZWRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSksXG4gICAgICAgICAgaW1wb3J0ZWRQcm9jZXVkcmVQcmVzZW50ID0gKGltcG9ydGVkUHJvY2V1ZHJlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBpbXBvcnRlZFByb2NldWRyZVByZXNlbnQ7XG4gIH1cblxuICBpc0ltcG9ydEJpbmRpbmdQcmVzZW50QnlMYWJlbGxlZFByb2NlZHVyZU5hbWUobGFiZWxsZWRQcm9jZWR1cmVOYW1lKSB7XG4gICAgY29uc3QgaW1wb3J0QmluZGluZyA9IHRoaXMuZmluZEltcG9ydEJpbmRpbmdCeUxhYmVsbGVkUHJvY2VkdXJlTmFtZShsYWJlbGxlZFByb2NlZHVyZU5hbWUpLFxuICAgICAgICAgIGltcG9ydEJpbmRpbmdQcmVzZW50ID0gKGltcG9ydEJpbmRpbmcgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGltcG9ydEJpbmRpbmdQcmVzZW50O1xuICB9XG5cbiAgY29tcGFyZVJlbGVhc2VOYW1lKHJlbGVhc2VOYW1lKSB7IHJldHVybiB0aGlzLmNvbnRleHQuY29tcGFyZVJlbGVhc2VOYW1lKHJlbGVhc2VOYW1lKTsgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMucHJvY2VkdXJlcyA9IFtdO1xuICB9XG5cbiAgY29tcGxldGUoKSB7XG4gICAgLy8vXG4gIH1cblxuICBpbml0aWFsaXNlKCkge1xuICAgIHN1cGVyLmluaXRpYWxpc2UoKTsgLy8vXG5cbiAgICBjb25zdCBqc29uID0gdGhpcy5nZXRKU09OKCk7XG5cbiAgICBpZiAoanNvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZmlsZUNvbnRleHQgPSB0aGlzOyAvLy9cblxuICAgICAgdGhpcy5wcm9jZWR1cmVzID0gcHJvY2VkdXJlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgICAgdGhpcy5pbXBvcnRCaW5kaW5ncyA9IGltcG9ydEJpbmRpbmdzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIH1cbiAgfVxuXG4gIHZlcmlmeUZpbGUoZm9yd2FyZCwgYmFjaykge1xuICAgIHJldHVybiBpc29sYXRlKChmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgICBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgICBmaWxlTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgICAgcmV0dXJuIHZlcmlmeUZpbGUoZmlsZU5vZGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGZvcndhcmQsIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgZmlsZUNvbnRlbnQgPSB0aGlzLmdldEZpbGVDb250ZW50KCksXG4gICAgICAgICAgcHJvY2VkdXJlc0pTT04gPSBwcm9jZWR1cmVzVG9Qcm9jZWR1cmVzSlNPTih0aGlzLnByb2NlZHVyZXMpLFxuICAgICAgICAgIGltcG9ydEJpbmRpbmdzSlNPTiA9IGltcG9ydEJpbmRpbmdzVG9JbXBvcnRCaW5kaW5nc0pTT04odGhpcy5pbXBvcnRCaW5kaW5ncyksXG4gICAgICAgICAgcHJvY2VkdXJlcyA9IHByb2NlZHVyZXNKU09OLCAgLy8vXG4gICAgICAgICAgaW1wb3J0QmluZGluZ3MgPSBpbXBvcnRCaW5kaW5nc0pTT047XG5cbiAgICBqc29uID0ge1xuICAgICAgZmlsZVBhdGgsXG4gICAgICBmaWxlQ29udGVudCxcbiAgICAgIHByb2NlZHVyZXMsXG4gICAgICBpbXBvcnRCaW5kaW5nc1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRmlsZShmaWxlLCBjb250ZXh0KSB7XG4gICAgY29uc3QgbGV4ZXIgPSBmdXJ0bGVMZXhlciwgIC8vL1xuICAgICAgICAgIHBhcnNlciA9IGZ1cnRsZVBhcnNlciwgIC8vL1xuICAgICAgICAgIHByb2NlZHVyZXMgPSBbXSxcbiAgICAgICAgICBpbXBvcnRCaW5kaW5ncyA9IFtdLFxuICAgICAgICAgIGZ1cnRsZUZpbGVDb250ZXh0ID0gRmlsZUNvbnRleHQuZnJvbUZpbGUoRnVydGxlRmlsZUNvbnRleHQsIGZpbGUsIGxleGVyLCBwYXJzZXIsIHByb2NlZHVyZXMsIGltcG9ydEJpbmRpbmdzLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBmdXJ0bGVGaWxlQ29udGV4dDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgbGV4ZXIgPSBmdXJ0bGVMZXhlciwgIC8vL1xuICAgICAgICAgIHBhcnNlciA9IGZ1cnRsZVBhcnNlciwgIC8vL1xuICAgICAgICAgIHByb2NlZHVyZXMgPSBudWxsLFxuICAgICAgICAgIGltcG9ydEJpbmRpbmdzID0gbnVsbCxcbiAgICAgICAgICBmdXJ0bGVGaWxlQ29udGV4dCA9IEZpbGVDb250ZXh0LmZyb21KU09OKEZ1cnRsZUZpbGVDb250ZXh0LCBqc29uLCBsZXhlciwgcGFyc2VyLCBwcm9jZWR1cmVzLCBpbXBvcnRCaW5kaW5ncywgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZnVydGxlRmlsZUNvbnRleHQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJGdXJ0bGVGaWxlQ29udGV4dCIsIm5vZGVzUXVlcnkiLCJxdWVyeVV0aWxpdGllcyIsInByb2NlZHVyZU5vZGVzUXVlcnkiLCJGaWxlQ29udGV4dCIsImNvbnRleHQiLCJmaWxlQ29udGVudCIsImZpbGVQYXRoIiwidG9rZW5zIiwibm9kZSIsImpzb24iLCJsZXhlciIsInBhcnNlciIsInByb2NlZHVyZXMiLCJpbXBvcnRCaW5kaW5ncyIsImdldExleGVyIiwiZ2V0UGFyc2VyIiwiZ2V0UHJvY2VkdXJlcyIsImluY2x1ZGVSZWxlYXNlIiwiZ2V0SW1wb3J0QmluZGluZ3MiLCJnZXRMYWJlbHMiLCJsYWJlbHMiLCJnZXRUeXBlcyIsInR5cGVzIiwiZ2V0UnVsZXMiLCJydWxlcyIsImdldEF4aW9tcyIsImF4aW9tcyIsImdldExlbW1hcyIsImxlbW1hcyIsImdldFRoZW9yZW1zIiwidGhlb3JlbXMiLCJnZXRNZXRhTGVtbWFzIiwibWV0YUxlbW1hcyIsImdldEdlbmVyYXRvcnMiLCJnZW5lcmF0b3JzIiwiZ2V0Q29uamVjdHVyZXMiLCJjb25qZWN0dXJlcyIsImdldENvbWJpbmF0b3JzIiwiY29tYmluYXRvcnMiLCJnZXRUeXBlUHJlZml4ZXMiLCJ0eXBlUHJlZml4ZXMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJnZXRNZXRhdGhlb3JlbXMiLCJtZXRhdGhlb3JlbXMiLCJnZXRNZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlcyIsImdldFZhcmlhYmxlcyIsIm5lc3RlZCIsInZhcmlhYmxlcyIsImFkZFByb2NlZHVyZSIsInByb2NlZHVyZSIsInByb2NlZHVyZVN0cmluZyIsImdldFN0cmluZyIsInB1c2giLCJnZXRGaWxlUGF0aCIsImRlYnVnIiwiYWRkSW1wb3J0QmluZGluZyIsImltcG9ydEJpbmRpbmciLCJpbXBvcnRCaW5kaW5nU3RyaW5nIiwiZmluZFByb2NlZHVyZU5vZGUiLCJsYWJlbCIsImdldE5vZGUiLCJsYWJlbE5vZGUiLCJkb2N1bWVudE5vZGUiLCJwcm9jZWR1cmVOb2RlcyIsInByb2NlZHVyZU5vZGUiLCJmaW5kIiwibGFiZWxNYXRjaGVzIiwibWF0Y2hMYWJlbE5vZGUiLCJmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZUNvbXBhcmVzVG9Qcm9jZWR1cmVOYW1lIiwiY29tcGFyZVByb2NlZHVyZU5hbWUiLCJmaW5kSW1wb3J0ZWRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUiLCJpbXBvcnRlZFByb2NlZHVyZSIsInNvbWUiLCJsYWJsbGVkUHJvY2VkdXJlTmFtZSIsImxhYmVsbGVkUHJvY2VkdXJlTmFtZUNsbXBhcmVzIiwiY29tcGFyZUxhYmxsZWRQcm9jZWR1cmVOYW1lIiwicmVmZXJlbmNlZFByb2NlZHVyZU5hbWUiLCJnZXRSZWZlcmVuY2VkUHJvY2VkdXJlTmFtZSIsImZpbmRJbXBvcnRCaW5kaW5nQnlMYWJlbGxlZFByb2NlZHVyZU5hbWUiLCJsYWJlbGxlZFByb2NlZHVyZU5hbWUiLCJsYWJlbGxlZFByb2NlZHVyZU5hbWVDb21wYXJlcyIsImlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZVByZXNlbnQiLCJpc0ltcG9ydGVkUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZSIsImltcG9ydGVkUHJvY2V1ZHJlIiwiaW1wb3J0ZWRQcm9jZXVkcmVQcmVzZW50IiwiaXNJbXBvcnRCaW5kaW5nUHJlc2VudEJ5TGFiZWxsZWRQcm9jZWR1cmVOYW1lIiwiaW1wb3J0QmluZGluZ1ByZXNlbnQiLCJjb21wYXJlUmVsZWFzZU5hbWUiLCJyZWxlYXNlTmFtZSIsImNsZWFyIiwiY29tcGxldGUiLCJpbml0aWFsaXNlIiwiZ2V0SlNPTiIsImZpbGVDb250ZXh0IiwicHJvY2VkdXJlc0Zyb21KU09OIiwiaW1wb3J0QmluZGluZ3NGcm9tSlNPTiIsInZlcmlmeUZpbGUiLCJmb3J3YXJkIiwiYmFjayIsImlzb2xhdGUiLCJmaWxlTm9kZSIsInRvSlNPTiIsImdldEZpbGVDb250ZW50IiwicHJvY2VkdXJlc0pTT04iLCJwcm9jZWR1cmVzVG9Qcm9jZWR1cmVzSlNPTiIsImltcG9ydEJpbmRpbmdzSlNPTiIsImltcG9ydEJpbmRpbmdzVG9JbXBvcnRCaW5kaW5nc0pTT04iLCJmcm9tRmlsZSIsImZpbGUiLCJmdXJ0bGVMZXhlciIsImZ1cnRsZVBhcnNlciIsImZ1cnRsZUZpbGVDb250ZXh0IiwiZnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQW9CQTs7O2VBQXFCQTs7O2dDQWxCTzs0QkFDRzt5QkFFUDt3QkFDRzt3QkFDZTtzQkFNbkM7a0VBQ2U7Ozs7OztBQUV0QixNQUFNLEVBQUVDLFVBQVUsRUFBRSxHQUFHQywwQkFBYztBQUVyQyxNQUFNQyxzQkFBc0JGLFdBQVc7QUFFeEIsTUFBTUQsMEJBQTBCSSwyQkFBVztJQUN4RCxZQUFZQyxPQUFPLEVBQUVDLFdBQVcsRUFBRUMsUUFBUSxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsVUFBVSxFQUFFQyxjQUFjLENBQUU7UUFDekcsS0FBSyxDQUFDVCxTQUFTQyxhQUFhQyxVQUFVQyxRQUFRQyxNQUFNQztRQUVwRCxJQUFJLENBQUNDLEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNDLE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxjQUFjLEdBQUdBO0lBQ3hCO0lBRUFDLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQ0osS0FBSztJQUNuQjtJQUVBSyxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUNKLE1BQU07SUFDcEI7SUFFQUssY0FBY0MsaUJBQWlC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
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _default;
9
+ }
10
+ });
11
+ const _occamlanguages = require("occam-languages");
12
+ const _elements = require("../elements");
13
+ const _instantiate = require("../process/instantiate");
14
+ const _json = require("../utilities/json");
15
+ const _context = require("../utilities/context");
16
+ const _default = (0, _elements.define)(class ImportBinding extends _occamlanguages.Element {
17
+ constructor(context, string, node, breakPoint, label, reference){
18
+ super(context, string, node, breakPoint);
19
+ this.label = label;
20
+ this.reference = reference;
21
+ }
22
+ getLabel() {
23
+ return this.label;
24
+ }
25
+ getReference() {
26
+ return this.reference;
27
+ }
28
+ getLabelledProcedureName() {
29
+ const labelName = this.label.getName(), labelledProcedureName = labelName; ///
30
+ return labelledProcedureName;
31
+ }
32
+ getReferencedProcedureName() {
33
+ const referenceName = this.reference.getName(), referencedProcedureName = referenceName; ///
34
+ return referencedProcedureName;
35
+ }
36
+ isAllowed() {
37
+ const labelledProcedureName = this.getLabelledProcedureName(), referencedProcedureName = this.getReferencedProcedureName(), aliased = labelledProcedureName !== referencedProcedureName;
38
+ return aliased;
39
+ }
40
+ compareLablledProcedureName(labelledProcedureName) {
41
+ const labelName = this.label.getName(), labelledProcedureNameCompares = labelName === labelledProcedureName;
42
+ return labelledProcedureNameCompares;
43
+ }
44
+ verify(releaseName, context, forward, back) {
45
+ const importBindingString = this.getString(); ///
46
+ context.trace(`Verifying the '${importBindingString}' import binding...`);
47
+ let procedureName, procedurePresent;
48
+ const referencedProcedureName = this.getReferencedProcedureName();
49
+ procedureName = referencedProcedureName; ///
50
+ procedurePresent = context.isProcedurePresentByProcedureName(procedureName);
51
+ if (!procedurePresent) {
52
+ context.trace(`The '${procedureName}' procedure is not present.`);
53
+ return back();
54
+ }
55
+ const labelledProcedureName = this.getLabelledProcedureName();
56
+ procedureName = labelledProcedureName; ///
57
+ const aliased = this.isAllowed();
58
+ if (aliased) {
59
+ procedurePresent = context.isProcedurePresentByProcedureName(procedureName);
60
+ if (procedurePresent) {
61
+ context.trace(`The '${procedureName}' procedure is already present.`);
62
+ return back();
63
+ }
64
+ }
65
+ const importBindingPresent = context.isImportBindingPresentByLabelledProcedureName(labelledProcedureName);
66
+ if (importBindingPresent) {
67
+ const labelString = this.label.getString();
68
+ context.trace(`The '${importBindingString}' import binding's '${labelString}' label is already present...`);
69
+ return back();
70
+ }
71
+ procedureName = referencedProcedureName; ///
72
+ const procedure = context.findProcedureByProcedureName(procedureName), releaseNameCompares = procedure.compareReleaseName(releaseName);
73
+ if (!releaseNameCompares) {
74
+ context.trace(`The '${procedureName}' procedure is not in the '${releaseName}' package.`);
75
+ return back();
76
+ }
77
+ const exported = procedure.isExported();
78
+ if (!exported) {
79
+ context.trace(`The '${procedureName}' procedure is not exported.`);
80
+ return back();
81
+ }
82
+ const importBinding = this;
83
+ context.addImportBinding(importBinding);
84
+ context.debug(`...verified the '${importBindingString}' import binding.`);
85
+ return forward(context, back);
86
+ }
87
+ toJSON() {
88
+ let json;
89
+ const string = this.getString(), labelJSON = (0, _json.labelToLabelJSON)(this.label), referenceJJSON = (0, _json.referenceToReferenceJSON)(this.reference), label = labelJSON, reference = referenceJJSON; ///
90
+ json = {
91
+ string,
92
+ label,
93
+ reference
94
+ };
95
+ return json;
96
+ }
97
+ static name = "ImportBinding";
98
+ static fromJSON(json, context) {
99
+ let importBinding;
100
+ (0, _context.instantiate)((context)=>{
101
+ const { string } = json, breakPoint = null, importBindingNode = (0, _instantiate.instantiateImportBinding)(string, context), label = (0, _json.labelFromJSON)(json, context), reference = (0, _json.referenceFromJSON)(json, context), node = importBindingNode; ///
102
+ importBinding = new ImportBinding(context, string, node, breakPoint, label, reference);
103
+ }, context);
104
+ return importBinding;
105
+ }
106
+ });
107
+
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2ltcG9ydEJpbmRpbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVJbXBvcnRCaW5kaW5nIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGxhYmVsRnJvbUpTT04sIGxhYmVsVG9MYWJlbEpTT04sIHJlZmVyZW5jZUZyb21KU09OLCByZWZlcmVuY2VUb1JlZmVyZW5jZUpTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcbmltcG9ydCB7aW5zdGFudGlhdGV9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgSW1wb3J0QmluZGluZyBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVsLCByZWZlcmVuY2UpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0TGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWw7XG4gIH1cblxuICBnZXRSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0TGFiZWxsZWRQcm9jZWR1cmVOYW1lKCkge1xuICAgIGNvbnN0IGxhYmVsTmFtZSA9IHRoaXMubGFiZWwuZ2V0TmFtZSgpLFxuICAgICAgICAgIGxhYmVsbGVkUHJvY2VkdXJlTmFtZSA9IGxhYmVsTmFtZTsgIC8vL1xuXG4gICAgcmV0dXJuIGxhYmVsbGVkUHJvY2VkdXJlTmFtZTtcbiAgfVxuXG4gIGdldFJlZmVyZW5jZWRQcm9jZWR1cmVOYW1lKCkge1xuICAgIGNvbnN0IHJlZmVyZW5jZU5hbWUgPSB0aGlzLnJlZmVyZW5jZS5nZXROYW1lKCksXG4gICAgICAgICAgcmVmZXJlbmNlZFByb2NlZHVyZU5hbWUgPSByZWZlcmVuY2VOYW1lOyAgLy8vXG5cbiAgICByZXR1cm4gcmVmZXJlbmNlZFByb2NlZHVyZU5hbWU7XG4gIH1cblxuICBpc0FsbG93ZWQoKSB7XG4gICAgY29uc3QgbGFiZWxsZWRQcm9jZWR1cmVOYW1lID0gdGhpcy5nZXRMYWJlbGxlZFByb2NlZHVyZU5hbWUoKSxcbiAgICAgICAgICByZWZlcmVuY2VkUHJvY2VkdXJlTmFtZSA9IHRoaXMuZ2V0UmVmZXJlbmNlZFByb2NlZHVyZU5hbWUoKSxcbiAgICAgICAgICBhbGlhc2VkID0gKGxhYmVsbGVkUHJvY2VkdXJlTmFtZSAhPT0gcmVmZXJlbmNlZFByb2NlZHVyZU5hbWUpO1xuXG4gICAgcmV0dXJuIGFsaWFzZWQ7XG4gIH1cblxuICBjb21wYXJlTGFibGxlZFByb2NlZHVyZU5hbWUobGFiZWxsZWRQcm9jZWR1cmVOYW1lKSB7XG4gICAgY29uc3QgbGFiZWxOYW1lID0gdGhpcy5sYWJlbC5nZXROYW1lKCksXG4gICAgICAgICAgbGFiZWxsZWRQcm9jZWR1cmVOYW1lQ29tcGFyZXMgPSAobGFiZWxOYW1lID09PSBsYWJlbGxlZFByb2NlZHVyZU5hbWUpO1xuXG4gICAgcmV0dXJuIGxhYmVsbGVkUHJvY2VkdXJlTmFtZUNvbXBhcmVzO1xuICB9XG5cbiAgdmVyaWZ5KHJlbGVhc2VOYW1lLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaW1wb3J0QmluZGluZ1N0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtpbXBvcnRCaW5kaW5nU3RyaW5nfScgaW1wb3J0IGJpbmRpbmcuLi5gKTtcblxuICAgIGxldCBwcm9jZWR1cmVOYW1lLFxuICAgICAgICBwcm9jZWR1cmVQcmVzZW50O1xuXG4gICAgY29uc3QgcmVmZXJlbmNlZFByb2NlZHVyZU5hbWUgPSB0aGlzLmdldFJlZmVyZW5jZWRQcm9jZWR1cmVOYW1lKCk7XG5cbiAgICBwcm9jZWR1cmVOYW1lID0gcmVmZXJlbmNlZFByb2NlZHVyZU5hbWU7ICAvLy9cblxuICAgIHByb2NlZHVyZVByZXNlbnQgPSBjb250ZXh0LmlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTtcblxuICAgIGlmICghcHJvY2VkdXJlUHJlc2VudCkge1xuICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3Byb2NlZHVyZU5hbWV9JyBwcm9jZWR1cmUgaXMgbm90IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbGFiZWxsZWRQcm9jZWR1cmVOYW1lID0gdGhpcy5nZXRMYWJlbGxlZFByb2NlZHVyZU5hbWUoKTtcblxuICAgIHByb2NlZHVyZU5hbWUgPSBsYWJlbGxlZFByb2NlZHVyZU5hbWU7ICAvLy9cblxuICAgIGNvbnN0IGFsaWFzZWQgPSB0aGlzLmlzQWxsb3dlZCgpO1xuXG4gICAgaWYgKGFsaWFzZWQpIHtcbiAgICAgIHByb2NlZHVyZVByZXNlbnQgPSBjb250ZXh0LmlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTtcblxuICAgICAgaWYgKHByb2NlZHVyZVByZXNlbnQpIHtcbiAgICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3Byb2NlZHVyZU5hbWV9JyBwcm9jZWR1cmUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaW1wb3J0QmluZGluZ1ByZXNlbnQgPSBjb250ZXh0LmlzSW1wb3J0QmluZGluZ1ByZXNlbnRCeUxhYmVsbGVkUHJvY2VkdXJlTmFtZShsYWJlbGxlZFByb2NlZHVyZU5hbWUpO1xuXG4gICAgaWYgKGltcG9ydEJpbmRpbmdQcmVzZW50KSB7XG4gICAgICBjb25zdCBsYWJlbFN0cmluZyA9IHRoaXMubGFiZWwuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFRoZSAnJHtpbXBvcnRCaW5kaW5nU3RyaW5nfScgaW1wb3J0IGJpbmRpbmcncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsIGlzIGFscmVhZHkgcHJlc2VudC4uLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHByb2NlZHVyZU5hbWUgPSByZWZlcmVuY2VkUHJvY2VkdXJlTmFtZTsgIC8vL1xuXG4gICAgY29uc3QgcHJvY2VkdXJlID0gY29udGV4dC5maW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lQ29tcGFyZXMgPSBwcm9jZWR1cmUuY29tcGFyZVJlbGVhc2VOYW1lKHJlbGVhc2VOYW1lKTtcblxuICAgIGlmICghcmVsZWFzZU5hbWVDb21wYXJlcykge1xuICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3Byb2NlZHVyZU5hbWV9JyBwcm9jZWR1cmUgaXMgbm90IGluIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHBhY2thZ2UuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZXhwb3J0ZWQgPSBwcm9jZWR1cmUuaXNFeHBvcnRlZCgpO1xuXG4gICAgaWYgKCFleHBvcnRlZCkge1xuICAgICAgY29udGV4dC50cmFjZShgVGhlICcke3Byb2NlZHVyZU5hbWV9JyBwcm9jZWR1cmUgaXMgbm90IGV4cG9ydGVkLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IGltcG9ydEJpbmRpbmcgPSB0aGlzO1xuXG4gICAgY29udGV4dC5hZGRJbXBvcnRCaW5kaW5nKGltcG9ydEJpbmRpbmcpO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2ltcG9ydEJpbmRpbmdTdHJpbmd9JyBpbXBvcnQgYmluZGluZy5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBsYWJlbEpTT04gPSBsYWJlbFRvTGFiZWxKU09OKHRoaXMubGFiZWwpLFxuICAgICAgICAgIHJlZmVyZW5jZUpKU09OID0gcmVmZXJlbmNlVG9SZWZlcmVuY2VKU09OKHRoaXMucmVmZXJlbmNlKSxcbiAgICAgICAgICBsYWJlbCA9IGxhYmVsSlNPTiwgIC8vL1xuICAgICAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZUpKU09OOyAgLy8vXG5cbiAgICBqc29uID0ge1xuICAgICAgc3RyaW5nLFxuICAgICAgbGFiZWwsXG4gICAgICByZWZlcmVuY2VcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiSW1wb3J0QmluZGluZ1wiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGltcG9ydEJpbmRpbmc7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgIGltcG9ydEJpbmRpbmdOb2RlID0gaW5zdGFudGlhdGVJbXBvcnRCaW5kaW5nKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBsYWJlbCA9IGxhYmVsRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2VGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIG5vZGUgPSBpbXBvcnRCaW5kaW5nTm9kZTsgLy8vXG5cbiAgICAgIGltcG9ydEJpbmRpbmcgPSBuZXcgSW1wb3J0QmluZGluZyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVsLCByZWZlcmVuY2UpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGltcG9ydEJpbmRpbmc7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIkltcG9ydEJpbmRpbmciLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibGFiZWwiLCJyZWZlcmVuY2UiLCJnZXRMYWJlbCIsImdldFJlZmVyZW5jZSIsImdldExhYmVsbGVkUHJvY2VkdXJlTmFtZSIsImxhYmVsTmFtZSIsImdldE5hbWUiLCJsYWJlbGxlZFByb2NlZHVyZU5hbWUiLCJnZXRSZWZlcmVuY2VkUHJvY2VkdXJlTmFtZSIsInJlZmVyZW5jZU5hbWUiLCJyZWZlcmVuY2VkUHJvY2VkdXJlTmFtZSIsImlzQWxsb3dlZCIsImFsaWFzZWQiLCJjb21wYXJlTGFibGxlZFByb2NlZHVyZU5hbWUiLCJsYWJlbGxlZFByb2NlZHVyZU5hbWVDb21wYXJlcyIsInZlcmlmeSIsInJlbGVhc2VOYW1lIiwiZm9yd2FyZCIsImJhY2siLCJpbXBvcnRCaW5kaW5nU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlUHJlc2VudCIsImlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZSIsImltcG9ydEJpbmRpbmdQcmVzZW50IiwiaXNJbXBvcnRCaW5kaW5nUHJlc2VudEJ5TGFiZWxsZWRQcm9jZWR1cmVOYW1lIiwibGFiZWxTdHJpbmciLCJwcm9jZWR1cmUiLCJmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lIiwicmVsZWFzZU5hbWVDb21wYXJlcyIsImNvbXBhcmVSZWxlYXNlTmFtZSIsImV4cG9ydGVkIiwiaXNFeHBvcnRlZCIsImltcG9ydEJpbmRpbmciLCJhZGRJbXBvcnRCaW5kaW5nIiwiZGVidWciLCJ0b0pTT04iLCJqc29uIiwibGFiZWxKU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsInJlZmVyZW5jZUpKU09OIiwicmVmZXJlbmNlVG9SZWZlcmVuY2VKU09OIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbXBvcnRCaW5kaW5nTm9kZSIsImluc3RhbnRpYXRlSW1wb3J0QmluZGluZyIsImxhYmVsRnJvbUpTT04iLCJyZWZlcmVuY2VGcm9tSlNPTiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBU0E7OztlQUFBOzs7Z0NBUHdCOzBCQUVEOzZCQUNrQjtzQkFDb0Q7eUJBQ25FO01BRTFCLFdBQWVBLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsc0JBQXNCQyx1QkFBTztJQUN2RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLEtBQUssRUFBRUMsU0FBUyxDQUFFO1FBQy9ELEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO0lBQ25CO0lBRUFDLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQ0YsS0FBSztJQUNuQjtJQUVBRyxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNGLFNBQVM7SUFDdkI7SUFFQUcsMkJBQTJCO1FBQ3pCLE1BQU1DLFlBQVksSUFBSSxDQUFDTCxLQUFLLENBQUNNLE9BQU8sSUFDOUJDLHdCQUF3QkYsV0FBWSxHQUFHO1FBRTdDLE9BQU9FO0lBQ1Q7SUFFQUMsNkJBQTZCO1FBQzNCLE1BQU1DLGdCQUFnQixJQUFJLENBQUNSLFNBQVMsQ0FBQ0ssT0FBTyxJQUN0Q0ksMEJBQTBCRCxlQUFnQixHQUFHO1FBRW5ELE9BQU9DO0lBQ1Q7SUFFQUMsWUFBWTtRQUNWLE1BQU1KLHdCQUF3QixJQUFJLENBQUNILHdCQUF3QixJQUNyRE0sMEJBQTBCLElB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
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _default;
9
+ }
10
+ });
11
+ const _occamlanguages = require("occam-languages");
12
+ const _elements = require("../elements");
13
+ const _default = (0, _elements.define)(class ImportBindings extends _occamlanguages.Element {
14
+ static name = "ImportBindings";
15
+ });
16
+
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2ltcG9ydEJpbmRpbmdzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEltcG9ydEJpbmRpbmdzIGV4dGVuZHMgRWxlbWVudCB7XG4gIHN0YXRpYyBuYW1lID0gXCJJbXBvcnRCaW5kaW5nc1wiO1xufSk7XG4iXSwibmFtZXMiOlsiZGVmaW5lIiwiSW1wb3J0QmluZGluZ3MiLCJFbGVtZW50IiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBTUE7OztlQUFBOzs7Z0NBSndCOzBCQUVEO01BRXZCLFdBQWVBLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsdUJBQXVCQyx1QkFBTztJQUN4RCxPQUFPQyxPQUFPLGlCQUFpQjtBQUNqQyJ9
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _default;
9
+ }
10
+ });
11
+ const _occamlanguages = require("occam-languages");
12
+ const _elements = require("../elements");
13
+ const _context = require("../utilities/context");
14
+ const _instantiate = require("../process/instantiate");
15
+ const _json = require("../utilities/json");
16
+ const { every } = _occamlanguages.continuationUtilities, { unbreakable } = _occamlanguages.breakPointUtilities;
17
+ const _default = (0, _elements.define)(class ImportStatement extends _occamlanguages.Element {
18
+ constructor(context, string, node, breakPoint, releaseName, importBindings){
19
+ super(context, string, node, breakPoint);
20
+ this.releaseName = releaseName;
21
+ this.importBindings = importBindings;
22
+ }
23
+ getReleaseName() {
24
+ return this.releaseName;
25
+ }
26
+ getImportBindings() {
27
+ return this.importBindings;
28
+ }
29
+ toJSON() {
30
+ let json;
31
+ const string = this.getString(), releaseNameJSON = (0, _json.releaseNameToReleaseNameJSON)(this.releaseName), importBindingsJSON = (0, _json.importBindingsToImportBindingsJSON)(this.importBindings), releaseName = releaseNameJSON, importBindings = importBindingsJSON; ///
32
+ json = {
33
+ string,
34
+ releaseName,
35
+ importBindings
36
+ };
37
+ return json;
38
+ }
39
+ verify = unbreakable(function(context, forward, back) {
40
+ const importStatementString = this.getString(); ///
41
+ context.trace(`Verifying the '${importStatementString}' import statement...`);
42
+ return every(this.importBindings, (importBinding, context, forward, back)=>{
43
+ return importBinding.verify(this.releaseName, context, forward, back);
44
+ }, context, (context, back)=>{
45
+ context.debug(`...verified the '${importStatementString}' import statement.`);
46
+ return forward(context, back);
47
+ }, (exception)=>{
48
+ if (exception) {
49
+ return back(exception);
50
+ }
51
+ context.trace(`Unable to verify the '${importStatementString}' import statement.`);
52
+ return back();
53
+ });
54
+ });
55
+ static name = "ImportStatement";
56
+ static fromJSON(json, context) {
57
+ let importStatement;
58
+ (0, _context.instantiate)((context)=>{
59
+ const { string } = json, importStatementNode = (0, _instantiate.instantiateImportStatement)(string, context), node = importStatementNode, breakPoint = null, releaseName = (0, _json.releaseNameFromJSON)(json, context), importBindings = (0, _json.importBindingsFromJSON)(json, context);
60
+ context = null;
61
+ importStatement = new ImportStatement(context, string, node, breakPoint, releaseName, importBindings);
62
+ }, context);
63
+ return importStatement;
64
+ }
65
+ });
66
+
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2ltcG9ydFN0YXRlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUltcG9ydFN0YXRlbWVudCB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyByZWxlYXNlTmFtZUZyb21KU09OLCBpbXBvcnRCaW5kaW5nc0Zyb21KU09OLCByZWxlYXNlTmFtZVRvUmVsZWFzZU5hbWVKU09OLCBpbXBvcnRCaW5kaW5nc1RvSW1wb3J0QmluZGluZ3NKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmNvbnN0IHsgZXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBJbXBvcnRTdGF0ZW1lbnQgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCByZWxlYXNlTmFtZSwgaW1wb3J0QmluZGluZ3MpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5yZWxlYXNlTmFtZSA9IHJlbGVhc2VOYW1lO1xuICAgIHRoaXMuaW1wb3J0QmluZGluZ3MgPSBpbXBvcnRCaW5kaW5ncztcbiAgfVxuXG4gIGdldFJlbGVhc2VOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnJlbGVhc2VOYW1lO1xuICB9XG5cbiAgZ2V0SW1wb3J0QmluZGluZ3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1wb3J0QmluZGluZ3M7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lSlNPTiA9IHJlbGVhc2VOYW1lVG9SZWxlYXNlTmFtZUpTT04odGhpcy5yZWxlYXNlTmFtZSksXG4gICAgICAgICAgaW1wb3J0QmluZGluZ3NKU09OID0gaW1wb3J0QmluZGluZ3NUb0ltcG9ydEJpbmRpbmdzSlNPTih0aGlzLmltcG9ydEJpbmRpbmdzKSxcbiAgICAgICAgICByZWxlYXNlTmFtZSA9IHJlbGVhc2VOYW1lSlNPTiwgIC8vL1xuICAgICAgICAgIGltcG9ydEJpbmRpbmdzID0gaW1wb3J0QmluZGluZ3NKU09OOyAgLy8vXG5cbiAgICBqc29uID0ge1xuICAgICAgc3RyaW5nLFxuICAgICAgcmVsZWFzZU5hbWUsXG4gICAgICBpbXBvcnRCaW5kaW5nc1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaW1wb3J0U3RhdGVtZW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2ltcG9ydFN0YXRlbWVudFN0cmluZ30nIGltcG9ydCBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHJldHVybiBldmVyeSh0aGlzLmltcG9ydEJpbmRpbmdzLCAoaW1wb3J0QmluZGluZywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGltcG9ydEJpbmRpbmcudmVyaWZ5KHRoaXMucmVsZWFzZU5hbWUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7aW1wb3J0U3RhdGVtZW50U3RyaW5nfScgaW1wb3J0IHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtpbXBvcnRTdGF0ZW1lbnRTdHJpbmd9JyBpbXBvcnQgc3RhdGVtZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICBzdGF0aWMgbmFtZSA9IFwiSW1wb3J0U3RhdGVtZW50XCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgaW1wb3J0U3RhdGVtZW50O1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgaW1wb3J0U3RhdGVtZW50Tm9kZSA9IGluc3RhbnRpYXRlSW1wb3J0U3RhdGVtZW50KHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gaW1wb3J0U3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICByZWxlYXNlTmFtZSA9IHJlbGVhc2VOYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBpbXBvcnRCaW5kaW5ncyA9IGltcG9ydEJpbmRpbmdzRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICBpbXBvcnRTdGF0ZW1lbnQgPSBuZXcgSW1wb3J0U3RhdGVtZW50KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVsZWFzZU5hbWUsIGltcG9ydEJpbmRpbmdzKTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBpbXBvcnRTdGF0ZW1lbnQ7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImV2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiSW1wb3J0U3RhdGVtZW50IiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInJlbGVhc2VOYW1lIiwiaW1wb3J0QmluZGluZ3MiLCJnZXRSZWxlYXNlTmFtZSIsImdldEltcG9ydEJpbmRpbmdzIiwidG9KU09OIiwianNvbiIsImdldFN0cmluZyIsInJlbGVhc2VOYW1lSlNPTiIsInJlbGVhc2VOYW1lVG9SZWxlYXNlTmFtZUpTT04iLCJpbXBvcnRCaW5kaW5nc0pTT04iLCJpbXBvcnRCaW5kaW5nc1RvSW1wb3J0QmluZGluZ3NKU09OIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJpbXBvcnRTdGF0ZW1lbnRTdHJpbmciLCJ0cmFjZSIsImltcG9ydEJpbmRpbmciLCJkZWJ1ZyIsImV4Y2VwdGlvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImltcG9ydFN0YXRlbWVudCIsImluc3RhbnRpYXRlIiwiaW1wb3J0U3RhdGVtZW50Tm9kZSIsImluc3RhbnRpYXRlSW1wb3J0U3RhdGVtZW50IiwicmVsZWFzZU5hbWVGcm9tSlNPTiIsImltcG9ydEJpbmRpbmdzRnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBQTs7O2dDQVZvRTswQkFFN0M7eUJBQ0s7NkJBQ2U7c0JBQ21GO0FBRTlILE1BQU0sRUFBRUEsS0FBSyxFQUFFLEdBQUdDLHFDQUFxQixFQUNqQyxFQUFFQyxXQUFXLEVBQUUsR0FBR0Ms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
@@ -26,21 +26,23 @@ const _default = (0, _elements.define)(class Label extends _occamlanguages.Eleme
26
26
  return procedureNameCompares;
27
27
  }
28
28
  toJSON() {
29
+ let json;
29
30
  const string = this.getString();
30
- const json = {
31
+ json = {
31
32
  string
32
33
  };
33
34
  return json;
34
35
  }
35
36
  static name = "Label";
36
37
  static fromJSON(json, context) {
37
- return (0, _context.instantiate)((context)=>{
38
+ let label;
39
+ (0, _context.instantiate)((context)=>{
38
40
  const { string } = json, labelNode = (0, _instantiate.instantiateLabel)(string, context), node = labelNode, breakPoint = null, name = (0, _element.nameFromLabelNode)(labelNode, context);
39
41
  context = null;
40
- const label = new Label(context, string, node, breakPoint, name);
41
- return label;
42
+ label = new Label(context, string, node, breakPoint, name);
42
43
  }, context);
44
+ return label;
43
45
  }
44
46
  });
45
47
 
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2xhYmVsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUxhYmVsIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IG5hbWVGcm9tTGFiZWxOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBMYWJlbCBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGNvbXBhcmVQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBwcm9jZWR1cmVOYW1lQ29tcGFyZXMgPSAodGhpcy5uYW1lID09PSBwcm9jZWR1cmVOYW1lKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVOYW1lQ29tcGFyZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICBzdHJpbmdcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiTGFiZWxcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIHJldHVybiBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBsYWJlbE5vZGUgPSBpbnN0YW50aWF0ZUxhYmVsKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gbGFiZWxOb2RlLCAgLy8vXG4gICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgIG5hbWUgPSBuYW1lRnJvbUxhYmVsTm9kZShsYWJlbE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgY29uc3QgbGFiZWwgPSBuZXcgTGFiZWwoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuYW1lKTtcblxuICAgICAgcmV0dXJuIGxhYmVsO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJMYWJlbCIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJuYW1lIiwiZ2V0TmFtZSIsImNvbXBhcmVQcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZU5hbWVDb21wYXJlcyIsInRvSlNPTiIsImdldFN0cmluZyIsImpzb24iLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwibGFiZWxOb2RlIiwiaW5zdGFudGlhdGVMYWJlbCIsIm5hbWVGcm9tTGFiZWxOb2RlIiwibGFiZWwiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBQTs7O2dDQVB3QjswQkFFRDt5QkFDSzs2QkFDSzt5QkFDQztNQUVsQyxXQUFlQSxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGNBQWNDLHVCQUFPO0lBQy9DLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxDQUFFO1FBQ25ELEtBQUssQ0FBQ0osU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO0lBQ2Q7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDRCxJQUFJO0lBQ2xCO0lBRUFFLHFCQUFxQkMsYUFBYSxFQUFFO1FBQ2xDLE1BQU1DLHdCQUF5QixJQUFJLENBQUNKLElBQUksS0FBS0c7UUFFN0MsT0FBT0M7SUFDVDtJQUVBQyxTQUFTO1FBQ1AsTUFBTVIsU0FBUyxJQUFJLENBQUNTLFNBQVM7UUFFN0IsTUFBTUMsT0FBTztZQUNYVjtRQUNGO1FBRUEsT0FBT1U7SUFDVDtJQUVBLE9BQU9QLE9BQU8sUUFBUTtJQUV0QixPQUFPUSxTQUFTRCxJQUFJLEVBQUVYLE9BQU8sRUFBRTtRQUM3QixPQUFPYSxJQUFBQSxvQkFBVyxFQUFDLENBQUNiO1lBQ2xCLE1BQU0sRUFBRUMsTUFBTSxFQUFFLEdBQUdVLE1BQ2JHLFlBQVlDLElBQUFBLDZCQUFnQixFQUFDZCxRQUFRRCxVQUNyQ0UsT0FBT1ksV0FDUFgsYUFBYSxNQUNiQyxPQUFPWSxJQUFBQSwwQkFBaUIsRUFBQ0YsV0FBV2Q7WUFFMUNBLFVBQVU7WUFFVixNQUFNaUIsUUFBUSxJQUFJbkIsTUFBTUUsU0FBU0MsUUFBUUMsTUFBTUMsWUFBWUM7WUFFM0QsT0FBT2E7UUFDVCxHQUFHakI7SUFDTDtBQUNGIn0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2xhYmVsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUxhYmVsIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IG5hbWVGcm9tTGFiZWxOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBMYWJlbCBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGNvbXBhcmVQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBwcm9jZWR1cmVOYW1lQ29tcGFyZXMgPSAodGhpcy5uYW1lID09PSBwcm9jZWR1cmVOYW1lKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVOYW1lQ29tcGFyZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAganNvbiA9IHtcbiAgICAgIHN0cmluZ1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJMYWJlbFwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGxhYmVsO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgbGFiZWxOb2RlID0gaW5zdGFudGlhdGVMYWJlbChzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IGxhYmVsTm9kZSwgIC8vL1xuICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICBuYW1lID0gbmFtZUZyb21MYWJlbE5vZGUobGFiZWxOb2RlLCBjb250ZXh0KTtcblxuICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgIGxhYmVsID0gbmV3IExhYmVsKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIkxhYmVsIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsIm5hbWUiLCJnZXROYW1lIiwiY29tcGFyZVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlTmFtZUNvbXBhcmVzIiwidG9KU09OIiwianNvbiIsImdldFN0cmluZyIsImZyb21KU09OIiwibGFiZWwiLCJpbnN0YW50aWF0ZSIsImxhYmVsTm9kZSIsImluc3RhbnRpYXRlTGFiZWwiLCJuYW1lRnJvbUxhYmVsTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBU0E7OztlQUFBOzs7Z0NBUHdCOzBCQUVEO3lCQUNLOzZCQUNLO3lCQUNDO01BRWxDLFdBQWVBLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsY0FBY0MsdUJBQU87SUFDL0MsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLENBQUU7UUFDbkQsS0FBSyxDQUFDSixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7SUFDZDtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNELElBQUk7SUFDbEI7SUFFQUUscUJBQXFCQyxhQUFhLEVBQUU7UUFDbEMsTUFBTUMsd0JBQXlCLElBQUksQ0FBQ0osSUFBSSxLQUFLRztRQUU3QyxPQUFPQztJQUNUO0lBRUFDLFNBQVM7UUFDUCxJQUFJQztRQUVKLE1BQU1ULFNBQVMsSUFBSSxDQUFDVSxTQUFTO1FBRTdCRCxPQUFPO1lBQ0xUO1FBQ0Y7UUFFQSxPQUFPUztJQUNUO0lBRUEsT0FBT04sT0FBTyxRQUFRO0lBRXRCLE9BQU9RLFNBQVNGLElBQUksRUFBRVYsT0FBTyxFQUFFO1FBQzdCLElBQUlhO1FBRUpDLElBQUFBLG9CQUFXLEVBQUMsQ0FBQ2Q7WUFDWCxNQUFNLEVBQUVDLE1BQU0sRUFBRSxHQUFHUyxNQUNiSyxZQUFZQyxJQUFBQSw2QkFBZ0IsRUFBQ2YsUUFBUUQsVUFDckNFLE9BQU9hLFdBQ1BaLGFBQWEsTUFDYkMsT0FBT2EsSUFBQUEsMEJBQWlCLEVBQUNGLFdBQVdmO1lBRTFDQSxVQUFVO1lBRVZhLFFBQVEsSUFBSWYsTUFBTUUsU0FBU0MsUUFBUUMsTUFBTUMsWUFBWUM7UUFDdkQsR0FBR0o7UUFFSCxPQUFPYTtJQUNUO0FBQ0YifQ==
@@ -59,21 +59,23 @@ const _default = (0, _elements.define)(class Parameters extends _occamlanguages.
59
59
  }, back);
60
60
  }
61
61
  toJSON() {
62
+ let json;
62
63
  const string = this.getString();
63
- const json = {
64
+ json = {
64
65
  string
65
66
  };
66
67
  return json;
67
68
  }
68
69
  static name = "Parameters";
69
70
  static fromJSON(json, context) {
70
- return (0, _context.instantiate)((context)=>{
71
+ let parameters;
72
+ (0, _context.instantiate)((context)=>{
71
73
  const { string } = json, parametersNode = (0, _instantiate.instantiateParameters)(string, context), node = parametersNode, breakPoint = null, parametersArray = (0, _element.parametersArrayFromParametersNode)(parametersNode, context), array = parametersArray; ///
72
74
  context = null;
73
- const parameters = new Parameters(context, string, node, breakPoint, array);
74
- return parameters;
75
+ parameters = new Parameters(context, string, node, breakPoint, array);
75
76
  }, context);
77
+ return parameters;
76
78
  }
77
79
  });
78
80
 
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3BhcmFtZXRlcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tIFwiLi4vZXhjZXB0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlUGFyYW1ldGVycyB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBwYXJhbWV0ZXJzQXJyYXlGcm9tUGFyYW1ldGVyc05vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBmb3JFYWNoIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXNcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFBhcmFtZXRlcnMgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBhcnJheSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG4gIH1cblxuICBnZXRBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheTtcbiAgfVxuXG4gIGdldExlbmd0aCgpIHtcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmFycmF5Lmxlbmd0aDtcblxuICAgIHJldHVybiBsZW5ndGg7XG4gIH1cblxuICBnZXRQYXJhbWV0ZXIoaW5kZXgpIHtcbiAgICBjb25zdCBwYXJhbWV0ZXIgPSB0aGlzLmFycmF5W2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgfVxuXG4gIGZvckVhY2hQYXJhbWV0ZXIoY2FsbGJhY2ssIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gZm9yRWFjaCh0aGlzLmFycmF5LCBjYWxsYmFjaywgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICBjb21wYXJlVmFsdWVzKHZhbHVlcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHZhbHVlc1N0cmluZyA9IHZhbHVlcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBDb21wYXJpbmcgdGhlICcke3ZhbHVlc1N0cmluZ30nIHZhbHVlcyBhZ2FpbnN0IHRoZSAnJHtwYXJhbWV0ZXJzU3RyaW5nfScgcGFyYW1ldGVycy4uLmApO1xuXG4gICAgY29uc3QgdmFsdWVzTGVuZ3RoID0gdmFsdWVzLmdldExlbmd0aCgpLFxuICAgICAgICAgIHBhcmFtZXRlcnNMZW5ndGggPSB0aGlzLmdldExlbmd0aCgpO1xuXG4gICAgaWYgKHZhbHVlc0xlbmd0aCAhPT0gcGFyYW1ldGVyc0xlbmd0aCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBUaGUgJyR7dmFsdWVzU3RyaW5nfScgZXhwcmVzc2lvbnMgYW5kICcke3BhcmFtZXRlcnNTdHJpbmd9JyBwYXJhbWV0ZXJzIGFyZSBub3Qgb2YgdGhlIHNhbWUgbGVuZ3RoLmAsXG4gICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZm9yRWFjaFBhcmFtZXRlcigocGFyYW1ldGVyLCBmb3J3YXJkLCBiYWNrLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKHBhcmFtZXRlciA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZXMuZ2V0VmFsdWUoaW5kZXgpO1xuXG4gICAgICByZXR1cm4gcGFyYW1ldGVyLmNvbXBhcmVWYWx1ZSh2YWx1ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgKGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmNvbXBhcmVkIHRoZSAnJHt2YWx1ZXNTdHJpbmd9JyB2YWx1ZXMgYWdhaW5zdCB0aGUgJyR7cGFyYW1ldGVyc1N0cmluZ30nIHBhcmFtZXRlcnMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb25zdCBqc29uID0ge1xuICAgICAgc3RyaW5nXG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlBhcmFtZXRlcnNcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIHJldHVybiBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBwYXJhbWV0ZXJzTm9kZSA9IGluc3RhbnRpYXRlUGFyYW1ldGVycyhzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IHBhcmFtZXRlcnNOb2RlLCAgLy8vXG4gICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgIHBhcmFtZXRlcnNBcnJheSA9IHBhcmFtZXRlcnNBcnJheUZyb21QYXJhbWV0ZXJzTm9kZShwYXJhbWV0ZXJzTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICBhcnJheSA9IHBhcmFtZXRlcnNBcnJheTsgLy8vXG5cbiAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gbmV3IFBhcmFtZXRlcnMoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBhcnJheSk7XG5cbiAgICAgIHJldHVybiBwYXJhbWV0ZXJzO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJmb3JFYWNoIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiUGFyYW1ldGVycyIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJhcnJheSIsImdldEFycmF5IiwiZ2V0TGVuZ3RoIiwibGVuZ3RoIiwiZ2V0UGFyYW1ldGVyIiwiaW5kZXgiLCJwYXJhbWV0ZXIiLCJmb3JFYWNoUGFyYW1ldGVyIiwiY2FsbGJhY2siLCJmb3J3YXJkIiwiYmFjayIsImNvbXBhcmVWYWx1ZXMiLCJ2YWx1ZXMiLCJ2YWx1ZXNTdHJpbmciLCJnZXRTdHJpbmciLCJwYXJhbWV0ZXJzU3RyaW5nIiwidHJhY2UiLCJ2YWx1ZXNMZW5ndGgiLCJwYXJhbWV0ZXJzTGVuZ3RoIiwibWVzc2FnZSIsImV4Y2VwdGlvbiIsIkV4Y2VwdGlvbiIsImZyb21NZXNzYWdlIiwidmFsdWUiLCJnZXRWYWx1ZSIsImNvbXBhcmVWYWx1ZSIsImRlYnVnIiwidG9KU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwicGFyYW1ldGVyc05vZGUiLCJpbnN0YW50aWF0ZVBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzQXJyYXkiLCJwYXJhbWV0ZXJzQXJyYXlGcm9tUGFyYW1ldGVyc05vZGUiLCJwYXJhbWV0ZXJzIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFhQTs7O2VBQUE7OztnQ0FYK0M7a0VBRXpCOzBCQUVDO3lCQUNLOzZCQUNVO3lCQUNZOzs7Ozs7QUFFbEQsTUFBTSxFQUFFQSxPQUFPLEVBQUUsR0FBR0MscUNBQXFCO01BRXpDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsbUJBQW1CQyx1QkFBTztJ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
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3BhcmFtZXRlcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tIFwiLi4vZXhjZXB0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlUGFyYW1ldGVycyB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBwYXJhbWV0ZXJzQXJyYXlGcm9tUGFyYW1ldGVyc05vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBmb3JFYWNoIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXNcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFBhcmFtZXRlcnMgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBhcnJheSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG4gIH1cblxuICBnZXRBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheTtcbiAgfVxuXG4gIGdldExlbmd0aCgpIHtcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmFycmF5Lmxlbmd0aDtcblxuICAgIHJldHVybiBsZW5ndGg7XG4gIH1cblxuICBnZXRQYXJhbWV0ZXIoaW5kZXgpIHtcbiAgICBjb25zdCBwYXJhbWV0ZXIgPSB0aGlzLmFycmF5W2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgfVxuXG4gIGZvckVhY2hQYXJhbWV0ZXIoY2FsbGJhY2ssIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gZm9yRWFjaCh0aGlzLmFycmF5LCBjYWxsYmFjaywgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICBjb21wYXJlVmFsdWVzKHZhbHVlcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHZhbHVlc1N0cmluZyA9IHZhbHVlcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBDb21wYXJpbmcgdGhlICcke3ZhbHVlc1N0cmluZ30nIHZhbHVlcyBhZ2FpbnN0IHRoZSAnJHtwYXJhbWV0ZXJzU3RyaW5nfScgcGFyYW1ldGVycy4uLmApO1xuXG4gICAgY29uc3QgdmFsdWVzTGVuZ3RoID0gdmFsdWVzLmdldExlbmd0aCgpLFxuICAgICAgICAgIHBhcmFtZXRlcnNMZW5ndGggPSB0aGlzLmdldExlbmd0aCgpO1xuXG4gICAgaWYgKHZhbHVlc0xlbmd0aCAhPT0gcGFyYW1ldGVyc0xlbmd0aCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBUaGUgJyR7dmFsdWVzU3RyaW5nfScgZXhwcmVzc2lvbnMgYW5kICcke3BhcmFtZXRlcnNTdHJpbmd9JyBwYXJhbWV0ZXJzIGFyZSBub3Qgb2YgdGhlIHNhbWUgbGVuZ3RoLmAsXG4gICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZm9yRWFjaFBhcmFtZXRlcigocGFyYW1ldGVyLCBmb3J3YXJkLCBiYWNrLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKHBhcmFtZXRlciA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZXMuZ2V0VmFsdWUoaW5kZXgpO1xuXG4gICAgICByZXR1cm4gcGFyYW1ldGVyLmNvbXBhcmVWYWx1ZSh2YWx1ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgKGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmNvbXBhcmVkIHRoZSAnJHt2YWx1ZXNTdHJpbmd9JyB2YWx1ZXMgYWdhaW5zdCB0aGUgJyR7cGFyYW1ldGVyc1N0cmluZ30nIHBhcmFtZXRlcnMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGpzb24gPSB7XG4gICAgICBzdHJpbmdcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiUGFyYW1ldGVyc1wiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHBhcmFtZXRlcnM7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBwYXJhbWV0ZXJzTm9kZSA9IGluc3RhbnRpYXRlUGFyYW1ldGVycyhzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IHBhcmFtZXRlcnNOb2RlLCAgLy8vXG4gICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgIHBhcmFtZXRlcnNBcnJheSA9IHBhcmFtZXRlcnNBcnJheUZyb21QYXJhbWV0ZXJzTm9kZShwYXJhbWV0ZXJzTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICBhcnJheSA9IHBhcmFtZXRlcnNBcnJheTsgLy8vXG5cbiAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICBwYXJhbWV0ZXJzID0gbmV3IFBhcmFtZXRlcnMoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBhcnJheSk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVycztcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiZm9yRWFjaCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlBhcmFtZXRlcnMiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwiYXJyYXkiLCJnZXRBcnJheSIsImdldExlbmd0aCIsImxlbmd0aCIsImdldFBhcmFtZXRlciIsImluZGV4IiwicGFyYW1ldGVyIiwiZm9yRWFjaFBhcmFtZXRlciIsImNhbGxiYWNrIiwiZm9yd2FyZCIsImJhY2siLCJjb21wYXJlVmFsdWVzIiwidmFsdWVzIiwidmFsdWVzU3RyaW5nIiwiZ2V0U3RyaW5nIiwicGFyYW1ldGVyc1N0cmluZyIsInRyYWNlIiwidmFsdWVzTGVuZ3RoIiwicGFyYW1ldGVyc0xlbmd0aCIsIm1lc3NhZ2UiLCJleGNlcHRpb24iLCJFeGNlcHRpb24iLCJmcm9tTWVzc2FnZSIsInZhbHVlIiwiZ2V0VmFsdWUiLCJjb21wYXJlVmFsdWUiLCJkZWJ1ZyIsInRvSlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJwYXJhbWV0ZXJzIiwiaW5zdGFudGlhdGUiLCJwYXJhbWV0ZXJzTm9kZSIsImluc3RhbnRpYXRlUGFyYW1ldGVycyIsInBhcmFtZXRlcnNBcnJheSIsInBhcmFtZXRlcnNBcnJheUZyb21QYXJhbWV0ZXJzTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7Z0NBWCtDO2tFQUV6QjswQkFFQzt5QkFDSzs2QkFDVTt5QkFDWTs7Ozs7O0FBRWxELE1BQU0sRUFBRUEsT0FBTyxFQUFFLEdBQUdDLHFDQUFxQjtNQUV6QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1B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