textlane 0.3.0 → 0.5.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.
@@ -2,6 +2,7 @@
2
2
  export declare function resolveAddon(props: {
3
3
  platform: string;
4
4
  arch: string;
5
+ libc: string | undefined;
5
6
  env: Record<string, string | undefined>;
6
7
  resolvePackage: (specifier: string) => string;
7
8
  }): string;
@@ -4,7 +4,8 @@ export function resolveAddon(props) {
4
4
  const override = props.env[ADDON_ENV];
5
5
  if (override)
6
6
  return override;
7
- const key = `${props.platform}-${props.arch}`;
7
+ const suffix = props.libc === "musl" ? "-musl" : "";
8
+ const key = `${props.platform}-${props.arch}${suffix}`;
8
9
  const platform = PLATFORMS[key];
9
10
  if (!platform) {
10
11
  const supported = Object.keys(PLATFORMS).join(", ");
@@ -19,4 +20,4 @@ export function resolveAddon(props) {
19
20
  `--no-optional / --omit=optional so the addon for ${key} comes along.`);
20
21
  }
21
22
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FjdGlvbnMvYWRkb24vcmVzb2x2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUV0RSwyRkFBMkY7QUFDM0YsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUs1QjtJQUNDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDckMsSUFBSSxRQUFRO1FBQUUsT0FBTyxRQUFRLENBQUE7SUFFN0IsTUFBTSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM3QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDL0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLFlBQVkscUJBQXFCLEdBQUcsZ0JBQWdCLFNBQVMsSUFBSTtZQUNsRSxPQUFPLFNBQVMsa0RBQWtELENBQ3JFLENBQUE7SUFDSCxDQUFDO0lBQ0QsSUFBSSxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsUUFBUSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUMxRSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLFFBQVEsQ0FBQyxXQUFXLGdDQUFnQyxZQUFZLFdBQVc7WUFDNUUsb0RBQW9ELEdBQUcsZUFBZSxDQUN6RSxDQUFBO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBRERPTl9FTlYsIFBBQ0tBR0VfTkFNRSwgUExBVEZPUk1TIH0gZnJvbSBcIi4uLy4uL3NldHRpbmdzLnRzXCJcblxuLyoqIEZpbmQgdGhlIHRleHRsYW5lIGFkZG9uOiB0aGUgZW52IG92ZXJyaWRlIGZpcnN0LCBlbHNlIHRoZSBtYXRjaGluZyBwbGF0Zm9ybSBwYWNrYWdlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVBZGRvbihwcm9wczoge1xuICBwbGF0Zm9ybTogc3RyaW5nXG4gIGFyY2g6IHN0cmluZ1xuICBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD5cbiAgcmVzb2x2ZVBhY2thZ2U6IChzcGVjaWZpZXI6IHN0cmluZykgPT4gc3RyaW5nXG59KSB7XG4gIGNvbnN0IG92ZXJyaWRlID0gcHJvcHMuZW52W0FERE9OX0VOVl1cbiAgaWYgKG92ZXJyaWRlKSByZXR1cm4gb3ZlcnJpZGVcblxuICBjb25zdCBrZXkgPSBgJHtwcm9wcy5wbGF0Zm9ybX0tJHtwcm9wcy5hcmNofWBcbiAgY29uc3QgcGxhdGZvcm0gPSBQTEFURk9STVNba2V5XVxuICBpZiAoIXBsYXRmb3JtKSB7XG4gICAgY29uc3Qgc3VwcG9ydGVkID0gT2JqZWN0LmtleXMoUExBVEZPUk1TKS5qb2luKFwiLCBcIilcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHtQQUNLQUdFX05BTUV9IGhhcyBubyBhZGRvbiBmb3IgJHtrZXl9OyBzdXBwb3J0ZWQ6ICR7c3VwcG9ydGVkfS4gYCArXG4gICAgICAgIGBTZXQgJHtBRERPTl9FTlZ9IHRvIGFuIGFkZG9uIGJ1aWx0IHdpdGggY2FyZ28gdG8gbG9hZCBpdCBhbnl3YXkuYCxcbiAgICApXG4gIH1cbiAgdHJ5IHtcbiAgICByZXR1cm4gcHJvcHMucmVzb2x2ZVBhY2thZ2UoYCR7cGxhdGZvcm0ucGFja2FnZU5hbWV9LyR7cGxhdGZvcm0uYWRkb259YClcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYCR7cGxhdGZvcm0ucGFja2FnZU5hbWV9IGlzIG5vdCBpbnN0YWxsZWQuIFJlaW5zdGFsbCAke1BBQ0tBR0VfTkFNRX0gd2l0aG91dCBgICtcbiAgICAgICAgYC0tbm8tb3B0aW9uYWwgLyAtLW9taXQ9b3B0aW9uYWwgc28gdGhlIGFkZG9uIGZvciAke2tleX0gY29tZXMgYWxvbmcuYCxcbiAgICApXG4gIH1cbn1cbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FjdGlvbnMvYWRkb24vcmVzb2x2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUV0RSwyRkFBMkY7QUFDM0YsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQU01QjtJQUNDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDckMsSUFBSSxRQUFRO1FBQUUsT0FBTyxRQUFRLENBQUE7SUFFN0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ25ELE1BQU0sR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFBO0lBQ3RELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMvQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuRCxNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsWUFBWSxxQkFBcUIsR0FBRyxnQkFBZ0IsU0FBUyxJQUFJO1lBQ2xFLE9BQU8sU0FBUyxrREFBa0QsQ0FDckUsQ0FBQTtJQUNILENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxRQUFRLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsUUFBUSxDQUFDLFdBQVcsZ0NBQWdDLFlBQVksV0FBVztZQUM1RSxvREFBb0QsR0FBRyxlQUFlLENBQ3pFLENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFERE9OX0VOViwgUEFDS0FHRV9OQU1FLCBQTEFURk9STVMgfSBmcm9tIFwiLi4vLi4vc2V0dGluZ3MudHNcIlxuXG4vKiogRmluZCB0aGUgdGV4dGxhbmUgYWRkb246IHRoZSBlbnYgb3ZlcnJpZGUgZmlyc3QsIGVsc2UgdGhlIG1hdGNoaW5nIHBsYXRmb3JtIHBhY2thZ2UuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFkZG9uKHByb3BzOiB7XG4gIHBsYXRmb3JtOiBzdHJpbmdcbiAgYXJjaDogc3RyaW5nXG4gIGxpYmM6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD5cbiAgcmVzb2x2ZVBhY2thZ2U6IChzcGVjaWZpZXI6IHN0cmluZykgPT4gc3RyaW5nXG59KSB7XG4gIGNvbnN0IG92ZXJyaWRlID0gcHJvcHMuZW52W0FERE9OX0VOVl1cbiAgaWYgKG92ZXJyaWRlKSByZXR1cm4gb3ZlcnJpZGVcblxuICBjb25zdCBzdWZmaXggPSBwcm9wcy5saWJjID09PSBcIm11c2xcIiA/IFwiLW11c2xcIiA6IFwiXCJcbiAgY29uc3Qga2V5ID0gYCR7cHJvcHMucGxhdGZvcm19LSR7cHJvcHMuYXJjaH0ke3N1ZmZpeH1gXG4gIGNvbnN0IHBsYXRmb3JtID0gUExBVEZPUk1TW2tleV1cbiAgaWYgKCFwbGF0Zm9ybSkge1xuICAgIGNvbnN0IHN1cHBvcnRlZCA9IE9iamVjdC5rZXlzKFBMQVRGT1JNUykuam9pbihcIiwgXCIpXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYCR7UEFDS0FHRV9OQU1FfSBoYXMgbm8gYWRkb24gZm9yICR7a2V5fTsgc3VwcG9ydGVkOiAke3N1cHBvcnRlZH0uIGAgK1xuICAgICAgICBgU2V0ICR7QURET05fRU5WfSB0byBhbiBhZGRvbiBidWlsdCB3aXRoIGNhcmdvIHRvIGxvYWQgaXQgYW55d2F5LmAsXG4gICAgKVxuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIHByb3BzLnJlc29sdmVQYWNrYWdlKGAke3BsYXRmb3JtLnBhY2thZ2VOYW1lfS8ke3BsYXRmb3JtLmFkZG9ufWApXG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke3BsYXRmb3JtLnBhY2thZ2VOYW1lfSBpcyBub3QgaW5zdGFsbGVkLiBSZWluc3RhbGwgJHtQQUNLQUdFX05BTUV9IHdpdGhvdXQgYCArXG4gICAgICAgIGAtLW5vLW9wdGlvbmFsIC8gLS1vbWl0PW9wdGlvbmFsIHNvIHRoZSBhZGRvbiBmb3IgJHtrZXl9IGNvbWVzIGFsb25nLmAsXG4gICAgKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /** The C library Node runs on under Linux: glibc when its report names a glibc, else musl. */
2
+ export declare function detectLibc(props: {
3
+ platform: string;
4
+ report: () => object;
5
+ }): "glibc" | "musl" | undefined;
@@ -0,0 +1,11 @@
1
+ /** The C library Node runs on under Linux: glibc when its report names a glibc, else musl. */
2
+ export function detectLibc(props) {
3
+ if (props.platform !== "linux")
4
+ return undefined;
5
+ const report = props.report();
6
+ const header = "header" in report ? report.header : undefined;
7
+ if (typeof header !== "object" || header === null)
8
+ return "glibc";
9
+ return "glibcVersionRuntime" in header && header.glibcVersionRuntime ? "glibc" : "musl";
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWN0aW9ucy9saWJjL2RldGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4RkFBOEY7QUFDOUYsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFpRDtJQUMxRSxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssT0FBTztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBQ2hELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUM3QixNQUFNLE1BQU0sR0FBRyxRQUFRLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDN0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLElBQUk7UUFBRSxPQUFPLE9BQU8sQ0FBQTtJQUNqRSxPQUFPLHFCQUFxQixJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO0FBQ3pGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVGhlIEMgbGlicmFyeSBOb2RlIHJ1bnMgb24gdW5kZXIgTGludXg6IGdsaWJjIHdoZW4gaXRzIHJlcG9ydCBuYW1lcyBhIGdsaWJjLCBlbHNlIG11c2wuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0TGliYyhwcm9wczogeyBwbGF0Zm9ybTogc3RyaW5nOyByZXBvcnQ6ICgpID0+IG9iamVjdCB9KSB7XG4gIGlmIChwcm9wcy5wbGF0Zm9ybSAhPT0gXCJsaW51eFwiKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IHJlcG9ydCA9IHByb3BzLnJlcG9ydCgpXG4gIGNvbnN0IGhlYWRlciA9IFwiaGVhZGVyXCIgaW4gcmVwb3J0ID8gcmVwb3J0LmhlYWRlciA6IHVuZGVmaW5lZFxuICBpZiAodHlwZW9mIGhlYWRlciAhPT0gXCJvYmplY3RcIiB8fCBoZWFkZXIgPT09IG51bGwpIHJldHVybiBcImdsaWJjXCJcbiAgcmV0dXJuIFwiZ2xpYmNWZXJzaW9uUnVudGltZVwiIGluIGhlYWRlciAmJiBoZWFkZXIuZ2xpYmNWZXJzaW9uUnVudGltZSA/IFwiZ2xpYmNcIiA6IFwibXVzbFwiXG59XG4iXX0=
@@ -4,7 +4,7 @@ import type { Host } from "../../models/host.ts";
4
4
  /** Run the host plugins a native run pauses at until it finishes; under `sync`, a plugin
5
5
  * finishing later fails with `async-in-sync`, as an asynchronous native stage does. */
6
6
  export declare function finishRun(props: {
7
- run: NativeRun<unknown>;
7
+ run: NativeRun;
8
8
  hosts: Map<number, Host>;
9
9
  file: HostFile;
10
10
  sync: boolean;
@@ -6,7 +6,7 @@ export function finishRun(props) {
6
6
  let sent = props.file.messages.length;
7
7
  while (props.run.hosts().length > 0) {
8
8
  mirrorMessages();
9
- const tree = runHosts(props, props.run.hosts(), props.run.tree());
9
+ const tree = runHosts(props, props.run.hosts(), readTree(props.run.tree()));
10
10
  if (isThenable(tree)) {
11
11
  if (props.sync)
12
12
  throw asyncError(props.call);
@@ -26,7 +26,7 @@ export function finishRun(props) {
26
26
  sent = props.file.messages.length;
27
27
  }
28
28
  function resume(tree) {
29
- props.run.resume(tree, props.file.messages.slice(sent).map(message => message.toJSON()));
29
+ props.run.resume(JSON.stringify(tree), props.file.messages.slice(sent).map(message => message.toJSON()));
30
30
  sent = props.file.messages.length;
31
31
  }
32
32
  }
@@ -45,8 +45,12 @@ function runHosts(props, ids, tree) {
45
45
  }
46
46
  return tree;
47
47
  }
48
+ function readTree(text) {
49
+ const tree = JSON.parse(text);
50
+ return tree;
51
+ }
48
52
  function asyncError(call) {
49
53
  const message = `\`${call}Sync\` finished async. Use \`${call}\` instead`;
50
54
  return Object.assign(new Error(message), { code: "async-in-sync" });
51
55
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluaXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWN0aW9ucy9ydW4vZmluaXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBaUIsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUV0RDt1RkFDdUY7QUFDdkYsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQU16QjtJQUNDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQTtJQUNyQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BDLGNBQWMsRUFBRSxDQUFBO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFDakUsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLEtBQUssQ0FBQyxJQUFJO2dCQUFFLE1BQU0sVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUM1QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ1osT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDekIsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2QsQ0FBQztJQUVELHdGQUF3RjtJQUN4RixTQUFTLGNBQWM7UUFDckIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDdkUsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMvQixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzdFLENBQUM7UUFDRCxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFBO0lBQ25DLENBQUM7SUFFRCxTQUFTLE1BQU0sQ0FBQyxJQUFVO1FBQ3hCLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUNkLElBQUksRUFDSixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQ2pFLENBQUE7UUFDRCxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFBO0lBQ25DLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQ2YsS0FBZ0YsRUFDaEYsR0FBYSxFQUNiLElBQVU7SUFFVixLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDeEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFBO1FBQ3BELElBQUksQ0FBQyxXQUFXO1lBQUUsU0FBUTtRQUMxQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUNoRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksS0FBSyxDQUFDLElBQUk7Z0JBQUUsTUFBTSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzVDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUN6RSxDQUFDO1FBQ0QsSUFBSSxHQUFHLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFZO0lBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssSUFBSSxnQ0FBZ0MsSUFBSSxZQUFZLENBQUE7SUFDekUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUE7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTmF0aXZlUnVuIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hZGRvbi50c1wiXG5pbXBvcnQgdHlwZSB7IE5vZGUgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2ZpbGUudHNcIlxuaW1wb3J0IHsgdHlwZSBIb3N0RmlsZSwgSG9zdE1lc3NhZ2UgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3ZmaWxlLnRzXCJcbmltcG9ydCB0eXBlIHsgSG9zdCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvaG9zdC50c1wiXG5pbXBvcnQgeyBjYWxsSG9zdCwgaXNUaGVuYWJsZSB9IGZyb20gXCIuLi9ob3N0L2NhbGwudHNcIlxuXG4vKiogUnVuIHRoZSBob3N0IHBsdWdpbnMgYSBuYXRpdmUgcnVuIHBhdXNlcyBhdCB1bnRpbCBpdCBmaW5pc2hlczsgdW5kZXIgYHN5bmNgLCBhIHBsdWdpblxuICogZmluaXNoaW5nIGxhdGVyIGZhaWxzIHdpdGggYGFzeW5jLWluLXN5bmNgLCBhcyBhbiBhc3luY2hyb25vdXMgbmF0aXZlIHN0YWdlIGRvZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZmluaXNoUnVuKHByb3BzOiB7XG4gIHJ1bjogTmF0aXZlUnVuPHVua25vd24+XG4gIGhvc3RzOiBNYXA8bnVtYmVyLCBIb3N0PlxuICBmaWxlOiBIb3N0RmlsZVxuICBzeW5jOiBib29sZWFuXG4gIGNhbGw6IFwicnVuXCIgfCBcInByb2Nlc3NcIlxufSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IHNlbnQgPSBwcm9wcy5maWxlLm1lc3NhZ2VzLmxlbmd0aFxuICB3aGlsZSAocHJvcHMucnVuLmhvc3RzKCkubGVuZ3RoID4gMCkge1xuICAgIG1pcnJvck1lc3NhZ2VzKClcbiAgICBjb25zdCB0cmVlID0gcnVuSG9zdHMocHJvcHMsIHByb3BzLnJ1bi5ob3N0cygpLCBwcm9wcy5ydW4udHJlZSgpKVxuICAgIGlmIChpc1RoZW5hYmxlKHRyZWUpKSB7XG4gICAgICBpZiAocHJvcHMuc3luYykgdGhyb3cgYXN5bmNFcnJvcihwcm9wcy5jYWxsKVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cmVlKS50aGVuKHRyZWUgPT4ge1xuICAgICAgICByZXN1bWUodHJlZSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaFJ1bihwcm9wcylcbiAgICAgIH0pXG4gICAgfVxuICAgIHJlc3VtZSh0cmVlKVxuICB9XG5cbiAgLy8gZmlsZS5tZXNzYWdlcyBmb2xsb3dzIHRoZSBydW4nczogd2hhdCBuYXRpdmUgc3RhZ2VzIHJlcG9ydGVkIHNpbmNlLCB0aGVuIHRoZSBwbHVnaW5zJ1xuICBmdW5jdGlvbiBtaXJyb3JNZXNzYWdlcygpIHtcbiAgICBjb25zdCByZXBvcnRlZCA9IHByb3BzLnJ1bi5tZXNzYWdlcygpLnNsaWNlKHByb3BzLmZpbGUubWVzc2FnZXMubGVuZ3RoKVxuICAgIGZvciAoY29uc3QgbWVzc2FnZSBvZiByZXBvcnRlZCkge1xuICAgICAgcHJvcHMuZmlsZS5tZXNzYWdlcy5wdXNoKEhvc3RNZXNzYWdlLmZyb21NZXNzYWdlKG1lc3NhZ2UsIHByb3BzLmZpbGUucGF0aCkpXG4gICAgfVxuICAgIHNlbnQgPSBwcm9wcy5maWxlLm1lc3NhZ2VzLmxlbmd0aFxuICB9XG5cbiAgZnVuY3Rpb24gcmVzdW1lKHRyZWU6IE5vZGUpIHtcbiAgICBwcm9wcy5ydW4ucmVzdW1lKFxuICAgICAgdHJlZSxcbiAgICAgIHByb3BzLmZpbGUubWVzc2FnZXMuc2xpY2Uoc2VudCkubWFwKG1lc3NhZ2UgPT4gbWVzc2FnZS50b0pTT04oKSksXG4gICAgKVxuICAgIHNlbnQgPSBwcm9wcy5maWxlLm1lc3NhZ2VzLmxlbmd0aFxuICB9XG59XG5cbmZ1bmN0aW9uIHJ1bkhvc3RzKFxuICBwcm9wczogeyBob3N0czogTWFwPG51bWJlciwgSG9zdD47IGZpbGU6IEhvc3RGaWxlOyBzeW5jOiBib29sZWFuOyBjYWxsOiBzdHJpbmcgfSxcbiAgaWRzOiBudW1iZXJbXSxcbiAgdHJlZTogTm9kZSxcbik6IE5vZGUgfCBQcm9taXNlTGlrZTxOb2RlPiB7XG4gIGZvciAoY29uc3QgW2luZGV4LCBpZF0gb2YgaWRzLmVudHJpZXMoKSkge1xuICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gcHJvcHMuaG9zdHMuZ2V0KGlkKT8udHJhbnNmb3JtZXJcbiAgICBpZiAoIXRyYW5zZm9ybWVyKSBjb250aW51ZVxuICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxIb3N0KHsgdHJhbnNmb3JtZXIsIHRyZWUsIGZpbGU6IHByb3BzLmZpbGUgfSlcbiAgICBpZiAoaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICBpZiAocHJvcHMuc3luYykgdGhyb3cgYXN5bmNFcnJvcihwcm9wcy5jYWxsKVxuICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKHRyZWUgPT4gcnVuSG9zdHMocHJvcHMsIGlkcy5zbGljZShpbmRleCArIDEpLCB0cmVlKSlcbiAgICB9XG4gICAgdHJlZSA9IHJlc3VsdFxuICB9XG4gIHJldHVybiB0cmVlXG59XG5cbmZ1bmN0aW9uIGFzeW5jRXJyb3IoY2FsbDogc3RyaW5nKSB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBgXFxgJHtjYWxsfVN5bmNcXGAgZmluaXNoZWQgYXN5bmMuIFVzZSBcXGAke2NhbGx9XFxgIGluc3RlYWRgXG4gIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihtZXNzYWdlKSwgeyBjb2RlOiBcImFzeW5jLWluLXN5bmNcIiB9KVxufVxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluaXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWN0aW9ucy9ydW4vZmluaXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBaUIsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUV0RDt1RkFDdUY7QUFDdkYsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQU16QjtJQUNDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQTtJQUNyQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BDLGNBQWMsRUFBRSxDQUFBO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDM0UsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLEtBQUssQ0FBQyxJQUFJO2dCQUFFLE1BQU0sVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUM1QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ1osT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDekIsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2QsQ0FBQztJQUVELHdGQUF3RjtJQUN4RixTQUFTLGNBQWM7UUFDckIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDdkUsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMvQixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzdFLENBQUM7UUFDRCxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFBO0lBQ25DLENBQUM7SUFFRCxTQUFTLE1BQU0sQ0FBQyxJQUFVO1FBQ3hCLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FDakUsQ0FBQTtRQUNELElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUE7SUFDbkMsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FDZixLQUFnRixFQUNoRixHQUFhLEVBQ2IsSUFBVTtJQUVWLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUN4QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUE7UUFDcEQsSUFBSSxDQUFDLFdBQVc7WUFBRSxTQUFRO1FBQzFCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ2hFLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdkIsSUFBSSxLQUFLLENBQUMsSUFBSTtnQkFBRSxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDNUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3pFLENBQUM7UUFDRCxJQUFJLEdBQUcsTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVk7SUFDNUIsTUFBTSxJQUFJLEdBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNuQyxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFZO0lBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssSUFBSSxnQ0FBZ0MsSUFBSSxZQUFZLENBQUE7SUFDekUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUE7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTmF0aXZlUnVuIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hZGRvbi50c1wiXG5pbXBvcnQgdHlwZSB7IE5vZGUgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2ZpbGUudHNcIlxuaW1wb3J0IHsgdHlwZSBIb3N0RmlsZSwgSG9zdE1lc3NhZ2UgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3ZmaWxlLnRzXCJcbmltcG9ydCB0eXBlIHsgSG9zdCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvaG9zdC50c1wiXG5pbXBvcnQgeyBjYWxsSG9zdCwgaXNUaGVuYWJsZSB9IGZyb20gXCIuLi9ob3N0L2NhbGwudHNcIlxuXG4vKiogUnVuIHRoZSBob3N0IHBsdWdpbnMgYSBuYXRpdmUgcnVuIHBhdXNlcyBhdCB1bnRpbCBpdCBmaW5pc2hlczsgdW5kZXIgYHN5bmNgLCBhIHBsdWdpblxuICogZmluaXNoaW5nIGxhdGVyIGZhaWxzIHdpdGggYGFzeW5jLWluLXN5bmNgLCBhcyBhbiBhc3luY2hyb25vdXMgbmF0aXZlIHN0YWdlIGRvZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZmluaXNoUnVuKHByb3BzOiB7XG4gIHJ1bjogTmF0aXZlUnVuXG4gIGhvc3RzOiBNYXA8bnVtYmVyLCBIb3N0PlxuICBmaWxlOiBIb3N0RmlsZVxuICBzeW5jOiBib29sZWFuXG4gIGNhbGw6IFwicnVuXCIgfCBcInByb2Nlc3NcIlxufSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IHNlbnQgPSBwcm9wcy5maWxlLm1lc3NhZ2VzLmxlbmd0aFxuICB3aGlsZSAocHJvcHMucnVuLmhvc3RzKCkubGVuZ3RoID4gMCkge1xuICAgIG1pcnJvck1lc3NhZ2VzKClcbiAgICBjb25zdCB0cmVlID0gcnVuSG9zdHMocHJvcHMsIHByb3BzLnJ1bi5ob3N0cygpLCByZWFkVHJlZShwcm9wcy5ydW4udHJlZSgpKSlcbiAgICBpZiAoaXNUaGVuYWJsZSh0cmVlKSkge1xuICAgICAgaWYgKHByb3BzLnN5bmMpIHRocm93IGFzeW5jRXJyb3IocHJvcHMuY2FsbClcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJlZSkudGhlbih0cmVlID0+IHtcbiAgICAgICAgcmVzdW1lKHRyZWUpXG4gICAgICAgIHJldHVybiBmaW5pc2hSdW4ocHJvcHMpXG4gICAgICB9KVxuICAgIH1cbiAgICByZXN1bWUodHJlZSlcbiAgfVxuXG4gIC8vIGZpbGUubWVzc2FnZXMgZm9sbG93cyB0aGUgcnVuJ3M6IHdoYXQgbmF0aXZlIHN0YWdlcyByZXBvcnRlZCBzaW5jZSwgdGhlbiB0aGUgcGx1Z2lucydcbiAgZnVuY3Rpb24gbWlycm9yTWVzc2FnZXMoKSB7XG4gICAgY29uc3QgcmVwb3J0ZWQgPSBwcm9wcy5ydW4ubWVzc2FnZXMoKS5zbGljZShwcm9wcy5maWxlLm1lc3NhZ2VzLmxlbmd0aClcbiAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgcmVwb3J0ZWQpIHtcbiAgICAgIHByb3BzLmZpbGUubWVzc2FnZXMucHVzaChIb3N0TWVzc2FnZS5mcm9tTWVzc2FnZShtZXNzYWdlLCBwcm9wcy5maWxlLnBhdGgpKVxuICAgIH1cbiAgICBzZW50ID0gcHJvcHMuZmlsZS5tZXNzYWdlcy5sZW5ndGhcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc3VtZSh0cmVlOiBOb2RlKSB7XG4gICAgcHJvcHMucnVuLnJlc3VtZShcbiAgICAgIEpTT04uc3RyaW5naWZ5KHRyZWUpLFxuICAgICAgcHJvcHMuZmlsZS5tZXNzYWdlcy5zbGljZShzZW50KS5tYXAobWVzc2FnZSA9PiBtZXNzYWdlLnRvSlNPTigpKSxcbiAgICApXG4gICAgc2VudCA9IHByb3BzLmZpbGUubWVzc2FnZXMubGVuZ3RoXG4gIH1cbn1cblxuZnVuY3Rpb24gcnVuSG9zdHMoXG4gIHByb3BzOiB7IGhvc3RzOiBNYXA8bnVtYmVyLCBIb3N0PjsgZmlsZTogSG9zdEZpbGU7IHN5bmM6IGJvb2xlYW47IGNhbGw6IHN0cmluZyB9LFxuICBpZHM6IG51bWJlcltdLFxuICB0cmVlOiBOb2RlLFxuKTogTm9kZSB8IFByb21pc2VMaWtlPE5vZGU+IHtcbiAgZm9yIChjb25zdCBbaW5kZXgsIGlkXSBvZiBpZHMuZW50cmllcygpKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtZXIgPSBwcm9wcy5ob3N0cy5nZXQoaWQpPy50cmFuc2Zvcm1lclxuICAgIGlmICghdHJhbnNmb3JtZXIpIGNvbnRpbnVlXG4gICAgY29uc3QgcmVzdWx0ID0gY2FsbEhvc3QoeyB0cmFuc2Zvcm1lciwgdHJlZSwgZmlsZTogcHJvcHMuZmlsZSB9KVxuICAgIGlmIChpc1RoZW5hYmxlKHJlc3VsdCkpIHtcbiAgICAgIGlmIChwcm9wcy5zeW5jKSB0aHJvdyBhc3luY0Vycm9yKHByb3BzLmNhbGwpXG4gICAgICByZXR1cm4gcmVzdWx0LnRoZW4odHJlZSA9PiBydW5Ib3N0cyhwcm9wcywgaWRzLnNsaWNlKGluZGV4ICsgMSksIHRyZWUpKVxuICAgIH1cbiAgICB0cmVlID0gcmVzdWx0XG4gIH1cbiAgcmV0dXJuIHRyZWVcbn1cblxuZnVuY3Rpb24gcmVhZFRyZWUodGV4dDogc3RyaW5nKSB7XG4gIGNvbnN0IHRyZWU6IE5vZGUgPSBKU09OLnBhcnNlKHRleHQpXG4gIHJldHVybiB0cmVlXG59XG5cbmZ1bmN0aW9uIGFzeW5jRXJyb3IoY2FsbDogc3RyaW5nKSB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBgXFxgJHtjYWxsfVN5bmNcXGAgZmluaXNoZWQgYXN5bmMuIFVzZSBcXGAke2NhbGx9XFxgIGluc3RlYWRgXG4gIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihtZXNzYWdlKSwgeyBjb2RlOiBcImFzeW5jLWluLXN5bmNcIiB9KVxufVxuIl19
@@ -24,9 +24,18 @@ export interface FormatOptions {
24
24
  indent?: Indent | null;
25
25
  /** Indent the first level, usually `<html>`'s `head` and `body`; `true` when left out. */
26
26
  indentInitial?: boolean | null;
27
+ /** Only collapse whitespace, as rehype-minify-whitespace does, adding no line endings or indentation; `{ newlines: true }` collapses a run holding a line ending to it. */
28
+ minify?: Minify | null;
27
29
  }
28
30
  /** One level of indentation. */
29
31
  export type Indent = number | string;
32
+ /** `html.format`'s `minify`: on, or on with rehype-minify-whitespace's options. */
33
+ export type Minify = boolean | MinifyOptions;
34
+ /** rehype-minify-whitespace's options. */
35
+ export interface MinifyOptions {
36
+ /** Collapse a run of whitespace holding a line ending to a line ending, not a space. @default false */
37
+ newlines?: boolean;
38
+ }
30
39
  /** `html.sanitize`: keep only what a schema allows; options: hast-util-sanitize's schema, where a field left out keeps the default schema's, which is GitHub's. */
31
40
  export interface SanitizeOptions {
32
41
  /** Keep comments. */
@@ -58,7 +67,30 @@ export type Primitive = boolean | number | string;
58
67
  export interface SlugOptions {
59
68
  /** Put before each id. @default "" */
60
69
  prefix?: string;
70
+ /** Link each heading with an `id` to itself, as rehype-autolink-headings does: `true`, or its options. */
71
+ autolink?: Autolink | null;
72
+ }
73
+ /** `html.slug`'s `autolink`: on, or on with rehype-autolink-headings' options. */
74
+ export type Autolink = boolean | AutolinkOptions;
75
+ /** rehype-autolink-headings' options, JSON values only. */
76
+ export interface AutolinkOptions {
77
+ /** Where the link goes: in the heading first or last, around its content, or before or after it. */
78
+ behavior?: AutolinkBehavior;
79
+ /** The link's properties, as hast names them; `ariaHidden` and `tabIndex: -1` for `prepend` and `append` when left out. */
80
+ properties?: Record<string, unknown> | null;
81
+ /** hast content of the link, one node or a list; `<span class="icon icon-link">` when left out, except for `wrap`, which appends it to the heading's content. */
82
+ content?: unknown;
83
+ /** A hast element wrapping the heading and its link, for `before` and `after`. */
84
+ group?: unknown;
85
+ /** Properties set on each linked heading. */
86
+ headingProperties?: Record<string, unknown> | null;
87
+ /** The tag names of the headings to link; every heading when left out. */
88
+ test?: TagNames | null;
61
89
  }
90
+ /** Where `autolink` puts each heading's link. */
91
+ export type AutolinkBehavior = "prepend" | "append" | "wrap" | "before" | "after";
92
+ /** One tag name or several. */
93
+ export type TagNames = string | string[];
62
94
  /** `html.externalLinks`: `rel`, `target` and more on links to other sites, as rehype-external-links adds them; options named as it names them, JSON values only. */
63
95
  export interface ExternalLinksOptions {
64
96
  /** The `target` of each external link, such as `_blank`. */
@@ -73,4 +73,4 @@ export function stringify(options) {
73
73
  return { name: "html.stringify" };
74
74
  return { name: "html.stringify", options };
75
75
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2dlbmVyYXRlZC9odG1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtFQUErRTtBQXNPL0UsK0JBQStCO0FBQy9CLE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBc0I7SUFDMUMsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUE7SUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDeEMsQ0FBQztBQUVELDZCQUE2QjtBQUM3QixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQW9CO0lBQ3RDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFBO0lBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3RDLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUF1QjtJQUM1QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQTtJQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN6QyxDQUFDO0FBRUQsa0NBQWtDO0FBQ2xDLE1BQU0sVUFBVSxRQUFRLENBQUMsT0FBeUI7SUFDaEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUE7SUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDM0MsQ0FBQztBQUVELDhCQUE4QjtBQUM5QixNQUFNLFVBQVUsSUFBSSxDQUFDLE9BQXFCO0lBQ3hDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFBO0lBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3ZDLENBQUM7QUFFRCx1Q0FBdUM7QUFDdkMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE4QjtJQUMxRCxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxDQUFBO0lBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDaEQsQ0FBQztBQUVELHNDQUFzQztBQUN0QyxNQUFNLFVBQVUsWUFBWTtJQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLENBQUE7QUFDdEMsQ0FBQztBQUVELG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQTJCO0lBQ3BELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUE7SUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM3QyxDQUFDO0FBRUQsbUNBQW1DO0FBQ25DLE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBMEI7SUFDbEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQTtJQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzVDLENBQUM7QUFFRCwrQkFBK0I7QUFDL0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFzQjtJQUMxQyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQTtJQUN4RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN4QyxDQUFDO0FBRUQsb0NBQW9DO0FBQ3BDLE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBMkI7SUFDcEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQTtJQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzdDLENBQUM7QUFFRCwyQ0FBMkM7QUFDM0MsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLENBQUE7QUFDM0MsQ0FBQztBQUVELG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQTBCO0lBQ2xELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUE7SUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGBwbnBtIGdlbmVyYXRlOmJpbmRpbmdzYCBmcm9tIHRoZSBjcmF0ZSdzIHBsdWdpbnM7IGRvIG5vdCBlZGl0LlxuXG5pbXBvcnQgdHlwZSB7IFJvb3QgfSBmcm9tIFwiaGFzdFwiXG5pbXBvcnQgdHlwZSB7IFBhcnNlciwgUGx1Z2luIH0gZnJvbSBcIi4uL21vZGVscy9wbHVnaW4udHNcIlxuXG4vKiogYGh0bWwucGFyc2VgOiBIVE1MIGludG8gaGFzdDsgb3B0aW9ucyBuYW1lZCBhcyByZWh5cGUtcGFyc2UgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VPcHRpb25zIHtcbiAgLyoqIFBhcnNlIGEgZnJhZ21lbnQsIGFzIGluIGEgYHRlbXBsYXRlYCwgcmF0aGVyIHRoYW4gYSB3aG9sZSBkb2N1bWVudC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZnJhZ21lbnQ/OiBib29sZWFuXG4gIC8qKiBSZXBvcnQgcGFyc2UgZXJyb3JzIGFzIG1lc3NhZ2VzIG9uIHRoZSBmaWxlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBlbWl0UGFyc2VFcnJvcnM/OiBib29sZWFuXG4gIC8qKiBBZGQgdGhlIHBvc2l0aW9ucyBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIHRhZ3MgYW5kIGF0dHJpYnV0ZXMgdG8gZWxlbWVudHMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHZlcmJvc2U/OiBib29sZWFuXG59XG5cbi8qKiBgaHRtbC5yYXdgOiByZXBhcnNlIHJhdyBIVE1MIGFuZCBmaXggbmVzdGluZyB0aHJvdWdoIHRoZSBIVE1MIHBhcnNlcjsgb3B0aW9ucyBuYW1lZCBhcyBoYXN0LXV0aWwtcmF3IG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFJhd09wdGlvbnMge1xuICAvKiogTm9kZSB0eXBlcywgdW5rbm93biB0byBoYXN0LCB0byBjb3B5IHRocm91Z2ggYXMgdGhleSBhcmU7IHRoZWlyIGNoaWxkcmVuIGFyZSByZXBhcnNlZCBvbiB0aGVpciBvd24uIEBkZWZhdWx0IFtdICovXG4gIHBhc3NUaHJvdWdoPzogc3RyaW5nW11cbiAgLyoqIEVzY2FwZSB0aGUgb3BlbmluZyBgPGAgb2YgdGhlIHRhZ3MgR0ZNJ3MgdGFnZmlsdGVyIGRpc2FsbG93cyBpbiByYXcgbm9kZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRhZ2ZpbHRlcj86IGJvb2xlYW5cbn1cblxuLyoqIGBodG1sLmZvcm1hdGA6IGluZGVudCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZSBmb3IgcmVhZGFibGUgSFRNTDsgb3B0aW9ucyBuYW1lZCBhcyBoYXN0LXV0aWwtZm9ybWF0IG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdE9wdGlvbnMge1xuICAvKiogVGFnIG5hbWVzIG9mIGVsZW1lbnRzIHRvIHB1dCBhIGJsYW5rIGxpbmUgYmV0d2Vlbiwgd2hlbiBib3RoIGFyZSBvbmUuIEBkZWZhdWx0IFtdICovXG4gIGJsYW5rcz86IHN0cmluZ1tdXG4gIC8qKiBPbmUgbGV2ZWwgb2YgaW5kZW50YXRpb246IGEgbnVtYmVyIG9mIHNwYWNlcyBvciB0aGUgdGV4dCBpdHNlbGY7IHR3byBzcGFjZXMgd2hlbiBsZWZ0IG91dC4gKi9cbiAgaW5kZW50PzogSW5kZW50IHwgbnVsbFxuICAvKiogSW5kZW50IHRoZSBmaXJzdCBsZXZlbCwgdXN1YWxseSBgPGh0bWw+YCdzIGBoZWFkYCBhbmQgYGJvZHlgOyBgdHJ1ZWAgd2hlbiBsZWZ0IG91dC4gKi9cbiAgaW5kZW50SW5pdGlhbD86IGJvb2xlYW4gfCBudWxsXG59XG5cbi8qKiBPbmUgbGV2ZWwgb2YgaW5kZW50YXRpb24uICovXG5leHBvcnQgdHlwZSBJbmRlbnQgPSBudW1iZXIgfCBzdHJpbmdcblxuLyoqIGBodG1sLnNhbml0aXplYDoga2VlcCBvbmx5IHdoYXQgYSBzY2hlbWEgYWxsb3dzOyBvcHRpb25zOiBoYXN0LXV0aWwtc2FuaXRpemUncyBzY2hlbWEsIHdoZXJlIGEgZmllbGQgbGVmdCBvdXQga2VlcHMgdGhlIGRlZmF1bHQgc2NoZW1hJ3MsIHdoaWNoIGlzIEdpdEh1YidzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYW5pdGl6ZU9wdGlvbnMge1xuICAvKiogS2VlcCBjb21tZW50cy4gKi9cbiAgYWxsb3dDb21tZW50cz86IGJvb2xlYW4gfCBudWxsXG4gIC8qKiBLZWVwIGRvY3R5cGVzLiAqL1xuICBhbGxvd0RvY3R5cGVzPzogYm9vbGVhbiB8IG51bGxcbiAgLyoqIEVsZW1lbnRzIGFsbG93ZWQgb25seSBpbnNpZGUgb25lIG9mIHRoZXNlIGFuY2VzdG9ycywgYnkgdGFnIG5hbWUuICovXG4gIGFuY2VzdG9ycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiB8IG51bGxcbiAgLyoqIFByb3BlcnRpZXMgYWxsb3dlZCBwZXIgdGFnIG5hbWUsIGAqYCBmb3IgZXZlcnkgZWxlbWVudDsgYSBsaXN0IG5hbWVzIGEgcHJvcGVydHkgYW5kIHRoZSB2YWx1ZXMgaXQgbWF5IGhhdmUuICovXG4gIGF0dHJpYnV0ZXM/OiBSZWNvcmQ8c3RyaW5nLCBBdHRyaWJ1dGVEZWZpbml0aW9uW10+IHwgbnVsbFxuICAvKiogUHJvcGVydGllcyB3aG9zZSB2YWx1ZXMgZ2V0IGBjbG9iYmVyX3ByZWZpeGAsIHNvIHRoZXkgY2Fubm90IGNsb2JiZXIgZ2xvYmFscy4gKi9cbiAgY2xvYmJlcj86IHN0cmluZ1tdIHwgbnVsbFxuICAvKiogVGhlIHByZWZpeCBvZiBjbG9iYmVyZWQgdmFsdWVzLiAqL1xuICBjbG9iYmVyUHJlZml4Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVVJMIHByb3BlcnRpZXMgYW5kIHRoZSBwcm90b2NvbHMgdGhleSBtYXkgdXNlLiAqL1xuICBwcm90b2NvbHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gfCBudWxsXG4gIC8qKiBQcm9wZXJ0aWVzIHNldCBvbiBlbGVtZW50cyB3aGF0ZXZlciB0aGV5IGhhZCwgYnkgdGFnIG5hbWUuICovXG4gIHJlcXVpcmVkPzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgUHJpbWl0aXZlPj4gfCBudWxsXG4gIC8qKiBFbGVtZW50cyBkcm9wcGVkIHdpdGggdGhlaXIgY29udGVudCByYXRoZXIgdGhhbiB1bndyYXBwZWQuICovXG4gIHN0cmlwPzogc3RyaW5nW10gfCBudWxsXG4gIC8qKiBUaGUgZWxlbWVudHMga2VwdC4gKi9cbiAgdGFnTmFtZXM/OiBzdHJpbmdbXSB8IG51bGxcbn1cblxuLyoqIEEgcHJvcGVydHkgYSBzYW5pdGl6ZSBzY2hlbWEgYWxsb3dzOiBieSBuYW1lLCBvciBhIG5hbWUgYW5kIGl0cyBhbGxvd2VkIHZhbHVlcy4gKi9cbmV4cG9ydCB0eXBlIEF0dHJpYnV0ZURlZmluaXRpb24gPSBzdHJpbmcgfCBQcmltaXRpdmVbXVxuXG4vKiogQSBwcmltaXRpdmUgcHJvcGVydHkgdmFsdWUuICovXG5leHBvcnQgdHlwZSBQcmltaXRpdmUgPSBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nXG5cbi8qKiBgaHRtbC5zbHVnYDogaWRzIG9uIGhlYWRpbmdzLCBmcm9tIHRoZWlyIHRleHQ7IG9wdGlvbnMgbmFtZWQgYXMgcmVoeXBlLXNsdWcgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2x1Z09wdGlvbnMge1xuICAvKiogUHV0IGJlZm9yZSBlYWNoIGlkLiBAZGVmYXVsdCBcIlwiICovXG4gIHByZWZpeD86IHN0cmluZ1xufVxuXG4vKiogYGh0bWwuZXh0ZXJuYWxMaW5rc2A6IGByZWxgLCBgdGFyZ2V0YCBhbmQgbW9yZSBvbiBsaW5rcyB0byBvdGhlciBzaXRlcywgYXMgcmVoeXBlLWV4dGVybmFsLWxpbmtzIGFkZHMgdGhlbTsgb3B0aW9ucyBuYW1lZCBhcyBpdCBuYW1lcyB0aGVtLCBKU09OIHZhbHVlcyBvbmx5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlcm5hbExpbmtzT3B0aW9ucyB7XG4gIC8qKiBUaGUgYHRhcmdldGAgb2YgZWFjaCBleHRlcm5hbCBsaW5rLCBzdWNoIGFzIGBfYmxhbmtgLiAqL1xuICB0YXJnZXQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgYHJlbGAgb2YgZWFjaCBleHRlcm5hbCBsaW5rOiBhIGxpc3QsIG9yIHRva2VucyBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2U7IGBub2ZvbGxvd2Agd2hlbiBsZWZ0IG91dCBvciBlbXB0eSwgbm9uZSBmb3IgYW4gZW1wdHkgbGlzdC4gKi9cbiAgcmVsPzogVG9rZW5zIHwgbnVsbFxuICAvKiogVGhlIHByb3RvY29scyBvZiBhYnNvbHV0ZSBVUkxzIHRoYXQgY291bnQgYXMgZXh0ZXJuYWw7IGBodHRwYCBhbmQgYGh0dHBzYCB3aGVuIGxlZnQgb3V0LiBBIHByb3RvY29sLXJlbGF0aXZlIGAvL+KApmAgVVJMIGFsd2F5cyBjb3VudHMuICovXG4gIHByb3RvY29scz86IHN0cmluZ1tdIHwgbnVsbFxuICAvKiogTW9yZSBwcm9wZXJ0aWVzIGZvciBlYWNoIGV4dGVybmFsIGxpbmssIGFzIGhhc3QgbmFtZXMgdGhlbS4gKi9cbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxuICAvKiogaGFzdCBjb250ZW50IGFwcGVuZGVkIHRvIGVhY2ggZXh0ZXJuYWwgbGluayBpbiBhIGA8c3Bhbj5gOiBvbmUgbm9kZSBvciBhIGxpc3QuICovXG4gIGNvbnRlbnQ/OiB1bmtub3duXG4gIC8qKiBUaGUgcHJvcGVydGllcyBvZiB0aGF0IGA8c3Bhbj5gLiAqL1xuICBjb250ZW50UHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxufVxuXG4vKiogVG9rZW5zOiBhIGxpc3QsIG9yIG9uZSBzdHJpbmcgb2YgdGhlbSBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UuICovXG5leHBvcnQgdHlwZSBUb2tlbnMgPSBzdHJpbmcgfCBzdHJpbmdbXVxuXG4vKiogYGh0bWwuZXh0cmFjdFRvY2A6IHRoZSBoZWFkaW5ncywgbmVzdGVkIGJ5IHJhbmssIGFzIHRoZSBmaWxlJ3MgYGRhdGEudG9jYCwgYXMgQHN0ZWZhbnByb2JzdC9yZWh5cGUtZXh0cmFjdC10b2Mgc3RvcmVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dHJhY3RUb2NPcHRpb25zIHtcbiAgLyoqIEF0dHJpYnV0ZXMsIHN1Y2ggYXMgYGRhdGEtdG9jLWhpZGRlbmAsIHRoYXQga2VlcCBhIGhlYWRpbmcgb3V0IG9mIHRoZSB0YWJsZSBvZiBjb250ZW50czsgd2hhdCB3b3VsZCBuZXN0IHVuZGVyIGl0IG5lc3RzIHVuZGVyIHRoZSBoZWFkaW5nIGJlZm9yZS4gQGRlZmF1bHQgW10gKi9cbiAgc2tpcD86IHN0cmluZ1tdXG59XG5cbi8qKiBgaHRtbC5oaWdobGlnaHRgOiBjb2RlIGJsb2NrcyBjb2xvcmVkIGFzIFNoaWtpIGNvbG9ycyB0aGVtLCBuYXRpdmVseSBieSBnaWFsbG87IG9wdGlvbnMgbmFtZWQgYXMgQHNoaWtpanMvcmVoeXBlIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodE9wdGlvbnMge1xuICAvKiogVGhlIHRoZW1lIG9mIGVhY2ggY29sb3IgbW9kZSwgYGxpZ2h0YCBmaXJzdCwgYXMgYHtcImxpZ2h0XCI6IOKApiwgXCJkYXJrXCI6IOKApn1gLiAqL1xuICB0aGVtZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgLyoqIFRoZSBvbmUgdGhlbWUsIHdoZW4gYHRoZW1lc2AgaXMgbm90IGdpdmVuLiAqL1xuICB0aGVtZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBsYW5ndWFnZSBvZiBhIGJsb2NrIHRoYXQgbmFtZXMgbm9uZTsgc3VjaCBhIGJsb2NrIGlzIGxlZnQgYWxvbmUgd2l0aG91dCBpdC4gKi9cbiAgZGVmYXVsdExhbmd1YWdlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGxhbmd1YWdlIG9mIGEgYmxvY2sgbmFtaW5nIG9uZSBTaGlraSBkb2VzIG5vdCBrbm93OyBsZWZ0IGFsb25lIHdpdGhvdXQgaXQuICovXG4gIGZhbGxiYWNrTGFuZ3VhZ2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBDb2xvcnMgdG8gcmVwbGFjZSwgYnkgdGhlaXIgbG93ZXJjYXNlIHNwZWxsaW5nOiBhIGNvbG9yIGZvciBldmVyeSB0aGVtZSwgb3IgYSB0aGVtZSdzIG5hbWUgdG8gYSBtYXAgb2YgaXRzIG93bi4gKi9cbiAgY29sb3JSZXBsYWNlbWVudHM/OiBSZWNvcmQ8c3RyaW5nLCBDb2xvclJlcGxhY2VtZW50PlxuICAvKiogQWRkIGBsYW5ndWFnZS08bmFtZT5gIHRvIGVhY2ggaGlnaGxpZ2h0ZWQgYDxjb2RlPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIGFkZExhbmd1YWdlQ2xhc3M/OiBib29sZWFuXG4gIC8qKiBIaWdobGlnaHQgaW5saW5lIGNvZGUgdG9vLCBieSBob3cgaXQgbmFtZXMgaXRzIGxhbmd1YWdlOiBgdGFpbGluZy1jdXJseS1jb2xvbmAgcmVhZHMgYGAgYGEoKXs6anN9YCBgYC4gKi9cbiAgaW5saW5lPzogSW5saW5lQ29kZSB8IG51bGxcbiAgLyoqIFRoZSBgPHByZT5gIHByb3BlcnR5IHRoYXQgZ2V0cyBhIGJsb2NrJ3MgbWV0YSwgdGhlIHRleHQgYWZ0ZXIgaXRzIGxhbmd1YWdlOyB0aGUgSlNPTiBzdGFuZC1pbiBmb3IgYHBhcnNlTWV0YVN0cmluZzogbWV0YSA9PiAoeyBbbmFtZV06IG1ldGEgfSlgLiAqL1xuICBtZXRhUHJvcGVydHk/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgdHJhbnNmb3JtZXJzIG9mIEBzaGlraWpzL3RyYW5zZm9ybWVycyB0byBydW4sIGluIG9yZGVyLCBieSBuYW1lIG9yIHdpdGggb3B0aW9ucy4gKi9cbiAgdHJhbnNmb3JtZXJzPzogSGlnaGxpZ2h0VHJhbnNmb3JtZXJbXVxuICAvKiogTGluZXMgYXQgbGVhc3QgdGhpcyBsb25nLCBpbiBVVEYtMTYgdW5pdHMsIGFyZSBsZWZ0IG9uZSBwbGFpbiB0b2tlbiBhcyBTaGlraSdzIG93biBvcHRpb24gbGVhdmVzIHRoZW07IDIsMDAwIHdoZW4gbGVmdCBvdXQsIHdoZXJlIFNoaWtpIGhhcyBubyBsaW1pdCwgc2luY2UgYSBncmFtbWFyJ3MgdGltZSBncm93cyB3aXRoIHRoZSBzcXVhcmUgb2YgYSBsaW5lJ3MgbGVuZ3RoLiBgMGAgbGlmdHMgaXQuICovXG4gIHRva2VuaXplTWF4TGluZUxlbmd0aD86IG51bWJlciB8IG51bGxcbn1cblxuLyoqIEEgcmVwbGFjZW1lbnQgY29sb3IsIG9yIGEgdGhlbWUncyBvd24gcmVwbGFjZW1lbnRzLiAqL1xuZXhwb3J0IHR5cGUgQ29sb3JSZXBsYWNlbWVudCA9IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cblxuLyoqIEhvdyBpbmxpbmUgY29kZSBuYW1lcyBpdHMgbGFuZ3VhZ2UuICovXG5leHBvcnQgdHlwZSBJbmxpbmVDb2RlID0gXCJ0YWlsaW5nLWN1cmx5LWNvbG9uXCJcblxuLyoqIEEgdHJhbnNmb3JtZXIgb2YgQHNoaWtpanMvdHJhbnNmb3JtZXJzOiBpdHMgbmFtZSBhbG9uZSwgb3IgaXRzIG5hbWUgYW5kIG9wdGlvbnMuICovXG5leHBvcnQgdHlwZSBIaWdobGlnaHRUcmFuc2Zvcm1lciA9IFRyYW5zZm9ybWVyTmFtZSB8IENvbmZpZ3VyZWRUcmFuc2Zvcm1lclxuXG4vKiogVGhlIHRyYW5zZm9ybWVycyBgaHRtbC5oaWdobGlnaHRgIHJ1bnMgbmF0aXZlbHkuICovXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1lck5hbWUgPSBcIm5vdGF0aW9uRGlmZlwiIHwgXCJub3RhdGlvbkZvY3VzXCIgfCBcIm5vdGF0aW9uSGlnaGxpZ2h0XCIgfCBcIm5vdGF0aW9uRXJyb3JMZXZlbFwiIHwgXCJtZXRhSGlnaGxpZ2h0XCIgfCBcIm1ldGFXb3JkSGlnaGxpZ2h0XCIgfCBcInJlbmRlckxpbmVOdW1iZXJcIlxuXG4vKiogQSB0cmFuc2Zvcm1lciB3aXRoIGl0cyBvcHRpb25zLCBhcyBAc2hpa2lqcy90cmFuc2Zvcm1lcnMgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCB0eXBlIENvbmZpZ3VyZWRUcmFuc2Zvcm1lciA9IHsgbmFtZTogXCJub3RhdGlvbkRpZmZcIjsgY2xhc3NMaW5lQWRkPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzTGluZVJlbW92ZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZVByZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZUNvZGU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcIm5vdGF0aW9uRm9jdXNcIjsgY2xhc3NBY3RpdmVMaW5lPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlUHJlPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlQ29kZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwibm90YXRpb25IaWdobGlnaHRcIjsgY2xhc3NBY3RpdmVMaW5lPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlUHJlPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlQ29kZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwibm90YXRpb25FcnJvckxldmVsXCI7IGNsYXNzTWFwPzogUmVjb3JkPHN0cmluZywgQ2xhc3Nlcz4gfCBudWxsOyBjbGFzc0FjdGl2ZVByZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZUNvZGU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcIm1ldGFIaWdobGlnaHRcIjsgY2xhc3NOYW1lPzogQ2xhc3NlcyB8IG51bGw7IHplcm9JbmRleGVkPzogYm9vbGVhbiB9IHwgeyBuYW1lOiBcIm1ldGFXb3JkSGlnaGxpZ2h0XCI7IGNsYXNzTmFtZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwicmVuZGVyTGluZU51bWJlclwiOyBjbGFzc0xpbmVOdW1iZXI/OiBDbGFzc2VzIHwgbnVsbDsgc3RhcnQ/OiBudW1iZXIgfCBudWxsIH1cblxuLyoqIENsYXNzIG5hbWVzOiBhIGxpc3QsIG9yIG9uZSBzdHJpbmcgb2YgdGhlbSBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UuICovXG5leHBvcnQgdHlwZSBDbGFzc2VzID0gc3RyaW5nIHwgc3RyaW5nW11cblxuLyoqIGBodG1sLmthdGV4YDogbWF0aCByZW5kZXJlZCBhcyByZWh5cGUta2F0ZXggcmVuZGVycyBpdCwgbmF0aXZlbHkgYnkga2F0ZXgtcnM7IG9wdGlvbnMgbmFtZWQgYXMgS2FUZVggbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2F0ZXhPcHRpb25zIHtcbiAgLyoqIFRoZSBtYXJrdXAgdG8gd3JpdGUsIGJvdGggSFRNTCBhbmQgTWF0aE1MIGJ5IGRlZmF1bHQuICovXG4gIG91dHB1dD86IEthdGV4T3V0cHV0IHwgbnVsbFxuICAvKiogUHV0IGVxdWF0aW9uIG51bWJlcnMgb24gdGhlIGxlZnQuIEBkZWZhdWx0IGZhbHNlICovXG4gIGxlcW5vPzogYm9vbGVhblxuICAvKiogQWxpZ24gZGlzcGxheSBtYXRoIHRvIHRoZSBsZWZ0IGluc3RlYWQgb2YgY2VudGVyaW5nIGl0LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBmbGVxbj86IGJvb2xlYW5cbiAgLyoqIFRoZSBjb2xvciBvZiBtYXRoIHRoYXQgZmFpbHMgdG8gcmVuZGVyLCBgI2NjMDAwMGAgYnkgZGVmYXVsdC4gKi9cbiAgZXJyb3JDb2xvcj86IHN0cmluZyB8IG51bGxcbiAgLyoqIE1hY3JvcyBieSBuYW1lLCBlYWNoIHRvIHRoZSBUZVggaXQgZXhwYW5kcyB0bywgYXMgYHtcIlxcXFxSUlwiOiBcIlxcXFxtYXRoYmJ7Un1cIn1gLiBAZGVmYXVsdCB7fSAqL1xuICBtYWNyb3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIC8qKiBUaGUgdGhpbm5lc3QgYSBydWxlLCBzdWNoIGFzIGEgZnJhY3Rpb24gbGluZSwgaXMgZHJhd24sIGluIGVtcy4gKi9cbiAgbWluUnVsZVRoaWNrbmVzcz86IG51bWJlciB8IG51bGxcbiAgLyoqIExldCBgXFxjb2xvcmAgY29sb3IgdGhlIHRleHQgYWZ0ZXIgaXQsIGFzIExhVGVYIGRvZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIGNvbG9ySXNUZXh0Q29sb3I/OiBib29sZWFuXG4gIC8qKiBXaGF0IHRvIGRvIHdpdGggaW5wdXQgTGFUZVggd291bGQgcmVqZWN0OiBgdHJ1ZWAgb3IgYFwiZXJyb3JcImAgZmFpbHMgaXQsIGBcIndhcm5cImAgcHJpbnRzIGEgd2FybmluZywgYGZhbHNlYCBvciBgXCJpZ25vcmVcImAgKHRoZSBkZWZhdWx0KSBhY2NlcHRzIGl0LiAqL1xuICBzdHJpY3Q/OiBLYXRleFN0cmljdCB8IG51bGxcbiAgLyoqIEFsbG93IGNvbW1hbmRzIHRoYXQgY2FuIHJ1biB1bnRydXN0ZWQgaW5wdXQsIHN1Y2ggYXMgYFxcaHJlZmAgYW5kIGBcXGluY2x1ZGVncmFwaGljc2AuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRydXN0PzogYm9vbGVhblxuICAvKiogVGhlIGxhcmdlc3QgYSB1c2VyLWdpdmVuIHNpemUgbWF5IGJlLCBpbiBlbXMuICovXG4gIG1heFNpemU/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBIb3cgbWFueSBtYWNybyBleHBhbnNpb25zIG9uZSBmb3JtdWxhIG1heSB0YWtlLCAxMDAwIGJ5IGRlZmF1bHQuICovXG4gIG1heEV4cGFuZD86IG51bWJlciB8IG51bGxcbiAgLyoqIExldCBkZWZpbml0aW9ucyBzdWNoIGFzIGBcXGRlZmAgbGFzdCBwYXN0IHRoZSBmb3JtdWxhIHRoZXkgYXJlIGluLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBnbG9iYWxHcm91cD86IGJvb2xlYW5cbn1cblxuLyoqIFRoZSBtYXJrdXAgS2FUZVggd3JpdGVzLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhPdXRwdXQgPSBcImh0bWxcIiB8IFwibWF0aG1sXCIgfCBcImh0bWxBbmRNYXRobWxcIlxuXG4vKiogSG93IHN0cmljdGx5IEthVGVYIGhvbGRzIGlucHV0IHRvIExhVGVYLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhTdHJpY3QgPSBib29sZWFuIHwgS2F0ZXhTdHJpY3RNb2RlXG5cbi8qKiBPbmUgbGV2ZWwgb2YgS2FUZVgncyBzdHJpY3RuZXNzLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhTdHJpY3RNb2RlID0gXCJpZ25vcmVcIiB8IFwid2FyblwiIHwgXCJlcnJvclwiXG5cbi8qKiBgaHRtbC50b01hcmtkb3duYDogaGFzdCBpbnRvIG1kYXN0OyBvcHRpb25zIG5hbWVkIGFzIGhhc3QtdXRpbC10by1tZGFzdCBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb01hcmtkb3duT3B0aW9ucyB7XG4gIC8qKiBXcmFwIGFsbCBwaHJhc2luZyBjb250ZW50IG9mIHRoZSByb290IGluIHBhcmFncmFwaHMsIGFzIGZvciBhIHdob2xlIGRvY3VtZW50LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBkb2N1bWVudD86IGJvb2xlYW5cbiAgLyoqIENvbGxhcHNlIHdoaXRlc3BhY2UgaG9sZGluZyBhIGxpbmUgZW5kaW5nIHRvIHRoYXQgbGluZSBlbmRpbmcgaW5zdGVhZCBvZiBhIHNwYWNlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBuZXdsaW5lcz86IGJvb2xlYW5cbiAgLyoqIFRoZSB0ZXh0IG9mIGEgY2hlY2tlZCBjaGVja2JveCBvciByYWRpbywgYFt4XWAgYnkgZGVmYXVsdC4gKi9cbiAgY2hlY2tlZD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSB0ZXh0IG9mIGFuIHVuY2hlY2tlZCBjaGVja2JveCBvciByYWRpbywgYFsgXWAgYnkgZGVmYXVsdC4gKi9cbiAgdW5jaGVja2VkPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIHF1b3RlcyBgPHE+YCB1c2VzLCBhbiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJhY3RlciBlYWNoLCBhbHRlcm5hdGluZyBieSBob3cgZGVlcCBpdCBuZXN0czsgYFwiYCBieSBkZWZhdWx0LiAqL1xuICBxdW90ZXM/OiBzdHJpbmdbXSB8IG51bGxcbn1cblxuLyoqIGBodG1sLnN0cmluZ2lmeWA6IGhhc3QgaW50byBIVE1MOyBvcHRpb25zIG5hbWVkIGFzIGhhc3QtdXRpbC10by1odG1sIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ2lmeU9wdGlvbnMge1xuICAvKiogV3JpdGUgcmF3IG5vZGVzIGFzIHRoZXkgYXJlIGluc3RlYWQgb2YgZXNjYXBpbmcgdGhlbS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dEYW5nZXJvdXNIdG1sPzogYm9vbGVhblxuICAvKiogTGVhdmUgY2hhcmFjdGVycyB0aGF0IGFyZSBvbmx5IGRhbmdlcm91cyBpbiBzb21lIGNvbnRleHRzLCBzdWNoIGFzIGBgIGAgYGAsIGFzIHRoZXkgYXJlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBhbGxvd0Rhbmdlcm91c0NoYXJhY3RlcnM/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBjaGFyYWN0ZXJzIGFzIHRoZXkgYXJlIHdoZXJlIGJyb3dzZXJzIGFjY2VwdCB0aGVtIHRob3VnaCB0aGUgc3BlYyBkb2VzIG5vdC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dQYXJzZUVycm9ycz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGNvbW1lbnRzIGFzIGJvZ3VzIGNvbW1lbnRzLCBgPD9hPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIGJvZ3VzQ29tbWVudHM/OiBib29sZWFuXG4gIC8qKiBDbG9zZSBlbXB0eSBmb3JlaWduIGVsZW1lbnRzLCBgPGEgLz5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjbG9zZUVtcHR5RWxlbWVudHM/OiBib29sZWFuXG4gIC8qKiBDbG9zZSB2b2lkIGVsZW1lbnRzLCBgPGJyIC8+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgY2xvc2VTZWxmQ2xvc2luZz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGVtcHR5IGF0dHJpYnV0ZXMgYXMgYmFyZSBuYW1lcywgYGFgIHJhdGhlciB0aGFuIGBhPVwiXCJgLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjb2xsYXBzZUVtcHR5QXR0cmlidXRlcz86IGJvb2xlYW5cbiAgLyoqIExlYXZlIG91dCB0YWdzIHRoZSBIVE1MIHNwZWMgbGV0cyBhIHBhcnNlciBpbXBseS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgb21pdE9wdGlvbmFsVGFncz86IGJvb2xlYW5cbiAgLyoqIExlYXZlIGF0dHJpYnV0ZSB2YWx1ZXMgdW5xdW90ZWQgd2hlcmUgdGhhdCBpcyBzYWZlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBwcmVmZXJVbnF1b3RlZD86IGJvb2xlYW5cbiAgLyoqIFRoZSBxdW90ZSBhdHRyaWJ1dGUgdmFsdWVzIGFyZSB3cmFwcGVkIGluOiBgXCJgIG9yIGAnYC4gKi9cbiAgcXVvdGU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBVc2UgdGhlIG90aGVyIHF1b3RlIHdoZW4gdGhlIHZhbHVlIGhvbGRzIG1vcmUgb2YgdGhlIHByZWZlcnJlZCBvbmUuIEBkZWZhdWx0IGZhbHNlICovXG4gIHF1b3RlU21hcnQ/OiBib29sZWFuXG4gIC8qKiBUaGUgc3BhY2UgdGhlIHRyZWUgaXMgaW46IGBodG1sYCBvciBgc3ZnYC4gKi9cbiAgc3BhY2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBMZWF2ZSBvdXQgdGhlIHNwYWNlIGJldHdlZW4gcXVvdGVkIGF0dHJpYnV0ZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0QXR0cmlidXRlcz86IGJvb2xlYW5cbiAgLyoqIEpvaW4gY29tbWEtc2VwYXJhdGVkIHZhbHVlcyB3aXRoIGAsYCByYXRoZXIgdGhhbiBgLCBgLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodENvbW1hU2VwYXJhdGVkTGlzdHM/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBgPCFkb2N0eXBlaHRtbD5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodERvY3R5cGU/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBvdXQgdGhlIHNwYWNlIGJlZm9yZSBgLz5gIHdoZW4gdGhlIGF0dHJpYnV0ZXMgYWxsb3cuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0U2VsZkNsb3Npbmc/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBgPCFET0NUWVBFIGh0bWw+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdXBwZXJEb2N0eXBlPzogYm9vbGVhblxuICAvKiogVGhlIHRhZyBuYW1lcyBvZiB2b2lkIGVsZW1lbnRzLCB3aGljaCBoYXZlIG5vIGNsb3NpbmcgdGFnLiAqL1xuICB2b2lkcz86IHN0cmluZ1tdIHwgbnVsbFxufVxuXG4vKiogVGhlIGBodG1sLnBhcnNlYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2Uob3B0aW9ucz86IFBhcnNlT3B0aW9ucyk6IFBsdWdpbjxcImh0bWwucGFyc2VcIiwgUGFyc2VPcHRpb25zPiAmIFBhcnNlcjxSb290PiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5wYXJzZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnBhcnNlXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnJhd2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhdyhvcHRpb25zPzogUmF3T3B0aW9ucyk6IFBsdWdpbjxcImh0bWwucmF3XCIsIFJhd09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLnJhd1wiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnJhd1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5mb3JtYXRgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXQob3B0aW9ucz86IEZvcm1hdE9wdGlvbnMpOiBQbHVnaW48XCJodG1sLmZvcm1hdFwiLCBGb3JtYXRPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5mb3JtYXRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5mb3JtYXRcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc2FuaXRpemVgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZShvcHRpb25zPzogU2FuaXRpemVPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zYW5pdGl6ZVwiLCBTYW5pdGl6ZU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLnNhbml0aXplXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc2FuaXRpemVcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc2x1Z2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsdWcob3B0aW9ucz86IFNsdWdPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zbHVnXCIsIFNsdWdPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5zbHVnXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc2x1Z1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5leHRlcm5hbExpbmtzYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZXh0ZXJuYWxMaW5rcyhvcHRpb25zPzogRXh0ZXJuYWxMaW5rc09wdGlvbnMpOiBQbHVnaW48XCJodG1sLmV4dGVybmFsTGlua3NcIiwgRXh0ZXJuYWxMaW5rc09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLmV4dGVybmFsTGlua3NcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5leHRlcm5hbExpbmtzXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnVud3JhcEltYWdlc2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcEltYWdlcygpOiBQbHVnaW48XCJodG1sLnVud3JhcEltYWdlc1wiPiB7XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC51bndyYXBJbWFnZXNcIiB9XG59XG5cbi8qKiBUaGUgYGh0bWwuZXh0cmFjdFRvY2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RUb2Mob3B0aW9ucz86IEV4dHJhY3RUb2NPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5leHRyYWN0VG9jXCIsIEV4dHJhY3RUb2NPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5leHRyYWN0VG9jXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuZXh0cmFjdFRvY1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5oaWdobGlnaHRgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoaWdobGlnaHQob3B0aW9ucz86IEhpZ2hsaWdodE9wdGlvbnMpOiBQbHVnaW48XCJodG1sLmhpZ2hsaWdodFwiLCBIaWdobGlnaHRPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5oaWdobGlnaHRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5oaWdobGlnaHRcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwua2F0ZXhgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrYXRleChvcHRpb25zPzogS2F0ZXhPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5rYXRleFwiLCBLYXRleE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLmthdGV4XCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwua2F0ZXhcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwudG9NYXJrZG93bmAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTWFya2Rvd24ob3B0aW9ucz86IFRvTWFya2Rvd25PcHRpb25zKTogUGx1Z2luPFwiaHRtbC50b01hcmtkb3duXCIsIFRvTWFya2Rvd25PcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC50b01hcmtkb3duXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwudG9NYXJrZG93blwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC50b05hdHVyYWxMYW5ndWFnZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTmF0dXJhbExhbmd1YWdlKCk6IFBsdWdpbjxcImh0bWwudG9OYXR1cmFsTGFuZ3VhZ2VcIj4ge1xuICByZXR1cm4geyBuYW1lOiBcImh0bWwudG9OYXR1cmFsTGFuZ3VhZ2VcIiB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc3RyaW5naWZ5YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5KG9wdGlvbnM/OiBTdHJpbmdpZnlPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zdHJpbmdpZnlcIiwgU3RyaW5naWZ5T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwuc3RyaW5naWZ5XCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc3RyaW5naWZ5XCIsIG9wdGlvbnMgfVxufVxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2dlbmVyYXRlZC9odG1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtFQUErRTtBQTRRL0UsK0JBQStCO0FBQy9CLE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBc0I7SUFDMUMsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUE7SUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDeEMsQ0FBQztBQUVELDZCQUE2QjtBQUM3QixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQW9CO0lBQ3RDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFBO0lBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3RDLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUF1QjtJQUM1QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQTtJQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN6QyxDQUFDO0FBRUQsa0NBQWtDO0FBQ2xDLE1BQU0sVUFBVSxRQUFRLENBQUMsT0FBeUI7SUFDaEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUE7SUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDM0MsQ0FBQztBQUVELDhCQUE4QjtBQUM5QixNQUFNLFVBQVUsSUFBSSxDQUFDLE9BQXFCO0lBQ3hDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFBO0lBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3ZDLENBQUM7QUFFRCx1Q0FBdUM7QUFDdkMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE4QjtJQUMxRCxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxDQUFBO0lBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDaEQsQ0FBQztBQUVELHNDQUFzQztBQUN0QyxNQUFNLFVBQVUsWUFBWTtJQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLENBQUE7QUFDdEMsQ0FBQztBQUVELG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQTJCO0lBQ3BELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUE7SUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM3QyxDQUFDO0FBRUQsbUNBQW1DO0FBQ25DLE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBMEI7SUFDbEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQTtJQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzVDLENBQUM7QUFFRCwrQkFBK0I7QUFDL0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFzQjtJQUMxQyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQTtJQUN4RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN4QyxDQUFDO0FBRUQsb0NBQW9DO0FBQ3BDLE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBMkI7SUFDcEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQTtJQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzdDLENBQUM7QUFFRCwyQ0FBMkM7QUFDM0MsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLENBQUE7QUFDM0MsQ0FBQztBQUVELG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQTBCO0lBQ2xELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUE7SUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGBwbnBtIGdlbmVyYXRlOmJpbmRpbmdzYCBmcm9tIHRoZSBjcmF0ZSdzIHBsdWdpbnM7IGRvIG5vdCBlZGl0LlxuXG5pbXBvcnQgdHlwZSB7IFJvb3QgfSBmcm9tIFwiaGFzdFwiXG5pbXBvcnQgdHlwZSB7IFBhcnNlciwgUGx1Z2luIH0gZnJvbSBcIi4uL21vZGVscy9wbHVnaW4udHNcIlxuXG4vKiogYGh0bWwucGFyc2VgOiBIVE1MIGludG8gaGFzdDsgb3B0aW9ucyBuYW1lZCBhcyByZWh5cGUtcGFyc2UgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VPcHRpb25zIHtcbiAgLyoqIFBhcnNlIGEgZnJhZ21lbnQsIGFzIGluIGEgYHRlbXBsYXRlYCwgcmF0aGVyIHRoYW4gYSB3aG9sZSBkb2N1bWVudC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZnJhZ21lbnQ/OiBib29sZWFuXG4gIC8qKiBSZXBvcnQgcGFyc2UgZXJyb3JzIGFzIG1lc3NhZ2VzIG9uIHRoZSBmaWxlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBlbWl0UGFyc2VFcnJvcnM/OiBib29sZWFuXG4gIC8qKiBBZGQgdGhlIHBvc2l0aW9ucyBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIHRhZ3MgYW5kIGF0dHJpYnV0ZXMgdG8gZWxlbWVudHMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHZlcmJvc2U/OiBib29sZWFuXG59XG5cbi8qKiBgaHRtbC5yYXdgOiByZXBhcnNlIHJhdyBIVE1MIGFuZCBmaXggbmVzdGluZyB0aHJvdWdoIHRoZSBIVE1MIHBhcnNlcjsgb3B0aW9ucyBuYW1lZCBhcyBoYXN0LXV0aWwtcmF3IG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFJhd09wdGlvbnMge1xuICAvKiogTm9kZSB0eXBlcywgdW5rbm93biB0byBoYXN0LCB0byBjb3B5IHRocm91Z2ggYXMgdGhleSBhcmU7IHRoZWlyIGNoaWxkcmVuIGFyZSByZXBhcnNlZCBvbiB0aGVpciBvd24uIEBkZWZhdWx0IFtdICovXG4gIHBhc3NUaHJvdWdoPzogc3RyaW5nW11cbiAgLyoqIEVzY2FwZSB0aGUgb3BlbmluZyBgPGAgb2YgdGhlIHRhZ3MgR0ZNJ3MgdGFnZmlsdGVyIGRpc2FsbG93cyBpbiByYXcgbm9kZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRhZ2ZpbHRlcj86IGJvb2xlYW5cbn1cblxuLyoqIGBodG1sLmZvcm1hdGA6IGluZGVudCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZSBmb3IgcmVhZGFibGUgSFRNTDsgb3B0aW9ucyBuYW1lZCBhcyBoYXN0LXV0aWwtZm9ybWF0IG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdE9wdGlvbnMge1xuICAvKiogVGFnIG5hbWVzIG9mIGVsZW1lbnRzIHRvIHB1dCBhIGJsYW5rIGxpbmUgYmV0d2Vlbiwgd2hlbiBib3RoIGFyZSBvbmUuIEBkZWZhdWx0IFtdICovXG4gIGJsYW5rcz86IHN0cmluZ1tdXG4gIC8qKiBPbmUgbGV2ZWwgb2YgaW5kZW50YXRpb246IGEgbnVtYmVyIG9mIHNwYWNlcyBvciB0aGUgdGV4dCBpdHNlbGY7IHR3byBzcGFjZXMgd2hlbiBsZWZ0IG91dC4gKi9cbiAgaW5kZW50PzogSW5kZW50IHwgbnVsbFxuICAvKiogSW5kZW50IHRoZSBmaXJzdCBsZXZlbCwgdXN1YWxseSBgPGh0bWw+YCdzIGBoZWFkYCBhbmQgYGJvZHlgOyBgdHJ1ZWAgd2hlbiBsZWZ0IG91dC4gKi9cbiAgaW5kZW50SW5pdGlhbD86IGJvb2xlYW4gfCBudWxsXG4gIC8qKiBPbmx5IGNvbGxhcHNlIHdoaXRlc3BhY2UsIGFzIHJlaHlwZS1taW5pZnktd2hpdGVzcGFjZSBkb2VzLCBhZGRpbmcgbm8gbGluZSBlbmRpbmdzIG9yIGluZGVudGF0aW9uOyBgeyBuZXdsaW5lczogdHJ1ZSB9YCBjb2xsYXBzZXMgYSBydW4gaG9sZGluZyBhIGxpbmUgZW5kaW5nIHRvIGl0LiAqL1xuICBtaW5pZnk/OiBNaW5pZnkgfCBudWxsXG59XG5cbi8qKiBPbmUgbGV2ZWwgb2YgaW5kZW50YXRpb24uICovXG5leHBvcnQgdHlwZSBJbmRlbnQgPSBudW1iZXIgfCBzdHJpbmdcblxuLyoqIGBodG1sLmZvcm1hdGAncyBgbWluaWZ5YDogb24sIG9yIG9uIHdpdGggcmVoeXBlLW1pbmlmeS13aGl0ZXNwYWNlJ3Mgb3B0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIE1pbmlmeSA9IGJvb2xlYW4gfCBNaW5pZnlPcHRpb25zXG5cbi8qKiByZWh5cGUtbWluaWZ5LXdoaXRlc3BhY2UncyBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNaW5pZnlPcHRpb25zIHtcbiAgLyoqIENvbGxhcHNlIGEgcnVuIG9mIHdoaXRlc3BhY2UgaG9sZGluZyBhIGxpbmUgZW5kaW5nIHRvIGEgbGluZSBlbmRpbmcsIG5vdCBhIHNwYWNlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBuZXdsaW5lcz86IGJvb2xlYW5cbn1cblxuLyoqIGBodG1sLnNhbml0aXplYDoga2VlcCBvbmx5IHdoYXQgYSBzY2hlbWEgYWxsb3dzOyBvcHRpb25zOiBoYXN0LXV0aWwtc2FuaXRpemUncyBzY2hlbWEsIHdoZXJlIGEgZmllbGQgbGVmdCBvdXQga2VlcHMgdGhlIGRlZmF1bHQgc2NoZW1hJ3MsIHdoaWNoIGlzIEdpdEh1YidzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYW5pdGl6ZU9wdGlvbnMge1xuICAvKiogS2VlcCBjb21tZW50cy4gKi9cbiAgYWxsb3dDb21tZW50cz86IGJvb2xlYW4gfCBudWxsXG4gIC8qKiBLZWVwIGRvY3R5cGVzLiAqL1xuICBhbGxvd0RvY3R5cGVzPzogYm9vbGVhbiB8IG51bGxcbiAgLyoqIEVsZW1lbnRzIGFsbG93ZWQgb25seSBpbnNpZGUgb25lIG9mIHRoZXNlIGFuY2VzdG9ycywgYnkgdGFnIG5hbWUuICovXG4gIGFuY2VzdG9ycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiB8IG51bGxcbiAgLyoqIFByb3BlcnRpZXMgYWxsb3dlZCBwZXIgdGFnIG5hbWUsIGAqYCBmb3IgZXZlcnkgZWxlbWVudDsgYSBsaXN0IG5hbWVzIGEgcHJvcGVydHkgYW5kIHRoZSB2YWx1ZXMgaXQgbWF5IGhhdmUuICovXG4gIGF0dHJpYnV0ZXM/OiBSZWNvcmQ8c3RyaW5nLCBBdHRyaWJ1dGVEZWZpbml0aW9uW10+IHwgbnVsbFxuICAvKiogUHJvcGVydGllcyB3aG9zZSB2YWx1ZXMgZ2V0IGBjbG9iYmVyX3ByZWZpeGAsIHNvIHRoZXkgY2Fubm90IGNsb2JiZXIgZ2xvYmFscy4gKi9cbiAgY2xvYmJlcj86IHN0cmluZ1tdIHwgbnVsbFxuICAvKiogVGhlIHByZWZpeCBvZiBjbG9iYmVyZWQgdmFsdWVzLiAqL1xuICBjbG9iYmVyUHJlZml4Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVVJMIHByb3BlcnRpZXMgYW5kIHRoZSBwcm90b2NvbHMgdGhleSBtYXkgdXNlLiAqL1xuICBwcm90b2NvbHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gfCBudWxsXG4gIC8qKiBQcm9wZXJ0aWVzIHNldCBvbiBlbGVtZW50cyB3aGF0ZXZlciB0aGV5IGhhZCwgYnkgdGFnIG5hbWUuICovXG4gIHJlcXVpcmVkPzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgUHJpbWl0aXZlPj4gfCBudWxsXG4gIC8qKiBFbGVtZW50cyBkcm9wcGVkIHdpdGggdGhlaXIgY29udGVudCByYXRoZXIgdGhhbiB1bndyYXBwZWQuICovXG4gIHN0cmlwPzogc3RyaW5nW10gfCBudWxsXG4gIC8qKiBUaGUgZWxlbWVudHMga2VwdC4gKi9cbiAgdGFnTmFtZXM/OiBzdHJpbmdbXSB8IG51bGxcbn1cblxuLyoqIEEgcHJvcGVydHkgYSBzYW5pdGl6ZSBzY2hlbWEgYWxsb3dzOiBieSBuYW1lLCBvciBhIG5hbWUgYW5kIGl0cyBhbGxvd2VkIHZhbHVlcy4gKi9cbmV4cG9ydCB0eXBlIEF0dHJpYnV0ZURlZmluaXRpb24gPSBzdHJpbmcgfCBQcmltaXRpdmVbXVxuXG4vKiogQSBwcmltaXRpdmUgcHJvcGVydHkgdmFsdWUuICovXG5leHBvcnQgdHlwZSBQcmltaXRpdmUgPSBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nXG5cbi8qKiBgaHRtbC5zbHVnYDogaWRzIG9uIGhlYWRpbmdzLCBmcm9tIHRoZWlyIHRleHQ7IG9wdGlvbnMgbmFtZWQgYXMgcmVoeXBlLXNsdWcgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2x1Z09wdGlvbnMge1xuICAvKiogUHV0IGJlZm9yZSBlYWNoIGlkLiBAZGVmYXVsdCBcIlwiICovXG4gIHByZWZpeD86IHN0cmluZ1xuICAvKiogTGluayBlYWNoIGhlYWRpbmcgd2l0aCBhbiBgaWRgIHRvIGl0c2VsZiwgYXMgcmVoeXBlLWF1dG9saW5rLWhlYWRpbmdzIGRvZXM6IGB0cnVlYCwgb3IgaXRzIG9wdGlvbnMuICovXG4gIGF1dG9saW5rPzogQXV0b2xpbmsgfCBudWxsXG59XG5cbi8qKiBgaHRtbC5zbHVnYCdzIGBhdXRvbGlua2A6IG9uLCBvciBvbiB3aXRoIHJlaHlwZS1hdXRvbGluay1oZWFkaW5ncycgb3B0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIEF1dG9saW5rID0gYm9vbGVhbiB8IEF1dG9saW5rT3B0aW9uc1xuXG4vKiogcmVoeXBlLWF1dG9saW5rLWhlYWRpbmdzJyBvcHRpb25zLCBKU09OIHZhbHVlcyBvbmx5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvbGlua09wdGlvbnMge1xuICAvKiogV2hlcmUgdGhlIGxpbmsgZ29lczogaW4gdGhlIGhlYWRpbmcgZmlyc3Qgb3IgbGFzdCwgYXJvdW5kIGl0cyBjb250ZW50LCBvciBiZWZvcmUgb3IgYWZ0ZXIgaXQuICovXG4gIGJlaGF2aW9yPzogQXV0b2xpbmtCZWhhdmlvclxuICAvKiogVGhlIGxpbmsncyBwcm9wZXJ0aWVzLCBhcyBoYXN0IG5hbWVzIHRoZW07IGBhcmlhSGlkZGVuYCBhbmQgYHRhYkluZGV4OiAtMWAgZm9yIGBwcmVwZW5kYCBhbmQgYGFwcGVuZGAgd2hlbiBsZWZ0IG91dC4gKi9cbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxuICAvKiogaGFzdCBjb250ZW50IG9mIHRoZSBsaW5rLCBvbmUgbm9kZSBvciBhIGxpc3Q7IGA8c3BhbiBjbGFzcz1cImljb24gaWNvbi1saW5rXCI+YCB3aGVuIGxlZnQgb3V0LCBleGNlcHQgZm9yIGB3cmFwYCwgd2hpY2ggYXBwZW5kcyBpdCB0byB0aGUgaGVhZGluZydzIGNvbnRlbnQuICovXG4gIGNvbnRlbnQ/OiB1bmtub3duXG4gIC8qKiBBIGhhc3QgZWxlbWVudCB3cmFwcGluZyB0aGUgaGVhZGluZyBhbmQgaXRzIGxpbmssIGZvciBgYmVmb3JlYCBhbmQgYGFmdGVyYC4gKi9cbiAgZ3JvdXA/OiB1bmtub3duXG4gIC8qKiBQcm9wZXJ0aWVzIHNldCBvbiBlYWNoIGxpbmtlZCBoZWFkaW5nLiAqL1xuICBoZWFkaW5nUHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxuICAvKiogVGhlIHRhZyBuYW1lcyBvZiB0aGUgaGVhZGluZ3MgdG8gbGluazsgZXZlcnkgaGVhZGluZyB3aGVuIGxlZnQgb3V0LiAqL1xuICB0ZXN0PzogVGFnTmFtZXMgfCBudWxsXG59XG5cbi8qKiBXaGVyZSBgYXV0b2xpbmtgIHB1dHMgZWFjaCBoZWFkaW5nJ3MgbGluay4gKi9cbmV4cG9ydCB0eXBlIEF1dG9saW5rQmVoYXZpb3IgPSBcInByZXBlbmRcIiB8IFwiYXBwZW5kXCIgfCBcIndyYXBcIiB8IFwiYmVmb3JlXCIgfCBcImFmdGVyXCJcblxuLyoqIE9uZSB0YWcgbmFtZSBvciBzZXZlcmFsLiAqL1xuZXhwb3J0IHR5cGUgVGFnTmFtZXMgPSBzdHJpbmcgfCBzdHJpbmdbXVxuXG4vKiogYGh0bWwuZXh0ZXJuYWxMaW5rc2A6IGByZWxgLCBgdGFyZ2V0YCBhbmQgbW9yZSBvbiBsaW5rcyB0byBvdGhlciBzaXRlcywgYXMgcmVoeXBlLWV4dGVybmFsLWxpbmtzIGFkZHMgdGhlbTsgb3B0aW9ucyBuYW1lZCBhcyBpdCBuYW1lcyB0aGVtLCBKU09OIHZhbHVlcyBvbmx5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlcm5hbExpbmtzT3B0aW9ucyB7XG4gIC8qKiBUaGUgYHRhcmdldGAgb2YgZWFjaCBleHRlcm5hbCBsaW5rLCBzdWNoIGFzIGBfYmxhbmtgLiAqL1xuICB0YXJnZXQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgYHJlbGAgb2YgZWFjaCBleHRlcm5hbCBsaW5rOiBhIGxpc3QsIG9yIHRva2VucyBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2U7IGBub2ZvbGxvd2Agd2hlbiBsZWZ0IG91dCBvciBlbXB0eSwgbm9uZSBmb3IgYW4gZW1wdHkgbGlzdC4gKi9cbiAgcmVsPzogVG9rZW5zIHwgbnVsbFxuICAvKiogVGhlIHByb3RvY29scyBvZiBhYnNvbHV0ZSBVUkxzIHRoYXQgY291bnQgYXMgZXh0ZXJuYWw7IGBodHRwYCBhbmQgYGh0dHBzYCB3aGVuIGxlZnQgb3V0LiBBIHByb3RvY29sLXJlbGF0aXZlIGAvL+KApmAgVVJMIGFsd2F5cyBjb3VudHMuICovXG4gIHByb3RvY29scz86IHN0cmluZ1tdIHwgbnVsbFxuICAvKiogTW9yZSBwcm9wZXJ0aWVzIGZvciBlYWNoIGV4dGVybmFsIGxpbmssIGFzIGhhc3QgbmFtZXMgdGhlbS4gKi9cbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxuICAvKiogaGFzdCBjb250ZW50IGFwcGVuZGVkIHRvIGVhY2ggZXh0ZXJuYWwgbGluayBpbiBhIGA8c3Bhbj5gOiBvbmUgbm9kZSBvciBhIGxpc3QuICovXG4gIGNvbnRlbnQ/OiB1bmtub3duXG4gIC8qKiBUaGUgcHJvcGVydGllcyBvZiB0aGF0IGA8c3Bhbj5gLiAqL1xuICBjb250ZW50UHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxufVxuXG4vKiogVG9rZW5zOiBhIGxpc3QsIG9yIG9uZSBzdHJpbmcgb2YgdGhlbSBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UuICovXG5leHBvcnQgdHlwZSBUb2tlbnMgPSBzdHJpbmcgfCBzdHJpbmdbXVxuXG4vKiogYGh0bWwuZXh0cmFjdFRvY2A6IHRoZSBoZWFkaW5ncywgbmVzdGVkIGJ5IHJhbmssIGFzIHRoZSBmaWxlJ3MgYGRhdGEudG9jYCwgYXMgQHN0ZWZhbnByb2JzdC9yZWh5cGUtZXh0cmFjdC10b2Mgc3RvcmVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dHJhY3RUb2NPcHRpb25zIHtcbiAgLyoqIEF0dHJpYnV0ZXMsIHN1Y2ggYXMgYGRhdGEtdG9jLWhpZGRlbmAsIHRoYXQga2VlcCBhIGhlYWRpbmcgb3V0IG9mIHRoZSB0YWJsZSBvZiBjb250ZW50czsgd2hhdCB3b3VsZCBuZXN0IHVuZGVyIGl0IG5lc3RzIHVuZGVyIHRoZSBoZWFkaW5nIGJlZm9yZS4gQGRlZmF1bHQgW10gKi9cbiAgc2tpcD86IHN0cmluZ1tdXG59XG5cbi8qKiBgaHRtbC5oaWdobGlnaHRgOiBjb2RlIGJsb2NrcyBjb2xvcmVkIGFzIFNoaWtpIGNvbG9ycyB0aGVtLCBuYXRpdmVseSBieSBnaWFsbG87IG9wdGlvbnMgbmFtZWQgYXMgQHNoaWtpanMvcmVoeXBlIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodE9wdGlvbnMge1xuICAvKiogVGhlIHRoZW1lIG9mIGVhY2ggY29sb3IgbW9kZSwgYGxpZ2h0YCBmaXJzdCwgYXMgYHtcImxpZ2h0XCI6IOKApiwgXCJkYXJrXCI6IOKApn1gLiAqL1xuICB0aGVtZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgLyoqIFRoZSBvbmUgdGhlbWUsIHdoZW4gYHRoZW1lc2AgaXMgbm90IGdpdmVuLiAqL1xuICB0aGVtZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBsYW5ndWFnZSBvZiBhIGJsb2NrIHRoYXQgbmFtZXMgbm9uZTsgc3VjaCBhIGJsb2NrIGlzIGxlZnQgYWxvbmUgd2l0aG91dCBpdC4gKi9cbiAgZGVmYXVsdExhbmd1YWdlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGxhbmd1YWdlIG9mIGEgYmxvY2sgbmFtaW5nIG9uZSBTaGlraSBkb2VzIG5vdCBrbm93OyBsZWZ0IGFsb25lIHdpdGhvdXQgaXQuICovXG4gIGZhbGxiYWNrTGFuZ3VhZ2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBDb2xvcnMgdG8gcmVwbGFjZSwgYnkgdGhlaXIgbG93ZXJjYXNlIHNwZWxsaW5nOiBhIGNvbG9yIGZvciBldmVyeSB0aGVtZSwgb3IgYSB0aGVtZSdzIG5hbWUgdG8gYSBtYXAgb2YgaXRzIG93bi4gKi9cbiAgY29sb3JSZXBsYWNlbWVudHM/OiBSZWNvcmQ8c3RyaW5nLCBDb2xvclJlcGxhY2VtZW50PlxuICAvKiogQWRkIGBsYW5ndWFnZS08bmFtZT5gIHRvIGVhY2ggaGlnaGxpZ2h0ZWQgYDxjb2RlPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIGFkZExhbmd1YWdlQ2xhc3M/OiBib29sZWFuXG4gIC8qKiBIaWdobGlnaHQgaW5saW5lIGNvZGUgdG9vLCBieSBob3cgaXQgbmFtZXMgaXRzIGxhbmd1YWdlOiBgdGFpbGluZy1jdXJseS1jb2xvbmAgcmVhZHMgYGAgYGEoKXs6anN9YCBgYC4gKi9cbiAgaW5saW5lPzogSW5saW5lQ29kZSB8IG51bGxcbiAgLyoqIFRoZSBgPHByZT5gIHByb3BlcnR5IHRoYXQgZ2V0cyBhIGJsb2NrJ3MgbWV0YSwgdGhlIHRleHQgYWZ0ZXIgaXRzIGxhbmd1YWdlOyB0aGUgSlNPTiBzdGFuZC1pbiBmb3IgYHBhcnNlTWV0YVN0cmluZzogbWV0YSA9PiAoeyBbbmFtZV06IG1ldGEgfSlgLiAqL1xuICBtZXRhUHJvcGVydHk/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgdHJhbnNmb3JtZXJzIG9mIEBzaGlraWpzL3RyYW5zZm9ybWVycyB0byBydW4sIGluIG9yZGVyLCBieSBuYW1lIG9yIHdpdGggb3B0aW9ucy4gKi9cbiAgdHJhbnNmb3JtZXJzPzogSGlnaGxpZ2h0VHJhbnNmb3JtZXJbXVxuICAvKiogTGluZXMgYXQgbGVhc3QgdGhpcyBsb25nLCBpbiBVVEYtMTYgdW5pdHMsIGFyZSBsZWZ0IG9uZSBwbGFpbiB0b2tlbiBhcyBTaGlraSdzIG93biBvcHRpb24gbGVhdmVzIHRoZW07IDIsMDAwIHdoZW4gbGVmdCBvdXQsIHdoZXJlIFNoaWtpIGhhcyBubyBsaW1pdCwgc2luY2UgYSBncmFtbWFyJ3MgdGltZSBncm93cyB3aXRoIHRoZSBzcXVhcmUgb2YgYSBsaW5lJ3MgbGVuZ3RoLiBgMGAgbGlmdHMgaXQuICovXG4gIHRva2VuaXplTWF4TGluZUxlbmd0aD86IG51bWJlciB8IG51bGxcbn1cblxuLyoqIEEgcmVwbGFjZW1lbnQgY29sb3IsIG9yIGEgdGhlbWUncyBvd24gcmVwbGFjZW1lbnRzLiAqL1xuZXhwb3J0IHR5cGUgQ29sb3JSZXBsYWNlbWVudCA9IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cblxuLyoqIEhvdyBpbmxpbmUgY29kZSBuYW1lcyBpdHMgbGFuZ3VhZ2UuICovXG5leHBvcnQgdHlwZSBJbmxpbmVDb2RlID0gXCJ0YWlsaW5nLWN1cmx5LWNvbG9uXCJcblxuLyoqIEEgdHJhbnNmb3JtZXIgb2YgQHNoaWtpanMvdHJhbnNmb3JtZXJzOiBpdHMgbmFtZSBhbG9uZSwgb3IgaXRzIG5hbWUgYW5kIG9wdGlvbnMuICovXG5leHBvcnQgdHlwZSBIaWdobGlnaHRUcmFuc2Zvcm1lciA9IFRyYW5zZm9ybWVyTmFtZSB8IENvbmZpZ3VyZWRUcmFuc2Zvcm1lclxuXG4vKiogVGhlIHRyYW5zZm9ybWVycyBgaHRtbC5oaWdobGlnaHRgIHJ1bnMgbmF0aXZlbHkuICovXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1lck5hbWUgPSBcIm5vdGF0aW9uRGlmZlwiIHwgXCJub3RhdGlvbkZvY3VzXCIgfCBcIm5vdGF0aW9uSGlnaGxpZ2h0XCIgfCBcIm5vdGF0aW9uRXJyb3JMZXZlbFwiIHwgXCJtZXRhSGlnaGxpZ2h0XCIgfCBcIm1ldGFXb3JkSGlnaGxpZ2h0XCIgfCBcInJlbmRlckxpbmVOdW1iZXJcIlxuXG4vKiogQSB0cmFuc2Zvcm1lciB3aXRoIGl0cyBvcHRpb25zLCBhcyBAc2hpa2lqcy90cmFuc2Zvcm1lcnMgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCB0eXBlIENvbmZpZ3VyZWRUcmFuc2Zvcm1lciA9IHsgbmFtZTogXCJub3RhdGlvbkRpZmZcIjsgY2xhc3NMaW5lQWRkPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzTGluZVJlbW92ZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZVByZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZUNvZGU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcIm5vdGF0aW9uRm9jdXNcIjsgY2xhc3NBY3RpdmVMaW5lPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlUHJlPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlQ29kZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwibm90YXRpb25IaWdobGlnaHRcIjsgY2xhc3NBY3RpdmVMaW5lPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlUHJlPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlQ29kZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwibm90YXRpb25FcnJvckxldmVsXCI7IGNsYXNzTWFwPzogUmVjb3JkPHN0cmluZywgQ2xhc3Nlcz4gfCBudWxsOyBjbGFzc0FjdGl2ZVByZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZUNvZGU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcIm1ldGFIaWdobGlnaHRcIjsgY2xhc3NOYW1lPzogQ2xhc3NlcyB8IG51bGw7IHplcm9JbmRleGVkPzogYm9vbGVhbiB9IHwgeyBuYW1lOiBcIm1ldGFXb3JkSGlnaGxpZ2h0XCI7IGNsYXNzTmFtZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwicmVuZGVyTGluZU51bWJlclwiOyBjbGFzc0xpbmVOdW1iZXI/OiBDbGFzc2VzIHwgbnVsbDsgc3RhcnQ/OiBudW1iZXIgfCBudWxsIH1cblxuLyoqIENsYXNzIG5hbWVzOiBhIGxpc3QsIG9yIG9uZSBzdHJpbmcgb2YgdGhlbSBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UuICovXG5leHBvcnQgdHlwZSBDbGFzc2VzID0gc3RyaW5nIHwgc3RyaW5nW11cblxuLyoqIGBodG1sLmthdGV4YDogbWF0aCByZW5kZXJlZCBhcyByZWh5cGUta2F0ZXggcmVuZGVycyBpdCwgbmF0aXZlbHkgYnkga2F0ZXgtcnM7IG9wdGlvbnMgbmFtZWQgYXMgS2FUZVggbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2F0ZXhPcHRpb25zIHtcbiAgLyoqIFRoZSBtYXJrdXAgdG8gd3JpdGUsIGJvdGggSFRNTCBhbmQgTWF0aE1MIGJ5IGRlZmF1bHQuICovXG4gIG91dHB1dD86IEthdGV4T3V0cHV0IHwgbnVsbFxuICAvKiogUHV0IGVxdWF0aW9uIG51bWJlcnMgb24gdGhlIGxlZnQuIEBkZWZhdWx0IGZhbHNlICovXG4gIGxlcW5vPzogYm9vbGVhblxuICAvKiogQWxpZ24gZGlzcGxheSBtYXRoIHRvIHRoZSBsZWZ0IGluc3RlYWQgb2YgY2VudGVyaW5nIGl0LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBmbGVxbj86IGJvb2xlYW5cbiAgLyoqIFRoZSBjb2xvciBvZiBtYXRoIHRoYXQgZmFpbHMgdG8gcmVuZGVyLCBgI2NjMDAwMGAgYnkgZGVmYXVsdC4gKi9cbiAgZXJyb3JDb2xvcj86IHN0cmluZyB8IG51bGxcbiAgLyoqIE1hY3JvcyBieSBuYW1lLCBlYWNoIHRvIHRoZSBUZVggaXQgZXhwYW5kcyB0bywgYXMgYHtcIlxcXFxSUlwiOiBcIlxcXFxtYXRoYmJ7Un1cIn1gLiBAZGVmYXVsdCB7fSAqL1xuICBtYWNyb3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIC8qKiBUaGUgdGhpbm5lc3QgYSBydWxlLCBzdWNoIGFzIGEgZnJhY3Rpb24gbGluZSwgaXMgZHJhd24sIGluIGVtcy4gKi9cbiAgbWluUnVsZVRoaWNrbmVzcz86IG51bWJlciB8IG51bGxcbiAgLyoqIExldCBgXFxjb2xvcmAgY29sb3IgdGhlIHRleHQgYWZ0ZXIgaXQsIGFzIExhVGVYIGRvZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIGNvbG9ySXNUZXh0Q29sb3I/OiBib29sZWFuXG4gIC8qKiBXaGF0IHRvIGRvIHdpdGggaW5wdXQgTGFUZVggd291bGQgcmVqZWN0OiBgdHJ1ZWAgb3IgYFwiZXJyb3JcImAgZmFpbHMgaXQsIGBcIndhcm5cImAgcHJpbnRzIGEgd2FybmluZywgYGZhbHNlYCBvciBgXCJpZ25vcmVcImAgKHRoZSBkZWZhdWx0KSBhY2NlcHRzIGl0LiAqL1xuICBzdHJpY3Q/OiBLYXRleFN0cmljdCB8IG51bGxcbiAgLyoqIEFsbG93IGNvbW1hbmRzIHRoYXQgY2FuIHJ1biB1bnRydXN0ZWQgaW5wdXQsIHN1Y2ggYXMgYFxcaHJlZmAgYW5kIGBcXGluY2x1ZGVncmFwaGljc2AuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRydXN0PzogYm9vbGVhblxuICAvKiogVGhlIGxhcmdlc3QgYSB1c2VyLWdpdmVuIHNpemUgbWF5IGJlLCBpbiBlbXMuICovXG4gIG1heFNpemU/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBIb3cgbWFueSBtYWNybyBleHBhbnNpb25zIG9uZSBmb3JtdWxhIG1heSB0YWtlLCAxMDAwIGJ5IGRlZmF1bHQuICovXG4gIG1heEV4cGFuZD86IG51bWJlciB8IG51bGxcbiAgLyoqIExldCBkZWZpbml0aW9ucyBzdWNoIGFzIGBcXGRlZmAgbGFzdCBwYXN0IHRoZSBmb3JtdWxhIHRoZXkgYXJlIGluLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBnbG9iYWxHcm91cD86IGJvb2xlYW5cbn1cblxuLyoqIFRoZSBtYXJrdXAgS2FUZVggd3JpdGVzLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhPdXRwdXQgPSBcImh0bWxcIiB8IFwibWF0aG1sXCIgfCBcImh0bWxBbmRNYXRobWxcIlxuXG4vKiogSG93IHN0cmljdGx5IEthVGVYIGhvbGRzIGlucHV0IHRvIExhVGVYLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhTdHJpY3QgPSBib29sZWFuIHwgS2F0ZXhTdHJpY3RNb2RlXG5cbi8qKiBPbmUgbGV2ZWwgb2YgS2FUZVgncyBzdHJpY3RuZXNzLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhTdHJpY3RNb2RlID0gXCJpZ25vcmVcIiB8IFwid2FyblwiIHwgXCJlcnJvclwiXG5cbi8qKiBgaHRtbC50b01hcmtkb3duYDogaGFzdCBpbnRvIG1kYXN0OyBvcHRpb25zIG5hbWVkIGFzIGhhc3QtdXRpbC10by1tZGFzdCBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb01hcmtkb3duT3B0aW9ucyB7XG4gIC8qKiBXcmFwIGFsbCBwaHJhc2luZyBjb250ZW50IG9mIHRoZSByb290IGluIHBhcmFncmFwaHMsIGFzIGZvciBhIHdob2xlIGRvY3VtZW50LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBkb2N1bWVudD86IGJvb2xlYW5cbiAgLyoqIENvbGxhcHNlIHdoaXRlc3BhY2UgaG9sZGluZyBhIGxpbmUgZW5kaW5nIHRvIHRoYXQgbGluZSBlbmRpbmcgaW5zdGVhZCBvZiBhIHNwYWNlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBuZXdsaW5lcz86IGJvb2xlYW5cbiAgLyoqIFRoZSB0ZXh0IG9mIGEgY2hlY2tlZCBjaGVja2JveCBvciByYWRpbywgYFt4XWAgYnkgZGVmYXVsdC4gKi9cbiAgY2hlY2tlZD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSB0ZXh0IG9mIGFuIHVuY2hlY2tlZCBjaGVja2JveCBvciByYWRpbywgYFsgXWAgYnkgZGVmYXVsdC4gKi9cbiAgdW5jaGVja2VkPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIHF1b3RlcyBgPHE+YCB1c2VzLCBhbiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJhY3RlciBlYWNoLCBhbHRlcm5hdGluZyBieSBob3cgZGVlcCBpdCBuZXN0czsgYFwiYCBieSBkZWZhdWx0LiAqL1xuICBxdW90ZXM/OiBzdHJpbmdbXSB8IG51bGxcbn1cblxuLyoqIGBodG1sLnN0cmluZ2lmeWA6IGhhc3QgaW50byBIVE1MOyBvcHRpb25zIG5hbWVkIGFzIGhhc3QtdXRpbC10by1odG1sIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ2lmeU9wdGlvbnMge1xuICAvKiogV3JpdGUgcmF3IG5vZGVzIGFzIHRoZXkgYXJlIGluc3RlYWQgb2YgZXNjYXBpbmcgdGhlbS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dEYW5nZXJvdXNIdG1sPzogYm9vbGVhblxuICAvKiogTGVhdmUgY2hhcmFjdGVycyB0aGF0IGFyZSBvbmx5IGRhbmdlcm91cyBpbiBzb21lIGNvbnRleHRzLCBzdWNoIGFzIGBgIGAgYGAsIGFzIHRoZXkgYXJlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBhbGxvd0Rhbmdlcm91c0NoYXJhY3RlcnM/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBjaGFyYWN0ZXJzIGFzIHRoZXkgYXJlIHdoZXJlIGJyb3dzZXJzIGFjY2VwdCB0aGVtIHRob3VnaCB0aGUgc3BlYyBkb2VzIG5vdC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dQYXJzZUVycm9ycz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGNvbW1lbnRzIGFzIGJvZ3VzIGNvbW1lbnRzLCBgPD9hPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIGJvZ3VzQ29tbWVudHM/OiBib29sZWFuXG4gIC8qKiBDbG9zZSBlbXB0eSBmb3JlaWduIGVsZW1lbnRzLCBgPGEgLz5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjbG9zZUVtcHR5RWxlbWVudHM/OiBib29sZWFuXG4gIC8qKiBDbG9zZSB2b2lkIGVsZW1lbnRzLCBgPGJyIC8+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgY2xvc2VTZWxmQ2xvc2luZz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGVtcHR5IGF0dHJpYnV0ZXMgYXMgYmFyZSBuYW1lcywgYGFgIHJhdGhlciB0aGFuIGBhPVwiXCJgLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjb2xsYXBzZUVtcHR5QXR0cmlidXRlcz86IGJvb2xlYW5cbiAgLyoqIExlYXZlIG91dCB0YWdzIHRoZSBIVE1MIHNwZWMgbGV0cyBhIHBhcnNlciBpbXBseS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgb21pdE9wdGlvbmFsVGFncz86IGJvb2xlYW5cbiAgLyoqIExlYXZlIGF0dHJpYnV0ZSB2YWx1ZXMgdW5xdW90ZWQgd2hlcmUgdGhhdCBpcyBzYWZlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBwcmVmZXJVbnF1b3RlZD86IGJvb2xlYW5cbiAgLyoqIFRoZSBxdW90ZSBhdHRyaWJ1dGUgdmFsdWVzIGFyZSB3cmFwcGVkIGluOiBgXCJgIG9yIGAnYC4gKi9cbiAgcXVvdGU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBVc2UgdGhlIG90aGVyIHF1b3RlIHdoZW4gdGhlIHZhbHVlIGhvbGRzIG1vcmUgb2YgdGhlIHByZWZlcnJlZCBvbmUuIEBkZWZhdWx0IGZhbHNlICovXG4gIHF1b3RlU21hcnQ/OiBib29sZWFuXG4gIC8qKiBUaGUgc3BhY2UgdGhlIHRyZWUgaXMgaW46IGBodG1sYCBvciBgc3ZnYC4gKi9cbiAgc3BhY2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBMZWF2ZSBvdXQgdGhlIHNwYWNlIGJldHdlZW4gcXVvdGVkIGF0dHJpYnV0ZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0QXR0cmlidXRlcz86IGJvb2xlYW5cbiAgLyoqIEpvaW4gY29tbWEtc2VwYXJhdGVkIHZhbHVlcyB3aXRoIGAsYCByYXRoZXIgdGhhbiBgLCBgLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodENvbW1hU2VwYXJhdGVkTGlzdHM/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBgPCFkb2N0eXBlaHRtbD5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodERvY3R5cGU/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBvdXQgdGhlIHNwYWNlIGJlZm9yZSBgLz5gIHdoZW4gdGhlIGF0dHJpYnV0ZXMgYWxsb3cuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0U2VsZkNsb3Npbmc/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBgPCFET0NUWVBFIGh0bWw+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdXBwZXJEb2N0eXBlPzogYm9vbGVhblxuICAvKiogVGhlIHRhZyBuYW1lcyBvZiB2b2lkIGVsZW1lbnRzLCB3aGljaCBoYXZlIG5vIGNsb3NpbmcgdGFnLiAqL1xuICB2b2lkcz86IHN0cmluZ1tdIHwgbnVsbFxufVxuXG4vKiogVGhlIGBodG1sLnBhcnNlYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2Uob3B0aW9ucz86IFBhcnNlT3B0aW9ucyk6IFBsdWdpbjxcImh0bWwucGFyc2VcIiwgUGFyc2VPcHRpb25zPiAmIFBhcnNlcjxSb290PiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5wYXJzZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnBhcnNlXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnJhd2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhdyhvcHRpb25zPzogUmF3T3B0aW9ucyk6IFBsdWdpbjxcImh0bWwucmF3XCIsIFJhd09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLnJhd1wiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnJhd1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5mb3JtYXRgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXQob3B0aW9ucz86IEZvcm1hdE9wdGlvbnMpOiBQbHVnaW48XCJodG1sLmZvcm1hdFwiLCBGb3JtYXRPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5mb3JtYXRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5mb3JtYXRcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc2FuaXRpemVgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZShvcHRpb25zPzogU2FuaXRpemVPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zYW5pdGl6ZVwiLCBTYW5pdGl6ZU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLnNhbml0aXplXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc2FuaXRpemVcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc2x1Z2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsdWcob3B0aW9ucz86IFNsdWdPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zbHVnXCIsIFNsdWdPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5zbHVnXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc2x1Z1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5leHRlcm5hbExpbmtzYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZXh0ZXJuYWxMaW5rcyhvcHRpb25zPzogRXh0ZXJuYWxMaW5rc09wdGlvbnMpOiBQbHVnaW48XCJodG1sLmV4dGVybmFsTGlua3NcIiwgRXh0ZXJuYWxMaW5rc09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLmV4dGVybmFsTGlua3NcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5leHRlcm5hbExpbmtzXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnVud3JhcEltYWdlc2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcEltYWdlcygpOiBQbHVnaW48XCJodG1sLnVud3JhcEltYWdlc1wiPiB7XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC51bndyYXBJbWFnZXNcIiB9XG59XG5cbi8qKiBUaGUgYGh0bWwuZXh0cmFjdFRvY2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RUb2Mob3B0aW9ucz86IEV4dHJhY3RUb2NPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5leHRyYWN0VG9jXCIsIEV4dHJhY3RUb2NPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5leHRyYWN0VG9jXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuZXh0cmFjdFRvY1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5oaWdobGlnaHRgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoaWdobGlnaHQob3B0aW9ucz86IEhpZ2hsaWdodE9wdGlvbnMpOiBQbHVnaW48XCJodG1sLmhpZ2hsaWdodFwiLCBIaWdobGlnaHRPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5oaWdobGlnaHRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5oaWdobGlnaHRcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwua2F0ZXhgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrYXRleChvcHRpb25zPzogS2F0ZXhPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5rYXRleFwiLCBLYXRleE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLmthdGV4XCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwua2F0ZXhcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwudG9NYXJrZG93bmAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTWFya2Rvd24ob3B0aW9ucz86IFRvTWFya2Rvd25PcHRpb25zKTogUGx1Z2luPFwiaHRtbC50b01hcmtkb3duXCIsIFRvTWFya2Rvd25PcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC50b01hcmtkb3duXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwudG9NYXJrZG93blwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC50b05hdHVyYWxMYW5ndWFnZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTmF0dXJhbExhbmd1YWdlKCk6IFBsdWdpbjxcImh0bWwudG9OYXR1cmFsTGFuZ3VhZ2VcIj4ge1xuICByZXR1cm4geyBuYW1lOiBcImh0bWwudG9OYXR1cmFsTGFuZ3VhZ2VcIiB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc3RyaW5naWZ5YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5KG9wdGlvbnM/OiBTdHJpbmdpZnlPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zdHJpbmdpZnlcIiwgU3RyaW5naWZ5T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwuc3RyaW5naWZ5XCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc3RyaW5naWZ5XCIsIG9wdGlvbnMgfVxufVxuIl19
@@ -25,6 +25,19 @@ export interface GfmOptions {
25
25
  tablePipeAlign?: boolean;
26
26
  /** Write a footnote definition's first line blank when it holds flow content. @default false */
27
27
  firstLineBlank?: boolean;
28
+ /** Render GitHub alerts, a block quote opening with `[!NOTE]`, as GitHub does, as remark-github-blockquote-alert does: `true`, or its options. */
29
+ alerts?: Alerts | null;
30
+ }
31
+ /** `md.gfm`'s `alerts`: on, or on with remark-github-blockquote-alert's options. */
32
+ export type Alerts = boolean | AlertsOptions;
33
+ /** remark-github-blockquote-alert's options. */
34
+ export interface AlertsOptions {
35
+ /** Read a title after the type, `[!NOTE/Read this]`, in place of the type's name. @default false */
36
+ legacyTitle?: boolean;
37
+ /** The tag name of the alert's element. @default "div" */
38
+ tagName?: string;
39
+ /** More classes for the alert's element, separated by spaces. @default "" */
40
+ classNames?: string;
28
41
  }
29
42
  /** `md.math`: math syntax, `$$` blocks and `$` text, read by `md.parse` and written by `md.stringify`; options named as remark-math names them. */
30
43
  export interface MathOptions {
@@ -67,6 +80,38 @@ export interface FrontmatterSettings {
67
80
  /** Remove the YAML frontmatter a document starts with from the tree. */
68
81
  strip?: boolean;
69
82
  }
83
+ /** `md.gemoji`: gemoji shortcodes, `:smile:`, into emoji, as remark-gemoji does; its options are remark-emoji's. */
84
+ export interface GemojiOptions {
85
+ /** Also turn emoticons such as `:)` and `:-(` into emoji, as remark-emoji does. @default false */
86
+ emoticon?: boolean;
87
+ /** Wrap each emoji in `<span role="img" aria-label="…">`, labelled with its name. @default false */
88
+ accessible?: boolean;
89
+ /** Put a space after each emoji. @default false */
90
+ padSpaceAfter?: boolean;
91
+ }
92
+ /** `md.smartypants`: straight quotes, dashes, dots and backticks in Markdown text into typographic ones, as remark-smartypants does; options as retext-smartypants takes them. */
93
+ export interface SmartypantsOptions {
94
+ /** Turn double backticks and double straight single quotes into double quotes; `all` turns single ones into single quotes too. */
95
+ backticks?: Backticks;
96
+ /** The closing quotes to use: `”` and `’` by default. */
97
+ closingQuotes?: QuoteCharacters | null;
98
+ /** Turn two dashes into an em dash; `oldschool` and `inverted` treat three too. */
99
+ dashes?: Dashes;
100
+ /** Turn three dots into an ellipsis, with spaces between them or without. */
101
+ ellipses?: Ellipses;
102
+ /** The opening quotes to use: `“` and `‘` by default. */
103
+ openingQuotes?: QuoteCharacters | null;
104
+ /** Turn straight quotes into smart ones. @default true */
105
+ quotes?: boolean | null;
106
+ }
107
+ export type Backticks = boolean | "all";
108
+ /** The quote characters to use for double and single quotes. */
109
+ export interface QuoteCharacters {
110
+ double: string;
111
+ single: string;
112
+ }
113
+ export type Dashes = boolean | "oldschool" | "inverted";
114
+ export type Ellipses = boolean | "spaced" | "unspaced";
70
115
  /** `md.component`: directives, GitHub alerts and other nodes into MDX JSX elements, the components an MDX runtime renders, by declarative rules. */
71
116
  export interface ComponentOptions {
72
117
  /** Rules for directives; the first that matches a directive converts it. */
@@ -310,6 +355,8 @@ export interface UnsafePattern {
310
355
  export interface ToHtmlOptions {
311
356
  /** Keep raw HTML in the tree instead of dropping it. @default false */
312
357
  allowDangerousHtml?: boolean;
358
+ /** Turn each line ending in text into a `<br>`, as remark-breaks does. @default false */
359
+ breaks?: boolean;
313
360
  /** What footnote `id`s start with, so they cannot clobber the page's; `user-content-` when unset. */
314
361
  clobberPrefix?: string | null;
315
362
  /** The text of each footnote's back reference; `↩`, numbered from the second, when unset. */
@@ -353,8 +400,12 @@ export declare function math(options?: MathOptions): Plugin<"md.math", MathOptio
353
400
  export declare function mdx(options?: MdxOptions): Plugin<"md.mdx", MdxOptions>;
354
401
  /** The `md.frontmatter` plugin. */
355
402
  export declare function frontmatter(options?: FrontmatterOptions): Plugin<"md.frontmatter", FrontmatterOptions>;
403
+ /** The `md.cjkFriendly` plugin. */
404
+ export declare function cjkFriendly(): Plugin<"md.cjkFriendly">;
356
405
  /** The `md.gemoji` plugin. */
357
- export declare function gemoji(): Plugin<"md.gemoji">;
406
+ export declare function gemoji(options?: GemojiOptions): Plugin<"md.gemoji", GemojiOptions>;
407
+ /** The `md.smartypants` plugin. */
408
+ export declare function smartypants(options?: SmartypantsOptions): Plugin<"md.smartypants", SmartypantsOptions>;
358
409
  /** The `md.component` plugin. */
359
410
  export declare function component(options?: ComponentOptions): Plugin<"md.component", ComponentOptions>;
360
411
  /** The `md.packageCommand` plugin. */
@@ -39,9 +39,21 @@ export function frontmatter(options) {
39
39
  return { name: "md.frontmatter" };
40
40
  return { name: "md.frontmatter", options };
41
41
  }
42
+ /** The `md.cjkFriendly` plugin. */
43
+ export function cjkFriendly() {
44
+ return { name: "md.cjkFriendly" };
45
+ }
42
46
  /** The `md.gemoji` plugin. */
43
- export function gemoji() {
44
- return { name: "md.gemoji" };
47
+ export function gemoji(options) {
48
+ if (options === undefined)
49
+ return { name: "md.gemoji" };
50
+ return { name: "md.gemoji", options };
51
+ }
52
+ /** The `md.smartypants` plugin. */
53
+ export function smartypants(options) {
54
+ if (options === undefined)
55
+ return { name: "md.smartypants" };
56
+ return { name: "md.smartypants", options };
45
57
  }
46
58
  /** The `md.component` plugin. */
47
59
  export function component(options) {
@@ -103,4 +115,4 @@ export function toNaturalLanguage(options) {
103
115
  return { name: "md.toNaturalLanguage" };
104
116
  return { name: "md.toNaturalLanguage", options };
105
117
  }
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9nZW5lcmF0ZWQvbWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0VBQStFO0FBNFgvRSw2QkFBNkI7QUFDN0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFzQjtJQUMxQyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQTtJQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN0QyxDQUFDO0FBRUQsaUNBQWlDO0FBQ2pDLE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBMEI7SUFDbEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUE7SUFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDMUMsQ0FBQztBQUVELDJCQUEyQjtBQUMzQixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQW9CO0lBQ3RDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFBO0lBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3BDLENBQUM7QUFFRCxzQ0FBc0M7QUFDdEMsTUFBTSxVQUFVLGNBQWM7SUFDNUIsT0FBTyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxDQUFBO0FBQ3RDLENBQUM7QUFFRCw0QkFBNEI7QUFDNUIsTUFBTSxVQUFVLElBQUksQ0FBQyxPQUFxQjtJQUN4QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQTtJQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUNyQyxDQUFDO0FBRUQsMkJB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QTtBQUMxQyxDQUFDO0FBRUQsOEJBQThCO0FBQzlCLE1BQU0sVUFBVSxNQUFNLENBQUMsT0FBdUI7SUFDNUMsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUE7SUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDdkMsQ0FBQztBQUVELHlDQUF5QztBQUN6QyxNQUFNLFVBQVUsaUJBQWlCLENBQUMsT0FBa0M7SUFDbEUsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQTtJQUNsRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHZW5lcmF0ZWQgYnkgYHBucG0gZ2VuZXJhdGU6YmluZGluZ3NgIGZyb20gdGhlIGNyYXRlJ3MgcGx1Z2luczsgZG8gbm90IGVkaXQuXG5cbmltcG9ydCB0eXBlIHsgUm9vdCB9IGZyb20gXCJtZGFzdFwiXG5pbXBvcnQgdHlwZSB7IFBhcnNlciwgUGx1Z2luIH0gZnJvbSBcIi4uL21vZGVscy9wbHVnaW4udHNcIlxuXG4vKiogYG1kLnBhcnNlYDogTWFya2Rvd24gaW50byBtZGFzdC4gKi9cbmV4cG9ydCB0eXBlIFBhcnNlT3B0aW9ucyA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbi8qKiBgbWQuZGlyZWN0aXZlYDogZ2VuZXJpYyBkaXJlY3RpdmVzLCBgOmFgLCBgOjpiYCBhbmQgYDo6OmNgLCByZWFkIGJ5IGBtZC5wYXJzZWAgYW5kIHdyaXR0ZW4gYnkgYG1kLnN0cmluZ2lmeWA7IG9wdGlvbnMgbmFtZWQgYXMgbWRhc3QtdXRpbC1kaXJlY3RpdmUncyBzZXJpYWxpemVyIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdGl2ZU9wdGlvbnMge1xuICAvKiogV3JpdGUgYW4gZW1wdHkgYXR0cmlidXRlIGFzIGl0cyBuYW1lIGFsb25lLCBge2F9YCwgcmF0aGVyIHRoYW4gYHthPVwiXCJ9YC4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBjb2xsYXBzZUVtcHR5QXR0cmlidXRlcz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGBpZGAgYW5kIGBjbGFzc2AgYXMgYCNhYCBhbmQgYC5iYCB3aGVyZSB0aGV5IGNhbiBiZS4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBwcmVmZXJTaG9ydGN1dD86IGJvb2xlYW5cbiAgLyoqIExlYXZlIGF0dHJpYnV0ZSB2YWx1ZXMgdW5xdW90ZWQgd2hlcmUgdGhleSBjYW4gYmUuIEBkZWZhdWx0IGZhbHNlICovXG4gIHByZWZlclVucXVvdGVkPzogYm9vbGVhblxuICAvKiogVGhlIHF1b3RlIG9mIGF0dHJpYnV0ZSB2YWx1ZXM6IGBcImAgb3IgYCdgOyBgbWQuc3RyaW5naWZ5YCdzIGBxdW90ZWAgd2hlbiB1bnNldC4gKi9cbiAgcXVvdGU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBVc2UgdGhlIG90aGVyIHF1b3RlIHdoZW4gdGhlIHByZWZlcnJlZCBvbmUgb2NjdXJzIG1vcmUgb2Z0ZW4gaW4gYSB2YWx1ZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcXVvdGVTbWFydD86IGJvb2xlYW5cbn1cblxuLyoqIGBtZC5nZm1gOiBHaXRIdWIgRmxhdm9yZWQgTWFya2Rvd24ncyBzeW50YXgsIHJlYWQgYnkgYG1kLnBhcnNlYCBhbmQgd3JpdHRlbiBieSBgbWQuc3RyaW5naWZ5YDsgb3B0aW9ucyBuYW1lZCBhcyByZW1hcmstZ2ZtIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEdmbU9wdGlvbnMge1xuICAvKiogTGV0IG9uZSB0aWxkZSwgYH5hfmAsIGZvcm0gc3RyaWtldGhyb3VnaCwgYXMgd2VsbCBhcyB0d28uIEBkZWZhdWx0IHRydWUgKi9cbiAgc2luZ2xlVGlsZGU/OiBib29sZWFuXG4gIC8qKiBQYWQgdGFibGUgY2VsbHMgd2l0aCBhIHNwYWNlIG9uIGVhY2ggc2lkZSB3aGVuIHdyaXRpbmcgTWFya2Rvd24uIEBkZWZhdWx0IHRydWUgKi9cbiAgdGFibGVDZWxsUGFkZGluZz86IGJvb2xlYW5cbiAgLyoqIExpbmUgdXAgdGFibGUgcGlwZXMgd2hlbiB3cml0aW5nIE1hcmtkb3duLiBAZGVmYXVsdCB0cnVlICovXG4gIHRhYmxlUGlwZUFsaWduPzogYm9vbGVhblxuICAvKiogV3JpdGUgYSBmb290bm90ZSBkZWZpbml0aW9uJ3MgZmlyc3QgbGluZSBibGFuayB3aGVuIGl0IGhvbGRzIGZsb3cgY29udGVudC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZmlyc3RMaW5lQmxhbms/OiBib29sZWFuXG59XG5cbi8qKiBgbWQubWF0aGA6IG1hdGggc3ludGF4LCBgJCRgIGJsb2NrcyBhbmQgYCRgIHRleHQsIHJlYWQgYnkgYG1kLnBhcnNlYCBhbmQgd3JpdHRlbiBieSBgbWQuc3RyaW5naWZ5YDsgb3B0aW9ucyBuYW1lZCBhcyByZW1hcmstbWF0aCBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRoT3B0aW9ucyB7XG4gIC8qKiBMZXQgb25lIGRvbGxhciwgYCRhJGAsIGZvcm0gbWF0aCBpbiB0ZXh0LCBhcyB3ZWxsIGFzIHR3by4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBzaW5nbGVEb2xsYXJUZXh0TWF0aD86IGJvb2xlYW5cbn1cblxuLyoqIGBtZC5tZHhgOiBNRFggc3ludGF4LCBKU1gsIGV4cHJlc3Npb25zIGFuZCBFU00sIHJlYWQgYnkgYG1kLnBhcnNlYCBhbmQgd3JpdHRlbiBieSBgbWQuc3RyaW5naWZ5YDsgaXQgdHVybnMgb2ZmIGluZGVudGVkIGNvZGUsIGF1dG9saW5rcyBhbmQgcmF3IEhUTUw7IG9wdGlvbnMgbmFtZWQgYXMgcmVtYXJrLW1keCBhbmQgbWRhc3QtdXRpbC1tZHgtanN4J3Mgc2VyaWFsaXplciBuYW1lIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIE1keE9wdGlvbnMge1xuICAvKiogVGhlIHF1b3RlIG9mIEpTWCBhdHRyaWJ1dGUgdmFsdWVzOiBgXCJgICh3aGVuIHVuc2V0KSBvciBgJ2AuICovXG4gIHF1b3RlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVXNlIHRoZSBvdGhlciBxdW90ZSB3aGVuIHRoZSBwcmVmZXJyZWQgb25lIG9jY3VycyBtb3JlIG9mdGVuIGluIGEgdmFsdWUuIEBkZWZhdWx0IGZhbHNlICovXG4gIHF1b3RlU21hcnQ/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBzZWxmLWNsb3NpbmcgdGFncyB3aXRob3V0IGEgc3BhY2UgYmVmb3JlIHRoZSBzbGFzaCwgYDxhLz5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodFNlbGZDbG9zaW5nPzogYm9vbGVhblxuICAvKiogVGhlIHdpZHRoIHBhc3Qgd2hpY2ggYSBmbG93IGVsZW1lbnQncyBhdHRyaWJ1dGVzIGdvIG9uIGxpbmVzIG9mIHRoZWlyIG93bi4gKi9cbiAgcHJpbnRXaWR0aD86IG51bWJlciB8IG51bGxcbn1cblxuLyoqIFRoZSBraW5kcyBvZiBtYXR0ZXIgdG8gcmVjb2duaXplLCBhcyByZW1hcmstZnJvbnRtYXR0ZXIgdGFrZXMgdGhlbSAoYSBwcmVzZXQsIGEgbWF0dGVyLCBvciBhIGxpc3Qgb2YgdGhlbTsgYHlhbWxgIHdoZW4gdW5zZXQpLCBvciB0ZXh0bGFuZSdzIG9wdGlvbnMgb2JqZWN0LiAqL1xuZXhwb3J0IHR5cGUgRnJvbnRtYXR0ZXJPcHRpb25zID0gXCJ5YW1sXCIgfCBcInRvbWxcIiB8IE1hdHRlciB8IChcInlhbWxcIiB8IFwidG9tbFwiIHwgTWF0dGVyKVtdIHwgRnJvbnRtYXR0ZXJTZXR0aW5nc1xuXG4vKiogT25lIGtpbmQgb2YgZnJvbnRtYXR0ZXI6IHRoZSBub2RlIGB0eXBlYCBpdCBiZWNvbWVzIGFuZCBpdHMgZmVuY2VzLCBhIGBtYXJrZXJgIHJlcGVhdGVkIHRocmVlIHRpbWVzIG9yIGEgd2hvbGUgYGZlbmNlYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF0dGVyIHtcbiAgdHlwZTogc3RyaW5nXG4gIG1hcmtlcj86IEZlbmNlXG4gIGZlbmNlPzogRmVuY2VcbiAgYW55d2hlcmU/OiBib29sZWFuXG59XG5cbi8qKiBEaWZmZXJlbnQgb3BlbmluZyBhbmQgY2xvc2luZyBmZW5jZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIEZlbmNlUGFpciB7XG4gIG9wZW46IHN0cmluZ1xuICBjbG9zZTogc3RyaW5nXG59XG5cbi8qKiBBIGZlbmNlLCBvciBpdHMgb3BlbmluZyBhbmQgY2xvc2luZyBvbmVzLiAqL1xuZXhwb3J0IHR5cGUgRmVuY2UgPSBzdHJpbmcgfCBGZW5jZVBhaXJcblxuLyoqIHRleHRsYW5lJ3Mgb3B0aW9uczogdGhlIG1hdHRlcnMsIGFuZCB3aGF0IHRvIGRvIHdpdGggWUFNTCBmcm9udG1hdHRlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnJvbnRtYXR0ZXJTZXR0aW5ncyB7XG4gIC8qKiBUaGUga2luZHMgb2YgbWF0dGVyIHRvIHJlY29nbml6ZSwgYXMgcmVtYXJrLWZyb250bWF0dGVyIHRha2VzIHRoZW07IGB5YW1sYCB3aGVuIHVuc2V0LiAqL1xuICBtYXR0ZXJzPzogXCJ5YW1sXCIgfCBcInRvbWxcIiB8IE1hdHRlciB8IChcInlhbWxcIiB8IFwidG9tbFwiIHwgTWF0dGVyKVtdXG4gIC8qKiBQYXJzZSB0aGUgWUFNTCBmcm9udG1hdHRlciBhIGRvY3VtZW50IHN0YXJ0cyB3aXRoIGludG8gYGZpbGUuZGF0YS5tYXR0ZXJgLCBge31gIHdoZW4gdGhlcmUgaXMgbm9uZSwgYXMgdmZpbGUtbWF0dGVyIGRvZXMuICovXG4gIGRhdGE/OiBib29sZWFuXG4gIC8qKiBSZW1vdmUgdGhlIFlBTUwgZnJvbnRtYXR0ZXIgYSBkb2N1bWVudCBzdGFydHMgd2l0aCBmcm9tIHRoZSB0cmVlLiAqL1xuICBzdHJpcD86IGJvb2xlYW5cbn1cblxuLyoqIGBtZC5jb21wb25lbnRgOiBkaXJlY3RpdmVzLCBHaXRIdWIgYWxlcnRzIGFuZCBvdGhlciBub2RlcyBpbnRvIE1EWCBKU1ggZWxlbWVudHMsIHRoZSBjb21wb25lbnRzIGFuIE1EWCBydW50aW1lIHJlbmRlcnMsIGJ5IGRlY2xhcmF0aXZlIHJ1bGVzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRPcHRpb25zIHtcbiAgLyoqIFJ1bGVzIGZvciBkaXJlY3RpdmVzOyB0aGUgZmlyc3QgdGhhdCBtYXRjaGVzIGEgZGlyZWN0aXZlIGNvbnZlcnRzIGl0LiAqL1xuICBkaXJlY3RpdmVzPzogRGlyZWN0aXZlUnVsZVtdXG4gIC8qKiBHaXRIdWIgYWxlcnRzLCBgPiBbIU5PVEVdYCwgaW50byBhIGNvbXBvbmVudC4gKi9cbiAgYWxlcnRzPzogQWxlcnRSdWxlIHwgbnVsbFxuICAvKiogTm9kZSB0eXBlcywgc3VjaCBhcyBgZGVmTGlzdGAsIGludG8gY29tcG9uZW50cyBrZWVwaW5nIHRoZWlyIGNoaWxkcmVuLiBAZGVmYXVsdCB7fSAqL1xuICBub2Rlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgLyoqIFdoYXQgYmVjb21lcyBvZiBhIGRpcmVjdGl2ZSBubyBydWxlIGNvbnZlcnRzLiAqL1xuICB1bmtub3duRGlyZWN0aXZlcz86IFVua25vd25EaXJlY3RpdmVzXG4gIC8qKiBSdWxlcyBmb3IgZmVuY2VkIGNvZGU7IHRoZSBmaXJzdCB0aGF0IG1hdGNoZXMgYSBibG9jayBhcHBsaWVzLiAqL1xuICBjb2Rlcz86IENvZGVSdWxlW11cbn1cblxuLyoqIEhvdyBgbWQuY29tcG9uZW50YCB0dXJucyBtYXRjaGluZyBkaXJlY3RpdmVzIGludG8gb25lIGNvbXBvbmVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0aXZlUnVsZSB7XG4gIC8qKiBUaGUgZGlyZWN0aXZlJ3MgbmFtZSwgb3Igc2V2ZXJhbC4gKi9cbiAgbmFtZTogTmFtZXNcbiAgLyoqIFRoZSBraW5kIG9mIGRpcmVjdGl2ZTogYHRleHRgLCBgbGVhZmAgb3IgYGNvbnRhaW5lcmA7IGFueSB3aGVuIGxlZnQgb3V0LiAqL1xuICBraW5kPzogRGlyZWN0aXZlS2luZCB8IG51bGxcbiAgLyoqIEF0dHJpYnV0ZSB2YWx1ZXMgdGhlIGRpcmVjdGl2ZSBtdXN0IGhhdmUuIEBkZWZhdWx0IHt9ICovXG4gIHdoZXJlPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAvKiogVGhlIGNvbXBvbmVudDogYSB0ZXh0IGVsZW1lbnQgZm9yIGEgdGV4dCBkaXJlY3RpdmUsIGVsc2UgYSBmbG93IGVsZW1lbnQuICovXG4gIGNvbXBvbmVudDogc3RyaW5nXG4gIC8qKiBUaGUgYXR0cmlidXRlIHRoYXQgZ2V0cyB0aGUgZGlyZWN0aXZlJ3MgbmFtZS4gKi9cbiAgbmFtZUFzPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGF0dHJpYnV0ZSB0aGF0IGdldHMgdGhlIGxhYmVsJ3MgdGV4dDogYSBjb250YWluZXIncyBsYWJlbCBwYXJhZ3JhcGggb3IgYSB0ZXh0IG9yIGxlYWYgZGlyZWN0aXZlJ3MgY29udGVudCwgd2hpY2ggaXMgdGhlbiBkcm9wcGVkLiAqL1xuICBsYWJlbEFzPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGxhYmVsJ3MgdGV4dCB3aGVuIHRoZXJlIGlzIG5vbmUuICovXG4gIGxhYmVsRGVmYXVsdD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBhdHRyaWJ1dGVzIHRvIGtlZXAsIGluIG9yZGVyOyBldmVyeSBvbmUsIGFzIHdyaXR0ZW4sIHdoZW4gbGVmdCBvdXQuICovXG4gIGF0dHJpYnV0ZXM/OiBBdHRyaWJ1dGVSdWxlW10gfCBudWxsXG4gIC8qKiBBdHRyaWJ1dGVzIHdpdGhvdXQgd2hpY2ggdGhlIGRpcmVjdGl2ZSBpcyBsZWZ0IHRvIGB1bmtub3duRGlyZWN0aXZlc2AuIEBkZWZhdWx0IFtdICovXG4gIHJlcXVpcmVkPzogc3RyaW5nW11cbiAgLyoqIFdyYXAgcnVucyBvZiBhZGphY2VudCBzaWJsaW5ncyB0aGlzIHJ1bGUgY29udmVydGVkIGluIGFub3RoZXIgY29tcG9uZW50LiAqL1xuICBncm91cD86IEdyb3VwUnVsZSB8IG51bGxcbiAgLyoqIFRoZSBhdHRyaWJ1dGUgdGhhdCBnZXRzIHRoZSBsaXN0cyBvZiBhIGNvbnRhaW5lciBkaXJlY3RpdmUgYXMgYSBmaWxlIHRyZWUsIEpTT04gaXRlbXMgYHtuYW1lLCB0eXBlLCBjb21tZW50PywgaGlnaGxpZ2h0ZWQ/LCBjaGlsZHJlbj99YDsgdGhlIGxpc3RzIGxlYXZlIGl0cyBjb250ZW50LiAqL1xuICB0cmVlQXM/OiBzdHJpbmcgfCBudWxsXG59XG5cbi8qKiBPbmUgbmFtZSBvciBzZXZlcmFsLiAqL1xuZXhwb3J0IHR5cGUgTmFtZXMgPSBzdHJpbmcgfCBzdHJpbmdbXVxuXG4vKiogQSBkaXJlY3RpdmUncyBraW5kLCBieSBob3cgbWFueSBjb2xvbnMgb3BlbiBpdC4gKi9cbmV4cG9ydCB0eXBlIERpcmVjdGl2ZUtpbmQgPSBcInRleHRcIiB8IFwibGVhZlwiIHwgXCJjb250YWluZXJcIlxuXG4vKiogQW4gYXR0cmlidXRlIHRvIGtlZXA6IGl0cyBuYW1lLCBvciBpdHMgbmFtZSB3aXRoIHdoYXQgdG8gY2FsbCBpdCBhbmQgYSBkZWZhdWx0LiAqL1xuZXhwb3J0IHR5cGUgQXR0cmlidXRlUnVsZSA9IHN0cmluZyB8IHsgbmFtZTogc3RyaW5nOyByZW5hbWU/OiBzdHJpbmcgfCBudWxsOyBkZWZhdWx0Pzogc3RyaW5nIHwgbnVsbCB9XG5cbi8qKiBUaGUgY29tcG9uZW50IHdyYXBwaW5nIGEgcnVuIG9mIGFkamFjZW50IHNpYmxpbmdzIG9uZSBydWxlIGNvbnZlcnRlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBSdWxlIHtcbiAgLyoqIFRoZSB3cmFwcGluZyBjb21wb25lbnQuICovXG4gIGNvbXBvbmVudDogc3RyaW5nXG4gIC8qKiBUaGUgc2hvcnRlc3QgcnVuIHdyYXBwZWQ7IDIgd2hlbiBsZWZ0IG91dC4gKi9cbiAgbWluPzogbnVtYmVyIHwgbnVsbFxuICAvKiogQXR0cmlidXRlcyB0aGUgd3JhcHBlciBjb3BpZXMgZnJvbSB0aGUgcnVuJ3MgZmlyc3QgZWxlbWVudC4gQGRlZmF1bHQgW10gKi9cbiAgaW5oZXJpdD86IHN0cmluZ1tdXG59XG5cbi8qKiBIb3cgYG1kLmNvbXBvbmVudGAgdHVybnMgR2l0SHViIGFsZXJ0cywgYSBibG9jayBxdW90ZSBvcGVuaW5nIHdpdGggYFshVFlQRV1gLCBpbnRvIGEgY29tcG9uZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGVydFJ1bGUge1xuICAvKiogVGhlIGNvbXBvbmVudCBhbiBhbGVydCBiZWNvbWVzLiAqL1xuICBjb21wb25lbnQ6IHN0cmluZ1xuICAvKiogVGhlIGF0dHJpYnV0ZSB0aGF0IGdldHMgdGhlIGFsZXJ0J3MgdHlwZS4gKi9cbiAgdHlwZUFzOiBzdHJpbmdcbiAgLyoqIEVhY2ggYWxlcnQgdHlwZSwgYXMgd3JpdHRlbiwgdG8gdGhlIHZhbHVlIG9mIGB0eXBlQXNgOyBvdGhlciB0eXBlcyBzdGF5IGJsb2NrIHF1b3Rlcy4gKi9cbiAgdHlwZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbn1cblxuLyoqIFdoYXQgYG1kLmNvbXBvbmVudGAgZG9lcyB3aXRoIGEgZGlyZWN0aXZlIG5vIHJ1bGUgY29udmVydHMuICovXG5leHBvcnQgdHlwZSBVbmtub3duRGlyZWN0aXZlcyA9IFwia2VlcFwiIHwgXCJzb3VyY2VcIlxuXG4vKiogSG93IGBtZC5jb21wb25lbnRgIHR1cm5zIG1hdGNoaW5nIGNvZGUgYmxvY2tzIGludG8gYSBjb21wb25lbnQsIG9yIGdyb3VwcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlUnVsZSB7XG4gIC8qKiBUaGUgYmxvY2sncyBsYW5ndWFnZSwgb3Igc2V2ZXJhbDsgYW55IHdoZW4gbGVmdCBvdXQuICovXG4gIGxhbmc/OiBOYW1lcyB8IG51bGxcbiAgLyoqIEEgYGtleT1cInZhbHVlXCJgIHRoZSBibG9jaydzIG1ldGEgbXVzdCBob2xkLiAqL1xuICBtZXRhPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGNvbXBvbmVudCB0aGUgYmxvY2sgYmVjb21lczsgbGVmdCBvdXQsIHRoZSBibG9jayBzdGF5cyBjb2RlIGFuZCBvbmx5IGdyb3Vwcy4gKi9cbiAgY29tcG9uZW50Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGF0dHJpYnV0ZSB0aGF0IGdldHMgdGhlIGNvZGU7IGxlZnQgb3V0LCB0aGUgY29kZSBpcyB0aGUgY29tcG9uZW50J3MgdGV4dC4gKi9cbiAgdmFsdWVBcz86IHN0cmluZyB8IG51bGxcbiAgLyoqIE1ldGEgYGtleT1cInZhbHVlXCJgIHBhaXJzIHRvIGtlZXAgYXMgYXR0cmlidXRlcywgaW4gb3JkZXIuICovXG4gIGF0dHJpYnV0ZXM/OiBBdHRyaWJ1dGVSdWxlW11cbiAgLyoqIFdyYXAgcnVucyBvZiBhZGphY2VudCBibG9ja3MgdGhpcyBydWxlIG1hdGNoZWQgaW4gYW5vdGhlciBjb21wb25lbnQuICovXG4gIGdyb3VwPzogQ29kZUdyb3VwUnVsZSB8IG51bGxcbn1cblxuLyoqIFRoZSBjb21wb25lbnQgd3JhcHBpbmcgYSBydW4gb2YgYWRqYWNlbnQgY29kZSBibG9ja3Mgb25lIHJ1bGUgbWF0Y2hlZDsgdGhlIG1ldGEga2V5cyBpdCByZWFkcyBhcmUgdGFrZW4gb3V0IG9mIGVhY2ggYmxvY2sncyBtZXRhLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlR3JvdXBSdWxlIHtcbiAgLyoqIFRoZSB3cmFwcGluZyBjb21wb25lbnQuICovXG4gIGNvbXBvbmVudDogc3RyaW5nXG4gIC8qKiBUaGUgc2hvcnRlc3QgcnVuIHdyYXBwZWQ7IDIgd2hlbiBsZWZ0IG91dC4gKi9cbiAgbWluPzogbnVtYmVyIHwgbnVsbFxuICAvKiogVGhlIGF0dHJpYnV0ZSB0aGF0IGdldHMgdGhlIHJ1bidzIHZhbHVlcyBvZiB0aGUgcnVsZSdzIGBtZXRhYCBrZXksIGFzIGEgSlNPTiBsaXN0LiAqL1xuICBjb2xsZWN0Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogTWV0YSBrZXlzIHRoZSB3cmFwcGVyIGNvcGllcyBmcm9tIHRoZSBydW4ncyBmaXJzdCBibG9jayBhcyBhdHRyaWJ1dGVzLiBAZGVmYXVsdCBbXSAqL1xuICBpbmhlcml0Pzogc3RyaW5nW11cbn1cblxuLyoqIGBtZC5wYWNrYWdlQ29tbWFuZGA6IGEgZmVuY2VkIGJsb2NrIG9mIHBhY2thZ2UtbWFuYWdlciBjb21tYW5kcywgaXRzIGxhbmd1YWdlIG5hbWluZyB0aGUgZWNvc3lzdGVtIChgbnBtYCwgYHBpcGAsIGBjYXJnb2ApLCBpbnRvIG9uZSBjb21wb25lbnQgd2l0aCB0aGUgY29tbWFuZHMgY29udmVydGVkIGZvciBlYWNoIG1hbmFnZXIsIGFzIGBAZG9jdXNhdXJ1cy9yZW1hcmstcGx1Z2luLW5wbTJ5YXJuYCBkb2VzIGZvciBucG0uICovXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VDb21tYW5kT3B0aW9ucyB7XG4gIC8qKiBUaGUgY29tcG9uZW50IGEgYmxvY2sgYmVjb21lczsgb25lIHN0cmluZyBhdHRyaWJ1dGUgcGVyIG1hbmFnZXIuIEBkZWZhdWx0IFwiUGFja2FnZVRhYnNcIiAqL1xuICBjb21wb25lbnQ/OiBzdHJpbmdcbiAgLyoqIEVhY2ggZWNvc3lzdGVtJ3MgbWFuYWdlcnMsIGluIGF0dHJpYnV0ZSBvcmRlcjsgYW4gZW1wdHkgbGlzdCBsZWF2ZXMgaXRzIGJsb2NrcyBjb2RlLiAqL1xuICBlY29zeXN0ZW1zPzogRWNvc3lzdGVtc1xufVxuXG4vKiogVGhlIG1hbmFnZXJzIGBtZC5wYWNrYWdlQ29tbWFuZGAgY29udmVydHMgZWFjaCBlY29zeXN0ZW0ncyBjb21tYW5kcyBmb3IuICovXG5leHBvcnQgaW50ZXJmYWNlIEVjb3N5c3RlbXMge1xuICAvKiogTWFuYWdlcnMgZm9yIGBucG1gIGJsb2NrcywgY29udmVydGVkIGFzIG5wbS10by15YXJuIGNvbnZlcnRzOyBucG0sIHBucG0sIHlhcm4gYW5kIGJ1biBieSBkZWZhdWx0LiAqL1xuICBucG0/OiBOcG1NYW5hZ2VyW11cbiAgLyoqIE1hbmFnZXJzIGZvciBgcGlwYCBibG9ja3M7IHBpcCwgdXYsIHBvZXRyeSBhbmQgcGRtIGJ5IGRlZmF1bHQuICovXG4gIHBpcD86IFBpcE1hbmFnZXJbXVxuICAvKiogTWFuYWdlcnMgZm9yIGBjYXJnb2AgYmxvY2tzOyBjYXJnbyBhbmQgY2FyZ28tYmluc3RhbGwgYnkgZGVmYXVsdC4gKi9cbiAgY2FyZ28/OiBDYXJnb01hbmFnZXJbXVxufVxuXG4vKiogQSBKYXZhU2NyaXB0IHBhY2thZ2UgbWFuYWdlciBhbiBgbnBtYCBjb21tYW5kIGNvbnZlcnRzIHRvLiAqL1xuZXhwb3J0IHR5cGUgTnBtTWFuYWdlciA9IFwibnBtXCIgfCBcInBucG1cIiB8IFwieWFyblwiIHwgXCJidW5cIiB8IFwiZGVub1wiIHwgXCJudWJcIlxuXG4vKiogQSBQeXRob24gcGFja2FnZSBtYW5hZ2VyIGEgYHBpcGAgY29tbWFuZCBjb252ZXJ0cyB0by4gKi9cbmV4cG9ydCB0eXBlIFBpcE1hbmFnZXIgPSBcInBpcFwiIHwgXCJ1dlwiIHwgXCJwb2V0cnlcIiB8IFwicGRtXCJcblxuLyoqIEEgUnVzdCBpbnN0YWxsZXIgYSBgY2FyZ29gIGNvbW1hbmQgY29udmVydHMgdG8uICovXG5leHBvcnQgdHlwZSBDYXJnb01hbmFnZXIgPSBcImNhcmdvXCIgfCBcImNhcmdvLWJpbnN0YWxsXCJcblxuLyoqIGBtZC5oZWFkaW5nSWRgOiBgeyNpZH1gIGF0IHRoZSBlbmQgb2YgYSBoZWFkaW5nLCBhZnRlciBhIHNwYWNlLCBhcyBpdHMgaWQsIGFzIHJlbWFyay1oZWFkaW5nLWlkIHJlYWRzIGl0OyBoZWFkaW5ncyB3aXRob3V0IG9uZSBrZWVwIG5vbmUuICovXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRpbmdJZE9wdGlvbnMge1xuICAvKiogUmVhZCBhIHdob2xlIGF0dHJpYnV0ZSBsaXN0LCBgeyNpZCAuY2xhc3Mga2V5PXZhbHVlIGtleT1cInYgd1wifWAsIGFzIGRpcmVjdGl2ZXMgd3JpdGUgdGhlaXJzOiBjbGFzc2VzIGJlY29tZSBgY2xhc3NOYW1lYCBhbmQgb3RoZXIga2V5cyBwcm9wZXJ0aWVzLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBhdHRyaWJ1dGVzPzogYm9vbGVhblxuICAvKiogTGl0ZXJhbCBzdWZmaXhlcywgc3VjaCBhcyBgW3N0ZXBdYCwgc3RyaXBwZWQgZnJvbSBhIGhlYWRpbmcncyBlbmQgZm9yIHRoZSBhdHRyaWJ1dGVzIGVhY2ggbmFtZXMsIGEgdmFsdWUgb3IgYHRydWVgIGZvciBhIGJhcmUgb25lOiBge1wiW3N0ZXBdXCI6IHtcImRhdGEtc3RlcFwiOiB0cnVlfX1gLiAqL1xuICBtYXJrZXJzPzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgTWFya2VyVmFsdWU+PlxufVxuXG4vKiogQW4gYXR0cmlidXRlIGEgaGVhZGluZyBtYXJrZXIgc2V0czogaXRzIHZhbHVlLCBvciBgdHJ1ZWAgZm9yIHRoZSBiYXJlIGF0dHJpYnV0ZS4gKi9cbmV4cG9ydCB0eXBlIE1hcmtlclZhbHVlID0gYm9vbGVhbiB8IHN0cmluZ1xuXG4vKiogYG1kLnBhdGhSZXdyaXRlYDogdGhlIFVSTHMgb2YgaW1hZ2VzLCBsaW5rcyBhbmQgZGVmaW5pdGlvbnMgYXMgYSBzaXRlIHNlcnZlcyB0aGVtOiByZWxhdGl2ZSBvbmVzIHJlc29sdmVkIGFnYWluc3QgdGhlIGZpbGUncyBwYXRoIGFuZCBtYWRlIHJvb3QtcmVsYXRpdmUsIGV2ZXJ5IHJvb3QtcmVsYXRpdmUgb25lIHVuZGVyIGBiYXNlYCwgYW5kIGxpbmtzIHRvIE1hcmtkb3duIGZpbGVzIHR1cm5lZCBpbnRvIHBhZ2UgVVJMcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF0aFJld3JpdGVPcHRpb25zIHtcbiAgLyoqIFRoZSBkaXJlY3RvcnkgVVJMcyBjb3VudCBmcm9tLCBhcyB0aGUgZmlsZSdzIHBhdGggc3BlbGxzIGl0OyB0aGUgcGF0aCdzIG93biBzdGFydGluZyBwb2ludCB3aGVuIGxlZnQgb3V0LiAqL1xuICByb290Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIFVSTCB0aGUgc2l0ZSBpcyBzZXJ2ZWQgYXQsIHN1Y2ggYXMgYC9kb2NzYCwgcHV0IGJlZm9yZSBldmVyeSByb290LXJlbGF0aXZlIFVSTCBvbmNlLiAqL1xuICBiYXNlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIG5vZGVzIHdob3NlIFVSTHMgYXJlIHJld3JpdHRlbjsgaW1hZ2VzLCBsaW5rcyBhbmQgZGVmaW5pdGlvbnMgd2hlbiBsZWZ0IG91dC4gKi9cbiAgbm9kZXM/OiBVcmxOb2RlW10gfCBudWxsXG4gIC8qKiBNYXJrZG93biBmaWxlcywgcmVsYXRpdmUgdG8gYHJvb3RgLCB0byB0aGUgVVJMIG9mIHRoZWlyIHBhZ2U7IGEgbGluayB0byBvbmUgb2YgdGhlbSB0YWtlcyBpdCwgYmVmb3JlIGBtYXJrZG93bkxpbmtzYCBhcHBsaWVzLiBAZGVmYXVsdCB7fSAqL1xuICBwYWdlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgLyoqIEhvdyBhIGxpbmsgdG8gYSBNYXJrZG93biBmaWxlIG5vIHBhZ2UgbmFtZXMgYmVjb21lcyBhIFVSTC4gKi9cbiAgbWFya2Rvd25MaW5rcz86IE1hcmtkb3duTGlua3Ncbn1cblxuLyoqIEEgbm9kZSB3aXRoIGEgVVJMLiAqL1xuZXhwb3J0IHR5cGUgVXJsTm9kZSA9IFwiaW1hZ2VcIiB8IFwibGlua1wiIHwgXCJkZWZpbml0aW9uXCJcblxuLyoqIEhvdyBhIGxpbmsgdG8gYSBNYXJrZG93biBmaWxlIGJlY29tZXMgYSBVUkwuICovXG5leHBvcnQgdHlwZSBNYXJrZG93bkxpbmtzID0gXCJrZWVwXCIgfCBcImRpcmVjdG9yeVwiIHwgXCJodG1sXCJcblxuLyoqIGBtZC5zaGlmdEhlYWRpbmdgOiBldmVyeSBoZWFkaW5nJ3MgZGVwdGggbW92ZWQgYnkgYHNoaWZ0YCBhbmQga2VwdCB3aXRoaW4gMSB0byA2LCBhcyByZWh5cGUtc2hpZnQtaGVhZGluZyBtb3ZlcyBoYXN0J3MsIGFmdGVyIHRoZSBkb2N1bWVudCdzIHRpdGxlIGlzIGRyb3BwZWQgd2hlbiBhc2tlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2hpZnRIZWFkaW5nT3B0aW9ucyB7XG4gIC8qKiBUaGUgbGV2ZWxzIGFkZGVkIHRvIGVhY2ggaGVhZGluZydzIGRlcHRoOiBgLTFgIG1ha2VzIGFuIGgyIGFuIGgxLCBgMWAgYW4gaDEgYW4gaDIuIEBkZWZhdWx0IDAgKi9cbiAgc2hpZnQ/OiBudW1iZXJcbiAgLyoqIERyb3AgdGhlIGRvY3VtZW50J3MgZmlyc3Qgbm9kZSB3aGVuIGl0IGlzIGFuIGgxLCBsb29raW5nIHBhc3QgZnJvbnRtYXR0ZXIgYW5kIEVTTS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZHJvcFRpdGxlPzogYm9vbGVhblxufVxuXG4vKiogYG1kLnN0cmlwYDogbWRhc3QgZG93biB0byBpdHMgdGV4dCwgYXMgc3RyaXAtbWFya2Rvd24gZG9lczogY29kZSwgSFRNTCwgdGFibGVzIGFuZCB0aGUgbGlrZSBkcm9wcGVkLCBoZWFkaW5ncyBtYWRlIHBhcmFncmFwaHMsIGZvcm1hdHRpbmcgdW53cmFwcGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJpcE9wdGlvbnMge1xuICAvKiogTm9kZSB0eXBlcyB0byBsZWF2ZSBhcyB0aGV5IGFyZSwgc3VjaCBhcyBgaW5saW5lQ29kZWAuIEBkZWZhdWx0IFtdICovXG4gIGtlZXA/OiBzdHJpbmdbXVxuICAvKiogTm9kZSB0eXBlcyB0byBkcm9wLCBiZXNpZGVzIHRob3NlIHN0cmlwLW1hcmtkb3duIGRyb3BzLiBAZGVmYXVsdCBbXSAqL1xuICByZW1vdmU/OiBzdHJpbmdbXVxufVxuXG4vKiogYG1kLnRvY2A6IGEgdGFibGUgb2YgY29udGVudHMgdW5kZXIgdGhlIGZpcnN0IGhlYWRpbmcgbWF0Y2hpbmcgYGhlYWRpbmdgLCByZXBsYWNpbmcgd2hhdCBzYXQgYmV0d2VlbiBpdCBhbmQgdGhlIG5leHQgaGVhZGluZyBhcyBkZWVwIG9yIHNoYWxsb3dlciwgYXMgcmVtYXJrLXRvYyBtYWtlcyBpdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9jT3B0aW9ucyB7XG4gIC8qKiBUaGUgaGVhZGluZyB0byBwdXQgdGhlIHRhYmxlIHVuZGVyLCBhcyBKYXZhU2NyaXB0IHJlZ3VsYXIgZXhwcmVzc2lvbiBzb3VyY2UgbWF0Y2hlZCBhZ2FpbnN0IGl0cyB3aG9sZSB0ZXh0LCBjYXNlLWluc2Vuc2l0aXZlbHk7IGAodGFibGVbIC1db2ZbIC1dKT9jb250ZW50cz98dG9jYCB3aGVuIHVuc2V0LiAqL1xuICBoZWFkaW5nPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGRlZXBlc3QgaGVhZGluZyByYW5rIHRvIGxpc3QsIDEgdG8gNi4gKi9cbiAgbWF4RGVwdGg/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBUaGUgc2hhbGxvd2VzdCBoZWFkaW5nIHJhbmsgdG8gbGlzdCwgMSB0byA2LiAqL1xuICBtaW5EZXB0aD86IG51bWJlciB8IG51bGxcbiAgLyoqIEhlYWRpbmdzIHRvIGxlYXZlIG91dCwgYXMgSmF2YVNjcmlwdCByZWd1bGFyIGV4cHJlc3Npb24gc291cmNlIG1hdGNoZWQgYWdhaW5zdCB0aGVpciB3aG9sZSB0ZXh0LCBjYXNlLWluc2Vuc2l0aXZlbHkuICovXG4gIHNraXA/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBLZWVwIHRoZSBsaXN0IGNvbXBhY3QsIHdpdGhvdXQgYmxhbmsgbGluZXMgYmV0d2VlbiBpdGVtczsgYHRydWVgIHdoZW4gdW5zZXQuICovXG4gIHRpZ2h0PzogYm9vbGVhbiB8IG51bGxcbiAgLyoqIE51bWJlciB0aGUgbGlzdCBpbnN0ZWFkIG9mIGJ1bGxldGluZyBpdC4gKi9cbiAgb3JkZXJlZD86IGJvb2xlYW4gfCBudWxsXG4gIC8qKiBXaGF0IGVhY2ggbGluaydzIGZyYWdtZW50IHN0YXJ0cyB3aXRoLCBzdWNoIGFzIGB1c2VyLWNvbnRlbnQtYC4gKi9cbiAgcHJlZml4Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIHBhcmVudHMgd2hvc2UgaGVhZGluZ3MgYXJlIGxpc3RlZCwgYXMgYSB1bmlzdC11dGlsLWlzIHRlc3Q6IGEgbm9kZSB0eXBlLCBhbiBvYmplY3Qgb2YgZmllbGRzIGEgcGFyZW50IG11c3QgZXF1YWwsIG9yIGEgbGlzdCBvZiB0aGVzZTsgb25seSB0aGUgcm9vdCB3aGVuIHVuc2V0LiAqL1xuICBwYXJlbnRzPzogUGFyZW50VGVzdCB8IG51bGxcbn1cblxuLyoqIEEgdW5pc3QtdXRpbC1pcyB0ZXN0IG9mIGEgbm9kZSwgd3JpdHRlbiBhcyBKU09OOiBvbmUgY2hlY2ssIG9yIGEgbGlzdCBhbnkgb2Ygd2hpY2ggcGFzc2VzLiAqL1xuZXhwb3J0IHR5cGUgUGFyZW50VGVzdCA9IFBhcmVudENoZWNrIHwgUGFyZW50Q2hlY2tbXVxuXG4vKiogT25lIHVuaXN0LXV0aWwtaXMgY2hlY2s6IGEgbm9kZSB0eXBlLCBvciBmaWVsZHMgYSBub2RlIG11c3QgZXF1YWwuICovXG5leHBvcnQgdHlwZSBQYXJlbnRDaGVjayA9IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbi8qKiBgbWQuc3RyaW5naWZ5YDogbWRhc3QgaW50byBNYXJrZG93bjsgb3B0aW9ucyBuYW1lZCBhcyBtZGFzdC11dGlsLXRvLW1hcmtkb3duIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ2lmeU9wdGlvbnMge1xuICAvKiogVGhlIG1hcmtlciBvZiB1bm9yZGVyZWQgbGlzdCBpdGVtczogYCpgLCBgK2Agb3IgYC1gLiAqL1xuICBidWxsZXQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgbWFya2VyIG9mIG9yZGVyZWQgbGlzdCBpdGVtczogYC5gIG9yIGApYC4gKi9cbiAgYnVsbGV0T3JkZXJlZD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBtYXJrZXIgb2YgYSBsaXN0IHJpZ2h0IGFmdGVyIGEgbGlzdCB3aXRoIGBidWxsZXRgLiAqL1xuICBidWxsZXRPdGhlcj86IHN0cmluZyB8IG51bGxcbiAgLyoqIENsb3NlIEFUWCBoZWFkaW5ncyB3aXRoIGFzIG1hbnkgYCNgIGFzIHRoZXkgb3BlbiB3aXRoLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjbG9zZUF0eD86IGJvb2xlYW5cbiAgLyoqIFRoZSBtYXJrZXIgb2YgZW1waGFzaXM6IGAqYCBvciBgX2AuICovXG4gIGVtcGhhc2lzPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIG1hcmtlciBvZiBmZW5jZWQgY29kZTogYGAgYCBgYCBvciBgfmAuICovXG4gIGZlbmNlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogRmVuY2UgY29kZTsgYGZhbHNlYCBpbmRlbnRzIGl0IHdoZXJlIGl0IGNhbi4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBmZW5jZXM/OiBib29sZWFuXG4gIC8qKiBOdW1iZXIgb3JkZXJlZCBsaXN0IGl0ZW1zIHVwIGZyb20gYHN0YXJ0YC4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBpbmNyZW1lbnRMaXN0TWFya2VyPzogYm9vbGVhblxuICAvKiogSG93IGxpc3QgaXRlbSBjb250ZW50IGlzIGluZGVudGVkOiBgb25lYCwgYHRhYmAgb3IgYG1peGVkYC4gKi9cbiAgbGlzdEl0ZW1JbmRlbnQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgbWFya2VyIG9mIHRpdGxlczogYFwiYCBvciBgJ2AuICovXG4gIHF1b3RlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogV3JpdGUgbGlua3MgYXMgcmVzb3VyY2VzIGV2ZW4gd2hlcmUgYW4gYXV0b2xpbmsgd291bGQgZG8uIEBkZWZhdWx0IGZhbHNlICovXG4gIHJlc291cmNlTGluaz86IGJvb2xlYW5cbiAgLyoqIFRoZSBtYXJrZXIgb2YgdGhlbWF0aWMgYnJlYWtzOiBgKmAsIGAtYCBvciBgX2AuICovXG4gIHJ1bGU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBIb3cgbWFueSBtYXJrZXJzIGEgdGhlbWF0aWMgYnJlYWsgaGFzLCAzIG9yIG1vcmUuICovXG4gIHJ1bGVSZXBldGl0aW9uPzogbnVtYmVyIHwgbnVsbFxuICAvKiogUHV0IHNwYWNlcyBiZXR3ZWVuIHRoZSBtYXJrZXJzIG9mIGEgdGhlbWF0aWMgYnJlYWsuIEBkZWZhdWx0IGZhbHNlICovXG4gIHJ1bGVTcGFjZXM/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBoZWFkaW5ncyBvZiByYW5rIDEgYW5kIDIgYXMgc2V0ZXh0IGhlYWRpbmdzLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBzZXRleHQ/OiBib29sZWFuXG4gIC8qKiBUaGUgbWFya2VyIG9mIHN0cm9uZzogYCpgIG9yIGBfYC4gKi9cbiAgc3Ryb25nPzogc3RyaW5nIHwgbnVsbFxuICAvKiogSm9pbiBkZWZpbml0aW9ucyB3aXRoIG5vIGJsYW5rIGxpbmUgYmV0d2VlbiB0aGVtLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodERlZmluaXRpb25zPzogYm9vbGVhblxuICAvKiogRXh0cmEgcGF0dGVybnMgb2YgY2hhcmFjdGVycyB0byBlc2NhcGUuICovXG4gIHVuc2FmZT86IFVuc2FmZVBhdHRlcm5bXVxufVxuXG4vKiogQSBjaGFyYWN0ZXIgdG8gZXNjYXBlIHdoZXJlIGl0IHdvdWxkIG90aGVyd2lzZSBzdGFydCBvciBlbmQgc3ludGF4LiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbnNhZmVQYXR0ZXJuIHtcbiAgLyoqIFRoZSBjaGFyYWN0ZXIsIGVzY2FwZWQgYXMgYSByZWd1bGFyIGV4cHJlc3Npb24gd291bGQgbmVlZCBpdC4gQGRlZmF1bHQgXCJcIiAqL1xuICBjaGFyYWN0ZXI/OiBzdHJpbmdcbiAgLyoqIEEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgbXVzdCBtYXRjaCByaWdodCBiZWZvcmUgdGhlIGNoYXJhY3Rlci4gKi9cbiAgYmVmb3JlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtdXN0IG1hdGNoIHJpZ2h0IGFmdGVyIHRoZSBjaGFyYWN0ZXIuICovXG4gIGFmdGVyPzogc3RyaW5nIHwgbnVsbFxuICAvKiogT25seSBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lLCBhZnRlciBhbnkgaW5kZW50LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBhdEJyZWFrPzogYm9vbGVhblxuICAvKiogT25seSBpbnNpZGUgb25lIG9mIHRoZXNlIGNvbnN0cnVjdHMuICovXG4gIGluQ29uc3RydWN0PzogTmFtZXMgfCBudWxsXG4gIC8qKiBOZXZlciBpbnNpZGUgb25lIG9mIHRoZXNlIGNvbnN0cnVjdHMuICovXG4gIG5vdEluQ29uc3RydWN0PzogTmFtZXMgfCBudWxsXG4gIC8qKiBPbmx5IGF0IHRoZSBzdGFydCBvZiBhIG5vZGUgcmlnaHQgYWZ0ZXIgb25lIG9mIHRoZXNlIG5vZGUgdHlwZXMuICovXG4gIGJlZm9yZU5vZGU/OiBOYW1lcyB8IG51bGxcbiAgLyoqIE9ubHkgYXQgdGhlIGVuZCBvZiBhIG5vZGUgcmlnaHQgYmVmb3JlIG9uZSBvZiB0aGVzZSBub2RlIHR5cGVzLiAqL1xuICBhZnRlck5vZGU/OiBOYW1lcyB8IG51bGxcbiAgLyoqIFJlYWQgYGJlZm9yZWAgYW5kIGBhZnRlcmAgd2l0aCBVbmljb2RlIGNsYXNzZXMgc3VjaCBhcyBgXFxwe0x9YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdW5pY29kZT86IGJvb2xlYW5cbn1cblxuLyoqIGBtZC50b0h0bWxgOiBtZGFzdCBpbnRvIGhhc3Q7IG9wdGlvbnMgbmFtZWQgYXMgcmVtYXJrLXJlaHlwZSBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb0h0bWxPcHRpb25zIHtcbiAgLyoqIEtlZXAgcmF3IEhUTUwgaW4gdGhlIHRyZWUgaW5zdGVhZCBvZiBkcm9wcGluZyBpdC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dEYW5nZXJvdXNIdG1sPzogYm9vbGVhblxuICAvKiogV2hhdCBmb290bm90ZSBgaWRgcyBzdGFydCB3aXRoLCBzbyB0aGV5IGNhbm5vdCBjbG9iYmVyIHRoZSBwYWdlJ3M7IGB1c2VyLWNvbnRlbnQtYCB3aGVuIHVuc2V0LiAqL1xuICBjbG9iYmVyUHJlZml4Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIHRleHQgb2YgZWFjaCBmb290bm90ZSdzIGJhY2sgcmVmZXJlbmNlOyBg4oapYCwgbnVtYmVyZWQgZnJvbSB0aGUgc2Vjb25kLCB3aGVuIHVuc2V0LiAqL1xuICBmb290bm90ZUJhY2tDb250ZW50Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGBhcmlhLWxhYmVsYCBvZiBlYWNoIGZvb3Rub3RlJ3MgYmFjayByZWZlcmVuY2U7IGBCYWNrIHRvIHJlZmVyZW5jZSAxYCBhbmQgc28gb24gd2hlbiB1bnNldC4gKi9cbiAgZm9vdG5vdGVCYWNrTGFiZWw/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgaGVhZGluZyBvZiB0aGUgZm9vdG5vdGVzIHNlY3Rpb247IGBGb290bm90ZXNgIHdoZW4gdW5zZXQuICovXG4gIGZvb3Rub3RlTGFiZWw/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgdGFnIG5hbWUgb2YgdGhlIGZvb3Rub3RlcyBzZWN0aW9uJ3MgaGVhZGluZzsgYGgyYCB3aGVuIHVuc2V0LiAqL1xuICBmb290bm90ZUxhYmVsVGFnTmFtZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIE5vZGUgdHlwZXMgd2l0aG91dCBhIGhhbmRsZXIgdG8gY29weSBpbnRvIGhhc3QgYXMgdGhleSBhcmUsIHRoZWlyIGNoaWxkcmVuIGNvbnZlcnRlZC4gQGRlZmF1bHQgW10gKi9cbiAgcGFzc1Rocm91Z2g/OiBzdHJpbmdbXVxuICAvKiogQW4gYGFyaWEtbGFiZWxgIGZvciBlYWNoIHRhc2stbGlzdCBjaGVja2JveCwgc28gc2NyZWVuIHJlYWRlcnMgbmFtZSBpdDsgbm9uZSB3aGVuIGxlZnQgb3V0LCBhcyByZW1hcmstcmVoeXBlIHdyaXRlcyBub25lLiAqL1xuICB0YXNrTGlzdExhYmVscz86IFRhc2tMaXN0TGFiZWxzIHwgbnVsbFxufVxuXG4vKiogVGhlIGxhYmVscyBvZiB0YXNrLWxpc3QgY2hlY2tib3hlcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFza0xpc3RMYWJlbHMge1xuICAvKiogVGhlIGxhYmVsIG9mIGEgY2hlY2tlZCBib3gsIHN1Y2ggYXMgYENvbXBsZXRlZCB0YXNrYC4gKi9cbiAgY2hlY2tlZDogc3RyaW5nXG4gIC8qKiBUaGUgbGFiZWwgb2YgYW4gdW5jaGVja2VkIGJveCwgc3VjaCBhcyBgVGFza2AuICovXG4gIHVuY2hlY2tlZDogc3RyaW5nXG59XG5cbi8qKiBgbWQudG9OYXR1cmFsTGFuZ3VhZ2VgOiBtZGFzdCBpbnRvIG5sY3N0LCB0b2tlbml6ZWQgYnkgdGhlIHByb2Nlc3NvcidzIG5hdHVyYWwtbGFuZ3VhZ2UgcGFyc2VyOyBvcHRpb25zIG5hbWVkIGFzIHJlbWFyay1yZXRleHQgYW5kIG1kYXN0LXV0aWwtdG8tbmxjc3QgbmFtZSB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb05hdHVyYWxMYW5ndWFnZU9wdGlvbnMge1xuICAvKiogTm9kZSB0eXBlcyB0byBsZWF2ZSBvdXQsIGJlc2lkZXMgYHRhYmxlYCwgYHRhYmxlUm93YCBhbmQgYHRhYmxlQ2VsbGAuIEBkZWZhdWx0IFtdICovXG4gIGlnbm9yZT86IHN0cmluZ1tdXG4gIC8qKiBOb2RlIHR5cGVzIHRvIGtlZXAgYXMgb25lIGBTb3VyY2VOb2RlYCBvZiB0aGVpciBzb3VyY2UgdGV4dCwgYmVzaWRlcyBgaW5saW5lQ29kZWAuIEBkZWZhdWx0IFtdICovXG4gIHNvdXJjZT86IHN0cmluZ1tdXG59XG5cbi8qKiBUaGUgYG1kLnBhcnNlYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2Uob3B0aW9ucz86IFBhcnNlT3B0aW9ucyk6IFBsdWdpbjxcIm1kLnBhcnNlXCIsIFBhcnNlT3B0aW9ucz4gJiBQYXJzZXI8Um9vdD4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLnBhcnNlXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLnBhcnNlXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5kaXJlY3RpdmVgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXJlY3RpdmUob3B0aW9ucz86IERpcmVjdGl2ZU9wdGlvbnMpOiBQbHVnaW48XCJtZC5kaXJlY3RpdmVcIiwgRGlyZWN0aXZlT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLmRpcmVjdGl2ZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5kaXJlY3RpdmVcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLmdmbWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdmbShvcHRpb25zPzogR2ZtT3B0aW9ucyk6IFBsdWdpbjxcIm1kLmdmbVwiLCBHZm1PcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQuZ2ZtXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLmdmbVwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuZGVmaW5pdGlvbkxpc3RgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbml0aW9uTGlzdCgpOiBQbHVnaW48XCJtZC5kZWZpbml0aW9uTGlzdFwiPiB7XG4gIHJldHVybiB7IG5hbWU6IFwibWQuZGVmaW5pdGlvbkxpc3RcIiB9XG59XG5cbi8qKiBUaGUgYG1kLm1hdGhgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRoKG9wdGlvbnM/OiBNYXRoT3B0aW9ucyk6IFBsdWdpbjxcIm1kLm1hdGhcIiwgTWF0aE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5tYXRoXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLm1hdGhcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLm1keGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1keChvcHRpb25zPzogTWR4T3B0aW9ucyk6IFBsdWdpbjxcIm1kLm1keFwiLCBNZHhPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQubWR4XCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLm1keFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuZnJvbnRtYXR0ZXJgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9udG1hdHRlcihvcHRpb25zPzogRnJvbnRtYXR0ZXJPcHRpb25zKTogUGx1Z2luPFwibWQuZnJvbnRtYXR0ZXJcIiwgRnJvbnRtYXR0ZXJPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQuZnJvbnRtYXR0ZXJcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuZnJvbnRtYXR0ZXJcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLmdlbW9qaWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbW9qaSgpOiBQbHVnaW48XCJtZC5nZW1vamlcIj4ge1xuICByZXR1cm4geyBuYW1lOiBcIm1kLmdlbW9qaVwiIH1cbn1cblxuLyoqIFRoZSBgbWQuY29tcG9uZW50YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gY29tcG9uZW50KG9wdGlvbnM/OiBDb21wb25lbnRPcHRpb25zKTogUGx1Z2luPFwibWQuY29tcG9uZW50XCIsIENvbXBvbmVudE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5jb21wb25lbnRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuY29tcG9uZW50XCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5wYWNrYWdlQ29tbWFuZGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhY2thZ2VDb21tYW5kKG9wdGlvbnM/OiBQYWNrYWdlQ29tbWFuZE9wdGlvbnMpOiBQbHVnaW48XCJtZC5wYWNrYWdlQ29tbWFuZFwiLCBQYWNrYWdlQ29tbWFuZE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5wYWNrYWdlQ29tbWFuZFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5wYWNrYWdlQ29tbWFuZFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuaGVhZGluZ0lkYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gaGVhZGluZ0lkKG9wdGlvbnM/OiBIZWFkaW5nSWRPcHRpb25zKTogUGx1Z2luPFwibWQuaGVhZGluZ0lkXCIsIEhlYWRpbmdJZE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5oZWFkaW5nSWRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuaGVhZGluZ0lkXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5wYXRoUmV3cml0ZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhdGhSZXdyaXRlKG9wdGlvbnM/OiBQYXRoUmV3cml0ZU9wdGlvbnMpOiBQbHVnaW48XCJtZC5wYXRoUmV3cml0ZVwiLCBQYXRoUmV3cml0ZU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5wYXRoUmV3cml0ZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5wYXRoUmV3cml0ZVwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuc2hpZnRIZWFkaW5nYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gc2hpZnRIZWFkaW5nKG9wdGlvbnM/OiBTaGlmdEhlYWRpbmdPcHRpb25zKTogUGx1Z2luPFwibWQuc2hpZnRIZWFkaW5nXCIsIFNoaWZ0SGVhZGluZ09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5zaGlmdEhlYWRpbmdcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuc2hpZnRIZWFkaW5nXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5zdHJpcGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwKG9wdGlvbnM/OiBTdHJpcE9wdGlvbnMpOiBQbHVnaW48XCJtZC5zdHJpcFwiLCBTdHJpcE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5zdHJpcFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5zdHJpcFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQudG9jYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gdG9jKG9wdGlvbnM/OiBUb2NPcHRpb25zKTogUGx1Z2luPFwibWQudG9jXCIsIFRvY09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC50b2NcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQudG9jXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5zdHJpbmdpZnlgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkob3B0aW9ucz86IFN0cmluZ2lmeU9wdGlvbnMpOiBQbHVnaW48XCJtZC5zdHJpbmdpZnlcIiwgU3RyaW5naWZ5T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLnN0cmluZ2lmeVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5zdHJpbmdpZnlcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLnRvSHRtbGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSHRtbChvcHRpb25zPzogVG9IdG1sT3B0aW9ucyk6IFBsdWdpbjxcIm1kLnRvSHRtbFwiLCBUb0h0bWxPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQudG9IdG1sXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLnRvSHRtbFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQudG9OYXR1cmFsTGFuZ3VhZ2VgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hdHVyYWxMYW5ndWFnZShvcHRpb25zPzogVG9OYXR1cmFsTGFuZ3VhZ2VPcHRpb25zKTogUGx1Z2luPFwibWQudG9OYXR1cmFsTGFuZ3VhZ2VcIiwgVG9OYXR1cmFsTGFuZ3VhZ2VPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQudG9OYXR1cmFsTGFuZ3VhZ2VcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQudG9OYXR1cmFsTGFuZ3VhZ2VcIiwgb3B0aW9ucyB9XG59XG4iXX0=
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9nZW5lcmF0ZWQvbWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0VBQStFO0FBbWIvRSw2QkFBNkI7QUFDN0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFzQjtJQUMxQyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQTtJQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN0QyxDQUFDO0FBRUQsaUNBQWlDO0FBQ2pDLE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBMEI7SUFDbEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUE7SUFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDMUMsQ0FBQztBQUVELDJCQUEyQjtBQUMzQixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQW9CO0lBQ3RDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFBO0lBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3BDLENBQUM7QUFFRCxzQ0FBc0M7QUFDdEMsTUFBTSxVQUFVLGNBQWM7SUFDNUIsT0FBTyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxDQUFBO0FBQ3RDLENBQUM7QUFFRCw0QkFBNEI7QUFDNUIsTUFBTSxVQUFVLElBQUksQ0FBQyxPQUFxQjtJQUN4QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQTtJQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUNyQyxDQUFDO0FBRUQsMkJB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QUUsQ0FBQTtBQUN0QyxDQUFDO0FBRUQsMkJBQTJCO0FBQzNCLE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBb0I7SUFDdEMsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUE7SUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDcEMsQ0FBQztBQUVELGlDQUFpQztBQUNqQyxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQTBCO0lBQ2xELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFBO0lBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzFDLENBQUM7QUFFRCw4QkFBOEI7QUFDOUIsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUF1QjtJQUM1QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQTtJQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN2QyxDQUFDO0FBRUQseUNBQXlDO0FBQ3pDLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxPQUFrQztJQUNsRSxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxDQUFBO0lBQ2xFLE9BQU8sRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBieSBgcG5wbSBnZW5lcmF0ZTpiaW5kaW5nc2AgZnJvbSB0aGUgY3JhdGUncyBwbHVnaW5zOyBkbyBub3QgZWRpdC5cblxuaW1wb3J0IHR5cGUgeyBSb290IH0gZnJvbSBcIm1kYXN0XCJcbmltcG9ydCB0eXBlIHsgUGFyc2VyLCBQbHVnaW4gfSBmcm9tIFwiLi4vbW9kZWxzL3BsdWdpbi50c1wiXG5cbi8qKiBgbWQucGFyc2VgOiBNYXJrZG93biBpbnRvIG1kYXN0LiAqL1xuZXhwb3J0IHR5cGUgUGFyc2VPcHRpb25zID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuLyoqIGBtZC5kaXJlY3RpdmVgOiBnZW5lcmljIGRpcmVjdGl2ZXMsIGA6YWAsIGA6OmJgIGFuZCBgOjo6Y2AsIHJlYWQgYnkgYG1kLnBhcnNlYCBhbmQgd3JpdHRlbiBieSBgbWQuc3RyaW5naWZ5YDsgb3B0aW9ucyBuYW1lZCBhcyBtZGFzdC11dGlsLWRpcmVjdGl2ZSdzIHNlcmlhbGl6ZXIgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0aXZlT3B0aW9ucyB7XG4gIC8qKiBXcml0ZSBhbiBlbXB0eSBhdHRyaWJ1dGUgYXMgaXRzIG5hbWUgYWxvbmUsIGB7YX1gLCByYXRoZXIgdGhhbiBge2E9XCJcIn1gLiBAZGVmYXVsdCB0cnVlICovXG4gIGNvbGxhcHNlRW1wdHlBdHRyaWJ1dGVzPzogYm9vbGVhblxuICAvKiogV3JpdGUgYGlkYCBhbmQgYGNsYXNzYCBhcyBgI2FgIGFuZCBgLmJgIHdoZXJlIHRoZXkgY2FuIGJlLiBAZGVmYXVsdCB0cnVlICovXG4gIHByZWZlclNob3J0Y3V0PzogYm9vbGVhblxuICAvKiogTGVhdmUgYXR0cmlidXRlIHZhbHVlcyB1bnF1b3RlZCB3aGVyZSB0aGV5IGNhbiBiZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcHJlZmVyVW5xdW90ZWQ/OiBib29sZWFuXG4gIC8qKiBUaGUgcXVvdGUgb2YgYXR0cmlidXRlIHZhbHVlczogYFwiYCBvciBgJ2A7IGBtZC5zdHJpbmdpZnlgJ3MgYHF1b3RlYCB3aGVuIHVuc2V0LiAqL1xuICBxdW90ZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFVzZSB0aGUgb3RoZXIgcXVvdGUgd2hlbiB0aGUgcHJlZmVycmVkIG9uZSBvY2N1cnMgbW9yZSBvZnRlbiBpbiBhIHZhbHVlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBxdW90ZVNtYXJ0PzogYm9vbGVhblxufVxuXG4vKiogYG1kLmdmbWA6IEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93bidzIHN5bnRheCwgcmVhZCBieSBgbWQucGFyc2VgIGFuZCB3cml0dGVuIGJ5IGBtZC5zdHJpbmdpZnlgOyBvcHRpb25zIG5hbWVkIGFzIHJlbWFyay1nZm0gbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2ZtT3B0aW9ucyB7XG4gIC8qKiBMZXQgb25lIHRpbGRlLCBgfmF+YCwgZm9ybSBzdHJpa2V0aHJvdWdoLCBhcyB3ZWxsIGFzIHR3by4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBzaW5nbGVUaWxkZT86IGJvb2xlYW5cbiAgLyoqIFBhZCB0YWJsZSBjZWxscyB3aXRoIGEgc3BhY2Ugb24gZWFjaCBzaWRlIHdoZW4gd3JpdGluZyBNYXJrZG93bi4gQGRlZmF1bHQgdHJ1ZSAqL1xuICB0YWJsZUNlbGxQYWRkaW5nPzogYm9vbGVhblxuICAvKiogTGluZSB1cCB0YWJsZSBwaXBlcyB3aGVuIHdyaXRpbmcgTWFya2Rvd24uIEBkZWZhdWx0IHRydWUgKi9cbiAgdGFibGVQaXBlQWxpZ24/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBhIGZvb3Rub3RlIGRlZmluaXRpb24ncyBmaXJzdCBsaW5lIGJsYW5rIHdoZW4gaXQgaG9sZHMgZmxvdyBjb250ZW50LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBmaXJzdExpbmVCbGFuaz86IGJvb2xlYW5cbiAgLyoqIFJlbmRlciBHaXRIdWIgYWxlcnRzLCBhIGJsb2NrIHF1b3RlIG9wZW5pbmcgd2l0aCBgWyFOT1RFXWAsIGFzIEdpdEh1YiBkb2VzLCBhcyByZW1hcmstZ2l0aHViLWJsb2NrcXVvdGUtYWxlcnQgZG9lczogYHRydWVgLCBvciBpdHMgb3B0aW9ucy4gKi9cbiAgYWxlcnRzPzogQWxlcnRzIHwgbnVsbFxufVxuXG4vKiogYG1kLmdmbWAncyBgYWxlcnRzYDogb24sIG9yIG9uIHdpdGggcmVtYXJrLWdpdGh1Yi1ibG9ja3F1b3RlLWFsZXJ0J3Mgb3B0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIEFsZXJ0cyA9IGJvb2xlYW4gfCBBbGVydHNPcHRpb25zXG5cbi8qKiByZW1hcmstZ2l0aHViLWJsb2NrcXVvdGUtYWxlcnQncyBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGVydHNPcHRpb25zIHtcbiAgLyoqIFJlYWQgYSB0aXRsZSBhZnRlciB0aGUgdHlwZSwgYFshTk9URS9SZWFkIHRoaXNdYCwgaW4gcGxhY2Ugb2YgdGhlIHR5cGUncyBuYW1lLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBsZWdhY3lUaXRsZT86IGJvb2xlYW5cbiAgLyoqIFRoZSB0YWcgbmFtZSBvZiB0aGUgYWxlcnQncyBlbGVtZW50LiBAZGVmYXVsdCBcImRpdlwiICovXG4gIHRhZ05hbWU/OiBzdHJpbmdcbiAgLyoqIE1vcmUgY2xhc3NlcyBmb3IgdGhlIGFsZXJ0J3MgZWxlbWVudCwgc2VwYXJhdGVkIGJ5IHNwYWNlcy4gQGRlZmF1bHQgXCJcIiAqL1xuICBjbGFzc05hbWVzPzogc3RyaW5nXG59XG5cbi8qKiBgbWQubWF0aGA6IG1hdGggc3ludGF4LCBgJCRgIGJsb2NrcyBhbmQgYCRgIHRleHQsIHJlYWQgYnkgYG1kLnBhcnNlYCBhbmQgd3JpdHRlbiBieSBgbWQuc3RyaW5naWZ5YDsgb3B0aW9ucyBuYW1lZCBhcyByZW1hcmstbWF0aCBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRoT3B0aW9ucyB7XG4gIC8qKiBMZXQgb25lIGRvbGxhciwgYCRhJGAsIGZvcm0gbWF0aCBpbiB0ZXh0LCBhcyB3ZWxsIGFzIHR3by4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBzaW5nbGVEb2xsYXJUZXh0TWF0aD86IGJvb2xlYW5cbn1cblxuLyoqIGBtZC5tZHhgOiBNRFggc3ludGF4LCBKU1gsIGV4cHJlc3Npb25zIGFuZCBFU00sIHJlYWQgYnkgYG1kLnBhcnNlYCBhbmQgd3JpdHRlbiBieSBgbWQuc3RyaW5naWZ5YDsgaXQgdHVybnMgb2ZmIGluZGVudGVkIGNvZGUsIGF1dG9saW5rcyBhbmQgcmF3IEhUTUw7IG9wdGlvbnMgbmFtZWQgYXMgcmVtYXJrLW1keCBhbmQgbWRhc3QtdXRpbC1tZHgtanN4J3Mgc2VyaWFsaXplciBuYW1lIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIE1keE9wdGlvbnMge1xuICAvKiogVGhlIHF1b3RlIG9mIEpTWCBhdHRyaWJ1dGUgdmFsdWVzOiBgXCJgICh3aGVuIHVuc2V0KSBvciBgJ2AuICovXG4gIHF1b3RlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVXNlIHRoZSBvdGhlciBxdW90ZSB3aGVuIHRoZSBwcmVmZXJyZWQgb25lIG9jY3VycyBtb3JlIG9mdGVuIGluIGEgdmFsdWUuIEBkZWZhdWx0IGZhbHNlICovXG4gIHF1b3RlU21hcnQ/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBzZWxmLWNsb3NpbmcgdGFncyB3aXRob3V0IGEgc3BhY2UgYmVmb3JlIHRoZSBzbGFzaCwgYDxhLz5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodFNlbGZDbG9zaW5nPzogYm9vbGVhblxuICAvKiogVGhlIHdpZHRoIHBhc3Qgd2hpY2ggYSBmbG93IGVsZW1lbnQncyBhdHRyaWJ1dGVzIGdvIG9uIGxpbmVzIG9mIHRoZWlyIG93bi4gKi9cbiAgcHJpbnRXaWR0aD86IG51bWJlciB8IG51bGxcbn1cblxuLyoqIFRoZSBraW5kcyBvZiBtYXR0ZXIgdG8gcmVjb2duaXplLCBhcyByZW1hcmstZnJvbnRtYXR0ZXIgdGFrZXMgdGhlbSAoYSBwcmVzZXQsIGEgbWF0dGVyLCBvciBhIGxpc3Qgb2YgdGhlbTsgYHlhbWxgIHdoZW4gdW5zZXQpLCBvciB0ZXh0bGFuZSdzIG9wdGlvbnMgb2JqZWN0LiAqL1xuZXhwb3J0IHR5cGUgRnJvbnRtYXR0ZXJPcHRpb25zID0gXCJ5YW1sXCIgfCBcInRvbWxcIiB8IE1hdHRlciB8IChcInlhbWxcIiB8IFwidG9tbFwiIHwgTWF0dGVyKVtdIHwgRnJvbnRtYXR0ZXJTZXR0aW5nc1xuXG4vKiogT25lIGtpbmQgb2YgZnJvbnRtYXR0ZXI6IHRoZSBub2RlIGB0eXBlYCBpdCBiZWNvbWVzIGFuZCBpdHMgZmVuY2VzLCBhIGBtYXJrZXJgIHJlcGVhdGVkIHRocmVlIHRpbWVzIG9yIGEgd2hvbGUgYGZlbmNlYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF0dGVyIHtcbiAgdHlwZTogc3RyaW5nXG4gIG1hcmtlcj86IEZlbmNlXG4gIGZlbmNlPzogRmVuY2VcbiAgYW55d2hlcmU/OiBib29sZWFuXG59XG5cbi8qKiBEaWZmZXJlbnQgb3BlbmluZyBhbmQgY2xvc2luZyBmZW5jZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIEZlbmNlUGFpciB7XG4gIG9wZW46IHN0cmluZ1xuICBjbG9zZTogc3RyaW5nXG59XG5cbi8qKiBBIGZlbmNlLCBvciBpdHMgb3BlbmluZyBhbmQgY2xvc2luZyBvbmVzLiAqL1xuZXhwb3J0IHR5cGUgRmVuY2UgPSBzdHJpbmcgfCBGZW5jZVBhaXJcblxuLyoqIHRleHRsYW5lJ3Mgb3B0aW9uczogdGhlIG1hdHRlcnMsIGFuZCB3aGF0IHRvIGRvIHdpdGggWUFNTCBmcm9udG1hdHRlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnJvbnRtYXR0ZXJTZXR0aW5ncyB7XG4gIC8qKiBUaGUga2luZHMgb2YgbWF0dGVyIHRvIHJlY29nbml6ZSwgYXMgcmVtYXJrLWZyb250bWF0dGVyIHRha2VzIHRoZW07IGB5YW1sYCB3aGVuIHVuc2V0LiAqL1xuICBtYXR0ZXJzPzogXCJ5YW1sXCIgfCBcInRvbWxcIiB8IE1hdHRlciB8IChcInlhbWxcIiB8IFwidG9tbFwiIHwgTWF0dGVyKVtdXG4gIC8qKiBQYXJzZSB0aGUgWUFNTCBmcm9udG1hdHRlciBhIGRvY3VtZW50IHN0YXJ0cyB3aXRoIGludG8gYGZpbGUuZGF0YS5tYXR0ZXJgLCBge31gIHdoZW4gdGhlcmUgaXMgbm9uZSwgYXMgdmZpbGUtbWF0dGVyIGRvZXMuICovXG4gIGRhdGE/OiBib29sZWFuXG4gIC8qKiBSZW1vdmUgdGhlIFlBTUwgZnJvbnRtYXR0ZXIgYSBkb2N1bWVudCBzdGFydHMgd2l0aCBmcm9tIHRoZSB0cmVlLiAqL1xuICBzdHJpcD86IGJvb2xlYW5cbn1cblxuLyoqIGBtZC5nZW1vamlgOiBnZW1vamkgc2hvcnRjb2RlcywgYDpzbWlsZTpgLCBpbnRvIGVtb2ppLCBhcyByZW1hcmstZ2Vtb2ppIGRvZXM7IGl0cyBvcHRpb25zIGFyZSByZW1hcmstZW1vamkncy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2Vtb2ppT3B0aW9ucyB7XG4gIC8qKiBBbHNvIHR1cm4gZW1vdGljb25zIHN1Y2ggYXMgYDopYCBhbmQgYDotKGAgaW50byBlbW9qaSwgYXMgcmVtYXJrLWVtb2ppIGRvZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIGVtb3RpY29uPzogYm9vbGVhblxuICAvKiogV3JhcCBlYWNoIGVtb2ppIGluIGA8c3BhbiByb2xlPVwiaW1nXCIgYXJpYS1sYWJlbD1cIuKAplwiPmAsIGxhYmVsbGVkIHdpdGggaXRzIG5hbWUuIEBkZWZhdWx0IGZhbHNlICovXG4gIGFjY2Vzc2libGU/OiBib29sZWFuXG4gIC8qKiBQdXQgYSBzcGFjZSBhZnRlciBlYWNoIGVtb2ppLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBwYWRTcGFjZUFmdGVyPzogYm9vbGVhblxufVxuXG4vKiogYG1kLnNtYXJ0eXBhbnRzYDogc3RyYWlnaHQgcXVvdGVzLCBkYXNoZXMsIGRvdHMgYW5kIGJhY2t0aWNrcyBpbiBNYXJrZG93biB0ZXh0IGludG8gdHlwb2dyYXBoaWMgb25lcywgYXMgcmVtYXJrLXNtYXJ0eXBhbnRzIGRvZXM7IG9wdGlvbnMgYXMgcmV0ZXh0LXNtYXJ0eXBhbnRzIHRha2VzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0eXBhbnRzT3B0aW9ucyB7XG4gIC8qKiBUdXJuIGRvdWJsZSBiYWNrdGlja3MgYW5kIGRvdWJsZSBzdHJhaWdodCBzaW5nbGUgcXVvdGVzIGludG8gZG91YmxlIHF1b3RlczsgYGFsbGAgdHVybnMgc2luZ2xlIG9uZXMgaW50byBzaW5nbGUgcXVvdGVzIHRvby4gKi9cbiAgYmFja3RpY2tzPzogQmFja3RpY2tzXG4gIC8qKiBUaGUgY2xvc2luZyBxdW90ZXMgdG8gdXNlOiBg4oCdYCBhbmQgYOKAmWAgYnkgZGVmYXVsdC4gKi9cbiAgY2xvc2luZ1F1b3Rlcz86IFF1b3RlQ2hhcmFjdGVycyB8IG51bGxcbiAgLyoqIFR1cm4gdHdvIGRhc2hlcyBpbnRvIGFuIGVtIGRhc2g7IGBvbGRzY2hvb2xgIGFuZCBgaW52ZXJ0ZWRgIHRyZWF0IHRocmVlIHRvby4gKi9cbiAgZGFzaGVzPzogRGFzaGVzXG4gIC8qKiBUdXJuIHRocmVlIGRvdHMgaW50byBhbiBlbGxpcHNpcywgd2l0aCBzcGFjZXMgYmV0d2VlbiB0aGVtIG9yIHdpdGhvdXQuICovXG4gIGVsbGlwc2VzPzogRWxsaXBzZXNcbiAgLyoqIFRoZSBvcGVuaW5nIHF1b3RlcyB0byB1c2U6IGDigJxgIGFuZCBg4oCYYCBieSBkZWZhdWx0LiAqL1xuICBvcGVuaW5nUXVvdGVzPzogUXVvdGVDaGFyYWN0ZXJzIHwgbnVsbFxuICAvKiogVHVybiBzdHJhaWdodCBxdW90ZXMgaW50byBzbWFydCBvbmVzLiBAZGVmYXVsdCB0cnVlICovXG4gIHF1b3Rlcz86IGJvb2xlYW4gfCBudWxsXG59XG5cbmV4cG9ydCB0eXBlIEJhY2t0aWNrcyA9IGJvb2xlYW4gfCBcImFsbFwiXG5cbi8qKiBUaGUgcXVvdGUgY2hhcmFjdGVycyB0byB1c2UgZm9yIGRvdWJsZSBhbmQgc2luZ2xlIHF1b3Rlcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVvdGVDaGFyYWN0ZXJzIHtcbiAgZG91YmxlOiBzdHJpbmdcbiAgc2luZ2xlOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRGFzaGVzID0gYm9vbGVhbiB8IFwib2xkc2Nob29sXCIgfCBcImludmVydGVkXCJcblxuZXhwb3J0IHR5cGUgRWxsaXBzZXMgPSBib29sZWFuIHwgXCJzcGFjZWRcIiB8IFwidW5zcGFjZWRcIlxuXG4vKiogYG1kLmNvbXBvbmVudGA6IGRpcmVjdGl2ZXMsIEdpdEh1YiBhbGVydHMgYW5kIG90aGVyIG5vZGVzIGludG8gTURYIEpTWCBlbGVtZW50cywgdGhlIGNvbXBvbmVudHMgYW4gTURYIHJ1bnRpbWUgcmVuZGVycywgYnkgZGVjbGFyYXRpdmUgcnVsZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudE9wdGlvbnMge1xuICAvKiogUnVsZXMgZm9yIGRpcmVjdGl2ZXM7IHRoZSBmaXJzdCB0aGF0IG1hdGNoZXMgYSBkaXJlY3RpdmUgY29udmVydHMgaXQuICovXG4gIGRpcmVjdGl2ZXM/OiBEaXJlY3RpdmVSdWxlW11cbiAgLyoqIEdpdEh1YiBhbGVydHMsIGA+IFshTk9URV1gLCBpbnRvIGEgY29tcG9uZW50LiAqL1xuICBhbGVydHM/OiBBbGVydFJ1bGUgfCBudWxsXG4gIC8qKiBOb2RlIHR5cGVzLCBzdWNoIGFzIGBkZWZMaXN0YCwgaW50byBjb21wb25lbnRzIGtlZXBpbmcgdGhlaXIgY2hpbGRyZW4uIEBkZWZhdWx0IHt9ICovXG4gIG5vZGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAvKiogV2hhdCBiZWNvbWVzIG9mIGEgZGlyZWN0aXZlIG5vIHJ1bGUgY29udmVydHMuICovXG4gIHVua25vd25EaXJlY3RpdmVzPzogVW5rbm93bkRpcmVjdGl2ZXNcbiAgLyoqIFJ1bGVzIGZvciBmZW5jZWQgY29kZTsgdGhlIGZpcnN0IHRoYXQgbWF0Y2hlcyBhIGJsb2NrIGFwcGxpZXMuICovXG4gIGNvZGVzPzogQ29kZVJ1bGVbXVxufVxuXG4vKiogSG93IGBtZC5jb21wb25lbnRgIHR1cm5zIG1hdGNoaW5nIGRpcmVjdGl2ZXMgaW50byBvbmUgY29tcG9uZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RpdmVSdWxlIHtcbiAgLyoqIFRoZSBkaXJlY3RpdmUncyBuYW1lLCBvciBzZXZlcmFsLiAqL1xuICBuYW1lOiBOYW1lc1xuICAvKiogVGhlIGtpbmQgb2YgZGlyZWN0aXZlOiBgdGV4dGAsIGBsZWFmYCBvciBgY29udGFpbmVyYDsgYW55IHdoZW4gbGVmdCBvdXQuICovXG4gIGtpbmQ/OiBEaXJlY3RpdmVLaW5kIHwgbnVsbFxuICAvKiogQXR0cmlidXRlIHZhbHVlcyB0aGUgZGlyZWN0aXZlIG11c3QgaGF2ZS4gQGRlZmF1bHQge30gKi9cbiAgd2hlcmU/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIC8qKiBUaGUgY29tcG9uZW50OiBhIHRleHQgZWxlbWVudCBmb3IgYSB0ZXh0IGRpcmVjdGl2ZSwgZWxzZSBhIGZsb3cgZWxlbWVudC4gKi9cbiAgY29tcG9uZW50OiBzdHJpbmdcbiAgLyoqIFRoZSBhdHRyaWJ1dGUgdGhhdCBnZXRzIHRoZSBkaXJlY3RpdmUncyBuYW1lLiAqL1xuICBuYW1lQXM/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgYXR0cmlidXRlIHRoYXQgZ2V0cyB0aGUgbGFiZWwncyB0ZXh0OiBhIGNvbnRhaW5lcidzIGxhYmVsIHBhcmFncmFwaCBvciBhIHRleHQgb3IgbGVhZiBkaXJlY3RpdmUncyBjb250ZW50LCB3aGljaCBpcyB0aGVuIGRyb3BwZWQuICovXG4gIGxhYmVsQXM/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgbGFiZWwncyB0ZXh0IHdoZW4gdGhlcmUgaXMgbm9uZS4gKi9cbiAgbGFiZWxEZWZhdWx0Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGF0dHJpYnV0ZXMgdG8ga2VlcCwgaW4gb3JkZXI7IGV2ZXJ5IG9uZSwgYXMgd3JpdHRlbiwgd2hlbiBsZWZ0IG91dC4gKi9cbiAgYXR0cmlidXRlcz86IEF0dHJpYnV0ZVJ1bGVbXSB8IG51bGxcbiAgLyoqIEF0dHJpYnV0ZXMgd2l0aG91dCB3aGljaCB0aGUgZGlyZWN0aXZlIGlzIGxlZnQgdG8gYHVua25vd25EaXJlY3RpdmVzYC4gQGRlZmF1bHQgW10gKi9cbiAgcmVxdWlyZWQ/OiBzdHJpbmdbXVxuICAvKiogV3JhcCBydW5zIG9mIGFkamFjZW50IHNpYmxpbmdzIHRoaXMgcnVsZSBjb252ZXJ0ZWQgaW4gYW5vdGhlciBjb21wb25lbnQuICovXG4gIGdyb3VwPzogR3JvdXBSdWxlIHwgbnVsbFxuICAvKiogVGhlIGF0dHJpYnV0ZSB0aGF0IGdldHMgdGhlIGxpc3RzIG9mIGEgY29udGFpbmVyIGRpcmVjdGl2ZSBhcyBhIGZpbGUgdHJlZSwgSlNPTiBpdGVtcyBge25hbWUsIHR5cGUsIGNvbW1lbnQ/LCBoaWdobGlnaHRlZD8sIGNoaWxkcmVuP31gOyB0aGUgbGlzdHMgbGVhdmUgaXRzIGNvbnRlbnQuICovXG4gIHRyZWVBcz86IHN0cmluZyB8IG51bGxcbn1cblxuLyoqIE9uZSBuYW1lIG9yIHNldmVyYWwuICovXG5leHBvcnQgdHlwZSBOYW1lcyA9IHN0cmluZyB8IHN0cmluZ1tdXG5cbi8qKiBBIGRpcmVjdGl2ZSdzIGtpbmQsIGJ5IGhvdyBtYW55IGNvbG9ucyBvcGVuIGl0LiAqL1xuZXhwb3J0IHR5cGUgRGlyZWN0aXZlS2luZCA9IFwidGV4dFwiIHwgXCJsZWFmXCIgfCBcImNvbnRhaW5lclwiXG5cbi8qKiBBbiBhdHRyaWJ1dGUgdG8ga2VlcDogaXRzIG5hbWUsIG9yIGl0cyBuYW1lIHdpdGggd2hhdCB0byBjYWxsIGl0IGFuZCBhIGRlZmF1bHQuICovXG5leHBvcnQgdHlwZSBBdHRyaWJ1dGVSdWxlID0gc3RyaW5nIHwgeyBuYW1lOiBzdHJpbmc7IHJlbmFtZT86IHN0cmluZyB8IG51bGw7IGRlZmF1bHQ/OiBzdHJpbmcgfCBudWxsIH1cblxuLyoqIFRoZSBjb21wb25lbnQgd3JhcHBpbmcgYSBydW4gb2YgYWRqYWNlbnQgc2libGluZ3Mgb25lIHJ1bGUgY29udmVydGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcm91cFJ1bGUge1xuICAvKiogVGhlIHdyYXBwaW5nIGNvbXBvbmVudC4gKi9cbiAgY29tcG9uZW50OiBzdHJpbmdcbiAgLyoqIFRoZSBzaG9ydGVzdCBydW4gd3JhcHBlZDsgMiB3aGVuIGxlZnQgb3V0LiAqL1xuICBtaW4/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBBdHRyaWJ1dGVzIHRoZSB3cmFwcGVyIGNvcGllcyBmcm9tIHRoZSBydW4ncyBmaXJzdCBlbGVtZW50LiBAZGVmYXVsdCBbXSAqL1xuICBpbmhlcml0Pzogc3RyaW5nW11cbn1cblxuLyoqIEhvdyBgbWQuY29tcG9uZW50YCB0dXJucyBHaXRIdWIgYWxlcnRzLCBhIGJsb2NrIHF1b3RlIG9wZW5pbmcgd2l0aCBgWyFUWVBFXWAsIGludG8gYSBjb21wb25lbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsZXJ0UnVsZSB7XG4gIC8qKiBUaGUgY29tcG9uZW50IGFuIGFsZXJ0IGJlY29tZXMuICovXG4gIGNvbXBvbmVudDogc3RyaW5nXG4gIC8qKiBUaGUgYXR0cmlidXRlIHRoYXQgZ2V0cyB0aGUgYWxlcnQncyB0eXBlLiAqL1xuICB0eXBlQXM6IHN0cmluZ1xuICAvKiogRWFjaCBhbGVydCB0eXBlLCBhcyB3cml0dGVuLCB0byB0aGUgdmFsdWUgb2YgYHR5cGVBc2A7IG90aGVyIHR5cGVzIHN0YXkgYmxvY2sgcXVvdGVzLiAqL1xuICB0eXBlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxufVxuXG4vKiogV2hhdCBgbWQuY29tcG9uZW50YCBkb2VzIHdpdGggYSBkaXJlY3RpdmUgbm8gcnVsZSBjb252ZXJ0cy4gKi9cbmV4cG9ydCB0eXBlIFVua25vd25EaXJlY3RpdmVzID0gXCJrZWVwXCIgfCBcInNvdXJjZVwiXG5cbi8qKiBIb3cgYG1kLmNvbXBvbmVudGAgdHVybnMgbWF0Y2hpbmcgY29kZSBibG9ja3MgaW50byBhIGNvbXBvbmVudCwgb3IgZ3JvdXBzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIENvZGVSdWxlIHtcbiAgLyoqIFRoZSBibG9jaydzIGxhbmd1YWdlLCBvciBzZXZlcmFsOyBhbnkgd2hlbiBsZWZ0IG91dC4gKi9cbiAgbGFuZz86IE5hbWVzIHwgbnVsbFxuICAvKiogQSBga2V5PVwidmFsdWVcImAgdGhlIGJsb2NrJ3MgbWV0YSBtdXN0IGhvbGQuICovXG4gIG1ldGE/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgY29tcG9uZW50IHRoZSBibG9jayBiZWNvbWVzOyBsZWZ0IG91dCwgdGhlIGJsb2NrIHN0YXlzIGNvZGUgYW5kIG9ubHkgZ3JvdXBzLiAqL1xuICBjb21wb25lbnQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgYXR0cmlidXRlIHRoYXQgZ2V0cyB0aGUgY29kZTsgbGVmdCBvdXQsIHRoZSBjb2RlIGlzIHRoZSBjb21wb25lbnQncyB0ZXh0LiAqL1xuICB2YWx1ZUFzPzogc3RyaW5nIHwgbnVsbFxuICAvKiogTWV0YSBga2V5PVwidmFsdWVcImAgcGFpcnMgdG8ga2VlcCBhcyBhdHRyaWJ1dGVzLCBpbiBvcmRlci4gKi9cbiAgYXR0cmlidXRlcz86IEF0dHJpYnV0ZVJ1bGVbXVxuICAvKiogV3JhcCBydW5zIG9mIGFkamFjZW50IGJsb2NrcyB0aGlzIHJ1bGUgbWF0Y2hlZCBpbiBhbm90aGVyIGNvbXBvbmVudC4gKi9cbiAgZ3JvdXA/OiBDb2RlR3JvdXBSdWxlIHwgbnVsbFxufVxuXG4vKiogVGhlIGNvbXBvbmVudCB3cmFwcGluZyBhIHJ1biBvZiBhZGphY2VudCBjb2RlIGJsb2NrcyBvbmUgcnVsZSBtYXRjaGVkOyB0aGUgbWV0YSBrZXlzIGl0IHJlYWRzIGFyZSB0YWtlbiBvdXQgb2YgZWFjaCBibG9jaydzIG1ldGEuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZGVHcm91cFJ1bGUge1xuICAvKiogVGhlIHdyYXBwaW5nIGNvbXBvbmVudC4gKi9cbiAgY29tcG9uZW50OiBzdHJpbmdcbiAgLyoqIFRoZSBzaG9ydGVzdCBydW4gd3JhcHBlZDsgMiB3aGVuIGxlZnQgb3V0LiAqL1xuICBtaW4/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBUaGUgYXR0cmlidXRlIHRoYXQgZ2V0cyB0aGUgcnVuJ3MgdmFsdWVzIG9mIHRoZSBydWxlJ3MgYG1ldGFgIGtleSwgYXMgYSBKU09OIGxpc3QuICovXG4gIGNvbGxlY3Q/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBNZXRhIGtleXMgdGhlIHdyYXBwZXIgY29waWVzIGZyb20gdGhlIHJ1bidzIGZpcnN0IGJsb2NrIGFzIGF0dHJpYnV0ZXMuIEBkZWZhdWx0IFtdICovXG4gIGluaGVyaXQ/OiBzdHJpbmdbXVxufVxuXG4vKiogYG1kLnBhY2thZ2VDb21tYW5kYDogYSBmZW5jZWQgYmxvY2sgb2YgcGFja2FnZS1tYW5hZ2VyIGNvbW1hbmRzLCBpdHMgbGFuZ3VhZ2UgbmFtaW5nIHRoZSBlY29zeXN0ZW0gKGBucG1gLCBgcGlwYCwgYGNhcmdvYCksIGludG8gb25lIGNvbXBvbmVudCB3aXRoIHRoZSBjb21tYW5kcyBjb252ZXJ0ZWQgZm9yIGVhY2ggbWFuYWdlciwgYXMgYEBkb2N1c2F1cnVzL3JlbWFyay1wbHVnaW4tbnBtMnlhcm5gIGRvZXMgZm9yIG5wbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZUNvbW1hbmRPcHRpb25zIHtcbiAgLyoqIFRoZSBjb21wb25lbnQgYSBibG9jayBiZWNvbWVzOyBvbmUgc3RyaW5nIGF0dHJpYnV0ZSBwZXIgbWFuYWdlci4gQGRlZmF1bHQgXCJQYWNrYWdlVGFic1wiICovXG4gIGNvbXBvbmVudD86IHN0cmluZ1xuICAvKiogRWFjaCBlY29zeXN0ZW0ncyBtYW5hZ2VycywgaW4gYXR0cmlidXRlIG9yZGVyOyBhbiBlbXB0eSBsaXN0IGxlYXZlcyBpdHMgYmxvY2tzIGNvZGUuICovXG4gIGVjb3N5c3RlbXM/OiBFY29zeXN0ZW1zXG59XG5cbi8qKiBUaGUgbWFuYWdlcnMgYG1kLnBhY2thZ2VDb21tYW5kYCBjb252ZXJ0cyBlYWNoIGVjb3N5c3RlbSdzIGNvbW1hbmRzIGZvci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWNvc3lzdGVtcyB7XG4gIC8qKiBNYW5hZ2VycyBmb3IgYG5wbWAgYmxvY2tzLCBjb252ZXJ0ZWQgYXMgbnBtLXRvLXlhcm4gY29udmVydHM7IG5wbSwgcG5wbSwgeWFybiBhbmQgYnVuIGJ5IGRlZmF1bHQuICovXG4gIG5wbT86IE5wbU1hbmFnZXJbXVxuICAvKiogTWFuYWdlcnMgZm9yIGBwaXBgIGJsb2NrczsgcGlwLCB1diwgcG9ldHJ5IGFuZCBwZG0gYnkgZGVmYXVsdC4gKi9cbiAgcGlwPzogUGlwTWFuYWdlcltdXG4gIC8qKiBNYW5hZ2VycyBmb3IgYGNhcmdvYCBibG9ja3M7IGNhcmdvIGFuZCBjYXJnby1iaW5zdGFsbCBieSBkZWZhdWx0LiAqL1xuICBjYXJnbz86IENhcmdvTWFuYWdlcltdXG59XG5cbi8qKiBBIEphdmFTY3JpcHQgcGFja2FnZSBtYW5hZ2VyIGFuIGBucG1gIGNvbW1hbmQgY29udmVydHMgdG8uICovXG5leHBvcnQgdHlwZSBOcG1NYW5hZ2VyID0gXCJucG1cIiB8IFwicG5wbVwiIHwgXCJ5YXJuXCIgfCBcImJ1blwiIHwgXCJkZW5vXCIgfCBcIm51YlwiXG5cbi8qKiBBIFB5dGhvbiBwYWNrYWdlIG1hbmFnZXIgYSBgcGlwYCBjb21tYW5kIGNvbnZlcnRzIHRvLiAqL1xuZXhwb3J0IHR5cGUgUGlwTWFuYWdlciA9IFwicGlwXCIgfCBcInV2XCIgfCBcInBvZXRyeVwiIHwgXCJwZG1cIlxuXG4vKiogQSBSdXN0IGluc3RhbGxlciBhIGBjYXJnb2AgY29tbWFuZCBjb252ZXJ0cyB0by4gKi9cbmV4cG9ydCB0eXBlIENhcmdvTWFuYWdlciA9IFwiY2FyZ29cIiB8IFwiY2FyZ28tYmluc3RhbGxcIlxuXG4vKiogYG1kLmhlYWRpbmdJZGA6IGB7I2lkfWAgYXQgdGhlIGVuZCBvZiBhIGhlYWRpbmcsIGFmdGVyIGEgc3BhY2UsIGFzIGl0cyBpZCwgYXMgcmVtYXJrLWhlYWRpbmctaWQgcmVhZHMgaXQ7IGhlYWRpbmdzIHdpdGhvdXQgb25lIGtlZXAgbm9uZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGluZ0lkT3B0aW9ucyB7XG4gIC8qKiBSZWFkIGEgd2hvbGUgYXR0cmlidXRlIGxpc3QsIGB7I2lkIC5jbGFzcyBrZXk9dmFsdWUga2V5PVwidiB3XCJ9YCwgYXMgZGlyZWN0aXZlcyB3cml0ZSB0aGVpcnM6IGNsYXNzZXMgYmVjb21lIGBjbGFzc05hbWVgIGFuZCBvdGhlciBrZXlzIHByb3BlcnRpZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIGF0dHJpYnV0ZXM/OiBib29sZWFuXG4gIC8qKiBMaXRlcmFsIHN1ZmZpeGVzLCBzdWNoIGFzIGBbc3RlcF1gLCBzdHJpcHBlZCBmcm9tIGEgaGVhZGluZydzIGVuZCBmb3IgdGhlIGF0dHJpYnV0ZXMgZWFjaCBuYW1lcywgYSB2YWx1ZSBvciBgdHJ1ZWAgZm9yIGEgYmFyZSBvbmU6IGB7XCJbc3RlcF1cIjoge1wiZGF0YS1zdGVwXCI6IHRydWV9fWAuICovXG4gIG1hcmtlcnM/OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBNYXJrZXJWYWx1ZT4+XG59XG5cbi8qKiBBbiBhdHRyaWJ1dGUgYSBoZWFkaW5nIG1hcmtlciBzZXRzOiBpdHMgdmFsdWUsIG9yIGB0cnVlYCBmb3IgdGhlIGJhcmUgYXR0cmlidXRlLiAqL1xuZXhwb3J0IHR5cGUgTWFya2VyVmFsdWUgPSBib29sZWFuIHwgc3RyaW5nXG5cbi8qKiBgbWQucGF0aFJld3JpdGVgOiB0aGUgVVJMcyBvZiBpbWFnZXMsIGxpbmtzIGFuZCBkZWZpbml0aW9ucyBhcyBhIHNpdGUgc2VydmVzIHRoZW06IHJlbGF0aXZlIG9uZXMgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgZmlsZSdzIHBhdGggYW5kIG1hZGUgcm9vdC1yZWxhdGl2ZSwgZXZlcnkgcm9vdC1yZWxhdGl2ZSBvbmUgdW5kZXIgYGJhc2VgLCBhbmQgbGlua3MgdG8gTWFya2Rvd24gZmlsZXMgdHVybmVkIGludG8gcGFnZSBVUkxzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXRoUmV3cml0ZU9wdGlvbnMge1xuICAvKiogVGhlIGRpcmVjdG9yeSBVUkxzIGNvdW50IGZyb20sIGFzIHRoZSBmaWxlJ3MgcGF0aCBzcGVsbHMgaXQ7IHRoZSBwYXRoJ3Mgb3duIHN0YXJ0aW5nIHBvaW50IHdoZW4gbGVmdCBvdXQuICovXG4gIHJvb3Q/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgVVJMIHRoZSBzaXRlIGlzIHNlcnZlZCBhdCwgc3VjaCBhcyBgL2RvY3NgLCBwdXQgYmVmb3JlIGV2ZXJ5IHJvb3QtcmVsYXRpdmUgVVJMIG9uY2UuICovXG4gIGJhc2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgbm9kZXMgd2hvc2UgVVJMcyBhcmUgcmV3cml0dGVuOyBpbWFnZXMsIGxpbmtzIGFuZCBkZWZpbml0aW9ucyB3aGVuIGxlZnQgb3V0LiAqL1xuICBub2Rlcz86IFVybE5vZGVbXSB8IG51bGxcbiAgLyoqIE1hcmtkb3duIGZpbGVzLCByZWxhdGl2ZSB0byBgcm9vdGAsIHRvIHRoZSBVUkwgb2YgdGhlaXIgcGFnZTsgYSBsaW5rIHRvIG9uZSBvZiB0aGVtIHRha2VzIGl0LCBiZWZvcmUgYG1hcmtkb3duTGlua3NgIGFwcGxpZXMuIEBkZWZhdWx0IHt9ICovXG4gIHBhZ2VzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAvKiogSG93IGEgbGluayB0byBhIE1hcmtkb3duIGZpbGUgbm8gcGFnZSBuYW1lcyBiZWNvbWVzIGEgVVJMLiAqL1xuICBtYXJrZG93bkxpbmtzPzogTWFya2Rvd25MaW5rc1xufVxuXG4vKiogQSBub2RlIHdpdGggYSBVUkwuICovXG5leHBvcnQgdHlwZSBVcmxOb2RlID0gXCJpbWFnZVwiIHwgXCJsaW5rXCIgfCBcImRlZmluaXRpb25cIlxuXG4vKiogSG93IGEgbGluayB0byBhIE1hcmtkb3duIGZpbGUgYmVjb21lcyBhIFVSTC4gKi9cbmV4cG9ydCB0eXBlIE1hcmtkb3duTGlua3MgPSBcImtlZXBcIiB8IFwiZGlyZWN0b3J5XCIgfCBcImh0bWxcIlxuXG4vKiogYG1kLnNoaWZ0SGVhZGluZ2A6IGV2ZXJ5IGhlYWRpbmcncyBkZXB0aCBtb3ZlZCBieSBgc2hpZnRgIGFuZCBrZXB0IHdpdGhpbiAxIHRvIDYsIGFzIHJlaHlwZS1zaGlmdC1oZWFkaW5nIG1vdmVzIGhhc3QncywgYWZ0ZXIgdGhlIGRvY3VtZW50J3MgdGl0bGUgaXMgZHJvcHBlZCB3aGVuIGFza2VkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaGlmdEhlYWRpbmdPcHRpb25zIHtcbiAgLyoqIFRoZSBsZXZlbHMgYWRkZWQgdG8gZWFjaCBoZWFkaW5nJ3MgZGVwdGg6IGAtMWAgbWFrZXMgYW4gaDIgYW4gaDEsIGAxYCBhbiBoMSBhbiBoMi4gQGRlZmF1bHQgMCAqL1xuICBzaGlmdD86IG51bWJlclxuICAvKiogRHJvcCB0aGUgZG9jdW1lbnQncyBmaXJzdCBub2RlIHdoZW4gaXQgaXMgYW4gaDEsIGxvb2tpbmcgcGFzdCBmcm9udG1hdHRlciBhbmQgRVNNLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBkcm9wVGl0bGU/OiBib29sZWFuXG59XG5cbi8qKiBgbWQuc3RyaXBgOiBtZGFzdCBkb3duIHRvIGl0cyB0ZXh0LCBhcyBzdHJpcC1tYXJrZG93biBkb2VzOiBjb2RlLCBIVE1MLCB0YWJsZXMgYW5kIHRoZSBsaWtlIGRyb3BwZWQsIGhlYWRpbmdzIG1hZGUgcGFyYWdyYXBocywgZm9ybWF0dGluZyB1bndyYXBwZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmlwT3B0aW9ucyB7XG4gIC8qKiBOb2RlIHR5cGVzIHRvIGxlYXZlIGFzIHRoZXkgYXJlLCBzdWNoIGFzIGBpbmxpbmVDb2RlYC4gQGRlZmF1bHQgW10gKi9cbiAga2VlcD86IHN0cmluZ1tdXG4gIC8qKiBOb2RlIHR5cGVzIHRvIGRyb3AsIGJlc2lkZXMgdGhvc2Ugc3RyaXAtbWFya2Rvd24gZHJvcHMuIEBkZWZhdWx0IFtdICovXG4gIHJlbW92ZT86IHN0cmluZ1tdXG59XG5cbi8qKiBgbWQudG9jYDogYSB0YWJsZSBvZiBjb250ZW50cyB1bmRlciB0aGUgZmlyc3QgaGVhZGluZyBtYXRjaGluZyBgaGVhZGluZ2AsIHJlcGxhY2luZyB3aGF0IHNhdCBiZXR3ZWVuIGl0IGFuZCB0aGUgbmV4dCBoZWFkaW5nIGFzIGRlZXAgb3Igc2hhbGxvd2VyLCBhcyByZW1hcmstdG9jIG1ha2VzIGl0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb2NPcHRpb25zIHtcbiAgLyoqIFRoZSBoZWFkaW5nIHRvIHB1dCB0aGUgdGFibGUgdW5kZXIsIGFzIEphdmFTY3JpcHQgcmVndWxhciBleHByZXNzaW9uIHNvdXJjZSBtYXRjaGVkIGFnYWluc3QgaXRzIHdob2xlIHRleHQsIGNhc2UtaW5zZW5zaXRpdmVseTsgYCh0YWJsZVsgLV1vZlsgLV0pP2NvbnRlbnRzP3x0b2NgIHdoZW4gdW5zZXQuICovXG4gIGhlYWRpbmc/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgZGVlcGVzdCBoZWFkaW5nIHJhbmsgdG8gbGlzdCwgMSB0byA2LiAqL1xuICBtYXhEZXB0aD86IG51bWJlciB8IG51bGxcbiAgLyoqIFRoZSBzaGFsbG93ZXN0IGhlYWRpbmcgcmFuayB0byBsaXN0LCAxIHRvIDYuICovXG4gIG1pbkRlcHRoPzogbnVtYmVyIHwgbnVsbFxuICAvKiogSGVhZGluZ3MgdG8gbGVhdmUgb3V0LCBhcyBKYXZhU2NyaXB0IHJlZ3VsYXIgZXhwcmVzc2lvbiBzb3VyY2UgbWF0Y2hlZCBhZ2FpbnN0IHRoZWlyIHdob2xlIHRleHQsIGNhc2UtaW5zZW5zaXRpdmVseS4gKi9cbiAgc2tpcD86IHN0cmluZyB8IG51bGxcbiAgLyoqIEtlZXAgdGhlIGxpc3QgY29tcGFjdCwgd2l0aG91dCBibGFuayBsaW5lcyBiZXR3ZWVuIGl0ZW1zOyBgdHJ1ZWAgd2hlbiB1bnNldC4gKi9cbiAgdGlnaHQ/OiBib29sZWFuIHwgbnVsbFxuICAvKiogTnVtYmVyIHRoZSBsaXN0IGluc3RlYWQgb2YgYnVsbGV0aW5nIGl0LiAqL1xuICBvcmRlcmVkPzogYm9vbGVhbiB8IG51bGxcbiAgLyoqIFdoYXQgZWFjaCBsaW5rJ3MgZnJhZ21lbnQgc3RhcnRzIHdpdGgsIHN1Y2ggYXMgYHVzZXItY29udGVudC1gLiAqL1xuICBwcmVmaXg/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgcGFyZW50cyB3aG9zZSBoZWFkaW5ncyBhcmUgbGlzdGVkLCBhcyBhIHVuaXN0LXV0aWwtaXMgdGVzdDogYSBub2RlIHR5cGUsIGFuIG9iamVjdCBvZiBmaWVsZHMgYSBwYXJlbnQgbXVzdCBlcXVhbCwgb3IgYSBsaXN0IG9mIHRoZXNlOyBvbmx5IHRoZSByb290IHdoZW4gdW5zZXQuICovXG4gIHBhcmVudHM/OiBQYXJlbnRUZXN0IHwgbnVsbFxufVxuXG4vKiogQSB1bmlzdC11dGlsLWlzIHRlc3Qgb2YgYSBub2RlLCB3cml0dGVuIGFzIEpTT046IG9uZSBjaGVjaywgb3IgYSBsaXN0IGFueSBvZiB3aGljaCBwYXNzZXMuICovXG5leHBvcnQgdHlwZSBQYXJlbnRUZXN0ID0gUGFyZW50Q2hlY2sgfCBQYXJlbnRDaGVja1tdXG5cbi8qKiBPbmUgdW5pc3QtdXRpbC1pcyBjaGVjazogYSBub2RlIHR5cGUsIG9yIGZpZWxkcyBhIG5vZGUgbXVzdCBlcXVhbC4gKi9cbmV4cG9ydCB0eXBlIFBhcmVudENoZWNrID0gc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuLyoqIGBtZC5zdHJpbmdpZnlgOiBtZGFzdCBpbnRvIE1hcmtkb3duOyBvcHRpb25zIG5hbWVkIGFzIG1kYXN0LXV0aWwtdG8tbWFya2Rvd24gbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5naWZ5T3B0aW9ucyB7XG4gIC8qKiBUaGUgbWFya2VyIG9mIHVub3JkZXJlZCBsaXN0IGl0ZW1zOiBgKmAsIGArYCBvciBgLWAuICovXG4gIGJ1bGxldD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBtYXJrZXIgb2Ygb3JkZXJlZCBsaXN0IGl0ZW1zOiBgLmAgb3IgYClgLiAqL1xuICBidWxsZXRPcmRlcmVkPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIG1hcmtlciBvZiBhIGxpc3QgcmlnaHQgYWZ0ZXIgYSBsaXN0IHdpdGggYGJ1bGxldGAuICovXG4gIGJ1bGxldE90aGVyPzogc3RyaW5nIHwgbnVsbFxuICAvKiogQ2xvc2UgQVRYIGhlYWRpbmdzIHdpdGggYXMgbWFueSBgI2AgYXMgdGhleSBvcGVuIHdpdGguIEBkZWZhdWx0IGZhbHNlICovXG4gIGNsb3NlQXR4PzogYm9vbGVhblxuICAvKiogVGhlIG1hcmtlciBvZiBlbXBoYXNpczogYCpgIG9yIGBfYC4gKi9cbiAgZW1waGFzaXM/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgbWFya2VyIG9mIGZlbmNlZCBjb2RlOiBgYCBgIGBgIG9yIGB+YC4gKi9cbiAgZmVuY2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBGZW5jZSBjb2RlOyBgZmFsc2VgIGluZGVudHMgaXQgd2hlcmUgaXQgY2FuLiBAZGVmYXVsdCB0cnVlICovXG4gIGZlbmNlcz86IGJvb2xlYW5cbiAgLyoqIE51bWJlciBvcmRlcmVkIGxpc3QgaXRlbXMgdXAgZnJvbSBgc3RhcnRgLiBAZGVmYXVsdCB0cnVlICovXG4gIGluY3JlbWVudExpc3RNYXJrZXI/OiBib29sZWFuXG4gIC8qKiBIb3cgbGlzdCBpdGVtIGNvbnRlbnQgaXMgaW5kZW50ZWQ6IGBvbmVgLCBgdGFiYCBvciBgbWl4ZWRgLiAqL1xuICBsaXN0SXRlbUluZGVudD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBtYXJrZXIgb2YgdGl0bGVzOiBgXCJgIG9yIGAnYC4gKi9cbiAgcXVvdGU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBXcml0ZSBsaW5rcyBhcyByZXNvdXJjZXMgZXZlbiB3aGVyZSBhbiBhdXRvbGluayB3b3VsZCBkby4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcmVzb3VyY2VMaW5rPzogYm9vbGVhblxuICAvKiogVGhlIG1hcmtlciBvZiB0aGVtYXRpYyBicmVha3M6IGAqYCwgYC1gIG9yIGBfYC4gKi9cbiAgcnVsZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIEhvdyBtYW55IG1hcmtlcnMgYSB0aGVtYXRpYyBicmVhayBoYXMsIDMgb3IgbW9yZS4gKi9cbiAgcnVsZVJlcGV0aXRpb24/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBQdXQgc3BhY2VzIGJldHdlZW4gdGhlIG1hcmtlcnMgb2YgYSB0aGVtYXRpYyBicmVhay4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcnVsZVNwYWNlcz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGhlYWRpbmdzIG9mIHJhbmsgMSBhbmQgMiBhcyBzZXRleHQgaGVhZGluZ3MuIEBkZWZhdWx0IGZhbHNlICovXG4gIHNldGV4dD86IGJvb2xlYW5cbiAgLyoqIFRoZSBtYXJrZXIgb2Ygc3Ryb25nOiBgKmAgb3IgYF9gLiAqL1xuICBzdHJvbmc/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBKb2luIGRlZmluaXRpb25zIHdpdGggbm8gYmxhbmsgbGluZSBiZXR3ZWVuIHRoZW0uIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0RGVmaW5pdGlvbnM/OiBib29sZWFuXG4gIC8qKiBFeHRyYSBwYXR0ZXJucyBvZiBjaGFyYWN0ZXJzIHRvIGVzY2FwZS4gKi9cbiAgdW5zYWZlPzogVW5zYWZlUGF0dGVybltdXG59XG5cbi8qKiBBIGNoYXJhY3RlciB0byBlc2NhcGUgd2hlcmUgaXQgd291bGQgb3RoZXJ3aXNlIHN0YXJ0IG9yIGVuZCBzeW50YXguICovXG5leHBvcnQgaW50ZXJmYWNlIFVuc2FmZVBhdHRlcm4ge1xuICAvKiogVGhlIGNoYXJhY3RlciwgZXNjYXBlZCBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB3b3VsZCBuZWVkIGl0LiBAZGVmYXVsdCBcIlwiICovXG4gIGNoYXJhY3Rlcj86IHN0cmluZ1xuICAvKiogQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtdXN0IG1hdGNoIHJpZ2h0IGJlZm9yZSB0aGUgY2hhcmFjdGVyLiAqL1xuICBiZWZvcmU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG11c3QgbWF0Y2ggcmlnaHQgYWZ0ZXIgdGhlIGNoYXJhY3Rlci4gKi9cbiAgYWZ0ZXI/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBPbmx5IGF0IHRoZSBzdGFydCBvZiBhIGxpbmUsIGFmdGVyIGFueSBpbmRlbnQuIEBkZWZhdWx0IGZhbHNlICovXG4gIGF0QnJlYWs/OiBib29sZWFuXG4gIC8qKiBPbmx5IGluc2lkZSBvbmUgb2YgdGhlc2UgY29uc3RydWN0cy4gKi9cbiAgaW5Db25zdHJ1Y3Q/OiBOYW1lcyB8IG51bGxcbiAgLyoqIE5ldmVyIGluc2lkZSBvbmUgb2YgdGhlc2UgY29uc3RydWN0cy4gKi9cbiAgbm90SW5Db25zdHJ1Y3Q/OiBOYW1lcyB8IG51bGxcbiAgLyoqIE9ubHkgYXQgdGhlIHN0YXJ0IG9mIGEgbm9kZSByaWdodCBhZnRlciBvbmUgb2YgdGhlc2Ugbm9kZSB0eXBlcy4gKi9cbiAgYmVmb3JlTm9kZT86IE5hbWVzIHwgbnVsbFxuICAvKiogT25seSBhdCB0aGUgZW5kIG9mIGEgbm9kZSByaWdodCBiZWZvcmUgb25lIG9mIHRoZXNlIG5vZGUgdHlwZXMuICovXG4gIGFmdGVyTm9kZT86IE5hbWVzIHwgbnVsbFxuICAvKiogUmVhZCBgYmVmb3JlYCBhbmQgYGFmdGVyYCB3aXRoIFVuaWNvZGUgY2xhc3NlcyBzdWNoIGFzIGBcXHB7TH1gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB1bmljb2RlPzogYm9vbGVhblxufVxuXG4vKiogYG1kLnRvSHRtbGA6IG1kYXN0IGludG8gaGFzdDsgb3B0aW9ucyBuYW1lZCBhcyByZW1hcmstcmVoeXBlIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFRvSHRtbE9wdGlvbnMge1xuICAvKiogS2VlcCByYXcgSFRNTCBpbiB0aGUgdHJlZSBpbnN0ZWFkIG9mIGRyb3BwaW5nIGl0LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBhbGxvd0Rhbmdlcm91c0h0bWw/OiBib29sZWFuXG4gIC8qKiBUdXJuIGVhY2ggbGluZSBlbmRpbmcgaW4gdGV4dCBpbnRvIGEgYDxicj5gLCBhcyByZW1hcmstYnJlYWtzIGRvZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIGJyZWFrcz86IGJvb2xlYW5cbiAgLyoqIFdoYXQgZm9vdG5vdGUgYGlkYHMgc3RhcnQgd2l0aCwgc28gdGhleSBjYW5ub3QgY2xvYmJlciB0aGUgcGFnZSdzOyBgdXNlci1jb250ZW50LWAgd2hlbiB1bnNldC4gKi9cbiAgY2xvYmJlclByZWZpeD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSB0ZXh0IG9mIGVhY2ggZm9vdG5vdGUncyBiYWNrIHJlZmVyZW5jZTsgYOKGqWAsIG51bWJlcmVkIGZyb20gdGhlIHNlY29uZCwgd2hlbiB1bnNldC4gKi9cbiAgZm9vdG5vdGVCYWNrQ29udGVudD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBgYXJpYS1sYWJlbGAgb2YgZWFjaCBmb290bm90ZSdzIGJhY2sgcmVmZXJlbmNlOyBgQmFjayB0byByZWZlcmVuY2UgMWAgYW5kIHNvIG9uIHdoZW4gdW5zZXQuICovXG4gIGZvb3Rub3RlQmFja0xhYmVsPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGhlYWRpbmcgb2YgdGhlIGZvb3Rub3RlcyBzZWN0aW9uOyBgRm9vdG5vdGVzYCB3aGVuIHVuc2V0LiAqL1xuICBmb290bm90ZUxhYmVsPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIHRhZyBuYW1lIG9mIHRoZSBmb290bm90ZXMgc2VjdGlvbidzIGhlYWRpbmc7IGBoMmAgd2hlbiB1bnNldC4gKi9cbiAgZm9vdG5vdGVMYWJlbFRhZ05hbWU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBOb2RlIHR5cGVzIHdpdGhvdXQgYSBoYW5kbGVyIHRvIGNvcHkgaW50byBoYXN0IGFzIHRoZXkgYXJlLCB0aGVpciBjaGlsZHJlbiBjb252ZXJ0ZWQuIEBkZWZhdWx0IFtdICovXG4gIHBhc3NUaHJvdWdoPzogc3RyaW5nW11cbiAgLyoqIEFuIGBhcmlhLWxhYmVsYCBmb3IgZWFjaCB0YXNrLWxpc3QgY2hlY2tib3gsIHNvIHNjcmVlbiByZWFkZXJzIG5hbWUgaXQ7IG5vbmUgd2hlbiBsZWZ0IG91dCwgYXMgcmVtYXJrLXJlaHlwZSB3cml0ZXMgbm9uZS4gKi9cbiAgdGFza0xpc3RMYWJlbHM/OiBUYXNrTGlzdExhYmVscyB8IG51bGxcbn1cblxuLyoqIFRoZSBsYWJlbHMgb2YgdGFzay1saXN0IGNoZWNrYm94ZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tMaXN0TGFiZWxzIHtcbiAgLyoqIFRoZSBsYWJlbCBvZiBhIGNoZWNrZWQgYm94LCBzdWNoIGFzIGBDb21wbGV0ZWQgdGFza2AuICovXG4gIGNoZWNrZWQ6IHN0cmluZ1xuICAvKiogVGhlIGxhYmVsIG9mIGFuIHVuY2hlY2tlZCBib3gsIHN1Y2ggYXMgYFRhc2tgLiAqL1xuICB1bmNoZWNrZWQ6IHN0cmluZ1xufVxuXG4vKiogYG1kLnRvTmF0dXJhbExhbmd1YWdlYDogbWRhc3QgaW50byBubGNzdCwgdG9rZW5pemVkIGJ5IHRoZSBwcm9jZXNzb3IncyBuYXR1cmFsLWxhbmd1YWdlIHBhcnNlcjsgb3B0aW9ucyBuYW1lZCBhcyByZW1hcmstcmV0ZXh0IGFuZCBtZGFzdC11dGlsLXRvLW5sY3N0IG5hbWUgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9OYXR1cmFsTGFuZ3VhZ2VPcHRpb25zIHtcbiAgLyoqIE5vZGUgdHlwZXMgdG8gbGVhdmUgb3V0LCBiZXNpZGVzIGB0YWJsZWAsIGB0YWJsZVJvd2AgYW5kIGB0YWJsZUNlbGxgLiBAZGVmYXVsdCBbXSAqL1xuICBpZ25vcmU/OiBzdHJpbmdbXVxuICAvKiogTm9kZSB0eXBlcyB0byBrZWVwIGFzIG9uZSBgU291cmNlTm9kZWAgb2YgdGhlaXIgc291cmNlIHRleHQsIGJlc2lkZXMgYGlubGluZUNvZGVgLiBAZGVmYXVsdCBbXSAqL1xuICBzb3VyY2U/OiBzdHJpbmdbXVxufVxuXG4vKiogVGhlIGBtZC5wYXJzZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKG9wdGlvbnM/OiBQYXJzZU9wdGlvbnMpOiBQbHVnaW48XCJtZC5wYXJzZVwiLCBQYXJzZU9wdGlvbnM+ICYgUGFyc2VyPFJvb3Q+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5wYXJzZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5wYXJzZVwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuZGlyZWN0aXZlYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZGlyZWN0aXZlKG9wdGlvbnM/OiBEaXJlY3RpdmVPcHRpb25zKTogUGx1Z2luPFwibWQuZGlyZWN0aXZlXCIsIERpcmVjdGl2ZU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5kaXJlY3RpdmVcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuZGlyZWN0aXZlXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5nZm1gIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZm0ob3B0aW9ucz86IEdmbU9wdGlvbnMpOiBQbHVnaW48XCJtZC5nZm1cIiwgR2ZtT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLmdmbVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5nZm1cIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLmRlZmluaXRpb25MaXN0YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5pdGlvbkxpc3QoKTogUGx1Z2luPFwibWQuZGVmaW5pdGlvbkxpc3RcIj4ge1xuICByZXR1cm4geyBuYW1lOiBcIm1kLmRlZmluaXRpb25MaXN0XCIgfVxufVxuXG4vKiogVGhlIGBtZC5tYXRoYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gbWF0aChvcHRpb25zPzogTWF0aE9wdGlvbnMpOiBQbHVnaW48XCJtZC5tYXRoXCIsIE1hdGhPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQubWF0aFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5tYXRoXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5tZHhgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZHgob3B0aW9ucz86IE1keE9wdGlvbnMpOiBQbHVnaW48XCJtZC5tZHhcIiwgTWR4T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLm1keFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5tZHhcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLmZyb250bWF0dGVyYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbnRtYXR0ZXIob3B0aW9ucz86IEZyb250bWF0dGVyT3B0aW9ucyk6IFBsdWdpbjxcIm1kLmZyb250bWF0dGVyXCIsIEZyb250bWF0dGVyT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLmZyb250bWF0dGVyXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLmZyb250bWF0dGVyXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5jamtGcmllbmRseWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNqa0ZyaWVuZGx5KCk6IFBsdWdpbjxcIm1kLmNqa0ZyaWVuZGx5XCI+IHtcbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5jamtGcmllbmRseVwiIH1cbn1cblxuLyoqIFRoZSBgbWQuZ2Vtb2ppYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZ2Vtb2ppKG9wdGlvbnM/OiBHZW1vamlPcHRpb25zKTogUGx1Z2luPFwibWQuZ2Vtb2ppXCIsIEdlbW9qaU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5nZW1vamlcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuZ2Vtb2ppXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5zbWFydHlwYW50c2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNtYXJ0eXBhbnRzKG9wdGlvbnM/OiBTbWFydHlwYW50c09wdGlvbnMpOiBQbHVnaW48XCJtZC5zbWFydHlwYW50c1wiLCBTbWFydHlwYW50c09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5zbWFydHlwYW50c1wiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5zbWFydHlwYW50c1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuY29tcG9uZW50YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gY29tcG9uZW50KG9wdGlvbnM/OiBDb21wb25lbnRPcHRpb25zKTogUGx1Z2luPFwibWQuY29tcG9uZW50XCIsIENvbXBvbmVudE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5jb21wb25lbnRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuY29tcG9uZW50XCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5wYWNrYWdlQ29tbWFuZGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhY2thZ2VDb21tYW5kKG9wdGlvbnM/OiBQYWNrYWdlQ29tbWFuZE9wdGlvbnMpOiBQbHVnaW48XCJtZC5wYWNrYWdlQ29tbWFuZFwiLCBQYWNrYWdlQ29tbWFuZE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5wYWNrYWdlQ29tbWFuZFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5wYWNrYWdlQ29tbWFuZFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuaGVhZGluZ0lkYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gaGVhZGluZ0lkKG9wdGlvbnM/OiBIZWFkaW5nSWRPcHRpb25zKTogUGx1Z2luPFwibWQuaGVhZGluZ0lkXCIsIEhlYWRpbmdJZE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5oZWFkaW5nSWRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuaGVhZGluZ0lkXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5wYXRoUmV3cml0ZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhdGhSZXdyaXRlKG9wdGlvbnM/OiBQYXRoUmV3cml0ZU9wdGlvbnMpOiBQbHVnaW48XCJtZC5wYXRoUmV3cml0ZVwiLCBQYXRoUmV3cml0ZU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5wYXRoUmV3cml0ZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5wYXRoUmV3cml0ZVwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuc2hpZnRIZWFkaW5nYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gc2hpZnRIZWFkaW5nKG9wdGlvbnM/OiBTaGlmdEhlYWRpbmdPcHRpb25zKTogUGx1Z2luPFwibWQuc2hpZnRIZWFkaW5nXCIsIFNoaWZ0SGVhZGluZ09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5zaGlmdEhlYWRpbmdcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuc2hpZnRIZWFkaW5nXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5zdHJpcGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwKG9wdGlvbnM/OiBTdHJpcE9wdGlvbnMpOiBQbHVnaW48XCJtZC5zdHJpcFwiLCBTdHJpcE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5zdHJpcFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5zdHJpcFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQudG9jYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gdG9jKG9wdGlvbnM/OiBUb2NPcHRpb25zKTogUGx1Z2luPFwibWQudG9jXCIsIFRvY09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC50b2NcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQudG9jXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5zdHJpbmdpZnlgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkob3B0aW9ucz86IFN0cmluZ2lmeU9wdGlvbnMpOiBQbHVnaW48XCJtZC5zdHJpbmdpZnlcIiwgU3RyaW5naWZ5T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLnN0cmluZ2lmeVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5zdHJpbmdpZnlcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLnRvSHRtbGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSHRtbChvcHRpb25zPzogVG9IdG1sT3B0aW9ucyk6IFBsdWdpbjxcIm1kLnRvSHRtbFwiLCBUb0h0bWxPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQudG9IdG1sXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLnRvSHRtbFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQudG9OYXR1cmFsTGFuZ3VhZ2VgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hdHVyYWxMYW5ndWFnZShvcHRpb25zPzogVG9OYXR1cmFsTGFuZ3VhZ2VPcHRpb25zKTogUGx1Z2luPFwibWQudG9OYXR1cmFsTGFuZ3VhZ2VcIiwgVG9OYXR1cmFsTGFuZ3VhZ2VPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQudG9OYXR1cmFsTGFuZ3VhZ2VcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQudG9OYXR1cmFsTGFuZ3VhZ2VcIiwgb3B0aW9ucyB9XG59XG4iXX0=
package/build/index.js CHANGED
@@ -1,11 +1,16 @@
1
1
  import { createRequire } from "node:module";
2
2
  import { resolveAddon } from "./actions/addon/resolve.js";
3
+ import { detectLibc } from "./actions/libc/detect.js";
3
4
  import { Processor } from "./models/processor.js";
4
5
  export { Processor } from "./models/processor.js";
5
6
  const require = createRequire(import.meta.url);
6
7
  const addon = require(resolveAddon({
7
8
  platform: process.platform,
8
9
  arch: process.arch,
10
+ libc: detectLibc({
11
+ platform: process.platform,
12
+ report: () => process.report.getReport(),
13
+ }),
9
14
  env: process.env,
10
15
  resolvePackage: specifier => require.resolve(specifier),
11
16
  }));
@@ -24,4 +29,4 @@ export const retainedMemory = addon.retainedMemory;
24
29
  * default is 256 MB.
25
30
  */
26
31
  export const setRetainedMemory = addon.setRetainedMemory;
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUV6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFxQmpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUVqRCxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFFOUMsTUFBTSxLQUFLLEdBQVUsT0FBTyxDQUMxQixZQUFZLENBQUM7SUFDWCxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7SUFDMUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0lBQ2xCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztJQUNoQixjQUFjLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztDQUN4RCxDQUFDLENBQ0gsQ0FBQTtBQUVELG9FQUFvRTtBQUNwRSxNQUFNLFVBQVUsUUFBUTtJQUN0QixPQUFPLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7QUFDNUMsQ0FBQztBQUVELDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQTtBQUVwQywrREFBK0Q7QUFDL0QsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUE7QUFFNUMsMkZBQTJGO0FBQzNGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFBO0FBRWxEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIlxuaW1wb3J0IHsgcmVzb2x2ZUFkZG9uIH0gZnJvbSBcIi4vYWN0aW9ucy9hZGRvbi9yZXNvbHZlLnRzXCJcbmltcG9ydCB0eXBlIHsgQWRkb24gfSBmcm9tIFwiLi9tb2RlbHMvYWRkb24udHNcIlxuaW1wb3J0IHsgUHJvY2Vzc29yIH0gZnJvbSBcIi4vbW9kZWxzL3Byb2Nlc3Nvci50c1wiXG5cbmV4cG9ydCB0eXBlIHtcbiAgQ29tcGF0aWJsZSxcbiAgTWVzc2FnZSxcbiAgTWVzc2FnZU9wdGlvbnMsXG4gIE5vZGUsXG4gIFBsYWNlLFxuICBQb2ludCxcbiAgVkZpbGUsXG59IGZyb20gXCIuL21vZGVscy9maWxlLnRzXCJcbmV4cG9ydCB0eXBlIHtcbiAgQXR0YWNoZXIsXG4gIFBsdWdnYWJsZSxcbiAgUGx1Z2dhYmxlTGlzdCxcbiAgUGFyc2VyLFxuICBQbHVnaW4sXG4gIFByZXNldCxcbiAgVHJhbnNmb3JtZXIsXG59IGZyb20gXCIuL21vZGVscy9wbHVnaW4udHNcIlxuZXhwb3J0IHR5cGUgeyBIb3N0RmlsZSwgSG9zdE1lc3NhZ2UgfSBmcm9tIFwiLi9tb2RlbHMvdmZpbGUudHNcIlxuZXhwb3J0IHsgUHJvY2Vzc29yIH0gZnJvbSBcIi4vbW9kZWxzL3Byb2Nlc3Nvci50c1wiXG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybClcblxuY29uc3QgYWRkb246IEFkZG9uID0gcmVxdWlyZShcbiAgcmVzb2x2ZUFkZG9uKHtcbiAgICBwbGF0Zm9ybTogcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICBhcmNoOiBwcm9jZXNzLmFyY2gsXG4gICAgZW52OiBwcm9jZXNzLmVudixcbiAgICByZXNvbHZlUGFja2FnZTogc3BlY2lmaWVyID0+IHJlcXVpcmUucmVzb2x2ZShzcGVjaWZpZXIpLFxuICB9KSxcbilcblxuLyoqIEEgbmV3IHByb2Nlc3NvcjogYWRkIHBsdWdpbnMgd2l0aCBgdXNlYCwgdGhlbiBgcHJvY2Vzc2AgdGV4dC4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZXh0bGFuZSgpIHtcbiAgcmV0dXJuIG5ldyBQcm9jZXNzb3IobmV3IGFkZG9uLlBpcGVsaW5lKCkpXG59XG5cbi8qKiBUaGUgcGFja2FnZSB2ZXJzaW9uLCBhcyB0aGUgbmF0aXZlIGNyYXRlIHJlcG9ydHMgaXQuICovXG5leHBvcnQgY29uc3QgdmVyc2lvbiA9IGFkZG9uLnZlcnNpb25cblxuLyoqIFRoZSBuYW1lIG9mIGV2ZXJ5IG5hdGl2ZSBwbHVnaW4sIGFzIGEgcGlwZWxpbmUgbmFtZXMgaXQuICovXG5leHBvcnQgY29uc3QgcGx1Z2luTmFtZXMgPSBhZGRvbi5wbHVnaW5OYW1lc1xuXG4vKiogVGhlIG1vc3QgbWVtb3J5LCBpbiBieXRlcywgZWFjaCB0aHJlYWQga2VlcHMgYWZ0ZXIgYSBkb2N1bWVudCB0byByZXVzZSBmb3IgdGhlIG5leHQuICovXG5leHBvcnQgY29uc3QgcmV0YWluZWRNZW1vcnkgPSBhZGRvbi5yZXRhaW5lZE1lbW9yeVxuXG4vKipcbiAqIENhcCB0aGUgbWVtb3J5LCBpbiBieXRlcywgZWFjaCB0aHJlYWQga2VlcHMgYWZ0ZXIgYSBkb2N1bWVudDsgYDBgIGtlZXBzIG5vbmUuIFRoZVxuICogZGVmYXVsdCBpcyAyNTYgTUIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRSZXRhaW5lZE1lbW9yeSA9IGFkZG9uLnNldFJldGFpbmVkTWVtb3J5XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBcUJqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFakQsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBRTlDLE1BQU0sS0FBSyxHQUFVLE9BQU8sQ0FDMUIsWUFBWSxDQUFDO0lBQ1gsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO0lBQzFCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtJQUNsQixJQUFJLEVBQUUsVUFBVSxDQUFDO1FBQ2YsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1FBQzFCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtLQUN6QyxDQUFDO0lBQ0YsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHO0lBQ2hCLGNBQWMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO0NBQ3hELENBQUMsQ0FDSCxDQUFBO0FBRUQsb0VBQW9FO0FBQ3BFLE1BQU0sVUFBVSxRQUFRO0lBQ3RCLE9BQU8sSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtBQUM1QyxDQUFDO0FBRUQsMkRBQTJEO0FBQzNELE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFBO0FBRXBDLCtEQUErRDtBQUMvRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQTtBQUU1QywyRkFBMkY7QUFDM0YsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUE7QUFFbEQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiXG5pbXBvcnQgeyByZXNvbHZlQWRkb24gfSBmcm9tIFwiLi9hY3Rpb25zL2FkZG9uL3Jlc29sdmUudHNcIlxuaW1wb3J0IHsgZGV0ZWN0TGliYyB9IGZyb20gXCIuL2FjdGlvbnMvbGliYy9kZXRlY3QudHNcIlxuaW1wb3J0IHR5cGUgeyBBZGRvbiB9IGZyb20gXCIuL21vZGVscy9hZGRvbi50c1wiXG5pbXBvcnQgeyBQcm9jZXNzb3IgfSBmcm9tIFwiLi9tb2RlbHMvcHJvY2Vzc29yLnRzXCJcblxuZXhwb3J0IHR5cGUge1xuICBDb21wYXRpYmxlLFxuICBNZXNzYWdlLFxuICBNZXNzYWdlT3B0aW9ucyxcbiAgTm9kZSxcbiAgUGxhY2UsXG4gIFBvaW50LFxuICBWRmlsZSxcbn0gZnJvbSBcIi4vbW9kZWxzL2ZpbGUudHNcIlxuZXhwb3J0IHR5cGUge1xuICBBdHRhY2hlcixcbiAgUGx1Z2dhYmxlLFxuICBQbHVnZ2FibGVMaXN0LFxuICBQYXJzZXIsXG4gIFBsdWdpbixcbiAgUHJlc2V0LFxuICBUcmFuc2Zvcm1lcixcbn0gZnJvbSBcIi4vbW9kZWxzL3BsdWdpbi50c1wiXG5leHBvcnQgdHlwZSB7IEhvc3RGaWxlLCBIb3N0TWVzc2FnZSB9IGZyb20gXCIuL21vZGVscy92ZmlsZS50c1wiXG5leHBvcnQgeyBQcm9jZXNzb3IgfSBmcm9tIFwiLi9tb2RlbHMvcHJvY2Vzc29yLnRzXCJcblxuY29uc3QgcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKVxuXG5jb25zdCBhZGRvbjogQWRkb24gPSByZXF1aXJlKFxuICByZXNvbHZlQWRkb24oe1xuICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgIGFyY2g6IHByb2Nlc3MuYXJjaCxcbiAgICBsaWJjOiBkZXRlY3RMaWJjKHtcbiAgICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgcmVwb3J0OiAoKSA9PiBwcm9jZXNzLnJlcG9ydC5nZXRSZXBvcnQoKSxcbiAgICB9KSxcbiAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgIHJlc29sdmVQYWNrYWdlOiBzcGVjaWZpZXIgPT4gcmVxdWlyZS5yZXNvbHZlKHNwZWNpZmllciksXG4gIH0pLFxuKVxuXG4vKiogQSBuZXcgcHJvY2Vzc29yOiBhZGQgcGx1Z2lucyB3aXRoIGB1c2VgLCB0aGVuIGBwcm9jZXNzYCB0ZXh0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRleHRsYW5lKCkge1xuICByZXR1cm4gbmV3IFByb2Nlc3NvcihuZXcgYWRkb24uUGlwZWxpbmUoKSlcbn1cblxuLyoqIFRoZSBwYWNrYWdlIHZlcnNpb24sIGFzIHRoZSBuYXRpdmUgY3JhdGUgcmVwb3J0cyBpdC4gKi9cbmV4cG9ydCBjb25zdCB2ZXJzaW9uID0gYWRkb24udmVyc2lvblxuXG4vKiogVGhlIG5hbWUgb2YgZXZlcnkgbmF0aXZlIHBsdWdpbiwgYXMgYSBwaXBlbGluZSBuYW1lcyBpdC4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5OYW1lcyA9IGFkZG9uLnBsdWdpbk5hbWVzXG5cbi8qKiBUaGUgbW9zdCBtZW1vcnksIGluIGJ5dGVzLCBlYWNoIHRocmVhZCBrZWVwcyBhZnRlciBhIGRvY3VtZW50IHRvIHJldXNlIGZvciB0aGUgbmV4dC4gKi9cbmV4cG9ydCBjb25zdCByZXRhaW5lZE1lbW9yeSA9IGFkZG9uLnJldGFpbmVkTWVtb3J5XG5cbi8qKlxuICogQ2FwIHRoZSBtZW1vcnksIGluIGJ5dGVzLCBlYWNoIHRocmVhZCBrZWVwcyBhZnRlciBhIGRvY3VtZW50OyBgMGAga2VlcHMgbm9uZS4gVGhlXG4gKiBkZWZhdWx0IGlzIDI1NiBNQi5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFJldGFpbmVkTWVtb3J5ID0gYWRkb24uc2V0UmV0YWluZWRNZW1vcnlcbiJdfQ==
@@ -1,38 +1,44 @@
1
- import type { Node as UnistNode } from "unist";
2
- import type { Message, Node, VFile } from "./file.ts";
3
- /** The crate's pipeline as the addon exposes it: values cross as JSON. */
4
- export interface NativePipeline<Tree extends UnistNode = Node> {
1
+ import type { Message } from "./file.ts";
2
+ /** The crate's pipeline as the addon exposes it: values cross as JSON, trees as JSON text. */
3
+ export interface NativePipeline {
5
4
  use(value: unknown, options?: unknown): void;
6
5
  data(key?: string): unknown;
7
6
  setData(key: string, value: unknown): void;
8
7
  replaceData(data: Record<string, unknown>): void;
9
8
  freeze(): void;
10
- parse(text: string): Tree;
11
- run(tree: UnistNode, value?: string): Node;
12
- runSync(tree: UnistNode, value?: string): Node;
13
- stringify(tree: UnistNode): string;
9
+ parse(text: string): string;
10
+ run(tree: string, value?: string): string;
11
+ runSync(tree: string, value?: string): string;
12
+ stringify(tree: string): string;
14
13
  process(text: string, path?: string): Promise<ProcessOutcome>;
15
- processSync(text: string, path?: string): VFile;
14
+ processSync(text: string, path?: string): NativeFile;
16
15
  hosts(): number[];
17
- startRun(tree: UnistNode, value: string | undefined, sync: boolean): NativeRun<Node>;
18
- startProcess(text: string, sync: boolean, path?: string): NativeRun<VFile>;
16
+ startRun(tree: string, value: string | undefined, sync: boolean): NativeRun;
17
+ startProcess(text: string, sync: boolean, path?: string): NativeRun;
19
18
  }
20
19
  /** What an async `process` settles with: the file, or the error the crate raised. */
21
20
  export interface ProcessOutcome {
22
- file?: VFile;
21
+ file?: NativeFile;
23
22
  error?: {
24
23
  code: string;
25
24
  message: string;
26
25
  };
27
26
  }
28
- /** A run paused before host plugins until `resume`, then finished with `result`. */
29
- export interface NativeRun<Result> {
27
+ /** The file a native `process` gives back, its messages as the crate holds them. */
28
+ export interface NativeFile {
29
+ value: string;
30
+ messages: Message[];
31
+ data: Record<string, unknown>;
32
+ }
33
+ /** A run paused before host plugins until `resume`, then finished with `result`, as JSON
34
+ * text: the tree for a run, the file for a process. */
35
+ export interface NativeRun {
30
36
  hosts(): number[];
31
- tree(): Node;
37
+ tree(): string;
32
38
  value(): string | null;
33
39
  messages(): Message[];
34
- resume(tree: UnistNode, messages: Message[]): void;
35
- result(): Result;
40
+ resume(tree: string, messages: Message[]): void;
41
+ result(): string;
36
42
  }
37
43
  /** What the napi addon exports. */
38
44
  export interface Addon {
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9tb2RlbHMvYWRkb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTm9kZSBhcyBVbmlzdE5vZGUgfSBmcm9tIFwidW5pc3RcIlxuaW1wb3J0IHR5cGUgeyBNZXNzYWdlLCBOb2RlLCBWRmlsZSB9IGZyb20gXCIuL2ZpbGUudHNcIlxuXG4vKiogVGhlIGNyYXRlJ3MgcGlwZWxpbmUgYXMgdGhlIGFkZG9uIGV4cG9zZXMgaXQ6IHZhbHVlcyBjcm9zcyBhcyBKU09OLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXRpdmVQaXBlbGluZTxUcmVlIGV4dGVuZHMgVW5pc3ROb2RlID0gTm9kZT4ge1xuICB1c2UodmFsdWU6IHVua25vd24sIG9wdGlvbnM/OiB1bmtub3duKTogdm9pZFxuICBkYXRhKGtleT86IHN0cmluZyk6IHVua25vd25cbiAgc2V0RGF0YShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkXG4gIHJlcGxhY2VEYXRhKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZFxuICBmcmVlemUoKTogdm9pZFxuICBwYXJzZSh0ZXh0OiBzdHJpbmcpOiBUcmVlXG4gIHJ1bih0cmVlOiBVbmlzdE5vZGUsIHZhbHVlPzogc3RyaW5nKTogTm9kZVxuICBydW5TeW5jKHRyZWU6IFVuaXN0Tm9kZSwgdmFsdWU/OiBzdHJpbmcpOiBOb2RlXG4gIHN0cmluZ2lmeSh0cmVlOiBVbmlzdE5vZGUpOiBzdHJpbmdcbiAgcHJvY2Vzcyh0ZXh0OiBzdHJpbmcsIHBhdGg/OiBzdHJpbmcpOiBQcm9taXNlPFByb2Nlc3NPdXRjb21lPlxuICBwcm9jZXNzU3luYyh0ZXh0OiBzdHJpbmcsIHBhdGg/OiBzdHJpbmcpOiBWRmlsZVxuICBob3N0cygpOiBudW1iZXJbXVxuICBzdGFydFJ1bih0cmVlOiBVbmlzdE5vZGUsIHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQsIHN5bmM6IGJvb2xlYW4pOiBOYXRpdmVSdW48Tm9kZT5cbiAgc3RhcnRQcm9jZXNzKHRleHQ6IHN0cmluZywgc3luYzogYm9vbGVhbiwgcGF0aD86IHN0cmluZyk6IE5hdGl2ZVJ1bjxWRmlsZT5cbn1cblxuLyoqIFdoYXQgYW4gYXN5bmMgYHByb2Nlc3NgIHNldHRsZXMgd2l0aDogdGhlIGZpbGUsIG9yIHRoZSBlcnJvciB0aGUgY3JhdGUgcmFpc2VkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzT3V0Y29tZSB7XG4gIGZpbGU/OiBWRmlsZVxuICBlcnJvcj86IHsgY29kZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfVxufVxuXG4vKiogQSBydW4gcGF1c2VkIGJlZm9yZSBob3N0IHBsdWdpbnMgdW50aWwgYHJlc3VtZWAsIHRoZW4gZmluaXNoZWQgd2l0aCBgcmVzdWx0YC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF0aXZlUnVuPFJlc3VsdD4ge1xuICBob3N0cygpOiBudW1iZXJbXVxuICB0cmVlKCk6IE5vZGVcbiAgdmFsdWUoKTogc3RyaW5nIHwgbnVsbFxuICBtZXNzYWdlcygpOiBNZXNzYWdlW11cbiAgcmVzdW1lKHRyZWU6IFVuaXN0Tm9kZSwgbWVzc2FnZXM6IE1lc3NhZ2VbXSk6IHZvaWRcbiAgcmVzdWx0KCk6IFJlc3VsdFxufVxuXG4vKiogV2hhdCB0aGUgbmFwaSBhZGRvbiBleHBvcnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRvbiB7XG4gIHZlcnNpb24oKTogc3RyaW5nXG4gIHBsdWdpbk5hbWVzKCk6IHN0cmluZ1tdXG4gIHJldGFpbmVkTWVtb3J5KCk6IG51bWJlclxuICBzZXRSZXRhaW5lZE1lbW9yeShieXRlczogbnVtYmVyKTogdm9pZFxuICBQaXBlbGluZTogbmV3ICgpID0+IE5hdGl2ZVBpcGVsaW5lXG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9tb2RlbHMvYWRkb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTWVzc2FnZSB9IGZyb20gXCIuL2ZpbGUudHNcIlxuXG4vKiogVGhlIGNyYXRlJ3MgcGlwZWxpbmUgYXMgdGhlIGFkZG9uIGV4cG9zZXMgaXQ6IHZhbHVlcyBjcm9zcyBhcyBKU09OLCB0cmVlcyBhcyBKU09OIHRleHQuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdGl2ZVBpcGVsaW5lIHtcbiAgdXNlKHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogdW5rbm93bik6IHZvaWRcbiAgZGF0YShrZXk/OiBzdHJpbmcpOiB1bmtub3duXG4gIHNldERhdGEoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZFxuICByZXBsYWNlRGF0YShkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWRcbiAgZnJlZXplKCk6IHZvaWRcbiAgcGFyc2UodGV4dDogc3RyaW5nKTogc3RyaW5nXG4gIHJ1bih0cmVlOiBzdHJpbmcsIHZhbHVlPzogc3RyaW5nKTogc3RyaW5nXG4gIHJ1blN5bmModHJlZTogc3RyaW5nLCB2YWx1ZT86IHN0cmluZyk6IHN0cmluZ1xuICBzdHJpbmdpZnkodHJlZTogc3RyaW5nKTogc3RyaW5nXG4gIHByb2Nlc3ModGV4dDogc3RyaW5nLCBwYXRoPzogc3RyaW5nKTogUHJvbWlzZTxQcm9jZXNzT3V0Y29tZT5cbiAgcHJvY2Vzc1N5bmModGV4dDogc3RyaW5nLCBwYXRoPzogc3RyaW5nKTogTmF0aXZlRmlsZVxuICBob3N0cygpOiBudW1iZXJbXVxuICBzdGFydFJ1bih0cmVlOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQsIHN5bmM6IGJvb2xlYW4pOiBOYXRpdmVSdW5cbiAgc3RhcnRQcm9jZXNzKHRleHQ6IHN0cmluZywgc3luYzogYm9vbGVhbiwgcGF0aD86IHN0cmluZyk6IE5hdGl2ZVJ1blxufVxuXG4vKiogV2hhdCBhbiBhc3luYyBgcHJvY2Vzc2Agc2V0dGxlcyB3aXRoOiB0aGUgZmlsZSwgb3IgdGhlIGVycm9yIHRoZSBjcmF0ZSByYWlzZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NPdXRjb21lIHtcbiAgZmlsZT86IE5hdGl2ZUZpbGVcbiAgZXJyb3I/OiB7IGNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH1cbn1cblxuLyoqIFRoZSBmaWxlIGEgbmF0aXZlIGBwcm9jZXNzYCBnaXZlcyBiYWNrLCBpdHMgbWVzc2FnZXMgYXMgdGhlIGNyYXRlIGhvbGRzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdGl2ZUZpbGUge1xuICB2YWx1ZTogc3RyaW5nXG4gIG1lc3NhZ2VzOiBNZXNzYWdlW11cbiAgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbn1cblxuLyoqIEEgcnVuIHBhdXNlZCBiZWZvcmUgaG9zdCBwbHVnaW5zIHVudGlsIGByZXN1bWVgLCB0aGVuIGZpbmlzaGVkIHdpdGggYHJlc3VsdGAsIGFzIEpTT05cbiAqIHRleHQ6IHRoZSB0cmVlIGZvciBhIHJ1biwgdGhlIGZpbGUgZm9yIGEgcHJvY2Vzcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF0aXZlUnVuIHtcbiAgaG9zdHMoKTogbnVtYmVyW11cbiAgdHJlZSgpOiBzdHJpbmdcbiAgdmFsdWUoKTogc3RyaW5nIHwgbnVsbFxuICBtZXNzYWdlcygpOiBNZXNzYWdlW11cbiAgcmVzdW1lKHRyZWU6IHN0cmluZywgbWVzc2FnZXM6IE1lc3NhZ2VbXSk6IHZvaWRcbiAgcmVzdWx0KCk6IHN0cmluZ1xufVxuXG4vKiogV2hhdCB0aGUgbmFwaSBhZGRvbiBleHBvcnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRvbiB7XG4gIHZlcnNpb24oKTogc3RyaW5nXG4gIHBsdWdpbk5hbWVzKCk6IHN0cmluZ1tdXG4gIHJldGFpbmVkTWVtb3J5KCk6IG51bWJlclxuICBzZXRSZXRhaW5lZE1lbW9yeShieXRlczogbnVtYmVyKTogdm9pZFxuICBQaXBlbGluZTogbmV3ICgpID0+IE5hdGl2ZVBpcGVsaW5lXG59XG4iXX0=
@@ -1,3 +1,4 @@
1
+ import type { HostMessage } from "./vfile.ts";
1
2
  /** A unist node as JSON: what `parse` returns and `run` and `stringify` take. */
2
3
  export interface Node {
3
4
  type: string;
@@ -9,7 +10,7 @@ export interface Point {
9
10
  column: number;
10
11
  offset: number | null;
11
12
  }
12
- /** A diagnostic a plugin reported, as vfile-message has it. */
13
+ /** A diagnostic as it crosses the addon: what a `HostMessage` is read from. */
13
14
  export interface Message {
14
15
  reason: string;
15
16
  ruleId: string | null;
@@ -22,7 +23,7 @@ export interface Message {
22
23
  /** What `process` gives back, as a vfile: the output, the messages and the file's data. */
23
24
  export interface VFile {
24
25
  value: string;
25
- messages: Message[];
26
+ messages: HostMessage[];
26
27
  data: Record<string, unknown>;
27
28
  path?: string;
28
29
  }
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL21vZGVscy9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQSB1bmlzdCBub2RlIGFzIEpTT046IHdoYXQgYHBhcnNlYCByZXR1cm5zIGFuZCBgcnVuYCBhbmQgYHN0cmluZ2lmeWAgdGFrZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZSB7XG4gIHR5cGU6IHN0cmluZ1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duXG59XG5cbi8qKiBPbmUgcGxhY2UgaW4gYSBmaWxlOiBhIDEtaW5kZXhlZCBsaW5lIGFuZCBjb2x1bW4gYW5kIGEgMC1pbmRleGVkIG9mZnNldCwgd2hlbiBrbm93bi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnQge1xuICBsaW5lOiBudW1iZXJcbiAgY29sdW1uOiBudW1iZXJcbiAgb2Zmc2V0OiBudW1iZXIgfCBudWxsXG59XG5cbi8qKiBBIGRpYWdub3N0aWMgYSBwbHVnaW4gcmVwb3J0ZWQsIGFzIHZmaWxlLW1lc3NhZ2UgaGFzIGl0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlIHtcbiAgcmVhc29uOiBzdHJpbmdcbiAgcnVsZUlkOiBzdHJpbmcgfCBudWxsXG4gIHNvdXJjZTogc3RyaW5nIHwgbnVsbFxuICBwbGFjZTogeyBzdGFydDogUG9pbnQ7IGVuZDogUG9pbnQgfSB8IG51bGxcbn1cblxuLyoqIFdoYXQgYHByb2Nlc3NgIGdpdmVzIGJhY2ssIGFzIGEgdmZpbGU6IHRoZSBvdXRwdXQsIHRoZSBtZXNzYWdlcyBhbmQgdGhlIGZpbGUncyBkYXRhLiAqL1xuZXhwb3J0IGludGVyZmFjZSBWRmlsZSB7XG4gIHZhbHVlOiBzdHJpbmdcbiAgbWVzc2FnZXM6IE1lc3NhZ2VbXVxuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBwYXRoPzogc3RyaW5nXG59XG5cbi8qKiBBIGRvY3VtZW50OiBpdHMgdGV4dCwgb3IgYSBmaWxlIGhvbGRpbmcgaXQgYXMgYHZhbHVlYCwgd2l0aCBpdHMgcGF0aCB3aGVuIGtub3duLiAqL1xuZXhwb3J0IHR5cGUgQ29tcGF0aWJsZSA9IHN0cmluZyB8IHsgdmFsdWU6IHN0cmluZzsgcGF0aD86IHN0cmluZyB9XG5cbi8qKiBXaGVyZSBhIG1lc3NhZ2UgaXM6IGEgcG9pbnQsIGEgcG9zaXRpb24sIG9yIGEgbm9kZSBob2xkaW5nIG9uZS4gKi9cbmV4cG9ydCB0eXBlIFBsYWNlID1cbiAgfCB7IGxpbmU6IG51bWJlcjsgY29sdW1uOiBudW1iZXI7IG9mZnNldD86IG51bWJlciB8IG51bGwgfVxuICB8IHsgc3RhcnQ6IFBvaW50OyBlbmQ6IFBvaW50IH1cbiAgfCB7IHBvc2l0aW9uPzogdW5rbm93biB9XG5cbi8qKiBXaGF0IGBtZXNzYWdlYCB0YWtlcyBiZXNpZGVzIHRoZSByZWFzb24sIGFzIHZmaWxlLW1lc3NhZ2UgbmFtZXMgaXQuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VPcHRpb25zIHtcbiAgYW5jZXN0b3JzPzogdW5rbm93bltdXG4gIGNhdXNlPzogdW5rbm93blxuICBwbGFjZT86IFBsYWNlXG4gIHJ1bGVJZD86IHN0cmluZ1xuICBzb3VyY2U/OiBzdHJpbmdcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL21vZGVscy9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEhvc3RNZXNzYWdlIH0gZnJvbSBcIi4vdmZpbGUudHNcIlxuXG4vKiogQSB1bmlzdCBub2RlIGFzIEpTT046IHdoYXQgYHBhcnNlYCByZXR1cm5zIGFuZCBgcnVuYCBhbmQgYHN0cmluZ2lmeWAgdGFrZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZSB7XG4gIHR5cGU6IHN0cmluZ1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duXG59XG5cbi8qKiBPbmUgcGxhY2UgaW4gYSBmaWxlOiBhIDEtaW5kZXhlZCBsaW5lIGFuZCBjb2x1bW4gYW5kIGEgMC1pbmRleGVkIG9mZnNldCwgd2hlbiBrbm93bi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnQge1xuICBsaW5lOiBudW1iZXJcbiAgY29sdW1uOiBudW1iZXJcbiAgb2Zmc2V0OiBudW1iZXIgfCBudWxsXG59XG5cbi8qKiBBIGRpYWdub3N0aWMgYXMgaXQgY3Jvc3NlcyB0aGUgYWRkb246IHdoYXQgYSBgSG9zdE1lc3NhZ2VgIGlzIHJlYWQgZnJvbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZSB7XG4gIHJlYXNvbjogc3RyaW5nXG4gIHJ1bGVJZDogc3RyaW5nIHwgbnVsbFxuICBzb3VyY2U6IHN0cmluZyB8IG51bGxcbiAgcGxhY2U6IHsgc3RhcnQ6IFBvaW50OyBlbmQ6IFBvaW50IH0gfCBudWxsXG59XG5cbi8qKiBXaGF0IGBwcm9jZXNzYCBnaXZlcyBiYWNrLCBhcyBhIHZmaWxlOiB0aGUgb3V0cHV0LCB0aGUgbWVzc2FnZXMgYW5kIHRoZSBmaWxlJ3MgZGF0YS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVkZpbGUge1xuICB2YWx1ZTogc3RyaW5nXG4gIG1lc3NhZ2VzOiBIb3N0TWVzc2FnZVtdXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIHBhdGg/OiBzdHJpbmdcbn1cblxuLyoqIEEgZG9jdW1lbnQ6IGl0cyB0ZXh0LCBvciBhIGZpbGUgaG9sZGluZyBpdCBhcyBgdmFsdWVgLCB3aXRoIGl0cyBwYXRoIHdoZW4ga25vd24uICovXG5leHBvcnQgdHlwZSBDb21wYXRpYmxlID0gc3RyaW5nIHwgeyB2YWx1ZTogc3RyaW5nOyBwYXRoPzogc3RyaW5nIH1cblxuLyoqIFdoZXJlIGEgbWVzc2FnZSBpczogYSBwb2ludCwgYSBwb3NpdGlvbiwgb3IgYSBub2RlIGhvbGRpbmcgb25lLiAqL1xuZXhwb3J0IHR5cGUgUGxhY2UgPVxuICB8IHsgbGluZTogbnVtYmVyOyBjb2x1bW46IG51bWJlcjsgb2Zmc2V0PzogbnVtYmVyIHwgbnVsbCB9XG4gIHwgeyBzdGFydDogUG9pbnQ7IGVuZDogUG9pbnQgfVxuICB8IHsgcG9zaXRpb24/OiB1bmtub3duIH1cblxuLyoqIFdoYXQgYG1lc3NhZ2VgIHRha2VzIGJlc2lkZXMgdGhlIHJlYXNvbiwgYXMgdmZpbGUtbWVzc2FnZSBuYW1lcyBpdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZU9wdGlvbnMge1xuICBhbmNlc3RvcnM/OiB1bmtub3duW11cbiAgY2F1c2U/OiB1bmtub3duXG4gIHBsYWNlPzogUGxhY2VcbiAgcnVsZUlkPzogc3RyaW5nXG4gIHNvdXJjZT86IHN0cmluZ1xufVxuIl19
@@ -8,7 +8,7 @@ import type { Parser, Pluggable, PluggableList, Preset } from "./plugin.ts";
8
8
  */
9
9
  export declare class Processor<Tree extends UnistNode = Node> {
10
10
  #private;
11
- constructor(native: NativePipeline<Tree>);
11
+ constructor(native: NativePipeline);
12
12
  /**
13
13
  * Add a plugin, a list of them or a preset; a plugin used again is reconfigured. A
14
14
  * JavaScript plugin is an attacher, called with the processor and its options at freeze.
@@ -3,7 +3,7 @@ import { isPlainObject, mergeOptions } from "../actions/options/merge.js";
3
3
  import { mapPluggable } from "../actions/pluggable/map.js";
4
4
  import { finishRun } from "../actions/run/finish.js";
5
5
  import { isTransformer } from "../actions/transformer/check.js";
6
- import { HostFile } from "./vfile.js";
6
+ import { HostFile, HostMessage } from "./vfile.js";
7
7
  /**
8
8
  * unified's processor over the native pipeline; every call is the crate's, except that
9
9
  * JavaScript plugins run here when a run pauses before them.
@@ -47,7 +47,8 @@ export class Processor {
47
47
  /** Parse a document into a tree. */
48
48
  parse(document) {
49
49
  this.#attach();
50
- return this.#native.parse(readValue(document) ?? "");
50
+ const tree = JSON.parse(this.#native.parse(readValue(document) ?? ""));
51
+ return tree;
51
52
  }
52
53
  /**
53
54
  * Run the transforms, finishing asynchronous stages; `file`, the text `tree` was parsed
@@ -56,26 +57,26 @@ export class Processor {
56
57
  async run(tree, file) {
57
58
  const value = readValue(file);
58
59
  if (!this.#attach())
59
- return this.#native.run(tree, value);
60
- const run = this.#native.startRun(tree, value, false);
60
+ return readNode(this.#native.run(JSON.stringify(tree), value));
61
+ const run = this.#native.startRun(JSON.stringify(tree), value, false);
61
62
  const host = new HostFile({ value, path: readPath(file) });
62
63
  await finishRun({ run, hosts: this.#hosts, file: host, sync: false, call: "run" });
63
- return run.result();
64
+ return readNode(run.result());
64
65
  }
65
66
  /** Run the transforms; fails with `async-in-sync` on an asynchronous stage. */
66
67
  runSync(tree, file) {
67
68
  const value = readValue(file);
68
69
  if (!this.#attach())
69
- return this.#native.runSync(tree, value);
70
- const run = this.#native.startRun(tree, value, true);
70
+ return readNode(this.#native.runSync(JSON.stringify(tree), value));
71
+ const run = this.#native.startRun(JSON.stringify(tree), value, true);
71
72
  const host = new HostFile({ value, path: readPath(file) });
72
73
  void finishRun({ run, hosts: this.#hosts, file: host, sync: true, call: "run" });
73
- return run.result();
74
+ return readNode(run.result());
74
75
  }
75
76
  /** Compile a tree, running no transform. */
76
77
  stringify(tree) {
77
78
  this.#attach();
78
- return this.#native.stringify(tree);
79
+ return this.#native.stringify(JSON.stringify(tree));
79
80
  }
80
81
  /** Parse, run and compile a document, finishing asynchronous stages. */
81
82
  async process(document) {
@@ -87,22 +88,22 @@ export class Processor {
87
88
  throw Object.assign(new Error(outcome.error.message), outcome.error);
88
89
  if (!outcome.file)
89
90
  throw new Error("process settled with neither a file nor an error");
90
- return withPath(outcome.file, document);
91
+ return readResult(outcome.file, document);
91
92
  }
92
93
  const run = this.#native.startProcess(text, false, readPath(document));
93
94
  const file = new HostFile({ value: run.value() ?? text, path: readPath(document) });
94
95
  await finishRun({ run, hosts: this.#hosts, file, sync: false, call: "process" });
95
- return withPath(mergeData(run.result(), file.data), document);
96
+ return readResult(readFile(run.result()), document, file);
96
97
  }
97
98
  /** Parse, run and compile a document; fails with `async-in-sync` on an asynchronous stage. */
98
99
  processSync(document) {
99
100
  const text = readValue(document) ?? "";
100
101
  if (!this.#attach())
101
- return withPath(this.#native.processSync(text, readPath(document)), document);
102
+ return readResult(this.#native.processSync(text, readPath(document)), document);
102
103
  const run = this.#native.startProcess(text, true, readPath(document));
103
104
  const file = new HostFile({ value: run.value() ?? text, path: readPath(document) });
104
105
  void finishRun({ run, hosts: this.#hosts, file, sync: true, call: "process" });
105
- return withPath(mergeData(run.result(), file.data), document);
106
+ return readResult(readFile(run.result()), document, file);
106
107
  }
107
108
  // Once only: `freeze` borrows the native pipeline mutably, which napi refuses while an
108
109
  // async `process` still holds it
@@ -150,18 +151,33 @@ export class Processor {
150
151
  return this.#native.hosts().length > 0;
151
152
  }
152
153
  }
154
+ function readNode(text) {
155
+ const node = JSON.parse(text);
156
+ return node;
157
+ }
158
+ function readFile(text) {
159
+ const file = JSON.parse(text);
160
+ return file;
161
+ }
153
162
  function readValue(file) {
154
163
  return typeof file === "string" ? file : file?.value;
155
164
  }
156
165
  function readPath(file) {
157
166
  return typeof file === "string" ? undefined : file?.path;
158
167
  }
159
- // Native stages' data first, then what JavaScript plugins stored over it
160
- function mergeData(result, data) {
161
- return { ...result, data: { ...result.data, ...data } };
162
- }
163
- function withPath(file, document) {
168
+ // The crate's messages start with the host file's, in order: the plugins' own objects
169
+ // stay, so `fatal`, `url` and `note` survive; native data first, plugins' data over it
170
+ function readResult(native, document, host) {
164
171
  const path = readPath(document);
172
+ const known = host?.messages ?? [];
173
+ const reported = native.messages
174
+ .slice(known.length)
175
+ .map(message => HostMessage.fromMessage(message, path));
176
+ const file = {
177
+ value: native.value,
178
+ messages: [...known, ...reported],
179
+ data: { ...native.data, ...host?.data },
180
+ };
165
181
  return path === undefined ? file : { ...file, path };
166
182
  }
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbW9kZWxzL3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUN6RSxPQUFPLEVBQWtCLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFNL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVyQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sU0FBUztJQUNwQixPQUFPLENBQXNCO0lBQzdCLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQTtJQUNsQyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUE7SUFDaEMsU0FBUyxHQUFHLEtBQUssQ0FBQTtJQUNqQixPQUFPLEdBQUcsS0FBSyxDQUFBO0lBRWYsWUFBWSxNQUE0QjtRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQTtJQUN2QixDQUFDO0lBV0QsbUZBQW1GO0lBQ25GLEdBQUcsQ0FDRCxLQUE0RCxFQUM1RCxHQUFHLE9BQWtCO1FBRXJCLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDbEQsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsQ0FBQyxRQUFrQixFQUFFLFVBQXFCLEVBQUUsRUFBRSxDQUM3RCxJQUFJ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ciB9IGZyb20gXCIuLi9hY3Rpb25zL2F0dGFjaGVyL2NoZWNrLnRzXCJcbmltcG9ydCB7IGlzUGxhaW5PYmplY3QsIG1lcmdlT3B0aW9ucyB9IGZyb20gXCIuLi9hY3Rpb25zL29wdGlvbnMvbWVyZ2UudHNcIlxuaW1wb3J0IHsgdHlwZSBIb3N0RW50cnksIG1hcFBsdWdnYWJsZSB9IGZyb20gXCIuLi9hY3Rpb25zL3BsdWdnYWJsZS9tYXAudHNcIlxuaW1wb3J0IHsgZmluaXNoUnVuIH0gZnJvbSBcIi4uL2FjdGlvbnMvcnVuL2ZpbmlzaC50c1wiXG5pbXBvcnQgeyBpc1RyYW5zZm9ybWVyIH0gZnJvbSBcIi4uL2FjdGlvbnMvdHJhbnNmb3JtZXIvY2hlY2sudHNcIlxuaW1wb3J0IHR5cGUgeyBOb2RlIGFzIFVuaXN0Tm9kZSB9IGZyb20gXCJ1bmlzdFwiXG5pbXBvcnQgdHlwZSB7IE5hdGl2ZVBpcGVsaW5lIH0gZnJvbSBcIi4vYWRkb24udHNcIlxuaW1wb3J0IHR5cGUgeyBDb21wYXRpYmxlLCBOb2RlLCBWRmlsZSB9IGZyb20gXCIuL2ZpbGUudHNcIlxuaW1wb3J0IHR5cGUgeyBIb3N0IH0gZnJvbSBcIi4vaG9zdC50c1wiXG5pbXBvcnQgdHlwZSB7IEF0dGFjaGVyLCBQYXJzZXIsIFBsdWdnYWJsZSwgUGx1Z2dhYmxlTGlzdCwgUHJlc2V0IH0gZnJvbSBcIi4vcGx1Z2luLnRzXCJcbmltcG9ydCB7IEhvc3RGaWxlIH0gZnJvbSBcIi4vdmZpbGUudHNcIlxuXG4vKipcbiAqIHVuaWZpZWQncyBwcm9jZXNzb3Igb3ZlciB0aGUgbmF0aXZlIHBpcGVsaW5lOyBldmVyeSBjYWxsIGlzIHRoZSBjcmF0ZSdzLCBleGNlcHQgdGhhdFxuICogSmF2YVNjcmlwdCBwbHVnaW5zIHJ1biBoZXJlIHdoZW4gYSBydW4gcGF1c2VzIGJlZm9yZSB0aGVtLlxuICovXG5leHBvcnQgY2xhc3MgUHJvY2Vzc29yPFRyZWUgZXh0ZW5kcyBVbmlzdE5vZGUgPSBOb2RlPiB7XG4gICNuYXRpdmU6IE5hdGl2ZVBpcGVsaW5lPFRyZWU+XG4gICNpZHMgPSBuZXcgTWFwPEF0dGFjaGVyLCBudW1iZXI+KClcbiAgI2hvc3RzID0gbmV3IE1hcDxudW1iZXIsIEhvc3Q+KClcbiAgI2F0dGFjaGVkID0gZmFsc2VcbiAgI2Zyb3plbiA9IGZhbHNlXG5cbiAgY29uc3RydWN0b3IobmF0aXZlOiBOYXRpdmVQaXBlbGluZTxUcmVlPikge1xuICAgIHRoaXMuI25hdGl2ZSA9IG5hdGl2ZVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHBsdWdpbiwgYSBsaXN0IG9mIHRoZW0gb3IgYSBwcmVzZXQ7IGEgcGx1Z2luIHVzZWQgYWdhaW4gaXMgcmVjb25maWd1cmVkLiBBXG4gICAqIEphdmFTY3JpcHQgcGx1Z2luIGlzIGFuIGF0dGFjaGVyLCBjYWxsZWQgd2l0aCB0aGUgcHJvY2Vzc29yIGFuZCBpdHMgb3B0aW9ucyBhdCBmcmVlemUuXG4gICAqIEEgcGFyc2VyLCBzdWNoIGFzIGBtZC5wYXJzZSgpYCwgdHlwZXMgdGhlIHRyZWUgYHBhcnNlYCByZXR1cm5zLlxuICAgKi9cbiAgdXNlPFZhbHVlIGV4dGVuZHMgUGx1Z2dhYmxlIHwgUGx1Z2dhYmxlTGlzdCB8IFByZXNldCB8IG51bGwgfCB1bmRlZmluZWQ+KFxuICAgIHZhbHVlOiBWYWx1ZSxcbiAgICAuLi5vcHRpb25zOiB1bmtub3duW11cbiAgKTogUHJvY2Vzc29yPFBhcnNlZFRyZWU8VmFsdWUsIFRyZWU+PlxuICAvLyBhIHBhcnNlciByZXR5cGVzIHRoaXMgc2FtZSBwcm9jZXNzb3I6IHRoZSB0cmVlIGl0IHBhcnNlcyBsaXZlcyBpbiB0aGUgdHlwZSBhbG9uZVxuICB1c2UoXG4gICAgdmFsdWU6IFBsdWdnYWJsZSB8IFBsdWdnYWJsZUxpc3QgfCBQcmVzZXQgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIC4uLm9wdGlvbnM6IHVua25vd25bXVxuICApOiBQcm9jZXNzb3I8VW5pc3ROb2RlPiB7XG4gICAgaWYgKGlzQXR0YWNoZXIodmFsdWUpKSB7XG4gICAgICB0aGlzLiNuYXRpdmUudXNlKFt0aGlzLiNyZWdpc3Rlcih2YWx1ZSwgb3B0aW9ucyldKVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG4gICAgY29uc3QgcmVnaXN0ZXIgPSAoYXR0YWNoZXI6IEF0dGFjaGVyLCBwYXJhbWV0ZXJzOiB1bmtub3duW10pID0+XG4gICAgICB0aGlzLiNyZWdpc3RlcihhdHRhY2hlciwgcGFyYW1ldGVycylcbiAgICB0aGlzLiNuYXRpdmUudXNlKG1hcFBsdWdnYWJsZSh2YWx1ZSA/PyBudWxsLCByZWdpc3RlciksIG9wdGlvbnNbMF0pXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKiBBbGwgZGF0YSwgb3IgdGhlIHZhbHVlIHVuZGVyIGBrZXlgLiAqL1xuICBkYXRhKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGRhdGEoa2V5OiBzdHJpbmcpOiB1bmtub3duXG4gIC8qKiBTZXQgdGhlIHZhbHVlIHVuZGVyIGBrZXlgLCBvciByZXBsYWNlIGFsbCBkYXRhLiAqL1xuICBkYXRhKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHRoaXNcbiAgZGF0YShkYXRhc2V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHRoaXNcbiAgZGF0YShrZXk/OiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgLi4udmFsdWU6IHVua25vd25bXSkge1xuICAgIGlmICh0eXBlb2Yga2V5ID09PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aGlzLiNuYXRpdmUucmVwbGFjZURhdGEoa2V5KVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG4gICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuI25hdGl2ZS5zZXREYXRhKGtleSwgdmFsdWVbMF0pXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy4jbmF0aXZlLmRhdGEoa2V5KVxuICB9XG5cbiAgLyoqIEF0dGFjaCBldmVyeSBwbHVnaW47IGxhdGVyIGB1c2VgIGFuZCBgZGF0YWAgc2V0dGVycyBmYWlsLiAqL1xuICBmcmVlemUoKSB7XG4gICAgdGhpcy4jYXR0YWNoKClcbiAgICB0aGlzLiNmcmVlemVOYXRpdmUoKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKiogUGFyc2UgYSBkb2N1bWVudCBpbnRvIGEgdHJlZS4gKi9cbiAgcGFyc2UoZG9jdW1lbnQ6IENvbXBhdGlibGUpIHtcbiAgICB0aGlzLiNhdHRhY2goKVxuICAgIHJldHVybiB0aGlzLiNuYXRpdmUucGFyc2UocmVhZFZhbHVlKGRvY3VtZW50KSA/PyBcIlwiKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1biB0aGUgdHJhbnNmb3JtcywgZmluaXNoaW5nIGFzeW5jaHJvbm91cyBzdGFnZXM7IGBmaWxlYCwgdGhlIHRleHQgYHRyZWVgIHdhcyBwYXJzZWRcbiAgICogZnJvbSwgbGV0cyBicmlkZ2VzIHJlYWQgaXQgYW5kIGtlZXBzIHBvc2l0aW9ucyBpbiB0aGUgcmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgcnVuKHRyZWU6IFVuaXN0Tm9kZSwgZmlsZT86IENvbXBhdGlibGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHJlYWRWYWx1ZShmaWxlKVxuICAgIGlmICghdGhpcy4jYXR0YWNoKCkpIHJldHVybiB0aGlzLiNuYXRpdmUucnVuKHRyZWUsIHZhbHVlKVxuICAgIGNvbnN0IHJ1biA9IHRoaXMuI25hdGl2ZS5zdGFydFJ1bih0cmVlLCB2YWx1ZSwgZmFsc2UpXG4gICAgY29uc3QgaG9zdCA9IG5ldyBIb3N0RmlsZSh7IHZhbHVlLCBwYXRoOiByZWFkUGF0aChmaWxlKSB9KVxuICAgIGF3YWl0IGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlOiBob3N0LCBzeW5jOiBmYWxzZSwgY2FsbDogXCJydW5cIiB9KVxuICAgIHJldHVybiBydW4ucmVzdWx0KClcbiAgfVxuXG4gIC8qKiBSdW4gdGhlIHRyYW5zZm9ybXM7IGZhaWxzIHdpdGggYGFzeW5jLWluLXN5bmNgIG9uIGFuIGFzeW5jaHJvbm91cyBzdGFnZS4gKi9cbiAgcnVuU3luYyh0cmVlOiBVbmlzdE5vZGUsIGZpbGU/OiBDb21wYXRpYmxlKSB7XG4gICAgY29uc3QgdmFsdWUgPSByZWFkVmFsdWUoZmlsZSlcbiAgICBpZiAoIXRoaXMuI2F0dGFjaCgpKSByZXR1cm4gdGhpcy4jbmF0aXZlLnJ1blN5bmModHJlZSwgdmFsdWUpXG4gICAgY29uc3QgcnVuID0gdGhpcy4jbmF0aXZlLnN0YXJ0UnVuKHRyZWUsIHZhbHVlLCB0cnVlKVxuICAgIGNvbnN0IGhvc3QgPSBuZXcgSG9zdEZpbGUoeyB2YWx1ZSwgcGF0aDogcmVhZFBhdGgoZmlsZSkgfSlcbiAgICB2b2lkIGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlOiBob3N0LCBzeW5jOiB0cnVlLCBjYWxsOiBcInJ1blwiIH0pXG4gICAgcmV0dXJuIHJ1bi5yZXN1bHQoKVxuICB9XG5cbiAgLyoqIENvbXBpbGUgYSB0cmVlLCBydW5uaW5nIG5vIHRyYW5zZm9ybS4gKi9cbiAgc3RyaW5naWZ5KHRyZWU6IFVuaXN0Tm9kZSkge1xuICAgIHRoaXMuI2F0dGFjaCgpXG4gICAgcmV0dXJuIHRoaXMuI25hdGl2ZS5zdHJpbmdpZnkodHJlZSlcbiAgfVxuXG4gIC8qKiBQYXJzZSwgcnVuIGFuZCBjb21waWxlIGEgZG9jdW1lbnQsIGZpbmlzaGluZyBhc3luY2hyb25vdXMgc3RhZ2VzLiAqL1xuICBhc3luYyBwcm9jZXNzKGRvY3VtZW50OiBDb21wYXRpYmxlKTogUHJvbWlzZTxWRmlsZT4ge1xuICAgIGNvbnN0IHRleHQgPSByZWFkVmFsdWUoZG9jdW1lbnQpID8/IFwiXCJcbiAgICBpZiAoIXRoaXMuI2F0dGFjaCgpKSB7XG4gICAgICB0aGlzLiNmcmVlemVOYXRpdmUoKVxuICAgICAgY29uc3Qgb3V0Y29tZSA9IGF3YWl0IHRoaXMuI25hdGl2ZS5wcm9jZXNzKHRleHQsIHJlYWRQYXRoKGRvY3VtZW50KSlcbiAgICAgIGlmIChvdXRjb21lLmVycm9yKVxuICAgICAgICB0aHJvdyBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihvdXRjb21lLmVycm9yLm1lc3NhZ2UpLCBvdXRjb21lLmVycm9yKVxuICAgICAgaWYgKCFvdXRjb21lLmZpbGUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInByb2Nlc3Mgc2V0dGxlZCB3aXRoIG5laXRoZXIgYSBmaWxlIG5vciBhbiBlcnJvclwiKVxuICAgICAgcmV0dXJuIHdpdGhQYXRoKG91dGNvbWUuZmlsZSwgZG9jdW1lbnQpXG4gICAgfVxuICAgIGNvbnN0IHJ1biA9IHRoaXMuI25hdGl2ZS5zdGFydFByb2Nlc3ModGV4dCwgZmFsc2UsIHJlYWRQYXRoKGRvY3VtZW50KSlcbiAgICBjb25zdCBmaWxlID0gbmV3IEhvc3RGaWxlKHsgdmFsdWU6IHJ1bi52YWx1ZSgpID8/IHRleHQsIHBhdGg6IHJlYWRQYXRoKGRvY3VtZW50KSB9KVxuICAgIGF3YWl0IGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlLCBzeW5jOiBmYWxzZSwgY2FsbDogXCJwcm9jZXNzXCIgfSlcbiAgICByZXR1cm4gd2l0aFBhdGgobWVyZ2VEYXRhKHJ1bi5yZXN1bHQoKSwgZmlsZS5kYXRhKSwgZG9jdW1lbnQpXG4gIH1cblxuICAvKiogUGFyc2UsIHJ1biBhbmQgY29tcGlsZSBhIGRvY3VtZW50OyBmYWlscyB3aXRoIGBhc3luYy1pbi1zeW5jYCBvbiBhbiBhc3luY2hyb25vdXMgc3RhZ2UuICovXG4gIHByb2Nlc3NTeW5jKGRvY3VtZW50OiBDb21wYXRpYmxlKTogVkZpbGUge1xuICAgIGNvbnN0IHRleHQgPSByZWFkVmFsdWUoZG9jdW1lbnQpID8/IFwiXCJcbiAgICBpZiAoIXRoaXMuI2F0dGFjaCgpKVxuICAgICAgcmV0dXJuIHdpdGhQYXRoKHRoaXMuI25hdGl2ZS5wcm9jZXNzU3luYyh0ZXh0LCByZWFkUGF0aChkb2N1bWVudCkpLCBkb2N1bWVudClcbiAgICBjb25zdCBydW4gPSB0aGlzLiNuYXRpdmUuc3RhcnRQcm9jZXNzKHRleHQsIHRydWUsIHJlYWRQYXRoKGRvY3VtZW50KSlcbiAgICBjb25zdCBmaWxlID0gbmV3IEhvc3RGaWxlKHsgdmFsdWU6IHJ1bi52YWx1ZSgpID8/IHRleHQsIHBhdGg6IHJlYWRQYXRoKGRvY3VtZW50KSB9KVxuICAgIHZvaWQgZmluaXNoUnVuKHsgcnVuLCBob3N0czogdGhpcy4jaG9zdHMsIGZpbGUsIHN5bmM6IHRydWUsIGNhbGw6IFwicHJvY2Vzc1wiIH0pXG4gICAgcmV0dXJuIHdpdGhQYXRoKG1lcmdlRGF0YShydW4ucmVzdWx0KCksIGZpbGUuZGF0YSksIGRvY3VtZW50KVxuICB9XG5cbiAgLy8gT25jZSBvbmx5OiBgZnJlZXplYCBib3Jyb3dzIHRoZSBuYXRpdmUgcGlwZWxpbmUgbXV0YWJseSwgd2hpY2ggbmFwaSByZWZ1c2VzIHdoaWxlIGFuXG4gIC8vIGFzeW5jIGBwcm9jZXNzYCBzdGlsbCBob2xkcyBpdFxuICAjZnJlZXplTmF0aXZlKCkge1xuICAgIGlmICh0aGlzLiNmcm96ZW4pIHJldHVyblxuICAgIHRoaXMuI2Zyb3plbiA9IHRydWVcbiAgICB0aGlzLiNuYXRpdmUuZnJlZXplKClcbiAgfVxuXG4gIC8vIHVuaWZpZWQncyBhZGRQbHVnaW46IHRoZSBzYW1lIGF0dGFjaGVyIGlzIG9uZSBwbHVnaW4sIGl0cyBvYmplY3Qgb3B0aW9ucyBtZXJnZWRcbiAgI3JlZ2lzdGVyKGF0dGFjaGVyOiBBdHRhY2hlciwgcGFyYW1ldGVyczogdW5rbm93bltdKTogSG9zdEVudHJ5IHtcbiAgICBsZXQgaWQgPSB0aGlzLiNpZHMuZ2V0KGF0dGFjaGVyKVxuICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZCA9IHRoaXMuI2lkcy5zaXplXG4gICAgICB0aGlzLiNpZHMuc2V0KGF0dGFjaGVyLCBpZClcbiAgICAgIHRoaXMuI2hvc3RzLnNldChpZCwgeyBhdHRhY2hlciwgcGFyYW1ldGVycyB9KVxuICAgICAgcmV0dXJuIFt7IGhvc3Q6IGlkIH0sIHBhcmFtZXRlcnNbMF0gIT09IGZhbHNlXVxuICAgIH1cbiAgICBjb25zdCBob3N0ID0gdGhpcy4jaG9zdHMuZ2V0KGlkKVxuICAgIGlmICghaG9zdCB8fCBwYXJhbWV0ZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFt7IGhvc3Q6IGlkIH1dXG4gICAgY29uc3QgW3ByaW1hcnksIC4uLnJlc3RdID0gcGFyYW1ldGVyc1xuICAgIGNvbnN0IG1lcmdlZCA9XG4gICAgICBpc1BsYWluT2JqZWN0KGhvc3QucGFyYW1ldGVyc1swXSkgJiYgaXNQbGFpbk9iamVjdChwcmltYXJ5KVxuICAgICAgICA/IG1lcmdlT3B0aW9ucyhob3N0LnBhcmFtZXRlcnNbMF0sIHByaW1hcnkpXG4gICAgICAgIDogcHJpbWFyeVxuICAgIGhvc3QucGFyYW1ldGVycyA9IFttZXJnZWQsIC4uLnJlc3RdXG4gICAgcmV0dXJuIFt7IGhvc3Q6IGlkIH0sIG1lcmdlZCAhPT0gZmFsc2VdXG4gIH1cblxuICAvLyBBdHRhY2hlcnMgcnVuIG9uY2UsIGJlZm9yZSB0aGUgbmF0aXZlIHBpcGVsaW5lIGZyZWV6ZXMsIHNvIHRoZXkgY2FuIHN0aWxsIHNldCBkYXRhO1xuICAvLyB3aGV0aGVyIGFueSBKYXZhU2NyaXB0IHBsdWdpbiBpcyBvbiBkZWNpZGVzIGlmIHJ1bnMgcGF1c2UgZm9yIHRoZW1cbiAgI2F0dGFjaCgpIHtcbiAgICBpZiAoIXRoaXMuI2F0dGFjaGVkKSB7XG4gICAgICB0aGlzLiNhdHRhY2hlZCA9IHRydWVcbiAgICAgIGZvciAoY29uc3QgaWQgb2YgdGhpcy4jbmF0aXZlLmhvc3RzKCkpIHtcbiAgICAgICAgY29uc3QgaG9zdCA9IHRoaXMuI2hvc3RzLmdldChpZClcbiAgICAgICAgaWYgKCFob3N0KSBjb250aW51ZVxuICAgICAgICBjb25zdCBbcHJpbWFyeSwgLi4ucmVzdF0gPSBob3N0LnBhcmFtZXRlcnNcbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHByaW1hcnkgPT09IHRydWUgPyBbdW5kZWZpbmVkLCAuLi5yZXN0XSA6IGhvc3QucGFyYW1ldGVyc1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lcjogdW5rbm93biA9IFJlZmxlY3QuYXBwbHkoaG9zdC5hdHRhY2hlciwgdGhpcywgcGFyYW1ldGVycylcbiAgICAgICAgaWYgKGlzVHJhbnNmb3JtZXIodHJhbnNmb3JtZXIpKSBob3N0LnRyYW5zZm9ybWVyID0gdHJhbnNmb3JtZXJcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuI25hdGl2ZS5ob3N0cygpLmxlbmd0aCA+IDBcbiAgfVxufVxuXG4vLyBBIHBsdWdpbiB3aXRob3V0IHRoZSBtYXJrZXIgaW5mZXJzIGB1bmtub3duYCBmcm9tIHRoZSBvcHRpb25hbCBrZXksIGtlZXBpbmcgdGhlIHRyZWVcbnR5cGUgUGFyc2VkVHJlZTxWYWx1ZSwgQ3VycmVudD4gPVxuICBWYWx1ZSBleHRlbmRzIFBhcnNlcjxpbmZlciBQYXJzZWQ+XG4gICAgPyBQYXJzZWQgZXh0ZW5kcyBVbmlzdE5vZGVcbiAgICAgID8gUGFyc2VkXG4gICAgICA6IEN1cnJlbnRcbiAgICA6IEN1cnJlbnRcblxuZnVuY3Rpb24gcmVhZFZhbHVlKGZpbGU6IENvbXBhdGlibGUgfCB1bmRlZmluZWQpIHtcbiAgcmV0dXJuIHR5cGVvZiBmaWxlID09PSBcInN0cmluZ1wiID8gZmlsZSA6IGZpbGU/LnZhbHVlXG59XG5cbmZ1bmN0aW9uIHJlYWRQYXRoKGZpbGU6IENvbXBhdGlibGUgfCB1bmRlZmluZWQpIHtcbiAgcmV0dXJuIHR5cGVvZiBmaWxlID09PSBcInN0cmluZ1wiID8gdW5kZWZpbmVkIDogZmlsZT8ucGF0aFxufVxuXG4vLyBOYXRpdmUgc3RhZ2VzJyBkYXRhIGZpcnN0LCB0aGVuIHdoYXQgSmF2YVNjcmlwdCBwbHVnaW5zIHN0b3JlZCBvdmVyIGl0XG5mdW5jdGlvbiBtZXJnZURhdGEocmVzdWx0OiBWRmlsZSwgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBWRmlsZSB7XG4gIHJldHVybiB7IC4uLnJlc3VsdCwgZGF0YTogeyAuLi5yZXN1bHQuZGF0YSwgLi4uZGF0YSB9IH1cbn1cblxuZnVuY3Rpb24gd2l0aFBhdGgoZmlsZTogVkZpbGUsIGRvY3VtZW50OiBDb21wYXRpYmxlKSB7XG4gIGNvbnN0IHBhdGggPSByZWFkUGF0aChkb2N1bWVudClcbiAgcmV0dXJuIHBhdGggPT09IHVuZGVmaW5lZCA/IGZpbGUgOiB7IC4uLmZpbGUsIHBhdGggfVxufVxuIl19
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbW9kZWxzL3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUN6RSxPQUFPLEVBQWtCLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFNL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFbEQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFDcEIsT0FBTyxDQUFnQjtJQUN2QixJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUE7SUFDbEMsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFnQixDQUFBO0lBQ2hDLFNBQVMsR0FBRyxLQUFLLENBQUE7SUFDakIsT0FBTyxHQUFHLEtBQUssQ0FBQTtJQUVmLFlBQVksTUFBc0I7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUE7SUFDdkIsQ0FBQztJQVdELG1GQUFtRjtJQUNuRixHQUFHLENBQ0QsS0FBNEQsRUFDNUQsR0FBRyxPQUFrQjtRQUVyQixJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2xELE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLENBQUMsUUFBa0IsRUFBRSxVQUFxQixFQUFFLEVBQUUs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LFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFBO0FBQzFELENBQUM7QUFFRCxzRkFBc0Y7QUFDdEYsdUZBQXVGO0FBQ3ZGLFNBQVMsVUFBVSxDQUFDLE1BQWtCLEVBQUUsUUFBb0IsRUFBRSxJQUFlO0lBQzNFLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQTtJQUNsQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUTtTQUM3QixLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUNuQixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3pELE1BQU0sSUFBSSxHQUFVO1FBQ2xCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztRQUNuQixRQUFRLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxHQUFHLFFBQVEsQ0FBQztRQUNqQyxJQUFJLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFO0tBQ3hDLENBQUE7SUFDRCxPQUFPLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQTtBQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNBdHRhY2hlciB9IGZyb20gXCIuLi9hY3Rpb25zL2F0dGFjaGVyL2NoZWNrLnRzXCJcbmltcG9ydCB7IGlzUGxhaW5PYmplY3QsIG1lcmdlT3B0aW9ucyB9IGZyb20gXCIuLi9hY3Rpb25zL29wdGlvbnMvbWVyZ2UudHNcIlxuaW1wb3J0IHsgdHlwZSBIb3N0RW50cnksIG1hcFBsdWdnYWJsZSB9IGZyb20gXCIuLi9hY3Rpb25zL3BsdWdnYWJsZS9tYXAudHNcIlxuaW1wb3J0IHsgZmluaXNoUnVuIH0gZnJvbSBcIi4uL2FjdGlvbnMvcnVuL2ZpbmlzaC50c1wiXG5pbXBvcnQgeyBpc1RyYW5zZm9ybWVyIH0gZnJvbSBcIi4uL2FjdGlvbnMvdHJhbnNmb3JtZXIvY2hlY2sudHNcIlxuaW1wb3J0IHR5cGUgeyBOb2RlIGFzIFVuaXN0Tm9kZSB9IGZyb20gXCJ1bmlzdFwiXG5pbXBvcnQgdHlwZSB7IE5hdGl2ZUZpbGUsIE5hdGl2ZVBpcGVsaW5lIH0gZnJvbSBcIi4vYWRkb24udHNcIlxuaW1wb3J0IHR5cGUgeyBDb21wYXRpYmxlLCBOb2RlLCBWRmlsZSB9IGZyb20gXCIuL2ZpbGUudHNcIlxuaW1wb3J0IHR5cGUgeyBIb3N0IH0gZnJvbSBcIi4vaG9zdC50c1wiXG5pbXBvcnQgdHlwZSB7IEF0dGFjaGVyLCBQYXJzZXIsIFBsdWdnYWJsZSwgUGx1Z2dhYmxlTGlzdCwgUHJlc2V0IH0gZnJvbSBcIi4vcGx1Z2luLnRzXCJcbmltcG9ydCB7IEhvc3RGaWxlLCBIb3N0TWVzc2FnZSB9IGZyb20gXCIuL3ZmaWxlLnRzXCJcblxuLyoqXG4gKiB1bmlmaWVkJ3MgcHJvY2Vzc29yIG92ZXIgdGhlIG5hdGl2ZSBwaXBlbGluZTsgZXZlcnkgY2FsbCBpcyB0aGUgY3JhdGUncywgZXhjZXB0IHRoYXRcbiAqIEphdmFTY3JpcHQgcGx1Z2lucyBydW4gaGVyZSB3aGVuIGEgcnVuIHBhdXNlcyBiZWZvcmUgdGhlbS5cbiAqL1xuZXhwb3J0IGNsYXNzIFByb2Nlc3NvcjxUcmVlIGV4dGVuZHMgVW5pc3ROb2RlID0gTm9kZT4ge1xuICAjbmF0aXZlOiBOYXRpdmVQaXBlbGluZVxuICAjaWRzID0gbmV3IE1hcDxBdHRhY2hlciwgbnVtYmVyPigpXG4gICNob3N0cyA9IG5ldyBNYXA8bnVtYmVyLCBIb3N0PigpXG4gICNhdHRhY2hlZCA9IGZhbHNlXG4gICNmcm96ZW4gPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKG5hdGl2ZTogTmF0aXZlUGlwZWxpbmUpIHtcbiAgICB0aGlzLiNuYXRpdmUgPSBuYXRpdmVcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBwbHVnaW4sIGEgbGlzdCBvZiB0aGVtIG9yIGEgcHJlc2V0OyBhIHBsdWdpbiB1c2VkIGFnYWluIGlzIHJlY29uZmlndXJlZC4gQVxuICAgKiBKYXZhU2NyaXB0IHBsdWdpbiBpcyBhbiBhdHRhY2hlciwgY2FsbGVkIHdpdGggdGhlIHByb2Nlc3NvciBhbmQgaXRzIG9wdGlvbnMgYXQgZnJlZXplLlxuICAgKiBBIHBhcnNlciwgc3VjaCBhcyBgbWQucGFyc2UoKWAsIHR5cGVzIHRoZSB0cmVlIGBwYXJzZWAgcmV0dXJucy5cbiAgICovXG4gIHVzZTxWYWx1ZSBleHRlbmRzIFBsdWdnYWJsZSB8IFBsdWdnYWJsZUxpc3QgfCBQcmVzZXQgfCBudWxsIHwgdW5kZWZpbmVkPihcbiAgICB2YWx1ZTogVmFsdWUsXG4gICAgLi4ub3B0aW9uczogdW5rbm93bltdXG4gICk6IFByb2Nlc3NvcjxQYXJzZWRUcmVlPFZhbHVlLCBUcmVlPj5cbiAgLy8gYSBwYXJzZXIgcmV0eXBlcyB0aGlzIHNhbWUgcHJvY2Vzc29yOiB0aGUgdHJlZSBpdCBwYXJzZXMgbGl2ZXMgaW4gdGhlIHR5cGUgYWxvbmVcbiAgdXNlKFxuICAgIHZhbHVlOiBQbHVnZ2FibGUgfCBQbHVnZ2FibGVMaXN0IHwgUHJlc2V0IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICAuLi5vcHRpb25zOiB1bmtub3duW11cbiAgKTogUHJvY2Vzc29yPFVuaXN0Tm9kZT4ge1xuICAgIGlmIChpc0F0dGFjaGVyKHZhbHVlKSkge1xuICAgICAgdGhpcy4jbmF0aXZlLnVzZShbdGhpcy4jcmVnaXN0ZXIodmFsdWUsIG9wdGlvbnMpXSlcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIGNvbnN0IHJlZ2lzdGVyID0gKGF0dGFjaGVyOiBBdHRhY2hlciwgcGFyYW1ldGVyczogdW5rbm93bltdKSA9PlxuICAgICAgdGhpcy4jcmVnaXN0ZXIoYXR0YWNoZXIsIHBhcmFtZXRlcnMpXG4gICAgdGhpcy4jbmF0aXZlLnVzZShtYXBQbHVnZ2FibGUodmFsdWUgPz8gbnVsbCwgcmVnaXN0ZXIpLCBvcHRpb25zWzBdKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKiogQWxsIGRhdGEsIG9yIHRoZSB2YWx1ZSB1bmRlciBga2V5YC4gKi9cbiAgZGF0YSgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBkYXRhKGtleTogc3RyaW5nKTogdW5rbm93blxuICAvKiogU2V0IHRoZSB2YWx1ZSB1bmRlciBga2V5YCwgb3IgcmVwbGFjZSBhbGwgZGF0YS4gKi9cbiAgZGF0YShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB0aGlzXG4gIGRhdGEoZGF0YXNldDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB0aGlzXG4gIGRhdGEoa2V5Pzogc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIC4uLnZhbHVlOiB1bmtub3duW10pIHtcbiAgICBpZiAodHlwZW9mIGtleSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgdGhpcy4jbmF0aXZlLnJlcGxhY2VEYXRhKGtleSlcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIGlmIChrZXkgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLiNuYXRpdmUuc2V0RGF0YShrZXksIHZhbHVlWzBdKVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuI25hdGl2ZS5kYXRhKGtleSlcbiAgfVxuXG4gIC8qKiBBdHRhY2ggZXZlcnkgcGx1Z2luOyBsYXRlciBgdXNlYCBhbmQgYGRhdGFgIHNldHRlcnMgZmFpbC4gKi9cbiAgZnJlZXplKCkge1xuICAgIHRoaXMuI2F0dGFjaCgpXG4gICAgdGhpcy4jZnJlZXplTmF0aXZlKClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqIFBhcnNlIGEgZG9jdW1lbnQgaW50byBhIHRyZWUuICovXG4gIHBhcnNlKGRvY3VtZW50OiBDb21wYXRpYmxlKSB7XG4gICAgdGhpcy4jYXR0YWNoKClcbiAgICBjb25zdCB0cmVlOiBUcmVlID0gSlNPTi5wYXJzZSh0aGlzLiNuYXRpdmUucGFyc2UocmVhZFZhbHVlKGRvY3VtZW50KSA/PyBcIlwiKSlcbiAgICByZXR1cm4gdHJlZVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1biB0aGUgdHJhbnNmb3JtcywgZmluaXNoaW5nIGFzeW5jaHJvbm91cyBzdGFnZXM7IGBmaWxlYCwgdGhlIHRleHQgYHRyZWVgIHdhcyBwYXJzZWRcbiAgICogZnJvbSwgbGV0cyBicmlkZ2VzIHJlYWQgaXQgYW5kIGtlZXBzIHBvc2l0aW9ucyBpbiB0aGUgcmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgcnVuKHRyZWU6IFVuaXN0Tm9kZSwgZmlsZT86IENvbXBhdGlibGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHJlYWRWYWx1ZShmaWxlKVxuICAgIGlmICghdGhpcy4jYXR0YWNoKCkpIHJldHVybiByZWFkTm9kZSh0aGlzLiNuYXRpdmUucnVuKEpTT04uc3RyaW5naWZ5KHRyZWUpLCB2YWx1ZSkpXG4gICAgY29uc3QgcnVuID0gdGhpcy4jbmF0aXZlLnN0YXJ0UnVuKEpTT04uc3RyaW5naWZ5KHRyZWUpLCB2YWx1ZSwgZmFsc2UpXG4gICAgY29uc3QgaG9zdCA9IG5ldyBIb3N0RmlsZSh7IHZhbHVlLCBwYXRoOiByZWFkUGF0aChmaWxlKSB9KVxuICAgIGF3YWl0IGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlOiBob3N0LCBzeW5jOiBmYWxzZSwgY2FsbDogXCJydW5cIiB9KVxuICAgIHJldHVybiByZWFkTm9kZShydW4ucmVzdWx0KCkpXG4gIH1cblxuICAvKiogUnVuIHRoZSB0cmFuc2Zvcm1zOyBmYWlscyB3aXRoIGBhc3luYy1pbi1zeW5jYCBvbiBhbiBhc3luY2hyb25vdXMgc3RhZ2UuICovXG4gIHJ1blN5bmModHJlZTogVW5pc3ROb2RlLCBmaWxlPzogQ29tcGF0aWJsZSkge1xuICAgIGNvbnN0IHZhbHVlID0gcmVhZFZhbHVlKGZpbGUpXG4gICAgaWYgKCF0aGlzLiNhdHRhY2goKSlcbiAgICAgIHJldHVybiByZWFkTm9kZSh0aGlzLiNuYXRpdmUucnVuU3luYyhKU09OLnN0cmluZ2lmeSh0cmVlKSwgdmFsdWUpKVxuICAgIGNvbnN0IHJ1biA9IHRoaXMuI25hdGl2ZS5zdGFydFJ1bihKU09OLnN0cmluZ2lmeSh0cmVlKSwgdmFsdWUsIHRydWUpXG4gICAgY29uc3QgaG9zdCA9IG5ldyBIb3N0RmlsZSh7IHZhbHVlLCBwYXRoOiByZWFkUGF0aChmaWxlKSB9KVxuICAgIHZvaWQgZmluaXNoUnVuKHsgcnVuLCBob3N0czogdGhpcy4jaG9zdHMsIGZpbGU6IGhvc3QsIHN5bmM6IHRydWUsIGNhbGw6IFwicnVuXCIgfSlcbiAgICByZXR1cm4gcmVhZE5vZGUocnVuLnJlc3VsdCgpKVxuICB9XG5cbiAgLyoqIENvbXBpbGUgYSB0cmVlLCBydW5uaW5nIG5vIHRyYW5zZm9ybS4gKi9cbiAgc3RyaW5naWZ5KHRyZWU6IFVuaXN0Tm9kZSkge1xuICAgIHRoaXMuI2F0dGFjaCgpXG4gICAgcmV0dXJuIHRoaXMuI25hdGl2ZS5zdHJpbmdpZnkoSlNPTi5zdHJpbmdpZnkodHJlZSkpXG4gIH1cblxuICAvKiogUGFyc2UsIHJ1biBhbmQgY29tcGlsZSBhIGRvY3VtZW50LCBmaW5pc2hpbmcgYXN5bmNocm9ub3VzIHN0YWdlcy4gKi9cbiAgYXN5bmMgcHJvY2Vzcyhkb2N1bWVudDogQ29tcGF0aWJsZSk6IFByb21pc2U8VkZpbGU+IHtcbiAgICBjb25zdCB0ZXh0ID0gcmVhZFZhbHVlKGRvY3VtZW50KSA/PyBcIlwiXG4gICAgaWYgKCF0aGlzLiNhdHRhY2goKSkge1xuICAgICAgdGhpcy4jZnJlZXplTmF0aXZlKClcbiAgICAgIGNvbnN0IG91dGNvbWUgPSBhd2FpdCB0aGlzLiNuYXRpdmUucHJvY2Vzcyh0ZXh0LCByZWFkUGF0aChkb2N1bWVudCkpXG4gICAgICBpZiAob3V0Y29tZS5lcnJvcilcbiAgICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3Iob3V0Y29tZS5lcnJvci5tZXNzYWdlKSwgb3V0Y29tZS5lcnJvcilcbiAgICAgIGlmICghb3V0Y29tZS5maWxlKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJwcm9jZXNzIHNldHRsZWQgd2l0aCBuZWl0aGVyIGEgZmlsZSBub3IgYW4gZXJyb3JcIilcbiAgICAgIHJldHVybiByZWFkUmVzdWx0KG91dGNvbWUuZmlsZSwgZG9jdW1lbnQpXG4gICAgfVxuICAgIGNvbnN0IHJ1biA9IHRoaXMuI25hdGl2ZS5zdGFydFByb2Nlc3ModGV4dCwgZmFsc2UsIHJlYWRQYXRoKGRvY3VtZW50KSlcbiAgICBjb25zdCBmaWxlID0gbmV3IEhvc3RGaWxlKHsgdmFsdWU6IHJ1bi52YWx1ZSgpID8/IHRleHQsIHBhdGg6IHJlYWRQYXRoKGRvY3VtZW50KSB9KVxuICAgIGF3YWl0IGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlLCBzeW5jOiBmYWxzZSwgY2FsbDogXCJwcm9jZXNzXCIgfSlcbiAgICByZXR1cm4gcmVhZFJlc3VsdChyZWFkRmlsZShydW4ucmVzdWx0KCkpLCBkb2N1bWVudCwgZmlsZSlcbiAgfVxuXG4gIC8qKiBQYXJzZSwgcnVuIGFuZCBjb21waWxlIGEgZG9jdW1lbnQ7IGZhaWxzIHdpdGggYGFzeW5jLWluLXN5bmNgIG9uIGFuIGFzeW5jaHJvbm91cyBzdGFnZS4gKi9cbiAgcHJvY2Vzc1N5bmMoZG9jdW1lbnQ6IENvbXBhdGlibGUpOiBWRmlsZSB7XG4gICAgY29uc3QgdGV4dCA9IHJlYWRWYWx1ZShkb2N1bWVudCkgPz8gXCJcIlxuICAgIGlmICghdGhpcy4jYXR0YWNoKCkpXG4gICAgICByZXR1cm4gcmVhZFJlc3VsdCh0aGlzLiNuYXRpdmUucHJvY2Vzc1N5bmModGV4dCwgcmVhZFBhdGgoZG9jdW1lbnQpKSwgZG9jdW1lbnQpXG4gICAgY29uc3QgcnVuID0gdGhpcy4jbmF0aXZlLnN0YXJ0UHJvY2Vzcyh0ZXh0LCB0cnVlLCByZWFkUGF0aChkb2N1bWVudCkpXG4gICAgY29uc3QgZmlsZSA9IG5ldyBIb3N0RmlsZSh7IHZhbHVlOiBydW4udmFsdWUoKSA/PyB0ZXh0LCBwYXRoOiByZWFkUGF0aChkb2N1bWVudCkgfSlcbiAgICB2b2lkIGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlLCBzeW5jOiB0cnVlLCBjYWxsOiBcInByb2Nlc3NcIiB9KVxuICAgIHJldHVybiByZWFkUmVzdWx0KHJlYWRGaWxlKHJ1bi5yZXN1bHQoKSksIGRvY3VtZW50LCBmaWxlKVxuICB9XG5cbiAgLy8gT25jZSBvbmx5OiBgZnJlZXplYCBib3Jyb3dzIHRoZSBuYXRpdmUgcGlwZWxpbmUgbXV0YWJseSwgd2hpY2ggbmFwaSByZWZ1c2VzIHdoaWxlIGFuXG4gIC8vIGFzeW5jIGBwcm9jZXNzYCBzdGlsbCBob2xkcyBpdFxuICAjZnJlZXplTmF0aXZlKCkge1xuICAgIGlmICh0aGlzLiNmcm96ZW4pIHJldHVyblxuICAgIHRoaXMuI2Zyb3plbiA9IHRydWVcbiAgICB0aGlzLiNuYXRpdmUuZnJlZXplKClcbiAgfVxuXG4gIC8vIHVuaWZpZWQncyBhZGRQbHVnaW46IHRoZSBzYW1lIGF0dGFjaGVyIGlzIG9uZSBwbHVnaW4sIGl0cyBvYmplY3Qgb3B0aW9ucyBtZXJnZWRcbiAgI3JlZ2lzdGVyKGF0dGFjaGVyOiBBdHRhY2hlciwgcGFyYW1ldGVyczogdW5rbm93bltdKTogSG9zdEVudHJ5IHtcbiAgICBsZXQgaWQgPSB0aGlzLiNpZHMuZ2V0KGF0dGFjaGVyKVxuICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZCA9IHRoaXMuI2lkcy5zaXplXG4gICAgICB0aGlzLiNpZHMuc2V0KGF0dGFjaGVyLCBpZClcbiAgICAgIHRoaXMuI2hvc3RzLnNldChpZCwgeyBhdHRhY2hlciwgcGFyYW1ldGVycyB9KVxuICAgICAgcmV0dXJuIFt7IGhvc3Q6IGlkIH0sIHBhcmFtZXRlcnNbMF0gIT09IGZhbHNlXVxuICAgIH1cbiAgICBjb25zdCBob3N0ID0gdGhpcy4jaG9zdHMuZ2V0KGlkKVxuICAgIGlmICghaG9zdCB8fCBwYXJhbWV0ZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFt7IGhvc3Q6IGlkIH1dXG4gICAgY29uc3QgW3ByaW1hcnksIC4uLnJlc3RdID0gcGFyYW1ldGVyc1xuICAgIGNvbnN0IG1lcmdlZCA9XG4gICAgICBpc1BsYWluT2JqZWN0KGhvc3QucGFyYW1ldGVyc1swXSkgJiYgaXNQbGFpbk9iamVjdChwcmltYXJ5KVxuICAgICAgICA/IG1lcmdlT3B0aW9ucyhob3N0LnBhcmFtZXRlcnNbMF0sIHByaW1hcnkpXG4gICAgICAgIDogcHJpbWFyeVxuICAgIGhvc3QucGFyYW1ldGVycyA9IFttZXJnZWQsIC4uLnJlc3RdXG4gICAgcmV0dXJuIFt7IGhvc3Q6IGlkIH0sIG1lcmdlZCAhPT0gZmFsc2VdXG4gIH1cblxuICAvLyBBdHRhY2hlcnMgcnVuIG9uY2UsIGJlZm9yZSB0aGUgbmF0aXZlIHBpcGVsaW5lIGZyZWV6ZXMsIHNvIHRoZXkgY2FuIHN0aWxsIHNldCBkYXRhO1xuICAvLyB3aGV0aGVyIGFueSBKYXZhU2NyaXB0IHBsdWdpbiBpcyBvbiBkZWNpZGVzIGlmIHJ1bnMgcGF1c2UgZm9yIHRoZW1cbiAgI2F0dGFjaCgpIHtcbiAgICBpZiAoIXRoaXMuI2F0dGFjaGVkKSB7XG4gICAgICB0aGlzLiNhdHRhY2hlZCA9IHRydWVcbiAgICAgIGZvciAoY29uc3QgaWQgb2YgdGhpcy4jbmF0aXZlLmhvc3RzKCkpIHtcbiAgICAgICAgY29uc3QgaG9zdCA9IHRoaXMuI2hvc3RzLmdldChpZClcbiAgICAgICAgaWYgKCFob3N0KSBjb250aW51ZVxuICAgICAgICBjb25zdCBbcHJpbWFyeSwgLi4ucmVzdF0gPSBob3N0LnBhcmFtZXRlcnNcbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHByaW1hcnkgPT09IHRydWUgPyBbdW5kZWZpbmVkLCAuLi5yZXN0XSA6IGhvc3QucGFyYW1ldGVyc1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lcjogdW5rbm93biA9IFJlZmxlY3QuYXBwbHkoaG9zdC5hdHRhY2hlciwgdGhpcywgcGFyYW1ldGVycylcbiAgICAgICAgaWYgKGlzVHJhbnNmb3JtZXIodHJhbnNmb3JtZXIpKSBob3N0LnRyYW5zZm9ybWVyID0gdHJhbnNmb3JtZXJcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuI25hdGl2ZS5ob3N0cygpLmxlbmd0aCA+IDBcbiAgfVxufVxuXG4vLyBBIHBsdWdpbiB3aXRob3V0IHRoZSBtYXJrZXIgaW5mZXJzIGB1bmtub3duYCBmcm9tIHRoZSBvcHRpb25hbCBrZXksIGtlZXBpbmcgdGhlIHRyZWVcbnR5cGUgUGFyc2VkVHJlZTxWYWx1ZSwgQ3VycmVudD4gPVxuICBWYWx1ZSBleHRlbmRzIFBhcnNlcjxpbmZlciBQYXJzZWQ+XG4gICAgPyBQYXJzZWQgZXh0ZW5kcyBVbmlzdE5vZGVcbiAgICAgID8gUGFyc2VkXG4gICAgICA6IEN1cnJlbnRcbiAgICA6IEN1cnJlbnRcblxuZnVuY3Rpb24gcmVhZE5vZGUodGV4dDogc3RyaW5nKSB7XG4gIGNvbnN0IG5vZGU6IE5vZGUgPSBKU09OLnBhcnNlKHRleHQpXG4gIHJldHVybiBub2RlXG59XG5cbmZ1bmN0aW9uIHJlYWRGaWxlKHRleHQ6IHN0cmluZykge1xuICBjb25zdCBmaWxlOiBOYXRpdmVGaWxlID0gSlNPTi5wYXJzZSh0ZXh0KVxuICByZXR1cm4gZmlsZVxufVxuXG5mdW5jdGlvbiByZWFkVmFsdWUoZmlsZTogQ29tcGF0aWJsZSB8IHVuZGVmaW5lZCkge1xuICByZXR1cm4gdHlwZW9mIGZpbGUgPT09IFwic3RyaW5nXCIgPyBmaWxlIDogZmlsZT8udmFsdWVcbn1cblxuZnVuY3Rpb24gcmVhZFBhdGgoZmlsZTogQ29tcGF0aWJsZSB8IHVuZGVmaW5lZCkge1xuICByZXR1cm4gdHlwZW9mIGZpbGUgPT09IFwic3RyaW5nXCIgPyB1bmRlZmluZWQgOiBmaWxlPy5wYXRoXG59XG5cbi8vIFRoZSBjcmF0ZSdzIG1lc3NhZ2VzIHN0YXJ0IHdpdGggdGhlIGhvc3QgZmlsZSdzLCBpbiBvcmRlcjogdGhlIHBsdWdpbnMnIG93biBvYmplY3RzXG4vLyBzdGF5LCBzbyBgZmF0YWxgLCBgdXJsYCBhbmQgYG5vdGVgIHN1cnZpdmU7IG5hdGl2ZSBkYXRhIGZpcnN0LCBwbHVnaW5zJyBkYXRhIG92ZXIgaXRcbmZ1bmN0aW9uIHJlYWRSZXN1bHQobmF0aXZlOiBOYXRpdmVGaWxlLCBkb2N1bWVudDogQ29tcGF0aWJsZSwgaG9zdD86IEhvc3RGaWxlKTogVkZpbGUge1xuICBjb25zdCBwYXRoID0gcmVhZFBhdGgoZG9jdW1lbnQpXG4gIGNvbnN0IGtub3duID0gaG9zdD8ubWVzc2FnZXMgPz8gW11cbiAgY29uc3QgcmVwb3J0ZWQgPSBuYXRpdmUubWVzc2FnZXNcbiAgICAuc2xpY2Uoa25vd24ubGVuZ3RoKVxuICAgIC5tYXAobWVzc2FnZSA9PiBIb3N0TWVzc2FnZS5mcm9tTWVzc2FnZShtZXNzYWdlLCBwYXRoKSlcbiAgY29uc3QgZmlsZTogVkZpbGUgPSB7XG4gICAgdmFsdWU6IG5hdGl2ZS52YWx1ZSxcbiAgICBtZXNzYWdlczogWy4uLmtub3duLCAuLi5yZXBvcnRlZF0sXG4gICAgZGF0YTogeyAuLi5uYXRpdmUuZGF0YSwgLi4uaG9zdD8uZGF0YSB9LFxuICB9XG4gIHJldHVybiBwYXRoID09PSB1bmRlZmluZWQgPyBmaWxlIDogeyAuLi5maWxlLCBwYXRoIH1cbn1cbiJdfQ==
@@ -5,10 +5,12 @@ export interface Platform {
5
5
  target: string;
6
6
  /** The addon's file name at the package's root. */
7
7
  addon: string;
8
+ /** The C library a Linux addon links against; npm skips the package on the other one. */
9
+ libc?: "glibc" | "musl";
8
10
  }
9
11
  /** The npm package users install; it pulls in the one platform package that matches. */
10
12
  export declare const PACKAGE_NAME = "textlane";
11
13
  /** An environment variable that points at an addon to load instead of the installed one. */
12
14
  export declare const ADDON_ENV = "TEXTLANE_ADDON";
13
- /** Every published platform, keyed by `${process.platform}-${process.arch}`. */
15
+ /** Every published platform, keyed by `${process.platform}-${process.arch}`, plus `-musl`. */
14
16
  export declare const PLATFORMS: Record<string, Platform>;
package/build/settings.js CHANGED
@@ -2,16 +2,27 @@
2
2
  export const PACKAGE_NAME = "textlane";
3
3
  /** An environment variable that points at an addon to load instead of the installed one. */
4
4
  export const ADDON_ENV = "TEXTLANE_ADDON";
5
- /** Every published platform, keyed by `${process.platform}-${process.arch}`. */
5
+ /** Every published platform, keyed by `${process.platform}-${process.arch}`, plus `-musl`. */
6
6
  export const PLATFORMS = {
7
7
  "linux-x64": createPlatform("linux-x64", "x86_64-unknown-linux-gnu"),
8
8
  "linux-arm64": createPlatform("linux-arm64", "aarch64-unknown-linux-gnu"),
9
+ "linux-x64-musl": createPlatform("linux-x64-musl", "x86_64-unknown-linux-musl"),
10
+ "linux-arm64-musl": createPlatform("linux-arm64-musl", "aarch64-unknown-linux-musl"),
9
11
  "darwin-x64": createPlatform("darwin-x64", "x86_64-apple-darwin"),
10
12
  "darwin-arm64": createPlatform("darwin-arm64", "aarch64-apple-darwin"),
11
13
  "win32-x64": createPlatform("win32-x64", "x86_64-pc-windows-msvc"),
12
14
  "win32-arm64": createPlatform("win32-arm64", "aarch64-pc-windows-msvc"),
13
15
  };
14
16
  function createPlatform(key, target) {
15
- return { packageName: `@textlane/${key}`, target, addon: "textlane.node" };
17
+ const platform = {
18
+ packageName: `@textlane/${key}`,
19
+ target,
20
+ addon: "textlane.node",
21
+ };
22
+ if (target.endsWith("-linux-gnu"))
23
+ platform.libc = "glibc";
24
+ if (target.endsWith("-linux-musl"))
25
+ platform.libc = "musl";
26
+ return platform;
16
27
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSx3RkFBd0Y7QUFDeEYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQTtBQUV0Qyw0RkFBNEY7QUFDNUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFBO0FBRXpDLGdGQUFnRjtBQUNoRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQTZCO0lBQ2pELFdBQVcsRUFBRSxjQUFjLENBQUMsV0FBVyxFQUFFLDBCQUEwQixDQUFDO0lBQ3BFLGFBQWEsRUFBRSxjQUFjLENBQUMsYUFBYSxFQUFFLDJCQUEyQixDQUFDO0lBQ3pFLFlBQVksRUFBRSxjQUFjLENBQUMsWUFBWSxFQUFFLHFCQUFxQixDQUFDO0lBQ2pFLGNBQWMsRUFBRSxjQUFjLENBQUMsY0FBYyxFQUFFLHNCQUFzQixDQUFDO0lBQ3RFLFdBQVcsRUFBRSxjQUFjLENBQUMsV0FBVyxFQUFFLHdCQUF3QixDQUFDO0lBQ2xFLGFBQWEsRUFBRSxjQUFjLENBQUMsYUFBYSxFQUFFLHlCQUF5QixDQUFDO0NBQ3hFLENBQUE7QUFFRCxTQUFTLGNBQWMsQ0FBQyxHQUFXLEVBQUUsTUFBYztJQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsQ0FBQTtBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBQbGF0Zm9ybSB7XG4gIC8qKiBUaGUgbnBtIHBhY2thZ2UgdGhhdCBjYXJyaWVzIHRoaXMgcGxhdGZvcm0ncyBhZGRvbi4gKi9cbiAgcGFja2FnZU5hbWU6IHN0cmluZ1xuICAvKiogVGhlIFJ1c3QgdGFyZ2V0IHRoZSBhZGRvbiBpcyBjb21waWxlZCBmb3IuICovXG4gIHRhcmdldDogc3RyaW5nXG4gIC8qKiBUaGUgYWRkb24ncyBmaWxlIG5hbWUgYXQgdGhlIHBhY2thZ2UncyByb290LiAqL1xuICBhZGRvbjogc3RyaW5nXG59XG5cbi8qKiBUaGUgbnBtIHBhY2thZ2UgdXNlcnMgaW5zdGFsbDsgaXQgcHVsbHMgaW4gdGhlIG9uZSBwbGF0Zm9ybSBwYWNrYWdlIHRoYXQgbWF0Y2hlcy4gKi9cbmV4cG9ydCBjb25zdCBQQUNLQUdFX05BTUUgPSBcInRleHRsYW5lXCJcblxuLyoqIEFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRoYXQgcG9pbnRzIGF0IGFuIGFkZG9uIHRvIGxvYWQgaW5zdGVhZCBvZiB0aGUgaW5zdGFsbGVkIG9uZS4gKi9cbmV4cG9ydCBjb25zdCBBRERPTl9FTlYgPSBcIlRFWFRMQU5FX0FERE9OXCJcblxuLyoqIEV2ZXJ5IHB1Ymxpc2hlZCBwbGF0Zm9ybSwga2V5ZWQgYnkgYCR7cHJvY2Vzcy5wbGF0Zm9ybX0tJHtwcm9jZXNzLmFyY2h9YC4gKi9cbmV4cG9ydCBjb25zdCBQTEFURk9STVM6IFJlY29yZDxzdHJpbmcsIFBsYXRmb3JtPiA9IHtcbiAgXCJsaW51eC14NjRcIjogY3JlYXRlUGxhdGZvcm0oXCJsaW51eC14NjRcIiwgXCJ4ODZfNjQtdW5rbm93bi1saW51eC1nbnVcIiksXG4gIFwibGludXgtYXJtNjRcIjogY3JlYXRlUGxhdGZvcm0oXCJsaW51eC1hcm02NFwiLCBcImFhcmNoNjQtdW5rbm93bi1saW51eC1nbnVcIiksXG4gIFwiZGFyd2luLXg2NFwiOiBjcmVhdGVQbGF0Zm9ybShcImRhcndpbi14NjRcIiwgXCJ4ODZfNjQtYXBwbGUtZGFyd2luXCIpLFxuICBcImRhcndpbi1hcm02NFwiOiBjcmVhdGVQbGF0Zm9ybShcImRhcndpbi1hcm02NFwiLCBcImFhcmNoNjQtYXBwbGUtZGFyd2luXCIpLFxuICBcIndpbjMyLXg2NFwiOiBjcmVhdGVQbGF0Zm9ybShcIndpbjMyLXg2NFwiLCBcIng4Nl82NC1wYy13aW5kb3dzLW1zdmNcIiksXG4gIFwid2luMzItYXJtNjRcIjogY3JlYXRlUGxhdGZvcm0oXCJ3aW4zMi1hcm02NFwiLCBcImFhcmNoNjQtcGMtd2luZG93cy1tc3ZjXCIpLFxufVxuXG5mdW5jdGlvbiBjcmVhdGVQbGF0Zm9ybShrZXk6IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcpOiBQbGF0Zm9ybSB7XG4gIHJldHVybiB7IHBhY2thZ2VOYW1lOiBgQHRleHRsYW5lLyR7a2V5fWAsIHRhcmdldCwgYWRkb246IFwidGV4dGxhbmUubm9kZVwiIH1cbn1cbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSx3RkFBd0Y7QUFDeEYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQTtBQUV0Qyw0RkFBNEY7QUFDNUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFBO0FBRXpDLDhGQUE4RjtBQUM5RixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQTZCO0lBQ2pELFdBQVcsRUFBRSxjQUFjLENBQUMsV0FBVyxFQUFFLDBCQUEwQixDQUFDO0lBQ3BFLGFBQWEsRUFBRSxjQUFjLENBQUMsYUFBYSxFQUFFLDJCQUEyQixDQUFDO0lBQ3pFLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSwyQkFBMkIsQ0FBQztJQUMvRSxrQkFBa0IsRUFBRSxjQUFjLENBQUMsa0JBQWtCLEVBQUUsNEJBQTRCLENBQUM7SUFDcEYsWUFBWSxFQUFFLGNBQWMsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLENBQUM7SUFDakUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxjQUFjLEVBQUUsc0JBQXNCLENBQUM7SUFDdEUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxXQUFXLEVBQUUsd0JBQXdCLENBQUM7SUFDbEUsYUFBYSxFQUFFLGNBQWMsQ0FBQyxhQUFhLEVBQUUseUJBQXlCLENBQUM7Q0FDeEUsQ0FBQTtBQUVELFNBQVMsY0FBYyxDQUFDLEdBQVcsRUFBRSxNQUFjO0lBQ2pELE1BQU0sUUFBUSxHQUFhO1FBQ3pCLFdBQVcsRUFBRSxhQUFhLEdBQUcsRUFBRTtRQUMvQixNQUFNO1FBQ04sS0FBSyxFQUFFLGVBQWU7S0FDdkIsQ0FBQTtJQUNELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFBRSxRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQTtJQUMxRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBQUUsUUFBUSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUE7SUFDMUQsT0FBTyxRQUFRLENBQUE7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUGxhdGZvcm0ge1xuICAvKiogVGhlIG5wbSBwYWNrYWdlIHRoYXQgY2FycmllcyB0aGlzIHBsYXRmb3JtJ3MgYWRkb24uICovXG4gIHBhY2thZ2VOYW1lOiBzdHJpbmdcbiAgLyoqIFRoZSBSdXN0IHRhcmdldCB0aGUgYWRkb24gaXMgY29tcGlsZWQgZm9yLiAqL1xuICB0YXJnZXQ6IHN0cmluZ1xuICAvKiogVGhlIGFkZG9uJ3MgZmlsZSBuYW1lIGF0IHRoZSBwYWNrYWdlJ3Mgcm9vdC4gKi9cbiAgYWRkb246IHN0cmluZ1xuICAvKiogVGhlIEMgbGlicmFyeSBhIExpbnV4IGFkZG9uIGxpbmtzIGFnYWluc3Q7IG5wbSBza2lwcyB0aGUgcGFja2FnZSBvbiB0aGUgb3RoZXIgb25lLiAqL1xuICBsaWJjPzogXCJnbGliY1wiIHwgXCJtdXNsXCJcbn1cblxuLyoqIFRoZSBucG0gcGFja2FnZSB1c2VycyBpbnN0YWxsOyBpdCBwdWxscyBpbiB0aGUgb25lIHBsYXRmb3JtIHBhY2thZ2UgdGhhdCBtYXRjaGVzLiAqL1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfTkFNRSA9IFwidGV4dGxhbmVcIlxuXG4vKiogQW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdCBwb2ludHMgYXQgYW4gYWRkb24gdG8gbG9hZCBpbnN0ZWFkIG9mIHRoZSBpbnN0YWxsZWQgb25lLiAqL1xuZXhwb3J0IGNvbnN0IEFERE9OX0VOViA9IFwiVEVYVExBTkVfQURET05cIlxuXG4vKiogRXZlcnkgcHVibGlzaGVkIHBsYXRmb3JtLCBrZXllZCBieSBgJHtwcm9jZXNzLnBsYXRmb3JtfS0ke3Byb2Nlc3MuYXJjaH1gLCBwbHVzIGAtbXVzbGAuICovXG5leHBvcnQgY29uc3QgUExBVEZPUk1TOiBSZWNvcmQ8c3RyaW5nLCBQbGF0Zm9ybT4gPSB7XG4gIFwibGludXgteDY0XCI6IGNyZWF0ZVBsYXRmb3JtKFwibGludXgteDY0XCIsIFwieDg2XzY0LXVua25vd24tbGludXgtZ251XCIpLFxuICBcImxpbnV4LWFybTY0XCI6IGNyZWF0ZVBsYXRmb3JtKFwibGludXgtYXJtNjRcIiwgXCJhYXJjaDY0LXVua25vd24tbGludXgtZ251XCIpLFxuICBcImxpbnV4LXg2NC1tdXNsXCI6IGNyZWF0ZVBsYXRmb3JtKFwibGludXgteDY0LW11c2xcIiwgXCJ4ODZfNjQtdW5rbm93bi1saW51eC1tdXNsXCIpLFxuICBcImxpbnV4LWFybTY0LW11c2xcIjogY3JlYXRlUGxhdGZvcm0oXCJsaW51eC1hcm02NC1tdXNsXCIsIFwiYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2xcIiksXG4gIFwiZGFyd2luLXg2NFwiOiBjcmVhdGVQbGF0Zm9ybShcImRhcndpbi14NjRcIiwgXCJ4ODZfNjQtYXBwbGUtZGFyd2luXCIpLFxuICBcImRhcndpbi1hcm02NFwiOiBjcmVhdGVQbGF0Zm9ybShcImRhcndpbi1hcm02NFwiLCBcImFhcmNoNjQtYXBwbGUtZGFyd2luXCIpLFxuICBcIndpbjMyLXg2NFwiOiBjcmVhdGVQbGF0Zm9ybShcIndpbjMyLXg2NFwiLCBcIng4Nl82NC1wYy13aW5kb3dzLW1zdmNcIiksXG4gIFwid2luMzItYXJtNjRcIjogY3JlYXRlUGxhdGZvcm0oXCJ3aW4zMi1hcm02NFwiLCBcImFhcmNoNjQtcGMtd2luZG93cy1tc3ZjXCIpLFxufVxuXG5mdW5jdGlvbiBjcmVhdGVQbGF0Zm9ybShrZXk6IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcpOiBQbGF0Zm9ybSB7XG4gIGNvbnN0IHBsYXRmb3JtOiBQbGF0Zm9ybSA9IHtcbiAgICBwYWNrYWdlTmFtZTogYEB0ZXh0bGFuZS8ke2tleX1gLFxuICAgIHRhcmdldCxcbiAgICBhZGRvbjogXCJ0ZXh0bGFuZS5ub2RlXCIsXG4gIH1cbiAgaWYgKHRhcmdldC5lbmRzV2l0aChcIi1saW51eC1nbnVcIikpIHBsYXRmb3JtLmxpYmMgPSBcImdsaWJjXCJcbiAgaWYgKHRhcmdldC5lbmRzV2l0aChcIi1saW51eC1tdXNsXCIpKSBwbGF0Zm9ybS5saWJjID0gXCJtdXNsXCJcbiAgcmV0dXJuIHBsYXRmb3JtXG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "textlane",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Rust-native text processing pipeline — a unified replacement with native and JavaScript plugins",
5
5
  "keywords": [
6
6
  "ast",
@@ -41,11 +41,13 @@
41
41
  "node": ">=20"
42
42
  },
43
43
  "optionalDependencies": {
44
- "@textlane/linux-x64": "0.3.0",
45
- "@textlane/linux-arm64": "0.3.0",
46
- "@textlane/darwin-x64": "0.3.0",
47
- "@textlane/darwin-arm64": "0.3.0",
48
- "@textlane/win32-x64": "0.3.0",
49
- "@textlane/win32-arm64": "0.3.0"
44
+ "@textlane/linux-x64": "0.5.0",
45
+ "@textlane/linux-arm64": "0.5.0",
46
+ "@textlane/linux-x64-musl": "0.5.0",
47
+ "@textlane/linux-arm64-musl": "0.5.0",
48
+ "@textlane/darwin-x64": "0.5.0",
49
+ "@textlane/darwin-arm64": "0.5.0",
50
+ "@textlane/win32-x64": "0.5.0",
51
+ "@textlane/win32-arm64": "0.5.0"
50
52
  }
51
53
  }
@@ -59,7 +59,7 @@ const file = await textlane()
59
59
  .use(html.stringify({ allowDangerousHtml: true }))
60
60
  .process("# hi")
61
61
  file.value // "<h1>hi</h1>"
62
- file.messages // [{ reason, ruleId, source, place }]
62
+ file.messages // vfile-messages: reason, ruleId, source, place, line, column, fatal
63
63
  ```
64
64
 
65
65
  A domain function returns a descriptor, `{ name: "md.toHtml", options }`, typed from the
@@ -91,7 +91,11 @@ file["value"] # "<h1>hi</h1>"
91
91
  Functions are snake_case (`md.to_html`, `nl.indefinite_article`); their options stay the
92
92
  camelCase keys the plugin takes, typed as `TypedDict`s. `process(text)` and `run(tree)`
93
93
  return directly; `await processor.aprocess(text)` and `await processor.arun(tree)` are their
94
- coroutines. A file and a tree are dicts. Without Python plugins, `process` releases the GIL:
94
+ coroutines. A file and a tree are dicts: after `use(md.parse())`, `html.parse()` or
95
+ `nl.parse()`, `parse` is typed as the `Root` of `textlane.mdast`, `textlane.hast` or
96
+ `textlane.nlcst`, `TypedDict`s named as `@types/mdast`, `hast` and `nlcst` name them (MDX's
97
+ `data.estree` as `textlane.estree.Program`); narrow by comparing `node["type"]`, since a
98
+ checker does not narrow on `"key" in node`. Without Python plugins, `process` releases the GIL:
95
99
  process many documents through one frozen processor from a thread pool, or `asyncio.gather`
96
100
  their `aprocess` calls.
97
101