jsii-pacmak 1.50.0 → 1.53.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.
package/lib/index.js CHANGED
@@ -15,7 +15,10 @@ Object.defineProperty(exports, "configureLogging", { enumerable: true, get: func
15
15
  * Generates code in the desired targets.
16
16
  */
17
17
  async function pacmak({ argv = {}, clean = true, codeOnly = false, fingerprint = true, force = false, forceSubdirectory = true, forceTarget = false, inputDirectories, outputDirectory, parallel = true, recurse = false, rosettaTablet, targets = Object.values(targets_1.TargetName), timers = new timer_1.Timers(), rosettaUnknownSnippets = undefined, updateNpmIgnoreFiles = false, validateAssemblies = false, }) {
18
- const rosetta = new jsii_rosetta_1.Rosetta({ unknownSnippets: rosettaUnknownSnippets });
18
+ const rosetta = new jsii_rosetta_1.Rosetta({
19
+ unknownSnippets: rosettaUnknownSnippets,
20
+ prefixDisclaimer: true,
21
+ });
19
22
  if (rosettaTablet) {
20
23
  await rosetta.loadTabletFromFile(rosettaTablet);
21
24
  }
@@ -138,4 +141,4 @@ function describePackages(target) {
138
141
  return `${modules.length} modules`;
139
142
  }
140
143
  //#endregion
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBMEM7QUFDMUMsK0NBQTJEO0FBRTNELHFDQUFxQztBQUNyQywrQ0FBcUU7QUFFckUsdUNBQXFEO0FBTzVDLDJGQVBjLG9CQUFVLE9BT2Q7QUFObkIsbUNBQWlDO0FBRWpDLGlDQUFpQztBQUtqQyxxQ0FBMEQ7QUFBakQsMkdBQUEsU0FBUyxPQUFvQjtBQUV0Qzs7R0FFRztBQUNJLEtBQUssVUFBVSxNQUFNLENBQUMsRUFDM0IsSUFBSSxHQUFHLEVBQUUsRUFDVCxLQUFLLEdBQUcsSUFBSSxFQUNaLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLFdBQVcsR0FBRyxJQUFJLEVBQ2xCLEtBQUssR0FBRyxLQUFLLEVBQ2IsaUJBQWlCLEdBQUcsSUFBSSxFQUN4QixXQUFXLEdBQUcsS0FBSyxFQUNuQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFFBQVEsR0FBRyxJQUFJLEVBQ2YsT0FBTyxHQUFHLEtBQUssRUFDZixhQUFhLEVBQ2IsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsb0JBQVUsQ0FBQyxFQUNuQyxNQUFNLEdBQUcsSUFBSSxjQUFNLEVBQUUsRUFDckIsc0JBQXNCLEdBQUcsU0FBUyxFQUNsQyxvQkFBb0IsR0FBRyxLQUFLLEVBQzVCLGtCQUFrQixHQUFHLEtBQUssR0FDWjtJQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksc0JBQU8sQ0FBQyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDekUsSUFBSSxhQUFhLEVBQUU7UUFDakIsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDakQ7SUFFRCxNQUFNLHNCQUFzQixHQUFHLE1BQU0sNkJBQWUsQ0FDbEQsZ0JBQWdCLEVBQ2hCLE9BQU8sQ0FDUixDQUFDO0lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxjQUFPLENBQUMs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QUksUUFBUTtZQUM3QixDQUFDLENBQUMscUNBQXFDO2dCQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLHdEQUF3RDtnQkFDeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1QixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQ2xCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUNqQyxDQUNOLENBQUM7S0FDSDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxZQUFZO0FBRVoseUJBQXlCO0FBRXpCLFNBQVMsZ0JBQWdCLENBQUMsTUFBaUI7SUFDekMsTUFBTSxPQUFPLEdBQUcsY0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzVDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5QztJQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxVQUFVLENBQUM7QUFDckMsQ0FBQztBQUVELFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlU3lzdGVtIH0gZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCB7IFJvc2V0dGEsIFVua25vd25TbmlwcGV0TW9kZSB9IGZyb20gJ2pzaWktcm9zZXR0YSc7XG5cbmltcG9ydCAqIGFzIGxvZ2dpbmcgZnJvbSAnLi9sb2dnaW5nJztcbmltcG9ydCB7IGZpbmRKc2lpTW9kdWxlcywgdXBkYXRlQWxsTnBtSWdub3JlcyB9IGZyb20gJy4vbnBtLW1vZHVsZXMnO1xuaW1wb3J0IHsgSnNpaU1vZHVsZSB9IGZyb20gJy4vcGFja2FnaW5nJztcbmltcG9ydCB7IEFMTF9CVUlMREVSUywgVGFyZ2V0TmFtZSB9IGZyb20gJy4vdGFyZ2V0cyc7XG5pbXBvcnQgeyBUaW1lcnMgfSBmcm9tICcuL3RpbWVyJztcbmltcG9ydCB7IFRvcG9zb3J0ZWQgfSBmcm9tICcuL3RvcG9zb3J0JztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICcuL3V0aWwnO1xuXG4vLyNyZWdpb24gRXhwb3J0ZWQgQVBJc1xuXG5leHBvcnQgeyBUYXJnZXROYW1lIH07XG5leHBvcnQgeyBjb25maWd1cmUgYXMgY29uZmlndXJlTG9nZ2luZyB9IGZyb20gJy4vbG9nZ2luZyc7XG5cbi8qKlxuICogR2VuZXJhdGVzIGNvZGUgaW4gdGhlIGRlc2lyZWQgdGFyZ2V0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhY21hayh7XG4gIGFyZ3YgPSB7fSxcbiAgY2xlYW4gPSB0cnVlLFxuICBjb2RlT25seSA9IGZhbHNlLFxuICBmaW5nZXJwcmludCA9IHRydWUsXG4gIGZvcmNlID0gZmFsc2UsXG4gIGZvcmNlU3ViZGlyZWN0b3J5ID0gdHJ1ZSxcbiAgZm9yY2VUYXJnZXQgPSBmYWxzZSxcbiAgaW5wdXREaXJlY3RvcmllcyxcbiAgb3V0cHV0RGlyZWN0b3J5LFxuICBwYXJhbGxlbCA9IHRydWUsXG4gIHJlY3Vyc2UgPSBmYWxzZSxcbiAgcm9zZXR0YVRhYmxldCxcbiAgdGFyZ2V0cyA9IE9iamVjdC52YWx1ZXMoVGFyZ2V0TmFtZSksXG4gIHRpbWVycyA9IG5ldyBUaW1lcnMoKSxcbiAgcm9zZXR0YVVua25vd25TbmlwcGV0cyA9IHVuZGVmaW5lZCxcbiAgdXBkYXRlTnBtSWdub3JlRmlsZXMgPSBmYWxzZSxcbiAgdmFsaWRhdGVBc3NlbWJsaWVzID0gZmFsc2UsXG59OiBQYWNtYWtPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJvc2V0dGEgPSBuZXcgUm9zZXR0YSh7IHVua25vd25TbmlwcGV0czogcm9zZXR0YVVua25vd25TbmlwcGV0cyB9KTtcbiAgaWYgKHJvc2V0dGFUYWJsZXQpIHtcbiAgICBhd2FpdCByb3NldHRhLmxvYWRUYWJsZXRGcm9tRmlsZShyb3NldHRhVGFibGV0KTtcbiAgfVxuXG4gIGNvbnN0IG1vZHVsZXNUb1BhY2thZ2VTb3J0ZWQgPSBhd2FpdCBmaW5kSnNpaU1vZHVsZXMoXG4gICAgaW5wdXREaXJlY3RvcmllcyxcbiAgICByZWN1cnNlLFxuICApO1xuICBjb25zdCBtb2R1bGVzVG9QYWNrYWdlRmxhdCA9IGZsYXR0ZW4obW9kdWxlc1RvUGFja2FnZVNvcnRlZCk7XG5cbiAgbG9nZ2luZy5pbmZvKGBGb3VuZCAke21vZHVsZXNUb1BhY2thZ2VGbGF0Lmxlbmd0aH0gbW9kdWxlcyB0byBwYWNrYWdlYCk7XG4gIGlmIChtb2R1bGVzVG9QYWNrYWdlRmxhdC5sZW5ndGggPT09IDApIHtcbiAgICBsb2dnaW5nLndhcm4oJ05vdGhpbmcgdG8gZG8nKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAob3V0cHV0RGlyZWN0b3J5KSB7XG4gICAgZm9yIChjb25zdCBtb2Qgb2YgbW9kdWxlc1RvUGFja2FnZUZsYXQpIHtcbiAgICAgIG1vZC5vdXRwdXREaXJlY3RvcnkgPSBvdXRwdXREaXJlY3Rvcnk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHVwZGF0ZU5wbUlnbm9yZUZpbGVzKSB7XG4gICAgLy8gaWYgb3V0ZGlyIGlzIGNvbWluZyBmcm9tIHBhY2thZ2UuanNvbiwgdmVyaWZ5IGl0IGlzIGV4Y2x1ZGVkIGJ5IC5ucG1pZ25vcmUuIGlmIGl0IGlzIGV4cGxpY2l0bHlcbiAgICAvLyBkZWZpbmVkIHZpYSAtLW91dCwgZG9uJ3QgcGVyZm9ybSB0aGlzIHZlcmlmaWNhdGlvbi5cbiAgICBhd2FpdCB1cGRhdGVBbGxOcG1JZ25vcmVzKG1vZHVsZXNUb1BhY2thZ2VGbGF0KTtcbiAgfVxuXG4gIGF3YWl0IHRpbWVycy5yZWNvcmRBc3luYygnbnBtIHBhY2snLCAoKSA9PiB7XG4gICAgbG9nZ2luZy5pbmZvKCdQYWNrYWdpbmcgTlBNIGJ1bmRsZXMnKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwobW9kdWxlc1RvUGFja2FnZUZsYXQubWFwKChtKSA9PiBtLm5wbVBhY2soKSkpO1xuICB9KTtcblxuICBhd2FpdCB0aW1lcnMucmVjb3JkQXN5bmMoJ2xvYWQganNpaScsICgpID0+IHtcbiAgICBsb2dnaW5nLmluZm8oJ0xvYWRpbmcganNpaSBhc3NlbWJsaWVzIGFuZCB0cmFuc2xhdGlvbnMnKTtcbiAgICBjb25zdCBzeXN0ZW0gPSBuZXcgVHlwZVN5c3RlbSgpO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIG1vZHVsZXNUb1BhY2thZ2VGbGF0Lm1hcChhc3luYyAobSkgPT4ge1xuICAgICAgICBhd2FpdCBtLmxvYWQoc3lzdGVtLCB2YWxpZGF0ZUFzc2VtYmxpZXMpO1xuICAgICAgICByZXR1cm4gcm9zZXR0YS5hZGRBc3NlbWJseShtLmFzc2VtYmx5LnNwZWMsIG0ubW9kdWxlRGlyZWN0b3J5KTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH0pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgdGFyZ2V0U2V0cyA9IHNsaWNlVGFyZ2V0cyhcbiAgICAgIG1vZHVsZXNUb1BhY2thZ2VTb3J0ZWQsXG4gICAgICB0YXJnZXRzLFxuICAgICAgZm9yY2VUYXJnZXQsXG4gICAgKTtcbiAgICBpZiAodGFyZ2V0U2V0cy5ldmVyeSgocykgPT4gcy5tb2R1bGVzU29ydGVkLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE5vbmUgb2YgdGhlIHJlcXVlc3RlZCBwYWNrYWdlcyBoYWQgYW55IHRhcmdldHMgdG8gYnVpbGQgZm9yICcke3RhcmdldHMuam9pbihcbiAgICAgICAgICAnLCAnLFxuICAgICAgICApfScgKHVzZSAtLWZvcmNlLXRhcmdldCB0byBmb3JjZSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBwZXJMYW5ndWFnZURpcmVjdG9yeSA9IHRhcmdldFNldHMubGVuZ3RoID4gMSB8fCBmb3JjZVN1YmRpcmVjdG9yeTtcblxuICAgIC8vIFdlIHJ1biBhbGwgdGFyZ2V0IHNldHMgaW4gcGFyYWxsZWwgZm9yIG1pbmltYWwgd2FsbCBjbG9jayB0aW1lXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBtYXBQYXJhbGxlbE9yU2VyaWFsKFxuICAgICAgICB0YXJnZXRTZXRzLFxuICAgICAgICBhc3luYyAodGFyZ2V0U2V0KSA9PiB7XG4gICAgICAgICAgbG9nZ2luZy5pbmZvKFxuICAgICAgICAgICAgYFBhY2thZ2luZyAnJHt0YXJnZXRTZXQudGFyZ2V0VHlwZX0nIGZvciAke2Rlc2NyaWJlUGFja2FnZXMoXG4gICAgICAgICAgICAgIHRhcmdldFNldCxcbiAgICAgICAgICAgICl9YCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB0aW1lcnNcbiAgICAgICAgICAgIC5yZWNvcmRBc3luYyh0YXJnZXRTZXQudGFyZ2V0VHlwZSwgKCkgPT5cbiAgICAgICAgICAgICAgYnVpbGRUYXJnZXRzRm9yTGFuZ3VhZ2UoXG4gICAgICAgICAgICAgICAgdGFyZ2V0U2V0LnRhcmdldFR5cGUsXG4gICAgICAgICAgICAgICAgdGFyZ2V0U2V0Lm1vZHVsZXNTb3J0ZWQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYXJndixcbiAgICAgICAgICAgICAgICAgIGNsZWFuLFxuICAgICAgICAgICAgICAgICAgY29kZU9ubHksXG4gICAgICAgICAgICAgICAgICBmaW5nZXJwcmludCxcbiAgICAgICAgICAgICAgICAgIGZvcmNlLFxuICAgICAgICAgICAgICAgICAgcGVyTGFuZ3VhZ2VEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICByb3NldHRhLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgKCkgPT4gbG9nZ2luZy5pbmZvKGAke3RhcmdldFNldC50YXJnZXRUeXBlfSBmaW5pc2hlZGApLFxuICAgICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuKGAke3RhcmdldFNldC50YXJnZXRUeXBlfSBmYWlsZWRgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIHsgcGFyYWxsZWwgfSxcbiAgICAgICksXG4gICAgKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoY2xlYW4pIHtcbiAgICAgIGxvZ2dpbmcuZGVidWcoJ0NsZWFuaW5nIHVwJyk7XG4gICAgICBhd2FpdCB0aW1lcnMucmVjb3JkQXN5bmMoJ2NsZWFudXAnLCAoKSA9PlxuICAgICAgICBQcm9taXNlLmFsbChtb2R1bGVzVG9QYWNrYWdlRmxhdC5tYXAoKG0pID0+IG0uY2xlYW51cCgpKSksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnaW5nLmluZm8oJ1RlbXBvcmFyeSBkaXJlY3RvcmllcyByZXRhaW5lZCAoLS1uby1jbGVhbiknKTtcbiAgICB9XG4gIH1cblxuICBsb2dnaW5nLmluZm8oYFBhY2thZ2VkLiAke3RpbWVycy5kaXNwbGF5KCl9YCk7XG59XG5cbi8qKlxuICogT3B0aW9ucyBwcm92aWRlZCB0byB0aGUgYHBhY21ha2AgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFjbWFrT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbGwgY29tbWFuZC1saW5lIGFyZ3VtZW50cyB0aGF0IHdlcmUgcHJvdmlkZWQuIFRoaXMgaW5jbHVkZXMgdGFyZ2V0LXNwZWNpZmljIHBhcmFtZXRlcnMsIHRoZVxuICAgKiBoYW5kbGluZyBvZiB3aGljaCBpcyB1cCB0byB0aGUgY29kZSBnZW5lcmF0b3JzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgcmVhZG9ubHkgYXJndj86IHsgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNsZWFuIHVwIHRlbXBvcmFyeSBkaXJlY3RvcmllcyB1cG9uIGNvbXBsZXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNsZWFuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBnZW5lcmF0ZSBzb3VyY2UgY29kZSBvbmx5IChhcyBvcHBvc2VkIHRvIGJ1aWx0IHBhY2thZ2VzKS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNvZGVPbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBvcHBvcnR1bmlzdGljYWxseSBpbmNsdWRlIGEgZmluZ2VycHJpbnQgaW4gZ2VuZXJhdGVkIGNvZGUsIHRvIGF2b2lkIHJlLWdlbmVyYXRpbmdcbiAgICogY29kZSBpZiB0aGUgc291cmNlIGFzc2VtYmx5IGhhcyBub3QgY2hhbmdlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZmluZ2VycHJpbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsd2F5cyByZS1nZW5lcmF0ZSBjb2RlLCBldmVuIGlmIHRoZSBmaW5nZXJwcmludCBoYXMgbm90IGNoYW5nZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsd2F5cyBlbWl0IGNvZGUgaW4gYSBwZXItbGFuZ3VhZ2Ugc3ViZGlyZWN0b3J5LCBldmVuIGlmIHRoZXJlIGlzIG9ubHkgb25lIHRhcmdldCBsYW5ndWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZm9yY2VTdWJkaXJlY3Rvcnk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbHdheXMgdHJ5IHRvIGdlbmVyYXRlIGNvZGUgZm9yIHRoZSBzZWxlY3RlZCB0YXJnZXRzLCBldmVuIGlmIHRob3NlIGFyZSBub3QgY29uZmlndXJlZC4gVXNlIHRoaXMgb3B0aW9uIGF0IHlvdXIgb3duXG4gICAqIHJpc2ssIGFzIHRoZXJlIGFyZSBzaWduaWZpY2FudCBjaGFuY2VzIGNvZGUgZ2VuZXJhdG9ycyBjYW5ub3Qgb3BlcmF0ZSB3aXRob3V0IGFueSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZm9yY2VUYXJnZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBiZSBjb25zaWRlcmVkIGZvciBpbnB1dCBhc3NlbWJsaWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5wdXREaXJlY3RvcmllczogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gb3V0cHV0IGdlbmVyYXRlZCBwYWNrYWdlcyBvciBjb2RlIChpZiAgYGNvZGVPbmx5YCBpcyBgdHJ1ZWApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIENvbmZpZ3VyZWQgaW4gYHBhY2thZ2UuanNvbmBcbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dERpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBwYXJhbGxlbGl6ZSBjb2RlIGdlbmVyYXRpb24uIFR1cm5pbmcgdGhpcyB0byBgZmFsc2VgIGNhbiBiZSBiZW5lZmljaWFsIGluIGNlcnRhaW4gcmVzb3VyY2UtY29uc3RyYWluZWRcbiAgICogZW52aXJvbm1lbnRzLCBzdWNoIGFzIGZyZWUgQ0kvQ0Qgb2ZmZXJpbmdzLCBhcyBpdCByZWR1Y2VzIHRoZSBwcmVzc3VyZSBvbiBJTy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYWxsZWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlY3Vyc2l2ZWx5IGdlbmVyYXRlIGZvciB0aGUgc2VsZWN0ZWQgcGFja2FnZXMnIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJlY3Vyc2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBIb3cgcm9zZXR0YSBzaG91bGQgdHJlYXQgc25pcHBldHMgdGhhdCBjYW5ub3QgYmUgbG9hZGVkIGZyb20gYSB0cmFuc2xhdGlvbiB0YWJsZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFVua25vd25TbmlwcGV0TW9kZS5WRVJCQVRJTVxuICAgKi9cbiAgcmVhZG9ubHkgcm9zZXR0YVVua25vd25TbmlwcGV0cz86IFVua25vd25TbmlwcGV0TW9kZTtcblxuICAvKipcbiAgICogQSBSb3NldHRhIHRhYmxldCBmaWxlIHdoZXJlIHRyYW5zbGF0aW9ucyBmb3IgY29kZSBleGFtcGxlcyBjYW4gYmUgZm91bmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgcm9zZXR0YVRhYmxldD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgdGFyZ2V0cyBmb3Igd2hpY2ggY29kZSBzaG91bGQgYmUgZ2VuZXJhdGVkLiBVbmxlc3MgYGZvcmNlVGFyZ2V0YCBpcyBgdHJ1ZWAsIGEgZ2l2ZW4gdGFyZ2V0IHdpbGwgb25seVxuICAgKiBiZSBnZW5lcmF0ZWQgZm9yIGFzc2VtYmxpZXMgdGhhdCBoYXZlIGNvbmZpZ3VyZWQgaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IE9iamVjdC52YWx1ZXMoVGFyZ2V0TmFtZSlcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldHM/OiByZWFkb25seSBUYXJnZXROYW1lW107XG5cbiAgLyoqXG4gICAqIEEgYFRpbWVyc2Agb2JqZWN0LCBpZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gaW5jbHVkaW5nIHRoZSByb3NldHRhIHJ1biBpbiBhIGxhcmdlciBzZXQgb2YgdGltZWQgb3BlcmF0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVycz86IFRpbWVycztcblxuICAvKipcbiAgICogV2hldGhlciB0byB1cGRhdGUgLm5wbWlnbm9yZSBmaWxlcyBpZiBgb3V0cHV0RGlyZWN0b3J5YCBjb21lcyBmcm9tIHRoZSBgcGFja2FnZS5qc29uYCBmaWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZU5wbUlnbm9yZUZpbGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBhc3NlbWJsaWVzIHNob3VsZCBiZSB2YWxpZGF0ZWQgb3Igbm90LiBWYWxpZGF0aW9uIGNhbiBiZSBleHBlbnNpdmUgYW5kIGNhbiBiZSBza2lwcGVkIGlmIHRoZSBhc3NlbWJsaWVzXG4gICAqIGNhbiBiZSBhc3N1bWVkIHRvIGJlIHZhbGlkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGVBc3NlbWJsaWVzPzogYm9vbGVhbjtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiBCdWlsZGluZ1xuXG5hc3luYyBmdW5jdGlvbiBidWlsZFRhcmdldHNGb3JMYW5ndWFnZShcbiAgdGFyZ2V0TGFuZ3VhZ2U6IHN0cmluZyxcbiAgbW9kdWxlczogVG9wb3NvcnRlZDxKc2lpTW9kdWxlPixcbiAge1xuICAgIGFyZ3YsXG4gICAgY2xlYW4sXG4gICAgY29kZU9ubHksXG4gICAgZmluZ2VycHJpbnQsXG4gICAgZm9yY2UsXG4gICAgcGVyTGFuZ3VhZ2VEaXJlY3RvcnksXG4gICAgcm9zZXR0YSxcbiAgfToge1xuICAgIGFyZ3Y6IHsgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IGFueSB9O1xuICAgIGNsZWFuOiBib29sZWFuO1xuICAgIGNvZGVPbmx5OiBib29sZWFuO1xuICAgIGZpbmdlcnByaW50OiBib29sZWFuO1xuICAgIGZvcmNlOiBib29sZWFuO1xuICAgIHBlckxhbmd1YWdlRGlyZWN0b3J5OiBib29sZWFuO1xuICAgIHJvc2V0dGE6IFJvc2V0dGE7XG4gIH0sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gYGBhcmd2LnRhcmdldGBgIGlzIGd1YXJhbnRlZWQgdmFsaWQgYnkgYGB5YXJnc2BgIHRocm91Z2ggdGhlIGBgY2hvaWNlc2BgIGRpcmVjdGl2ZS5cbiAgY29uc3QgZmFjdG9yeSA9IEFMTF9CVUlMREVSU1t0YXJnZXRMYW5ndWFnZSBhcyBUYXJnZXROYW1lXTtcbiAgaWYgKCFmYWN0b3J5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB0YXJnZXQ6ICcke3RhcmdldExhbmd1YWdlfSdgKTtcbiAgfVxuXG4gIHJldHVybiBmYWN0b3J5KG1vZHVsZXMsIHtcbiAgICBjbGVhbjogY2xlYW4sXG4gICAgY29kZU9ubHk6IGNvZGVPbmx5LFxuICAgIHJvc2V0dGEsXG4gICAgZm9yY2U6IGZvcmNlLFxuICAgIGZpbmdlcnByaW50OiBmaW5nZXJwcmludCxcbiAgICBhcmd1bWVudHM6IGFyZ3YsXG4gICAgbGFuZ3VhZ2VTdWJkaXJlY3Rvcnk6IHBlckxhbmd1YWdlRGlyZWN0b3J5LFxuICB9KS5idWlsZE1vZHVsZXMoKTtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiBUYXJnZXQgU2xpY2luZ1xuXG4vKipcbiAqIEEgc2V0IG9mIHBhY2thZ2VzICh0YXJnZXRzKSB0cmFuc2xhdGVkIGludG8gdGhlIHNhbWUgbGFuZ3VhZ2VcbiAqL1xuaW50ZXJmYWNlIFRhcmdldFNldCB7XG4gIHRhcmdldFR5cGU6IHN0cmluZztcblxuICAvLyBTb3J0ZWQgaW50byB0b3Bvc29ydGVkIHRyYW5jaGVzXG4gIG1vZHVsZXNTb3J0ZWQ6IFRvcG9zb3J0ZWQ8SnNpaU1vZHVsZT47XG59XG5cbmZ1bmN0aW9uIHNsaWNlVGFyZ2V0cyhcbiAgbW9kdWxlc1NvcnRlZDogVG9wb3NvcnRlZDxKc2lpTW9kdWxlPixcbiAgcmVxdWVzdGVkVGFyZ2V0czogcmVhZG9ubHkgVGFyZ2V0TmFtZVtdLFxuICBmb3JjZTogYm9vbGVhbixcbik6IHJlYWRvbmx5IFRhcmdldFNldFtdIHtcbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFRhcmdldFNldD4oKTtcbiAgZm9yIChjb25zdCB0YXJnZXQgb2YgcmVxdWVzdGVkVGFyZ2V0cykge1xuICAgIHJldC5wdXNoKHtcbiAgICAgIHRhcmdldFR5cGU6IHRhcmdldCxcbiAgICAgIG1vZHVsZXNTb3J0ZWQ6IG1vZHVsZXNTb3J0ZWRcbiAgICAgICAgLm1hcCgobW9kdWxlcykgPT5cbiAgICAgICAgICBtb2R1bGVzLmZpbHRlcigobSkgPT4gZm9yY2UgfHwgbS5hdmFpbGFibGVUYXJnZXRzLmluY2x1ZGVzKHRhcmdldCkpLFxuICAgICAgICApXG4gICAgICAgIC5maWx0ZXIoKG1zKSA9PiBtcy5sZW5ndGggPiAwKSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIFBhcmFsbGVsaXphdGlvblxuXG5mdW5jdGlvbiBtYXBQYXJhbGxlbE9yU2VyaWFsPFQsIFI+KFxuICBjb2xsZWN0aW9uOiByZWFkb25seSBUW10sXG4gIG1hcHBlcjogKGl0ZW06IFQpID0+IFByb21pc2U8Uj4sXG4gIHsgcGFyYWxsZWwgfTogeyBwYXJhbGxlbDogYm9vbGVhbiB9LFxuKTogQXJyYXk8UHJvbWlzZTxSPj4ge1xuICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXk8UHJvbWlzZTxSPj4oKTtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGNvbGxlY3Rpb24pIHtcbiAgICByZXN1bHQucHVzaChcbiAgICAgIHJlc3VsdC5sZW5ndGggPT09IDAgfHwgcGFyYWxsZWxcbiAgICAgICAgPyAvLyBSdW5uaW5nIHBhcmFsbGVsLCBvciBmaXJzdCBlbGVtZW50XG4gICAgICAgICAgbWFwcGVyKGl0ZW0pXG4gICAgICAgIDogLy8gV2FpdCBmb3IgdGhlIHByZXZpb3VzIHByb21pc2UsIHRoZW4gbWFrZSB0aGUgbmV4dCBvbmVcbiAgICAgICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdLnRoZW4oXG4gICAgICAgICAgICAoKSA9PiBtYXBwZXIoaXRlbSksXG4gICAgICAgICAgICAoZXJyb3IpID0+IFByb21pc2UucmVqZWN0KGVycm9yKSxcbiAgICAgICAgICApLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiBNaXNjLiBVdGlsaXRpZXNcblxuZnVuY3Rpb24gZGVzY3JpYmVQYWNrYWdlcyh0YXJnZXQ6IFRhcmdldFNldCkge1xuICBjb25zdCBtb2R1bGVzID0gZmxhdHRlbih0YXJnZXQubW9kdWxlc1NvcnRlZCk7XG4gIGlmIChtb2R1bGVzLmxlbmd0aCA+IDAgJiYgbW9kdWxlcy5sZW5ndGggPCA1KSB7XG4gICAgcmV0dXJuIG1vZHVsZXMubWFwKChtKSA9PiBtLm5hbWUpLmpvaW4oJywgJyk7XG4gIH1cbiAgcmV0dXJuIGAke21vZHVsZXMubGVuZ3RofSBtb2R1bGVzYDtcbn1cblxuLy8jZW5kcmVnaW9uXG4iXX0=
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBMEM7QUFDMUMsK0NBQTJEO0FBRTNELHFDQUFxQztBQUNyQywrQ0FBcUU7QUFFckUsdUNBQXFEO0FBTzVDLDJGQVBjLG9CQUFVLE9BT2Q7QUFObkIsbUNBQWlDO0FBRWpDLGlDQUFpQztBQUtqQyxxQ0FBMEQ7QUFBakQsMkdBQUEsU0FBUyxPQUFvQjtBQUV0Qzs7R0FFRztBQUNJLEtBQUssVUFBVSxNQUFNLENBQUMsRUFDM0IsSUFBSSxHQUFHLEVBQUUsRUFDVCxLQUFLLEdBQUcsSUFBSSxFQUNaLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLFdBQVcsR0FBRyxJQUFJLEVBQ2xCLEtBQUssR0FBRyxLQUFLLEVBQ2IsaUJBQWlCLEdBQUcsSUFBSSxFQUN4QixXQUFXLEdBQUcsS0FBSyxFQUNuQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFFBQVEsR0FBRyxJQUFJLEVBQ2YsT0FBTyxHQUFHLEtBQUssRUFDZixhQUFhLEVBQ2IsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsb0JBQVUsQ0FBQyxFQUNuQyxNQUFNLEdBQUcsSUFBSSxjQUFNLEVBQUUsRUFDckIsc0JBQXNCLEdBQUcsU0FBUyxFQUNsQyxvQkFBb0IsR0FBRyxLQUFLLEVBQzVCLGtCQUFrQixHQUFHLEtBQUssR0FDWjtJQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksc0JBQU8sQ0FBQztRQUMxQixlQUFlLEVBQUUsc0JBQXNCO1FBQ3ZDLGdCQUFnQixFQUFFLElBQUk7S0FDdkIsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxhQUFhLEVBQUU7UUFDakIsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDakQ7SUFFRCxNQUFNLHNCQUFzQixHQUFHLE1BQU0sNkJBQWUsQ0FDbEQsZ0JBQWdCLEVBQ2hCLE9BQU8sQ0FDUixDQUFDO0lBQ0YsTUFB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TSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksUUFBUTtZQUM3QixDQUFDLENBQUMscUNBQXFDO2dCQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLHdEQUF3RDtnQkFDeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1QixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQ2xCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUNqQyxDQUNOLENBQUM7S0FDSDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxZQUFZO0FBRVoseUJBQXlCO0FBRXpCLFNBQVMsZ0JBQWdCLENBQUMsTUFBaUI7SUFDekMsTUFBTSxPQUFPLEdBQUcsY0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzVDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5QztJQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxVQUFVLENBQUM7QUFDckMsQ0FBQztBQUVELFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlU3lzdGVtIH0gZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCB7IFJvc2V0dGEsIFVua25vd25TbmlwcGV0TW9kZSB9IGZyb20gJ2pzaWktcm9zZXR0YSc7XG5cbmltcG9ydCAqIGFzIGxvZ2dpbmcgZnJvbSAnLi9sb2dnaW5nJztcbmltcG9ydCB7IGZpbmRKc2lpTW9kdWxlcywgdXBkYXRlQWxsTnBtSWdub3JlcyB9IGZyb20gJy4vbnBtLW1vZHVsZXMnO1xuaW1wb3J0IHsgSnNpaU1vZHVsZSB9IGZyb20gJy4vcGFja2FnaW5nJztcbmltcG9ydCB7IEFMTF9CVUlMREVSUywgVGFyZ2V0TmFtZSB9IGZyb20gJy4vdGFyZ2V0cyc7XG5pbXBvcnQgeyBUaW1lcnMgfSBmcm9tICcuL3RpbWVyJztcbmltcG9ydCB7IFRvcG9zb3J0ZWQgfSBmcm9tICcuL3RvcG9zb3J0JztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICcuL3V0aWwnO1xuXG4vLyNyZWdpb24gRXhwb3J0ZWQgQVBJc1xuXG5leHBvcnQgeyBUYXJnZXROYW1lIH07XG5leHBvcnQgeyBjb25maWd1cmUgYXMgY29uZmlndXJlTG9nZ2luZyB9IGZyb20gJy4vbG9nZ2luZyc7XG5cbi8qKlxuICogR2VuZXJhdGVzIGNvZGUgaW4gdGhlIGRlc2lyZWQgdGFyZ2V0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhY21hayh7XG4gIGFyZ3YgPSB7fSxcbiAgY2xlYW4gPSB0cnVlLFxuICBjb2RlT25seSA9IGZhbHNlLFxuICBmaW5nZXJwcmludCA9IHRydWUsXG4gIGZvcmNlID0gZmFsc2UsXG4gIGZvcmNlU3ViZGlyZWN0b3J5ID0gdHJ1ZSxcbiAgZm9yY2VUYXJnZXQgPSBmYWxzZSxcbiAgaW5wdXREaXJlY3RvcmllcyxcbiAgb3V0cHV0RGlyZWN0b3J5LFxuICBwYXJhbGxlbCA9IHRydWUsXG4gIHJlY3Vyc2UgPSBmYWxzZSxcbiAgcm9zZXR0YVRhYmxldCxcbiAgdGFyZ2V0cyA9IE9iamVjdC52YWx1ZXMoVGFyZ2V0TmFtZSksXG4gIHRpbWVycyA9IG5ldyBUaW1lcnMoKSxcbiAgcm9zZXR0YVVua25vd25TbmlwcGV0cyA9IHVuZGVmaW5lZCxcbiAgdXBkYXRlTnBtSWdub3JlRmlsZXMgPSBmYWxzZSxcbiAgdmFsaWRhdGVBc3NlbWJsaWVzID0gZmFsc2UsXG59OiBQYWNtYWtPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJvc2V0dGEgPSBuZXcgUm9zZXR0YSh7XG4gICAgdW5rbm93blNuaXBwZXRzOiByb3NldHRhVW5rbm93blNuaXBwZXRzLFxuICAgIHByZWZpeERpc2NsYWltZXI6IHRydWUsXG4gIH0pO1xuICBpZiAocm9zZXR0YVRhYmxldCkge1xuICAgIGF3YWl0IHJvc2V0dGEubG9hZFRhYmxldEZyb21GaWxlKHJvc2V0dGFUYWJsZXQpO1xuICB9XG5cbiAgY29uc3QgbW9kdWxlc1RvUGFja2FnZVNvcnRlZCA9IGF3YWl0IGZpbmRKc2lpTW9kdWxlcyhcbiAgICBpbnB1dERpcmVjdG9yaWVzLFxuICAgIHJlY3Vyc2UsXG4gICk7XG4gIGNvbnN0IG1vZHVsZXNUb1BhY2thZ2VGbGF0ID0gZmxhdHRlbihtb2R1bGVzVG9QYWNrYWdlU29ydGVkKTtcblxuICBsb2dnaW5nLmluZm8oYEZvdW5kICR7bW9kdWxlc1RvUGFja2FnZUZsYXQubGVuZ3RofSBtb2R1bGVzIHRvIHBhY2thZ2VgKTtcbiAgaWYgKG1vZHVsZXNUb1BhY2thZ2VGbGF0Lmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZ2dpbmcud2FybignTm90aGluZyB0byBkbycpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChvdXRwdXREaXJlY3RvcnkpIHtcbiAgICBmb3IgKGNvbnN0IG1vZCBvZiBtb2R1bGVzVG9QYWNrYWdlRmxhdCkge1xuICAgICAgbW9kLm91dHB1dERpcmVjdG9yeSA9IG91dHB1dERpcmVjdG9yeTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodXBkYXRlTnBtSWdub3JlRmlsZXMpIHtcbiAgICAvLyBpZiBvdXRkaXIgaXMgY29taW5nIGZyb20gcGFja2FnZS5qc29uLCB2ZXJpZnkgaXQgaXMgZXhjbHVkZWQgYnkgLm5wbWlnbm9yZS4gaWYgaXQgaXMgZXhwbGljaXRseVxuICAgIC8vIGRlZmluZWQgdmlhIC0tb3V0LCBkb24ndCBwZXJmb3JtIHRoaXMgdmVyaWZpY2F0aW9uLlxuICAgIGF3YWl0IHVwZGF0ZUFsbE5wbUlnbm9yZXMobW9kdWxlc1RvUGFja2FnZUZsYXQpO1xuICB9XG5cbiAgYXdhaXQgdGltZXJzLnJlY29yZEFzeW5jKCducG0gcGFjaycsICgpID0+IHtcbiAgICBsb2dnaW5nLmluZm8oJ1BhY2thZ2luZyBOUE0gYnVuZGxlcycpO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChtb2R1bGVzVG9QYWNrYWdlRmxhdC5tYXAoKG0pID0+IG0ubnBtUGFjaygpKSk7XG4gIH0pO1xuXG4gIGF3YWl0IHRpbWVycy5yZWNvcmRBc3luYygnbG9hZCBqc2lpJywgKCkgPT4ge1xuICAgIGxvZ2dpbmcuaW5mbygnTG9hZGluZyBqc2lpIGFzc2VtYmxpZXMgYW5kIHRyYW5zbGF0aW9ucycpO1xuICAgIGNvbnN0IHN5c3RlbSA9IG5ldyBUeXBlU3lzdGVtKCk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgbW9kdWxlc1RvUGFja2FnZUZsYXQubWFwKGFzeW5jIChtKSA9PiB7XG4gICAgICAgIGF3YWl0IG0ubG9hZChzeXN0ZW0sIHZhbGlkYXRlQXNzZW1ibGllcyk7XG4gICAgICAgIHJldHVybiByb3NldHRhLmFkZEFzc2VtYmx5KG0uYXNzZW1ibHkuc3BlYywgbS5tb2R1bGVEaXJlY3RvcnkpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB0YXJnZXRTZXRzID0gc2xpY2VUYXJnZXRzKFxuICAgICAgbW9kdWxlc1RvUGFja2FnZVNvcnRlZCxcbiAgICAgIHRhcmdldHMsXG4gICAgICBmb3JjZVRhcmdldCxcbiAgICApO1xuICAgIGlmICh0YXJnZXRTZXRzLmV2ZXJ5KChzKSA9PiBzLm1vZHVsZXNTb3J0ZWQubGVuZ3RoID09PSAwKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgTm9uZSBvZiB0aGUgcmVxdWVzdGVkIHBhY2thZ2VzIGhhZCBhbnkgdGFyZ2V0cyB0byBidWlsZCBmb3IgJyR7dGFyZ2V0cy5qb2luKFxuICAgICAgICAgICcsICcsXG4gICAgICAgICl9JyAodXNlIC0tZm9yY2UtdGFyZ2V0IHRvIGZvcmNlKWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHBlckxhbmd1YWdlRGlyZWN0b3J5ID0gdGFyZ2V0U2V0cy5sZW5ndGggPiAxIHx8IGZvcmNlU3ViZGlyZWN0b3J5O1xuXG4gICAgLy8gV2UgcnVuIGFsbCB0YXJnZXQgc2V0cyBpbiBwYXJhbGxlbCBmb3IgbWluaW1hbCB3YWxsIGNsb2NrIHRpbWVcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG1hcFBhcmFsbGVsT3JTZXJpYWwoXG4gICAgICAgIHRhcmdldFNldHMsXG4gICAgICAgIGFzeW5jICh0YXJnZXRTZXQpID0+IHtcbiAgICAgICAgICBsb2dnaW5nLmluZm8oXG4gICAgICAgICAgICBgUGFja2FnaW5nICcke3RhcmdldFNldC50YXJnZXRUeXBlfScgZm9yICR7ZGVzY3JpYmVQYWNrYWdlcyhcbiAgICAgICAgICAgICAgdGFyZ2V0U2V0LFxuICAgICAgICAgICAgKX1gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHRpbWVyc1xuICAgICAgICAgICAgLnJlY29yZEFzeW5jKHRhcmdldFNldC50YXJnZXRUeXBlLCAoKSA9PlxuICAgICAgICAgICAgICBidWlsZFRhcmdldHNGb3JMYW5ndWFnZShcbiAgICAgICAgICAgICAgICB0YXJnZXRTZXQudGFyZ2V0VHlwZSxcbiAgICAgICAgICAgICAgICB0YXJnZXRTZXQubW9kdWxlc1NvcnRlZCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhcmd2LFxuICAgICAgICAgICAgICAgICAgY2xlYW4sXG4gICAgICAgICAgICAgICAgICBjb2RlT25seSxcbiAgICAgICAgICAgICAgICAgIGZpbmdlcnByaW50LFxuICAgICAgICAgICAgICAgICAgZm9yY2UsXG4gICAgICAgICAgICAgICAgICBwZXJMYW5ndWFnZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgIHJvc2V0dGEsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgICAoKSA9PiBsb2dnaW5nLmluZm8oYCR7dGFyZ2V0U2V0LnRhcmdldFR5cGV9IGZpbmlzaGVkYCksXG4gICAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm4oYCR7dGFyZ2V0U2V0LnRhcmdldFR5cGV9IGZhaWxlZGApO1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgeyBwYXJhbGxlbCB9LFxuICAgICAgKSxcbiAgICApO1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChjbGVhbikge1xuICAgICAgbG9nZ2luZy5kZWJ1ZygnQ2xlYW5pbmcgdXAnKTtcbiAgICAgIGF3YWl0IHRpbWVycy5yZWNvcmRBc3luYygnY2xlYW51cCcsICgpID0+XG4gICAgICAgIFByb21pc2UuYWxsKG1vZHVsZXNUb1BhY2thZ2VGbGF0Lm1hcCgobSkgPT4gbS5jbGVhbnVwKCkpKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dpbmcuaW5mbygnVGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHJldGFpbmVkICgtLW5vLWNsZWFuKScpO1xuICAgIH1cbiAgfVxuXG4gIGxvZ2dpbmcuaW5mbyhgUGFja2FnZWQuICR7dGltZXJzLmRpc3BsYXkoKX1gKTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIHByb3ZpZGVkIHRvIHRoZSBgcGFjbWFrYCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNtYWtPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFsbCBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRoYXQgd2VyZSBwcm92aWRlZC4gVGhpcyBpbmNsdWRlcyB0YXJnZXQtc3BlY2lmaWMgcGFyYW1ldGVycywgdGhlXG4gICAqIGhhbmRsaW5nIG9mIHdoaWNoIGlzIHVwIHRvIHRoZSBjb2RlIGdlbmVyYXRvcnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICByZWFkb25seSBhcmd2PzogeyByZWFkb25seSBbbmFtZTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY2xlYW4gdXAgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHVwb24gY29tcGxldGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xlYW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGdlbmVyYXRlIHNvdXJjZSBjb2RlIG9ubHkgKGFzIG9wcG9zZWQgdG8gYnVpbHQgcGFja2FnZXMpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29kZU9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIG9wcG9ydHVuaXN0aWNhbGx5IGluY2x1ZGUgYSBmaW5nZXJwcmludCBpbiBnZW5lcmF0ZWQgY29kZSwgdG8gYXZvaWQgcmUtZ2VuZXJhdGluZ1xuICAgKiBjb2RlIGlmIHRoZSBzb3VyY2UgYXNzZW1ibHkgaGFzIG5vdCBjaGFuZ2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBmaW5nZXJwcmludD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWx3YXlzIHJlLWdlbmVyYXRlIGNvZGUsIGV2ZW4gaWYgdGhlIGZpbmdlcnByaW50IGhhcyBub3QgY2hhbmdlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWx3YXlzIGVtaXQgY29kZSBpbiBhIHBlci1sYW5ndWFnZSBzdWJkaXJlY3RvcnksIGV2ZW4gaWYgdGhlcmUgaXMgb25seSBvbmUgdGFyZ2V0IGxhbmd1YWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBmb3JjZVN1YmRpcmVjdG9yeT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsd2F5cyB0cnkgdG8gZ2VuZXJhdGUgY29kZSBmb3IgdGhlIHNlbGVjdGVkIHRhcmdldHMsIGV2ZW4gaWYgdGhvc2UgYXJlIG5vdCBjb25maWd1cmVkLiBVc2UgdGhpcyBvcHRpb24gYXQgeW91ciBvd25cbiAgICogcmlzaywgYXMgdGhlcmUgYXJlIHNpZ25pZmljYW50IGNoYW5jZXMgY29kZSBnZW5lcmF0b3JzIGNhbm5vdCBvcGVyYXRlIHdpdGhvdXQgYW55IGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZVRhcmdldD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJlIGNvbnNpZGVyZWQgZm9yIGlucHV0IGFzc2VtYmxpZXMuXG4gICAqL1xuICByZWFkb25seSBpbnB1dERpcmVjdG9yaWVzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0byBvdXRwdXQgZ2VuZXJhdGVkIHBhY2thZ2VzIG9yIGNvZGUgKGlmICBgY29kZU9ubHlgIGlzIGB0cnVlYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQ29uZmlndXJlZCBpbiBgcGFja2FnZS5qc29uYFxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0RGlyZWN0b3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBhcmFsbGVsaXplIGNvZGUgZ2VuZXJhdGlvbi4gVHVybmluZyB0aGlzIHRvIGBmYWxzZWAgY2FuIGJlIGJlbmVmaWNpYWwgaW4gY2VydGFpbiByZXNvdXJjZS1jb25zdHJhaW5lZFxuICAgKiBlbnZpcm9ubWVudHMsIHN1Y2ggYXMgZnJlZSBDSS9DRCBvZmZlcmluZ3MsIGFzIGl0IHJlZHVjZXMgdGhlIHByZXNzdXJlIG9uIElPLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwYXJhbGxlbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVjdXJzaXZlbHkgZ2VuZXJhdGUgZm9yIHRoZSBzZWxlY3RlZCBwYWNrYWdlcycgZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVjdXJzZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEhvdyByb3NldHRhIHNob3VsZCB0cmVhdCBzbmlwcGV0cyB0aGF0IGNhbm5vdCBiZSBsb2FkZWQgZnJvbSBhIHRyYW5zbGF0aW9uIHRhYmxldC5cbiAgICpcbiAgICogQGRlZmF1bHQgVW5rbm93blNuaXBwZXRNb2RlLlZFUkJBVElNXG4gICAqL1xuICByZWFkb25seSByb3NldHRhVW5rbm93blNuaXBwZXRzPzogVW5rbm93blNuaXBwZXRNb2RlO1xuXG4gIC8qKlxuICAgKiBBIFJvc2V0dGEgdGFibGV0IGZpbGUgd2hlcmUgdHJhbnNsYXRpb25zIGZvciBjb2RlIGV4YW1wbGVzIGNhbiBiZSBmb3VuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSByb3NldHRhVGFibGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiB0YXJnZXRzIGZvciB3aGljaCBjb2RlIHNob3VsZCBiZSBnZW5lcmF0ZWQuIFVubGVzcyBgZm9yY2VUYXJnZXRgIGlzIGB0cnVlYCwgYSBnaXZlbiB0YXJnZXQgd2lsbCBvbmx5XG4gICAqIGJlIGdlbmVyYXRlZCBmb3IgYXNzZW1ibGllcyB0aGF0IGhhdmUgY29uZmlndXJlZCBpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgT2JqZWN0LnZhbHVlcyhUYXJnZXROYW1lKVxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0cz86IHJlYWRvbmx5IFRhcmdldE5hbWVbXTtcblxuICAvKipcbiAgICogQSBgVGltZXJzYCBvYmplY3QsIGlmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBpbmNsdWRpbmcgdGhlIHJvc2V0dGEgcnVuIGluIGEgbGFyZ2VyIHNldCBvZiB0aW1lZCBvcGVyYXRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZXJzPzogVGltZXJzO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVwZGF0ZSAubnBtaWdub3JlIGZpbGVzIGlmIGBvdXRwdXREaXJlY3RvcnlgIGNvbWVzIGZyb20gdGhlIGBwYWNrYWdlLmpzb25gIGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlTnBtSWdub3JlRmlsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGFzc2VtYmxpZXMgc2hvdWxkIGJlIHZhbGlkYXRlZCBvciBub3QuIFZhbGlkYXRpb24gY2FuIGJlIGV4cGVuc2l2ZSBhbmQgY2FuIGJlIHNraXBwZWQgaWYgdGhlIGFzc2VtYmxpZXNcbiAgICogY2FuIGJlIGFzc3VtZWQgdG8gYmUgdmFsaWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0ZUFzc2VtYmxpZXM/OiBib29sZWFuO1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIEJ1aWxkaW5nXG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkVGFyZ2V0c0Zvckxhbmd1YWdlKFxuICB0YXJnZXRMYW5ndWFnZTogc3RyaW5nLFxuICBtb2R1bGVzOiBUb3Bvc29ydGVkPEpzaWlNb2R1bGU+LFxuICB7XG4gICAgYXJndixcbiAgICBjbGVhbixcbiAgICBjb2RlT25seSxcbiAgICBmaW5nZXJwcmludCxcbiAgICBmb3JjZSxcbiAgICBwZXJMYW5ndWFnZURpcmVjdG9yeSxcbiAgICByb3NldHRhLFxuICB9OiB7XG4gICAgYXJndjogeyByZWFkb25seSBbbmFtZTogc3RyaW5nXTogYW55IH07XG4gICAgY2xlYW46IGJvb2xlYW47XG4gICAgY29kZU9ubHk6IGJvb2xlYW47XG4gICAgZmluZ2VycHJpbnQ6IGJvb2xlYW47XG4gICAgZm9yY2U6IGJvb2xlYW47XG4gICAgcGVyTGFuZ3VhZ2VEaXJlY3Rvcnk6IGJvb2xlYW47XG4gICAgcm9zZXR0YTogUm9zZXR0YTtcbiAgfSxcbik6IFByb21pc2U8dm9pZD4ge1xuICAvLyBgYGFyZ3YudGFyZ2V0YGAgaXMgZ3VhcmFudGVlZCB2YWxpZCBieSBgYHlhcmdzYGAgdGhyb3VnaCB0aGUgYGBjaG9pY2VzYGAgZGlyZWN0aXZlLlxuICBjb25zdCBmYWN0b3J5ID0gQUxMX0JVSUxERVJTW3RhcmdldExhbmd1YWdlIGFzIFRhcmdldE5hbWVdO1xuICBpZiAoIWZhY3RvcnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHRhcmdldDogJyR7dGFyZ2V0TGFuZ3VhZ2V9J2ApO1xuICB9XG5cbiAgcmV0dXJuIGZhY3RvcnkobW9kdWxlcywge1xuICAgIGNsZWFuOiBjbGVhbixcbiAgICBjb2RlT25seTogY29kZU9ubHksXG4gICAgcm9zZXR0YSxcbiAgICBmb3JjZTogZm9yY2UsXG4gICAgZmluZ2VycHJpbnQ6IGZpbmdlcnByaW50LFxuICAgIGFyZ3VtZW50czogYXJndixcbiAgICBsYW5ndWFnZVN1YmRpcmVjdG9yeTogcGVyTGFuZ3VhZ2VEaXJlY3RvcnksXG4gIH0pLmJ1aWxkTW9kdWxlcygpO1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIFRhcmdldCBTbGljaW5nXG5cbi8qKlxuICogQSBzZXQgb2YgcGFja2FnZXMgKHRhcmdldHMpIHRyYW5zbGF0ZWQgaW50byB0aGUgc2FtZSBsYW5ndWFnZVxuICovXG5pbnRlcmZhY2UgVGFyZ2V0U2V0IHtcbiAgdGFyZ2V0VHlwZTogc3RyaW5nO1xuXG4gIC8vIFNvcnRlZCBpbnRvIHRvcG9zb3J0ZWQgdHJhbmNoZXNcbiAgbW9kdWxlc1NvcnRlZDogVG9wb3NvcnRlZDxKc2lpTW9kdWxlPjtcbn1cblxuZnVuY3Rpb24gc2xpY2VUYXJnZXRzKFxuICBtb2R1bGVzU29ydGVkOiBUb3Bvc29ydGVkPEpzaWlNb2R1bGU+LFxuICByZXF1ZXN0ZWRUYXJnZXRzOiByZWFkb25seSBUYXJnZXROYW1lW10sXG4gIGZvcmNlOiBib29sZWFuLFxuKTogcmVhZG9ubHkgVGFyZ2V0U2V0W10ge1xuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8VGFyZ2V0U2V0PigpO1xuICBmb3IgKGNvbnN0IHRhcmdldCBvZiByZXF1ZXN0ZWRUYXJnZXRzKSB7XG4gICAgcmV0LnB1c2goe1xuICAgICAgdGFyZ2V0VHlwZTogdGFyZ2V0LFxuICAgICAgbW9kdWxlc1NvcnRlZDogbW9kdWxlc1NvcnRlZFxuICAgICAgICAubWFwKChtb2R1bGVzKSA9PlxuICAgICAgICAgIG1vZHVsZXMuZmlsdGVyKChtKSA9PiBmb3JjZSB8fCBtLmF2YWlsYWJsZVRhcmdldHMuaW5jbHVkZXModGFyZ2V0KSksXG4gICAgICAgIClcbiAgICAgICAgLmZpbHRlcigobXMpID0+IG1zLmxlbmd0aCA+IDApLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gUGFyYWxsZWxpemF0aW9uXG5cbmZ1bmN0aW9uIG1hcFBhcmFsbGVsT3JTZXJpYWw8VCwgUj4oXG4gIGNvbGxlY3Rpb246IHJlYWRvbmx5IFRbXSxcbiAgbWFwcGVyOiAoaXRlbTogVCkgPT4gUHJvbWlzZTxSPixcbiAgeyBwYXJhbGxlbCB9OiB7IHBhcmFsbGVsOiBib29sZWFuIH0sXG4pOiBBcnJheTxQcm9taXNlPFI+PiB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxQcm9taXNlPFI+PigpO1xuICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29sbGVjdGlvbikge1xuICAgIHJlc3VsdC5wdXNoKFxuICAgICAgcmVzdWx0Lmxlbmd0aCA9PT0gMCB8fCBwYXJhbGxlbFxuICAgICAgICA/IC8vIFJ1bm5pbmcgcGFyYWxsZWwsIG9yIGZpcnN0IGVsZW1lbnRcbiAgICAgICAgICBtYXBwZXIoaXRlbSlcbiAgICAgICAgOiAvLyBXYWl0IGZvciB0aGUgcHJldmlvdXMgcHJvbWlzZSwgdGhlbiBtYWtlIHRoZSBuZXh0IG9uZVxuICAgICAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0udGhlbihcbiAgICAgICAgICAgICgpID0+IG1hcHBlcihpdGVtKSxcbiAgICAgICAgICAgIChlcnJvcikgPT4gUHJvbWlzZS5yZWplY3QoZXJyb3IpLFxuICAgICAgICAgICksXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIE1pc2MuIFV0aWxpdGllc1xuXG5mdW5jdGlvbiBkZXNjcmliZVBhY2thZ2VzKHRhcmdldDogVGFyZ2V0U2V0KSB7XG4gIGNvbnN0IG1vZHVsZXMgPSBmbGF0dGVuKHRhcmdldC5tb2R1bGVzU29ydGVkKTtcbiAgaWYgKG1vZHVsZXMubGVuZ3RoID4gMCAmJiBtb2R1bGVzLmxlbmd0aCA8IDUpIHtcbiAgICByZXR1cm4gbW9kdWxlcy5tYXAoKG0pID0+IG0ubmFtZSkuam9pbignLCAnKTtcbiAgfVxuICByZXR1cm4gYCR7bW9kdWxlcy5sZW5ndGh9IG1vZHVsZXNgO1xufVxuXG4vLyNlbmRyZWdpb25cbiJdfQ==
@@ -30,6 +30,5 @@ export declare class DotNetDocGenerator {
30
30
  private renderRemarks;
31
31
  private convertExample;
32
32
  private convertSamplesInMarkdown;
33
- private prefixDisclaimer;
34
33
  private emitXmlDoc;
35
34
  }
@@ -4,7 +4,6 @@ exports.DotNetDocGenerator = void 0;
4
4
  const spec = require("@jsii/spec");
5
5
  const jsii_rosetta_1 = require("jsii-rosetta");
6
6
  const xmlbuilder = require("xmlbuilder");
7
- const __1 = require("..");
8
7
  const _utils_1 = require("../_utils");
9
8
  const nameutils_1 = require("./nameutils");
10
9
  /**
@@ -126,19 +125,10 @@ class DotNetDocGenerator {
126
125
  }
127
126
  convertExample(example, apiLocation) {
128
127
  const translated = this.rosetta.translateExample(apiLocation, example, jsii_rosetta_1.TargetLanguage.CSHARP, jsii_rosetta_1.enforcesStrictMode(this.assembly));
129
- return this.prefixDisclaimer(translated);
128
+ return translated.source;
130
129
  }
131
130
  convertSamplesInMarkdown(markdown, api) {
132
- return this.rosetta.translateSnippetsInMarkdown(api, markdown, jsii_rosetta_1.TargetLanguage.CSHARP, jsii_rosetta_1.enforcesStrictMode(this.assembly), (trans) => ({
133
- language: trans.language,
134
- source: this.prefixDisclaimer(trans),
135
- }));
136
- }
137
- prefixDisclaimer(translated) {
138
- if (!translated.didCompile && __1.INCOMPLETE_DISCLAIMER_NONCOMPILING) {
139
- return `// ${__1.INCOMPLETE_DISCLAIMER_NONCOMPILING}\n${translated.source}`;
140
- }
141
- return translated.source;
131
+ return this.rosetta.translateSnippetsInMarkdown(api, markdown, jsii_rosetta_1.TargetLanguage.CSHARP, jsii_rosetta_1.enforcesStrictMode(this.assembly));
142
132
  }
143
133
  emitXmlDoc(tag, content, { attributes = {} } = {}) {
144
134
  if (!content) {
@@ -168,4 +158,4 @@ function shouldMentionStability(s) {
168
158
  // Don't render "stable" or "external", those are both stable by implication
169
159
  return s === spec.Stability.Deprecated || s === spec.Stability.Experimental;
170
160
  }
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90bmV0ZG9jZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG90bmV0ZG9jZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFtQztBQUVuQywrQ0FPc0I7QUFDdEIseUNBQXlDO0FBRXpDLDBCQUF3RDtBQUN4RCxzQ0FBMEM7QUFDMUMsMkNBQThDO0FBRTlDOzs7O0dBSUc7QUFDSCxNQUFhLGtCQUFrQjtJQUk3QixZQUNFLElBQWUsRUFDRSxPQUFnQixFQUNoQixRQUF1QjtRQUR2QixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQWU7UUFMekIsY0FBUyxHQUFvQixJQUFJLDJCQUFlLEVBQUUsQ0FBQztRQU9sRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksUUFBUSxDQUFDLEdBQXNCLEVBQUUsV0FBd0I7UUFDOUQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUV0Qiw2RUFBNkU7UUFDN0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsc0JBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVwRCxrREFBa0Q7UUFDbEQsTUFBTSxTQUFTLEdBQUcsR0FBa0IsQ0FBQztRQUNyQyxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUU7WUFDeEIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTs7Z0JBQ3JDLG1GQUFtRjtnQkFDbkYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVM7cUJBQzdCLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7cUJBQ2hDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxjQUFFLEtBQUssQ0FBQyxJQUFJLDBDQUFFLE9BQU8sbUNBQUksRUFBRSxFQUFFO29CQUNsRCxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO2lCQUNoQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzFDO1FBRUQsZ0ZBQWdGO1FBQ2hGLCtEQUErRDtRQUMvRCwyQ0FBMkM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDdEQsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNoQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ2xDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRU0scUJBQXFCLENBQzFCLFFBQTRCLEVBQzVCLFdBQXdCO1FBRXhCLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixPQUFPO1NBQ1I7UUFFRCxNQUFNLFVBQVUsR0FBRywrQkFBZ0IsQ0FDakMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FDckQsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDaEMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSyxhQUFhLENBQUMsSUFBZSxFQUFFLFdBQXdCOztRQUM3RCxNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7UUFFekIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sVUFBVSxHQUFHLCtCQUFnQixDQUNqQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FDekQsQ0FBQztZQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDcEMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNkO1FBRUQsK0ZBQStGO1FBRS9GLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM1RCxnQkFBZ0IsQ0FDZCxXQUFXLEVBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUM5QyxDQUFDO1NBQ0g7UUFDRCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUN0QztRQUNELEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxPQUFDLElBQUksQ0FBQyxNQUFNLG1DQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQ3RELE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsbURBQW1EO1lBQy9GLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7U0FDckM7UUFFRCwwQ0FBMEM7UUFDMUMsT0FBTyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3RDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNiO1FBQ0QsT0FBTyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkQsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ1g7UUFFRCxPQUFPLEdBQUcsQ0FBQztRQUVYLFNBQVMsZ0JBQWdCLENBQUMsSUFBWSxFQUFFLFFBQWdCO1lBQ3RELE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLE9BQWUsRUFBRSxXQUF3QjtRQUM5RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUM5QyxXQUFXLEVBQ1gsT0FBTyxFQUNQLDZCQUFjLENBQUMsTUFBTSxFQUNyQixpQ0FBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ2xDLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8sd0JBQXdCLENBQUMsUUFBZ0IsRUFBRSxHQUFnQjtRQUNqRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQzdDLEdBQUcsRUFDSCxRQUFRLEVBQ1IsNkJBQWMsQ0FBQyxNQUFNLEVBQ3JCLGlDQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDakMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7U0FDckMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsVUFBdUI7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksc0NBQWtDLEVBQUU7WUFDaEUsT0FBTyxNQUFNLHNDQUFrQyxLQUFLLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN6RTtRQUNELE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUMzQixDQUFDO0lBRU8sVUFBVSxDQUNoQixHQUFXLEVBQ1gsT0FBZSxFQUNmLEVBQUUsVUFBVSxHQUFHLEVBQUUsS0FBa0QsRUFBRTtRQUVyRSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTztTQUNSO1FBRUQsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckUsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDdEQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdEI7UUFDRCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLFFBQVEsR0FBRyxHQUFHLEtBQUssTUFBTSxDQUFDO1FBQ2hDLEtBQUssTUFBTSxJQUFJLElBQUksU0FBUzthQUN6QixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7Q0FDRjtBQWpNRCxnREFpTUM7QUFFRDs7R0FFRztBQUNILFNBQVMsT0FBTyxDQUFDLENBQVM7SUFDeEIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLENBQWlCO0lBQy9DLDRFQUE0RTtJQUM1RSxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNwZWMgZnJvbSAnQGpzaWkvc3BlYyc7XG5pbXBvcnQgeyBDb2RlTWFrZXIgfSBmcm9tICdjb2RlbWFrZXInO1xuaW1wb3J0IHtcbiAgUm9zZXR0YSxcbiAgVGFyZ2V0TGFuZ3VhZ2UsXG4gIFRyYW5zbGF0aW9uLFxuICBlbmZvcmNlc1N0cmljdE1vZGUsXG4gIG1hcmtEb3duVG9YbWxEb2MsXG4gIEFwaUxvY2F0aW9uLFxufSBmcm9tICdqc2lpLXJvc2V0dGEnO1xuaW1wb3J0ICogYXMgeG1sYnVpbGRlciBmcm9tICd4bWxidWlsZGVyJztcblxuaW1wb3J0IHsgSU5DT01QTEVURV9ESVNDTEFJTUVSX05PTkNPTVBJTElORyB9IGZyb20gJy4uJztcbmltcG9ydCB7IHJlbmRlclN1bW1hcnkgfSBmcm9tICcuLi9fdXRpbHMnO1xuaW1wb3J0IHsgRG90TmV0TmFtZVV0aWxzIH0gZnJvbSAnLi9uYW1ldXRpbHMnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgSnNpaSBhdHRyaWJ1dGVzIGFuZCBjYWxscyBmb3IgdGhlIC5ORVQgcnVudGltZVxuICpcbiAqIFVzZXMgdGhlIHNhbWUgaW5zdGFuY2Ugb2YgQ29kZU1ha2VyIGFzIHRoZSByZXN0IG9mIHRoZSBjb2RlXG4gKi9cbmV4cG9ydCBjbGFzcyBEb3ROZXREb2NHZW5lcmF0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IGNvZGU6IENvZGVNYWtlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBuYW1ldXRpbHM6IERvdE5ldE5hbWVVdGlscyA9IG5ldyBEb3ROZXROYW1lVXRpbHMoKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgY29kZTogQ29kZU1ha2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9zZXR0YTogUm9zZXR0YSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFzc2VtYmx5OiBzcGVjLkFzc2VtYmx5LFxuICApIHtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFsbCBkb2N1bWVudGF0aW9uIGRlcGVuZGluZyBvbiB3aGF0IGlzIGF2YWlsYWJsZSBpbiB0aGUganNpaSBtb2RlbFxuICAgKlxuICAgKiBVc2VkIGJ5IGFsbCBraW5kIG9mIG1lbWJlcnMgKyBjbGFzc2VzLCBpbnRlcmZhY2VzLCBlbnVtc1xuICAgKiBPcmRlciBzaG91bGQgYmVcbiAgICogU3VtbWFyeVxuICAgKiBQYXJhbVxuICAgKiBSZXR1cm5zXG4gICAqIFJlbWFya3MgKGluY2x1ZGVzIGV4YW1wbGVzLCBsaW5rcywgZGVwcmVjYXRlZClcbiAgICovXG4gIHB1YmxpYyBlbWl0RG9jcyhvYmo6IHNwZWMuRG9jdW1lbnRhYmxlLCBhcGlMb2NhdGlvbjogQXBpTG9jYXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBkb2NzID0gb2JqLmRvY3M7XG5cbiAgICAvLyBUaGUgZG9jcyBtYXkgYmUgdW5kZWZpbmVkIGF0IHRoZSBtZXRob2QgbGV2ZWwgYnV0IG5vdCB0aGUgcGFyYW1ldGVycyBsZXZlbFxuICAgIHRoaXMuZW1pdFhtbERvYygnc3VtbWFyeScsIHJlbmRlclN1bW1hcnkob2JqLmRvY3MpKTtcblxuICAgIC8vIEhhbmRsaW5nIHBhcmFtZXRlcnMgb25seSBpZiB0aGUgb2JqIGlzIGEgbWV0aG9kXG4gICAgY29uc3Qgb2JqTWV0aG9kID0gb2JqIGFzIHNwZWMuTWV0aG9kO1xuICAgIGlmIChvYmpNZXRob2QucGFyYW1ldGVycykge1xuICAgICAgb2JqTWV0aG9kLnBhcmFtZXRlcnMuZm9yRWFjaCgocGFyYW0pID0+IHtcbiAgICAgICAgLy8gUmVtb3ZlIGFueSBzbHVnIGBAYCBmcm9tIHRoZSBwYXJhbWV0ZXIgbmFtZSAtIGl0J3Mgbm90IHN1cHBvc2VkIHRvIHNob3cgdXAgaGVyZS5cbiAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gdGhpcy5uYW1ldXRpbHNcbiAgICAgICAgICAuY29udmVydFBhcmFtZXRlck5hbWUocGFyYW0ubmFtZSlcbiAgICAgICAgICAucmVwbGFjZSgvXkAvLCAnJyk7XG4gICAgICAgIHRoaXMuZW1pdFhtbERvYygncGFyYW0nLCBwYXJhbS5kb2NzPy5zdW1tYXJ5ID8/ICcnLCB7XG4gICAgICAgICAgYXR0cmlidXRlczogeyBuYW1lOiBwYXJhbU5hbWUgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBkb2NmeCBuYW1lc3BhY2Vkb2NkIGEgdmFsaWQgaW5zdGFuY2Ugb2YgZG9jc1xuICAgIGlmICghZG9jcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkb2NzLnJldHVybnMpIHtcbiAgICAgIHRoaXMuZW1pdFhtbERvYygncmV0dXJucycsIGRvY3MucmV0dXJucyk7XG4gICAgfVxuXG4gICAgLy8gUmVtYXJrcyBkb2VzIG5vdCB1c2UgZW1pdFhtbERvYygpIGJlY2F1c2UgdGhlIHJlbWFya3MgY2FuIGNvbnRhaW4gY29kZSBibG9ja3NcbiAgICAvLyB3aGljaCBhcmUgZmVuY2VkIHdpdGggPGNvZGU+IHRhZ3MsIHdoaWNoIHdvdWxkIGJlIGVzY2FwZWQgdG9cbiAgICAvLyAmbHQ7Y29kZSZndDsgaWYgd2UgdXNlZCB0aGUgeG1sIGJ1aWxkZXIuXG4gICAgY29uc3QgcmVtYXJrcyA9IHRoaXMucmVuZGVyUmVtYXJrcyhkb2NzLCBhcGlMb2NhdGlvbik7XG4gICAgaWYgKHJlbWFya3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8cmVtYXJrcz4nKTtcbiAgICAgIHJlbWFya3MuZm9yRWFjaCgocikgPT4gdGhpcy5jb2RlLmxpbmUoYC8vLyAke3J9YC50cmltUmlnaHQoKSkpO1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8L3JlbWFya3M+Jyk7XG4gICAgfVxuXG4gICAgaWYgKGRvY3MuZXhhbXBsZSkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8ZXhhbXBsZT4nKTtcbiAgICAgIHRoaXMuZW1pdFhtbERvYygnY29kZScsIHRoaXMuY29udmVydEV4YW1wbGUoZG9jcy5leGFtcGxlLCBhcGlMb2NhdGlvbikpO1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8L2V4YW1wbGU+Jyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVtaXRNYXJrZG93bkFzUmVtYXJrcyhcbiAgICBtYXJrZG93bjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGFwaUxvY2F0aW9uOiBBcGlMb2NhdGlvbixcbiAgKSB7XG4gICAgaWYgKCFtYXJrZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zbGF0ZWQgPSBtYXJrRG93blRvWG1sRG9jKFxuICAgICAgdGhpcy5jb252ZXJ0U2FtcGxlc0luTWFya2Rvd24obWFya2Rvd24sIGFwaUxvY2F0aW9uKSxcbiAgICApO1xuICAgIGNvbnN0IGxpbmVzID0gdHJhbnNsYXRlZC5zcGxpdCgnXFxuJyk7XG5cbiAgICB0aGlzLmNvZGUubGluZSgnLy8vIDxyZW1hcmtzPicpO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoYC8vLyAke2xpbmV9YC50cmltUmlnaHQoKSk7XG4gICAgfVxuICAgIHRoaXMuY29kZS5saW5lKCcvLy8gPC9yZW1hcmtzPicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxpbmVzIHRoYXQgc2hvdWxkIGdvIGludG8gdGhlIDxyZW1hcmtzPiBzZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlbmRlclJlbWFya3MoZG9jczogc3BlYy5Eb2NzLCBhcGlMb2NhdGlvbjogQXBpTG9jYXRpb24pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcmV0OiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKGRvY3MucmVtYXJrcykge1xuICAgICAgY29uc3QgdHJhbnNsYXRlZCA9IG1hcmtEb3duVG9YbWxEb2MoXG4gICAgICAgIHRoaXMuY29udmVydFNhbXBsZXNJbk1hcmtkb3duKGRvY3MucmVtYXJrcywgYXBpTG9jYXRpb24pLFxuICAgICAgKTtcbiAgICAgIHJldC5wdXNoKC4uLnRyYW5zbGF0ZWQuc3BsaXQoJ1xcbicpKTtcbiAgICAgIHJldC5wdXNoKCcnKTtcbiAgICB9XG5cbiAgICAvLyBBbGwgdGhlIFwidGFnc1wiIG5lZWQgdG8gYmUgcmVuZGVyZWQgd2l0aCBlbXB5dCBsaW5lcyBiZXR3ZWVuIHRoZW0gb3IgdGhleSdsbCBiZSB3b3JkIHdyYXBwZWQuXG5cbiAgICBpZiAoZG9jcy5kZWZhdWx0KSB7XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKCdkZWZhdWx0JywgZG9jcy5kZWZhdWx0KTtcbiAgICB9XG4gICAgaWYgKGRvY3Muc3RhYmlsaXR5ICYmIHNob3VsZE1lbnRpb25TdGFiaWxpdHkoZG9jcy5zdGFiaWxpdHkpKSB7XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKFxuICAgICAgICAnc3RhYmlsaXR5JyxcbiAgICAgICAgdGhpcy5uYW1ldXRpbHMuY2FwaXRhbGl6ZVdvcmQoZG9jcy5zdGFiaWxpdHkpLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGRvY3Muc2VlKSB7XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKCdzZWUnLCBkb2NzLnNlZSk7XG4gICAgfVxuICAgIGlmIChkb2NzLnN1YmNsYXNzYWJsZSkge1xuICAgICAgZW1pdERvY0F0dHJpYnV0ZSgnc3ViY2xhc3NhYmxlJywgJycpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhkb2NzLmN1c3RvbSA/PyB7fSkpIHtcbiAgICAgIGNvbnN0IGV4dHJhU3BhY2UgPSBrID09PSAnbGluaycgPyAnICcgOiAnJzsgLy8gRXh0cmEgc3BhY2UgZm9yICdAbGluaycgdG8ga2VlcCB1bml0IHRlc3RzIGhhcHB5XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKGssIHYgKyBleHRyYVNwYWNlKTtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgZW1wdHkgbGluZXNcbiAgICB3aGlsZSAocmV0Lmxlbmd0aCA+IDAgJiYgcmV0WzBdID09PSAnJykge1xuICAgICAgcmV0LnNoaWZ0KCk7XG4gICAgfVxuICAgIHdoaWxlIChyZXQubGVuZ3RoID4gMCAmJiByZXRbcmV0Lmxlbmd0aCAtIDFdID09PSAnJykge1xuICAgICAgcmV0LnBvcCgpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG5cbiAgICBmdW5jdGlvbiBlbWl0RG9jQXR0cmlidXRlKG5hbWU6IHN0cmluZywgY29udGVudHM6IHN0cmluZykge1xuICAgICAgY29uc3QgbHMgPSBjb250ZW50cy5zcGxpdCgnXFxuJyk7XG4gICAgICByZXQucHVzaChgPHN0cm9uZz4ke3VjRmlyc3QobmFtZSl9PC9zdHJvbmc+OiAke2xzWzBdfWApO1xuICAgICAgcmV0LnB1c2goLi4ubHMuc2xpY2UoMSkpO1xuICAgICAgcmV0LnB1c2goJycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEV4YW1wbGUoZXhhbXBsZTogc3RyaW5nLCBhcGlMb2NhdGlvbjogQXBpTG9jYXRpb24pOiBzdHJpbmcge1xuICAgIGNvbnN0IHRyYW5zbGF0ZWQgPSB0aGlzLnJvc2V0dGEudHJhbnNsYXRlRXhhbXBsZShcbiAgICAgIGFwaUxvY2F0aW9uLFxuICAgICAgZXhhbXBsZSxcbiAgICAgIFRhcmdldExhbmd1YWdlLkNTSEFSUCxcbiAgICAgIGVuZm9yY2VzU3RyaWN0TW9kZSh0aGlzLmFzc2VtYmx5KSxcbiAgICApO1xuICAgIHJldHVybiB0aGlzLnByZWZpeERpc2NsYWltZXIodHJhbnNsYXRlZCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRTYW1wbGVzSW5NYXJrZG93bihtYXJrZG93bjogc3RyaW5nLCBhcGk6IEFwaUxvY2F0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yb3NldHRhLnRyYW5zbGF0ZVNuaXBwZXRzSW5NYXJrZG93bihcbiAgICAgIGFwaSxcbiAgICAgIG1hcmtkb3duLFxuICAgICAgVGFyZ2V0TGFuZ3VhZ2UuQ1NIQVJQLFxuICAgICAgZW5mb3JjZXNTdHJpY3RNb2RlKHRoaXMuYXNzZW1ibHkpLFxuICAgICAgKHRyYW5zKSA9PiAoe1xuICAgICAgICBsYW5ndWFnZTogdHJhbnMubGFuZ3VhZ2UsXG4gICAgICAgIHNvdXJjZTogdGhpcy5wcmVmaXhEaXNjbGFpbWVyKHRyYW5zKSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHByZWZpeERpc2NsYWltZXIodHJhbnNsYXRlZDogVHJhbnNsYXRpb24pIHtcbiAgICBpZiAoIXRyYW5zbGF0ZWQuZGlkQ29tcGlsZSAmJiBJTkNPTVBMRVRFX0RJU0NMQUlNRVJfTk9OQ09NUElMSU5HKSB7XG4gICAgICByZXR1cm4gYC8vICR7SU5DT01QTEVURV9ESVNDTEFJTUVSX05PTkNPTVBJTElOR31cXG4ke3RyYW5zbGF0ZWQuc291cmNlfWA7XG4gICAgfVxuICAgIHJldHVybiB0cmFuc2xhdGVkLnNvdXJjZTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFhtbERvYyhcbiAgICB0YWc6IHN0cmluZyxcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgeyBhdHRyaWJ1dGVzID0ge30gfTogeyBhdHRyaWJ1dGVzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0gfSA9IHt9LFxuICApOiB2b2lkIHtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB4bWwgPSB4bWxidWlsZGVyLmNyZWF0ZSh0YWcsIHsgaGVhZGxlc3M6IHRydWUgfSkudGV4dChjb250ZW50KTtcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYXR0cmlidXRlcykpIHtcbiAgICAgIHhtbC5hdHQobmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCB4bWxzdHJpbmcgPSB4bWwuZW5kKHsgYWxsb3dFbXB0eTogdHJ1ZSwgcHJldHR5OiBmYWxzZSB9KTtcbiAgICBjb25zdCB0cmltTGVmdCA9IHRhZyAhPT0gJ2NvZGUnO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiB4bWxzdHJpbmdcbiAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgIC5tYXAoKHgpID0+ICh0cmltTGVmdCA/IHgudHJpbSgpIDogeC50cmltUmlnaHQoKSkpKSB7XG4gICAgICB0aGlzLmNvZGUubGluZShgLy8vICR7bGluZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBVcHBlcmNhc2UgdGhlIGZpcnN0IGxldHRlclxuICovXG5mdW5jdGlvbiB1Y0ZpcnN0KHg6IHN0cmluZykge1xuICByZXR1cm4geC5zdWJzdHIoMCwgMSkudG9VcHBlckNhc2UoKSArIHguc3Vic3RyKDEpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRNZW50aW9uU3RhYmlsaXR5KHM6IHNwZWMuU3RhYmlsaXR5KSB7XG4gIC8vIERvbid0IHJlbmRlciBcInN0YWJsZVwiIG9yIFwiZXh0ZXJuYWxcIiwgdGhvc2UgYXJlIGJvdGggc3RhYmxlIGJ5IGltcGxpY2F0aW9uXG4gIHJldHVybiBzID09PSBzcGVjLlN0YWJpbGl0eS5EZXByZWNhdGVkIHx8IHMgPT09IHNwZWMuU3RhYmlsaXR5LkV4cGVyaW1lbnRhbDtcbn1cbiJdfQ==
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90bmV0ZG9jZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG90bmV0ZG9jZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFtQztBQUVuQywrQ0FNc0I7QUFDdEIseUNBQXlDO0FBRXpDLHNDQUEwQztBQUMxQywyQ0FBOEM7QUFFOUM7Ozs7R0FJRztBQUNILE1BQWEsa0JBQWtCO0lBSTdCLFlBQ0UsSUFBZSxFQUNFLE9BQWdCLEVBQ2hCLFFBQXVCO1FBRHZCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsYUFBUSxHQUFSLFFBQVEsQ0FBZTtRQUx6QixjQUFTLEdBQW9CLElBQUksMkJBQWUsRUFBRSxDQUFDO1FBT2xFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxRQUFRLENBQUMsR0FBc0IsRUFBRSxXQUF3QjtRQUM5RCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBRXRCLDZFQUE2RTtRQUM3RSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxzQkFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXBELGtEQUFrRDtRQUNsRCxNQUFNLFNBQVMsR0FBRyxHQUFrQixDQUFDO1FBQ3JDLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRTtZQUN4QixTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFOztnQkFDckMsbUZBQW1GO2dCQUNuRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUztxQkFDN0Isb0JBQW9CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztxQkFDaEMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLGNBQUUsS0FBSyxDQUFDLElBQUksMENBQUUsT0FB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RUFBRTtZQUN0RCxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN0QjtRQUNELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUFHLEdBQUcsS0FBSyxNQUFNLENBQUM7UUFDaEMsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTO2FBQ3pCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztDQUNGO0FBckxELGdEQXFMQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxPQUFPLENBQUMsQ0FBUztJQUN4QixPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsQ0FBaUI7SUFDL0MsNEVBQTRFO0lBQzVFLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztBQUM5RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc3BlYyBmcm9tICdAanNpaS9zcGVjJztcbmltcG9ydCB7IENvZGVNYWtlciB9IGZyb20gJ2NvZGVtYWtlcic7XG5pbXBvcnQge1xuICBSb3NldHRhLFxuICBUYXJnZXRMYW5ndWFnZSxcbiAgZW5mb3JjZXNTdHJpY3RNb2RlLFxuICBtYXJrRG93blRvWG1sRG9jLFxuICBBcGlMb2NhdGlvbixcbn0gZnJvbSAnanNpaS1yb3NldHRhJztcbmltcG9ydCAqIGFzIHhtbGJ1aWxkZXIgZnJvbSAneG1sYnVpbGRlcic7XG5cbmltcG9ydCB7IHJlbmRlclN1bW1hcnkgfSBmcm9tICcuLi9fdXRpbHMnO1xuaW1wb3J0IHsgRG90TmV0TmFtZVV0aWxzIH0gZnJvbSAnLi9uYW1ldXRpbHMnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgSnNpaSBhdHRyaWJ1dGVzIGFuZCBjYWxscyBmb3IgdGhlIC5ORVQgcnVudGltZVxuICpcbiAqIFVzZXMgdGhlIHNhbWUgaW5zdGFuY2Ugb2YgQ29kZU1ha2VyIGFzIHRoZSByZXN0IG9mIHRoZSBjb2RlXG4gKi9cbmV4cG9ydCBjbGFzcyBEb3ROZXREb2NHZW5lcmF0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IGNvZGU6IENvZGVNYWtlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBuYW1ldXRpbHM6IERvdE5ldE5hbWVVdGlscyA9IG5ldyBEb3ROZXROYW1lVXRpbHMoKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgY29kZTogQ29kZU1ha2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9zZXR0YTogUm9zZXR0YSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFzc2VtYmx5OiBzcGVjLkFzc2VtYmx5LFxuICApIHtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFsbCBkb2N1bWVudGF0aW9uIGRlcGVuZGluZyBvbiB3aGF0IGlzIGF2YWlsYWJsZSBpbiB0aGUganNpaSBtb2RlbFxuICAgKlxuICAgKiBVc2VkIGJ5IGFsbCBraW5kIG9mIG1lbWJlcnMgKyBjbGFzc2VzLCBpbnRlcmZhY2VzLCBlbnVtc1xuICAgKiBPcmRlciBzaG91bGQgYmVcbiAgICogU3VtbWFyeVxuICAgKiBQYXJhbVxuICAgKiBSZXR1cm5zXG4gICAqIFJlbWFya3MgKGluY2x1ZGVzIGV4YW1wbGVzLCBsaW5rcywgZGVwcmVjYXRlZClcbiAgICovXG4gIHB1YmxpYyBlbWl0RG9jcyhvYmo6IHNwZWMuRG9jdW1lbnRhYmxlLCBhcGlMb2NhdGlvbjogQXBpTG9jYXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBkb2NzID0gb2JqLmRvY3M7XG5cbiAgICAvLyBUaGUgZG9jcyBtYXkgYmUgdW5kZWZpbmVkIGF0IHRoZSBtZXRob2QgbGV2ZWwgYnV0IG5vdCB0aGUgcGFyYW1ldGVycyBsZXZlbFxuICAgIHRoaXMuZW1pdFhtbERvYygnc3VtbWFyeScsIHJlbmRlclN1bW1hcnkob2JqLmRvY3MpKTtcblxuICAgIC8vIEhhbmRsaW5nIHBhcmFtZXRlcnMgb25seSBpZiB0aGUgb2JqIGlzIGEgbWV0aG9kXG4gICAgY29uc3Qgb2JqTWV0aG9kID0gb2JqIGFzIHNwZWMuTWV0aG9kO1xuICAgIGlmIChvYmpNZXRob2QucGFyYW1ldGVycykge1xuICAgICAgb2JqTWV0aG9kLnBhcmFtZXRlcnMuZm9yRWFjaCgocGFyYW0pID0+IHtcbiAgICAgICAgLy8gUmVtb3ZlIGFueSBzbHVnIGBAYCBmcm9tIHRoZSBwYXJhbWV0ZXIgbmFtZSAtIGl0J3Mgbm90IHN1cHBvc2VkIHRvIHNob3cgdXAgaGVyZS5cbiAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gdGhpcy5uYW1ldXRpbHNcbiAgICAgICAgICAuY29udmVydFBhcmFtZXRlck5hbWUocGFyYW0ubmFtZSlcbiAgICAgICAgICAucmVwbGFjZSgvXkAvLCAnJyk7XG4gICAgICAgIHRoaXMuZW1pdFhtbERvYygncGFyYW0nLCBwYXJhbS5kb2NzPy5zdW1tYXJ5ID8/ICcnLCB7XG4gICAgICAgICAgYXR0cmlidXRlczogeyBuYW1lOiBwYXJhbU5hbWUgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBkb2NmeCBuYW1lc3BhY2Vkb2NkIGEgdmFsaWQgaW5zdGFuY2Ugb2YgZG9jc1xuICAgIGlmICghZG9jcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkb2NzLnJldHVybnMpIHtcbiAgICAgIHRoaXMuZW1pdFhtbERvYygncmV0dXJucycsIGRvY3MucmV0dXJucyk7XG4gICAgfVxuXG4gICAgLy8gUmVtYXJrcyBkb2VzIG5vdCB1c2UgZW1pdFhtbERvYygpIGJlY2F1c2UgdGhlIHJlbWFya3MgY2FuIGNvbnRhaW4gY29kZSBibG9ja3NcbiAgICAvLyB3aGljaCBhcmUgZmVuY2VkIHdpdGggPGNvZGU+IHRhZ3MsIHdoaWNoIHdvdWxkIGJlIGVzY2FwZWQgdG9cbiAgICAvLyAmbHQ7Y29kZSZndDsgaWYgd2UgdXNlZCB0aGUgeG1sIGJ1aWxkZXIuXG4gICAgY29uc3QgcmVtYXJrcyA9IHRoaXMucmVuZGVyUmVtYXJrcyhkb2NzLCBhcGlMb2NhdGlvbik7XG4gICAgaWYgKHJlbWFya3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8cmVtYXJrcz4nKTtcbiAgICAgIHJlbWFya3MuZm9yRWFjaCgocikgPT4gdGhpcy5jb2RlLmxpbmUoYC8vLyAke3J9YC50cmltUmlnaHQoKSkpO1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8L3JlbWFya3M+Jyk7XG4gICAgfVxuXG4gICAgaWYgKGRvY3MuZXhhbXBsZSkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8ZXhhbXBsZT4nKTtcbiAgICAgIHRoaXMuZW1pdFhtbERvYygnY29kZScsIHRoaXMuY29udmVydEV4YW1wbGUoZG9jcy5leGFtcGxlLCBhcGlMb2NhdGlvbikpO1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8L2V4YW1wbGU+Jyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVtaXRNYXJrZG93bkFzUmVtYXJrcyhcbiAgICBtYXJrZG93bjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGFwaUxvY2F0aW9uOiBBcGlMb2NhdGlvbixcbiAgKSB7XG4gICAgaWYgKCFtYXJrZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zbGF0ZWQgPSBtYXJrRG93blRvWG1sRG9jKFxuICAgICAgdGhpcy5jb252ZXJ0U2FtcGxlc0luTWFya2Rvd24obWFya2Rvd24sIGFwaUxvY2F0aW9uKSxcbiAgICApO1xuICAgIGNvbnN0IGxpbmVzID0gdHJhbnNsYXRlZC5zcGxpdCgnXFxuJyk7XG5cbiAgICB0aGlzLmNvZGUubGluZSgnLy8vIDxyZW1hcmtzPicpO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoYC8vLyAke2xpbmV9YC50cmltUmlnaHQoKSk7XG4gICAgfVxuICAgIHRoaXMuY29kZS5saW5lKCcvLy8gPC9yZW1hcmtzPicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxpbmVzIHRoYXQgc2hvdWxkIGdvIGludG8gdGhlIDxyZW1hcmtzPiBzZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlbmRlclJlbWFya3MoZG9jczogc3BlYy5Eb2NzLCBhcGlMb2NhdGlvbjogQXBpTG9jYXRpb24pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcmV0OiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKGRvY3MucmVtYXJrcykge1xuICAgICAgY29uc3QgdHJhbnNsYXRlZCA9IG1hcmtEb3duVG9YbWxEb2MoXG4gICAgICAgIHRoaXMuY29udmVydFNhbXBsZXNJbk1hcmtkb3duKGRvY3MucmVtYXJrcywgYXBpTG9jYXRpb24pLFxuICAgICAgKTtcbiAgICAgIHJldC5wdXNoKC4uLnRyYW5zbGF0ZWQuc3BsaXQoJ1xcbicpKTtcbiAgICAgIHJldC5wdXNoKCcnKTtcbiAgICB9XG5cbiAgICAvLyBBbGwgdGhlIFwidGFnc1wiIG5lZWQgdG8gYmUgcmVuZGVyZWQgd2l0aCBlbXB5dCBsaW5lcyBiZXR3ZWVuIHRoZW0gb3IgdGhleSdsbCBiZSB3b3JkIHdyYXBwZWQuXG5cbiAgICBpZiAoZG9jcy5kZWZhdWx0KSB7XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKCdkZWZhdWx0JywgZG9jcy5kZWZhdWx0KTtcbiAgICB9XG4gICAgaWYgKGRvY3Muc3RhYmlsaXR5ICYmIHNob3VsZE1lbnRpb25TdGFiaWxpdHkoZG9jcy5zdGFiaWxpdHkpKSB7XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKFxuICAgICAgICAnc3RhYmlsaXR5JyxcbiAgICAgICAgdGhpcy5uYW1ldXRpbHMuY2FwaXRhbGl6ZVdvcmQoZG9jcy5zdGFiaWxpdHkpLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGRvY3Muc2VlKSB7XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKCdzZWUnLCBkb2NzLnNlZSk7XG4gICAgfVxuICAgIGlmIChkb2NzLnN1YmNsYXNzYWJsZSkge1xuICAgICAgZW1pdERvY0F0dHJpYnV0ZSgnc3ViY2xhc3NhYmxlJywgJycpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhkb2NzLmN1c3RvbSA/PyB7fSkpIHtcbiAgICAgIGNvbnN0IGV4dHJhU3BhY2UgPSBrID09PSAnbGluaycgPyAnICcgOiAnJzsgLy8gRXh0cmEgc3BhY2UgZm9yICdAbGluaycgdG8ga2VlcCB1bml0IHRlc3RzIGhhcHB5XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKGssIHYgKyBleHRyYVNwYWNlKTtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgZW1wdHkgbGluZXNcbiAgICB3aGlsZSAocmV0Lmxlbmd0aCA+IDAgJiYgcmV0WzBdID09PSAnJykge1xuICAgICAgcmV0LnNoaWZ0KCk7XG4gICAgfVxuICAgIHdoaWxlIChyZXQubGVuZ3RoID4gMCAmJiByZXRbcmV0Lmxlbmd0aCAtIDFdID09PSAnJykge1xuICAgICAgcmV0LnBvcCgpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG5cbiAgICBmdW5jdGlvbiBlbWl0RG9jQXR0cmlidXRlKG5hbWU6IHN0cmluZywgY29udGVudHM6IHN0cmluZykge1xuICAgICAgY29uc3QgbHMgPSBjb250ZW50cy5zcGxpdCgnXFxuJyk7XG4gICAgICByZXQucHVzaChgPHN0cm9uZz4ke3VjRmlyc3QobmFtZSl9PC9zdHJvbmc+OiAke2xzWzBdfWApO1xuICAgICAgcmV0LnB1c2goLi4ubHMuc2xpY2UoMSkpO1xuICAgICAgcmV0LnB1c2goJycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEV4YW1wbGUoZXhhbXBsZTogc3RyaW5nLCBhcGlMb2NhdGlvbjogQXBpTG9jYXRpb24pOiBzdHJpbmcge1xuICAgIGNvbnN0IHRyYW5zbGF0ZWQgPSB0aGlzLnJvc2V0dGEudHJhbnNsYXRlRXhhbXBsZShcbiAgICAgIGFwaUxvY2F0aW9uLFxuICAgICAgZXhhbXBsZSxcbiAgICAgIFRhcmdldExhbmd1YWdlLkNTSEFSUCxcbiAgICAgIGVuZm9yY2VzU3RyaWN0TW9kZSh0aGlzLmFzc2VtYmx5KSxcbiAgICApO1xuICAgIHJldHVybiB0cmFuc2xhdGVkLnNvdXJjZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFNhbXBsZXNJbk1hcmtkb3duKG1hcmtkb3duOiBzdHJpbmcsIGFwaTogQXBpTG9jYXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJvc2V0dGEudHJhbnNsYXRlU25pcHBldHNJbk1hcmtkb3duKFxuICAgICAgYXBpLFxuICAgICAgbWFya2Rvd24sXG4gICAgICBUYXJnZXRMYW5ndWFnZS5DU0hBUlAsXG4gICAgICBlbmZvcmNlc1N0cmljdE1vZGUodGhpcy5hc3NlbWJseSksXG4gICAgKTtcbiAgfVxuICBwcml2YXRlIGVtaXRYbWxEb2MoXG4gICAgdGFnOiBzdHJpbmcsXG4gICAgY29udGVudDogc3RyaW5nLFxuICAgIHsgYXR0cmlidXRlcyA9IHt9IH06IHsgYXR0cmlidXRlcz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9IH0gPSB7fSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFjb250ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeG1sID0geG1sYnVpbGRlci5jcmVhdGUodGFnLCB7IGhlYWRsZXNzOiB0cnVlIH0pLnRleHQoY29udGVudCk7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpKSB7XG4gICAgICB4bWwuYXR0KG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgeG1sc3RyaW5nID0geG1sLmVuZCh7IGFsbG93RW1wdHk6IHRydWUsIHByZXR0eTogZmFsc2UgfSk7XG4gICAgY29uc3QgdHJpbUxlZnQgPSB0YWcgIT09ICdjb2RlJztcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgeG1sc3RyaW5nXG4gICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAubWFwKCh4KSA9PiAodHJpbUxlZnQgPyB4LnRyaW0oKSA6IHgudHJpbVJpZ2h0KCkpKSkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoYC8vLyAke2xpbmV9YCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVXBwZXJjYXNlIHRoZSBmaXJzdCBsZXR0ZXJcbiAqL1xuZnVuY3Rpb24gdWNGaXJzdCh4OiBzdHJpbmcpIHtcbiAgcmV0dXJuIHguc3Vic3RyKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB4LnN1YnN0cigxKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkTWVudGlvblN0YWJpbGl0eShzOiBzcGVjLlN0YWJpbGl0eSkge1xuICAvLyBEb24ndCByZW5kZXIgXCJzdGFibGVcIiBvciBcImV4dGVybmFsXCIsIHRob3NlIGFyZSBib3RoIHN0YWJsZSBieSBpbXBsaWNhdGlvblxuICByZXR1cm4gcyA9PT0gc3BlYy5TdGFiaWxpdHkuRGVwcmVjYXRlZCB8fCBzID09PSBzcGVjLlN0YWJpbGl0eS5FeHBlcmltZW50YWw7XG59XG4iXX0=