@aerokit/sdk 14.76.0 → 14.82.0

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.
@@ -21,6 +21,7 @@ __export(configurations_exports, {
21
21
  });
22
22
  module.exports = __toCommonJS(configurations_exports);
23
23
  const Configuration = Java.type("org.eclipse.dirigible.commons.config.Configuration");
24
+ const ConfigurationsFacade = Java.type("org.eclipse.dirigible.components.api.core.ConfigurationsFacade");
24
25
  class Configurations {
25
26
  /**
26
27
  * Retrieves the configuration value associated with the given key.
@@ -55,6 +56,23 @@ class Configurations {
55
56
  static getKeys() {
56
57
  return Configuration.getKeys();
57
58
  }
59
+ /**
60
+ * Retrieves the configuration groups, in display order, with the number of keys and of set keys in each.
61
+ * @returns The groups.
62
+ */
63
+ static getGroups() {
64
+ return JSON.parse(ConfigurationsFacade.getGroups());
65
+ }
66
+ /**
67
+ * Retrieves the described configuration keys, grouped: default, effective value, its source and the value
68
+ * of each source. Sensitive values are masked.
69
+ * @param group A group id (e.g. "database") or several; all groups when omitted.
70
+ * @returns The groups that have keys.
71
+ */
72
+ static getDescriptors(group) {
73
+ const groups = group === void 0 ? null : Array.isArray(group) ? group.join(",") : group;
74
+ return JSON.parse(ConfigurationsFacade.getDescriptors(groups));
75
+ }
58
76
  /**
59
77
  * Loads configuration properties from a file at the specified path, overriding existing ones.
60
78
  * @param path The file path to load configurations from.
@@ -107,4 +125,4 @@ class Configurations {
107
125
  if (typeof module !== "undefined") {
108
126
  module.exports = Configurations;
109
127
  }
110
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvcmUvY29uZmlndXJhdGlvbnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQG1vZHVsZSBjb3JlL2NvbmZpZ3VyYXRpb25zXG4gKiBAcGFja2FnZSBAYWVyb2tpdC9zZGsvY29yZVxuICogQG5hbWUgQ29uZmlndXJhdGlvbnNcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgQ29uZmlndXJhdGlvbnMgQVBJIHByb3ZpZGVzIGEgY2VudHJhbGl6ZWQsIHR5cGUtc2FmZSBpbnRlcmZhY2UgZm9yIG1hbmFnaW5nIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBhbmQgZGV0ZWN0aW5nIHRoZSBydW50aW1lIG9wZXJhdGluZyBzeXN0ZW0uIEl0IHNlcnZlcyBhcyB0aGUgZm91bmRhdGlvbiBmb3IgZW52aXJvbm1lbnQtc3BlY2lmaWMgc2V0dGluZ3MgYW5kIHN5c3RlbS1hd2FyZSBiZWhhdmlvciBpbiBBZXJva2l0IGFwcGxpY2F0aW9ucy5cbiAqIFxuICogIyMjIEtleSBGZWF0dXJlc1xuICogXG4gKiAtICoqU3RhdGljIEludGVyZmFjZSoqOiBUaHJlYWQtc2FmZSwgc2luZ2xldG9uLWxpa2UgYWNjZXNzIHRvIGNvbmZpZ3VyYXRpb24gZGF0YVxuICogLSAqKlR5cGUgU2FmZXR5Kio6IEZ1bGwgVHlwZVNjcmlwdCBzdXBwb3J0IHdpdGggcHJvcGVyIHR5cGUgZGVmaW5pdGlvbnNcbiAqIC0gKipGaWxlIExvYWRpbmcqKjogU3VwcG9ydCBmb3IgbG9hZGluZyBjb25maWd1cmF0aW9ucyBmcm9tIGV4dGVybmFsIGZpbGVzXG4gKiAtICoqT1MgRGV0ZWN0aW9uKio6IENvbXByZWhlbnNpdmUgb3BlcmF0aW5nIHN5c3RlbSBpZGVudGlmaWNhdGlvblxuICogLSAqKk1lbW9yeSBFZmZpY2llbnQqKjogSW4tbWVtb3J5IHN0b3JhZ2Ugd2l0aCBvcHRpb25hbCBwZXJzaXN0ZW5jZVxuICogXG4gKiAjIyMgVXNlIENhc2VzXG4gKiAtIEFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudFxuICogLSBFbnZpcm9ubWVudCB2YXJpYWJsZSBtYW5hZ2VtZW50XG4gKiAtIEZlYXR1cmUgZmxhZyBjb25maWd1cmF0aW9uXG4gKiAtIERhdGFiYXNlIGNvbm5lY3Rpb24gc2V0dGluZ3NcbiAqIC0gQVBJIGVuZHBvaW50IGNvbmZpZ3VyYXRpb25cbiAqIC0gUGxhdGZvcm0tc3BlY2lmaWMgYmVoYXZpb3IgYWRhcHRhdGlvblxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9jb3JlXCI7XG4gKiBcbiAqIC8vIFNldCBhIGNvbmZpZ3VyYXRpb24gcHJvcGVydHlcbiAqIENvbmZpZ3VyYXRpb25zLnNldChcImFwaUVuZHBvaW50XCIsIFwiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb21cIik7XG4gKiAvLyBHZXQgYSBjb25maWd1cmF0aW9uIHByb3BlcnR5XG4gKiBjb25zdCBhcGlFbmRwb2ludCA9IENvbmZpZ3VyYXRpb25zLmdldChcImFwaUVuZHBvaW50XCIpO1xuICogY29uc29sZS5sb2coYXBpRW5kcG9pbnQpOyAvLyBPdXRwdXQ6IFwiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb21cIlxuICogXG4gKiAvLyBDaGVjayB0aGUgb3BlcmF0aW5nIHN5c3RlbVxuICogaWYgKENvbmZpZ3VyYXRpb25zLmlzT1NXaW5kb3dzKCkpIHtcbiAqICAgY29uc29sZS5sb2coXCJSdW5uaW5nIG9uIFdpbmRvd3NcIik7XG4gKiB9IGVsc2UgaWYgKENvbmZpZ3VyYXRpb25zLmlzT1NNYWMoKSkge1xuICogICBjb25zb2xlLmxvZyhcIlJ1bm5pbmcgb24gTWFjXCIpO1xuICogfSBlbHNlIGlmIChDb25maWd1cmF0aW9ucy5pc09TVU5JWCgpKSB7XG4gKiAgIGNvbnNvbGUubG9nKFwiUnVubmluZyBvbiBVTklYXCIpO1xuICogfVxuICogYGBgXG4qL1xuXG5jb25zdCBDb25maWd1cmF0aW9uID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbW1vbnMuY29uZmlnLkNvbmZpZ3VyYXRpb25cIik7XG5cbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9ucyB7XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29uZmlndXJhdGlvbiB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGtleS5cblx0ICogQHBhcmFtIGtleSBUaGUgY29uZmlndXJhdGlvbiBrZXkuXG5cdCAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgVGhlIG9wdGlvbmFsIGRlZmF1bHQgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBrZXkgaXMgbm90IGZvdW5kLlxuXHQgKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbiB2YWx1ZSBhcyBhIHN0cmluZywgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIGtleSBpcyBub3QgZm91bmQgYW5kIG5vIGRlZmF1bHQgaXMgcHJvdmlkZWQuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldChrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCB2YWx1ZSA9IENvbmZpZ3VyYXRpb24uZ2V0KGtleSwgZGVmYXVsdFZhbHVlKTtcblx0XHRyZXR1cm4gdmFsdWUgPz8gdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGNvbmZpZ3VyYXRpb24gdmFsdWUgZm9yIHRoZSBnaXZlbiBrZXkuXG5cdCAqIElmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMsIGl0cyB2YWx1ZSBpcyBvdmVyd3JpdHRlbi5cblx0ICogQHBhcmFtIGtleSBUaGUgY29uZmlndXJhdGlvbiBrZXkuXG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgY29uZmlndXJhdGlvbiB2YWx1ZSB0byBzZXQuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHNldChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdENvbmZpZ3VyYXRpb24uc2V0KGtleSwgdmFsdWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgdGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBrZXkuXG5cdCAqIEBwYXJhbSBrZXkgVGhlIGNvbmZpZ3VyYXRpb24ga2V5IHRvIHJlbW92ZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgcmVtb3ZlKGtleTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Q29uZmlndXJhdGlvbi5yZW1vdmUoa2V5KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGFsbCBjdXJyZW50IGNvbmZpZ3VyYXRpb24ga2V5cy5cblx0ICogQHJldHVybnMgQW4gYXJyYXkgb2YgY29uZmlndXJhdGlvbiBrZXlzIChzdHJpbmdzKS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0S2V5cygpOiBzdHJpbmdbXSB7XG5cdFx0cmV0dXJuIENvbmZpZ3VyYXRpb24uZ2V0S2V5cygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWRzIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmcm9tIGEgZmlsZSBhdCB0aGUgc3BlY2lmaWVkIHBhdGgsIG92ZXJyaWRpbmcgZXhpc3Rpbmcgb25lcy5cblx0ICogQHBhcmFtIHBhdGggVGhlIGZpbGUgcGF0aCB0byBsb2FkIGNvbmZpZ3VyYXRpb25zIGZyb20uXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGxvYWQocGF0aDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Q29uZmlndXJhdGlvbi5sb2FkKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbG9hZHMgb3IgdXBkYXRlcyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZyb20gdGhlaXIgc291cmNlIChlLmcuLCBwZXJzaXN0ZW5jZSBsYXllcikuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHVwZGF0ZSgpOiB2b2lkIHtcblx0XHRDb25maWd1cmF0aW9uLnVwZGF0ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBPcGVyYXRpbmcgU3lzdGVtLlxuXHQgKiBAcmV0dXJucyBUaGUgT1MgbmFtZSBhcyBhIHN0cmluZyAoZS5nLiwgXCJXaW5kb3dzXCIsIFwiTGludXhcIiwgXCJNYWMgT1MgWFwiKS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0T1MoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gQ29uZmlndXJhdGlvbi5nZXRPUygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBPcGVyYXRpbmcgU3lzdGVtIGlzIFdpbmRvd3MuXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIE9TIGlzIFdpbmRvd3MsIGZhbHNlIG90aGVyd2lzZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgaXNPU1dpbmRvd3MoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIENvbmZpZ3VyYXRpb24uaXNPU1dpbmRvd3MoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgT3BlcmF0aW5nIFN5c3RlbSBpcyBNYWMgT1MgKG9yIE1hYyBPUyBYKS5cblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgT1MgaXMgTWFjLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGlzT1NNYWMoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIENvbmZpZ3VyYXRpb24uaXNPU01hYygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBPcGVyYXRpbmcgU3lzdGVtIGlzIGEgVU5JWC1saWtlIHN5c3RlbSAoZS5nLiwgTGludXgsIG1hY09TLCBvciBvdGhlcnMpLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBPUyBpcyBhIFVOSVggdmFyaWFudCwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpc09TVU5JWCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gQ29uZmlndXJhdGlvbi5pc09TVU5JWCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBPcGVyYXRpbmcgU3lzdGVtIGlzIFNvbGFyaXMuXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIE9TIGlzIFNvbGFyaXMsIGZhbHNlIG90aGVyd2lzZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgaXNPU1NvbGFyaXMoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIENvbmZpZ3VyYXRpb24uaXNPU1NvbGFyaXMoKTtcblx0fVxuXG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gQ29uZmlndXJhdGlvbnM7XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNkNBLE1BQU0sZ0JBQWdCLEtBQUssS0FBSyxvREFBb0Q7QUFFN0UsTUFBTSxlQUFlO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRM0IsT0FBYyxJQUFJLEtBQWEsY0FBMkM7QUFDekUsVUFBTSxRQUFRLGNBQWMsSUFBSSxLQUFLLFlBQVk7QUFDakQsV0FBTyxTQUFTO0FBQUEsRUFDakI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLE9BQWMsSUFBSSxLQUFhLE9BQXFCO0FBQ25ELGtCQUFjLElBQUksS0FBSyxLQUFLO0FBQUEsRUFDN0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTUEsT0FBYyxPQUFPLEtBQW1CO0FBQ3ZDLGtCQUFjLE9BQU8sR0FBRztBQUFBLEVBQ3pCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BLE9BQWMsVUFBb0I7QUFDakMsV0FBTyxjQUFjLFFBQVE7QUFBQSxFQUM5QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNQSxPQUFjLEtBQUssTUFBb0I7QUFDdEMsa0JBQWMsS0FBSyxJQUFJO0FBQUEsRUFDeEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE9BQWMsU0FBZTtBQUM1QixrQkFBYyxPQUFPO0FBQUEsRUFDdEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTUEsT0FBYyxRQUFnQjtBQUM3QixXQUFPLGNBQWMsTUFBTTtBQUFBLEVBQzVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BLE9BQWMsY0FBdUI7QUFDcEMsV0FBTyxjQUFjLFlBQVk7QUFBQSxFQUNsQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNQSxPQUFjLFVBQW1CO0FBQ2hDLFdBQU8sY0FBYyxRQUFRO0FBQUEsRUFDOUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTUEsT0FBYyxXQUFvQjtBQUNqQyxXQUFPLGNBQWMsU0FBUztBQUFBLEVBQy9CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BLE9BQWMsY0FBdUI7QUFDcEMsV0FBTyxjQUFjLFlBQVk7QUFBQSxFQUNsQztBQUVEO0FBR0EsSUFBSSxPQUFPLFdBQVcsYUFBYTtBQUVsQyxTQUFPLFVBQVU7QUFDbEI7IiwKICAibmFtZXMiOiBbXQp9Cg==
128
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvcmUvY29uZmlndXJhdGlvbnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQG1vZHVsZSBjb3JlL2NvbmZpZ3VyYXRpb25zXG4gKiBAcGFja2FnZSBAYWVyb2tpdC9zZGsvY29yZVxuICogQG5hbWUgQ29uZmlndXJhdGlvbnNcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgQ29uZmlndXJhdGlvbnMgQVBJIHByb3ZpZGVzIGEgY2VudHJhbGl6ZWQsIHR5cGUtc2FmZSBpbnRlcmZhY2UgZm9yIG1hbmFnaW5nIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBhbmQgZGV0ZWN0aW5nIHRoZSBydW50aW1lIG9wZXJhdGluZyBzeXN0ZW0uIEl0IHNlcnZlcyBhcyB0aGUgZm91bmRhdGlvbiBmb3IgZW52aXJvbm1lbnQtc3BlY2lmaWMgc2V0dGluZ3MgYW5kIHN5c3RlbS1hd2FyZSBiZWhhdmlvciBpbiBBZXJva2l0IGFwcGxpY2F0aW9ucy5cbiAqIFxuICogIyMjIEtleSBGZWF0dXJlc1xuICogXG4gKiAtICoqU3RhdGljIEludGVyZmFjZSoqOiBUaHJlYWQtc2FmZSwgc2luZ2xldG9uLWxpa2UgYWNjZXNzIHRvIGNvbmZpZ3VyYXRpb24gZGF0YVxuICogLSAqKlR5cGUgU2FmZXR5Kio6IEZ1bGwgVHlwZVNjcmlwdCBzdXBwb3J0IHdpdGggcHJvcGVyIHR5cGUgZGVmaW5pdGlvbnNcbiAqIC0gKipGaWxlIExvYWRpbmcqKjogU3VwcG9ydCBmb3IgbG9hZGluZyBjb25maWd1cmF0aW9ucyBmcm9tIGV4dGVybmFsIGZpbGVzXG4gKiAtICoqT1MgRGV0ZWN0aW9uKio6IENvbXByZWhlbnNpdmUgb3BlcmF0aW5nIHN5c3RlbSBpZGVudGlmaWNhdGlvblxuICogLSAqKk1lbW9yeSBFZmZpY2llbnQqKjogSW4tbWVtb3J5IHN0b3JhZ2Ugd2l0aCBvcHRpb25hbCBwZXJzaXN0ZW5jZVxuICogXG4gKiAjIyMgVXNlIENhc2VzXG4gKiAtIEFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudFxuICogLSBFbnZpcm9ubWVudCB2YXJpYWJsZSBtYW5hZ2VtZW50XG4gKiAtIEZlYXR1cmUgZmxhZyBjb25maWd1cmF0aW9uXG4gKiAtIERhdGFiYXNlIGNvbm5lY3Rpb24gc2V0dGluZ3NcbiAqIC0gQVBJIGVuZHBvaW50IGNvbmZpZ3VyYXRpb25cbiAqIC0gUGxhdGZvcm0tc3BlY2lmaWMgYmVoYXZpb3IgYWRhcHRhdGlvblxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9jb3JlXCI7XG4gKiBcbiAqIC8vIFNldCBhIGNvbmZpZ3VyYXRpb24gcHJvcGVydHlcbiAqIENvbmZpZ3VyYXRpb25zLnNldChcImFwaUVuZHBvaW50XCIsIFwiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb21cIik7XG4gKiAvLyBHZXQgYSBjb25maWd1cmF0aW9uIHByb3BlcnR5XG4gKiBjb25zdCBhcGlFbmRwb2ludCA9IENvbmZpZ3VyYXRpb25zLmdldChcImFwaUVuZHBvaW50XCIpO1xuICogY29uc29sZS5sb2coYXBpRW5kcG9pbnQpOyAvLyBPdXRwdXQ6IFwiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb21cIlxuICogXG4gKiAvLyBDaGVjayB0aGUgb3BlcmF0aW5nIHN5c3RlbVxuICogaWYgKENvbmZpZ3VyYXRpb25zLmlzT1NXaW5kb3dzKCkpIHtcbiAqICAgY29uc29sZS5sb2coXCJSdW5uaW5nIG9uIFdpbmRvd3NcIik7XG4gKiB9IGVsc2UgaWYgKENvbmZpZ3VyYXRpb25zLmlzT1NNYWMoKSkge1xuICogICBjb25zb2xlLmxvZyhcIlJ1bm5pbmcgb24gTWFjXCIpO1xuICogfSBlbHNlIGlmIChDb25maWd1cmF0aW9ucy5pc09TVU5JWCgpKSB7XG4gKiAgIGNvbnNvbGUubG9nKFwiUnVubmluZyBvbiBVTklYXCIpO1xuICogfVxuICogYGBgXG4qL1xuXG5jb25zdCBDb25maWd1cmF0aW9uID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbW1vbnMuY29uZmlnLkNvbmZpZ3VyYXRpb25cIik7XG5jb25zdCBDb25maWd1cmF0aW9uc0ZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5jb3JlLkNvbmZpZ3VyYXRpb25zRmFjYWRlXCIpO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBncm91cCB3aXRoIHRoZSBudW1iZXIgb2YgaXRzIGtleXMgYW5kIG9mIHRoZSBrZXlzIGFueSBzb3VyY2Ugc2V0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25maWd1cmF0aW9uR3JvdXAge1xuXHRpZDogc3RyaW5nO1xuXHRzZWN0aW9uOiBzdHJpbmc7XG5cdGxhYmVsOiBzdHJpbmc7XG5cdG9yZGVyOiBudW1iZXI7XG5cdHRvdGFsOiBudW1iZXI7XG5cdHNldDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgZGVzY3JpYmVkIGNvbmZpZ3VyYXRpb24ga2V5LiBFdmVyeSB2YWx1ZSBpcyBtYXNrZWQgYXMgXCIqKioqKioqKlwiIHdoZW4gdGhlIGtleSBpcyBzZW5zaXRpdmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlndXJhdGlvbkRlc2NyaXB0b3Ige1xuXHRrZXk6IHN0cmluZztcblx0c3ViZ3JvdXA/OiBzdHJpbmc7XG5cdHR5cGU/OiBzdHJpbmc7XG5cdGRlZmF1bHRWYWx1ZT86IHN0cmluZztcblx0LyoqIFRoZSBlZmZlY3RpdmUgdmFsdWUuICovXG5cdHZhbHVlPzogc3RyaW5nO1xuXHQvKiogV2hlcmUgdGhlIGVmZmVjdGl2ZSB2YWx1ZSBjb21lcyBmcm9tLiAqL1xuXHRzb3VyY2U6IFwicnVudGltZVwiIHwgXCJlbnZpcm9ubWVudFwiIHwgXCJkZXBsb3ltZW50XCIgfCBcIm1vZHVsZVwiIHwgXCJkZWZhdWx0XCIgfCBcInVuc2V0XCI7XG5cdC8qKiBUaGUgdmFsdWUgZWFjaCBzb3VyY2UgZ2l2ZXMgdGhlIGtleS4gKi9cblx0dmFsdWVzOiB7IHJ1bnRpbWU/OiBzdHJpbmc7IGVudmlyb25tZW50Pzogc3RyaW5nOyBkZXBsb3ltZW50Pzogc3RyaW5nOyBtb2R1bGU/OiBzdHJpbmcgfTtcblx0c2Vuc2l0aXZlOiBib29sZWFuO1xuXHRyZXN0YXJ0UmVxdWlyZWQ/OiBib29sZWFuO1xuXHR0ZW5hbnRPdmVycmlkYWJsZTogYm9vbGVhbjtcblx0ZGVwcmVjYXRlZEJ5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBncm91cCB3aXRoIGl0cyBkZXNjcmliZWQga2V5cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25maWd1cmF0aW9uRGVzY3JpcHRvckdyb3VwIHtcblx0Z3JvdXA6IHN0cmluZztcblx0c2VjdGlvbjogc3RyaW5nO1xuXHRsYWJlbDogc3RyaW5nO1xuXHRlbnRyaWVzOiBDb25maWd1cmF0aW9uRGVzY3JpcHRvcltdO1xufVxuXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbnMge1xuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbmZpZ3VyYXRpb24gdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBrZXkuXG5cdCAqIEBwYXJhbSBrZXkgVGhlIGNvbmZpZ3VyYXRpb24ga2V5LlxuXHQgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIFRoZSBvcHRpb25hbCBkZWZhdWx0IHZhbHVlIHRvIHJldHVybiBpZiB0aGUga2V5IGlzIG5vdCBmb3VuZC5cblx0ICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb24gdmFsdWUgYXMgYSBzdHJpbmcsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBrZXkgaXMgbm90IGZvdW5kIGFuZCBubyBkZWZhdWx0IGlzIHByb3ZpZGVkLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXQoa2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgdmFsdWUgPSBDb25maWd1cmF0aW9uLmdldChrZXksIGRlZmF1bHRWYWx1ZSk7XG5cdFx0cmV0dXJuIHZhbHVlID8/IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBjb25maWd1cmF0aW9uIHZhbHVlIGZvciB0aGUgZ2l2ZW4ga2V5LlxuXHQgKiBJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCBpdHMgdmFsdWUgaXMgb3ZlcndyaXR0ZW4uXG5cdCAqIEBwYXJhbSBrZXkgVGhlIGNvbmZpZ3VyYXRpb24ga2V5LlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIGNvbmZpZ3VyYXRpb24gdmFsdWUgdG8gc2V0LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRDb25maWd1cmF0aW9uLnNldChrZXksIHZhbHVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIHRoZSBjb25maWd1cmF0aW9uIHByb3BlcnR5IGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4ga2V5LlxuXHQgKiBAcGFyYW0ga2V5IFRoZSBjb25maWd1cmF0aW9uIGtleSB0byByZW1vdmUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHJlbW92ZShrZXk6IHN0cmluZyk6IHZvaWQge1xuXHRcdENvbmZpZ3VyYXRpb24ucmVtb3ZlKGtleSk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgbGlzdCBvZiBhbGwgY3VycmVudCBjb25maWd1cmF0aW9uIGtleXMuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGNvbmZpZ3VyYXRpb24ga2V5cyAoc3RyaW5ncykuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldEtleXMoKTogc3RyaW5nW10ge1xuXHRcdHJldHVybiBDb25maWd1cmF0aW9uLmdldEtleXMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbmZpZ3VyYXRpb24gZ3JvdXBzLCBpbiBkaXNwbGF5IG9yZGVyLCB3aXRoIHRoZSBudW1iZXIgb2Yga2V5cyBhbmQgb2Ygc2V0IGtleXMgaW4gZWFjaC5cblx0ICogQHJldHVybnMgVGhlIGdyb3Vwcy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0R3JvdXBzKCk6IENvbmZpZ3VyYXRpb25Hcm91cFtdIHtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShDb25maWd1cmF0aW9uc0ZhY2FkZS5nZXRHcm91cHMoKSk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBkZXNjcmliZWQgY29uZmlndXJhdGlvbiBrZXlzLCBncm91cGVkOiBkZWZhdWx0LCBlZmZlY3RpdmUgdmFsdWUsIGl0cyBzb3VyY2UgYW5kIHRoZSB2YWx1ZVxuXHQgKiBvZiBlYWNoIHNvdXJjZS4gU2Vuc2l0aXZlIHZhbHVlcyBhcmUgbWFza2VkLlxuXHQgKiBAcGFyYW0gZ3JvdXAgQSBncm91cCBpZCAoZS5nLiBcImRhdGFiYXNlXCIpIG9yIHNldmVyYWw7IGFsbCBncm91cHMgd2hlbiBvbWl0dGVkLlxuXHQgKiBAcmV0dXJucyBUaGUgZ3JvdXBzIHRoYXQgaGF2ZSBrZXlzLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXREZXNjcmlwdG9ycyhncm91cD86IHN0cmluZyB8IHN0cmluZ1tdKTogQ29uZmlndXJhdGlvbkRlc2NyaXB0b3JHcm91cFtdIHtcblx0XHRjb25zdCBncm91cHMgPSBncm91cCA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IEFycmF5LmlzQXJyYXkoZ3JvdXApID8gZ3JvdXAuam9pbihcIixcIikgOiBncm91cDtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShDb25maWd1cmF0aW9uc0ZhY2FkZS5nZXREZXNjcmlwdG9ycyhncm91cHMpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZnJvbSBhIGZpbGUgYXQgdGhlIHNwZWNpZmllZCBwYXRoLCBvdmVycmlkaW5nIGV4aXN0aW5nIG9uZXMuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBmaWxlIHBhdGggdG8gbG9hZCBjb25maWd1cmF0aW9ucyBmcm9tLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBsb2FkKHBhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRcdENvbmZpZ3VyYXRpb24ubG9hZChwYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWxvYWRzIG9yIHVwZGF0ZXMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmcm9tIHRoZWlyIHNvdXJjZSAoZS5nLiwgcGVyc2lzdGVuY2UgbGF5ZXIpLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyB1cGRhdGUoKTogdm9pZCB7XG5cdFx0Q29uZmlndXJhdGlvbi51cGRhdGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgT3BlcmF0aW5nIFN5c3RlbS5cblx0ICogQHJldHVybnMgVGhlIE9TIG5hbWUgYXMgYSBzdHJpbmcgKGUuZy4sIFwiV2luZG93c1wiLCBcIkxpbnV4XCIsIFwiTWFjIE9TIFhcIikuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldE9TKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIENvbmZpZ3VyYXRpb24uZ2V0T1MoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgT3BlcmF0aW5nIFN5c3RlbSBpcyBXaW5kb3dzLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBPUyBpcyBXaW5kb3dzLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGlzT1NXaW5kb3dzKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBDb25maWd1cmF0aW9uLmlzT1NXaW5kb3dzKCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IE9wZXJhdGluZyBTeXN0ZW0gaXMgTWFjIE9TIChvciBNYWMgT1MgWCkuXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIE9TIGlzIE1hYywgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpc09TTWFjKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBDb25maWd1cmF0aW9uLmlzT1NNYWMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgT3BlcmF0aW5nIFN5c3RlbSBpcyBhIFVOSVgtbGlrZSBzeXN0ZW0gKGUuZy4sIExpbnV4LCBtYWNPUywgb3Igb3RoZXJzKS5cblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgT1MgaXMgYSBVTklYIHZhcmlhbnQsIGZhbHNlIG90aGVyd2lzZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgaXNPU1VOSVgoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIENvbmZpZ3VyYXRpb24uaXNPU1VOSVgoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgT3BlcmF0aW5nIFN5c3RlbSBpcyBTb2xhcmlzLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBPUyBpcyBTb2xhcmlzLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGlzT1NTb2xhcmlzKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBDb25maWd1cmF0aW9uLmlzT1NTb2xhcmlzKCk7XG5cdH1cblxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IENvbmZpZ3VyYXRpb25zO1xufSJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTZDQSxNQUFNLGdCQUFnQixLQUFLLEtBQUssb0RBQW9EO0FBQ3BGLE1BQU0sdUJBQXVCLEtBQUssS0FBSyxnRUFBZ0U7QUE0Q2hHLE1BQU0sZUFBZTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUTNCLE9BQWMsSUFBSSxLQUFhLGNBQTJDO0FBQ3pFLFVBQU0sUUFBUSxjQUFjLElBQUksS0FBSyxZQUFZO0FBQ2pELFdBQU8sU0FBUztBQUFBLEVBQ2pCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxPQUFjLElBQUksS0FBYSxPQUFxQjtBQUNuRCxrQkFBYyxJQUFJLEtBQUssS0FBSztBQUFBLEVBQzdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BLE9BQWMsT0FBTyxLQUFtQjtBQUN2QyxrQkFBYyxPQUFPLEdBQUc7QUFBQSxFQUN6QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNQSxPQUFjLFVBQW9CO0FBQ2pDLFdBQU8sY0FBYyxRQUFRO0FBQUEsRUFDOUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTUEsT0FBYyxZQUFrQztBQUMvQyxXQUFPLEtBQUssTUFBTSxxQkFBcUIsVUFBVSxDQUFDO0FBQUEsRUFDbkQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLE9BQWMsZUFBZSxPQUEyRDtBQUN2RixVQUFNLFNBQVMsVUFBVSxTQUFZLE9BQU8sTUFBTSxRQUFRLEtBQUssSUFBSSxNQUFNLEtBQUssR0FBRyxJQUFJO0FBQ3JGLFdBQU8sS0FBSyxNQUFNLHFCQUFxQixlQUFlLE1BQU0sQ0FBQztBQUFBLEVBQzlEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BLE9BQWMsS0FBSyxNQUFvQjtBQUN0QyxrQkFBYyxLQUFLLElBQUk7QUFBQSxFQUN4QjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsT0FBYyxTQUFlO0FBQzVCLGtCQUFjLE9BQU87QUFBQSxFQUN0QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNQSxPQUFjLFFBQWdCO0FBQzdCLFdBQU8sY0FBYyxNQUFNO0FBQUEsRUFDNUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTUEsT0FBYyxjQUF1QjtBQUNwQyxXQUFPLGNBQWMsWUFBWTtBQUFBLEVBQ2xDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BLE9BQWMsVUFBbUI7QUFDaEMsV0FBTyxjQUFjLFFBQVE7QUFBQSxFQUM5QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNQSxPQUFjLFdBQW9CO0FBQ2pDLFdBQU8sY0FBYyxTQUFTO0FBQUEsRUFDL0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTUEsT0FBYyxjQUF1QjtBQUNwQyxXQUFPLGNBQWMsWUFBWTtBQUFBLEVBQ2xDO0FBRUQ7QUFHQSxJQUFJLE9BQU8sV0FBVyxhQUFhO0FBRWxDLFNBQU8sVUFBVTtBQUNsQjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -174,4 +174,4 @@ class Client {
174
174
  if (typeof module !== "undefined") {
175
175
  module.exports = Client;
176
176
  }
177
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V0Y2QvY2xpZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgZXRjZC9jbGllbnRcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9ldGNkXG4gKiBAbmFtZSBDbGllbnRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGBDbGllbnRgIGNsYXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBFdGNkIGtleS12YWx1ZSBzdG9yZSB3aXRoaW4gdGhlIERpcmlnaWJsZSBlbnZpcm9ubWVudC4gVGhlIGBDbGllbnRgIGNsYXNzIGFsbG93cyBkZXZlbG9wZXJzIHRvIHBlcmZvcm0gYmFzaWMgb3BlcmF0aW9ucyBzdWNoIGFzIHB1dHRpbmcgKHdyaXRpbmcpIHZhbHVlcywgZ2V0dGluZyB2YWx1ZXMsIGFuZCBkZWxldGluZyBrZXlzIGluIEV0Y2QuIEl0IGFsc28gaW5jbHVkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgYmV0d2VlbiBKYXZhU2NyaXB0IHR5cGVzIGFuZCB0aGUgbmF0aXZlIEphdmEvRXRjZCB0eXBlcyB1c2VkIGJ5IHRoZSB1bmRlcmx5aW5nIEV0Y2QgY2xpZW50IGxpYnJhcnkuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXNcbiAqIC0gUHV0IHN0cmluZyBvciBieXRlIGFycmF5IHZhbHVlcyB0byBFdGNkIGtleXMuXG4gKiAtIEdldCB2YWx1ZXMgZnJvbSBFdGNkIGtleXMgd2l0aCBvcHRpb25zIGZvciBzdHJpbmcgb3IgYnl0ZSBhcnJheSBmb3JtYXRzLlxuICogLSBSZXRyaWV2ZSBtZXRhZGF0YSBhYm91dCB0aGUgRXRjZCBjbHVzdGVyIGFuZCBrZXktdmFsdWUgc3RvcmUgdGhyb3VnaCByZXNwb25zZSBoZWFkZXJzLlxuICogLSBEZWxldGUga2V5cyBmcm9tIEV0Y2QuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXNcbiAqIC0gU3RvcmluZyBjb25maWd1cmF0aW9uIGRhdGEgb3IgYXBwbGljYXRpb24gc3RhdGUgaW4gRXRjZCBmb3IgZGlzdHJpYnV0ZWQgYXBwbGljYXRpb25zLlxuICogLSBSZXRyaWV2aW5nIGFuZCBtYW5hZ2luZyBrZXktdmFsdWUgcGFpcnMgaW4gRXRjZCBmb3Igc2VydmljZSBkaXNjb3ZlcnksIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCwgb3IgY29vcmRpbmF0aW9uIHRhc2tzLlxuICogLSBJbnRlZ3JhdGluZyB3aXRoIG90aGVyIG1vZHVsZXMgdGhhdCByZXF1aXJlIGEgY29uc2lzdGVudCBpbnRlcmZhY2UgZm9yIGludGVyYWN0aW5nIHdpdGggRXRjZCBhcyBhIGJhY2tlbmQgc3RvcmUuXG4gKiBcbiAqICMjIyBFeGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSBcIkBhZXJva2l0L3Nkay9ldGNkXCI7XG4gKiBcbiAqIGNvbnN0IGV0Y2RDbGllbnQgPSBuZXcgQ2xpZW50KCk7XG4gKiBcbiAqIC8vIFB1dCBhIHN0cmluZyB2YWx1ZSB0byBhIGtleVxuICogZXRjZENsaWVudC5wdXRTdHJpbmdWYWx1ZShcImNvbmZpZy9hcHBOYW1lXCIsIFwiTXlBcHBcIik7XG4gKiBcbiAqIC8vIEdldCB0aGUgc3RyaW5nIHZhbHVlIG9mIGEga2V5XG4gKiBjb25zdCBhcHBOYW1lID0gZXRjZENsaWVudC5nZXRLdnNTdHJpbmdWYWx1ZShcImNvbmZpZy9hcHBOYW1lXCIpO1xuICogY29uc29sZS5sb2coYXBwTmFtZSk7IC8vIE91dHB1dDogeyBcImNvbmZpZy9hcHBOYW1lXCI6IFwiTXlBcHBcIiB9XG4gKiBcbiAqIC8vIERlbGV0ZSBhIGtleVxuICogZXRjZENsaWVudC5kZWxldGUoXCJjb25maWcvYXBwTmFtZVwiKTtcbiAqIGBgYFxuICovXG5cbmNvbnN0IEV0Y2RGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZXRjZC5FdGNkRmFjYWRlXCIpO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVVRJTElUWSBGVU5DVElPTlNcbi8vIFRoZXNlIGZ1bmN0aW9ucyBoYW5kbGUgdGhlIGNvbnZlcnNpb24gYmV0d2VlbiBKYXZhU2NyaXB0L1R5cGVTY3JpcHQgdHlwZXMgKHN0cmluZywgSW50OEFycmF5KVxuLy8gYW5kIHRoZSBuYXRpdmUgSmF2YS9FdGNkIHR5cGVzIChCeXRlU2VxdWVuY2UsIG5hdGl2ZSBieXRlIGFycmF5cykuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIGEgbmF0aXZlIEV0Y2QgQnl0ZVNlcXVlbmNlIG9iamVjdC5cbiAqIEBwYXJhbSBzdHIgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIG5hdGl2ZSBCeXRlU2VxdWVuY2Ugb2JqZWN0IChKYXZhIHR5cGUpLlxuICovXG5mdW5jdGlvbiBTdHJpbmdUb0J5dGVTZXF1ZW5jZShzdHI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIEV0Y2RGYWNhZGUuc3RyaW5nVG9CeXRlU2VxdWVuY2Uoc3RyKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIEphdmFTY3JpcHQgSW50OEFycmF5IChieXRlIGFycmF5KSB0byBhIG5hdGl2ZSBFdGNkIEJ5dGVTZXF1ZW5jZSBvYmplY3QuXG4gKiBAcGFyYW0gYXJyIFRoZSBJbnQ4QXJyYXkgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBuYXRpdmUgQnl0ZVNlcXVlbmNlIG9iamVjdCAoSmF2YSB0eXBlKS5cbiAqL1xuZnVuY3Rpb24gQnl0ZUFycmF5VG9CeXRlU2VxdWVuY2UoYXJyOiBJbnQ4QXJyYXkpOiBhbnkge1xuICAgIHJldHVybiBFdGNkRmFjYWRlLmJ5dGVBcnJheVRvQnl0ZVNlcXVlbmNlKGFycik7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBuYXRpdmUgRXRjZCBCeXRlU2VxdWVuY2Ugb2JqZWN0IGJhY2sgdG8gYSBzdHJpbmcuXG4gKiBAcGFyYW0gdmFsdWUgVGhlIG5hdGl2ZSBCeXRlU2VxdWVuY2Ugb2JqZWN0LlxuICogQHJldHVybnMgVGhlIGRlY29kZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBCeXRlU2VxdWVuY2VUb1N0cmluZyh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gRXRjZEZhY2FkZS5ieXRlU2VxdWVuY2VUb1N0cmluZyh2YWx1ZSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBuYXRpdmUgSmF2YSBhcnJheSBvZiBieXRlcyBpbnRvIGEgSmF2YVNjcmlwdCBJbnQ4QXJyYXkuXG4gKiBAcGFyYW0gdmFsdWUgVGhlIG5hdGl2ZSBCeXRlU2VxdWVuY2Ugb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGJ5dGVzLlxuICogQHJldHVybnMgQSBKYXZhU2NyaXB0IEludDhBcnJheS5cbiAqL1xuZnVuY3Rpb24gQnl0ZXNUb0FycmF5KHZhbHVlOiBhbnkpOiBJbnQ4QXJyYXkge1xuICAgIGNvbnN0IGFycmF5ID0gdmFsdWUuZ2V0Qnl0ZXMoKTsgLy8gR2V0IHRoZSBuYXRpdmUgYnl0ZSBhcnJheVxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBJbnQ4QXJyYXkoYXJyYXkubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vIENvbnZlcnNpb24gZnJvbSBKYXZhIGJ5dGUgdG8gSmF2YVNjcmlwdCBJbnQ4IHZhbHVlXG4gICAgICAgIHJlc3VsdFtpXSA9IHBhcnNlSW50KGFycmF5W2ldLCAxMCk7IFxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEhlbHBlciB0byBwcm9jZXNzIGEgbGlzdCBvZiBLZXktVmFsdWUgKEtWKSBvYmplY3RzIGludG8gYSBzdGFuZGFyZCBKYXZhU2NyaXB0IG9iamVjdC5cbiAqIEBwYXJhbSBrdnNMaXN0IFRoZSBuYXRpdmUgbGlzdCBvZiBLViBvYmplY3RzLlxuICogQHBhcmFtIGZ1bmMgVGhlIGNvbnZlcnNpb24gZnVuY3Rpb24gZm9yIHRoZSB2YWx1ZSAoZS5nLiwgQnl0ZVNlcXVlbmNlVG9TdHJpbmcgb3IgQnl0ZXNUb0FycmF5KS5cbiAqIEByZXR1cm5zIEEgc3RhbmRhcmQgSmF2YVNjcmlwdCBvYmplY3QgbWFwcGluZyBzdHJpbmcga2V5cyB0byBzcGVjaWZpZWQgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBLZXlWYWx1ZU9iamVjdDxUPihrdnNMaXN0OiBhbnlbXSwgZnVuYzogKHZhbHVlOiBhbnkpID0+IFQpOiB7IFtrZXk6IHN0cmluZ106IFQgfSB7XG4gICAgY29uc3Qga3ZPYmplY3Q6IHsgW2tleTogc3RyaW5nXTogVCB9ID0ge307XG4gICAga3ZzTGlzdC5mb3JFYWNoKChrdnM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBrZXk6IHN0cmluZyA9IEJ5dGVTZXF1ZW5jZVRvU3RyaW5nKGt2cy5nZXRLZXkoKSk7XG4gICAgICAgIGNvbnN0IHZhbHVlOiBUID0gZnVuYyhrdnMuZ2V0VmFsdWUoKSk7XG4gICAgICAgIGt2T2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICB9KTtcblxuICAgIHJldHVybiBrdk9iamVjdDtcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgbmF0aXZlIEtWUyBsaXN0IHRvIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBzdHJpbmcgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBLZXlWYWx1ZU9iamVjdFN0cmluZyhrdnNMaXN0OiBhbnlbXSk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiBLZXlWYWx1ZU9iamVjdChrdnNMaXN0LCBCeXRlU2VxdWVuY2VUb1N0cmluZyk7XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIG5hdGl2ZSBLVlMgbGlzdCB0byBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggSW50OEFycmF5IHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gS2V5VmFsdWVPYmplY3RCeXRlQXJyYXkoa3ZzTGlzdDogYW55W10pOiB7IFtrZXk6IHN0cmluZ106IEludDhBcnJheSB9IHtcbiAgICByZXR1cm4gS2V5VmFsdWVPYmplY3Qoa3ZzTGlzdCwgQnl0ZXNUb0FycmF5KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVUQ0QgUkVTUE9OU0UgQ0xBU1NFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBoZWFkZXIgbWV0YWRhdGEgb2YgYW4gRXRjZCByZXNwb25zZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEhlYWRlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG4gICAgICAgIHRoaXMubmF0aXZlID0gbmF0aXZlO1xuICAgIH1cblxuICAgIC8qKiBUaGUgcmV2aXNpb24gb2YgdGhlIGtleS12YWx1ZSBzdG9yZSB3aGVuIHRoZSByZXF1ZXN0IHdhcyBwcm9jZXNzZWQuICovXG4gICAgcHVibGljIGdldFJldmlzaW9uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5nZXRSZXZpc2lvbigpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgSUQgb2YgdGhlIGNsdXN0ZXIgd2hpY2ggdGhlIHJlcXVlc3Qgd2FzIHNlbnQgdG8uICovXG4gICAgcHVibGljIGdldENsdXN0ZXJJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Q2x1c3RlcklkKCk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBJRCBvZiB0aGUgbWVtYmVyIHdoaWNoIHRoZSByZXF1ZXN0IHdhcyBoYW5kbGVkIGJ5LiAqL1xuICAgIHB1YmxpYyBnZXRNZW1iZXJJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TWVtYmVySWQoKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIFJhZnQgdGVybS4gKi9cbiAgICBwdWJsaWMgZ2V0UmFmdFRlcm0oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldFJhZnRUZXJtKCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHJlc3BvbnNlIG9iamVjdCBmb3IgYSBHZXQgb3BlcmF0aW9uIGZyb20gRXRjZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEdldFJlc3BvbnNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5uYXRpdmUgPSBuYXRpdmU7XG4gICAgfVxuXG4gICAgLyoqIFJldHJpZXZlcyB0aGUgcmVzcG9uc2UgaGVhZGVyIGNvbnRhaW5pbmcgY2x1c3RlciBtZXRhZGF0YS4gKi9cbiAgICBwdWJsaWMgZ2V0SGVhZGVyKCk6IEhlYWRlciB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZUhlYWRlciA9IHRoaXMubmF0aXZlLmdldEhlYWRlcigpO1xuICAgICAgICByZXR1cm4gbmV3IEhlYWRlcihuYXRpdmVIZWFkZXIpO1xuICAgIH1cblxuICAgIC8qKiBSZXRyaWV2ZXMgdGhlIEtleS1WYWx1ZSBwYWlycyB3aXRoIHZhbHVlcyBjb252ZXJ0ZWQgdG8gc3RyaW5ncy4gKi9cbiAgICBwdWJsaWMgZ2V0S3ZzU3RyaW5nKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgICAgICByZXR1cm4gS2V5VmFsdWVPYmplY3RTdHJpbmcodGhpcy5uYXRpdmUuZ2V0S3ZzKCkpO1xuICAgIH1cblxuICAgIC8qKiBSZXRyaWV2ZXMgdGhlIEtleS1WYWx1ZSBwYWlycyB3aXRoIHZhbHVlcyBjb252ZXJ0ZWQgdG8gSW50OEFycmF5IChieXRlIGFycmF5cykuICovXG4gICAgcHVibGljIGdldEt2c0J5dGVBcnJheSgpOiB7IFtrZXk6IHN0cmluZ106IEludDhBcnJheSB9IHtcbiAgICAgICAgcmV0dXJuIEtleVZhbHVlT2JqZWN0Qnl0ZUFycmF5KHRoaXMubmF0aXZlLmdldEt2cygpKTtcbiAgICB9XG5cbiAgICAvKiogUmV0cmlldmVzIHRoZSBudW1iZXIgb2YgS2V5LVZhbHVlIHBhaXJzIHJldHVybmVkLiAqL1xuICAgIHB1YmxpYyBnZXRDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Q291bnQoKTtcbiAgICB9XG59XG5cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVUQ0QgQ0xJRU5UIEZBQ0FERVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDbGllbnQgZmFjYWRlIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBFdGNkIGtleS12YWx1ZSBzdG9yZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENsaWVudCB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubmF0aXZlID0gRXRjZEZhY2FkZS5nZXRDbGllbnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhIGJsb2NraW5nIEdFVCByZXF1ZXN0IG9uIHRoZSBzcGVjaWZpZWQga2V5LlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byByZXRyaWV2ZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgcHJvY2Vzc2VkIEdldFJlc3BvbnNlIG9iamVjdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldChrZXk6IHN0cmluZyk6IEdldFJlc3BvbnNlIHtcbiAgICAgICAgLy8gRXRjZCBjbGllbnQgcmV0dXJucyBhIENvbXBsZXRhYmxlRnV0dXJlIHdoaWNoIGlzIGJsb2NrZWQgaGVyZSB1c2luZyAuZ2V0KClcbiAgICAgICAgY29uc3QgZXRjZENvbXBsZXRhYmxlRnV0dXJlID0gdGhpcy5uYXRpdmUuZ2V0KFN0cmluZ1RvQnl0ZVNlcXVlbmNlKGtleSkpO1xuICAgICAgICBjb25zdCBuYXRpdmVSZXNwb25zZSA9IGV0Y2RDb21wbGV0YWJsZUZ1dHVyZS5nZXQoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBHZXRSZXNwb25zZShuYXRpdmVSZXNwb25zZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHV0cyAod3JpdGVzKSBhIHN0cmluZyB2YWx1ZSB0byB0aGUgc3BlY2lmaWVkIGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gd3JpdGUgdG8uXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgdmFsdWUuXG4gICAgICovXG4gICAgcHVibGljIHB1dFN0cmluZ1ZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmF0aXZlLnB1dChTdHJpbmdUb0J5dGVTZXF1ZW5jZShrZXkpLCBTdHJpbmdUb0J5dGVTZXF1ZW5jZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFB1dHMgKHdyaXRlcykgYSBieXRlIGFycmF5IHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQga2V5LlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byB3cml0ZSB0by5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIEludDhBcnJheSAoYnl0ZSBhcnJheSkgdmFsdWUuXG4gICAgICovXG4gICAgcHVibGljIHB1dEJ5dGVBcnJheVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogSW50OEFycmF5KTogdm9pZCB7XG4gICAgICAgIHRoaXMubmF0aXZlLnB1dChTdHJpbmdUb0J5dGVTZXF1ZW5jZShrZXkpLCBCeXRlQXJyYXlUb0J5dGVTZXF1ZW5jZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgcmVzcG9uc2UgaGVhZGVyIG1ldGFkYXRhIGZvciBhIGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgVGhlIHtAbGluayBIZWFkZXJ9IG9iamVjdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SGVhZGVyKGtleTogc3RyaW5nKTogSGVhZGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KGtleSkuZ2V0SGVhZGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBLZXktVmFsdWUgcGFpcnMgYXMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHN0cmluZyB2YWx1ZXMuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IChvciBrZXkgcHJlZml4KSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyBBbiBvYmplY3QgbWFwcGluZyBrZXlzIHRvIHN0cmluZyB2YWx1ZXMuXG4gICAgICovXG4gICAgcHVibGljIGdldEt2c1N0cmluZ1ZhbHVlKGtleTogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldChrZXkpLmdldEt2c1N0cmluZygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgS2V5LVZhbHVlIHBhaXJzIGFzIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBJbnQ4QXJyYXkgdmFsdWVzLlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSAob3Iga2V5IHByZWZpeCkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgQW4gb2JqZWN0IG1hcHBpbmcga2V5cyB0byBJbnQ4QXJyYXkgdmFsdWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRLdnNCeXRlQXJyYXlWYWx1ZShrZXk6IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogSW50OEFycmF5IH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoa2V5KS5nZXRLdnNCeXRlQXJyYXkoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGNvdW50IG9mIEtleS1WYWx1ZSBwYWlycyBtYXRjaGluZyB0aGUga2V5IChvciBrZXkgcHJlZml4KS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgKG9yIGtleSBwcmVmaXgpIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIFRoZSBjb3VudCBvZiBtYXRjaGluZyBlbnRyaWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb3VudChrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldChrZXkpLmdldENvdW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlcyB0aGUgc3BlY2lmaWVkIGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gZGVsZXRlLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGUoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uYXRpdmUuZGVsZXRlKFN0cmluZ1RvQnl0ZVNlcXVlbmNlKGtleSkpO1xuICAgIH1cbn1cblxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IENsaWVudDtcbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUNBLE1BQU0sYUFBYSxLQUFLLEtBQUssc0RBQXNEO0FBYW5GLFNB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
177
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V0Y2QvY2xpZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgZXRjZC9jbGllbnRcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9ldGNkXG4gKiBAbmFtZSBDbGllbnRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGBDbGllbnRgIGNsYXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBFdGNkIGtleS12YWx1ZSBzdG9yZSB3aXRoaW4gdGhlIERpcmlnaWJsZSBlbnZpcm9ubWVudC4gVGhlIGBDbGllbnRgIGNsYXNzIGFsbG93cyBkZXZlbG9wZXJzIHRvIHBlcmZvcm0gYmFzaWMgb3BlcmF0aW9ucyBzdWNoIGFzIHB1dHRpbmcgKHdyaXRpbmcpIHZhbHVlcywgZ2V0dGluZyB2YWx1ZXMsIGFuZCBkZWxldGluZyBrZXlzIGluIEV0Y2QuIEl0IGFsc28gaW5jbHVkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgYmV0d2VlbiBKYXZhU2NyaXB0IHR5cGVzIGFuZCB0aGUgbmF0aXZlIEphdmEvRXRjZCB0eXBlcyB1c2VkIGJ5IHRoZSB1bmRlcmx5aW5nIEV0Y2QgY2xpZW50IGxpYnJhcnkuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXNcbiAqIC0gUHV0IHN0cmluZyBvciBieXRlIGFycmF5IHZhbHVlcyB0byBFdGNkIGtleXMuXG4gKiAtIEdldCB2YWx1ZXMgZnJvbSBFdGNkIGtleXMgd2l0aCBvcHRpb25zIGZvciBzdHJpbmcgb3IgYnl0ZSBhcnJheSBmb3JtYXRzLlxuICogLSBSZXRyaWV2ZSBtZXRhZGF0YSBhYm91dCB0aGUgRXRjZCBjbHVzdGVyIGFuZCBrZXktdmFsdWUgc3RvcmUgdGhyb3VnaCByZXNwb25zZSBoZWFkZXJzLlxuICogLSBEZWxldGUga2V5cyBmcm9tIEV0Y2QuXG4gKlxuICogIyMjIEF2YWlsYWJpbGl0eVxuICogVGhlIGV0Y2QgY2xpZW50IGxpYnJhcnkgKGpldGNkKSBpcyBhbiBhZGQtb24gdGhhdCB0aGUgZGVmYXVsdCBidW5kbGUgZG9lcyBub3Qgc2hpcDogdGhlIGFwcGxpY2F0aW9uIGFkZHNcbiAqIGBvcmcuZWNsaXBzZS5kaXJpZ2libGU6ZGlyaWdpYmxlLWNvbXBvbmVudHMtYXBpLWV0Y2QtY2xpZW50YCAoYDx0eXBlPnBvbTwvdHlwZT5gKS4gV2l0aG91dCBpdCwgZXZlcnkgY2FsbFxuICogdGhyb3dzIGBFdGNkTm90QXZhaWxhYmxlRXhjZXB0aW9uYCBuYW1pbmcgdGhhdCBhcnRpZmFjdC5cbiAqIFxuICogIyMjIFVzZSBDYXNlc1xuICogLSBTdG9yaW5nIGNvbmZpZ3VyYXRpb24gZGF0YSBvciBhcHBsaWNhdGlvbiBzdGF0ZSBpbiBFdGNkIGZvciBkaXN0cmlidXRlZCBhcHBsaWNhdGlvbnMuXG4gKiAtIFJldHJpZXZpbmcgYW5kIG1hbmFnaW5nIGtleS12YWx1ZSBwYWlycyBpbiBFdGNkIGZvciBzZXJ2aWNlIGRpc2NvdmVyeSwgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50LCBvciBjb29yZGluYXRpb24gdGFza3MuXG4gKiAtIEludGVncmF0aW5nIHdpdGggb3RoZXIgbW9kdWxlcyB0aGF0IHJlcXVpcmUgYSBjb25zaXN0ZW50IGludGVyZmFjZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBFdGNkIGFzIGEgYmFja2VuZCBzdG9yZS5cbiAqIFxuICogIyMjIEV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBDbGllbnQgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2V0Y2RcIjtcbiAqIFxuICogY29uc3QgZXRjZENsaWVudCA9IG5ldyBDbGllbnQoKTtcbiAqIFxuICogLy8gUHV0IGEgc3RyaW5nIHZhbHVlIHRvIGEga2V5XG4gKiBldGNkQ2xpZW50LnB1dFN0cmluZ1ZhbHVlKFwiY29uZmlnL2FwcE5hbWVcIiwgXCJNeUFwcFwiKTtcbiAqIFxuICogLy8gR2V0IHRoZSBzdHJpbmcgdmFsdWUgb2YgYSBrZXlcbiAqIGNvbnN0IGFwcE5hbWUgPSBldGNkQ2xpZW50LmdldEt2c1N0cmluZ1ZhbHVlKFwiY29uZmlnL2FwcE5hbWVcIik7XG4gKiBjb25zb2xlLmxvZyhhcHBOYW1lKTsgLy8gT3V0cHV0OiB7IFwiY29uZmlnL2FwcE5hbWVcIjogXCJNeUFwcFwiIH1cbiAqIFxuICogLy8gRGVsZXRlIGEga2V5XG4gKiBldGNkQ2xpZW50LmRlbGV0ZShcImNvbmZpZy9hcHBOYW1lXCIpO1xuICogYGBgXG4gKi9cblxuY29uc3QgRXRjZEZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5ldGNkLkV0Y2RGYWNhZGVcIik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBVVElMSVRZIEZVTkNUSU9OU1xuLy8gVGhlc2UgZnVuY3Rpb25zIGhhbmRsZSB0aGUgY29udmVyc2lvbiBiZXR3ZWVuIEphdmFTY3JpcHQvVHlwZVNjcmlwdCB0eXBlcyAoc3RyaW5nLCBJbnQ4QXJyYXkpXG4vLyBhbmQgdGhlIG5hdGl2ZSBKYXZhL0V0Y2QgdHlwZXMgKEJ5dGVTZXF1ZW5jZSwgbmF0aXZlIGJ5dGUgYXJyYXlzKS5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ29udmVydHMgYSBzdHJpbmcgdG8gYSBuYXRpdmUgRXRjZCBCeXRlU2VxdWVuY2Ugb2JqZWN0LlxuICogQHBhcmFtIHN0ciBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgbmF0aXZlIEJ5dGVTZXF1ZW5jZSBvYmplY3QgKEphdmEgdHlwZSkuXG4gKi9cbmZ1bmN0aW9uIFN0cmluZ1RvQnl0ZVNlcXVlbmNlKHN0cjogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gRXRjZEZhY2FkZS5zdHJpbmdUb0J5dGVTZXF1ZW5jZShzdHIpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgSmF2YVNjcmlwdCBJbnQ4QXJyYXkgKGJ5dGUgYXJyYXkpIHRvIGEgbmF0aXZlIEV0Y2QgQnl0ZVNlcXVlbmNlIG9iamVjdC5cbiAqIEBwYXJhbSBhcnIgVGhlIEludDhBcnJheSB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIG5hdGl2ZSBCeXRlU2VxdWVuY2Ugb2JqZWN0IChKYXZhIHR5cGUpLlxuICovXG5mdW5jdGlvbiBCeXRlQXJyYXlUb0J5dGVTZXF1ZW5jZShhcnI6IEludDhBcnJheSk6IGFueSB7XG4gICAgcmV0dXJuIEV0Y2RGYWNhZGUuYnl0ZUFycmF5VG9CeXRlU2VxdWVuY2UoYXJyKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIG5hdGl2ZSBFdGNkIEJ5dGVTZXF1ZW5jZSBvYmplY3QgYmFjayB0byBhIHN0cmluZy5cbiAqIEBwYXJhbSB2YWx1ZSBUaGUgbmF0aXZlIEJ5dGVTZXF1ZW5jZSBvYmplY3QuXG4gKiBAcmV0dXJucyBUaGUgZGVjb2RlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIEJ5dGVTZXF1ZW5jZVRvU3RyaW5nKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBFdGNkRmFjYWRlLmJ5dGVTZXF1ZW5jZVRvU3RyaW5nKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIG5hdGl2ZSBKYXZhIGFycmF5IG9mIGJ5dGVzIGludG8gYSBKYXZhU2NyaXB0IEludDhBcnJheS5cbiAqIEBwYXJhbSB2YWx1ZSBUaGUgbmF0aXZlIEJ5dGVTZXF1ZW5jZSBvYmplY3QgY29udGFpbmluZyB0aGUgYnl0ZXMuXG4gKiBAcmV0dXJucyBBIEphdmFTY3JpcHQgSW50OEFycmF5LlxuICovXG5mdW5jdGlvbiBCeXRlc1RvQXJyYXkodmFsdWU6IGFueSk6IEludDhBcnJheSB7XG4gICAgY29uc3QgYXJyYXkgPSB2YWx1ZS5nZXRCeXRlcygpOyAvLyBHZXQgdGhlIG5hdGl2ZSBieXRlIGFycmF5XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEludDhBcnJheShhcnJheS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gQ29udmVyc2lvbiBmcm9tIEphdmEgYnl0ZSB0byBKYXZhU2NyaXB0IEludDggdmFsdWVcbiAgICAgICAgcmVzdWx0W2ldID0gcGFyc2VJbnQoYXJyYXlbaV0sIDEwKTsgXG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogSGVscGVyIHRvIHByb2Nlc3MgYSBsaXN0IG9mIEtleS1WYWx1ZSAoS1YpIG9iamVjdHMgaW50byBhIHN0YW5kYXJkIEphdmFTY3JpcHQgb2JqZWN0LlxuICogQHBhcmFtIGt2c0xpc3QgVGhlIG5hdGl2ZSBsaXN0IG9mIEtWIG9iamVjdHMuXG4gKiBAcGFyYW0gZnVuYyBUaGUgY29udmVyc2lvbiBmdW5jdGlvbiBmb3IgdGhlIHZhbHVlIChlLmcuLCBCeXRlU2VxdWVuY2VUb1N0cmluZyBvciBCeXRlc1RvQXJyYXkpLlxuICogQHJldHVybnMgQSBzdGFuZGFyZCBKYXZhU2NyaXB0IG9iamVjdCBtYXBwaW5nIHN0cmluZyBrZXlzIHRvIHNwZWNpZmllZCB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIEtleVZhbHVlT2JqZWN0PFQ+KGt2c0xpc3Q6IGFueVtdLCBmdW5jOiAodmFsdWU6IGFueSkgPT4gVCk6IHsgW2tleTogc3RyaW5nXTogVCB9IHtcbiAgICBjb25zdCBrdk9iamVjdDogeyBba2V5OiBzdHJpbmddOiBUIH0gPSB7fTtcbiAgICBrdnNMaXN0LmZvckVhY2goKGt2czogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGtleTogc3RyaW5nID0gQnl0ZVNlcXVlbmNlVG9TdHJpbmcoa3ZzLmdldEtleSgpKTtcbiAgICAgICAgY29uc3QgdmFsdWU6IFQgPSBmdW5jKGt2cy5nZXRWYWx1ZSgpKTtcbiAgICAgICAga3ZPYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGt2T2JqZWN0O1xufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBuYXRpdmUgS1ZTIGxpc3QgdG8gYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHN0cmluZyB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIEtleVZhbHVlT2JqZWN0U3RyaW5nKGt2c0xpc3Q6IGFueVtdKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIEtleVZhbHVlT2JqZWN0KGt2c0xpc3QsIEJ5dGVTZXF1ZW5jZVRvU3RyaW5nKTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgbmF0aXZlIEtWUyBsaXN0IHRvIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBJbnQ4QXJyYXkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBLZXlWYWx1ZU9iamVjdEJ5dGVBcnJheShrdnNMaXN0OiBhbnlbXSk6IHsgW2tleTogc3RyaW5nXTogSW50OEFycmF5IH0ge1xuICAgIHJldHVybiBLZXlWYWx1ZU9iamVjdChrdnNMaXN0LCBCeXRlc1RvQXJyYXkpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVRDRCBSRVNQT05TRSBDTEFTU0VTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGhlYWRlciBtZXRhZGF0YSBvZiBhbiBFdGNkIHJlc3BvbnNlLlxuICovXG5leHBvcnQgY2xhc3MgSGVhZGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5uYXRpdmUgPSBuYXRpdmU7XG4gICAgfVxuXG4gICAgLyoqIFRoZSByZXZpc2lvbiBvZiB0aGUga2V5LXZhbHVlIHN0b3JlIHdoZW4gdGhlIHJlcXVlc3Qgd2FzIHByb2Nlc3NlZC4gKi9cbiAgICBwdWJsaWMgZ2V0UmV2aXNpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldFJldmlzaW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBJRCBvZiB0aGUgY2x1c3RlciB3aGljaCB0aGUgcmVxdWVzdCB3YXMgc2VudCB0by4gKi9cbiAgICBwdWJsaWMgZ2V0Q2x1c3RlcklkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5nZXRDbHVzdGVySWQoKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIElEIG9mIHRoZSBtZW1iZXIgd2hpY2ggdGhlIHJlcXVlc3Qgd2FzIGhhbmRsZWQgYnkuICovXG4gICAgcHVibGljIGdldE1lbWJlcklkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5nZXRNZW1iZXJJZCgpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgUmFmdCB0ZXJtLiAqL1xuICAgIHB1YmxpYyBnZXRSYWZ0VGVybSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZ2V0UmFmdFRlcm0oKTtcbiAgICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgcmVzcG9uc2Ugb2JqZWN0IGZvciBhIEdldCBvcGVyYXRpb24gZnJvbSBFdGNkLlxuICovXG5leHBvcnQgY2xhc3MgR2V0UmVzcG9uc2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuICAgICAgICB0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcbiAgICB9XG5cbiAgICAvKiogUmV0cmlldmVzIHRoZSByZXNwb25zZSBoZWFkZXIgY29udGFpbmluZyBjbHVzdGVyIG1ldGFkYXRhLiAqL1xuICAgIHB1YmxpYyBnZXRIZWFkZXIoKTogSGVhZGVyIHtcbiAgICAgICAgY29uc3QgbmF0aXZlSGVhZGVyID0gdGhpcy5uYXRpdmUuZ2V0SGVhZGVyKCk7XG4gICAgICAgIHJldHVybiBuZXcgSGVhZGVyKG5hdGl2ZUhlYWRlcik7XG4gICAgfVxuXG4gICAgLyoqIFJldHJpZXZlcyB0aGUgS2V5LVZhbHVlIHBhaXJzIHdpdGggdmFsdWVzIGNvbnZlcnRlZCB0byBzdHJpbmdzLiAqL1xuICAgIHB1YmxpYyBnZXRLdnNTdHJpbmcoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgICAgIHJldHVybiBLZXlWYWx1ZU9iamVjdFN0cmluZyh0aGlzLm5hdGl2ZS5nZXRLdnMoKSk7XG4gICAgfVxuXG4gICAgLyoqIFJldHJpZXZlcyB0aGUgS2V5LVZhbHVlIHBhaXJzIHdpdGggdmFsdWVzIGNvbnZlcnRlZCB0byBJbnQ4QXJyYXkgKGJ5dGUgYXJyYXlzKS4gKi9cbiAgICBwdWJsaWMgZ2V0S3ZzQnl0ZUFycmF5KCk6IHsgW2tleTogc3RyaW5nXTogSW50OEFycmF5IH0ge1xuICAgICAgICByZXR1cm4gS2V5VmFsdWVPYmplY3RCeXRlQXJyYXkodGhpcy5uYXRpdmUuZ2V0S3ZzKCkpO1xuICAgIH1cblxuICAgIC8qKiBSZXRyaWV2ZXMgdGhlIG51bWJlciBvZiBLZXktVmFsdWUgcGFpcnMgcmV0dXJuZWQuICovXG4gICAgcHVibGljIGdldENvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5nZXRDb3VudCgpO1xuICAgIH1cbn1cblxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVRDRCBDTElFTlQgRkFDQURFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENsaWVudCBmYWNhZGUgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIEV0Y2Qga2V5LXZhbHVlIHN0b3JlLlxuICovXG5leHBvcnQgY2xhc3MgQ2xpZW50IHtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5uYXRpdmUgPSBFdGNkRmFjYWRlLmdldENsaWVudCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGEgYmxvY2tpbmcgR0VUIHJlcXVlc3Qgb24gdGhlIHNwZWNpZmllZCBrZXkuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHJldHJpZXZlLlxuICAgICAqIEByZXR1cm5zIFRoZSBwcm9jZXNzZWQgR2V0UmVzcG9uc2Ugb2JqZWN0LlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0KGtleTogc3RyaW5nKTogR2V0UmVzcG9uc2Uge1xuICAgICAgICAvLyBFdGNkIGNsaWVudCByZXR1cm5zIGEgQ29tcGxldGFibGVGdXR1cmUgd2hpY2ggaXMgYmxvY2tlZCBoZXJlIHVzaW5nIC5nZXQoKVxuICAgICAgICBjb25zdCBldGNkQ29tcGxldGFibGVGdXR1cmUgPSB0aGlzLm5hdGl2ZS5nZXQoU3RyaW5nVG9CeXRlU2VxdWVuY2Uoa2V5KSk7XG4gICAgICAgIGNvbnN0IG5hdGl2ZVJlc3BvbnNlID0gZXRjZENvbXBsZXRhYmxlRnV0dXJlLmdldCgpO1xuICAgICAgICByZXR1cm4gbmV3IEdldFJlc3BvbnNlKG5hdGl2ZVJlc3BvbnNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQdXRzICh3cml0ZXMpIGEgc3RyaW5nIHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQga2V5LlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byB3cml0ZSB0by5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHN0cmluZyB2YWx1ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcHV0U3RyaW5nVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uYXRpdmUucHV0KFN0cmluZ1RvQnl0ZVNlcXVlbmNlKGtleSksIFN0cmluZ1RvQnl0ZVNlcXVlbmNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHV0cyAod3JpdGVzKSBhIGJ5dGUgYXJyYXkgdmFsdWUgdG8gdGhlIHNwZWNpZmllZCBrZXkuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHdyaXRlIHRvLlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgSW50OEFycmF5IChieXRlIGFycmF5KSB2YWx1ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcHV0Qnl0ZUFycmF5VmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBJbnQ4QXJyYXkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uYXRpdmUucHV0KFN0cmluZ1RvQnl0ZVNlcXVlbmNlKGtleSksIEJ5dGVBcnJheVRvQnl0ZVNlcXVlbmNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSByZXNwb25zZSBoZWFkZXIgbWV0YWRhdGEgZm9yIGEga2V5LlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyBUaGUge0BsaW5rIEhlYWRlcn0gb2JqZWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRIZWFkZXIoa2V5OiBzdHJpbmcpOiBIZWFkZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoa2V5KS5nZXRIZWFkZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIEtleS1WYWx1ZSBwYWlycyBhcyBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggc3RyaW5nIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgKG9yIGtleSBwcmVmaXgpIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIEFuIG9iamVjdCBtYXBwaW5nIGtleXMgdG8gc3RyaW5nIHZhbHVlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0S3ZzU3RyaW5nVmFsdWUoa2V5OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KGtleSkuZ2V0S3ZzU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBLZXktVmFsdWUgcGFpcnMgYXMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIEludDhBcnJheSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IChvciBrZXkgcHJlZml4KSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyBBbiBvYmplY3QgbWFwcGluZyBrZXlzIHRvIEludDhBcnJheSB2YWx1ZXMuXG4gICAgICovXG4gICAgcHVibGljIGdldEt2c0J5dGVBcnJheVZhbHVlKGtleTogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBJbnQ4QXJyYXkgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldChrZXkpLmdldEt2c0J5dGVBcnJheSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgY291bnQgb2YgS2V5LVZhbHVlIHBhaXJzIG1hdGNoaW5nIHRoZSBrZXkgKG9yIGtleSBwcmVmaXgpLlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSAob3Iga2V5IHByZWZpeCkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgVGhlIGNvdW50IG9mIG1hdGNoaW5nIGVudHJpZXMuXG4gICAgICovXG4gICAgcHVibGljIGdldENvdW50KGtleTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KGtleSkuZ2V0Q291bnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIHRoZSBzcGVjaWZpZWQga2V5LlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBkZWxldGUuXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm5hdGl2ZS5kZWxldGUoU3RyaW5nVG9CeXRlU2VxdWVuY2Uoa2V5KSk7XG4gICAgfVxufVxuXG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gQ2xpZW50O1xufSJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwQ0EsTUFBTSxhQUFhLEtBQUssS0FBSyxzREFBc0Q7QUFhbkYsU0FBUyxxQkFBcUIsS0FBa0I7QUFDNUMsU0FBTyxXQUFXLHFCQUFxQixHQUFHO0FBQzlDO0FBT0EsU0FBUyx3QkFBd0IsS0FBcUI7QUFDbEQsU0FBTyxXQUFXLHdCQUF3QixHQUFHO0FBQ2pEO0FBT0EsU0FBUyxxQkFBcUIsT0FBb0I7QUFDOUMsU0FBTyxXQUFXLHFCQUFxQixLQUFLO0FBQ2hEO0FBT0EsU0FBUyxhQUFhLE9BQXVCO0FBQ3pDLFFBQU0sUUFBUSxNQUFNLFNBQVM7QUFDN0IsUUFBTSxTQUFTLElBQUksVUFBVSxNQUFNLE1BQU07QUFDekMsV0FBUyxJQUFJLEdBQUcsSUFBSSxNQUFNLFFBQVEsS0FBSztBQUVuQyxXQUFPLENBQUMsSUFBSSxTQUFTLE1BQU0sQ0FBQyxHQUFHLEVBQUU7QUFBQSxFQUNyQztBQUNBLFNBQU87QUFDWDtBQVFBLFNBQVMsZUFBa0IsU0FBZ0IsTUFBK0M7QUFDdEYsUUFBTSxXQUFpQyxDQUFDO0FBQ3hDLFVBQVEsUUFBUSxDQUFDLFFBQWE7QUFDMUIsVUFBTSxNQUFjLHFCQUFxQixJQUFJLE9BQU8sQ0FBQztBQUNyRCxVQUFNLFFBQVcsS0FBSyxJQUFJLFNBQVMsQ0FBQztBQUNwQyxhQUFTLEdBQUcsSUFBSTtBQUFBLEVBQ3BCLENBQUM7QUFFRCxTQUFPO0FBQ1g7QUFLQSxTQUFTLHFCQUFxQixTQUEyQztBQUNyRSxTQUFP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
@@ -184,7 +184,7 @@ function createHttpResponseCallback(httpClient2, successCallback, errorCallback,
184
184
  );
185
185
  }
186
186
  function createSuccessCallback(callback) {
187
- return "(function(httpResponse, isBinary, context) {\nvar response = {};\nresponse.statusCode = httpResponse.getStatusLine().getStatusCode();\nresponse.statusMessage = httpResponse.getStatusLine().getReasonPhrase();\nresponse.protocol = httpResponse.getProtocolVersion();\nresponse.binary = isBinary;\nvar headers = httpResponse.getAllHeaders();\nresponse.headers = [];\nfor (var i = 0; i < headers.length; i ++) {\n response.headers.push({\n name: headers[i].getName(),\n value: headers[i].getValue()\n });\n}\nvar entity = httpResponse.getEntity();\nif (entity) {\n var inputStream = entity.getContent();\n if (isBinary) {\n // Uses Java IOUtils to read binary data\n response.data = org.apache.commons.io.IOUtils.toByteArray(inputStream);\n } else {\n // Uses Java IOUtils to read text data\n response.text = org.apache.commons.io.IOUtils.toString(inputStream);\n }\n}\n(" + callback + ")(response, JSON.parse(context));\n})(__context.get('response'), __context.get('httpClientRequestOptions').isBinary(), __context.get('httpClientRequestOptions').getContext());\n";
187
+ return "(function(httpResponse, isBinary, context) {\nvar response = {};\nresponse.statusCode = httpResponse.getCode();\nresponse.statusMessage = httpResponse.getReasonPhrase();\nresponse.protocol = httpResponse.getVersion();\nresponse.binary = isBinary;\nvar headers = httpResponse.getHeaders();\nresponse.headers = [];\nfor (var i = 0; i < headers.length; i ++) {\n response.headers.push({\n name: headers[i].getName(),\n value: headers[i].getValue()\n });\n}\nif (isBinary) {\n response.data = httpResponse.getBodyBytes();\n} else {\n response.text = httpResponse.getBodyText();\n}\n(" + callback + ")(response, JSON.parse(context));\n})(__context.get('response'), __context.get('httpClientRequestOptions').isBinary(), __context.get('httpClientRequestOptions').getContext());\n";
188
188
  }
189
189
  function createErrorCallback(callback) {
190
190
  if (callback) {
@@ -221,4 +221,4 @@ function buildUrl(url, options) {
221
221
  if (typeof module !== "undefined") {
222
222
  module.exports = { HttpAsyncClient, getInstance };
223
223
  }
224
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2h0dHAvY2xpZW50LWFzeW5jLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgaHR0cC9jbGllbnQtYXN5bmNcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9odHRwXG4gKiBAbmFtZSBIdHRwQXN5bmNDbGllbnRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgSHR0cEFzeW5jQ2xpZW50IGNsYXNzIHByb3ZpZGVzIGEgSmF2YVNjcmlwdC9UeXBlU2NyaXB0IHdyYXBwZXIgKEZhY2FkZSkgZm9yIG1ha2luZyBhc3luY2hyb25vdXMgSFRUUCByZXF1ZXN0cyB1c2luZyB0aGUgdW5kZXJseWluZyBKYXZhIEhUVFAgY2xpZW50LiBJdCBhbGxvd3MgZGV2ZWxvcGVycyB0byBwZXJmb3JtIG5vbi1ibG9ja2luZyBIVFRQIG9wZXJhdGlvbnMgYnkgZGVmaW5pbmcgc3VjY2VzcywgZXJyb3IsIGFuZCBjYW5jZWwgY2FsbGJhY2tzIGFzIHN0cmluZ3Mgb2YgZXhlY3V0YWJsZSBKYXZhU2NyaXB0IGNvZGUuIFRoZSBjbGFzcyBzdXBwb3J0cyBhbGwgc3RhbmRhcmQgSFRUUCBtZXRob2RzIChHRVQsIFBPU1QsIFBVVCwgUEFUQ0gsIERFTEVURSwgSEVBRCwgVFJBQ0UpIGFuZCBhY2NlcHRzIGEgY29tcHJlaGVuc2l2ZSBzZXQgb2YgcmVxdWVzdCBvcHRpb25zIHRoYXQgbWlycm9yIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIEphdmEgY2xpZW50LlxuICogXG4gKiAjIyMgS2V5IEZlYXR1cmVzOlxuICogLSAqKkFzeW5jaHJvbm91cyBFeGVjdXRpb24qKjogQWxsIEhUVFAgbWV0aG9kcyByZXR1cm4gaW1tZWRpYXRlbHksIHdpdGggY2FsbGJhY2tzIGV4ZWN1dGVkIHVwb24gY29tcGxldGlvbi5cbiAqIC0gKipDb21wcmVoZW5zaXZlIFJlcXVlc3QgT3B0aW9ucyoqOiBTdXBwb3J0cyBhIHdpZGUgcmFuZ2Ugb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBmaW5lLXR1bmluZyBIVFRQIHJlcXVlc3RzLlxuICogLSAqKkNhbGxiYWNrIEZsZXhpYmlsaXR5Kio6IENhbGxiYWNrcyBhcmUgZGVmaW5lZCBhcyBzdHJpbmdzIG9mIEphdmFTY3JpcHQgY29kZSwgYWxsb3dpbmcgZm9yIGR5bmFtaWMgZXhlY3V0aW9uIGluIHRoZSBKVk0gZW52aXJvbm1lbnQuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXM6XG4gKiAtICoqTm9uLWJsb2NraW5nIEFQSSBDYWxscyoqOiBJZGVhbCBmb3Igc2NlbmFyaW9zIHdoZXJlIHlvdSB3YW50IHRvIHBlcmZvcm0gSFRUUCByZXF1ZXN0cyB3aXRob3V0IGJsb2NraW5nIHRoZSBtYWluIGV4ZWN1dGlvbiB0aHJlYWQuXG4gKiAtICoqQ29tcGxleCBSZXF1ZXN0IENvbmZpZ3VyYXRpb25zKio6IFN1aXRhYmxlIGZvciBhZHZhbmNlZCB1c2UgY2FzZXMgdGhhdCByZXF1aXJlIGRldGFpbGVkIHJlcXVlc3QgY29uZmlndXJhdGlvbnMgYW5kIGhhbmRsaW5nLlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBIdHRwQXN5bmNDbGllbnQgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2h0dHBcIjtcbiAqIFxuICogY29uc3QgY2xpZW50ID0gSHR0cEFzeW5jQ2xpZW50LmdldEluc3RhbmNlKCk7XG4gKiBcbiAqIGNsaWVudC5nZXRBc3luYyhcImh0dHBzOi8vYXBpLmV4YW1wbGUuY29tL2RhdGFcIiwge1xuICogICBzdWNjZXNzOiBcImZ1bmN0aW9uKHJlc3BvbnNlKSB7IGNvbnNvbGUubG9nKCdTdWNjZXNzOicsIHJlc3BvbnNlKTsgfVwiLFxuICogICBlcnJvcjogXCJmdW5jdGlvbihlcnJvcikgeyBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnJvcik7IH1cIlxuICogfSwge1xuICogICBoZWFkZXJzOiBbeyBuYW1lOiAnQXV0aG9yaXphdGlvbicsIHZhbHVlOiAnQmVhcmVyIHRva2VuJyB9XSxcbiAqICAgcGFyYW1zOiBbeyBuYW1lOiAncXVlcnknLCB2YWx1ZTogJ3NlYXJjaCB0ZXJtJyB9XVxuICogfSk7XG4gKiBgYGBcbiAqL1xuXG4vLyAtLS0gU2hhcmVkIEludGVyZmFjZXMgKGZvciBkb2N1bWVudGF0aW9uIGNsYXJpdHkpIC0tLVxuXG4vKiogRGVmaW5lcyBhIHNpbmdsZSBIVFRQIGhlYWRlciwgdXNlZCBmb3IgYm90aCByZXF1ZXN0IGFuZCByZXNwb25zZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENsaWVudEhlYWRlciB7XG4gICAgLyoqIFRoZSBuYW1lIG9mIHRoZSBoZWFkZXIgKGUuZy4sICdDb250ZW50LVR5cGUnLCAnQXV0aG9yaXphdGlvbicpLiAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIuICovXG4gICAgdmFsdWU6IHN0cmluZztcbn1cblxuLyoqIERlZmluZXMgYSBxdWVyeSBwYXJhbWV0ZXIgdGhhdCB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBVUkwuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDbGllbnRQYXJhbSB7XG4gICAgLyoqIFRoZSBuYW1lIG9mIHRoZSBVUkwgcXVlcnkgcGFyYW1ldGVyIChlLmcuLCAnaWQnKS4gKi9cbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLyoqIFRoZSB2YWx1ZSBvZiB0aGUgVVJMIHF1ZXJ5IHBhcmFtZXRlci4gKi9cbiAgICB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKiogRGVmaW5lcyBhIGZpbGUgdG8gYmUgaW5jbHVkZWQgaW4gYSBtdWx0aS1wYXJ0IGZvcm0gZGF0YSByZXF1ZXN0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwQ2xpZW50RmlsZSB7XG4gICAgLyoqIFRoZSBmb3JtIGZpZWxkIG5hbWUgZm9yIHRoZSBmaWxlLiAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIGZpbGUgcGF0aCBvciBjb250ZW50LiAqL1xuICAgIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGFuIEhUVFAgcmVxdWVzdCwgbWlycm9yaW5nIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIHVuZGVybHlpbmcgSmF2YSBjbGllbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucyB7XG4gICAgZXhwZWN0Q29udGludWVFbmFibGVkPzogYm9vbGVhbjtcbiAgICBwcm94eUhvc3Q/OiBzdHJpbmc7XG4gICAgcHJveHlQb3J0PzogbnVtYmVyO1xuICAgIGNvb2tpZVNwZWM/OiBzdHJpbmc7XG4gICAgcmVkaXJlY3RzRW5hYmxlZD86IGJvb2xlYW47XG4gICAgcmVsYXRpdmVSZWRpcmVjdHNBbGxvd2VkPzogYm9vbGVhbjtcbiAgICBjaXJjdWxhclJlZGlyZWN0c0FsbG93ZWQ/OiBib29sZWFuO1xuICAgIG1heFJlZGlyZWN0cz86IG51bWJlcjtcbiAgICBhdXRoZW50aWNhdGlvbkVuYWJsZWQ/OiBib29sZWFuO1xuICAgIHRhcmdldFByZWZlcnJlZEF1dGhTY2hlbWVzPzogc3RyaW5nW107XG4gICAgcHJveHlQcmVmZXJyZWRBdXRoU2NoZW1lcz86IHN0cmluZ1tdO1xuICAgIGNvbm5lY3Rpb25SZXF1ZXN0VGltZW91dD86IG51bWJlcjtcbiAgICBjb25uZWN0VGltZW91dD86IG51bWJlcjtcbiAgICBzb2NrZXRUaW1lb3V0PzogbnVtYmVyO1xuICAgIGNvbnRlbnRDb21wcmVzc2lvbkVuYWJsZWQ/OiBib29sZWFuO1xuICAgIHNzbFRydXN0QWxsRW5hYmxlZD86IGJvb2xlYW47XG4gICAgZGF0YT86IGFueVtdO1xuICAgIHRleHQ/OiBzdHJpbmc7XG4gICAgZmlsZXM/OiBIdHRwQ2xpZW50RmlsZVtdO1xuICAgIGNoYXJhY3RlckVuY29kaW5nPzogc3RyaW5nO1xuICAgIGNoYXJhY3RlckVuY29kaW5nRW5hYmxlZD86IGJvb2xlYW47XG4gICAgY29udGVudFR5cGU/OiBzdHJpbmc7XG4gICAgaGVhZGVycz86IEh0dHBDbGllbnRIZWFkZXJbXTtcbiAgICBwYXJhbXM/OiBIdHRwQ2xpZW50UGFyYW1bXTtcbiAgICBiaW5hcnk/OiBib29sZWFuO1xuICAgIGNvbnRleHQ/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKiogVGhlIHN0cnVjdHVyZSBvZiB0aGUgcmVzcG9uc2UgcmV0dXJuZWQgYnkgdGhlIEh0dHBDbGllbnQgbWV0aG9kcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENsaWVudFJlc3BvbnNlIHtcbiAgICAvKiogVGhlIEhUVFAgc3RhdHVzIGNvZGUgKGUuZy4sIDIwMCwgNDA0LCA1MDApLiAqL1xuICAgIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICAvKiogVGhlIHN0YXR1cyBtZXNzYWdlIHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXIgKGUuZy4sICdPSycsICdOb3QgRm91bmQnKS4gKi9cbiAgICBzdGF0dXNNZXNzYWdlOiBzdHJpbmc7XG4gICAgLyoqIFJlc3BvbnNlIGJvZHkgY29udGVudCBhcyBhbiBhcnJheSBvZiBieXRlcyAoaWYgcmVxdWVzdGVkIGFzIGJpbmFyeSkuICovXG4gICAgZGF0YTogYW55W107XG4gICAgLyoqIFJlc3BvbnNlIGJvZHkgY29udGVudCBhcyBhIGRlY29kZWQgc3RyaW5nLiAqL1xuICAgIHRleHQ6IHN0cmluZztcbiAgICAvKiogVGhlIHByb3RvY29sIHVzZWQgKGUuZy4sICdIVFRQLzEuMScpLiAqL1xuICAgIHByb3RvY29sOiBzdHJpbmc7XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgcmVzcG9uc2Ugd2FzIHByb2Nlc3NlZCBhcyBiaW5hcnkgZGF0YS4gKi9cbiAgICBiaW5hcnk6IGJvb2xlYW47XG4gICAgLyoqIEFycmF5IG9mIGFsbCBoZWFkZXJzIHJlY2VpdmVkIGluIHRoZSByZXNwb25zZS4gKi9cbiAgICBoZWFkZXJzOiBIdHRwQ2xpZW50SGVhZGVyW11cbn1cblxuLy8gLS0tIEFzeW5jaHJvbm91cyBDbGllbnQgSW50ZXJmYWNlcyAtLS1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSBjYWxsYmFjayBzdHJ1Y3R1cmUgZm9yIGFzeW5jaHJvbm91cyByZXF1ZXN0cy5cbiAqIE5vdGU6IENhbGxiYWNrcyBhcmUgcHJvdmlkZWQgYXMgc3RyaW5ncyBjb250YWluaW5nIGV4ZWN1dGFibGUgSmF2YVNjcmlwdCBjb2RlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDbGllbnRBc3luY0NvbmZpZyB7XG4gICAgLyoqXG4gICAgICogTWFuZGF0b3J5IHN1Y2Nlc3MgY2FsbGJhY2sgYXMgYSAqKnN0cmluZyBvZiBKYXZhU2NyaXB0IGNvZGUqKi5cbiAgICAgKiBJdCB3aWxsIGJlIGV4ZWN1dGVkIHdpdGggc2lnbmF0dXJlOiBgKHJlc3BvbnNlOiBIdHRwQ2xpZW50UmVzcG9uc2UsIGNvbnRleHQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0pID0+IHZvaWRgXG4gICAgICovXG4gICAgc3VjY2Vzczogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIGVycm9yIGNhbGxiYWNrIGFzIGEgKipzdHJpbmcgb2YgSmF2YVNjcmlwdCBjb2RlKiouXG4gICAgICogSXQgd2lsbCBiZSBleGVjdXRlZCB3aXRoIHNpZ25hdHVyZTogYChleGNlcHRpb246IGFueSkgPT4gdm9pZGBcbiAgICAgKi9cbiAgICBlcnJvcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBjYW5jZWwgY2FsbGJhY2sgYXMgYSAqKnN0cmluZyBvZiBKYXZhU2NyaXB0IGNvZGUqKi5cbiAgICAgKiBJdCB3aWxsIGJlIGV4ZWN1dGVkIHdpdGggc2lnbmF0dXJlOiBgKCkgPT4gdm9pZGBcbiAgICAgKi9cbiAgICBjYW5jZWw/OiBzdHJpbmc7XG59XG5cblxuLy8gLS0tIEphdmEgVHlwZSBJbXBvcnRzIChDcnVjaWFsIGZvciBKVk0gaW50ZWdyYXRpb24pIC0tLVxuXG4vKiogSW1wb3J0cyB0aGUgbmF0aXZlIEphdmEgY2xhc3MgcmVzcG9uc2libGUgZm9yIGFzeW5jaHJvbm91cyBIVFRQIGV4ZWN1dGlvbi4gKi9cbmNvbnN0IEh0dHBDbGllbnRBc3luY0ZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5odHRwLkh0dHBDbGllbnRBc3luY0ZhY2FkZVwiKTtcblxuLyoqIEltcG9ydHMgdGhlIG5hdGl2ZSBKYXZhIGNsYXNzIGZvciByZXRyaWV2aW5nIFNwcmluZy1tYW5hZ2VkIGJlYW5zLiAqL1xuY29uc3QgU3ByaW5nQmVhblByb3ZpZGVyID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuc3ByaW5nLlNwcmluZ0JlYW5Qcm92aWRlclwiKTtcblxuLyoqIFJldHJpZXZlcyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBhc3luY2hyb25vdXMgSFRUUCBjbGllbnQgZnJvbSB0aGUgU3ByaW5nIGNvbnRleHQuICovXG5jb25zdCBodHRwQ2xpZW50ID0gU3ByaW5nQmVhblByb3ZpZGVyLmdldEJlYW4oSHR0cENsaWVudEFzeW5jRmFjYWRlLmNsYXNzKTtcblxuXG4vKipcbiAqIFRoZSBhc3luY2hyb25vdXMgSFRUUCBjbGllbnQgY2xhc3MuIEFsbCByZXF1ZXN0IG1ldGhvZHMgcmV0dXJuIGltbWVkaWF0ZWx5XG4gKiBhbmQgZXhlY3V0ZSBjYWxsYmFja3MgdXBvbiBjb21wbGV0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgSHR0cEFzeW5jQ2xpZW50IHtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIEdFVCByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgKGUuZy4sIGhlYWRlcnMsIGJvZHksIHBhcmFtcykuXG4gICAgICovXG5cdGdldEFzeW5jKHVybDogc3RyaW5nLCBjb25maWc6IEh0dHBDbGllbnRBc3luY0NvbmZpZywgb3B0aW9ucz86IEh0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld1VybCA9IGJ1aWxkVXJsKHVybCwgb3B0aW9ucyk7XG5cdFx0Y29uc3QgY2FsbGJhY2sgPSBjcmVhdGVIdHRwUmVzcG9uc2VDYWxsYmFjayhcblx0XHRcdGh0dHBDbGllbnQsXG5cdFx0XHRjb25maWcuc3VjY2Vzcyxcblx0XHRcdGNvbmZpZy5lcnJvcixcblx0XHRcdGNvbmZpZy5jYW5jZWxcblx0XHQpO1xuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHRodHRwQ2xpZW50LmdldEFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5nZXRBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIFBPU1QgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gdXJsIFRoZSB0YXJnZXQgVVJMLlxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNhbGxiYWNrIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFJlcXVlc3QgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgICAqL1xuXHRwb3N0QXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQucG9zdEFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5wb3N0QXN5bmMobmV3VXJsLCBKU09OLnN0cmluZ2lmeSh7fSksIGNhbGxiYWNrKTtcblx0XHR9XG5cdH07XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhbiBhc3luY2hyb25vdXMgSFRUUCBQVVQgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gdXJsIFRoZSB0YXJnZXQgVVJMLlxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNhbGxiYWNrIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFJlcXVlc3QgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgICAqL1xuXHRwdXRBc3luYyh1cmw6IHN0cmluZywgY29uZmlnOiBIdHRwQ2xpZW50QXN5bmNDb25maWcsIG9wdGlvbnM/OiBIdHRwQ2xpZW50UmVxdWVzdE9wdGlvbnMpOiB2b2lkIHtcblx0XHRjb25zdCBuZXdVcmwgPSBidWlsZFVybCh1cmwsIG9wdGlvbnMpO1xuXHRcdGNvbnN0IGNhbGxiYWNrID0gY3JlYXRlSHR0cFJlc3BvbnNlQ2FsbGJhY2soXG5cdFx0XHRodHRwQ2xpZW50LFxuXHRcdFx0Y29uZmlnLnN1Y2Nlc3MsXG5cdFx0XHRjb25maWcuZXJyb3IsXG5cdFx0XHRjb25maWcuY2FuY2VsXG5cdFx0KTtcblx0XHRpZiAob3B0aW9ucykge1xuXHRcdFx0aHR0cENsaWVudC5wdXRBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCBjYWxsYmFjayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGh0dHBDbGllbnQucHV0QXN5bmMobmV3VXJsLCBKU09OLnN0cmluZ2lmeSh7fSksIGNhbGxiYWNrKTtcblx0XHR9XG5cdH07XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhbiBhc3luY2hyb25vdXMgSFRUUCBQQVRDSCByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAgICovXG5cdHBhdGNoQXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQucGF0Y2hBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCBjYWxsYmFjayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGh0dHBDbGllbnQucGF0Y2hBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIERFTEVURSByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAgICovXG5cdGRlbGV0ZUFzeW5jKHVybDogc3RyaW5nLCBjb25maWc6IEh0dHBDbGllbnRBc3luY0NvbmZpZywgb3B0aW9ucz86IEh0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld1VybCA9IGJ1aWxkVXJsKHVybCwgb3B0aW9ucyk7XG5cdFx0Y29uc3QgY2FsbGJhY2sgPSBjcmVhdGVIdHRwUmVzcG9uc2VDYWxsYmFjayhcblx0XHRcdGh0dHBDbGllbnQsXG5cdFx0XHRjb25maWcuc3VjY2Vzcyxcblx0XHRcdGNvbmZpZy5lcnJvcixcblx0XHRcdGNvbmZpZy5jYW5jZWxcblx0XHQpO1xuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHRodHRwQ2xpZW50LmRlbGV0ZUFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5kZWxldGVBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIEhFQUQgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gdXJsIFRoZSB0YXJnZXQgVVJMLlxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNhbGxiYWNrIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFJlcXVlc3QgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgICAqL1xuXHRoZWFkQXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQuaGVhZEFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5oZWFkQXN5bmMobmV3VXJsLCBKU09OLnN0cmluZ2lmeSh7fSksIGNhbGxiYWNrKTtcblx0XHR9XG5cdH07XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhbiBhc3luY2hyb25vdXMgSFRUUCBUUkFDRSByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAgICovXG5cdHRyYWNlQXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQudHJhY2VBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCBjYWxsYmFjayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGh0dHBDbGllbnQudHJhY2VBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYXRlcyB0aGUgZXhlY3V0aW9uIG9mIHF1ZXVlZCBhc3luY2hyb25vdXMgcmVxdWVzdHMgKGRlcGVuZGluZyBvbiB0aGUgdW5kZXJseWluZyBKYXZhIGNsaWVudCdzIHRocmVhZGluZyBtb2RlbCkuXG4gICAgICovXG5cdGV4ZWN1dGUoKTogdm9pZCB7XG5cdFx0aHR0cENsaWVudC5leGVjdXRlKCk7XG5cdH07XG59XG5cbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byByZXRyaWV2ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYXN5bmNocm9ub3VzIGNsaWVudC5cbiAqIEByZXR1cm5zIEEgbmV3IGluc3RhbmNlIG9mIEh0dHBBc3luY0NsaWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluc3RhbmNlKCk6IEh0dHBBc3luY0NsaWVudCB7XG5cdHJldHVybiBuZXcgSHR0cEFzeW5jQ2xpZW50KCk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuYXRpdmUgSmF2YSBjYWxsYmFjayBvYmplY3QgdGhhdCB3cmFwcyB0aGUgSmF2YVNjcmlwdCBzdWNjZXNzLCBlcnJvciwgYW5kIGNhbmNlbCBjYWxsYmFja3MuXG4gKiBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIHVuZGVybHlpbmcgSmF2YSBIVFRQIGNsaWVudCBpbnN0YW5jZSB0byBnZW5lcmF0ZSB0aGUgZmluYWwgY2FsbGJhY2sgb2JqZWN0LlxuICogQHBhcmFtIGh0dHBDbGllbnQgVGhlIEphdmEgSHR0cENsaWVudEFzeW5jRmFjYWRlIGluc3RhbmNlLlxuICogQHBhcmFtIHN1Y2Nlc3NDYWxsYmFjayBKUyBjb2RlIHN0cmluZyBmb3Igc3VjY2Vzcy5cbiAqIEBwYXJhbSBlcnJvckNhbGxiYWNrIEpTIGNvZGUgc3RyaW5nIGZvciBlcnJvci5cbiAqIEBwYXJhbSBjYW5jZWxDYWxsYmFjayBKUyBjb2RlIHN0cmluZyBmb3IgY2FuY2VsLlxuICogQHJldHVybnMgQSBKYXZhIGNhbGxiYWNrIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlSHR0cFJlc3BvbnNlQ2FsbGJhY2soaHR0cENsaWVudDogYW55LCBzdWNjZXNzQ2FsbGJhY2s6IHN0cmluZywgZXJyb3JDYWxsYmFjaz86IHN0cmluZywgY2FuY2VsQ2FsbGJhY2s/OiBzdHJpbmcpOiBhbnkge1xuXHRyZXR1cm4gaHR0cENsaWVudC5jcmVhdGVDYWxsYmFjayhcblx0XHRjcmVhdGVTdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKSxcblx0XHRjcmVhdGVFcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spLFxuXHRcdGNyZWF0ZUNhbmNlbENhbGxiYWNrKGNhbmNlbENhbGxiYWNrKVxuXHQpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgcmF3IEphdmFTY3JpcHQgc3RyaW5nIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgSlZNIGVudmlyb25tZW50IHVwb24gc3VjY2Vzc2Z1bCByZXF1ZXN0IGNvbXBsZXRpb24uXG4gKiBUaGlzIHN0cmluZyBoYW5kbGVzIHBhcnNpbmcgdGhlIEphdmEgSFRUUCByZXNwb25zZSBvYmplY3QgYW5kIGV4ZWN1dGluZyB0aGUgdXNlcidzIGRlZmluZWQgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiBAcGFyYW0gY2FsbGJhY2sgVGhlIHVzZXItcHJvdmlkZWQgc3VjY2VzcyBjYWxsYmFjayBmdW5jdGlvbiBjb2RlIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBjb21wbGV4IEphdmFTY3JpcHQgc3RyaW5nIGZvciB0aGUgc3VjY2VzcyBoYW5kbGVyLlxuICovXG5mdW5jdGlvbiBjcmVhdGVTdWNjZXNzQ2FsbGJhY2soY2FsbGJhY2s6IHN0cmluZyk6IHN0cmluZyB7XG5cdC8vIE5vdGU6IFRoaXMgc3RyaW5nIHVzZXMgSmF2YSB1dGlsaXR5IGNsYXNzZXMgKG9yZy5hcGFjaGUuY29tbW9ucy5pby5JT1V0aWxzKSBhbmQgY29udGV4dCB2YXJpYWJsZXMgXG4gICAgLy8gKF9fY29udGV4dCkgdGhhdCBhcmUgYXZhaWxhYmxlIGluIHRoZSBzcGVjaWZpYyBKVk0gZW52aXJvbm1lbnQuXG4gICAgXG4gICAgLy8gVGhlIHN0cnVjdHVyZSBtYXBzIHRoZSBKYXZhIEhUVFAgUmVzcG9uc2Ugb2JqZWN0IGludG8gdGhlIHN0YW5kYXJkIEh0dHBDbGllbnRSZXNwb25zZSBpbnRlcmZhY2UuXG5cdHJldHVybiBcIihmdW5jdGlvbihodHRwUmVzcG9uc2UsIGlzQmluYXJ5LCBjb250ZXh0KSB7XFxuXCJcblx0XHQrIFwidmFyIHJlc3BvbnNlID0ge307XFxuXCJcblx0XHQrIFwicmVzcG9uc2Uuc3RhdHVzQ29kZSA9IGh0dHBSZXNwb25zZS5nZXRTdGF0dXNMaW5lKCkuZ2V0U3RhdHVzQ29kZSgpO1xcblwiXG5cdFx0KyBcInJlc3BvbnNlLnN0YXR1c01lc3NhZ2UgPSBodHRwUmVzcG9uc2UuZ2V0U3RhdHVzTGluZSgpLmdldFJlYXNvblBocmFzZSgpO1xcblwiXG5cdFx0KyBcInJlc3BvbnNlLnByb3RvY29sID0gaHR0cFJlc3BvbnNlLmdldFByb3RvY29sVmVyc2lvbigpO1xcblwiXG5cdFx0KyBcInJlc3BvbnNlLmJpbmFyeSA9IGlzQmluYXJ5O1xcblwiXG5cblx0XHQrIFwidmFyIGhlYWRlcnMgPSBodHRwUmVzcG9uc2UuZ2V0QWxsSGVhZGVycygpO1xcblwiXG5cdFx0KyBcInJlc3BvbnNlLmhlYWRlcnMgPSBbXTtcXG5cIlxuXHRcdCsgXCJmb3IgKHZhciBpID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyBpICsrKSB7XFxuXCJcblx0XHQrIFwiICAgIHJlc3BvbnNlLmhlYWRlcnMucHVzaCh7XFxuXCJcblx0XHQrIFwiICAgICAgICBuYW1lOiBoZWFkZXJzW2ldLmdldE5hbWUoKSxcXG5cIlxuXHRcdCsgXCIgICAgICAgIHZhbHVlOiBoZWFkZXJzW2ldLmdldFZhbHVlKClcXG5cIlxuXHRcdCsgXCIgICAgfSk7XFxuXCJcblx0XHQrIFwifVxcblwiXG5cblx0XHQrIFwidmFyIGVudGl0eSA9IGh0dHBSZXNwb25zZS5nZXRFbnRpdHkoKTtcXG5cIlxuXHRcdCsgXCJpZiAoZW50aXR5KSB7XFxuXCJcblx0XHQrIFwiICAgIHZhciBpbnB1dFN0cmVhbSA9IGVudGl0eS5nZXRDb250ZW50KCk7XFxuXCJcblx0XHQrIFwiICAgIGlmIChpc0JpbmFyeSkge1xcblwiXG5cdFx0KyBcIiAgICAgICAgLy8gVXNlcyBKYXZhIElPVXRpbHMgdG8gcmVhZCBiaW5hcnkgZGF0YVxcblwiXG5cdFx0KyBcIiAgICAgICAgcmVzcG9uc2UuZGF0YSA9IG9yZy5hcGFjaGUuY29tbW9ucy5pby5JT1V0aWxzLnRvQnl0ZUFycmF5KGlucHV0U3RyZWFtKTtcXG5cIlxuXHRcdCsgXCIgICAgfSBlbHNlIHtcXG5cIlxuXHRcdCsgXCIgICAgICAgIC8vIFVzZXMgSmF2YSBJT1V0aWxzIHRvIHJlYWQgdGV4dCBkYXRhXFxuXCJcblx0XHQrIFwiICAgICAgICByZXNwb25zZS50ZXh0ID0gb3JnLmFwYWNoZS5jb21tb25zLmlvLklPVXRpbHMudG9TdHJpbmcoaW5wdXRTdHJlYW0pO1xcblwiXG5cdFx0KyBcIiAgICB9XFxuXCJcblx0XHQrIFwifVxcblwiXG5cblx0XHQrIFwiKFwiICsgY2FsbGJhY2sgKyBcIikocmVzcG9uc2UsIEpTT04ucGFyc2UoY29udGV4dCkpO1xcblwiXG5cdFx0KyBcIn0pKF9fY29udGV4dC5nZXQoJ3Jlc3BvbnNlJyksIF9fY29udGV4dC5nZXQoJ2h0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucycpLmlzQmluYXJ5KCksIF9fY29udGV4dC5nZXQoJ2h0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucycpLmdldENvbnRleHQoKSk7XFxuXCI7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSByYXcgSmF2YVNjcmlwdCBzdHJpbmcgZm9yIHRoZSBlcnJvciBjYWxsYmFjay5cbiAqIEBwYXJhbSBjYWxsYmFjayBUaGUgdXNlci1wcm92aWRlZCBlcnJvciBjYWxsYmFjayBmdW5jdGlvbiBjb2RlIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBKYXZhU2NyaXB0IHN0cmluZyBmb3IgdGhlIGVycm9yIGhhbmRsZXIsIG9yIHVuZGVmaW5lZC5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRXJyb3JDYWxsYmFjayhjYWxsYmFjaz86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmIChjYWxsYmFjaykge1xuXHRcdHJldHVybiBcIihcIiArIGNhbGxiYWNrICsgXCIpKF9fY29udGV4dC5nZXQoJ2V4Y2VwdGlvbicpKVwiO1xuXHR9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIHJhdyBKYXZhU2NyaXB0IHN0cmluZyBmb3IgdGhlIGNhbmNlbCBjYWxsYmFjay5cbiAqIEBwYXJhbSBjYWxsYmFjayBUaGUgdXNlci1wcm92aWRlZCBjYW5jZWwgY2FsbGJhY2sgZnVuY3Rpb24gY29kZSBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgSmF2YVNjcmlwdCBzdHJpbmcgZm9yIHRoZSBjYW5jZWwgaGFuZGxlciwgb3IgdW5kZWZpbmVkLlxuICovXG5mdW5jdGlvbiBjcmVhdGVDYW5jZWxDYWxsYmFjayhjYWxsYmFjaz86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmIChjYWxsYmFjaykge1xuXHRcdHJldHVybiBcIihcIiArIGNhbGxiYWNrICsgXCIpKClcIjtcblx0fVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBmaW5hbCBVUkwgYnkgYXBwZW5kaW5nIGFsbCBxdWVyeSBwYXJhbWV0ZXJzIGRlZmluZWQgaW4gb3B0aW9ucy5wYXJhbXMuXG4gKiBUaGUgcGFyYW1ldGVycyBhcmUgbm90IHJlbW92ZWQgZnJvbSB0aGUgb3B0aW9ucyBvYmplY3QgYXMgdGhleSBhcmUgZm9yIHRoZSBzeW5jaHJvbm91cyBjbGllbnQsXG4gKiBzaW5jZSB0aGUgb3B0aW9ucyBhcmUgcGFzc2VkIGFzIEpTT04gc3RyaW5nIHRvIHRoZSBmYWNhZGUgYW55d2F5LlxuICogQHBhcmFtIHVybCBUaGUgYmFzZSBVUkwuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgcmVxdWVzdCBvcHRpb25zIHdoaWNoIG1heSBjb250YWluIGBwYXJhbXNgLlxuICogQHJldHVybnMgVGhlIFVSTCB3aXRoIGFwcGVuZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkVXJsKHVybDogc3RyaW5nLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogc3RyaW5nIHtcblx0aWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCB8fCBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMucGFyYW1zID09PSB1bmRlZmluZWQgfHwgb3B0aW9ucy5wYXJhbXMgPT09IG51bGwgfHwgb3B0aW9ucy5wYXJhbXMubGVuZ3RoID09PSAwKSB7XG5cdFx0cmV0dXJuIHVybDtcblx0fVxuXHRsZXQgbmV3VXJsID0gdXJsO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMucGFyYW1zLmxlbmd0aDsgaSArKykge1xuICAgICAgICBjb25zdCBwYXJhbSA9IG9wdGlvbnMucGFyYW1zW2ldO1xuXHRcdGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiBVUkwgYWxyZWFkeSBjb250YWlucyAnPycgYW5kIHVzZSAnJicgaWYgc28gKGltcHJvdmVzIHJvYnVzdG5lc3MpXG4gICAgICAgICAgICBpZiAobmV3VXJsLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgICAgICBuZXdVcmwgKz0gJyYnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdVcmwgKz0gJz8nO1xuICAgICAgICAgICAgfVxuXHRcdFx0bmV3VXJsICs9IHBhcmFtLm5hbWUgKyAnPScgKyBwYXJhbS52YWx1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bmV3VXJsICs9ICcmJyArIHBhcmFtLm5hbWUgKyAnPScgKyBwYXJhbS52YWx1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG5ld1VybDtcbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdC8vIEB0cy1pZ25vcmVcblx0bW9kdWxlLmV4cG9ydHMgPSB7IEh0dHBBc3luY0NsaWVudCwgZ2V0SW5zdGFuY2UgfTtcbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXVJQSxNQUFNLHdCQUF3QixLQUFLLEtBQUssaUVBQWlFO0FBR3pHLE1BQU0scUJBQXFCLEtBQUssS0FBSyw0REFBNEQ7QUFHakcsTUFBTSxhQUFhLG1CQUFtQixRQUFRLHNCQUFzQixLQUFLO0FBT2xFLE1BQU0sZ0JBQWdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRNUIsU0FBUyxLQUFhLFFBQStCLFNBQTBDO0FBQzlGLFVBQU0sU0FBUyxTQUFTLEtBQUssT0FBTztBQUNwQyxVQUFNLFdBQVc7QUFBQSxNQUNoQjtBQUFBLE1BQ0EsT0FBTztBQUFBLE1BQ1AsT0FBTztBQUFBLE1BQ1AsT0FBTztBQUFBLElBQ1I7QUFDQSxRQUFJLFNBQVM7QUFDWixpQkFBVyxTQUFTLFFBQVEsS0FBSyxVQUFVLE9BQU8sR0FBRyxRQUFRO0FBQUEsSUFDOUQsT0FBTztBQUNOLGlCQUFXLFNBQVMsUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDLEdBQUcsUUFBUTtBQUFBLElBQ3pEO0FBQUEsRUFDRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUUEsVUFBVSxLQUFhLFFBQStCLFNBQTBDO0FBQy9GLFVBQU0s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QUNOLGlCQUFXLFdBQVcsUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDLEdBQUcsUUFBUTtBQUFBLElBQzNEO0FBQUEsRUFDRDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsVUFBZ0I7QUFDZixlQUFXLFFBQVE7QUFBQSxFQUNwQjtBQUNEO0FBTU8sU0FBUyxjQUErQjtBQUM5QyxTQUFPLElBQUksZ0JBQWdCO0FBQzVCO0FBQUM7QUFXRCxTQUFTLDJCQUEyQkEsYUFBaUIsaUJBQXlCLGVBQXdCLGdCQUE4QjtBQUNuSSxTQUFPQSxZQUFXO0FBQUEsSUFDakIsc0JBQXNCLGVBQWU7QUFBQSxJQUNyQyxvQkFBb0IsYUFBYTtBQUFBLElBQ2pDLHFCQUFxQixjQUFjO0FBQUEsRUFDcEM7QUFDRDtBQVFBLFNBQVMsc0JBQXNCLFVBQTBCO0FBS3hELFNBQU8sbTZCQTRCRSxXQUFXO0FBRXJCO0FBT0EsU0FBUyxvQkFBb0IsVUFBdUM7QUFDbkUsTUFBSSxVQUFVO0FBQ2IsV0FBTyxNQUFNLFdBQVc7QUFBQSxFQUN6QjtBQUNHLFNBQU87QUFDWDtBQU9BLFNBQVMscUJBQXFCLFVBQXVDO0FBQ3BFLE1BQUksVUFBVTtBQUNiLFdBQU8sTUFBTSxXQUFXO0FBQUEsRUFDekI7QUFDRyxTQUFPO0FBQ1g7QUFVQSxTQUFTLFNBQVMsS0FBYSxTQUE0QztBQUMxRSxNQUFJLFlBQVksVUFBYSxZQUFZLFFBQVEsUUFBUSxXQUFXLFVBQWEsUUFBUSxXQUFXLFFBQVEsUUFBUSxPQUFPLFdBQVcsR0FBRztBQUN4SSxXQUFPO0FBQUEsRUFDUjtBQUNBLE1BQUksU0FBUztBQUNiLFdBQVMsSUFBSSxHQUFHLElBQUksUUFBUSxPQUFPLFFBQVEsS0FBTTtBQUMxQyxVQUFNLFFBQVEsUUFBUSxPQUFPLENBQUM7QUFDcEMsUUFBSSxNQUFNLEdBQUc7QUFFSCxVQUFJLE9BQU8sU0FBUyxHQUFHLEdBQUc7QUFDdEIsa0JBQVU7QUFBQSxNQUNkLE9BQU87QUFDSCxrQkFBVTtBQUFBLE1BQ2Q7QUFDVCxnQkFBVSxNQUFNLE9BQU8sTUFBTSxNQUFNO0FBQUEsSUFDcEMsT0FBTztBQUNOLGdCQUFVLE1BQU0sTUFBTSxPQUFPLE1BQU0sTUFBTTtBQUFBLElBQzFDO0FBQUEsRUFDRDtBQUNBLFNBQU87QUFDUjtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFbEMsU0FBTyxVQUFVLEVBQUUsaUJBQWlCLFlBQVk7QUFDakQ7IiwKICAibmFtZXMiOiBbImh0dHBDbGllbnQiXQp9Cg==
224
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2h0dHAvY2xpZW50LWFzeW5jLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgaHR0cC9jbGllbnQtYXN5bmNcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9odHRwXG4gKiBAbmFtZSBIdHRwQXN5bmNDbGllbnRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgSHR0cEFzeW5jQ2xpZW50IGNsYXNzIHByb3ZpZGVzIGEgSmF2YVNjcmlwdC9UeXBlU2NyaXB0IHdyYXBwZXIgKEZhY2FkZSkgZm9yIG1ha2luZyBhc3luY2hyb25vdXMgSFRUUCByZXF1ZXN0cyB1c2luZyB0aGUgdW5kZXJseWluZyBKYXZhIEhUVFAgY2xpZW50LiBJdCBhbGxvd3MgZGV2ZWxvcGVycyB0byBwZXJmb3JtIG5vbi1ibG9ja2luZyBIVFRQIG9wZXJhdGlvbnMgYnkgZGVmaW5pbmcgc3VjY2VzcywgZXJyb3IsIGFuZCBjYW5jZWwgY2FsbGJhY2tzIGFzIHN0cmluZ3Mgb2YgZXhlY3V0YWJsZSBKYXZhU2NyaXB0IGNvZGUuIFRoZSBjbGFzcyBzdXBwb3J0cyBhbGwgc3RhbmRhcmQgSFRUUCBtZXRob2RzIChHRVQsIFBPU1QsIFBVVCwgUEFUQ0gsIERFTEVURSwgSEVBRCwgVFJBQ0UpIGFuZCBhY2NlcHRzIGEgY29tcHJlaGVuc2l2ZSBzZXQgb2YgcmVxdWVzdCBvcHRpb25zIHRoYXQgbWlycm9yIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIEphdmEgY2xpZW50LlxuICogXG4gKiAjIyMgS2V5IEZlYXR1cmVzOlxuICogLSAqKkFzeW5jaHJvbm91cyBFeGVjdXRpb24qKjogQWxsIEhUVFAgbWV0aG9kcyByZXR1cm4gaW1tZWRpYXRlbHksIHdpdGggY2FsbGJhY2tzIGV4ZWN1dGVkIHVwb24gY29tcGxldGlvbi5cbiAqIC0gKipDb21wcmVoZW5zaXZlIFJlcXVlc3QgT3B0aW9ucyoqOiBTdXBwb3J0cyBhIHdpZGUgcmFuZ2Ugb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBmaW5lLXR1bmluZyBIVFRQIHJlcXVlc3RzLlxuICogLSAqKkNhbGxiYWNrIEZsZXhpYmlsaXR5Kio6IENhbGxiYWNrcyBhcmUgZGVmaW5lZCBhcyBzdHJpbmdzIG9mIEphdmFTY3JpcHQgY29kZSwgYWxsb3dpbmcgZm9yIGR5bmFtaWMgZXhlY3V0aW9uIGluIHRoZSBKVk0gZW52aXJvbm1lbnQuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXM6XG4gKiAtICoqTm9uLWJsb2NraW5nIEFQSSBDYWxscyoqOiBJZGVhbCBmb3Igc2NlbmFyaW9zIHdoZXJlIHlvdSB3YW50IHRvIHBlcmZvcm0gSFRUUCByZXF1ZXN0cyB3aXRob3V0IGJsb2NraW5nIHRoZSBtYWluIGV4ZWN1dGlvbiB0aHJlYWQuXG4gKiAtICoqQ29tcGxleCBSZXF1ZXN0IENvbmZpZ3VyYXRpb25zKio6IFN1aXRhYmxlIGZvciBhZHZhbmNlZCB1c2UgY2FzZXMgdGhhdCByZXF1aXJlIGRldGFpbGVkIHJlcXVlc3QgY29uZmlndXJhdGlvbnMgYW5kIGhhbmRsaW5nLlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBIdHRwQXN5bmNDbGllbnQgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2h0dHBcIjtcbiAqIFxuICogY29uc3QgY2xpZW50ID0gSHR0cEFzeW5jQ2xpZW50LmdldEluc3RhbmNlKCk7XG4gKiBcbiAqIGNsaWVudC5nZXRBc3luYyhcImh0dHBzOi8vYXBpLmV4YW1wbGUuY29tL2RhdGFcIiwge1xuICogICBzdWNjZXNzOiBcImZ1bmN0aW9uKHJlc3BvbnNlKSB7IGNvbnNvbGUubG9nKCdTdWNjZXNzOicsIHJlc3BvbnNlKTsgfVwiLFxuICogICBlcnJvcjogXCJmdW5jdGlvbihlcnJvcikgeyBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnJvcik7IH1cIlxuICogfSwge1xuICogICBoZWFkZXJzOiBbeyBuYW1lOiAnQXV0aG9yaXphdGlvbicsIHZhbHVlOiAnQmVhcmVyIHRva2VuJyB9XSxcbiAqICAgcGFyYW1zOiBbeyBuYW1lOiAncXVlcnknLCB2YWx1ZTogJ3NlYXJjaCB0ZXJtJyB9XVxuICogfSk7XG4gKiBgYGBcbiAqL1xuXG4vLyAtLS0gU2hhcmVkIEludGVyZmFjZXMgKGZvciBkb2N1bWVudGF0aW9uIGNsYXJpdHkpIC0tLVxuXG4vKiogRGVmaW5lcyBhIHNpbmdsZSBIVFRQIGhlYWRlciwgdXNlZCBmb3IgYm90aCByZXF1ZXN0IGFuZCByZXNwb25zZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENsaWVudEhlYWRlciB7XG4gICAgLyoqIFRoZSBuYW1lIG9mIHRoZSBoZWFkZXIgKGUuZy4sICdDb250ZW50LVR5cGUnLCAnQXV0aG9yaXphdGlvbicpLiAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIuICovXG4gICAgdmFsdWU6IHN0cmluZztcbn1cblxuLyoqIERlZmluZXMgYSBxdWVyeSBwYXJhbWV0ZXIgdGhhdCB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBVUkwuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDbGllbnRQYXJhbSB7XG4gICAgLyoqIFRoZSBuYW1lIG9mIHRoZSBVUkwgcXVlcnkgcGFyYW1ldGVyIChlLmcuLCAnaWQnKS4gKi9cbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLyoqIFRoZSB2YWx1ZSBvZiB0aGUgVVJMIHF1ZXJ5IHBhcmFtZXRlci4gKi9cbiAgICB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKiogRGVmaW5lcyBhIGZpbGUgdG8gYmUgaW5jbHVkZWQgaW4gYSBtdWx0aS1wYXJ0IGZvcm0gZGF0YSByZXF1ZXN0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwQ2xpZW50RmlsZSB7XG4gICAgLyoqIFRoZSBmb3JtIGZpZWxkIG5hbWUgZm9yIHRoZSBmaWxlLiAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIGZpbGUgcGF0aCBvciBjb250ZW50LiAqL1xuICAgIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGFuIEhUVFAgcmVxdWVzdCwgbWlycm9yaW5nIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIHVuZGVybHlpbmcgSmF2YSBjbGllbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucyB7XG4gICAgZXhwZWN0Q29udGludWVFbmFibGVkPzogYm9vbGVhbjtcbiAgICBwcm94eUhvc3Q/OiBzdHJpbmc7XG4gICAgcHJveHlQb3J0PzogbnVtYmVyO1xuICAgIGNvb2tpZVNwZWM/OiBzdHJpbmc7XG4gICAgcmVkaXJlY3RzRW5hYmxlZD86IGJvb2xlYW47XG4gICAgcmVsYXRpdmVSZWRpcmVjdHNBbGxvd2VkPzogYm9vbGVhbjtcbiAgICBjaXJjdWxhclJlZGlyZWN0c0FsbG93ZWQ/OiBib29sZWFuO1xuICAgIG1heFJlZGlyZWN0cz86IG51bWJlcjtcbiAgICBhdXRoZW50aWNhdGlvbkVuYWJsZWQ/OiBib29sZWFuO1xuICAgIHRhcmdldFByZWZlcnJlZEF1dGhTY2hlbWVzPzogc3RyaW5nW107XG4gICAgcHJveHlQcmVmZXJyZWRBdXRoU2NoZW1lcz86IHN0cmluZ1tdO1xuICAgIGNvbm5lY3Rpb25SZXF1ZXN0VGltZW91dD86IG51bWJlcjtcbiAgICBjb25uZWN0VGltZW91dD86IG51bWJlcjtcbiAgICBzb2NrZXRUaW1lb3V0PzogbnVtYmVyO1xuICAgIGNvbnRlbnRDb21wcmVzc2lvbkVuYWJsZWQ/OiBib29sZWFuO1xuICAgIHNzbFRydXN0QWxsRW5hYmxlZD86IGJvb2xlYW47XG4gICAgZGF0YT86IGFueVtdO1xuICAgIHRleHQ/OiBzdHJpbmc7XG4gICAgZmlsZXM/OiBIdHRwQ2xpZW50RmlsZVtdO1xuICAgIGNoYXJhY3RlckVuY29kaW5nPzogc3RyaW5nO1xuICAgIGNoYXJhY3RlckVuY29kaW5nRW5hYmxlZD86IGJvb2xlYW47XG4gICAgY29udGVudFR5cGU/OiBzdHJpbmc7XG4gICAgaGVhZGVycz86IEh0dHBDbGllbnRIZWFkZXJbXTtcbiAgICBwYXJhbXM/OiBIdHRwQ2xpZW50UGFyYW1bXTtcbiAgICBiaW5hcnk/OiBib29sZWFuO1xuICAgIGNvbnRleHQ/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKiogVGhlIHN0cnVjdHVyZSBvZiB0aGUgcmVzcG9uc2UgcmV0dXJuZWQgYnkgdGhlIEh0dHBDbGllbnQgbWV0aG9kcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENsaWVudFJlc3BvbnNlIHtcbiAgICAvKiogVGhlIEhUVFAgc3RhdHVzIGNvZGUgKGUuZy4sIDIwMCwgNDA0LCA1MDApLiAqL1xuICAgIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICAvKiogVGhlIHN0YXR1cyBtZXNzYWdlIHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXIgKGUuZy4sICdPSycsICdOb3QgRm91bmQnKS4gKi9cbiAgICBzdGF0dXNNZXNzYWdlOiBzdHJpbmc7XG4gICAgLyoqIFJlc3BvbnNlIGJvZHkgY29udGVudCBhcyBhbiBhcnJheSBvZiBieXRlcyAoaWYgcmVxdWVzdGVkIGFzIGJpbmFyeSkuICovXG4gICAgZGF0YTogYW55W107XG4gICAgLyoqIFJlc3BvbnNlIGJvZHkgY29udGVudCBhcyBhIGRlY29kZWQgc3RyaW5nLiAqL1xuICAgIHRleHQ6IHN0cmluZztcbiAgICAvKiogVGhlIHByb3RvY29sIHVzZWQgKGUuZy4sICdIVFRQLzEuMScpLiAqL1xuICAgIHByb3RvY29sOiBzdHJpbmc7XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgcmVzcG9uc2Ugd2FzIHByb2Nlc3NlZCBhcyBiaW5hcnkgZGF0YS4gKi9cbiAgICBiaW5hcnk6IGJvb2xlYW47XG4gICAgLyoqIEFycmF5IG9mIGFsbCBoZWFkZXJzIHJlY2VpdmVkIGluIHRoZSByZXNwb25zZS4gKi9cbiAgICBoZWFkZXJzOiBIdHRwQ2xpZW50SGVhZGVyW11cbn1cblxuLy8gLS0tIEFzeW5jaHJvbm91cyBDbGllbnQgSW50ZXJmYWNlcyAtLS1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSBjYWxsYmFjayBzdHJ1Y3R1cmUgZm9yIGFzeW5jaHJvbm91cyByZXF1ZXN0cy5cbiAqIE5vdGU6IENhbGxiYWNrcyBhcmUgcHJvdmlkZWQgYXMgc3RyaW5ncyBjb250YWluaW5nIGV4ZWN1dGFibGUgSmF2YVNjcmlwdCBjb2RlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDbGllbnRBc3luY0NvbmZpZyB7XG4gICAgLyoqXG4gICAgICogTWFuZGF0b3J5IHN1Y2Nlc3MgY2FsbGJhY2sgYXMgYSAqKnN0cmluZyBvZiBKYXZhU2NyaXB0IGNvZGUqKi5cbiAgICAgKiBJdCB3aWxsIGJlIGV4ZWN1dGVkIHdpdGggc2lnbmF0dXJlOiBgKHJlc3BvbnNlOiBIdHRwQ2xpZW50UmVzcG9uc2UsIGNvbnRleHQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0pID0+IHZvaWRgXG4gICAgICovXG4gICAgc3VjY2Vzczogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIGVycm9yIGNhbGxiYWNrIGFzIGEgKipzdHJpbmcgb2YgSmF2YVNjcmlwdCBjb2RlKiouXG4gICAgICogSXQgd2lsbCBiZSBleGVjdXRlZCB3aXRoIHNpZ25hdHVyZTogYChleGNlcHRpb246IGFueSkgPT4gdm9pZGBcbiAgICAgKi9cbiAgICBlcnJvcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBjYW5jZWwgY2FsbGJhY2sgYXMgYSAqKnN0cmluZyBvZiBKYXZhU2NyaXB0IGNvZGUqKi5cbiAgICAgKiBJdCB3aWxsIGJlIGV4ZWN1dGVkIHdpdGggc2lnbmF0dXJlOiBgKCkgPT4gdm9pZGBcbiAgICAgKi9cbiAgICBjYW5jZWw/OiBzdHJpbmc7XG59XG5cblxuLy8gLS0tIEphdmEgVHlwZSBJbXBvcnRzIChDcnVjaWFsIGZvciBKVk0gaW50ZWdyYXRpb24pIC0tLVxuXG4vKiogSW1wb3J0cyB0aGUgbmF0aXZlIEphdmEgY2xhc3MgcmVzcG9uc2libGUgZm9yIGFzeW5jaHJvbm91cyBIVFRQIGV4ZWN1dGlvbi4gKi9cbmNvbnN0IEh0dHBDbGllbnRBc3luY0ZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5odHRwLkh0dHBDbGllbnRBc3luY0ZhY2FkZVwiKTtcblxuLyoqIEltcG9ydHMgdGhlIG5hdGl2ZSBKYXZhIGNsYXNzIGZvciByZXRyaWV2aW5nIFNwcmluZy1tYW5hZ2VkIGJlYW5zLiAqL1xuY29uc3QgU3ByaW5nQmVhblByb3ZpZGVyID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuc3ByaW5nLlNwcmluZ0JlYW5Qcm92aWRlclwiKTtcblxuLyoqIFJldHJpZXZlcyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBhc3luY2hyb25vdXMgSFRUUCBjbGllbnQgZnJvbSB0aGUgU3ByaW5nIGNvbnRleHQuICovXG5jb25zdCBodHRwQ2xpZW50ID0gU3ByaW5nQmVhblByb3ZpZGVyLmdldEJlYW4oSHR0cENsaWVudEFzeW5jRmFjYWRlLmNsYXNzKTtcblxuXG4vKipcbiAqIFRoZSBhc3luY2hyb25vdXMgSFRUUCBjbGllbnQgY2xhc3MuIEFsbCByZXF1ZXN0IG1ldGhvZHMgcmV0dXJuIGltbWVkaWF0ZWx5XG4gKiBhbmQgZXhlY3V0ZSBjYWxsYmFja3MgdXBvbiBjb21wbGV0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgSHR0cEFzeW5jQ2xpZW50IHtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIEdFVCByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgKGUuZy4sIGhlYWRlcnMsIGJvZHksIHBhcmFtcykuXG4gICAgICovXG5cdGdldEFzeW5jKHVybDogc3RyaW5nLCBjb25maWc6IEh0dHBDbGllbnRBc3luY0NvbmZpZywgb3B0aW9ucz86IEh0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld1VybCA9IGJ1aWxkVXJsKHVybCwgb3B0aW9ucyk7XG5cdFx0Y29uc3QgY2FsbGJhY2sgPSBjcmVhdGVIdHRwUmVzcG9uc2VDYWxsYmFjayhcblx0XHRcdGh0dHBDbGllbnQsXG5cdFx0XHRjb25maWcuc3VjY2Vzcyxcblx0XHRcdGNvbmZpZy5lcnJvcixcblx0XHRcdGNvbmZpZy5jYW5jZWxcblx0XHQpO1xuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHRodHRwQ2xpZW50LmdldEFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5nZXRBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIFBPU1QgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gdXJsIFRoZSB0YXJnZXQgVVJMLlxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNhbGxiYWNrIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFJlcXVlc3QgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgICAqL1xuXHRwb3N0QXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQucG9zdEFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5wb3N0QXN5bmMobmV3VXJsLCBKU09OLnN0cmluZ2lmeSh7fSksIGNhbGxiYWNrKTtcblx0XHR9XG5cdH07XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhbiBhc3luY2hyb25vdXMgSFRUUCBQVVQgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gdXJsIFRoZSB0YXJnZXQgVVJMLlxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNhbGxiYWNrIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFJlcXVlc3QgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgICAqL1xuXHRwdXRBc3luYyh1cmw6IHN0cmluZywgY29uZmlnOiBIdHRwQ2xpZW50QXN5bmNDb25maWcsIG9wdGlvbnM/OiBIdHRwQ2xpZW50UmVxdWVzdE9wdGlvbnMpOiB2b2lkIHtcblx0XHRjb25zdCBuZXdVcmwgPSBidWlsZFVybCh1cmwsIG9wdGlvbnMpO1xuXHRcdGNvbnN0IGNhbGxiYWNrID0gY3JlYXRlSHR0cFJlc3BvbnNlQ2FsbGJhY2soXG5cdFx0XHRodHRwQ2xpZW50LFxuXHRcdFx0Y29uZmlnLnN1Y2Nlc3MsXG5cdFx0XHRjb25maWcuZXJyb3IsXG5cdFx0XHRjb25maWcuY2FuY2VsXG5cdFx0KTtcblx0XHRpZiAob3B0aW9ucykge1xuXHRcdFx0aHR0cENsaWVudC5wdXRBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCBjYWxsYmFjayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGh0dHBDbGllbnQucHV0QXN5bmMobmV3VXJsLCBKU09OLnN0cmluZ2lmeSh7fSksIGNhbGxiYWNrKTtcblx0XHR9XG5cdH07XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhbiBhc3luY2hyb25vdXMgSFRUUCBQQVRDSCByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAgICovXG5cdHBhdGNoQXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQucGF0Y2hBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCBjYWxsYmFjayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGh0dHBDbGllbnQucGF0Y2hBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIERFTEVURSByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAgICovXG5cdGRlbGV0ZUFzeW5jKHVybDogc3RyaW5nLCBjb25maWc6IEh0dHBDbGllbnRBc3luY0NvbmZpZywgb3B0aW9ucz86IEh0dHBDbGllbnRSZXF1ZXN0T3B0aW9ucyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld1VybCA9IGJ1aWxkVXJsKHVybCwgb3B0aW9ucyk7XG5cdFx0Y29uc3QgY2FsbGJhY2sgPSBjcmVhdGVIdHRwUmVzcG9uc2VDYWxsYmFjayhcblx0XHRcdGh0dHBDbGllbnQsXG5cdFx0XHRjb25maWcuc3VjY2Vzcyxcblx0XHRcdGNvbmZpZy5lcnJvcixcblx0XHRcdGNvbmZpZy5jYW5jZWxcblx0XHQpO1xuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHRodHRwQ2xpZW50LmRlbGV0ZUFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5kZWxldGVBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGFuIGFzeW5jaHJvbm91cyBIVFRQIEhFQUQgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gdXJsIFRoZSB0YXJnZXQgVVJMLlxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNhbGxiYWNrIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFJlcXVlc3QgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgICAqL1xuXHRoZWFkQXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQuaGVhZEFzeW5jKG5ld1VybCwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksIGNhbGxiYWNrKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aHR0cENsaWVudC5oZWFkQXN5bmMobmV3VXJsLCBKU09OLnN0cmluZ2lmeSh7fSksIGNhbGxiYWNrKTtcblx0XHR9XG5cdH07XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhbiBhc3luY2hyb25vdXMgSFRUUCBUUkFDRSByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSB1cmwgVGhlIHRhcmdldCBVUkwuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsbGJhY2sgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAgICovXG5cdHRyYWNlQXN5bmModXJsOiBzdHJpbmcsIGNvbmZpZzogSHR0cENsaWVudEFzeW5jQ29uZmlnLCBvcHRpb25zPzogSHR0cENsaWVudFJlcXVlc3RPcHRpb25zKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VXJsID0gYnVpbGRVcmwodXJsLCBvcHRpb25zKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IGNyZWF0ZUh0dHBSZXNwb25zZUNhbGxiYWNrKFxuXHRcdFx0aHR0cENsaWVudCxcblx0XHRcdGNvbmZpZy5zdWNjZXNzLFxuXHRcdFx0Y29uZmlnLmVycm9yLFxuXHRcdFx0Y29uZmlnLmNhbmNlbFxuXHRcdCk7XG5cdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdGh0dHBDbGllbnQudHJhY2VBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCBjYWxsYmFjayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGh0dHBDbGllbnQudHJhY2VBc3luYyhuZXdVcmwsIEpTT04uc3RyaW5naWZ5KHt9KSwgY2FsbGJhY2spO1xuXHRcdH1cblx0fTtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYXRlcyB0aGUgZXhlY3V0aW9uIG9mIHF1ZXVlZCBhc3luY2hyb25vdXMgcmVxdWVzdHMgKGRlcGVuZGluZyBvbiB0aGUgdW5kZXJseWluZyBKYXZhIGNsaWVudCdzIHRocmVhZGluZyBtb2RlbCkuXG4gICAgICovXG5cdGV4ZWN1dGUoKTogdm9pZCB7XG5cdFx0aHR0cENsaWVudC5leGVjdXRlKCk7XG5cdH07XG59XG5cbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byByZXRyaWV2ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYXN5bmNocm9ub3VzIGNsaWVudC5cbiAqIEByZXR1cm5zIEEgbmV3IGluc3RhbmNlIG9mIEh0dHBBc3luY0NsaWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluc3RhbmNlKCk6IEh0dHBBc3luY0NsaWVudCB7XG5cdHJldHVybiBuZXcgSHR0cEFzeW5jQ2xpZW50KCk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuYXRpdmUgSmF2YSBjYWxsYmFjayBvYmplY3QgdGhhdCB3cmFwcyB0aGUgSmF2YVNjcmlwdCBzdWNjZXNzLCBlcnJvciwgYW5kIGNhbmNlbCBjYWxsYmFja3MuXG4gKiBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIHVuZGVybHlpbmcgSmF2YSBIVFRQIGNsaWVudCBpbnN0YW5jZSB0byBnZW5lcmF0ZSB0aGUgZmluYWwgY2FsbGJhY2sgb2JqZWN0LlxuICogQHBhcmFtIGh0dHBDbGllbnQgVGhlIEphdmEgSHR0cENsaWVudEFzeW5jRmFjYWRlIGluc3RhbmNlLlxuICogQHBhcmFtIHN1Y2Nlc3NDYWxsYmFjayBKUyBjb2RlIHN0cmluZyBmb3Igc3VjY2Vzcy5cbiAqIEBwYXJhbSBlcnJvckNhbGxiYWNrIEpTIGNvZGUgc3RyaW5nIGZvciBlcnJvci5cbiAqIEBwYXJhbSBjYW5jZWxDYWxsYmFjayBKUyBjb2RlIHN0cmluZyBmb3IgY2FuY2VsLlxuICogQHJldHVybnMgQSBKYXZhIGNhbGxiYWNrIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlSHR0cFJlc3BvbnNlQ2FsbGJhY2soaHR0cENsaWVudDogYW55LCBzdWNjZXNzQ2FsbGJhY2s6IHN0cmluZywgZXJyb3JDYWxsYmFjaz86IHN0cmluZywgY2FuY2VsQ2FsbGJhY2s/OiBzdHJpbmcpOiBhbnkge1xuXHRyZXR1cm4gaHR0cENsaWVudC5jcmVhdGVDYWxsYmFjayhcblx0XHRjcmVhdGVTdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKSxcblx0XHRjcmVhdGVFcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spLFxuXHRcdGNyZWF0ZUNhbmNlbENhbGxiYWNrKGNhbmNlbENhbGxiYWNrKVxuXHQpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgcmF3IEphdmFTY3JpcHQgc3RyaW5nIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgSlZNIGVudmlyb25tZW50IHVwb24gc3VjY2Vzc2Z1bCByZXF1ZXN0IGNvbXBsZXRpb24uXG4gKiBUaGlzIHN0cmluZyBoYW5kbGVzIHBhcnNpbmcgdGhlIEphdmEgSFRUUCByZXNwb25zZSBvYmplY3QgYW5kIGV4ZWN1dGluZyB0aGUgdXNlcidzIGRlZmluZWQgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiBAcGFyYW0gY2FsbGJhY2sgVGhlIHVzZXItcHJvdmlkZWQgc3VjY2VzcyBjYWxsYmFjayBmdW5jdGlvbiBjb2RlIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBjb21wbGV4IEphdmFTY3JpcHQgc3RyaW5nIGZvciB0aGUgc3VjY2VzcyBoYW5kbGVyLlxuICovXG5mdW5jdGlvbiBjcmVhdGVTdWNjZXNzQ2FsbGJhY2soY2FsbGJhY2s6IHN0cmluZyk6IHN0cmluZyB7XG5cdC8vIE5vdGU6IFRoaXMgc3RyaW5nIHJlYWRzIHRoZSBKYXZhIHJlc3BvbnNlIG9iamVjdCBhbmQgdGhlIGNvbnRleHQgdmFyaWFibGVzIChfX2NvbnRleHQpIGF2YWlsYWJsZVxuICAgIC8vIGluIHRoZSBzcGVjaWZpYyBKVk0gZW52aXJvbm1lbnQuIFNpbmNlIHRoZSBIdHRwQ2xpZW50IDUgcG9ydCAoZGlyaWdpYmxlICM3NzkyKSB0aGF0IG9iamVjdCBpcyBhXG4gICAgLy8gU2ltcGxlSHR0cFJlc3BvbnNlOiB0aGUgc3RhdHVzIGlzIGdldENvZGUoKS9nZXRSZWFzb25QaHJhc2UoKSByYXRoZXIgdGhhbiBnZXRTdGF0dXNMaW5lKCksIHRoZVxuICAgIC8vIGhlYWRlcnMgYXJlIGdldEhlYWRlcnMoKSwgYW5kIHRoZSBib2R5IGlzIGFscmVhZHkgaW4gbWVtb3J5IC0gZ2V0Qm9keUJ5dGVzKCkvZ2V0Qm9keVRleHQoKSAtXG4gICAgLy8gc28gdGhlcmUgaXMgbm8gZW50aXR5IHN0cmVhbSB0byByZWFkIHRocm91Z2ggSU9VdGlscyBhbnkgbW9yZS5cbiAgICBcbiAgICAvLyBUaGUgc3RydWN0dXJlIG1hcHMgdGhlIEphdmEgSFRUUCBSZXNwb25zZSBvYmplY3QgaW50byB0aGUgc3RhbmRhcmQgSHR0cENsaWVudFJlc3BvbnNlIGludGVyZmFjZS5cblx0cmV0dXJuIFwiKGZ1bmN0aW9uKGh0dHBSZXNwb25zZSwgaXNCaW5hcnksIGNvbnRleHQpIHtcXG5cIlxuXHRcdCsgXCJ2YXIgcmVzcG9uc2UgPSB7fTtcXG5cIlxuXHRcdCsgXCJyZXNwb25zZS5zdGF0dXNDb2RlID0gaHR0cFJlc3BvbnNlLmdldENvZGUoKTtcXG5cIlxuXHRcdCsgXCJyZXNwb25zZS5zdGF0dXNNZXNzYWdlID0gaHR0cFJlc3BvbnNlLmdldFJlYXNvblBocmFzZSgpO1xcblwiXG5cdFx0KyBcInJlc3BvbnNlLnByb3RvY29sID0gaHR0cFJlc3BvbnNlLmdldFZlcnNpb24oKTtcXG5cIlxuXHRcdCsgXCJyZXNwb25zZS5iaW5hcnkgPSBpc0JpbmFyeTtcXG5cIlxuXG5cdFx0KyBcInZhciBoZWFkZXJzID0gaHR0cFJlc3BvbnNlLmdldEhlYWRlcnMoKTtcXG5cIlxuXHRcdCsgXCJyZXNwb25zZS5oZWFkZXJzID0gW107XFxuXCJcblx0XHQrIFwiZm9yICh2YXIgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgaSArKykge1xcblwiXG5cdFx0KyBcIiAgICByZXNwb25zZS5oZWFkZXJzLnB1c2goe1xcblwiXG5cdFx0KyBcIiAgICAgICAgbmFtZTogaGVhZGVyc1tpXS5nZXROYW1lKCksXFxuXCJcblx0XHQrIFwiICAgICAgICB2YWx1ZTogaGVhZGVyc1tpXS5nZXRWYWx1ZSgpXFxuXCJcblx0XHQrIFwiICAgIH0pO1xcblwiXG5cdFx0KyBcIn1cXG5cIlxuXG5cdFx0KyBcImlmIChpc0JpbmFyeSkge1xcblwiXG5cdFx0KyBcIiAgICByZXNwb25zZS5kYXRhID0gaHR0cFJlc3BvbnNlLmdldEJvZHlCeXRlcygpO1xcblwiXG5cdFx0KyBcIn0gZWxzZSB7XFxuXCJcblx0XHQrIFwiICAgIHJlc3BvbnNlLnRleHQgPSBodHRwUmVzcG9uc2UuZ2V0Qm9keVRleHQoKTtcXG5cIlxuXHRcdCsgXCJ9XFxuXCJcblxuXHRcdCsgXCIoXCIgKyBjYWxsYmFjayArIFwiKShyZXNwb25zZSwgSlNPTi5wYXJzZShjb250ZXh0KSk7XFxuXCJcblx0XHQrIFwifSkoX19jb250ZXh0LmdldCgncmVzcG9uc2UnKSwgX19jb250ZXh0LmdldCgnaHR0cENsaWVudFJlcXVlc3RPcHRpb25zJykuaXNCaW5hcnkoKSwgX19jb250ZXh0LmdldCgnaHR0cENsaWVudFJlcXVlc3RPcHRpb25zJykuZ2V0Q29udGV4dCgpKTtcXG5cIjtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIHJhdyBKYXZhU2NyaXB0IHN0cmluZyBmb3IgdGhlIGVycm9yIGNhbGxiYWNrLlxuICogQHBhcmFtIGNhbGxiYWNrIFRoZSB1c2VyLXByb3ZpZGVkIGVycm9yIGNhbGxiYWNrIGZ1bmN0aW9uIGNvZGUgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIEphdmFTY3JpcHQgc3RyaW5nIGZvciB0aGUgZXJyb3IgaGFuZGxlciwgb3IgdW5kZWZpbmVkLlxuICovXG5mdW5jdGlvbiBjcmVhdGVFcnJvckNhbGxiYWNrKGNhbGxiYWNrPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKGNhbGxiYWNrKSB7XG5cdFx0cmV0dXJuIFwiKFwiICsgY2FsbGJhY2sgKyBcIikoX19jb250ZXh0LmdldCgnZXhjZXB0aW9uJykpXCI7XG5cdH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgcmF3IEphdmFTY3JpcHQgc3RyaW5nIGZvciB0aGUgY2FuY2VsIGNhbGxiYWNrLlxuICogQHBhcmFtIGNhbGxiYWNrIFRoZSB1c2VyLXByb3ZpZGVkIGNhbmNlbCBjYWxsYmFjayBmdW5jdGlvbiBjb2RlIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBKYXZhU2NyaXB0IHN0cmluZyBmb3IgdGhlIGNhbmNlbCBoYW5kbGVyLCBvciB1bmRlZmluZWQuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNhbmNlbENhbGxiYWNrKGNhbGxiYWNrPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKGNhbGxiYWNrKSB7XG5cdFx0cmV0dXJuIFwiKFwiICsgY2FsbGJhY2sgKyBcIikoKVwiO1xuXHR9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGZpbmFsIFVSTCBieSBhcHBlbmRpbmcgYWxsIHF1ZXJ5IHBhcmFtZXRlcnMgZGVmaW5lZCBpbiBvcHRpb25zLnBhcmFtcy5cbiAqIFRoZSBwYXJhbWV0ZXJzIGFyZSBub3QgcmVtb3ZlZCBmcm9tIHRoZSBvcHRpb25zIG9iamVjdCBhcyB0aGV5IGFyZSBmb3IgdGhlIHN5bmNocm9ub3VzIGNsaWVudCxcbiAqIHNpbmNlIHRoZSBvcHRpb25zIGFyZSBwYXNzZWQgYXMgSlNPTiBzdHJpbmcgdG8gdGhlIGZhY2FkZSBhbnl3YXkuXG4gKiBAcGFyYW0gdXJsIFRoZSBiYXNlIFVSTC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSByZXF1ZXN0IG9wdGlvbnMgd2hpY2ggbWF5IGNvbnRhaW4gYHBhcmFtc2AuXG4gKiBAcmV0dXJucyBUaGUgVVJMIHdpdGggYXBwZW5kZWQgcXVlcnkgcGFyYW1ldGVycy5cbiAqL1xuZnVuY3Rpb24gYnVpbGRVcmwodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBIdHRwQ2xpZW50UmVxdWVzdE9wdGlvbnMpOiBzdHJpbmcge1xuXHRpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucy5wYXJhbXMgPT09IHVuZGVmaW5lZCB8fCBvcHRpb25zLnBhcmFtcyA9PT0gbnVsbCB8fCBvcHRpb25zLnBhcmFtcy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4gdXJsO1xuXHR9XG5cdGxldCBuZXdVcmwgPSB1cmw7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucy5wYXJhbXMubGVuZ3RoOyBpICsrKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtID0gb3B0aW9ucy5wYXJhbXNbaV07XG5cdFx0aWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIFVSTCBhbHJlYWR5IGNvbnRhaW5zICc/JyBhbmQgdXNlICcmJyBpZiBzbyAoaW1wcm92ZXMgcm9idXN0bmVzcylcbiAgICAgICAgICAgIGlmIChuZXdVcmwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgICAgIG5ld1VybCArPSAnJic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld1VybCArPSAnPyc7XG4gICAgICAgICAgICB9XG5cdFx0XHRuZXdVcmwgKz0gcGFyYW0ubmFtZSArICc9JyArIHBhcmFtLnZhbHVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRuZXdVcmwgKz0gJyYnICsgcGFyYW0ubmFtZSArICc9JyArIHBhcmFtLnZhbHVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbmV3VXJsO1xufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgSHR0cEFzeW5jQ2xpZW50LCBnZXRJbnN0YW5jZSB9O1xufSJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdUlBLE1BQU0sd0JBQXdCLEtBQUssS0FBSyxpRUFBaUU7QUFHekcsTUFBTSxxQkFBcUIsS0FBSyxLQUFLLDREQUE0RDtBQUdqRyxNQUFNLGFBQWEsbUJBQW1CLFFBQVEsc0JBQXNCLEtBQUs7QUFPbEUsTUFBTSxnQkFBZ0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVE1QixTQUFTLEtBQWEsUUFBK0IsU0FBMEM7QUFDOUYsVUFBTSxTQUFTLFNBQVMsS0FBSyxPQUFPO0FBQ3BDLFVBQU0sV0FBVztBQUFBLE1BQ2hCO0FBQUEsTUFDQSxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsSUFDUjtBQUNBLFFBQUksU0FBUztBQUNaLGlCQUFXLFNBQVMsUUFBUSxLQUFLLFVBQVUsT0FBTyxHQUFHLFFBQVE7QUFBQSxJQUM5RCxPQUFPO0FBQ04saUJBQVcsU0FBUyxRQUFRLEtBQUssVUFBVSxDQUFDLENBQUMsR0FBRyxRQUFRO0FBQUEsSUFDekQ7QUFBQSxFQUNEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxVQUFVLEtBQWEsUUFBK0IsU0FBMEM7QUFDL0YsVUFBTSxTQUFTLFNBQVMsS0FBSyxPQUFPO0FBQ3BDLFVBQU0sV0FBVztBQUFBLE1BQ2hCO0FBQUEsTUFDQSxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FB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
@@ -21,4 +21,4 @@ __export(qldb_exports, {
21
21
  });
22
22
  module.exports = __toCommonJS(qldb_exports);
23
23
  const QLDBRepository = Java.type("org.eclipse.dirigible.components.api.qldb.QLDBRepository");
24
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3FsZGIvcWxkYi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbW9kdWxlIHFsZGIvcWxkYlxuICogQHBhY2thZ2UgQGFlcm9raXQvc2RrL3FsZGJcbiAqIEBuYW1lIFFMREJSZXBvc2l0b3J5XG4gKiBAb3ZlcnZpZXdcbiAqXG4gKiBFbnRyeSBwb2ludCBmb3IgQW1hem9uIFFMREIgcmVwb3NpdG9yeSBpbnRlZ3JhdGlvbiBpbiBBZXJva2l0IFNESy5cbiAqXG4gKiBFeHBvc2VzIHRoZSBgUUxEQlJlcG9zaXRvcnlgIGNsYXNzIGFsaWFzIHRvIHRoZSB1bmRlcmx5aW5nIEphdmEgaW1wbGVtZW50YXRpb246XG4gKiBgb3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLnFsZGIuUUxEQlJlcG9zaXRvcnlgLlxuICpcbiAqIFRoaXMgb2JqZWN0IGlzIHVzZWQgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgUUxEQiBsZWRnZXIgc2Vzc2lvbnMsIGV4ZWN1dGUgc3RhdGVtZW50cyxcbiAqIGFuZCBoYW5kbGUgdHJhbnNhY3Rpb24gbGlmZWN5Y2xlcyBmcm9tIEphdmFTY3JpcHQgY29kZS5cbiAqL1xuXG5leHBvcnQgY29uc3QgUUxEQlJlcG9zaXRvcnkgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkucWxkYi5RTERCUmVwb3NpdG9yeVwiKTsiXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFlTyxNQUFNLGlCQUFpQixLQUFLLEtBQUssMERBQTBEOyIsCiAgIm5hbWVzIjogW10KfQo=
24
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3FsZGIvcWxkYi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbW9kdWxlIHFsZGIvcWxkYlxuICogQHBhY2thZ2UgQGFlcm9raXQvc2RrL3FsZGJcbiAqIEBuYW1lIFFMREJSZXBvc2l0b3J5XG4gKiBAb3ZlcnZpZXdcbiAqXG4gKiBFbnRyeSBwb2ludCBmb3IgQW1hem9uIFFMREIgcmVwb3NpdG9yeSBpbnRlZ3JhdGlvbiBpbiBBZXJva2l0IFNESy5cbiAqXG4gKiBFeHBvc2VzIHRoZSBgUUxEQlJlcG9zaXRvcnlgIGNsYXNzIGFsaWFzIHRvIHRoZSB1bmRlcmx5aW5nIEphdmEgaW1wbGVtZW50YXRpb246XG4gKiBgb3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLnFsZGIuUUxEQlJlcG9zaXRvcnlgLlxuICpcbiAqIFRoaXMgb2JqZWN0IGlzIHVzZWQgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgUUxEQiBsZWRnZXIgc2Vzc2lvbnMsIGV4ZWN1dGUgc3RhdGVtZW50cyxcbiAqIGFuZCBoYW5kbGUgdHJhbnNhY3Rpb24gbGlmZWN5Y2xlcyBmcm9tIEphdmFTY3JpcHQgY29kZS5cbiAqXG4gKiBUaGUgUUxEQiBkcml2ZXIgaXMgYW4gYWRkLW9uIHRoYXQgdGhlIGRlZmF1bHQgYnVuZGxlIGRvZXMgbm90IHNoaXA6IHRoZSBhcHBsaWNhdGlvbiBhZGRzXG4gKiBgb3JnLmVjbGlwc2UuZGlyaWdpYmxlOmRpcmlnaWJsZS1jb21wb25lbnRzLWFwaS1xbGRiLWRyaXZlcmAgKGA8dHlwZT5wb208L3R5cGU+YCkuIFdpdGhvdXQgaXQsXG4gKiBgbmV3IFFMREJSZXBvc2l0b3J5KC4uLilgIHRocm93cyBgUWxkYk5vdEF2YWlsYWJsZUV4Y2VwdGlvbmAgbmFtaW5nIHRoYXQgYXJ0aWZhY3QuXG4gKi9cblxuZXhwb3J0IGNvbnN0IFFMREJSZXBvc2l0b3J5ID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLnFsZGIuUUxEQlJlcG9zaXRvcnlcIik7Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUJPLE1BQU0saUJBQWlCLEtBQUssS0FBSywwREFBMEQ7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -42,6 +42,50 @@
42
42
  * }
43
43
  * ```
44
44
  */
45
+ /**
46
+ * A configuration group with the number of its keys and of the keys any source sets.
47
+ */
48
+ export interface ConfigurationGroup {
49
+ id: string;
50
+ section: string;
51
+ label: string;
52
+ order: number;
53
+ total: number;
54
+ set: number;
55
+ }
56
+ /**
57
+ * A described configuration key. Every value is masked as "********" when the key is sensitive.
58
+ */
59
+ export interface ConfigurationDescriptor {
60
+ key: string;
61
+ subgroup?: string;
62
+ type?: string;
63
+ defaultValue?: string;
64
+ /** The effective value. */
65
+ value?: string;
66
+ /** Where the effective value comes from. */
67
+ source: "runtime" | "environment" | "deployment" | "module" | "default" | "unset";
68
+ /** The value each source gives the key. */
69
+ values: {
70
+ runtime?: string;
71
+ environment?: string;
72
+ deployment?: string;
73
+ module?: string;
74
+ };
75
+ sensitive: boolean;
76
+ restartRequired?: boolean;
77
+ tenantOverridable: boolean;
78
+ deprecatedBy?: string;
79
+ }
80
+ /**
81
+ * A configuration group with its described keys.
82
+ */
83
+ export interface ConfigurationDescriptorGroup {
84
+ group: string;
85
+ section: string;
86
+ label: string;
87
+ entries: ConfigurationDescriptor[];
88
+ }
45
89
  export declare class Configurations {
46
90
  /**
47
91
  * Retrieves the configuration value associated with the given key.
@@ -67,6 +111,18 @@ export declare class Configurations {
67
111
  * @returns An array of configuration keys (strings).
68
112
  */
69
113
  static getKeys(): string[];
114
+ /**
115
+ * Retrieves the configuration groups, in display order, with the number of keys and of set keys in each.
116
+ * @returns The groups.
117
+ */
118
+ static getGroups(): ConfigurationGroup[];
119
+ /**
120
+ * Retrieves the described configuration keys, grouped: default, effective value, its source and the value
121
+ * of each source. Sensitive values are masked.
122
+ * @param group A group id (e.g. "database") or several; all groups when omitted.
123
+ * @returns The groups that have keys.
124
+ */
125
+ static getDescriptors(group?: string | string[]): ConfigurationDescriptorGroup[];
70
126
  /**
71
127
  * Loads configuration properties from a file at the specified path, overriding existing ones.
72
128
  * @param path The file path to load configurations from.
@@ -12,6 +12,11 @@
12
12
  * - Retrieve metadata about the Etcd cluster and key-value store through response headers.
13
13
  * - Delete keys from Etcd.
14
14
  *
15
+ * ### Availability
16
+ * The etcd client library (jetcd) is an add-on that the default bundle does not ship: the application adds
17
+ * `org.eclipse.dirigible:dirigible-components-api-etcd-client` (`<type>pom</type>`). Without it, every call
18
+ * throws `EtcdNotAvailableException` naming that artifact.
19
+ *
15
20
  * ### Use Cases
16
21
  * - Storing configuration data or application state in Etcd for distributed applications.
17
22
  * - Retrieving and managing key-value pairs in Etcd for service discovery, configuration management, or coordination tasks.
@@ -11,5 +11,9 @@
11
11
  *
12
12
  * This object is used to create and manage QLDB ledger sessions, execute statements,
13
13
  * and handle transaction lifecycles from JavaScript code.
14
+ *
15
+ * The QLDB driver is an add-on that the default bundle does not ship: the application adds
16
+ * `org.eclipse.dirigible:dirigible-components-api-qldb-driver` (`<type>pom</type>`). Without it,
17
+ * `new QLDBRepository(...)` throws `QldbNotAvailableException` naming that artifact.
14
18
  */
15
19
  export declare const QLDBRepository: any;
@@ -1,4 +1,5 @@
1
1
  const Configuration = Java.type("org.eclipse.dirigible.commons.config.Configuration");
2
+ const ConfigurationsFacade = Java.type("org.eclipse.dirigible.components.api.core.ConfigurationsFacade");
2
3
  class Configurations {
3
4
  /**
4
5
  * Retrieves the configuration value associated with the given key.
@@ -33,6 +34,23 @@ class Configurations {
33
34
  static getKeys() {
34
35
  return Configuration.getKeys();
35
36
  }
37
+ /**
38
+ * Retrieves the configuration groups, in display order, with the number of keys and of set keys in each.
39
+ * @returns The groups.
40
+ */
41
+ static getGroups() {
42
+ return JSON.parse(ConfigurationsFacade.getGroups());
43
+ }
44
+ /**
45
+ * Retrieves the described configuration keys, grouped: default, effective value, its source and the value
46
+ * of each source. Sensitive values are masked.
47
+ * @param group A group id (e.g. "database") or several; all groups when omitted.
48
+ * @returns The groups that have keys.
49
+ */
50
+ static getDescriptors(group) {
51
+ const groups = group === void 0 ? null : Array.isArray(group) ? group.join(",") : group;
52
+ return JSON.parse(ConfigurationsFacade.getDescriptors(groups));
53
+ }
36
54
  /**
37
55
  * Loads configuration properties from a file at the specified path, overriding existing ones.
38
56
  * @param path The file path to load configurations from.
@@ -88,4 +106,4 @@ if (typeof module !== "undefined") {
88
106
  export {
89
107
  Configurations
90
108
  };
91
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvcmUvY29uZmlndXJhdGlvbnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQG1vZHVsZSBjb3JlL2NvbmZpZ3VyYXRpb25zXG4gKiBAcGFja2FnZSBAYWVyb2tpdC9zZGsvY29yZVxuICogQG5hbWUgQ29uZmlndXJhdGlvbnNcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgQ29uZmlndXJhdGlvbnMgQVBJIHByb3ZpZGVzIGEgY2VudHJhbGl6ZWQsIHR5cGUtc2FmZSBpbnRlcmZhY2UgZm9yIG1hbmFnaW5nIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBhbmQgZGV0ZWN0aW5nIHRoZSBydW50aW1lIG9wZXJhdGluZyBzeXN0ZW0uIEl0IHNlcnZlcyBhcyB0aGUgZm91bmRhdGlvbiBmb3IgZW52aXJvbm1lbnQtc3BlY2lmaWMgc2V0dGluZ3MgYW5kIHN5c3RlbS1hd2FyZSBiZWhhdmlvciBpbiBBZXJva2l0IGFwcGxpY2F0aW9ucy5cbiAqIFxuICogIyMjIEtleSBGZWF0dXJlc1xuICogXG4gKiAtICoqU3RhdGljIEludGVyZmFjZSoqOiBUaHJlYWQtc2FmZSwgc2luZ2xldG9uLWxpa2UgYWNjZXNzIHRvIGNvbmZpZ3VyYXRpb24gZGF0YVxuICogLSAqKlR5cGUgU2FmZXR5Kio6IEZ1bGwgVHlwZVNjcmlwdCBzdXBwb3J0IHdpdGggcHJvcGVyIHR5cGUgZGVmaW5pdGlvbnNcbiAqIC0gKipGaWxlIExvYWRpbmcqKjogU3VwcG9ydCBmb3IgbG9hZGluZyBjb25maWd1cmF0aW9ucyBmcm9tIGV4dGVybmFsIGZpbGVzXG4gKiAtICoqT1MgRGV0ZWN0aW9uKio6IENvbXByZWhlbnNpdmUgb3BlcmF0aW5nIHN5c3RlbSBpZGVudGlmaWNhdGlvblxuICogLSAqKk1lbW9yeSBFZmZpY2llbnQqKjogSW4tbWVtb3J5IHN0b3JhZ2Ugd2l0aCBvcHRpb25hbCBwZXJzaXN0ZW5jZVxuICogXG4gKiAjIyMgVXNlIENhc2VzXG4gKiAtIEFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudFxuICogLSBFbnZpcm9ubWVudCB2YXJpYWJsZSBtYW5hZ2VtZW50XG4gKiAtIEZlYXR1cmUgZmxhZyBjb25maWd1cmF0aW9uXG4gKiAtIERhdGFiYXNlIGNvbm5lY3Rpb24gc2V0dGluZ3NcbiAqIC0gQVBJIGVuZHBvaW50IGNvbmZpZ3VyYXRpb25cbiAqIC0gUGxhdGZvcm0tc3BlY2lmaWMgYmVoYXZpb3IgYWRhcHRhdGlvblxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9jb3JlXCI7XG4gKiBcbiAqIC8vIFNldCBhIGNvbmZpZ3VyYXRpb24gcHJvcGVydHlcbiAqIENvbmZpZ3VyYXRpb25zLnNldChcImFwaUVuZHBvaW50XCIsIFwiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb21cIik7XG4gKiAvLyBHZXQgYSBjb25maWd1cmF0aW9uIHByb3BlcnR5XG4gKiBjb25zdCBhcGlFbmRwb2ludCA9IENvbmZpZ3VyYXRpb25zLmdldChcImFwaUVuZHBvaW50XCIpO1xuICogY29uc29sZS5sb2coYXBpRW5kcG9pbnQpOyAvLyBPdXRwdXQ6IFwiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb21cIlxuICogXG4gKiAvLyBDaGVjayB0aGUgb3BlcmF0aW5nIHN5c3RlbVxuICogaWYgKENvbmZpZ3VyYXRpb25zLmlzT1NXaW5kb3dzKCkpIHtcbiAqICAgY29uc29sZS5sb2coXCJSdW5uaW5nIG9uIFdpbmRvd3NcIik7XG4gKiB9IGVsc2UgaWYgKENvbmZpZ3VyYXRpb25zLmlzT1NNYWMoKSkge1xuICogICBjb25zb2xlLmxvZyhcIlJ1bm5pbmcgb24gTWFjXCIpO1xuICogfSBlbHNlIGlmIChDb25maWd1cmF0aW9ucy5pc09TVU5JWCgpKSB7XG4gKiAgIGNvbnNvbGUubG9nKFwiUnVubmluZyBvbiBVTklYXCIpO1xuICogfVxuICogYGBgXG4qL1xuXG5jb25zdCBDb25maWd1cmF0aW9uID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbW1vbnMuY29uZmlnLkNvbmZpZ3VyYXRpb25cIik7XG5cbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9ucyB7XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29uZmlndXJhdGlvbiB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGtleS5cblx0ICogQHBhcmFtIGtleSBUaGUgY29uZmlndXJhdGlvbiBrZXkuXG5cdCAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgVGhlIG9wdGlvbmFsIGRlZmF1bHQgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBrZXkgaXMgbm90IGZvdW5kLlxuXHQgKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbiB2YWx1ZSBhcyBhIHN0cmluZywgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIGtleSBpcyBub3QgZm91bmQgYW5kIG5vIGRlZmF1bHQgaXMgcHJvdmlkZWQuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldChrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCB2YWx1ZSA9IENvbmZpZ3VyYXRpb24uZ2V0KGtleSwgZGVmYXVsdFZhbHVlKTtcblx0XHRyZXR1cm4gdmFsdWUgPz8gdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGNvbmZpZ3VyYXRpb24gdmFsdWUgZm9yIHRoZSBnaXZlbiBrZXkuXG5cdCAqIElmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMsIGl0cyB2YWx1ZSBpcyBvdmVyd3JpdHRlbi5cblx0ICogQHBhcmFtIGtleSBUaGUgY29uZmlndXJhdGlvbiBrZXkuXG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgY29uZmlndXJhdGlvbiB2YWx1ZSB0byBzZXQuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHNldChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdENvbmZpZ3VyYXRpb24uc2V0KGtleSwgdmFsdWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgdGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBrZXkuXG5cdCAqIEBwYXJhbSBrZXkgVGhlIGNvbmZpZ3VyYXRpb24ga2V5IHRvIHJlbW92ZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgcmVtb3ZlKGtleTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Q29uZmlndXJhdGlvbi5yZW1vdmUoa2V5KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGFsbCBjdXJyZW50IGNvbmZpZ3VyYXRpb24ga2V5cy5cblx0ICogQHJldHVybnMgQW4gYXJyYXkgb2YgY29uZmlndXJhdGlvbiBrZXlzIChzdHJpbmdzKS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0S2V5cygpOiBzdHJpbmdbXSB7XG5cdFx0cmV0dXJuIENvbmZpZ3VyYXRpb24uZ2V0S2V5cygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWRzIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmcm9tIGEgZmlsZSBhdCB0aGUgc3BlY2lmaWVkIHBhdGgsIG92ZXJyaWRpbmcgZXhpc3Rpbmcgb25lcy5cblx0ICogQHBhcmFtIHBhdGggVGhlIGZpbGUgcGF0aCB0byBsb2FkIGNvbmZpZ3VyYXRpb25zIGZyb20uXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGxvYWQocGF0aDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Q29uZmlndXJhdGlvbi5sb2FkKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbG9hZHMgb3IgdXBkYXRlcyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZyb20gdGhlaXIgc291cmNlIChlLmcuLCBwZXJzaXN0ZW5jZSBsYXllcikuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHVwZGF0ZSgpOiB2b2lkIHtcblx0XHRDb25maWd1cmF0aW9uLnVwZGF0ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBPcGVyYXRpbmcgU3lzdGVtLlxuXHQgKiBAcmV0dXJucyBUaGUgT1MgbmFtZSBhcyBhIHN0cmluZyAoZS5nLiwgXCJXaW5kb3dzXCIsIFwiTGludXhcIiwgXCJNYWMgT1MgWFwiKS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0T1MoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gQ29uZmlndXJhdGlvbi5nZXRPUygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBPcGVyYXRpbmcgU3lzdGVtIGlzIFdpbmRvd3MuXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIE9TIGlzIFdpbmRvd3MsIGZhbHNlIG90aGVyd2lzZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgaXNPU1dpbmRvd3MoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIENvbmZpZ3VyYXRpb24uaXNPU1dpbmRvd3MoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgT3BlcmF0aW5nIFN5c3RlbSBpcyBNYWMgT1MgKG9yIE1hYyBPUyBYKS5cblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgT1MgaXMgTWFjLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGlzT1NNYWMoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIENvbmZpZ3VyYXRpb24uaXNPU01hYygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBPcGVyYXRpbmcgU3lzdGVtIGlzIGEgVU5JWC1saWtlIHN5c3RlbSAoZS5nLiwgTGludXgsIG1hY09TLCBvciBvdGhlcnMpLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBPUyBpcyBhIFVOSVggdmFyaWFudCwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpc09TVU5JWCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gQ29uZmlndXJhdGlvbi5pc09TVU5JWCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBPcGVyYXRpbmcgU3lzdGVtIGlzIFNvbGFyaXMuXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIE9TIGlzIFNvbGFyaXMsIGZhbHNlIG90aGVyd2lzZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgaXNPU1NvbGFyaXMoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIENvbmZpZ3VyYXRpb24uaXNPU1NvbGFyaXMoKTtcblx0fVxuXG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gQ29uZmlndXJhdGlvbnM7XG59Il0sCiAgIm1hcHBpbmdzIjogIkFBNkNBLE1BQU0sZ0JBQWdCLEtBQUssS0FBSyxvREFBb0Q7QUFFN0UsTUFBTSxlQUFlO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRM0IsT0FBYyxJQUFJLEtBQWEsY0FBMkM7QUFDekUsVUFBTSxRQUFRLGNBQWMsSUFBSSxLQUFLLFlBQVk7QUFDakQsV0FBTyxTQUFTO0FBQUEsRUFDakI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLE9BQWMsSUFBSSxLQUFhLE9BQXFCO0FBQ25ELGtCQUFjLElBQUksS0FBSyxLQUFLO0FBQUEsRUFDN0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTUEsT0FBYyxPQUFPLEtBQW1CO0FBQ3ZDLGtCQUFjLE9BQU8sR0FBRztBQUFBLEVBQ3pCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BLE9BQWMsVUFBb0I7QUFDakMsV0FBTyxjQUFjLFFBQVE7QUFBQSxFQUM5QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNQSxPQUFjLEtBQUssTUFBb0I7QUFDdEMsa0JBQWMsS0FBSyxJQUFJO0FBQUEsRUFDeEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE9BQWMsU0FBZTtBQUM1QixrQkFBYyxPQUFPO0FBQUEsRUFDdEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTUEsT0FBYyxRQUFnQjtBQUM3QixXQUFPLGNBQWMsTUFBTTtBQUFBLEVBQzVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BLE9BQWMsY0FBdUI7QUFDcEMsV0FBTyxjQUFjLFlBQVk7QUFBQSxFQUNsQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNQSxPQUFjLFVBQW1CO0FBQ2hDLFdBQU8sY0FBYyxRQUFRO0FBQUEsRUFDOUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTUEsT0FBYyxXQUFvQjtBQUNqQyxXQUFPLGNBQWMsU0FBUztBQUFBLEVBQy9CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BLE9BQWMsY0FBdUI7QUFDcEMsV0FBTyxjQUFjLFlBQVk7QUFBQSxFQUNsQztBQUVEO0FBR0EsSUFBSSxPQUFPLFdBQVcsYUFBYTtBQUVsQyxTQUFPLFVBQVU7QUFDbEI7IiwKICAibmFtZXMiOiBbXQp9Cg==
109
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvcmUvY29uZmlndXJhdGlvbnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQG1vZHVsZSBjb3JlL2NvbmZpZ3VyYXRpb25zXG4gKiBAcGFja2FnZSBAYWVyb2tpdC9zZGsvY29yZVxuICogQG5hbWUgQ29uZmlndXJhdGlvbnNcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgQ29uZmlndXJhdGlvbnMgQVBJIHByb3ZpZGVzIGEgY2VudHJhbGl6ZWQsIHR5cGUtc2FmZSBpbnRlcmZhY2UgZm9yIG1hbmFnaW5nIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBhbmQgZGV0ZWN0aW5nIHRoZSBydW50aW1lIG9wZXJhdGluZyBzeXN0ZW0uIEl0IHNlcnZlcyBhcyB0aGUgZm91bmRhdGlvbiBmb3IgZW52aXJvbm1lbnQtc3BlY2lmaWMgc2V0dGluZ3MgYW5kIHN5c3RlbS1hd2FyZSBiZWhhdmlvciBpbiBBZXJva2l0IGFwcGxpY2F0aW9ucy5cbiAqIFxuICogIyMjIEtleSBGZWF0dXJlc1xuICogXG4gKiAtICoqU3RhdGljIEludGVyZmFjZSoqOiBUaHJlYWQtc2FmZSwgc2luZ2xldG9uLWxpa2UgYWNjZXNzIHRvIGNvbmZpZ3VyYXRpb24gZGF0YVxuICogLSAqKlR5cGUgU2FmZXR5Kio6IEZ1bGwgVHlwZVNjcmlwdCBzdXBwb3J0IHdpdGggcHJvcGVyIHR5cGUgZGVmaW5pdGlvbnNcbiAqIC0gKipGaWxlIExvYWRpbmcqKjogU3VwcG9ydCBmb3IgbG9hZGluZyBjb25maWd1cmF0aW9ucyBmcm9tIGV4dGVybmFsIGZpbGVzXG4gKiAtICoqT1MgRGV0ZWN0aW9uKio6IENvbXByZWhlbnNpdmUgb3BlcmF0aW5nIHN5c3RlbSBpZGVudGlmaWNhdGlvblxuICogLSAqKk1lbW9yeSBFZmZpY2llbnQqKjogSW4tbWVtb3J5IHN0b3JhZ2Ugd2l0aCBvcHRpb25hbCBwZXJzaXN0ZW5jZVxuICogXG4gKiAjIyMgVXNlIENhc2VzXG4gKiAtIEFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudFxuICogLSBFbnZpcm9ubWVudCB2YXJpYWJsZSBtYW5hZ2VtZW50XG4gKiAtIEZlYXR1cmUgZmxhZyBjb25maWd1cmF0aW9uXG4gKiAtIERhdGFiYXNlIGNvbm5lY3Rpb24gc2V0dGluZ3NcbiAqIC0gQVBJIGVuZHBvaW50IGNvbmZpZ3VyYXRpb25cbiAqIC0gUGxhdGZvcm0tc3BlY2lmaWMgYmVoYXZpb3IgYWRhcHRhdGlvblxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9jb3JlXCI7XG4gKiBcbiAqIC8vIFNldCBhIGNvbmZpZ3VyYXRpb24gcHJvcGVydHlcbiAqIENvbmZpZ3VyYXRpb25zLnNldChcImFwaUVuZHBvaW50XCIsIFwiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb21cIik7XG4gKiAvLyBHZXQgYSBjb25maWd1cmF0aW9uIHByb3BlcnR5XG4gKiBjb25zdCBhcGlFbmRwb2ludCA9IENvbmZpZ3VyYXRpb25zLmdldChcImFwaUVuZHBvaW50XCIpO1xuICogY29uc29sZS5sb2coYXBpRW5kcG9pbnQpOyAvLyBPdXRwdXQ6IFwiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb21cIlxuICogXG4gKiAvLyBDaGVjayB0aGUgb3BlcmF0aW5nIHN5c3RlbVxuICogaWYgKENvbmZpZ3VyYXRpb25zLmlzT1NXaW5kb3dzKCkpIHtcbiAqICAgY29uc29sZS5sb2coXCJSdW5uaW5nIG9uIFdpbmRvd3NcIik7XG4gKiB9IGVsc2UgaWYgKENvbmZpZ3VyYXRpb25zLmlzT1NNYWMoKSkge1xuICogICBjb25zb2xlLmxvZyhcIlJ1bm5pbmcgb24gTWFjXCIpO1xuICogfSBlbHNlIGlmIChDb25maWd1cmF0aW9ucy5pc09TVU5JWCgpKSB7XG4gKiAgIGNvbnNvbGUubG9nKFwiUnVubmluZyBvbiBVTklYXCIpO1xuICogfVxuICogYGBgXG4qL1xuXG5jb25zdCBDb25maWd1cmF0aW9uID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbW1vbnMuY29uZmlnLkNvbmZpZ3VyYXRpb25cIik7XG5jb25zdCBDb25maWd1cmF0aW9uc0ZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5jb3JlLkNvbmZpZ3VyYXRpb25zRmFjYWRlXCIpO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBncm91cCB3aXRoIHRoZSBudW1iZXIgb2YgaXRzIGtleXMgYW5kIG9mIHRoZSBrZXlzIGFueSBzb3VyY2Ugc2V0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25maWd1cmF0aW9uR3JvdXAge1xuXHRpZDogc3RyaW5nO1xuXHRzZWN0aW9uOiBzdHJpbmc7XG5cdGxhYmVsOiBzdHJpbmc7XG5cdG9yZGVyOiBudW1iZXI7XG5cdHRvdGFsOiBudW1iZXI7XG5cdHNldDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgZGVzY3JpYmVkIGNvbmZpZ3VyYXRpb24ga2V5LiBFdmVyeSB2YWx1ZSBpcyBtYXNrZWQgYXMgXCIqKioqKioqKlwiIHdoZW4gdGhlIGtleSBpcyBzZW5zaXRpdmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlndXJhdGlvbkRlc2NyaXB0b3Ige1xuXHRrZXk6IHN0cmluZztcblx0c3ViZ3JvdXA/OiBzdHJpbmc7XG5cdHR5cGU/OiBzdHJpbmc7XG5cdGRlZmF1bHRWYWx1ZT86IHN0cmluZztcblx0LyoqIFRoZSBlZmZlY3RpdmUgdmFsdWUuICovXG5cdHZhbHVlPzogc3RyaW5nO1xuXHQvKiogV2hlcmUgdGhlIGVmZmVjdGl2ZSB2YWx1ZSBjb21lcyBmcm9tLiAqL1xuXHRzb3VyY2U6IFwicnVudGltZVwiIHwgXCJlbnZpcm9ubWVudFwiIHwgXCJkZXBsb3ltZW50XCIgfCBcIm1vZHVsZVwiIHwgXCJkZWZhdWx0XCIgfCBcInVuc2V0XCI7XG5cdC8qKiBUaGUgdmFsdWUgZWFjaCBzb3VyY2UgZ2l2ZXMgdGhlIGtleS4gKi9cblx0dmFsdWVzOiB7IHJ1bnRpbWU/OiBzdHJpbmc7IGVudmlyb25tZW50Pzogc3RyaW5nOyBkZXBsb3ltZW50Pzogc3RyaW5nOyBtb2R1bGU/OiBzdHJpbmcgfTtcblx0c2Vuc2l0aXZlOiBib29sZWFuO1xuXHRyZXN0YXJ0UmVxdWlyZWQ/OiBib29sZWFuO1xuXHR0ZW5hbnRPdmVycmlkYWJsZTogYm9vbGVhbjtcblx0ZGVwcmVjYXRlZEJ5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBncm91cCB3aXRoIGl0cyBkZXNjcmliZWQga2V5cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25maWd1cmF0aW9uRGVzY3JpcHRvckdyb3VwIHtcblx0Z3JvdXA6IHN0cmluZztcblx0c2VjdGlvbjogc3RyaW5nO1xuXHRsYWJlbDogc3RyaW5nO1xuXHRlbnRyaWVzOiBDb25maWd1cmF0aW9uRGVzY3JpcHRvcltdO1xufVxuXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbnMge1xuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbmZpZ3VyYXRpb24gdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBrZXkuXG5cdCAqIEBwYXJhbSBrZXkgVGhlIGNvbmZpZ3VyYXRpb24ga2V5LlxuXHQgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIFRoZSBvcHRpb25hbCBkZWZhdWx0IHZhbHVlIHRvIHJldHVybiBpZiB0aGUga2V5IGlzIG5vdCBmb3VuZC5cblx0ICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb24gdmFsdWUgYXMgYSBzdHJpbmcsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBrZXkgaXMgbm90IGZvdW5kIGFuZCBubyBkZWZhdWx0IGlzIHByb3ZpZGVkLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXQoa2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgdmFsdWUgPSBDb25maWd1cmF0aW9uLmdldChrZXksIGRlZmF1bHRWYWx1ZSk7XG5cdFx0cmV0dXJuIHZhbHVlID8/IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBjb25maWd1cmF0aW9uIHZhbHVlIGZvciB0aGUgZ2l2ZW4ga2V5LlxuXHQgKiBJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCBpdHMgdmFsdWUgaXMgb3ZlcndyaXR0ZW4uXG5cdCAqIEBwYXJhbSBrZXkgVGhlIGNvbmZpZ3VyYXRpb24ga2V5LlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIGNvbmZpZ3VyYXRpb24gdmFsdWUgdG8gc2V0LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRDb25maWd1cmF0aW9uLnNldChrZXksIHZhbHVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIHRoZSBjb25maWd1cmF0aW9uIHByb3BlcnR5IGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4ga2V5LlxuXHQgKiBAcGFyYW0ga2V5IFRoZSBjb25maWd1cmF0aW9uIGtleSB0byByZW1vdmUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHJlbW92ZShrZXk6IHN0cmluZyk6IHZvaWQge1xuXHRcdENvbmZpZ3VyYXRpb24ucmVtb3ZlKGtleSk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgbGlzdCBvZiBhbGwgY3VycmVudCBjb25maWd1cmF0aW9uIGtleXMuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGNvbmZpZ3VyYXRpb24ga2V5cyAoc3RyaW5ncykuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldEtleXMoKTogc3RyaW5nW10ge1xuXHRcdHJldHVybiBDb25maWd1cmF0aW9uLmdldEtleXMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbmZpZ3VyYXRpb24gZ3JvdXBzLCBpbiBkaXNwbGF5IG9yZGVyLCB3aXRoIHRoZSBudW1iZXIgb2Yga2V5cyBhbmQgb2Ygc2V0IGtleXMgaW4gZWFjaC5cblx0ICogQHJldHVybnMgVGhlIGdyb3Vwcy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0R3JvdXBzKCk6IENvbmZpZ3VyYXRpb25Hcm91cFtdIHtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShDb25maWd1cmF0aW9uc0ZhY2FkZS5nZXRHcm91cHMoKSk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBkZXNjcmliZWQgY29uZmlndXJhdGlvbiBrZXlzLCBncm91cGVkOiBkZWZhdWx0LCBlZmZlY3RpdmUgdmFsdWUsIGl0cyBzb3VyY2UgYW5kIHRoZSB2YWx1ZVxuXHQgKiBvZiBlYWNoIHNvdXJjZS4gU2Vuc2l0aXZlIHZhbHVlcyBhcmUgbWFza2VkLlxuXHQgKiBAcGFyYW0gZ3JvdXAgQSBncm91cCBpZCAoZS5nLiBcImRhdGFiYXNlXCIpIG9yIHNldmVyYWw7IGFsbCBncm91cHMgd2hlbiBvbWl0dGVkLlxuXHQgKiBAcmV0dXJucyBUaGUgZ3JvdXBzIHRoYXQgaGF2ZSBrZXlzLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXREZXNjcmlwdG9ycyhncm91cD86IHN0cmluZyB8IHN0cmluZ1tdKTogQ29uZmlndXJhdGlvbkRlc2NyaXB0b3JHcm91cFtdIHtcblx0XHRjb25zdCBncm91cHMgPSBncm91cCA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IEFycmF5LmlzQXJyYXkoZ3JvdXApID8gZ3JvdXAuam9pbihcIixcIikgOiBncm91cDtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShDb25maWd1cmF0aW9uc0ZhY2FkZS5nZXREZXNjcmlwdG9ycyhncm91cHMpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZnJvbSBhIGZpbGUgYXQgdGhlIHNwZWNpZmllZCBwYXRoLCBvdmVycmlkaW5nIGV4aXN0aW5nIG9uZXMuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBmaWxlIHBhdGggdG8gbG9hZCBjb25maWd1cmF0aW9ucyBmcm9tLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBsb2FkKHBhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRcdENvbmZpZ3VyYXRpb24ubG9hZChwYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWxvYWRzIG9yIHVwZGF0ZXMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmcm9tIHRoZWlyIHNvdXJjZSAoZS5nLiwgcGVyc2lzdGVuY2UgbGF5ZXIpLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyB1cGRhdGUoKTogdm9pZCB7XG5cdFx0Q29uZmlndXJhdGlvbi51cGRhdGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgT3BlcmF0aW5nIFN5c3RlbS5cblx0ICogQHJldHVybnMgVGhlIE9TIG5hbWUgYXMgYSBzdHJpbmcgKGUuZy4sIFwiV2luZG93c1wiLCBcIkxpbnV4XCIsIFwiTWFjIE9TIFhcIikuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldE9TKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIENvbmZpZ3VyYXRpb24uZ2V0T1MoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgT3BlcmF0aW5nIFN5c3RlbSBpcyBXaW5kb3dzLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBPUyBpcyBXaW5kb3dzLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGlzT1NXaW5kb3dzKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBDb25maWd1cmF0aW9uLmlzT1NXaW5kb3dzKCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IE9wZXJhdGluZyBTeXN0ZW0gaXMgTWFjIE9TIChvciBNYWMgT1MgWCkuXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIE9TIGlzIE1hYywgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpc09TTWFjKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBDb25maWd1cmF0aW9uLmlzT1NNYWMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgT3BlcmF0aW5nIFN5c3RlbSBpcyBhIFVOSVgtbGlrZSBzeXN0ZW0gKGUuZy4sIExpbnV4LCBtYWNPUywgb3Igb3RoZXJzKS5cblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgT1MgaXMgYSBVTklYIHZhcmlhbnQsIGZhbHNlIG90aGVyd2lzZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgaXNPU1VOSVgoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIENvbmZpZ3VyYXRpb24uaXNPU1VOSVgoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgT3BlcmF0aW5nIFN5c3RlbSBpcyBTb2xhcmlzLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBPUyBpcyBTb2xhcmlzLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGlzT1NTb2xhcmlzKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBDb25maWd1cmF0aW9uLmlzT1NTb2xhcmlzKCk7XG5cdH1cblxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IENvbmZpZ3VyYXRpb25zO1xufSJdLAogICJtYXBwaW5ncyI6ICJBQTZDQSxNQUFNLGdCQUFnQixLQUFLLEtBQUssb0RBQW9EO0FBQ3BGLE1BQU0sdUJBQXVCLEtBQUssS0FBSyxnRUFBZ0U7QUE0Q2hHLE1BQU0sZUFBZTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUTNCLE9BQWMsSUFBSSxLQUFhLGNBQTJDO0FBQ3pFLFVBQU0sUUFBUSxjQUFjLElBQUksS0FBSyxZQUFZO0FBQ2pELFdBQU8sU0FBUztBQUFBLEVBQ2pCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxPQUFjLElBQUksS0FBYSxPQUFxQjtBQUNuRCxrQkFBYyxJQUFJLEtBQUssS0FBSztBQUFBLEVBQzdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BLE9BQWMsT0FBTyxLQUFtQjtBQUN2QyxrQkFBYyxPQUFPLEdBQUc7QUFBQSxFQUN6QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNQSxPQUFjLFVBQW9CO0FBQ2pDLFdBQU8sY0FBYyxRQUFRO0FBQUEsRUFDOUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTUEsT0FBYyxZQUFrQztBQUMvQyxXQUFPLEtBQUssTUFBTSxxQkFBcUIsVUFBVSxDQUFDO0FBQUEsRUFDbkQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLE9BQWMsZUFBZSxPQUEyRDtBQUN2RixVQUFNLFNBQVMsVUFBVSxTQUFZLE9BQU8sTUFBTSxRQUFRLEtBQUssSUFBSSxNQUFNLEtBQUssR0FBRyxJQUFJO0FBQ3JGLFdBQU8sS0FBSyxNQUFNLHFCQUFxQixlQUFlLE1BQU0sQ0FBQztBQUFBLEVBQzlEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BLE9BQWMsS0FBSyxNQUFvQjtBQUN0QyxrQkFBYyxLQUFLLElBQUk7QUFBQSxFQUN4QjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsT0FBYyxTQUFlO0FBQzVCLGtCQUFjLE9BQU87QUFBQSxFQUN0QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNQSxPQUFjLFFBQWdCO0FBQzdCLFdBQU8sY0FBYyxNQUFNO0FBQUEsRUFDNUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTUEsT0FBYyxjQUF1QjtBQUNwQyxXQUFPLGNBQWMsWUFBWTtBQUFBLEVBQ2xDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BLE9BQWMsVUFBbUI7QUFDaEMsV0FBTyxjQUFjLFFBQVE7QUFBQSxFQUM5QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNQSxPQUFjLFdBQW9CO0FBQ2pDLFdBQU8sY0FBYyxTQUFTO0FBQUEsRUFDL0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTUEsT0FBYyxjQUF1QjtBQUNwQyxXQUFPLGNBQWMsWUFBWTtBQUFBLEVBQ2xDO0FBRUQ7QUFHQSxJQUFJLE9BQU8sV0FBVyxhQUFhO0FBRWxDLFNBQU8sVUFBVTtBQUNsQjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -155,4 +155,4 @@ export {
155
155
  GetResponse,
156
156
  Header
157
157
  };
158
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V0Y2QvY2xpZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgZXRjZC9jbGllbnRcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9ldGNkXG4gKiBAbmFtZSBDbGllbnRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGBDbGllbnRgIGNsYXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBFdGNkIGtleS12YWx1ZSBzdG9yZSB3aXRoaW4gdGhlIERpcmlnaWJsZSBlbnZpcm9ubWVudC4gVGhlIGBDbGllbnRgIGNsYXNzIGFsbG93cyBkZXZlbG9wZXJzIHRvIHBlcmZvcm0gYmFzaWMgb3BlcmF0aW9ucyBzdWNoIGFzIHB1dHRpbmcgKHdyaXRpbmcpIHZhbHVlcywgZ2V0dGluZyB2YWx1ZXMsIGFuZCBkZWxldGluZyBrZXlzIGluIEV0Y2QuIEl0IGFsc28gaW5jbHVkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgYmV0d2VlbiBKYXZhU2NyaXB0IHR5cGVzIGFuZCB0aGUgbmF0aXZlIEphdmEvRXRjZCB0eXBlcyB1c2VkIGJ5IHRoZSB1bmRlcmx5aW5nIEV0Y2QgY2xpZW50IGxpYnJhcnkuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXNcbiAqIC0gUHV0IHN0cmluZyBvciBieXRlIGFycmF5IHZhbHVlcyB0byBFdGNkIGtleXMuXG4gKiAtIEdldCB2YWx1ZXMgZnJvbSBFdGNkIGtleXMgd2l0aCBvcHRpb25zIGZvciBzdHJpbmcgb3IgYnl0ZSBhcnJheSBmb3JtYXRzLlxuICogLSBSZXRyaWV2ZSBtZXRhZGF0YSBhYm91dCB0aGUgRXRjZCBjbHVzdGVyIGFuZCBrZXktdmFsdWUgc3RvcmUgdGhyb3VnaCByZXNwb25zZSBoZWFkZXJzLlxuICogLSBEZWxldGUga2V5cyBmcm9tIEV0Y2QuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXNcbiAqIC0gU3RvcmluZyBjb25maWd1cmF0aW9uIGRhdGEgb3IgYXBwbGljYXRpb24gc3RhdGUgaW4gRXRjZCBmb3IgZGlzdHJpYnV0ZWQgYXBwbGljYXRpb25zLlxuICogLSBSZXRyaWV2aW5nIGFuZCBtYW5hZ2luZyBrZXktdmFsdWUgcGFpcnMgaW4gRXRjZCBmb3Igc2VydmljZSBkaXNjb3ZlcnksIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCwgb3IgY29vcmRpbmF0aW9uIHRhc2tzLlxuICogLSBJbnRlZ3JhdGluZyB3aXRoIG90aGVyIG1vZHVsZXMgdGhhdCByZXF1aXJlIGEgY29uc2lzdGVudCBpbnRlcmZhY2UgZm9yIGludGVyYWN0aW5nIHdpdGggRXRjZCBhcyBhIGJhY2tlbmQgc3RvcmUuXG4gKiBcbiAqICMjIyBFeGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSBcIkBhZXJva2l0L3Nkay9ldGNkXCI7XG4gKiBcbiAqIGNvbnN0IGV0Y2RDbGllbnQgPSBuZXcgQ2xpZW50KCk7XG4gKiBcbiAqIC8vIFB1dCBhIHN0cmluZyB2YWx1ZSB0byBhIGtleVxuICogZXRjZENsaWVudC5wdXRTdHJpbmdWYWx1ZShcImNvbmZpZy9hcHBOYW1lXCIsIFwiTXlBcHBcIik7XG4gKiBcbiAqIC8vIEdldCB0aGUgc3RyaW5nIHZhbHVlIG9mIGEga2V5XG4gKiBjb25zdCBhcHBOYW1lID0gZXRjZENsaWVudC5nZXRLdnNTdHJpbmdWYWx1ZShcImNvbmZpZy9hcHBOYW1lXCIpO1xuICogY29uc29sZS5sb2coYXBwTmFtZSk7IC8vIE91dHB1dDogeyBcImNvbmZpZy9hcHBOYW1lXCI6IFwiTXlBcHBcIiB9XG4gKiBcbiAqIC8vIERlbGV0ZSBhIGtleVxuICogZXRjZENsaWVudC5kZWxldGUoXCJjb25maWcvYXBwTmFtZVwiKTtcbiAqIGBgYFxuICovXG5cbmNvbnN0IEV0Y2RGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZXRjZC5FdGNkRmFjYWRlXCIpO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVVRJTElUWSBGVU5DVElPTlNcbi8vIFRoZXNlIGZ1bmN0aW9ucyBoYW5kbGUgdGhlIGNvbnZlcnNpb24gYmV0d2VlbiBKYXZhU2NyaXB0L1R5cGVTY3JpcHQgdHlwZXMgKHN0cmluZywgSW50OEFycmF5KVxuLy8gYW5kIHRoZSBuYXRpdmUgSmF2YS9FdGNkIHR5cGVzIChCeXRlU2VxdWVuY2UsIG5hdGl2ZSBieXRlIGFycmF5cykuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIGEgbmF0aXZlIEV0Y2QgQnl0ZVNlcXVlbmNlIG9iamVjdC5cbiAqIEBwYXJhbSBzdHIgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIG5hdGl2ZSBCeXRlU2VxdWVuY2Ugb2JqZWN0IChKYXZhIHR5cGUpLlxuICovXG5mdW5jdGlvbiBTdHJpbmdUb0J5dGVTZXF1ZW5jZShzdHI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIEV0Y2RGYWNhZGUuc3RyaW5nVG9CeXRlU2VxdWVuY2Uoc3RyKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIEphdmFTY3JpcHQgSW50OEFycmF5IChieXRlIGFycmF5KSB0byBhIG5hdGl2ZSBFdGNkIEJ5dGVTZXF1ZW5jZSBvYmplY3QuXG4gKiBAcGFyYW0gYXJyIFRoZSBJbnQ4QXJyYXkgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBuYXRpdmUgQnl0ZVNlcXVlbmNlIG9iamVjdCAoSmF2YSB0eXBlKS5cbiAqL1xuZnVuY3Rpb24gQnl0ZUFycmF5VG9CeXRlU2VxdWVuY2UoYXJyOiBJbnQ4QXJyYXkpOiBhbnkge1xuICAgIHJldHVybiBFdGNkRmFjYWRlLmJ5dGVBcnJheVRvQnl0ZVNlcXVlbmNlKGFycik7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBuYXRpdmUgRXRjZCBCeXRlU2VxdWVuY2Ugb2JqZWN0IGJhY2sgdG8gYSBzdHJpbmcuXG4gKiBAcGFyYW0gdmFsdWUgVGhlIG5hdGl2ZSBCeXRlU2VxdWVuY2Ugb2JqZWN0LlxuICogQHJldHVybnMgVGhlIGRlY29kZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBCeXRlU2VxdWVuY2VUb1N0cmluZyh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gRXRjZEZhY2FkZS5ieXRlU2VxdWVuY2VUb1N0cmluZyh2YWx1ZSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBuYXRpdmUgSmF2YSBhcnJheSBvZiBieXRlcyBpbnRvIGEgSmF2YVNjcmlwdCBJbnQ4QXJyYXkuXG4gKiBAcGFyYW0gdmFsdWUgVGhlIG5hdGl2ZSBCeXRlU2VxdWVuY2Ugb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGJ5dGVzLlxuICogQHJldHVybnMgQSBKYXZhU2NyaXB0IEludDhBcnJheS5cbiAqL1xuZnVuY3Rpb24gQnl0ZXNUb0FycmF5KHZhbHVlOiBhbnkpOiBJbnQ4QXJyYXkge1xuICAgIGNvbnN0IGFycmF5ID0gdmFsdWUuZ2V0Qnl0ZXMoKTsgLy8gR2V0IHRoZSBuYXRpdmUgYnl0ZSBhcnJheVxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBJbnQ4QXJyYXkoYXJyYXkubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vIENvbnZlcnNpb24gZnJvbSBKYXZhIGJ5dGUgdG8gSmF2YVNjcmlwdCBJbnQ4IHZhbHVlXG4gICAgICAgIHJlc3VsdFtpXSA9IHBhcnNlSW50KGFycmF5W2ldLCAxMCk7IFxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEhlbHBlciB0byBwcm9jZXNzIGEgbGlzdCBvZiBLZXktVmFsdWUgKEtWKSBvYmplY3RzIGludG8gYSBzdGFuZGFyZCBKYXZhU2NyaXB0IG9iamVjdC5cbiAqIEBwYXJhbSBrdnNMaXN0IFRoZSBuYXRpdmUgbGlzdCBvZiBLViBvYmplY3RzLlxuICogQHBhcmFtIGZ1bmMgVGhlIGNvbnZlcnNpb24gZnVuY3Rpb24gZm9yIHRoZSB2YWx1ZSAoZS5nLiwgQnl0ZVNlcXVlbmNlVG9TdHJpbmcgb3IgQnl0ZXNUb0FycmF5KS5cbiAqIEByZXR1cm5zIEEgc3RhbmRhcmQgSmF2YVNjcmlwdCBvYmplY3QgbWFwcGluZyBzdHJpbmcga2V5cyB0byBzcGVjaWZpZWQgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBLZXlWYWx1ZU9iamVjdDxUPihrdnNMaXN0OiBhbnlbXSwgZnVuYzogKHZhbHVlOiBhbnkpID0+IFQpOiB7IFtrZXk6IHN0cmluZ106IFQgfSB7XG4gICAgY29uc3Qga3ZPYmplY3Q6IHsgW2tleTogc3RyaW5nXTogVCB9ID0ge307XG4gICAga3ZzTGlzdC5mb3JFYWNoKChrdnM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBrZXk6IHN0cmluZyA9IEJ5dGVTZXF1ZW5jZVRvU3RyaW5nKGt2cy5nZXRLZXkoKSk7XG4gICAgICAgIGNvbnN0IHZhbHVlOiBUID0gZnVuYyhrdnMuZ2V0VmFsdWUoKSk7XG4gICAgICAgIGt2T2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICB9KTtcblxuICAgIHJldHVybiBrdk9iamVjdDtcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgbmF0aXZlIEtWUyBsaXN0IHRvIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBzdHJpbmcgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBLZXlWYWx1ZU9iamVjdFN0cmluZyhrdnNMaXN0OiBhbnlbXSk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiBLZXlWYWx1ZU9iamVjdChrdnNMaXN0LCBCeXRlU2VxdWVuY2VUb1N0cmluZyk7XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIG5hdGl2ZSBLVlMgbGlzdCB0byBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggSW50OEFycmF5IHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gS2V5VmFsdWVPYmplY3RCeXRlQXJyYXkoa3ZzTGlzdDogYW55W10pOiB7IFtrZXk6IHN0cmluZ106IEludDhBcnJheSB9IHtcbiAgICByZXR1cm4gS2V5VmFsdWVPYmplY3Qoa3ZzTGlzdCwgQnl0ZXNUb0FycmF5KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVUQ0QgUkVTUE9OU0UgQ0xBU1NFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBoZWFkZXIgbWV0YWRhdGEgb2YgYW4gRXRjZCByZXNwb25zZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEhlYWRlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG4gICAgICAgIHRoaXMubmF0aXZlID0gbmF0aXZlO1xuICAgIH1cblxuICAgIC8qKiBUaGUgcmV2aXNpb24gb2YgdGhlIGtleS12YWx1ZSBzdG9yZSB3aGVuIHRoZSByZXF1ZXN0IHdhcyBwcm9jZXNzZWQuICovXG4gICAgcHVibGljIGdldFJldmlzaW9uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5nZXRSZXZpc2lvbigpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgSUQgb2YgdGhlIGNsdXN0ZXIgd2hpY2ggdGhlIHJlcXVlc3Qgd2FzIHNlbnQgdG8uICovXG4gICAgcHVibGljIGdldENsdXN0ZXJJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Q2x1c3RlcklkKCk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBJRCBvZiB0aGUgbWVtYmVyIHdoaWNoIHRoZSByZXF1ZXN0IHdhcyBoYW5kbGVkIGJ5LiAqL1xuICAgIHB1YmxpYyBnZXRNZW1iZXJJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TWVtYmVySWQoKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIFJhZnQgdGVybS4gKi9cbiAgICBwdWJsaWMgZ2V0UmFmdFRlcm0oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldFJhZnRUZXJtKCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHJlc3BvbnNlIG9iamVjdCBmb3IgYSBHZXQgb3BlcmF0aW9uIGZyb20gRXRjZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEdldFJlc3BvbnNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5uYXRpdmUgPSBuYXRpdmU7XG4gICAgfVxuXG4gICAgLyoqIFJldHJpZXZlcyB0aGUgcmVzcG9uc2UgaGVhZGVyIGNvbnRhaW5pbmcgY2x1c3RlciBtZXRhZGF0YS4gKi9cbiAgICBwdWJsaWMgZ2V0SGVhZGVyKCk6IEhlYWRlciB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZUhlYWRlciA9IHRoaXMubmF0aXZlLmdldEhlYWRlcigpO1xuICAgICAgICByZXR1cm4gbmV3IEhlYWRlcihuYXRpdmVIZWFkZXIpO1xuICAgIH1cblxuICAgIC8qKiBSZXRyaWV2ZXMgdGhlIEtleS1WYWx1ZSBwYWlycyB3aXRoIHZhbHVlcyBjb252ZXJ0ZWQgdG8gc3RyaW5ncy4gKi9cbiAgICBwdWJsaWMgZ2V0S3ZzU3RyaW5nKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgICAgICByZXR1cm4gS2V5VmFsdWVPYmplY3RTdHJpbmcodGhpcy5uYXRpdmUuZ2V0S3ZzKCkpO1xuICAgIH1cblxuICAgIC8qKiBSZXRyaWV2ZXMgdGhlIEtleS1WYWx1ZSBwYWlycyB3aXRoIHZhbHVlcyBjb252ZXJ0ZWQgdG8gSW50OEFycmF5IChieXRlIGFycmF5cykuICovXG4gICAgcHVibGljIGdldEt2c0J5dGVBcnJheSgpOiB7IFtrZXk6IHN0cmluZ106IEludDhBcnJheSB9IHtcbiAgICAgICAgcmV0dXJuIEtleVZhbHVlT2JqZWN0Qnl0ZUFycmF5KHRoaXMubmF0aXZlLmdldEt2cygpKTtcbiAgICB9XG5cbiAgICAvKiogUmV0cmlldmVzIHRoZSBudW1iZXIgb2YgS2V5LVZhbHVlIHBhaXJzIHJldHVybmVkLiAqL1xuICAgIHB1YmxpYyBnZXRDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Q291bnQoKTtcbiAgICB9XG59XG5cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVUQ0QgQ0xJRU5UIEZBQ0FERVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDbGllbnQgZmFjYWRlIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBFdGNkIGtleS12YWx1ZSBzdG9yZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENsaWVudCB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubmF0aXZlID0gRXRjZEZhY2FkZS5nZXRDbGllbnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhIGJsb2NraW5nIEdFVCByZXF1ZXN0IG9uIHRoZSBzcGVjaWZpZWQga2V5LlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byByZXRyaWV2ZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgcHJvY2Vzc2VkIEdldFJlc3BvbnNlIG9iamVjdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldChrZXk6IHN0cmluZyk6IEdldFJlc3BvbnNlIHtcbiAgICAgICAgLy8gRXRjZCBjbGllbnQgcmV0dXJucyBhIENvbXBsZXRhYmxlRnV0dXJlIHdoaWNoIGlzIGJsb2NrZWQgaGVyZSB1c2luZyAuZ2V0KClcbiAgICAgICAgY29uc3QgZXRjZENvbXBsZXRhYmxlRnV0dXJlID0gdGhpcy5uYXRpdmUuZ2V0KFN0cmluZ1RvQnl0ZVNlcXVlbmNlKGtleSkpO1xuICAgICAgICBjb25zdCBuYXRpdmVSZXNwb25zZSA9IGV0Y2RDb21wbGV0YWJsZUZ1dHVyZS5nZXQoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBHZXRSZXNwb25zZShuYXRpdmVSZXNwb25zZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHV0cyAod3JpdGVzKSBhIHN0cmluZyB2YWx1ZSB0byB0aGUgc3BlY2lmaWVkIGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gd3JpdGUgdG8uXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgdmFsdWUuXG4gICAgICovXG4gICAgcHVibGljIHB1dFN0cmluZ1ZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmF0aXZlLnB1dChTdHJpbmdUb0J5dGVTZXF1ZW5jZShrZXkpLCBTdHJpbmdUb0J5dGVTZXF1ZW5jZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFB1dHMgKHdyaXRlcykgYSBieXRlIGFycmF5IHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQga2V5LlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byB3cml0ZSB0by5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIEludDhBcnJheSAoYnl0ZSBhcnJheSkgdmFsdWUuXG4gICAgICovXG4gICAgcHVibGljIHB1dEJ5dGVBcnJheVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogSW50OEFycmF5KTogdm9pZCB7XG4gICAgICAgIHRoaXMubmF0aXZlLnB1dChTdHJpbmdUb0J5dGVTZXF1ZW5jZShrZXkpLCBCeXRlQXJyYXlUb0J5dGVTZXF1ZW5jZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgcmVzcG9uc2UgaGVhZGVyIG1ldGFkYXRhIGZvciBhIGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgVGhlIHtAbGluayBIZWFkZXJ9IG9iamVjdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SGVhZGVyKGtleTogc3RyaW5nKTogSGVhZGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KGtleSkuZ2V0SGVhZGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBLZXktVmFsdWUgcGFpcnMgYXMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHN0cmluZyB2YWx1ZXMuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IChvciBrZXkgcHJlZml4KSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyBBbiBvYmplY3QgbWFwcGluZyBrZXlzIHRvIHN0cmluZyB2YWx1ZXMuXG4gICAgICovXG4gICAgcHVibGljIGdldEt2c1N0cmluZ1ZhbHVlKGtleTogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldChrZXkpLmdldEt2c1N0cmluZygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgS2V5LVZhbHVlIHBhaXJzIGFzIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBJbnQ4QXJyYXkgdmFsdWVzLlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSAob3Iga2V5IHByZWZpeCkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgQW4gb2JqZWN0IG1hcHBpbmcga2V5cyB0byBJbnQ4QXJyYXkgdmFsdWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRLdnNCeXRlQXJyYXlWYWx1ZShrZXk6IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogSW50OEFycmF5IH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoa2V5KS5nZXRLdnNCeXRlQXJyYXkoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGNvdW50IG9mIEtleS1WYWx1ZSBwYWlycyBtYXRjaGluZyB0aGUga2V5IChvciBrZXkgcHJlZml4KS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgKG9yIGtleSBwcmVmaXgpIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIFRoZSBjb3VudCBvZiBtYXRjaGluZyBlbnRyaWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb3VudChrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldChrZXkpLmdldENvdW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlcyB0aGUgc3BlY2lmaWVkIGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gZGVsZXRlLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGUoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uYXRpdmUuZGVsZXRlKFN0cmluZ1RvQnl0ZVNlcXVlbmNlKGtleSkpO1xuICAgIH1cbn1cblxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IENsaWVudDtcbn0iXSwKICAibWFwcGluZ3MiOiAiQUFxQ0EsTUFBTSxhQUFhLEtBQUssS0FBSyxzREFBc0Q7QUFhbkYsU0FBUyxxQkFBcUIsS0FBa0I7QUFDNUMsU0FBTyxXQUFXLHFCQUFxQixHQUFHO0FBQzlDO0FB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
158
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V0Y2QvY2xpZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgZXRjZC9jbGllbnRcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9ldGNkXG4gKiBAbmFtZSBDbGllbnRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGBDbGllbnRgIGNsYXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBFdGNkIGtleS12YWx1ZSBzdG9yZSB3aXRoaW4gdGhlIERpcmlnaWJsZSBlbnZpcm9ubWVudC4gVGhlIGBDbGllbnRgIGNsYXNzIGFsbG93cyBkZXZlbG9wZXJzIHRvIHBlcmZvcm0gYmFzaWMgb3BlcmF0aW9ucyBzdWNoIGFzIHB1dHRpbmcgKHdyaXRpbmcpIHZhbHVlcywgZ2V0dGluZyB2YWx1ZXMsIGFuZCBkZWxldGluZyBrZXlzIGluIEV0Y2QuIEl0IGFsc28gaW5jbHVkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgYmV0d2VlbiBKYXZhU2NyaXB0IHR5cGVzIGFuZCB0aGUgbmF0aXZlIEphdmEvRXRjZCB0eXBlcyB1c2VkIGJ5IHRoZSB1bmRlcmx5aW5nIEV0Y2QgY2xpZW50IGxpYnJhcnkuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXNcbiAqIC0gUHV0IHN0cmluZyBvciBieXRlIGFycmF5IHZhbHVlcyB0byBFdGNkIGtleXMuXG4gKiAtIEdldCB2YWx1ZXMgZnJvbSBFdGNkIGtleXMgd2l0aCBvcHRpb25zIGZvciBzdHJpbmcgb3IgYnl0ZSBhcnJheSBmb3JtYXRzLlxuICogLSBSZXRyaWV2ZSBtZXRhZGF0YSBhYm91dCB0aGUgRXRjZCBjbHVzdGVyIGFuZCBrZXktdmFsdWUgc3RvcmUgdGhyb3VnaCByZXNwb25zZSBoZWFkZXJzLlxuICogLSBEZWxldGUga2V5cyBmcm9tIEV0Y2QuXG4gKlxuICogIyMjIEF2YWlsYWJpbGl0eVxuICogVGhlIGV0Y2QgY2xpZW50IGxpYnJhcnkgKGpldGNkKSBpcyBhbiBhZGQtb24gdGhhdCB0aGUgZGVmYXVsdCBidW5kbGUgZG9lcyBub3Qgc2hpcDogdGhlIGFwcGxpY2F0aW9uIGFkZHNcbiAqIGBvcmcuZWNsaXBzZS5kaXJpZ2libGU6ZGlyaWdpYmxlLWNvbXBvbmVudHMtYXBpLWV0Y2QtY2xpZW50YCAoYDx0eXBlPnBvbTwvdHlwZT5gKS4gV2l0aG91dCBpdCwgZXZlcnkgY2FsbFxuICogdGhyb3dzIGBFdGNkTm90QXZhaWxhYmxlRXhjZXB0aW9uYCBuYW1pbmcgdGhhdCBhcnRpZmFjdC5cbiAqIFxuICogIyMjIFVzZSBDYXNlc1xuICogLSBTdG9yaW5nIGNvbmZpZ3VyYXRpb24gZGF0YSBvciBhcHBsaWNhdGlvbiBzdGF0ZSBpbiBFdGNkIGZvciBkaXN0cmlidXRlZCBhcHBsaWNhdGlvbnMuXG4gKiAtIFJldHJpZXZpbmcgYW5kIG1hbmFnaW5nIGtleS12YWx1ZSBwYWlycyBpbiBFdGNkIGZvciBzZXJ2aWNlIGRpc2NvdmVyeSwgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50LCBvciBjb29yZGluYXRpb24gdGFza3MuXG4gKiAtIEludGVncmF0aW5nIHdpdGggb3RoZXIgbW9kdWxlcyB0aGF0IHJlcXVpcmUgYSBjb25zaXN0ZW50IGludGVyZmFjZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBFdGNkIGFzIGEgYmFja2VuZCBzdG9yZS5cbiAqIFxuICogIyMjIEV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBDbGllbnQgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2V0Y2RcIjtcbiAqIFxuICogY29uc3QgZXRjZENsaWVudCA9IG5ldyBDbGllbnQoKTtcbiAqIFxuICogLy8gUHV0IGEgc3RyaW5nIHZhbHVlIHRvIGEga2V5XG4gKiBldGNkQ2xpZW50LnB1dFN0cmluZ1ZhbHVlKFwiY29uZmlnL2FwcE5hbWVcIiwgXCJNeUFwcFwiKTtcbiAqIFxuICogLy8gR2V0IHRoZSBzdHJpbmcgdmFsdWUgb2YgYSBrZXlcbiAqIGNvbnN0IGFwcE5hbWUgPSBldGNkQ2xpZW50LmdldEt2c1N0cmluZ1ZhbHVlKFwiY29uZmlnL2FwcE5hbWVcIik7XG4gKiBjb25zb2xlLmxvZyhhcHBOYW1lKTsgLy8gT3V0cHV0OiB7IFwiY29uZmlnL2FwcE5hbWVcIjogXCJNeUFwcFwiIH1cbiAqIFxuICogLy8gRGVsZXRlIGEga2V5XG4gKiBldGNkQ2xpZW50LmRlbGV0ZShcImNvbmZpZy9hcHBOYW1lXCIpO1xuICogYGBgXG4gKi9cblxuY29uc3QgRXRjZEZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5ldGNkLkV0Y2RGYWNhZGVcIik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBVVElMSVRZIEZVTkNUSU9OU1xuLy8gVGhlc2UgZnVuY3Rpb25zIGhhbmRsZSB0aGUgY29udmVyc2lvbiBiZXR3ZWVuIEphdmFTY3JpcHQvVHlwZVNjcmlwdCB0eXBlcyAoc3RyaW5nLCBJbnQ4QXJyYXkpXG4vLyBhbmQgdGhlIG5hdGl2ZSBKYXZhL0V0Y2QgdHlwZXMgKEJ5dGVTZXF1ZW5jZSwgbmF0aXZlIGJ5dGUgYXJyYXlzKS5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ29udmVydHMgYSBzdHJpbmcgdG8gYSBuYXRpdmUgRXRjZCBCeXRlU2VxdWVuY2Ugb2JqZWN0LlxuICogQHBhcmFtIHN0ciBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgbmF0aXZlIEJ5dGVTZXF1ZW5jZSBvYmplY3QgKEphdmEgdHlwZSkuXG4gKi9cbmZ1bmN0aW9uIFN0cmluZ1RvQnl0ZVNlcXVlbmNlKHN0cjogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gRXRjZEZhY2FkZS5zdHJpbmdUb0J5dGVTZXF1ZW5jZShzdHIpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgSmF2YVNjcmlwdCBJbnQ4QXJyYXkgKGJ5dGUgYXJyYXkpIHRvIGEgbmF0aXZlIEV0Y2QgQnl0ZVNlcXVlbmNlIG9iamVjdC5cbiAqIEBwYXJhbSBhcnIgVGhlIEludDhBcnJheSB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIG5hdGl2ZSBCeXRlU2VxdWVuY2Ugb2JqZWN0IChKYXZhIHR5cGUpLlxuICovXG5mdW5jdGlvbiBCeXRlQXJyYXlUb0J5dGVTZXF1ZW5jZShhcnI6IEludDhBcnJheSk6IGFueSB7XG4gICAgcmV0dXJuIEV0Y2RGYWNhZGUuYnl0ZUFycmF5VG9CeXRlU2VxdWVuY2UoYXJyKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIG5hdGl2ZSBFdGNkIEJ5dGVTZXF1ZW5jZSBvYmplY3QgYmFjayB0byBhIHN0cmluZy5cbiAqIEBwYXJhbSB2YWx1ZSBUaGUgbmF0aXZlIEJ5dGVTZXF1ZW5jZSBvYmplY3QuXG4gKiBAcmV0dXJucyBUaGUgZGVjb2RlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIEJ5dGVTZXF1ZW5jZVRvU3RyaW5nKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBFdGNkRmFjYWRlLmJ5dGVTZXF1ZW5jZVRvU3RyaW5nKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIG5hdGl2ZSBKYXZhIGFycmF5IG9mIGJ5dGVzIGludG8gYSBKYXZhU2NyaXB0IEludDhBcnJheS5cbiAqIEBwYXJhbSB2YWx1ZSBUaGUgbmF0aXZlIEJ5dGVTZXF1ZW5jZSBvYmplY3QgY29udGFpbmluZyB0aGUgYnl0ZXMuXG4gKiBAcmV0dXJucyBBIEphdmFTY3JpcHQgSW50OEFycmF5LlxuICovXG5mdW5jdGlvbiBCeXRlc1RvQXJyYXkodmFsdWU6IGFueSk6IEludDhBcnJheSB7XG4gICAgY29uc3QgYXJyYXkgPSB2YWx1ZS5nZXRCeXRlcygpOyAvLyBHZXQgdGhlIG5hdGl2ZSBieXRlIGFycmF5XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEludDhBcnJheShhcnJheS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gQ29udmVyc2lvbiBmcm9tIEphdmEgYnl0ZSB0byBKYXZhU2NyaXB0IEludDggdmFsdWVcbiAgICAgICAgcmVzdWx0W2ldID0gcGFyc2VJbnQoYXJyYXlbaV0sIDEwKTsgXG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogSGVscGVyIHRvIHByb2Nlc3MgYSBsaXN0IG9mIEtleS1WYWx1ZSAoS1YpIG9iamVjdHMgaW50byBhIHN0YW5kYXJkIEphdmFTY3JpcHQgb2JqZWN0LlxuICogQHBhcmFtIGt2c0xpc3QgVGhlIG5hdGl2ZSBsaXN0IG9mIEtWIG9iamVjdHMuXG4gKiBAcGFyYW0gZnVuYyBUaGUgY29udmVyc2lvbiBmdW5jdGlvbiBmb3IgdGhlIHZhbHVlIChlLmcuLCBCeXRlU2VxdWVuY2VUb1N0cmluZyBvciBCeXRlc1RvQXJyYXkpLlxuICogQHJldHVybnMgQSBzdGFuZGFyZCBKYXZhU2NyaXB0IG9iamVjdCBtYXBwaW5nIHN0cmluZyBrZXlzIHRvIHNwZWNpZmllZCB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIEtleVZhbHVlT2JqZWN0PFQ+KGt2c0xpc3Q6IGFueVtdLCBmdW5jOiAodmFsdWU6IGFueSkgPT4gVCk6IHsgW2tleTogc3RyaW5nXTogVCB9IHtcbiAgICBjb25zdCBrdk9iamVjdDogeyBba2V5OiBzdHJpbmddOiBUIH0gPSB7fTtcbiAgICBrdnNMaXN0LmZvckVhY2goKGt2czogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGtleTogc3RyaW5nID0gQnl0ZVNlcXVlbmNlVG9TdHJpbmcoa3ZzLmdldEtleSgpKTtcbiAgICAgICAgY29uc3QgdmFsdWU6IFQgPSBmdW5jKGt2cy5nZXRWYWx1ZSgpKTtcbiAgICAgICAga3ZPYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGt2T2JqZWN0O1xufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBuYXRpdmUgS1ZTIGxpc3QgdG8gYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHN0cmluZyB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIEtleVZhbHVlT2JqZWN0U3RyaW5nKGt2c0xpc3Q6IGFueVtdKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIEtleVZhbHVlT2JqZWN0KGt2c0xpc3QsIEJ5dGVTZXF1ZW5jZVRvU3RyaW5nKTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgbmF0aXZlIEtWUyBsaXN0IHRvIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBJbnQ4QXJyYXkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBLZXlWYWx1ZU9iamVjdEJ5dGVBcnJheShrdnNMaXN0OiBhbnlbXSk6IHsgW2tleTogc3RyaW5nXTogSW50OEFycmF5IH0ge1xuICAgIHJldHVybiBLZXlWYWx1ZU9iamVjdChrdnNMaXN0LCBCeXRlc1RvQXJyYXkpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVRDRCBSRVNQT05TRSBDTEFTU0VTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGhlYWRlciBtZXRhZGF0YSBvZiBhbiBFdGNkIHJlc3BvbnNlLlxuICovXG5leHBvcnQgY2xhc3MgSGVhZGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5uYXRpdmUgPSBuYXRpdmU7XG4gICAgfVxuXG4gICAgLyoqIFRoZSByZXZpc2lvbiBvZiB0aGUga2V5LXZhbHVlIHN0b3JlIHdoZW4gdGhlIHJlcXVlc3Qgd2FzIHByb2Nlc3NlZC4gKi9cbiAgICBwdWJsaWMgZ2V0UmV2aXNpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldFJldmlzaW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBJRCBvZiB0aGUgY2x1c3RlciB3aGljaCB0aGUgcmVxdWVzdCB3YXMgc2VudCB0by4gKi9cbiAgICBwdWJsaWMgZ2V0Q2x1c3RlcklkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5nZXRDbHVzdGVySWQoKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIElEIG9mIHRoZSBtZW1iZXIgd2hpY2ggdGhlIHJlcXVlc3Qgd2FzIGhhbmRsZWQgYnkuICovXG4gICAgcHVibGljIGdldE1lbWJlcklkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5nZXRNZW1iZXJJZCgpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgUmFmdCB0ZXJtLiAqL1xuICAgIHB1YmxpYyBnZXRSYWZ0VGVybSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZ2V0UmFmdFRlcm0oKTtcbiAgICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgcmVzcG9uc2Ugb2JqZWN0IGZvciBhIEdldCBvcGVyYXRpb24gZnJvbSBFdGNkLlxuICovXG5leHBvcnQgY2xhc3MgR2V0UmVzcG9uc2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuICAgICAgICB0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcbiAgICB9XG5cbiAgICAvKiogUmV0cmlldmVzIHRoZSByZXNwb25zZSBoZWFkZXIgY29udGFpbmluZyBjbHVzdGVyIG1ldGFkYXRhLiAqL1xuICAgIHB1YmxpYyBnZXRIZWFkZXIoKTogSGVhZGVyIHtcbiAgICAgICAgY29uc3QgbmF0aXZlSGVhZGVyID0gdGhpcy5uYXRpdmUuZ2V0SGVhZGVyKCk7XG4gICAgICAgIHJldHVybiBuZXcgSGVhZGVyKG5hdGl2ZUhlYWRlcik7XG4gICAgfVxuXG4gICAgLyoqIFJldHJpZXZlcyB0aGUgS2V5LVZhbHVlIHBhaXJzIHdpdGggdmFsdWVzIGNvbnZlcnRlZCB0byBzdHJpbmdzLiAqL1xuICAgIHB1YmxpYyBnZXRLdnNTdHJpbmcoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgICAgIHJldHVybiBLZXlWYWx1ZU9iamVjdFN0cmluZyh0aGlzLm5hdGl2ZS5nZXRLdnMoKSk7XG4gICAgfVxuXG4gICAgLyoqIFJldHJpZXZlcyB0aGUgS2V5LVZhbHVlIHBhaXJzIHdpdGggdmFsdWVzIGNvbnZlcnRlZCB0byBJbnQ4QXJyYXkgKGJ5dGUgYXJyYXlzKS4gKi9cbiAgICBwdWJsaWMgZ2V0S3ZzQnl0ZUFycmF5KCk6IHsgW2tleTogc3RyaW5nXTogSW50OEFycmF5IH0ge1xuICAgICAgICByZXR1cm4gS2V5VmFsdWVPYmplY3RCeXRlQXJyYXkodGhpcy5uYXRpdmUuZ2V0S3ZzKCkpO1xuICAgIH1cblxuICAgIC8qKiBSZXRyaWV2ZXMgdGhlIG51bWJlciBvZiBLZXktVmFsdWUgcGFpcnMgcmV0dXJuZWQuICovXG4gICAgcHVibGljIGdldENvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5nZXRDb3VudCgpO1xuICAgIH1cbn1cblxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVRDRCBDTElFTlQgRkFDQURFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENsaWVudCBmYWNhZGUgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIEV0Y2Qga2V5LXZhbHVlIHN0b3JlLlxuICovXG5leHBvcnQgY2xhc3MgQ2xpZW50IHtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5uYXRpdmUgPSBFdGNkRmFjYWRlLmdldENsaWVudCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGEgYmxvY2tpbmcgR0VUIHJlcXVlc3Qgb24gdGhlIHNwZWNpZmllZCBrZXkuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHJldHJpZXZlLlxuICAgICAqIEByZXR1cm5zIFRoZSBwcm9jZXNzZWQgR2V0UmVzcG9uc2Ugb2JqZWN0LlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0KGtleTogc3RyaW5nKTogR2V0UmVzcG9uc2Uge1xuICAgICAgICAvLyBFdGNkIGNsaWVudCByZXR1cm5zIGEgQ29tcGxldGFibGVGdXR1cmUgd2hpY2ggaXMgYmxvY2tlZCBoZXJlIHVzaW5nIC5nZXQoKVxuICAgICAgICBjb25zdCBldGNkQ29tcGxldGFibGVGdXR1cmUgPSB0aGlzLm5hdGl2ZS5nZXQoU3RyaW5nVG9CeXRlU2VxdWVuY2Uoa2V5KSk7XG4gICAgICAgIGNvbnN0IG5hdGl2ZVJlc3BvbnNlID0gZXRjZENvbXBsZXRhYmxlRnV0dXJlLmdldCgpO1xuICAgICAgICByZXR1cm4gbmV3IEdldFJlc3BvbnNlKG5hdGl2ZVJlc3BvbnNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQdXRzICh3cml0ZXMpIGEgc3RyaW5nIHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQga2V5LlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byB3cml0ZSB0by5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHN0cmluZyB2YWx1ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcHV0U3RyaW5nVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uYXRpdmUucHV0KFN0cmluZ1RvQnl0ZVNlcXVlbmNlKGtleSksIFN0cmluZ1RvQnl0ZVNlcXVlbmNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHV0cyAod3JpdGVzKSBhIGJ5dGUgYXJyYXkgdmFsdWUgdG8gdGhlIHNwZWNpZmllZCBrZXkuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHdyaXRlIHRvLlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgSW50OEFycmF5IChieXRlIGFycmF5KSB2YWx1ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcHV0Qnl0ZUFycmF5VmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBJbnQ4QXJyYXkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uYXRpdmUucHV0KFN0cmluZ1RvQnl0ZVNlcXVlbmNlKGtleSksIEJ5dGVBcnJheVRvQnl0ZVNlcXVlbmNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSByZXNwb25zZSBoZWFkZXIgbWV0YWRhdGEgZm9yIGEga2V5LlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyBUaGUge0BsaW5rIEhlYWRlcn0gb2JqZWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRIZWFkZXIoa2V5OiBzdHJpbmcpOiBIZWFkZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoa2V5KS5nZXRIZWFkZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIEtleS1WYWx1ZSBwYWlycyBhcyBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggc3RyaW5nIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgKG9yIGtleSBwcmVmaXgpIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIEFuIG9iamVjdCBtYXBwaW5nIGtleXMgdG8gc3RyaW5nIHZhbHVlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0S3ZzU3RyaW5nVmFsdWUoa2V5OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KGtleSkuZ2V0S3ZzU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBLZXktVmFsdWUgcGFpcnMgYXMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIEludDhBcnJheSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IChvciBrZXkgcHJlZml4KSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyBBbiBvYmplY3QgbWFwcGluZyBrZXlzIHRvIEludDhBcnJheSB2YWx1ZXMuXG4gICAgICovXG4gICAgcHVibGljIGdldEt2c0J5dGVBcnJheVZhbHVlKGtleTogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBJbnQ4QXJyYXkgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldChrZXkpLmdldEt2c0J5dGVBcnJheSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgY291bnQgb2YgS2V5LVZhbHVlIHBhaXJzIG1hdGNoaW5nIHRoZSBrZXkgKG9yIGtleSBwcmVmaXgpLlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSAob3Iga2V5IHByZWZpeCkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgVGhlIGNvdW50IG9mIG1hdGNoaW5nIGVudHJpZXMuXG4gICAgICovXG4gICAgcHVibGljIGdldENvdW50KGtleTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KGtleSkuZ2V0Q291bnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIHRoZSBzcGVjaWZpZWQga2V5LlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBkZWxldGUuXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm5hdGl2ZS5kZWxldGUoU3RyaW5nVG9CeXRlU2VxdWVuY2Uoa2V5KSk7XG4gICAgfVxufVxuXG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gQ2xpZW50O1xufSJdLAogICJtYXBwaW5ncyI6ICJBQTBDQSxNQUFNLGFBQWEsS0FBSyxLQUFLLHNEQUFzRDtBQWFuRixTQUFTLHFCQUFxQixLQUFrQjtBQUM1QyxTQUFPLFdBQVcscUJBQXFCLEdBQUc7QUFDOUM7QUFPQSxTQUFTLHdCQUF3QixLQUFxQjtBQUNsRCxTQUFPLFdBQVcsd0JBQXdCLEdBQUc7QUFDakQ7QUFPQSxTQUFTLHFCQUFxQixPQUFvQjtBQUM5QyxTQUFPLFdBQVcscUJBQXFCLEtBQUs7QUFDaEQ7QUFPQSxTQUFTLGFBQWEsT0FBdUI7QUFDekMsUUFBTSxRQUFRLE1BQU0sU0FBUztBQUM3QixRQUFNLFNBQVMsSUFBSSxVQUFVLE1BQU0sTUFBTTtBQUN6QyxXQUFTLElBQUksR0FBRyxJQUFJLE1BQU0sUUFBUSxLQUFLO0FBRW5DLFdBQU8sQ0FBQyxJQUFJLFNBQVMsTUFBTSxDQUFDLEdBQUcsRUFBRTtBQUFBLEVBQ3JDO0FBQ0EsU0FBTztBQUNYO0FBUUEsU0FBUyxlQUFrQixTQUFnQixNQUErQztBQUN0RixRQUFNLFdBQWlDLENBQUM7QUFDeEMsVUFBUSxRQUFRLENBQUMsUUFBYTtBQUMxQixVQUFNLE1BQWMscUJBQXFCLElBQUksT0FBTyxDQUFDO0FBQ3JELFVBQU0sUUFBVyxLQUFLLElBQUksU0FBUyxDQUFDO0FBQ3BDLGFBQVMsR0FBRyxJQUFJO0FBQUEsRUFDcEIsQ0FBQztBQUVELFNBQU87QUFDWDtBQUtBLFNBQVMscUJBQXFCLFNBQTJDO0FBQ3JFLFNBQU8sZUFBZSxTQUFTLG9CQUFvQjtBQUN2RDtBQUtBLFNBQVMsd0JBQXdCLFNBQThDO0FBQzNF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