@workflow/nitro 5.0.0-beta.34 → 5.0.0-beta.35

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.
@@ -1 +1 @@
1
- {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EAEX,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AA+BzC,qBAAa,aAAc,SAAQ,2BAA2B;gBAChD,KAAK,EAAE,KAAK;IAaT,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAWtC;AAED,qBAAa,YAAa,SAAQ,WAAW;;gBAE/B,KAAK,EAAE,KAAK;IAoBf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAkDhC"}
1
+ {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EAEX,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AA+BzC,qBAAa,aAAc,SAAQ,2BAA2B;gBAChD,KAAK,EAAE,KAAK;IAaT,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAWtC;AAED,qBAAa,YAAa,SAAQ,WAAW;;gBAE/B,KAAK,EAAE,KAAK;IAoBf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAqDhC"}
package/dist/builders.js CHANGED
@@ -71,7 +71,7 @@ export class LocalBuilder extends BaseBuilder {
71
71
  // name in its import statement, so we build directly to final names.
72
72
  // (The V1 atomic tmp-file pattern doesn't work here because renaming
73
73
  // the steps file would leave the flow route's import stale.)
74
- const { manifest } = await this.createCombinedBundle({
74
+ const build = await this.createCombinedBundle({
75
75
  inputFiles,
76
76
  stepsOutfile: join(this.#outDir, 'steps.mjs'),
77
77
  flowOutfile: join(this.#outDir, 'workflows.mjs'),
@@ -87,6 +87,8 @@ export class LocalBuilder extends BaseBuilder {
87
87
  // TypeScript imports. In prod, Nitro/Rollup handles those imports.
88
88
  bundleTransitiveLocalStepDependencies: this.config.watch,
89
89
  });
90
+ const { manifest, stepsContext, interimBundleCtx } = build;
91
+ await Promise.all([stepsContext?.dispose(), interimBundleCtx?.dispose()]);
90
92
  await this.createWebhookBundle({
91
93
  outfile: join(this.#outDir, 'webhook.mjs'),
92
94
  bundle: false,
@@ -100,4 +102,4 @@ export class LocalBuilder extends BaseBuilder {
100
102
  });
101
103
  }
102
104
  }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUQsT0FBTyxFQUNMLFdBQVcsRUFDWCx1QkFBdUIsRUFDdkIsMkJBQTJCLEdBQzVCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQWE3QixTQUFTLHVCQUF1QixDQUFDLEtBQVk7SUFDM0MsTUFBTSxRQUFRLEdBQUksS0FBSyxDQUFDLE9BQW1DLENBQUMsU0FBUztRQUNuRSxFQUFFLFFBQVEsQ0FBQztJQUNiLE1BQU0sT0FBTyxHQUFHLFFBQVEsRUFBRSxNQUFNLENBQzlCLENBQUMsS0FBSyxFQUFtQixFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUN0RCxDQUFDO0lBQ0YsT0FBTyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzdELENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLEtBQVk7SUFDdkMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztBQUM3RCxDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxLQUFZO0lBQ3hDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELE1BQU0sT0FBTyxhQUFjLFNBQVEsMkJBQTJCO0lBQzVELFlBQVksS0FBWTtRQUN0QixLQUFLLENBQUM7WUFDSixHQUFHLHVCQUF1QixDQUFDO2dCQUN6QixVQUFVLEVBQUUsS0FBSyxD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RUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRS9DLG9FQUFvRTtRQUNwRSxxRUFBcUU7UUFDckUscUVBQXFFO1FBQ3JFLDZEQUE2RDtRQUM3RCxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDbkQsVUFBVTtZQUNWLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUM7WUFDN0MsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQztZQUNoRCxNQUFNLEVBQUUsS0FBSztZQUNiLHVFQUF1RTtZQUN2RSxxRUFBcUU7WUFDckUsbUVBQW1FO1lBQ25FLDJEQUEyRDtZQUMzRCxpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLG1CQUFtQixFQUFFLElBQUk7WUFDekIsc0VBQXNFO1lBQ3RFLHVFQUF1RTtZQUN2RSxtRUFBbUU7WUFDbkUscUNBQXFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLO1NBQ3pELENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQzdCLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUM7WUFDMUMsTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUFDLENBQUM7UUFFSCxvQkFBb0I7UUFDcEIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQztRQUMvRCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDeEIsa0JBQWtCO1lBQ2xCLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTztZQUN6QixRQUFRO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWtkaXIsIHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7XG4gIEJhc2VCdWlsZGVyLFxuICBjcmVhdGVCYXNlQnVpbGRlckNvbmZpZyxcbiAgVmVyY2VsQnVpbGRPdXRwdXRBUElCdWlsZGVyLFxufSBmcm9tICdAd29ya2Zsb3cvYnVpbGRlcnMnO1xuaW1wb3J0IHR5cGUgeyBOaXRybyB9IGZyb20gJ25pdHJvL3R5cGVzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoZSc7XG5cbi8qKlxuICogRm9yd2FyZCBzdHJpbmcgZW50cmllcyBmcm9tIE5pdHJvJ3MgYGV4dGVybmFscy5leHRlcm5hbGAgY29uZmlnIHRvIHRoZVxuICogd29ya2Zsb3cgYnVpbGRlcidzIGVzYnVpbGQgYGV4dGVybmFsYCBvcHRpb24uIFJlZ0V4cCBhbmQgZnVuY3Rpb24gZW50cmllc1xuICogYXJlIHNraXBwZWQgc2luY2UgZXNidWlsZCdzIGBleHRlcm5hbGAgb25seSBzdXBwb3J0cyBsaXRlcmFsIHN0cmluZ3MuXG4gKlxuICogTm90ZTogYGV4dGVybmFscy5leHRlcm5hbGAgaXMgb24gTml0cm8gdjIncyBvcHRpb25zIHNoYXBlIOKAlCB2MyBkcm9wcGVkIGl0XG4gKiBpbiBmYXZvdXIgb2YgYG5vRXh0ZXJuYWxzYC4gUmVhZGluZyBpdCB0aHJvdWdoIGEgdjItc2hhcGVkIHZpZXcgbGV0cyB1c1xuICogc3RpbGwgcGljayBpdCB1cCBvbiB2MiBzZXR1cHM7IG9uIHYzIHRoZSBjaGFpbmVkIG9wdGlvbmFsIGFjY2VzcyBqdXN0XG4gKiByZXR1cm5zIHVuZGVmaW5lZC5cbiAqL1xudHlwZSBOaXRyb1YyRXh0ZXJuYWxzT3B0aW9ucyA9IHsgZXh0ZXJuYWxzPzogeyBleHRlcm5hbD86IHVua25vd25bXSB9IH07XG5mdW5jdGlvbiBnZXROaXRyb1N0cmluZ0V4dGVybmFscyhuaXRybzogTml0cm8pOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGV4dGVybmFsID0gKG5pdHJvLm9wdGlvbnMgYXMgTml0cm9WMkV4dGVybmFsc09wdGlvbnMpLmV4dGVybmFsc1xuICAgID8uZXh0ZXJuYWw7XG4gIGNvbnN0IHN0cmluZ3MgPSBleHRlcm5hbD8uZmlsdGVyKFxuICAgIChlbnRyeSk6IGVudHJ5IGlzIHN0cmluZyA9PiB0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnXG4gICk7XG4gIHJldHVybiBzdHJpbmdzICYmIHN0cmluZ3MubGVuZ3RoID4gMCA/IHN0cmluZ3MgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldE5pdHJvUHJvamVjdFJvb3Qobml0cm86IE5pdHJvKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5pdHJvLm9wdGlvbnMud29ya3NwYWNlRGlyID8/IG5pdHJvLm9wdGlvbnMucm9vdERpcjtcbn1cblxuZnVuY3Rpb24gZ2V0Tml0cm9Xb3JrZmxvd0RpcnMobml0cm86IE5pdHJvKTogc3RyaW5nW10ge1xuICByZXR1cm4gbml0cm8ub3B0aW9ucy53b3JrZmxvdz8uZGlycyA/PyBbJy4nXTtcbn1cblxuZXhwb3J0IGNsYXNzIFZlcmNlbEJ1aWxkZXIgZXh0ZW5kcyBWZXJjZWxCdWlsZE91dHB1dEFQSUJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihuaXRybzogTml0cm8pIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5jcmVhdGVCYXNlQnVpbGRlckNvbmZpZyh7XG4gICAgICAgIHdvcmtpbmdEaXI6IG5pdHJvLm9wdGlvbnMucm9vdERpcixcbiAgICAgICAgcHJvamVjdFJvb3Q6IGdldE5pdHJvUHJvamVjdFJvb3Qobml0cm8pLFxuICAgICAgICBkaXJzOiBnZXROaXRyb1dvcmtmbG93RGlycyhuaXRybyksXG4gICAgICAgIHJ1bnRpbWU6IG5pdHJvLm9wdGlvbnMud29ya2Zsb3c/LnJ1bnRpbWUsXG4gICAgICAgIHNvdXJjZW1hcDogbml0cm8ub3B0aW9ucy53b3JrZmxvdz8uc291cmNlbWFwLFxuICAgICAgICBleHRlcm5hbFBhY2thZ2VzOiBnZXROaXRyb1N0cmluZ0V4dGVybmFscyhuaXRybyksXG4gICAgICB9KSxcbiAgICAgIGJ1aWxkVGFyZ2V0OiAndmVyY2VsLWJ1aWxkLW91dHB1dC1hcGknLFxuICAgIH0pO1xuICB9XG4gIG92ZXJyaWRlIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbmZpZ1BhdGggPSBqb2luKFxuICAgICAgdGhpcy5jb25maWcud29ya2luZ0RpcixcbiAgICAgICcudmVyY2VsL291dHB1dC9jb25maWcuanNvbidcbiAgICApO1xuICAgIGNvbnN0IG9yaWdpbmFsQ29uZmlnID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjb25maWdQYXRoLCAndXRmLTgnKSk7XG4gICAgYXdhaXQgc3VwZXIuYnVpbGQoKTtcbiAgICBjb25zdCBuZXdDb25maWcgPSBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGNvbmZpZ1BhdGgsICd1dGYtOCcpKTtcbiAgICBvcmlnaW5hbENvbmZpZy5yb3V0ZXMudW5zaGlmdCguLi5uZXdDb25maWcucm91dGVzKTtcbiAgICBhd2FpdCB3cml0ZUZpbGUoY29uZmlnUGF0aCwgSlNPTi5zdHJpbmdpZnkob3JpZ2luYWxDb25maWcsIG51bGwsIDIpKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTG9jYWxCdWlsZGVyIGV4dGVuZHMgQmFzZUJ1aWxkZXIge1xuICAjb3V0RGlyOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKG5pdHJvOiBOaXRybykge1xuICAgIGNvbnN0IG91dERpciA9IGpvaW4obml0cm8ub3B0aW9ucy5idWlsZERpciwgJ3dvcmtmbG93Jyk7XG4gICAgc3VwZXIoe1xuICAgICAgLi4uY3JlYXRlQmFzZUJ1aWxkZXJDb25maWcoe1xuICAgICAgICB3b3JraW5nRGlyOiBuaXRyby5vcHRpb25zLnJvb3REaXIsXG4gICAgICAgIHByb2plY3RSb290OiBnZXROaXRyb1Byb2plY3RSb290KG5pdHJvKSxcbiAgICAgICAgd2F0Y2g6IG5pdHJvLm9wdGlvbnMuZGV2LFxuICAgICAgICBkaXJzOiBnZXROaXRyb1dvcmtmbG93RGlycyhuaXRybyksXG4gICAgICAgIHNvdXJjZW1hcDogbml0cm8ub3B0aW9ucy53b3JrZmxvdz8uc291cmNlbWFwLFxuICAgICAgICBleHRlcm5hbFBhY2thZ2VzOiBnZXROaXRyb1N0cmluZ0V4dGVybmFscyhuaXRybyksXG4gICAgICB9KSxcbiAgICAgIGJ1aWxkVGFyZ2V0OiAnbmV4dCcsIC8vIFBsYWNlaG9sZGVyLCBub3QgYWN0dWFsbHkgdXNlZFxuICAgIH0pO1xuICAgIHRoaXMuI291dERpciA9IG91dERpcjtcbiAgfVxuXG4gIC8vIFNlcmlhbGl6ZSBjb25jdXJyZW50IGJ1aWxkKCkgY2FsbHMgc28gb3ZlcmxhcHBpbmcgZGV2IHJlYnVpbGRzIGRvbid0XG4gIC8vIHN0b21wIG9uIGVhY2ggb3RoZXIncyB0ZW1wIGZpbGVzIG9yIHBhcnRpYWxseSBvdmVyd3JpdGUgb3V0cHV0LlxuICAjYnVpbGRRdWV1ZTogUHJvbWlzZTx2b2lkPiA9IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gIG92ZXJyaWRlIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5leHQgPSB0aGlzLiNidWlsZFF1ZXVlLnRoZW4oXG4gICAgICAoKSA9PiB0aGlzLiNidWlsZE9uY2UoKSxcbiAgICAgICgpID0+IHRoaXMuI2J1aWxkT25jZSgpXG4gICAgKTtcbiAgICAvLyBTd2FsbG93IHJlamVjdGlvbnMgb24gdGhlIHF1ZXVlIGl0c2VsZiBzbyBhIGZhaWxlZCBidWlsZCBkb2Vzbid0XG4gICAgLy8gcGVybWFuZW50bHkgcmVqZWN0IGFsbCBzdWJzZXF1ZW50IGJ1aWxkczsgZWFjaCBjYWxsZXIgc3RpbGwgc2Vlc1xuICAgIC8vIGl0cyBvd24gcmVqZWN0aW9uIHZpYSB0aGUgcmV0dXJuZWQgcHJvbWlzZS5cbiAgICB0aGlzLiNidWlsZFF1ZXVlID0gbmV4dC5jYXRjaCgoKSA9PiB7fSk7XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICBhc3luYyAjYnVpbGRPbmNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlucHV0RmlsZXMgPSBhd2FpdCB0aGlzLmdldElucHV0RmlsZXMoKTtcbiAgICBhd2FpdCBta2Rpcih0aGlzLiNvdXREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gICAgLy8gVjI6IFRoZSBjb21iaW5lZCBidW5kbGUncyBmbG93IHJvdXRlIHJlZmVyZW5jZXMgdGhlIHN0ZXBzIGZpbGUgYnlcbiAgICAvLyBuYW1lIGluIGl0cyBpbXBvcnQgc3RhdGVtZW50LCBzbyB3ZSBidWlsZCBkaXJlY3RseSB0byBmaW5hbCBuYW1lcy5cbiAgICAvLyAoVGhlIFYxIGF0b21pYyB0bXAtZmlsZSBwYXR0ZXJuIGRvZXNuJ3Qgd29yayBoZXJlIGJlY2F1c2UgcmVuYW1pbmdcbiAgICAvLyB0aGUgc3RlcHMgZmlsZSB3b3VsZCBsZWF2ZSB0aGUgZmxvdyByb3V0ZSdzIGltcG9ydCBzdGFsZS4pXG4gICAgY29uc3QgeyBtYW5pZmVzdCB9ID0gYXdhaXQgdGhpcy5jcmVhdGVDb21iaW5lZEJ1bmRsZSh7XG4gICAgICBpbnB1dEZpbGVzLFxuICAgICAgc3RlcHNPdXRmaWxlOiBqb2luKHRoaXMuI291dERpciwgJ3N0ZXBzLm1qcycpLFxuICAgICAgZmxvd091dGZpbGU6IGpvaW4odGhpcy4jb3V0RGlyLCAnd29ya2Zsb3dzLm1qcycpLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIC8vIGJ1bmRsZUZpbmFsT3V0cHV0OiBmYWxzZSDigJQgTml0cm8gZXh0ZXJuYWxpemVzIHRoZSB3b3JrZmxvdyBidWlsZCBkaXJcbiAgICAgIC8vIGR1cmluZyBkZXYsIGFuZCBpdHMgb3duIHJvbGx1cCBwaXBlbGluZSBoYW5kbGVzIGJ1bmRsaW5nIGZvciBwcm9kLlxuICAgICAgLy8gVXNpbmcgdHJ1ZSBjYXVzZXMgXCJEeW5hbWljIHJlcXVpcmUgb2YgWCBpcyBub3Qgc3VwcG9ydGVkXCIgZXJyb3JzXG4gICAgICAvLyBiZWNhdXNlIGVzYnVpbGQgd3JhcHMgQ0pTIHJlcXVpcmUoKSBjYWxscyBpbiBFU00gb3V0cHV0LlxuICAgICAgYnVuZGxlRmluYWxPdXRwdXQ6IGZhbHNlLFxuICAgICAgZXh0ZXJuYWxpemVOb25TdGVwczogdHJ1ZSxcbiAgICAgIC8vIEluIGRldiwgTml0cm8gZHluYW1pY2FsbHkgaW1wb3J0cyB0aGUgZ2VuZXJhdGVkIHdvcmtmbG93IGZpbGVzIGZyb21cbiAgICAgIC8vIGRpc2ssIHNvIHRoZXJlIGlzIG5vIGxhdGVyIFJvbGx1cCBwYXNzIHRvIHJlc29sdmUgZXh0ZXJuYWxpemVkIGxvY2FsXG4gICAgICAvLyBUeXBlU2NyaXB0IGltcG9ydHMuIEluIHByb2QsIE5pdHJvL1JvbGx1cCBoYW5kbGVzIHRob3NlIGltcG9ydHMuXG4gICAgICBidW5kbGVUcmFuc2l0aXZlTG9jYWxTdGVwRGVwZW5kZW5jaWVzOiB0aGlzLmNvbmZpZy53YXRjaCxcbiAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuY3JlYXRlV2ViaG9va0J1bmRsZSh7XG4gICAgICBvdXRmaWxlOiBqb2luKHRoaXMuI291dERpciwgJ3dlYmhvb2subWpzJyksXG4gICAgICBidW5kbGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gR2VuZXJhdGUgbWFuaWZlc3RcbiAgICBjb25zdCB3b3JrZmxvd0J1bmRsZVBhdGggPSBqb2luKHRoaXMuI291dERpciwgJ3dvcmtmbG93cy5tanMnKTtcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZU1hbmlmZXN0KHtcbiAgICAgIHdvcmtmbG93QnVuZGxlUGF0aCxcbiAgICAgIG1hbmlmZXN0RGlyOiB0aGlzLiNvdXREaXIsXG4gICAgICBtYW5pZmVzdCxcbiAgICB9KTtcbiAgfVxufVxuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUQsT0FBTyxFQUNMLFdBQVcsRUFDWCx1QkFBdUIsRUFDdkIsMkJBQTJCLEdBQzVCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQWE3QixTQUFTLHVCQUF1QixDQUFDLEtBQVk7SUFDM0MsTUFBTSxRQUFRLEdBQUksS0FBSyxDQUFDLE9BQW1DLENBQUMsU0FBUztRQUNuRSxFQUFFLFFBQVEsQ0FBQztJQUNiLE1BQU0sT0FBTyxHQUFHLFFBQVEsRUFBRSxNQUFNLENBQzlCLENBQUMsS0FBSyxFQUFtQixFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUN0RCxDQUFDO0lBQ0YsT0FBTyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzdELENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLEtBQVk7SUFDdkMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztBQUM3RCxDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxLQUFZO0lBQ3hDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELE1BQU0sT0FBTyxhQUFjLFNBQVEsMkJBQTJCO0lBQzVELFlBQVksS0FBWTtRQUN0QixLQUFLLENBQUM7WUFDSixHQUFHLHVCQUF1QixDQUFDO2dCQUN6QixVQUFVLEVBQUUsS0FBSyxD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QU87WUFDekIsUUFBUTtTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1rZGlyLCByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQge1xuICBCYXNlQnVpbGRlcixcbiAgY3JlYXRlQmFzZUJ1aWxkZXJDb25maWcsXG4gIFZlcmNlbEJ1aWxkT3V0cHV0QVBJQnVpbGRlcixcbn0gZnJvbSAnQHdvcmtmbG93L2J1aWxkZXJzJztcbmltcG9ydCB0eXBlIHsgTml0cm8gfSBmcm9tICduaXRyby90eXBlcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aGUnO1xuXG4vKipcbiAqIEZvcndhcmQgc3RyaW5nIGVudHJpZXMgZnJvbSBOaXRybydzIGBleHRlcm5hbHMuZXh0ZXJuYWxgIGNvbmZpZyB0byB0aGVcbiAqIHdvcmtmbG93IGJ1aWxkZXIncyBlc2J1aWxkIGBleHRlcm5hbGAgb3B0aW9uLiBSZWdFeHAgYW5kIGZ1bmN0aW9uIGVudHJpZXNcbiAqIGFyZSBza2lwcGVkIHNpbmNlIGVzYnVpbGQncyBgZXh0ZXJuYWxgIG9ubHkgc3VwcG9ydHMgbGl0ZXJhbCBzdHJpbmdzLlxuICpcbiAqIE5vdGU6IGBleHRlcm5hbHMuZXh0ZXJuYWxgIGlzIG9uIE5pdHJvIHYyJ3Mgb3B0aW9ucyBzaGFwZSDigJQgdjMgZHJvcHBlZCBpdFxuICogaW4gZmF2b3VyIG9mIGBub0V4dGVybmFsc2AuIFJlYWRpbmcgaXQgdGhyb3VnaCBhIHYyLXNoYXBlZCB2aWV3IGxldHMgdXNcbiAqIHN0aWxsIHBpY2sgaXQgdXAgb24gdjIgc2V0dXBzOyBvbiB2MyB0aGUgY2hhaW5lZCBvcHRpb25hbCBhY2Nlc3MganVzdFxuICogcmV0dXJucyB1bmRlZmluZWQuXG4gKi9cbnR5cGUgTml0cm9WMkV4dGVybmFsc09wdGlvbnMgPSB7IGV4dGVybmFscz86IHsgZXh0ZXJuYWw/OiB1bmtub3duW10gfSB9O1xuZnVuY3Rpb24gZ2V0Tml0cm9TdHJpbmdFeHRlcm5hbHMobml0cm86IE5pdHJvKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICBjb25zdCBleHRlcm5hbCA9IChuaXRyby5vcHRpb25zIGFzIE5pdHJvVjJFeHRlcm5hbHNPcHRpb25zKS5leHRlcm5hbHNcbiAgICA/LmV4dGVybmFsO1xuICBjb25zdCBzdHJpbmdzID0gZXh0ZXJuYWw/LmZpbHRlcihcbiAgICAoZW50cnkpOiBlbnRyeSBpcyBzdHJpbmcgPT4gdHlwZW9mIGVudHJ5ID09PSAnc3RyaW5nJ1xuICApO1xuICByZXR1cm4gc3RyaW5ncyAmJiBzdHJpbmdzLmxlbmd0aCA+IDAgPyBzdHJpbmdzIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXROaXRyb1Byb2plY3RSb290KG5pdHJvOiBOaXRybyk6IHN0cmluZyB7XG4gIHJldHVybiBuaXRyby5vcHRpb25zLndvcmtzcGFjZURpciA/PyBuaXRyby5vcHRpb25zLnJvb3REaXI7XG59XG5cbmZ1bmN0aW9uIGdldE5pdHJvV29ya2Zsb3dEaXJzKG5pdHJvOiBOaXRybyk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIG5pdHJvLm9wdGlvbnMud29ya2Zsb3c/LmRpcnMgPz8gWycuJ107XG59XG5cbmV4cG9ydCBjbGFzcyBWZXJjZWxCdWlsZGVyIGV4dGVuZHMgVmVyY2VsQnVpbGRPdXRwdXRBUElCdWlsZGVyIHtcbiAgY29uc3RydWN0b3Iobml0cm86IE5pdHJvKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4uY3JlYXRlQmFzZUJ1aWxkZXJDb25maWcoe1xuICAgICAgICB3b3JraW5nRGlyOiBuaXRyby5vcHRpb25zLnJvb3REaXIsXG4gICAgICAgIHByb2plY3RSb290OiBnZXROaXRyb1Byb2plY3RSb290KG5pdHJvKSxcbiAgICAgICAgZGlyczogZ2V0Tml0cm9Xb3JrZmxvd0RpcnMobml0cm8pLFxuICAgICAgICBydW50aW1lOiBuaXRyby5vcHRpb25zLndvcmtmbG93Py5ydW50aW1lLFxuICAgICAgICBzb3VyY2VtYXA6IG5pdHJvLm9wdGlvbnMud29ya2Zsb3c/LnNvdXJjZW1hcCxcbiAgICAgICAgZXh0ZXJuYWxQYWNrYWdlczogZ2V0Tml0cm9TdHJpbmdFeHRlcm5hbHMobml0cm8pLFxuICAgICAgfSksXG4gICAgICBidWlsZFRhcmdldDogJ3ZlcmNlbC1idWlsZC1vdXRwdXQtYXBpJyxcbiAgICB9KTtcbiAgfVxuICBvdmVycmlkZSBhc3luYyBidWlsZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjb25maWdQYXRoID0gam9pbihcbiAgICAgIHRoaXMuY29uZmlnLndvcmtpbmdEaXIsXG4gICAgICAnLnZlcmNlbC9vdXRwdXQvY29uZmlnLmpzb24nXG4gICAgKTtcbiAgICBjb25zdCBvcmlnaW5hbENvbmZpZyA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY29uZmlnUGF0aCwgJ3V0Zi04JykpO1xuICAgIGF3YWl0IHN1cGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgbmV3Q29uZmlnID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjb25maWdQYXRoLCAndXRmLTgnKSk7XG4gICAgb3JpZ2luYWxDb25maWcucm91dGVzLnVuc2hpZnQoLi4ubmV3Q29uZmlnLnJvdXRlcyk7XG4gICAgYXdhaXQgd3JpdGVGaWxlKGNvbmZpZ1BhdGgsIEpTT04uc3RyaW5naWZ5KG9yaWdpbmFsQ29uZmlnLCBudWxsLCAyKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExvY2FsQnVpbGRlciBleHRlbmRzIEJhc2VCdWlsZGVyIHtcbiAgI291dERpcjogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihuaXRybzogTml0cm8pIHtcbiAgICBjb25zdCBvdXREaXIgPSBqb2luKG5pdHJvLm9wdGlvbnMuYnVpbGREaXIsICd3b3JrZmxvdycpO1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLmNyZWF0ZUJhc2VCdWlsZGVyQ29uZmlnKHtcbiAgICAgICAgd29ya2luZ0Rpcjogbml0cm8ub3B0aW9ucy5yb290RGlyLFxuICAgICAgICBwcm9qZWN0Um9vdDogZ2V0Tml0cm9Qcm9qZWN0Um9vdChuaXRybyksXG4gICAgICAgIHdhdGNoOiBuaXRyby5vcHRpb25zLmRldixcbiAgICAgICAgZGlyczogZ2V0Tml0cm9Xb3JrZmxvd0RpcnMobml0cm8pLFxuICAgICAgICBzb3VyY2VtYXA6IG5pdHJvLm9wdGlvbnMud29ya2Zsb3c/LnNvdXJjZW1hcCxcbiAgICAgICAgZXh0ZXJuYWxQYWNrYWdlczogZ2V0Tml0cm9TdHJpbmdFeHRlcm5hbHMobml0cm8pLFxuICAgICAgfSksXG4gICAgICBidWlsZFRhcmdldDogJ25leHQnLCAvLyBQbGFjZWhvbGRlciwgbm90IGFjdHVhbGx5IHVzZWRcbiAgICB9KTtcbiAgICB0aGlzLiNvdXREaXIgPSBvdXREaXI7XG4gIH1cblxuICAvLyBTZXJpYWxpemUgY29uY3VycmVudCBidWlsZCgpIGNhbGxzIHNvIG92ZXJsYXBwaW5nIGRldiByZWJ1aWxkcyBkb24ndFxuICAvLyBzdG9tcCBvbiBlYWNoIG90aGVyJ3MgdGVtcCBmaWxlcyBvciBwYXJ0aWFsbHkgb3ZlcndyaXRlIG91dHB1dC5cbiAgI2J1aWxkUXVldWU6IFByb21pc2U8dm9pZD4gPSBQcm9taXNlLnJlc29sdmUoKTtcblxuICBvdmVycmlkZSBidWlsZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBuZXh0ID0gdGhpcy4jYnVpbGRRdWV1ZS50aGVuKFxuICAgICAgKCkgPT4gdGhpcy4jYnVpbGRPbmNlKCksXG4gICAgICAoKSA9PiB0aGlzLiNidWlsZE9uY2UoKVxuICAgICk7XG4gICAgLy8gU3dhbGxvdyByZWplY3Rpb25zIG9uIHRoZSBxdWV1ZSBpdHNlbGYgc28gYSBmYWlsZWQgYnVpbGQgZG9lc24ndFxuICAgIC8vIHBlcm1hbmVudGx5IHJlamVjdCBhbGwgc3Vic2VxdWVudCBidWlsZHM7IGVhY2ggY2FsbGVyIHN0aWxsIHNlZXNcbiAgICAvLyBpdHMgb3duIHJlamVjdGlvbiB2aWEgdGhlIHJldHVybmVkIHByb21pc2UuXG4gICAgdGhpcy4jYnVpbGRRdWV1ZSA9IG5leHQuY2F0Y2goKCkgPT4ge30pO1xuICAgIHJldHVybiBuZXh0O1xuICB9XG5cbiAgYXN5bmMgI2J1aWxkT25jZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpbnB1dEZpbGVzID0gYXdhaXQgdGhpcy5nZXRJbnB1dEZpbGVzKCk7XG4gICAgYXdhaXQgbWtkaXIodGhpcy4jb3V0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgIC8vIFYyOiBUaGUgY29tYmluZWQgYnVuZGxlJ3MgZmxvdyByb3V0ZSByZWZlcmVuY2VzIHRoZSBzdGVwcyBmaWxlIGJ5XG4gICAgLy8gbmFtZSBpbiBpdHMgaW1wb3J0IHN0YXRlbWVudCwgc28gd2UgYnVpbGQgZGlyZWN0bHkgdG8gZmluYWwgbmFtZXMuXG4gICAgLy8gKFRoZSBWMSBhdG9taWMgdG1wLWZpbGUgcGF0dGVybiBkb2Vzbid0IHdvcmsgaGVyZSBiZWNhdXNlIHJlbmFtaW5nXG4gICAgLy8gdGhlIHN0ZXBzIGZpbGUgd291bGQgbGVhdmUgdGhlIGZsb3cgcm91dGUncyBpbXBvcnQgc3RhbGUuKVxuICAgIGNvbnN0IGJ1aWxkID0gYXdhaXQgdGhpcy5jcmVhdGVDb21iaW5lZEJ1bmRsZSh7XG4gICAgICBpbnB1dEZpbGVzLFxuICAgICAgc3RlcHNPdXRmaWxlOiBqb2luKHRoaXMuI291dERpciwgJ3N0ZXBzLm1qcycpLFxuICAgICAgZmxvd091dGZpbGU6IGpvaW4odGhpcy4jb3V0RGlyLCAnd29ya2Zsb3dzLm1qcycpLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIC8vIGJ1bmRsZUZpbmFsT3V0cHV0OiBmYWxzZSDigJQgTml0cm8gZXh0ZXJuYWxpemVzIHRoZSB3b3JrZmxvdyBidWlsZCBkaXJcbiAgICAgIC8vIGR1cmluZyBkZXYsIGFuZCBpdHMgb3duIHJvbGx1cCBwaXBlbGluZSBoYW5kbGVzIGJ1bmRsaW5nIGZvciBwcm9kLlxuICAgICAgLy8gVXNpbmcgdHJ1ZSBjYXVzZXMgXCJEeW5hbWljIHJlcXVpcmUgb2YgWCBpcyBub3Qgc3VwcG9ydGVkXCIgZXJyb3JzXG4gICAgICAvLyBiZWNhdXNlIGVzYnVpbGQgd3JhcHMgQ0pTIHJlcXVpcmUoKSBjYWxscyBpbiBFU00gb3V0cHV0LlxuICAgICAgYnVuZGxlRmluYWxPdXRwdXQ6IGZhbHNlLFxuICAgICAgZXh0ZXJuYWxpemVOb25TdGVwczogdHJ1ZSxcbiAgICAgIC8vIEluIGRldiwgTml0cm8gZHluYW1pY2FsbHkgaW1wb3J0cyB0aGUgZ2VuZXJhdGVkIHdvcmtmbG93IGZpbGVzIGZyb21cbiAgICAgIC8vIGRpc2ssIHNvIHRoZXJlIGlzIG5vIGxhdGVyIFJvbGx1cCBwYXNzIHRvIHJlc29sdmUgZXh0ZXJuYWxpemVkIGxvY2FsXG4gICAgICAvLyBUeXBlU2NyaXB0IGltcG9ydHMuIEluIHByb2QsIE5pdHJvL1JvbGx1cCBoYW5kbGVzIHRob3NlIGltcG9ydHMuXG4gICAgICBidW5kbGVUcmFuc2l0aXZlTG9jYWxTdGVwRGVwZW5kZW5jaWVzOiB0aGlzLmNvbmZpZy53YXRjaCxcbiAgICB9KTtcbiAgICBjb25zdCB7IG1hbmlmZXN0LCBzdGVwc0NvbnRleHQsIGludGVyaW1CdW5kbGVDdHggfSA9IGJ1aWxkO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW3N0ZXBzQ29udGV4dD8uZGlzcG9zZSgpLCBpbnRlcmltQnVuZGxlQ3R4Py5kaXNwb3NlKCldKTtcblxuICAgIGF3YWl0IHRoaXMuY3JlYXRlV2ViaG9va0J1bmRsZSh7XG4gICAgICBvdXRmaWxlOiBqb2luKHRoaXMuI291dERpciwgJ3dlYmhvb2subWpzJyksXG4gICAgICBidW5kbGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gR2VuZXJhdGUgbWFuaWZlc3RcbiAgICBjb25zdCB3b3JrZmxvd0J1bmRsZVBhdGggPSBqb2luKHRoaXMuI291dERpciwgJ3dvcmtmbG93cy5tanMnKTtcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZU1hbmlmZXN0KHtcbiAgICAgIHdvcmtmbG93QnVuZGxlUGF0aCxcbiAgICAgIG1hbmlmZXN0RGlyOiB0aGlzLiNvdXREaXIsXG4gICAgICBtYW5pZmVzdCxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,KAAK,EAA6B,MAAM,aAAa,CAAC;AAGpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,YAAY,EAAE,aAAa,EAAE,CAAC;;;iBAiKT,KAAK;;AAF1B,wBAyOwB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,KAAK,EAA6B,MAAM,aAAa,CAAC;AAGpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,YAAY,EAAE,aAAa,EAAE,CAAC;;;iBAiKT,KAAK;;AAF1B,wBAsOwB"}
package/dist/index.js CHANGED
@@ -146,8 +146,7 @@ export default {
146
146
  async setup(nitro) {
147
147
  const isVercelDeploy = !nitro.options.dev && nitro.options.preset === 'vercel';
148
148
  const workflowTargetWorld = ensureWorkflowTargetWorldEnv();
149
- // Pre-built workflow bundles directory - must be excluded from re-transformation
150
- const workflowBuildDir = join(nitro.options.buildDir, 'workflow');
149
+ const nitroBuildDir = `${nitro.options.buildDir.replace(/[\\/]+$/, '')}/`;
151
150
  nitro.options.alias[WORKFLOW_WORLD_TARGET_MODULE] =
152
151
  resolveWorkflowTargetWorldAlias(nitro, workflowTargetWorld);
153
152
  nitro.options.alias['pg-native'] ??= WORKFLOW_OPTIONAL_PG_NATIVE_ALIAS;
@@ -155,10 +154,9 @@ export default {
155
154
  // (especially before class property transforms that rename classes like _ClassName)
156
155
  nitro.hooks.hook('rollup:before', (_nitro, config) => {
157
156
  config.plugins.unshift(workflowTransformPlugin({
158
- // Exclude pre-built workflow bundles from re-transformation
159
- // These are already processed and re-processing causes issues like
160
- // undefined class references when Nitro's bundler renames variables
161
- exclude: [workflowBuildDir],
157
+ // Nitro build artifacts have already been transformed.
158
+ // Re-processing them can duplicate class registration.
159
+ exclude: [nitroBuildDir],
162
160
  }));
163
161
  // Nitro bundles undici (via the world adapter) into the ESM server
164
162
  // output. undici loads most node: builtins as ESM imports, but pulls in
@@ -626,4 +624,4 @@ export default fromWebHandler(() => new Response("Manifest not found", { status:
626
624
  writeFileSync(handlerPath, fallback);
627
625
  }
628
626
  }
629
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEQsT0FBTyxFQUNMLDRCQUE0QixFQUM1QiwrQkFBK0IsRUFDL0IsMkJBQTJCLEVBQzNCLGlDQUFpQyxFQUNqQyxzQkFBc0IsRUFDdEIsNEJBQTRCLEdBQzdCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUs1RDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFNBQVMsQ0FBQyxLQUFZO0lBQzdCLE1BQU0sWUFBWSxHQUFJLEtBQThDLENBQUMsSUFBSTtRQUN2RSxFQUFFLFlBQVksQ0FBQztJQUNqQixJQUFJLFlBQVksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixPQUFPLFlBQVksS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILFNBQVMsb0JBQW9CLENBQUMsTUFBb0I7SUFDaEQsTUFBTSxNQUFNLEdBQUcsMkJBQTJCLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM3QixJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNuQixNQUFN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QUFNLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPO1lBQzdCLENBQUMsQ0FBQzs7Q0FFUDtZQUNLLENBQUMsQ0FBQztDQUNQLENBQUM7UUFDRSxhQUFhLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWtkaXJTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tICdub2RlOm1vZHVsZSc7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoLCBwYXRoVG9GaWxlVVJMIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHtcbiAgZW5zdXJlV29ya2Zsb3dUYXJnZXRXb3JsZEVudixcbiAgcmVzb2x2ZVdvcmtmbG93Q29yZVJ1bnRpbWVBbGlhcyxcbiAgV09SS0ZMT1dfTk9ERV9DT01QQVRfQkFOTkVSLFxuICBXT1JLRkxPV19PUFRJT05BTF9QR19OQVRJVkVfQUxJQVMsXG4gIFdPUktGTE9XX1FVRVVFX1RSSUdHRVIsXG4gIFdPUktGTE9XX1dPUkxEX1RBUkdFVF9NT0RVTEUsXG59IGZyb20gJ0B3b3JrZmxvdy9idWlsZGVycyc7XG5pbXBvcnQgeyB3b3JrZmxvd1RyYW5zZm9ybVBsdWdpbiB9IGZyb20gJ0B3b3JrZmxvdy9yb2xsdXAnO1xuaW1wb3J0IHR5cGUgeyBOaXRybywgTml0cm9Nb2R1bGUsIFJvbGx1cENvbmZpZyB9IGZyb20gJ25pdHJvL3R5cGVzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoZSc7XG5pbXBvcnQgeyBMb2NhbEJ1aWxkZXIsIFZlcmNlbEJ1aWxkZXIgfSBmcm9tICcuL2J1aWxkZXJzLmpzJztcbmltcG9ydCB0eXBlIHsgTW9kdWxlT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSB7IE1vZHVsZU9wdGlvbnMgfTtcblxuLyoqXG4gKiBEZXRlY3Qgd2hldGhlciB0aGUgTml0cm8gaW5zdGFuY2UgaXMgdjIuXG4gKiBOZXdlciBOaXRybyByZWxlYXNlcyAoYm90aCB2MiBhbmQgdjMpIGV4cG9zZSBgbml0cm8ubWV0YS5tYWpvclZlcnNpb25gLlxuICogRmFsbCBiYWNrIHRvIGAhbml0cm8ucm91dGluZ2AgKG9ubHkgcHJlc2VudCBpbiB2MyspIGZvciBvbGRlciBOaXRybyB2MlxuICogdmVyc2lvbnMgdGhhdCBkb24ndCBoYXZlIGBtYWpvclZlcnNpb25gIHlldCAoZS5nLiBOdXh0IHVzZXJzIG9uIGFuIG9sZGVyXG4gKiBuaXRyb3BhY2spLlxuICovXG5mdW5jdGlvbiBpc05pdHJvVjIobml0cm86IE5pdHJvKTogYm9vbGVhbiB7XG4gIGNvbnN0IG1ham9yVmVyc2lvbiA9IChuaXRybyBhcyB7IG1ldGE/OiB7IG1ham9yVmVyc2lvbj86IG51bWJlciB9IH0pLm1ldGFcbiAgICA/Lm1ham9yVmVyc2lvbjtcbiAgaWYgKG1ham9yVmVyc2lvbiAhPSBudWxsKSB7XG4gICAgcmV0dXJuIG1ham9yVmVyc2lvbiA9PT0gMjtcbiAgfVxuICByZXR1cm4gIW5pdHJvLnJvdXRpbmc7XG59XG5cbi8qKlxuICogUHJlcGVuZCBhIGBjcmVhdGVSZXF1aXJlYC1iYWNrZWQgZ2xvYmFsIGByZXF1aXJlYCB0byBldmVyeSBzZXJ2ZXIgY2h1bmsgc29cbiAqIHVuZGljaSdzIGJ1bmRsZWQgYHJlcXVpcmUoJ25vZGU6aHR0cDInKWAgcmVzb2x2ZXMgdGhlIHJlYWwgYnVpbHRpbiBpbnN0ZWFkIG9mXG4gKiB0aHJvd2luZyAod2hpY2ggd291bGQgbWFrZSB1bmRpY2kgZmFsbCBiYWNrIHRvIGEgc3R1YiB3aXRob3V0XG4gKiBgaHR0cDIuY29ubmVjdGAsIGJyZWFraW5nIEhUVFAvMikuIFRoZSBndWFyZCBrZWVwcyBpdCBpZGVtcG90ZW50IGFjcm9zc1xuICogY2h1bmtzLCBhbmQgYG5vZGU6bW9kdWxlYCBpcyBhbHdheXMgYXZhaWxhYmxlIGluIHRoZSBOb2RlIHNlcnZlciBydW50aW1lLlxuICpcbiAqIFRoaXMgaXMgYSBOb2RlLXNlcnZlci1ydW50aW1lLW9ubHkgc2hpbSAoY2FsbGVycyBnYXRlIGl0IHRvIHRoZSBwcm9kdWN0aW9uXG4gKiBzZXJ2ZXIgYnVpbGQpLiBOb3RlIHRoZSBkZWxpYmVyYXRlIGdsb2JhbCBzaWRlIGVmZmVjdDogZGVmaW5pbmdcbiAqIGBnbG9iYWxUaGlzLnJlcXVpcmVgIG1ha2VzIGB0eXBlb2YgcmVxdWlyZWAgdHJ1dGh5IGZvciAqZXZlcnkqIGJ1bmRsZWRcbiAqIGRlcGVuZGVuY3kgaW4gdGhpcyBFU00gc2VydmVyIG91dHB1dCwgc28gYW55IGxpYnJhcnkgdGhhdCBmZWF0dXJlLWRldGVjdHNcbiAqIGByZXF1aXJlYCB3aWxsIHRha2UgaXRzIENKUyBwYXRoIGhlcmUuIFRoYXQgaXMgc2FmZSBiZWNhdXNlIChhKSBpdCBuZXZlclxuICogdG91Y2hlcyB0aGUgY2xpZW50IGJ1bmRsZSwgKGIpIHRoZSBgdHlwZW9mIHJlcXVpcmUgPT09ICd1bmRlZmluZWQnYCBndWFyZFxuICogbWFrZXMgaXQgYSBuby1vcCBpbiBDSlMgY2h1bmtzIHdoZXJlIGEgcmVhbCBgcmVxdWlyZWAgYWxyZWFkeSBleGlzdHMsIGFuZFxuICogKGMpIHRoZSBgcmVxdWlyZWAgd2UgaW5zdGFsbCBpcyBhIHdvcmtpbmcgYGNyZWF0ZVJlcXVpcmVgLCBzbyBhIGxpYnJhcnkgdGhhdFxuICogc3dpdGNoZXMgdG8gdGhlIHJlcXVpcmUgcGF0aCBnZXRzIGEgZnVuY3Rpb25hbCBgcmVxdWlyZWAsIG5vdCBhIGJyb2tlbiBzdHViLlxuICogVGhlIGJlaGF2aW9yIHRvIHdhdGNoIGZvciBpcyBhIGJ1bmRsZWQgbGliIHRoYXQsIG9uIHNlZWluZyBgcmVxdWlyZWAsIGRvZXNcbiAqIGByZXF1aXJlKClgIG9mIGFuIEVTTS1vbmx5IGRlcGVuZGVuY3kgb24gYSBOb2RlIHZlcnNpb24gd2l0aG91dCBgcmVxdWlyZShFU00pYFxuICogc3VwcG9ydC5cbiAqL1xuZnVuY3Rpb24gYWRkTm9kZVJlcXVpcmVCYW5uZXIoY29uZmlnOiBSb2xsdXBDb25maWcpOiB2b2lkIHtcbiAgY29uc3QgYmFubmVyID0gV09SS0ZMT1dfTk9ERV9DT01QQVRfQkFOTkVSO1xuICBjb25zdCBvdXRwdXQgPSBjb25maWcub3V0cHV0O1xuICBpZiAob3V0cHV0ID09IG51bGwpIHtcbiAgICBjb25maWcub3V0cHV0ID0geyBiYW5uZXIgfTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qgb3V0cHV0cyA9IEFycmF5LmlzQXJyYXkob3V0cHV0KSA/IG91dHB1dCA6IFtvdXRwdXRdO1xuICBmb3IgKGNvbnN0IG8gb2Ygb3V0cHV0cykge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gby5iYW5uZXI7XG4gICAgby5iYW5uZXIgPVxuICAgICAgZXhpc3RpbmcgPT0gbnVsbFxuICAgICAgICA/IGJhbm5lclxuICAgICAgICA6IHR5cGVvZiBleGlzdGluZyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgID8gYXN5bmMgKGNodW5rOiB1bmtub3duKSA9PiBgJHtiYW5uZXJ9XFxuJHthd2FpdCBleGlzdGluZyhjaHVuayl9YFxuICAgICAgICAgIDogYCR7YmFubmVyfVxcbiR7ZXhpc3Rpbmd9YDtcbiAgfVxufVxuXG5jb25zdCBXT1JLRkxPV19JTkxJTkVfUEFDS0FHRVMgPSBuZXcgU2V0KFtcbiAgJ3dvcmtmbG93JyxcbiAgJ2NvcmUnLFxuICAnc2VyZGUnLFxuICAnZXJyb3JzJyxcbiAgJ3V0aWxzJyxcbiAgJ2J1aWxkZXJzJyxcbiAgJ3JvbGx1cCcsXG4gICdhaScsXG4gICd3b3JsZCcsXG5dKTtcblxuZnVuY3Rpb24gZ2V0V29ya2Zsb3dQYWNrYWdlTmFtZShzb3VyY2U6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBwYWNrYWdlU3BlY2lmaWVyID0gc291cmNlLm1hdGNoKC9eQHdvcmtmbG93XFwvKFteL10rKS8pO1xuICBpZiAocGFja2FnZVNwZWNpZmllcikge1xuICAgIHJldHVybiBwYWNrYWdlU3BlY2lmaWVyWzFdID8/IG51bGw7XG4gIH1cbiAgaWYgKHNvdXJjZSA9PT0gJ3dvcmtmbG93JyB8fCBzb3VyY2Uuc3RhcnRzV2l0aCgnd29ya2Zsb3cvJykpIHtcbiAgICByZXR1cm4gJ3dvcmtmbG93JztcbiAgfVxuICBjb25zdCBwYWNrYWdlUGF0aCA9IHNvdXJjZS5tYXRjaCgvW1xcXFwvXXBhY2thZ2VzW1xcXFwvXShbXlxcXFwvXSspLyk7XG4gIHJldHVybiBwYWNrYWdlUGF0aD8uWzFdID8/IG51bGw7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVdvcmtmbG93Rm9yY2VJbmxpbmVQbHVnaW4oXG4gIHdvcmtmbG93VGFyZ2V0V29ybGQ6IHN0cmluZyxcbiAgd29ya2Zsb3dUYXJnZXRXb3JsZEFsaWFzOiBzdHJpbmdcbikge1xuICBjb25zdCB0YXJnZXRXb3JsZFBhY2thZ2UgPSBnZXRXb3JrZmxvd1BhY2thZ2VOYW1lKHdvcmtmbG93VGFyZ2V0V29ybGQpO1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICd3b3JrZmxvdzpmb3JjZS1pbmxpbmUnLFxuICAgIC8vIGBvcmRlcjogJ3ByZSdgIGlzIHJlcXVpcmVkOiBOaXRybydzIGBuaXRybzpleHRlcm5hbHNgIHBsdWdpblxuICAgIC8vIHVzZXMgYG9yZGVyOiAncHJlJ2AgZm9yIGl0cyByZXNvbHZlSWQgaG9vayBhbmQgc3ByZWFkcyBvdXJcbiAgICAvLyByZXNvbHV0aW9uIHJlc3VsdCB3aGlsZSBmb3JjaW5nIGBleHRlcm5hbDogdHJ1ZWAuIFdpdGhvdXRcbiAgICAvLyBgcHJlYCBoZXJlLCBvdXIgYGV4dGVybmFsOiBmYWxzZWAgZGVjaXNpb24gZ2V0cyBvdmVyd3JpdHRlblxuICAgIC8vIGFuZCBgQHdvcmtmbG93LypgIGltcG9ydHMgZW5kIHVwIGV4dGVybmFsaXplZCBpbiB0aGUgYnVuZGxlLlxuICAgIHJlc29sdmVJZDoge1xuICAgICAgb3JkZXI6ICdwcmUnIGFzIGNvbnN0LFxuICAgICAgYXN5bmMgaGFuZGxlcihcbiAgICAgICAgdGhpczoge1xuICAgICAgICAgIHJlc29sdmU6IChcbiAgICAgICAgICAgIHNvdXJjZTogc3RyaW5nLFxuICAgICAgICAgICAgaW1wb3J0ZXI6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgc2tpcFNlbGY/OiBib29sZWFuIH1cbiAgICAgICAgICApID0+IFByb21pc2U8eyBpZDogc3RyaW5nIH0gfCBudWxsPjtcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlOiBzdHJpbmcsXG4gICAgICAgIGltcG9ydGVyOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgIG9wdGlvbnM6IHsgc2tpcFNlbGY/OiBib29sZWFuIH1cbiAgICAgICkge1xuICAgICAgICBpZiAoc291cmNlID09PSBXT1JLRkxPV19XT1JMRF9UQVJHRVRfTU9EVUxFKSB7XG4gICAgICAgICAgcmV0dXJuIHsgaWQ6IHdvcmtmbG93VGFyZ2V0V29ybGRBbGlhcywgZXh0ZXJuYWw6IGZhbHNlIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpbXBvcnRlcikgcmV0dXJuIG51bGw7XG4gICAgICAgIC8vIE1hdGNoIHdvcmtmbG93IHBhY2thZ2Ugc3BlY2lmaWVycyBPUiBkaXJlY3QgcGF0aHMgaW50b1xuICAgICAgICAvLyBwYWNrYWdlcy88bmFtZT4vLiBCYWlsIG91dCBlYXJseSBvbiBub24td29ya2Zsb3cgaW1wb3J0c1xuICAgICAgICAvLyBzbyB3ZSBkb24ndCBpbnRlcmNlcHQgdGhlIHJlc3Qgb2YgdGhlIHJlc29sdXRpb24gY2hhaW4uXG4gICAgICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gZ2V0V29ya2Zsb3dQYWNrYWdlTmFtZShzb3VyY2UpO1xuICAgICAgICBjb25zdCBpc1dvcmtmbG93UGtnID1cbiAgICAgICAgICBwYWNrYWdlTmFtZSAhPSBudWxsICYmXG4gICAgICAgICAgKFdPUktGTE9XX0lOTElORV9QQUNLQUdFUy5oYXMocGFja2FnZU5hbWUpIHx8XG4gICAgICAgICAgICBwYWNrYWdlTmFtZSA9PT0gdGFyZ2V0V29ybGRQYWNrYWdlKTtcbiAgICAgICAgaWYgKCFpc1dvcmtmbG93UGtnKSByZXR1cm4gbnVsbDtcbiAgICAgICAgLy8gUmVzb2x2ZSB2aWEgb3RoZXIgcmVzb2x2ZXJzLCBza2lwcGluZyBvdXJzZWx2ZXMgc28gd2VcbiAgICAgICAgLy8gZ2V0IGEgcGF0aC4gV2UgZG9uJ3QgZ2F0ZSBvbiBgcmVzb2x2ZWQuZXh0ZXJuYWxgIGJlY2F1c2VcbiAgICAgICAgLy8gYG5pdHJvOmV4dGVybmFsc2Agc3ByZWFkcyBvdXIgcmVzdWx0IGFuZCBvdmVycmlkZXNcbiAgICAgICAgLy8gYGV4dGVybmFsOiB0cnVlYCByZWdhcmRsZXNzIG9mIHdoYXQgd2UgcmV0dXJuIOKAlCB3ZSB3YW50XG4gICAgICAgIC8vIHRvIHdpbiB0aGF0IHJhY2UgYnkgcmV0dXJuaW5nIGZpcnN0IHVuZGVyIGBvcmRlcjogJ3ByZSdgLlxuICAgICAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IHRoaXMucmVzb2x2ZShzb3VyY2UsIGltcG9ydGVyLCB7XG4gICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICBza2lwU2VsZjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcmVzb2x2ZWQpIHJldHVybiBudWxsO1xuICAgICAgICBsZXQgcmVzb2x2ZWRJZCA9IHJlc29sdmVkLmlkO1xuICAgICAgICAvLyBTdHJpcCBmaWxlOi8vIHByb3RvY29sIGlmIHByZXNlbnQg4oCUIFJvbGx1cCBuZWVkcyBhIHBsYWluXG4gICAgICAgIC8vIGZpbGVzeXN0ZW0gcGF0aCB0byBsb2FkIHRoZSBtb2R1bGUuIGBmaWxlVVJMVG9QYXRoYFxuICAgICAgICAvLyBjb3JyZWN0bHkgaGFuZGxlcyBXaW5kb3dzIHBhdGhzIChlLmcuLCBmaWxlOi8vL0M6Ly4uLlxuICAgICAgICAvLyAtPiBDOlxcLi4uKSBhbmQgcGVyY2VudC1kZWNvZGluZy5cbiAgICAgICAgaWYgKHJlc29sdmVkSWQuc3RhcnRzV2l0aCgnZmlsZTovLycpKSB7XG4gICAgICAgICAgcmVzb2x2ZWRJZCA9IGZpbGVVUkxUb1BhdGgocmVzb2x2ZWRJZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgaWQ6IHJlc29sdmVkSWQsIGV4dGVybmFsOiBmYWxzZSB9O1xuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSZXNvbHZlclJlcXVpcmUobml0cm86IE5pdHJvKSB7XG4gIHJldHVybiBjcmVhdGVSZXF1aXJlKGpvaW4obml0cm8ub3B0aW9ucy5yb290RGlyLCAncGFja2FnZS5qc29uJykpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlV29ya2Zsb3dUYXJnZXRXb3JsZEFsaWFzKFxuICBuaXRybzogTml0cm8sXG4gIHRhcmdldFdvcmxkOiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGNyZWF0ZVJlc29sdmVyUmVxdWlyZShuaXRybykucmVzb2x2ZSh0YXJnZXRXb3JsZCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB0YXJnZXRXb3JsZDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICd3b3JrZmxvdy9uaXRybycsXG4gIGFzeW5jIHNldHVwKG5pdHJvOiBOaXRybykge1xuICAgIGNvbnN0IGlzVmVyY2VsRGVwbG95ID1cbiAgICAgICFuaXRyby5vcHRpb25zLmRldiAmJiBuaXRyby5vcHRpb25zLnByZXNldCA9PT0gJ3ZlcmNlbCc7XG4gICAgY29uc3Qgd29ya2Zsb3dUYXJnZXRXb3JsZCA9IGVuc3VyZVdvcmtmbG93VGFyZ2V0V29ybGRFbnYoKTtcblxuICAgIC8vIFByZS1idWlsdCB3b3JrZmxvdyBidW5kbGVzIGRpcmVjdG9yeSAtIG11c3QgYmUgZXhjbHVkZWQgZnJvbSByZS10cmFuc2Zvcm1hdGlvblxuICAgIGNvbnN0IHdvcmtmbG93QnVpbGREaXIgPSBqb2luKG5pdHJvLm9wdGlvbnMuYnVpbGREaXIsICd3b3JrZmxvdycpO1xuXG4gICAgbml0cm8ub3B0aW9ucy5hbGlhc1tXT1JLRkxPV19XT1JMRF9UQVJHRVRfTU9EVUxFXSA9XG4gICAgICByZXNvbHZlV29ya2Zsb3dUYXJnZXRXb3JsZEFsaWFzKG5pdHJvLCB3b3JrZmxvd1RhcmdldFdvcmxkKTtcbiAgICBuaXRyby5vcHRpb25zLmFsaWFzWydwZy1uYXRpdmUnXSA/Pz0gV09SS0ZMT1dfT1BUSU9OQUxfUEdfTkFUSVZFX0FMSUFTO1xuXG4gICAgLy8gQWRkIHRyYW5zZm9ybSBwbHVnaW4gYXQgdGhlIEJFR0lOTklORyB0byBydW4gYmVmb3JlIG90aGVyIHRyYW5zZm9ybXNcbiAgICAvLyAoZXNwZWNpYWxseSBiZWZvcmUgY2xhc3MgcHJvcGVydHkgdHJhbnNmb3JtcyB0aGF0IHJlbmFtZSBjbGFzc2VzIGxpa2UgX0NsYXNzTmFtZSlcbiAgICBuaXRyby5ob29rcy5ob29rKCdyb2xsdXA6YmVmb3JlJywgKF9uaXRybzogTml0cm8sIGNvbmZpZzogUm9sbHVwQ29uZmlnKSA9PiB7XG4gICAgICAoY29uZmlnLnBsdWdpbnMgYXMgQXJyYXk8dW5rbm93bj4pLnVuc2hpZnQoXG4gICAgICAgIHdvcmtmbG93VHJhbnNmb3JtUGx1Z2luKHtcbiAgICAgICAgICAvLyBFeGNsdWRlIHByZS1idWlsdCB3b3JrZmxvdyBidW5kbGVzIGZyb20gcmUtdHJhbnNmb3JtYXRpb25cbiAgICAgICAgICAvLyBUaGVzZSBhcmUgYWxyZWFkeSBwcm9jZXNzZWQgYW5kIHJlLXByb2Nlc3NpbmcgY2F1c2VzIGlzc3VlcyBsaWtlXG4gICAgICAgICAgLy8gdW5kZWZpbmVkIGNsYXNzIHJlZmVyZW5jZXMgd2hlbiBOaXRybydzIGJ1bmRsZXIgcmVuYW1lcyB2YXJpYWJsZXNcbiAgICAgICAgICBleGNsdWRlOiBbd29ya2Zsb3dCdWlsZERpcl0sXG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgICAvLyBOaXRybyBidW5kbGVzIHVuZGljaSAodmlhIHRoZSB3b3JsZCBhZGFwdGVyKSBpbnRvIHRoZSBFU00gc2VydmVyXG4gICAgICAvLyBvdXRwdXQuIHVuZGljaSBsb2FkcyBtb3N0IG5vZGU6IGJ1aWx0aW5zIGFzIEVTTSBpbXBvcnRzLCBidXQgcHVsbHMgaW5cbiAgICAgIC8vIGBub2RlOmh0dHAyYCBsYXppbHkgdmlhIGEgYmFyZSBgcmVxdWlyZSgnbm9kZTpodHRwMicpYCBpbnNpZGUgYVxuICAgICAgLy8gdHJ5L2NhdGNoIOKAlCB3aGljaCB0aGUgYnVuZGxlciBsZWF2ZXMgdW4td2lyZWQsIHNvIGluIHRoZSBFU00gYnVuZGxlIHRoZVxuICAgICAgLy8gcmVxdWlyZSB0aHJvd3MgYW5kIHVuZGljaSBzaWxlbnRseSBmYWxscyBiYWNrIHRvIGEgc3R1YiB3aG9zZVxuICAgICAgLy8gYGh0dHAyLmNvbm5lY3RgIGlzIHVuZGVmaW5lZC4gVGhhdCBicmVha3MgYW55IEhUVFAvMiByZXF1ZXN0ICh0aGVcbiAgICAgIC8vIHdvcmtmbG93IGZsb3ctcm91dGUgY2FsbGJhY2sgZmFpbHMgd2l0aCBcImZldGNoIGZhaWxlZFwiLCBzbyBydW5zIG5ldmVyXG4gICAgICAvLyBzdGFydCkuIFByZXBlbmQgYSB3b3JraW5nIENKUyBgcmVxdWlyZWAgdG8gdGhlIHNlcnZlciBjaHVua3Mgc28gdGhlXG4gICAgICAvLyByZWFsIGBub2RlOmh0dHAyYCByZXNvbHZlcy4gU2tpcHBlZCBpbiBkZXYgKFZpdGUgU1NSIHByb3ZpZGVzIHJlcXVpcmUpLlxuICAgICAgaWYgKCFuaXRyby5vcHRpb25zLmRldikge1xuICAgICAgICBhZGROb2RlUmVxdWlyZUJhbm5lcihjb25maWcpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTk9URTogVGVtcG9yYXJ5IHdvcmthcm91bmQgZm9yIGRlYnVnIHVuZW52IG1vY2tcbiAgICBpZiAoIW5pdHJvLm9wdGlvbnMud29ya2Zsb3c/Ll92aXRlKSB7XG4gICAgICBuaXRyby5vcHRpb25zLmFsaWFzLmRlYnVnID8/PSAnZGVidWcnO1xuICAgIH1cblxuICAgIGlmIChuaXRyby5vcHRpb25zLmRldikge1xuICAgICAgY29uc3Qgd29ya2Zsb3dCdWlsZEdsb2IgPSBgJHtqb2luKG5pdHJvLm9wdGlvbnMuYnVpbGREaXIsICd3b3JrZmxvdycpfS8qKmA7XG4gICAgICBuaXRyby5vcHRpb25zLndhdGNoT3B0aW9ucyB8fD0ge307XG4gICAgICBjb25zdCBleGlzdGluZ0lnbm9yZWQgPSBuaXRyby5vcHRpb25zLndhdGNoT3B0aW9ucy5pZ25vcmVkO1xuICAgICAgaWYgKCFleGlzdGluZ0lnbm9yZWQpIHtcbiAgICAgICAgbml0cm8ub3B0aW9ucy53YXRjaE9wdGlvbnMuaWdub3JlZCA9IFt3b3JrZmxvd0J1aWxkR2xvYl07XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZXhpc3RpbmdJZ25vcmVkKSkge1xuICAgICAgICBuaXRyby5vcHRpb25zLndhdGNoT3B0aW9ucy5pZ25vcmVkID0gW1xuICAgICAgICAgIC4uLmV4aXN0aW5nSWdub3JlZCxcbiAgICAgICAgICB3b3JrZmxvd0J1aWxkR2xvYixcbiAgICAgICAgXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5pdHJvLm9wdGlvbnMud2F0Y2hPcHRpb25zLmlnbm9yZWQgPSBbXG4gICAgICAgICAgZXhpc3RpbmdJZ25vcmVkLFxuICAgICAgICAgIHdvcmtmbG93QnVpbGRHbG9iLFxuICAgICAgICBdO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvcmNlIHdvcmtmbG93IFNESyBwYWNrYWdlcyB0byBiZSBidW5kbGVkIGJ5IE5pdHJvJ3MgUm9sbHVwIHJhdGhlciB0aGFuXG4gICAgLy8gZXh0ZXJuYWxpemVkLiBUaGlzIGxldHMgdGhlIHN0YXRpYyB3b3JsZC10YXJnZXQgYWxpYXMgcmVzb2x2ZSBpbnNpZGUgdGhlXG4gICAgLy8gaG9zdCBzZXJ2ZXIgYnVuZGxlIGluc3RlYWQgb2YgZmFsbGluZyB0aHJvdWdoIHRvIHRoZSB1bmFsaWFzZWQgY29yZSBzdHViLlxuICAgIC8vIEl0IGFsc28gZW5zdXJlcyB0aGUgU1dDIHRyYW5zZm9ybSBwbHVnaW4gcHJvY2Vzc2VzIGZpbGVzIGNvbnRhaW5pbmdcbiAgICAvLyB3b3JrZmxvdyBwYXR0ZXJucyAobGlrZSBAd29ya2Zsb3cvY29yZS9kaXN0L3J1bnRpbWUvcnVuLmpzKSBhbmQgYWRkcyB0aGVcbiAgICAvLyBjbGFzc0lkIHJlZ2lzdHJhdGlvbiBJSUZFcyBuZWVkZWQgZm9yIHNlcmlhbGl6YXRpb24uIFdpdGhvdXQgdGhpcywgc2VyZGVcbiAgICAvLyBjbGFzc2VzIGZyb20gbnBtIHBhY2thZ2VzIChsaWtlIGBSdW5gKSB3b3VsZCBiZSBleHRlcm5hbGl6ZWQsIHRoZSBTV0NcbiAgICAvLyB0cmFuc2Zvcm0gd291bGQgbmV2ZXIgZmlyZSBvbiB0aGVtLCBhbmQgc2VyaWFsaXphdGlvbiB3b3VsZCBmYWlsIHdpdGhcbiAgICAvLyBcIm11c3QgaGF2ZSBhIHN0YXRpYyBjbGFzc0lkIHByb3BlcnR5XCIuXG4gICAgLy9cbiAgICAvLyBXZSB1c2UgYSBSb2xsdXAgcmVzb2x2ZUlkIGhvb2sgKGFkZGVkIEJFRk9SRSB0aGUgZXh0ZXJuYWxpemF0aW9uXG4gICAgLy8gcGx1Z2luKSB0aGF0IGludGVyY2VwdHMgd29ya2Zsb3cgcGFja2FnZSBpbXBvcnRzIGFuZCBtYXJrcyB0aGVtXG4gICAgLy8gYXMgbm9uLWV4dGVybmFsLiBUaGlzIGlzIG1vcmUgdGFyZ2V0ZWQgdGhhbiBgbm9FeHRlcm5hbHMgPSB0cnVlYFxuICAgIC8vIHdoaWNoIHdvdWxkIGJ1bmRsZSBBTEwgZGVwZW5kZW5jaWVzIGFuZCBjYXVzZSBURFogZXJyb3JzIGZyb21cbiAgICAvLyBjaXJjdWxhciBpbXBvcnRzIGluIHBhY2thZ2VzIGxpa2UgdnVlLWJ1bmRsZS1yZW5kZXJlci9oMy5cbiAgICBuaXRyby5ob29rcy5ob29rKCdyb2xsdXA6YmVmb3JlJywgKF9uaXRybzogTml0cm8sIGNvbmZpZzogUm9sbHVwQ29uZmlnKSA9PiB7XG4gICAgICAoY29uZmlnLnBsdWdpbnMgYXMgQXJyYXk8dW5rbm93bj4pLnVuc2hpZnQoXG4gICAgICAgIGNyZWF0ZVdvcmtmbG93Rm9yY2VJbmxpbmVQbHVnaW4oXG4gICAgICAgICAgd29ya2Zsb3dUYXJnZXRXb3JsZCxcbiAgICAgICAgICBuaXRyby5vcHRpb25zLmFsaWFzW1dPUktGTE9XX1dPUkxEX1RBUkdFVF9NT0RVTEVdXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgdHNDb25maWcgcGx1Z2luXG4gICAgaWYgKG5pdHJvLm9wdGlvbnMud29ya2Zsb3c/LnR5cGVzY3JpcHRQbHVnaW4pIHtcbiAgICAgIG5pdHJvLm9wdGlvbnMudHlwZXNjcmlwdC50c0NvbmZpZyB8fD0ge307XG4gICAgICBuaXRyby5vcHRpb25zLnR5cGVzY3JpcHQudHNDb25maWcuY29tcGlsZXJPcHRpb25zIHx8PSB7fTtcbiAgICAgIG5pdHJvLm9wdGlvbnMudHlwZXNjcmlwdC50c0NvbmZpZy5jb21waWxlck9wdGlvbnMucGx1Z2lucyB8fD0gW107XG4gICAgICBuaXRyby5vcHRpb25zLnR5cGVzY3JpcHQudHNDb25maWcuY29tcGlsZXJPcHRpb25zLnBsdWdpbnMucHVzaCh7XG4gICAgICAgIG5hbWU6ICd3b3JrZmxvdycsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBOaXRybyB2MiBWZXJjZWwgZGVwbG95OiBrZWVwIHRoZSBsZWdhY3kgQnVpbGQgT3V0cHV0IEFQSSBwYXRoIHRoYXRcbiAgICAvLyBidWlsZHMgdGhlIHdvcmtmbG93IGZ1bmN0aW9ucyBzdGFuZGFsb25lIGFuZCBzdGl0Y2hlcyB0aGUgcm91dGVzIGludG9cbiAgICAvLyBgLnZlcmNlbC9vdXRwdXQvY29uZmlnLmpzb25gLiBUaGlzIHBhdGggaXMgaW5kZXBlbmRlbnQgb2Ygbml0cm8ncyBvd25cbiAgICAvLyBidW5kbGUgYW5kIGlzIG9ubHkgdXNlZCBmb3Igbml0cm9wYWNrIHYyIChlLmcuIE51eHQgNCBzdGlsbCB1c2VzIGl0KS5cbiAgICBjb25zdCB1c2VMZWdhY3lWZXJjZWxCdWlsZCA9IGlzVmVyY2VsRGVwbG95ICYmIGlzTml0cm9WMihuaXRybyk7XG5cbiAgICBpZiAodXNlTGVnYWN5VmVyY2VsQnVpbGQpIHtcbiAgICAgIG5pdHJvLmhvb2tzLmhvb2soJ2NvbXBpbGVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBuZXcgVmVyY2VsQnVpbGRlcihuaXRybykuYnVpbGQoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIExvY2FsIGRldi9wcm9kIGFuZCBOaXRybyB2MyBWZXJjZWwgZGVwbG95IHNoYXJlIHRoZSBzYW1lIHBhdGg6XG4gICAgLy8gYnVuZGxlIHRoZSB3b3JrZmxvdyByb3V0ZXMgaW50byBuaXRybyBpdHNlbGYgdmlhIHZpcnR1YWwgaGFuZGxlcnMuXG4gICAgLy8gRm9yIFZlcmNlbCB2MyB3ZSBhZGRpdGlvbmFsbHkgY29uZmlndXJlIGBmdW5jdGlvblJ1bGVzYCBzbyB0aGVcbiAgICAvLyByb3V0ZXMgZ2V0IHF1ZXVlIHRyaWdnZXJzICsgZXh0ZW5kZWQgbWF4RHVyYXRpb24gdmlhIHRoZSBuaXRyb1xuICAgIC8vIHZlcmNlbCBwcmVzZXQuIFRoaXMgbGV0cyB3b3JrZmxvdyBoYW5kbGVycyB1c2Ugbml0cm8gZmVhdHVyZXNcbiAgICAvLyAoc3RvcmFnZSwgZGF0YWJhc2UsIHJ1bnRpbWUgY29uZmlnLCB2aXJ0dWFsIGltcG9ydHMsIGV0Yy4pLlxuICAgIGlmICghdXNlTGVnYWN5VmVyY2VsQnVpbGQpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgTG9jYWxCdWlsZGVyKG5pdHJvKTtcbiAgICAgIGxldCBpc0luaXRpYWxCdWlsZCA9IHRydWU7XG5cbiAgICAgIG5pdHJvLmhvb2tzLmhvb2soJ2J1aWxkOmJlZm9yZScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuXG4gICAgICAgIC8vIEZvciBwcm9kOiB3cml0ZSB0aGUgbWFuaWZlc3QgaGFuZGxlciBmaWxlIHdpdGggaW5saW5lZCBjb250ZW50XG4gICAgICAgIC8vIG5vdyB0aGF0IHRoZSBidWlsZGVyIGhhcyBnZW5lcmF0ZWQgdGhlIG1hbmlmZXN0LiBSb2xsdXAgd2lsbFxuICAgICAgICAvLyBidW5kbGUgdGhpcyBmaWxlIGludG8gdGhlIGNvbXBpbGVkIG91dHB1dC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICFuaXRyby5vcHRpb25zLmRldiAmJlxuICAgICAgICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1BVQkxJQ19NQU5JRkVTVCA9PT0gJzEnXG4gICAgICAgICkge1xuICAgICAgICAgIHdyaXRlTWFuaWZlc3RIYW5kbGVyKG5pdHJvKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEFsbG93cyBmb3IgSE1SIC0gYnV0IHNraXAgdGhlIGZpcnN0IGRldjpyZWxvYWQgc2luY2UgYnVpbGQ6YmVmb3JlIGFscmVhZHkgcmFuXG4gICAgICBpZiAobml0cm8ub3B0aW9ucy5kZXYpIHtcbiAgICAgICAgbml0cm8uaG9va3MuaG9vaygnZGV2OnJlbG9hZCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAoaXNJbml0aWFsQnVpbGQpIHtcbiAgICAgICAgICAgIGlzSW5pdGlhbEJ1aWxkID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIER1cmluZyBkZXYsIGZpbGVzIG1heSBiZSBhZGRlZC9yZW1vdmVkIHdoaWxlIHRoZSBidWlsZGVyXG4gICAgICAgICAgICAvLyBpcyByZWJ1aWxkaW5nIChlLmcuLCBkdXJpbmcgdGVzdCBjbGVhbnVwKS4gTG9nIHRoZSBlcnJvclxuICAgICAgICAgICAgLy8gYnV0IGRvbid0IGNyYXNoIOKAlCB0aGUgbmV4dCBmaWxlIGNoYW5nZSB3aWxsIHRyaWdnZXJcbiAgICAgICAgICAgIC8vIGFub3RoZXIgcmVidWlsZCB3aXRoIHRoZSBjb3JyZWN0IGZpbGUgbGlzdC5cbiAgICAgICAgICAgIGNvbnNvbGUud2FybignV2FybmluZzogV29ya2Zsb3cgcmVidWlsZCBmYWlsZWQ6JywgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuaXRyby5vcHRpb25zLmRldikge1xuICAgICAgICBhZGREYXNoYm9hcmRIYW5kbGVyKG5pdHJvKTtcbiAgICAgIH1cblxuICAgICAgYWRkVmlydHVhbEhhbmRsZXIoXG4gICAgICAgIG5pdHJvLFxuICAgICAgICAnLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL3dlYmhvb2svOnRva2VuJyxcbiAgICAgICAgJ3dvcmtmbG93L3dlYmhvb2subWpzJ1xuICAgICAgKTtcblxuICAgICAgLy8gVjI6IHNpbmdsZSBjb21iaW5lZCBoYW5kbGVyIGZvciBib3RoIHdvcmtmbG93IGFuZCBzdGVwIGV4ZWN1dGlvbi5cbiAgICAgIC8vIFRoZSBzdGVwIHJlZ2lzdHJhdGlvbnMgYXJlIGltcG9ydGVkIGFzIHNpZGUgZWZmZWN0cyBieSB0aGUgY29tYmluZWRcbiAgICAgIC8vIGhhbmRsZXIg4oCUIG5vIHNlcGFyYXRlIHN0ZXAgcm91dGUgbmVlZGVkLlxuICAgICAgYWRkVmlydHVhbEhhbmRsZXIoXG4gICAgICAgIG5pdHJvLFxuICAgICAgICAnLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL2Zsb3cnLFxuICAgICAgICAnd29ya2Zsb3cvd29ya2Zsb3dzLm1qcydcbiAgICAgICk7XG5cbiAgICAgIC8vIE5pdHJvIHYzKyBWZXJjZWwgZGVwbG95OiBjb25maWd1cmUgZnVuY3Rpb24gcnVsZXMgZm9yIHRoZSBjb21iaW5lZFxuICAgICAgLy8gZmxvdyBoYW5kbGVyIHNvIGl0IGdldHMgdGhlIHF1ZXVlIHRyaWdnZXJzICsgbWF4IGR1cmF0aW9uIHRoYXQgdGhlXG4gICAgICAvLyB3b3JrZmxvdyBydW50aW1lIG5lZWRzLiBXb3JrZmxvdy1yZXF1aXJlZCBmaWVsZHMgKGBtYXhEdXJhdGlvbmAsXG4gICAgICAvLyBgZXhwZXJpbWVudGFsVHJpZ2dlcnNgLCBgcnVudGltZWAgd2hlbiBzZXQpIHRha2UgcHJlY2VkZW5jZSBvdmVyXG4gICAgICAvLyB1c2VyLXByb3ZpZGVkIHZhbHVlcyBmb3IgdGhlc2Ugcm91dGVzOyB1bnJlbGF0ZWQgZmllbGRzIHRoZSB1c2VyXG4gICAgICAvLyBzZXRzIChlLmcuIGBtZW1vcnlgKSBwYXNzIHRocm91Z2ggdW50b3VjaGVkLlxuICAgICAgLy9cbiAgICAgIC8vIFBhdHRlcm4ga2V5cyBtdXN0IG1hdGNoIHRoZSByb3V0ZSBwYXR0ZXJucyB0aGUgaGFuZGxlcnMgYXJlXG4gICAgICAvLyByZWdpc3RlcmVkIHdpdGggc28gbml0cm8gcmV1c2VzIHRoZSBzYW1lIGZ1bmN0aW9uIGRpcmVjdG9yeS5cbiAgICAgIC8vIFVzaW5nIGEgYHdlYmhvb2svKipgIGNhdGNoLWFsbCBoZXJlIHdvdWxkIGNyZWF0ZSBhIHNlY29uZFxuICAgICAgLy8gYHdlYmhvb2svWy4uLl0uZnVuY2AgbmV4dCB0byB0aGUgYHdlYmhvb2svW3Rva2VuXS5mdW5jYCB0aGF0XG4gICAgICAvLyBgYWRkVmlydHVhbEhhbmRsZXJgIHByb2R1Y2VzLlxuICAgICAgaWYgKGlzVmVyY2VsRGVwbG95KSB7XG4gICAgICAgIG5pdHJvLm9wdGlvbnMudmVyY2VsID8/PSB7fTtcbiAgICAgICAgbml0cm8ub3B0aW9ucy52ZXJjZWwuZnVuY3Rpb25SdWxlcyA/Pz0ge307XG5cbiAgICAgICAgY29uc3QgcnVudGltZSA9IG5pdHJvLm9wdGlvbnMud29ya2Zsb3c/LnJ1bnRpbWU7XG4gICAgICAgIGNvbnN0IHJ1bGVzID0gbml0cm8ub3B0aW9ucy52ZXJjZWwuZnVuY3Rpb25SdWxlcztcblxuICAgICAgICBjb25zdCBmbG93UGF0aCA9ICcvLndlbGwta25vd24vd29ya2Zsb3cvdjEvZmxvdyc7XG4gICAgICAgIHJ1bGVzW2Zsb3dQYXRoXSA9IHtcbiAgICAgICAgICAuLi5ydWxlc1tmbG93UGF0aF0sXG4gICAgICAgICAgLi4uKHJ1bnRpbWUgJiYgeyBydW50aW1lIH0pLFxuICAgICAgICAgIG1heER1cmF0aW9uOiAnbWF4JyxcbiAgICAgICAgICAvLyBWMiBjb21iaW5lZDogYSBzaW5nbGUgdHJpZ2dlciBjb3ZlcnMgYm90aCBgX193a2Zfd29ya2Zsb3dfKmBcbiAgICAgICAgICAvLyAod29ya2Zsb3cgb3JjaGVzdHJhdGlvbikgYW5kIGBfX3drZl9zdGVwXypgIChzdGVwIGV4ZWN1dGlvbiksXG4gICAgICAgICAgLy8gc2luY2UgdGhlIHNhbWUgaGFuZGxlciBkaXNwYXRjaGVzIGJvdGguXG4gICAgICAgICAgZXhwZXJpbWVudGFsVHJpZ2dlcnM6IFtXT1JLRkxPV19RVUVVRV9UUklHR0VSXSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAocnVudGltZSkge1xuICAgICAgICAgIGNvbnN0IHdlYmhvb2tQYXRoID0gJy8ud2VsbC1rbm93bi93b3JrZmxvdy92MS93ZWJob29rLzp0b2tlbic7XG4gICAgICAgICAgcnVsZXNbd2ViaG9va1BhdGhdID0geyAuLi5ydWxlc1t3ZWJob29rUGF0aF0sIHJ1bnRpbWUgfTtcblxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5XT1JLRkxPV19QVUJMSUNfTUFOSUZFU1QgPT09ICcxJykge1xuICAgICAgICAgICAgY29uc3QgbWFuaWZlc3RQYXRoID0gJy8ud2VsbC1rbm93bi93b3JrZmxvdy92MS9tYW5pZmVzdC5qc29uJztcbiAgICAgICAgICAgIHJ1bGVzW21hbmlmZXN0UGF0aF0gPSB7IC4uLnJ1bGVzW21hbmlmZXN0UGF0aF0sIHJ1bnRpbWUgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gRXhwb3NlIG1hbmlmZXN0IGFzIGEgcHVibGljIEhUVFAgcm91dGUgd2hlbiBXT1JLRkxPV19QVUJMSUNfTUFOSUZFU1Q9MVxuICAgICAgaWYgKHByb2Nlc3MuZW52LldPUktGTE9XX1BVQkxJQ19NQU5JRkVTVCA9PT0gJzEnKSB7XG4gICAgICAgIC8vIFdyaXRlIGEgcGxhY2Vob2xkZXIgbWFuaWZlc3QtZGF0YS5tanMgc28gcm9sbHVwIGNhbiByZXNvbHZlIHRoZVxuICAgICAgICAvLyBpbXBvcnQuIEl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgcmVhbCBtYW5pZmVzdCBpbiBidWlsZDpiZWZvcmUuXG4gICAgICAgIC8vIFdyaXRlIGEgcGxhY2Vob2xkZXIgaGFuZGxlciBmaWxlIHNvIHJvbGx1cCBjYW4gcmVzb2x2ZSB0aGUgcGF0aFxuICAgICAgICAvLyBkdXJpbmcgcHJvZCBjb21waWxhdGlvbi4gSXQgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSByZWFsXG4gICAgICAgIC8vIG1hbmlmZXN0IGNvbnRlbnQgYnkgd3JpdGVNYW5pZmVzdEhhbmRsZXIoKSBpbiBidWlsZDpiZWZvcmUuXG4gICAgICAgIGlmICghbml0cm8ub3B0aW9ucy5kZXYpIHtcbiAgICAgICAgICBjb25zdCBkaXIgPSBqb2luKG5pdHJvLm9wdGlvbnMuYnVpbGREaXIsICd3b3JrZmxvdycpO1xuICAgICAgICAgIG1rZGlyU3luYyhkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICAgIGNvbnN0IGhhbmRsZXJQYXRoID0gam9pbihkaXIsICdtYW5pZmVzdC1oYW5kbGVyLm1qcycpO1xuICAgICAgICAgIHdyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICBoYW5kbGVyUGF0aCxcbiAgICAgICAgICAgICdleHBvcnQgZGVmYXVsdCBhc3luYyAoKSA9PiBuZXcgUmVzcG9uc2UoXCJNYW5pZmVzdCBub3QgZm91bmRcIiwgeyBzdGF0dXM6IDQwNCB9KTtcXG4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBhZGRNYW5pZmVzdEhhbmRsZXIobml0cm8pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbn0gc2F0aXNmaWVzIE5pdHJvTW9kdWxlO1xuXG5jb25zdCBEQVNIQk9BUkRfVklSVFVBTF9JRCA9ICcjd29ya2Zsb3cvZGFzaGJvYXJkLWhhbmRsZXInO1xuXG5mdW5jdGlvbiBhZGREYXNoYm9hcmRIYW5kbGVyKG5pdHJvOiBOaXRybykge1xuICBjb25zdCByb3V0ZSA9ICcvX3dvcmtmbG93JztcbiAgbml0cm8ub3B0aW9ucy5oYW5kbGVycy5wdXNoKHsgcm91dGUsIGhhbmRsZXI6IERBU0hCT0FSRF9WSVJUVUFMX0lEIH0pO1xuXG4gIC8vIFJlc29sdmUgYEB3b3JrZmxvdy93ZWIvc2VydmVyYCByZWxhdGl2ZSB0byB0aGlzIG1vZHVsZSBzbyBjb25zdW1lcnMgZG9uJ3RcbiAgLy8gbmVlZCBhIGRpcmVjdCBkZXBlbmRlbmN5IG9uIGBAd29ya2Zsb3cvd2ViYC4gVGhlIHBhdGggaXMgaW5saW5lZCBpbnRvIHRoZVxuICAvLyB2aXJ0dWFsIGhhbmRsZXIgYXMgYSBmaWxlOi8vIFVSTCBzbyBOb2RlIGNhbiBgaW1wb3J0KClgIGl0IGF0IHJ1bnRpbWVcbiAgLy8gcmVnYXJkbGVzcyBvZiB3aGVyZSB0aGUgZ2VuZXJhdGVkIE5pdHJvIGJ1bmRsZSBlbmRzIHVwLlxuICBjb25zdCByZXF1aXJlXyA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTtcbiAgbGV0IHdlYlNlcnZlclVybDogc3RyaW5nO1xuICB0cnkge1xuICAgIHdlYlNlcnZlclVybCA9IHBhdGhUb0ZpbGVVUkwocmVxdWlyZV8ucmVzb2x2ZSgnQHdvcmtmbG93L3dlYi9zZXJ2ZXInKSkuaHJlZjtcbiAgfSBjYXRjaCB7XG4gICAgd2ViU2VydmVyVXJsID0gJ0B3b3JrZmxvdy93ZWIvc2VydmVyJztcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZXJTb3VyY2UgPSAvKiBqcyAqLyBgXG4gICAgY29uc3QgX193b3JrZmxvd1dlYlNlcnZlclVybCA9ICR7SlNPTi5zdHJpbmdpZnkod2ViU2VydmVyVXJsKX07XG4gICAgbGV0IHNlcnZlclByb21pc2UgPSBudWxsO1xuICAgIGFzeW5jIGZ1bmN0aW9uIGdldERhc2hib2FyZFVybCgpIHtcbiAgICAgIGlmICghc2VydmVyUHJvbWlzZSkge1xuICAgICAgICBzZXJ2ZXJQcm9taXNlID0gKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCB7IHN0YXJ0U2VydmVyIH0gPSBhd2FpdCBpbXBvcnQoLyogQHZpdGUtaWdub3JlICovIC8qIHdlYnBhY2tJZ25vcmU6IHRydWUgKi8gX193b3JrZmxvd1dlYlNlcnZlclVybCk7XG4gICAgICAgICAgY29uc3Qgc2VydmVyID0gYXdhaXQgc3RhcnRTZXJ2ZXIoMCk7XG4gICAgICAgICAgY29uc3QgYWRkcmVzcyA9IHNlcnZlci5hZGRyZXNzKCk7XG4gICAgICAgICAgY29uc3QgcG9ydCA9IHR5cGVvZiBhZGRyZXNzID09PSAnb2JqZWN0JyAmJiBhZGRyZXNzID8gYWRkcmVzcy5wb3J0IDogMzQ1NjtcbiAgICAgICAgICByZXR1cm4gJ2h0dHA6Ly9sb2NhbGhvc3Q6JyArIHBvcnQ7XG4gICAgICAgIH0pKCkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgc2VydmVyUHJvbWlzZSA9IG51bGw7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNlcnZlclByb21pc2U7XG4gICAgfVxuICBgO1xuXG4gIGlmICghbml0cm8ucm91dGluZykge1xuICAgIG5pdHJvLm9wdGlvbnMudmlydHVhbFtEQVNIQk9BUkRfVklSVFVBTF9JRF0gPSAvKiBqcyAqLyBgXG4gICAgICBpbXBvcnQgeyBmcm9tV2ViSGFuZGxlciB9IGZyb20gXCJoM1wiO1xuICAgICAgJHtoYW5kbGVyU291cmNlfVxuICAgICAgZXhwb3J0IGRlZmF1bHQgZnJvbVdlYkhhbmRsZXIoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IGdldERhc2hib2FyZFVybCgpO1xuICAgICAgICAgIHJldHVybiBSZXNwb25zZS5yZWRpcmVjdCh1cmwsIDMwMik7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IHdvcmtmbG93IGRhc2hib2FyZDonLCBlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZSgnRmFpbGVkIHRvIHN0YXJ0IHdvcmtmbG93IGRhc2hib2FyZDogJyArIGVycm9yLm1lc3NhZ2UsIHsgc3RhdHVzOiA1MDAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIGA7XG4gIH0gZWxzZSB7XG4gICAgbml0cm8ub3B0aW9ucy52aXJ0dWFsW0RBU0hCT0FSRF9WSVJUVUFMX0lEXSA9IC8qIGpzICovIGBcbiAgICAgICR7aGFuZGxlclNvdXJjZX1cbiAgICAgIGV4cG9ydCBkZWZhdWx0IGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB1cmwgPSBhd2FpdCBnZXREYXNoYm9hcmRVcmwoKTtcbiAgICAgICAgICByZXR1cm4gUmVzcG9uc2UucmVkaXJlY3QodXJsLCAzMDIpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCB3b3JrZmxvdyBkYXNoYm9hcmQ6JywgZXJyb3IpO1xuICAgICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoJ0ZhaWxlZCB0byBzdGFydCB3b3JrZmxvdyBkYXNoYm9hcmQ6ICcgKyBlcnJvci5tZXNzYWdlLCB7IHN0YXR1czogNTAwIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIGA7XG4gIH1cbn1cblxudHlwZSBWaXJ0dWFsSGFuZGxlclBhdGggPSAnd29ya2Zsb3cvd2ViaG9vay5tanMnIHwgJ3dvcmtmbG93L3dvcmtmbG93cy5tanMnO1xuXG5mdW5jdGlvbiBnZXRTdGF0aWNJbXBvcnRTcGVjaWZpZXIoaWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChpZC5zdGFydHNXaXRoKCdmaWxlOi8vJykpIHtcbiAgICByZXR1cm4gaWQ7XG4gIH1cbiAgaWYgKGlkLnN0YXJ0c1dpdGgoJy8nKSB8fCAvXltBLVphLXpdOltcXFxcL10vLnRlc3QoaWQpKSB7XG4gICAgcmV0dXJuIHBhdGhUb0ZpbGVVUkwoaWQpLmhyZWY7XG4gIH1cbiAgcmV0dXJuIGlkO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEZXZXb3JsZFRhcmdldFNvdXJjZShuaXRybzogTml0cm8pOiBzdHJpbmcge1xuICBjb25zdCB3b3JrZmxvd1RhcmdldFdvcmxkQWxpYXMgPVxuICAgIG5pdHJvLm9wdGlvbnMuYWxpYXNbV09SS0ZMT1dfV09STERfVEFSR0VUX01PRFVMRV07XG4gIGlmICh0eXBlb2Ygd29ya2Zsb3dUYXJnZXRXb3JsZEFsaWFzICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBNaXNzaW5nICR7V09SS0ZMT1dfV09STERfVEFSR0VUX01PRFVMRX0gYWxpYXMgZm9yIE5pdHJvIGRldiB3b3JrZmxvdyBoYW5kbGVyYFxuICAgICk7XG4gIH1cblxuICBjb25zdCB3b3JrZmxvd1RhcmdldFdvcmxkSW1wb3J0ID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgZ2V0U3RhdGljSW1wb3J0U3BlY2lmaWVyKHdvcmtmbG93VGFyZ2V0V29ybGRBbGlhcylcbiAgKTtcbiAgY29uc3Qgd29ya2Zsb3dDb3JlUnVudGltZUltcG9ydCA9IEpTT04uc3RyaW5naWZ5KFxuICAgIGdldFN0YXRpY0ltcG9ydFNwZWNpZmllcihcbiAgICAgIHJlc29sdmVXb3JrZmxvd0NvcmVSdW50aW1lQWxpYXMoeyB3b3JraW5nRGlyOiBuaXRyby5vcHRpb25zLnJvb3REaXIgfSlcbiAgICApXG4gICk7XG5cbiAgcmV0dXJuIC8qIGpzICovIGBcbiAgICAgIGltcG9ydCB7XG4gICAgICAgIGNyZWF0ZVdvcmxkRnJvbU1vZHVsZSBhcyBfX3dvcmtmbG93Q3JlYXRlV29ybGRGcm9tTW9kdWxlLFxuICAgICAgICBzZXRXb3JsZCBhcyBfX3dvcmtmbG93U2V0V29ybGQsXG4gICAgICB9IGZyb20gJHt3b3JrZmxvd0NvcmVSdW50aW1lSW1wb3J0fTtcbiAgICAgIGltcG9ydCAqIGFzIF9fd29ya2Zsb3dUYXJnZXRXb3JsZCBmcm9tICR7d29ya2Zsb3dUYXJnZXRXb3JsZEltcG9ydH07XG5cbiAgICAgIGxldCBfX3dvcmtmbG93V29ybGRQcm9taXNlID0gbnVsbDtcblxuICAgICAgYXN5bmMgZnVuY3Rpb24gZW5zdXJlV29ya2Zsb3dXb3JsZCgpIHtcbiAgICAgICAgaWYgKCFfX3dvcmtmbG93V29ybGRQcm9taXNlKSB7XG4gICAgICAgICAgX193b3JrZmxvd1dvcmxkUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICAgIF9fd29ya2Zsb3dDcmVhdGVXb3JsZEZyb21Nb2R1bGUoX193b3JrZmxvd1RhcmdldFdvcmxkKVxuICAgICAgICAgICkudGhlbihfX3dvcmtmbG93U2V0V29ybGQpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IF9fd29ya2Zsb3dXb3JsZFByb21pc2U7XG4gICAgICB9XG4gIGA7XG59XG5cbmZ1bmN0aW9uIGFkZFZpcnR1YWxIYW5kbGVyKFxuICBuaXRybzogTml0cm8sXG4gIHJvdXRlOiBzdHJpbmcsXG4gIGJ1aWxkUGF0aDogVmlydHVhbEhhbmRsZXJQYXRoXG4pIHtcbiAgbml0cm8ub3B0aW9ucy5oYW5kbGVycy5wdXNoKHtcbiAgICByb3V0ZSxcbiAgICBoYW5kbGVyOiBgIyR7YnVpbGRQYXRofWAsXG4gIH0pO1xuICBjb25zdCBoYW5kbGVySW1wb3J0UGF0aCA9IEpTT04uc3RyaW5naWZ5KFxuICAgIGpvaW4obml0cm8ub3B0aW9ucy5idWlsZERpciwgYnVpbGRQYXRoKVxuICApO1xuICBjb25zdCBzdGVwc0ltcG9ydFBhdGggPSBKU09OLnN0cmluZ2lmeShcbiAgICBqb2luKG5pdHJvLm9wdGlvbnMuYnVpbGREaXIsICd3b3JrZmxvdy9zdGVwcy5tanMnKVxuICApO1xuICBjb25zdCBwcmVsb2FkU3RlcHM6IFJlY29yZDxWaXJ0dWFsSGFuZGxlclBhdGgsIHN0cmluZz4gPSB7XG4gICAgJ3dvcmtmbG93L3dlYmhvb2subWpzJzogJycsXG4gICAgJ3dvcmtmbG93L3dvcmtmbG93cy5tanMnOiBgYXdhaXQgaW1wb3J0KC8qIEB2aXRlLWlnbm9yZSAqLyBwYXRoVG9GaWxlVVJMKCR7c3RlcHNJbXBvcnRQYXRofSkuaHJlZiArIFwiP3Q9XCIgKyB2ZXJzaW9uKTtgLFxuICB9O1xuXG4gIGlmIChuaXRyby5vcHRpb25zLmRldikge1xuICAgIGNvbnN0IGRldldvcmxkVGFyZ2V0U291cmNlID0gY3JlYXRlRGV2V29ybGRUYXJnZXRTb3VyY2Uobml0cm8pO1xuICAgIC8vIERldiBtb2RlOiBsb2FkIGdlbmVyYXRlZCB3b3JrZmxvdyBidW5kbGVzIGZyb20gZGlzayBhdCByZXF1ZXN0IHRpbWUuXG4gICAgLy8gVGhpcyBrZWVwcyBgLm5pdHJvL3dvcmtmbG93LyoubWpzYCBvdXQgb2YgTml0cm8ncyBvd24gYnVuZGxlIGdyYXBoLFxuICAgIC8vIHdoaWNoIGF2b2lkcyByZWJ1aWxkIGxvb3BzIGFuZCBzdGFsZSBkZXBlbmRlbmN5IGdyYXBocyBkdXJpbmcgSE1SLlxuICAgIC8vIENhY2hlLWJ1c3QgYnkgZmlsZSBtdGltZSBzbyBlYWNoIHN1Y2Nlc3NmdWwgcmVidWlsZCBsb2FkcyBmcmVzaCBjb2RlLlxuICAgIGlmICghbml0cm8ucm91dGluZykge1xuICAgICAgbml0cm8ub3B0aW9ucy52aXJ0dWFsW2AjJHtidWlsZFBhdGh9YF0gPSAvKiBqcyAqLyBgXG4gICAgICBpbXBvcnQgeyBmcm9tV2ViSGFuZGxlciB9IGZyb20gXCJoM1wiO1xuICAgICAgaW1wb3J0IHsgc3RhdFN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuICAgICAgaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gXCJub2RlOnVybFwiO1xuICAgICAgJHtkZXZXb3JsZFRhcmdldFNvdXJjZX1cblxuICAgICAgY29uc3QgaGFuZGxlclBhdGggPSAke2hhbmRsZXJJbXBvcnRQYXRofTtcbiAgICAgIGxldCBjdXJyZW50VmVyc2lvbiA9IFwiXCI7XG4gICAgICBsZXQgY3VycmVudEltcG9ydFBhdGggPSBcIlwiO1xuXG4gICAgICBhc3luYyBmdW5jdGlvbiBsb2FkUE9TVCgpIHtcbiAgICAgICAgYXdhaXQgZW5zdXJlV29ya2Zsb3dXb3JsZCgpO1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gU3RyaW5nKHN0YXRTeW5jKGhhbmRsZXJQYXRoKS5tdGltZU1zKTtcbiAgICAgICAgaWYgKHZlcnNpb24gIT09IGN1cnJlbnRWZXJzaW9uKSB7XG4gICAgICAgICAgY3VycmVudFZlcnNpb24gPSB2ZXJzaW9uO1xuICAgICAgICAgIGN1cnJlbnRJbXBvcnRQYXRoID0gcGF0aFRvRmlsZVVSTChoYW5kbGVyUGF0aCkuaHJlZiArIFwiP3Q9XCIgKyB2ZXJzaW9uO1xuICAgICAgICAgICR7cHJlbG9hZFN0ZXBzW2J1aWxkUGF0aF19XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChhd2FpdCBpbXBvcnQoY3VycmVudEltcG9ydFBhdGgpKS5QT1NUO1xuICAgICAgfVxuXG4gICAgICBleHBvcnQgZGVmYXVsdCBmcm9tV2ViSGFuZGxlcihhc3luYyAocmVxdWVzdCwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBQT1NUID0gYXdhaXQgbG9hZFBPU1QoKTtcbiAgICAgICAgcmV0dXJuIFBPU1QocmVxdWVzdCwgY29udGV4dCk7XG4gICAgICB9KTtcbiAgICBgO1xuICAgIH0gZWxzZSB7XG4gICAgICBuaXRyby5vcHRpb25zLnZpcnR1YWxbYCMke2J1aWxkUGF0aH1gXSA9IC8qIGpzICovIGBcbiAgICAgIGltcG9ydCB7IHN0YXRTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbiAgICAgIGltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tIFwibm9kZTp1cmxcIjtcbiAgICAgICR7ZGV2V29ybGRUYXJnZXRTb3VyY2V9XG5cbiAgICAgIGNvbnN0IGhhbmRsZXJQYXRoID0gJHtoYW5kbGVySW1wb3J0UGF0aH07XG4gICAgICBsZXQgY3VycmVudFZlcnNpb24gPSBcIlwiO1xuICAgICAgbGV0IGN1cnJlbnRJbXBvcnRQYXRoID0gXCJcIjtcblxuICAgICAgYXN5bmMgZnVuY3Rpb24gbG9hZFBPU1QoKSB7XG4gICAgICAgIGF3YWl0IGVuc3VyZVdvcmtmbG93V29ybGQoKTtcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IFN0cmluZyhzdGF0U3luYyhoYW5kbGVyUGF0aCkubXRpbWVNcyk7XG4gICAgICAgIGlmICh2ZXJzaW9uICE9PSBjdXJyZW50VmVyc2lvbikge1xuICAgICAgICAgIGN1cnJlbnRWZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgICBjdXJyZW50SW1wb3J0UGF0aCA9IHBhdGhUb0ZpbGVVUkwoaGFuZGxlclBhdGgpLmhyZWYgKyBcIj90PVwiICsgdmVyc2lvbjtcbiAgICAgICAgICAke3ByZWxvYWRTdGVwc1tidWlsZFBhdGhdfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoYXdhaXQgaW1wb3J0KGN1cnJlbnRJbXBvcnRQYXRoKSkuUE9TVDtcbiAgICAgIH1cblxuICAgICAgZXhwb3J0IGRlZmF1bHQgYXN5bmMgKHsgcmVxIH0pID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBQT1NUID0gYXdhaXQgbG9hZFBPU1QoKTtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgUE9TVChyZXEpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0hhbmRsZXIgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoJ0ludGVybmFsIFNlcnZlciBFcnJvcicsIHsgc3RhdHVzOiA1MDAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgYDtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gS2VlcCBhIGJhcmUgaW1wb3J0IGFsb25nc2lkZSBgUE9TVGA6IGluIE51eHQgKyBOaXRybyBwcm9kdWN0aW9uIGJ1aWxkc1xuICAvLyB1c2luZyBgQHdvcmtmbG93L251eHRgLCBpbXBvcnRpbmcgb25seSBgUE9TVGAgY291bGQgZHJvcCB0aGUgZ2VuZXJhdGVkXG4gIC8vIHN0ZXAgYnVuZGxlJ3MgdG9wLWxldmVsIHJlZ2lzdHJhdGlvbnMsIHNvIHRoZSBoYW5kbGVyIGxvYWRlZCBidXQgc3RlcHNcbiAgLy8gd2VyZSBtaXNzaW5nIGF0IHJ1bnRpbWUuXG5cbiAgaWYgKCFuaXRyby5yb3V0aW5nKSB7XG4gICAgLy8gTml0cm8gdjIgKGxlZ2FjeSlcbiAgICBuaXRyby5vcHRpb25zLnZpcnR1YWxbYCMke2J1aWxkUGF0aH1gXSA9IC8qIGpzICovIGBcbiAgICBpbXBvcnQgJHtoYW5kbGVySW1wb3J0UGF0aH07XG4gICAgaW1wb3J0IHsgZnJvbVdlYkhhbmRsZXIgfSBmcm9tIFwiaDNcIjtcbiAgICBpbXBvcnQgeyBQT1NUIH0gZnJvbSAke2hhbmRsZXJJbXBvcnRQYXRofTtcbiAgICBleHBvcnQgZGVmYXVsdCBmcm9tV2ViSGFuZGxlcihQT1NUKTtcbiAgYDtcbiAgfSBlbHNlIHtcbiAgICAvLyBOaXRybyB2MysgKG5hdGl2ZSB3ZWIgaGFuZGxlcnMpXG4gICAgbml0cm8ub3B0aW9ucy52aXJ0dWFsW2AjJHtidWlsZFBhdGh9YF0gPSAvKiBqcyAqLyBgXG4gICAgaW1wb3J0ICR7aGFuZGxlckltcG9ydFBhdGh9O1xuICAgIGltcG9ydCB7IFBPU1QgfSBmcm9tICR7aGFuZGxlckltcG9ydFBhdGh9O1xuICAgIGV4cG9ydCBkZWZhdWx0IGFzeW5jICh7IHJlcSB9KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgUE9TVChyZXEpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignSGFuZGxlciBlcnJvcjonLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoJ0ludGVybmFsIFNlcnZlciBFcnJvcicsIHsgc3RhdHVzOiA1MDAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgYDtcbiAgfVxufVxuXG5jb25zdCBNQU5JRkVTVF9WSVJUVUFMX0lEID0gJyN3b3JrZmxvdy9tYW5pZmVzdC1oYW5kbGVyJztcblxuZnVuY3Rpb24gYWRkTWFuaWZlc3RIYW5kbGVyKG5pdHJvOiBOaXRybykge1xuICBjb25zdCByb3V0ZSA9ICcvLndlbGwta25vd24vd29ya2Zsb3cvdjEvbWFuaWZlc3QuanNvbic7XG4gIGNvbnN0IG1hbmlmZXN0UGF0aCA9IGpvaW4obml0cm8ub3B0aW9ucy5idWlsZERpciwgJ3dvcmtmbG93L21hbmlmZXN0Lmpzb24nKTtcbiAgY29uc3QgaGFuZGxlclBhdGggPSBqb2luKFxuICAgIG5pdHJvLm9wdGlvbnMuYnVpbGREaXIsXG4gICAgJ3dvcmtmbG93L21hbmlmZXN0LWhhbmRsZXIubWpzJ1xuICApO1xuXG4gIGlmIChuaXRyby5vcHRpb25zLmRldikge1xuICAgIC8vIERldiBtb2RlOiB1c2UgYSB2aXJ0dWFsIGhhbmRsZXIgdGhhdCByZWFkcyB0aGUgbWFuaWZlc3QgZnJvbSBkaXNrIGF0XG4gICAgLy8gcmVxdWVzdCB0aW1lLiBUaGUgYWJzb2x1dGUgcGF0aCBpcyB2YWxpZCBiZWNhdXNlIHdlJ3JlIG9uIHRoZSBidWlsZCBtYWNoaW5lLlxuICAgIG5pdHJvLm9wdGlvbnMuaGFuZGxlcnMucHVzaCh7IHJvdXRlLCBoYW5kbGVyOiBNQU5JRkVTVF9WSVJUVUFMX0lEIH0pO1xuICAgIG5pdHJvLm9wdGlvbnMudmlydHVhbFtNQU5JRkVTVF9WSVJUVUFMX0lEXSA9ICFuaXRyby5yb3V0aW5nXG4gICAgICA/IC8qIGpzICovIGBcbiAgICAgIGltcG9ydCB7IGZyb21XZWJIYW5kbGVyIH0gZnJvbSBcImgzXCI7XG4gICAgICBpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuICAgICAgZnVuY3Rpb24gR0VUKCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG1hbmlmZXN0ID0gcmVhZEZpbGVTeW5jKCR7SlNPTi5zdHJpbmdpZnkobWFuaWZlc3RQYXRoKX0sIFwidXRmLThcIik7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShtYW5pZmVzdCwge1xuICAgICAgICAgICAgaGVhZGVyczogeyBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFwiTWFuaWZlc3Qgbm90IGZvdW5kXCIsIHsgc3RhdHVzOiA0MDQgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGV4cG9ydCBkZWZhdWx0IGZyb21XZWJIYW5kbGVyKEdFVCk7XG4gICAgYFxuICAgICAgOiAvKiBqcyAqLyBgXG4gICAgICBpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuICAgICAgZXhwb3J0IGRlZmF1bHQgYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG1hbmlmZXN0ID0gcmVhZEZpbGVTeW5jKCR7SlNPTi5zdHJpbmdpZnkobWFuaWZlc3RQYXRoKX0sIFwidXRmLThcIik7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShtYW5pZmVzdCwge1xuICAgICAgICAgICAgaGVhZGVyczogeyBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFwiTWFuaWZlc3Qgbm90IGZvdW5kXCIsIHsgc3RhdHVzOiA0MDQgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgYDtcbiAgfSBlbHNlIHtcbiAgICAvLyBQcm9kIG1vZGU6IHJlZ2lzdGVyIGEgcGh5c2ljYWwgaGFuZGxlciBmaWxlIHRoYXQgd2lsbCBiZSB3cml0dGVuIGJ5XG4gICAgLy8gd3JpdGVNYW5pZmVzdEhhbmRsZXIoKSBhZnRlciB0aGUgYnVpbGRlciBnZW5lcmF0ZXMgdGhlIG1hbmlmZXN0LlxuICAgIC8vIFRoaXMgZmlsZSBpcyBidW5kbGVkIGJ5IHJvbGx1cCBpbnRvIHRoZSBjb21waWxlZCBvdXRwdXQuXG4gICAgbml0cm8ub3B0aW9ucy5oYW5kbGVycy5wdXNoKHsgcm91dGUsIGhhbmRsZXI6IGhhbmRsZXJQYXRoIH0pO1xuICB9XG59XG5cbi8qKlxuICogV3JpdGVzIGEgcGh5c2ljYWwgbWFuaWZlc3QgaGFuZGxlciBmaWxlIHdpdGggdGhlIG1hbmlmZXN0IGNvbnRlbnQgaW5saW5lZC5cbiAqIE11c3QgYmUgY2FsbGVkIGFmdGVyIHRoZSBidWlsZGVyIGdlbmVyYXRlcyB0aGUgbWFuaWZlc3QgKGR1cmluZyBidWlsZDpiZWZvcmUpXG4gKiBhbmQgYmVmb3JlIE5pdHJvIGNvbXBpbGVzIHRoZSBidW5kbGUgd2l0aCByb2xsdXAuXG4gKi9cbmZ1bmN0aW9uIHdyaXRlTWFuaWZlc3RIYW5kbGVyKG5pdHJvOiBOaXRybykge1xuICBjb25zdCBtYW5pZmVzdFBhdGggPSBqb2luKG5pdHJvLm9wdGlvbnMuYnVpbGREaXIsICd3b3JrZmxvdy9tYW5pZmVzdC5qc29uJyk7XG4gIGNvbnN0IGhhbmRsZXJQYXRoID0gam9pbihcbiAgICBuaXRyby5vcHRpb25zLmJ1aWxkRGlyLFxuICAgICd3b3JrZmxvdy9tYW5pZmVzdC1oYW5kbGVyLm1qcydcbiAgKTtcbiAgY29uc3QgZGlyID0gam9pbihuaXRyby5vcHRpb25zLmJ1aWxkRGlyLCAnd29ya2Zsb3cnKTtcbiAgbWtkaXJTeW5jKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBtYW5pZmVzdENvbnRlbnQgPSByZWFkRmlsZVN5bmMobWFuaWZlc3RQYXRoLCAndXRmLTgnKTtcbiAgICBKU09OLnBhcnNlKG1hbmlmZXN0Q29udGVudCk7IC8vIHZhbGlkYXRlXG5cbiAgICBjb25zdCBoYW5kbGVyQ29kZSA9ICFuaXRyby5yb3V0aW5nXG4gICAgICA/IGBpbXBvcnQgeyBmcm9tV2ViSGFuZGxlciB9IGZyb20gXCJoM1wiO1xuY29uc3QgbWFuaWZlc3QgPSAke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0Q29udGVudCl9O1xuZXhwb3J0IGRlZmF1bHQgZnJvbVdlYkhhbmRsZXIoKCkgPT4gbmV3IFJlc3BvbnNlKG1hbmlmZXN0LCB7XG4gIGhlYWRlcnM6IHsgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbn0pKTtcbmBcbiAgICAgIDogYGNvbnN0IG1hbmlmZXN0ID0gJHtKU09OLnN0cmluZ2lmeShtYW5pZmVzdENvbnRlbnQpfTtcbmV4cG9ydCBkZWZhdWx0IGFzeW5jICgpID0+IG5ldyBSZXNwb25zZShtYW5pZmVzdCwge1xuICBoZWFkZXJzOiB7IFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG59KTtcbmA7XG4gICAgd3JpdGVGaWxlU3luYyhoYW5kbGVyUGF0aCwgaGFuZGxlckNvZGUpO1xuICB9IGNhdGNoIHtcbiAgICAvLyBXcml0ZSBhIDQwNCBmYWxsYmFjayBoYW5kbGVyXG4gICAgY29uc3QgZmFsbGJhY2sgPSAhbml0cm8ucm91dGluZ1xuICAgICAgPyBgaW1wb3J0IHsgZnJvbVdlYkhhbmRsZXIgfSBmcm9tIFwiaDNcIjtcbmV4cG9ydCBkZWZhdWx0IGZyb21XZWJIYW5kbGVyKCgpID0+IG5ldyBSZXNwb25zZShcIk1hbmlmZXN0IG5vdCBmb3VuZFwiLCB7IHN0YXR1czogNDA0IH0pKTtcbmBcbiAgICAgIDogYGV4cG9ydCBkZWZhdWx0IGFzeW5jICgpID0+IG5ldyBSZXNwb25zZShcIk1hbmlmZXN0IG5vdCBmb3VuZFwiLCB7IHN0YXR1czogNDA0IH0pO1xuYDtcbiAgICB3cml0ZUZpbGVTeW5jKGhhbmRsZXJQYXRoLCBmYWxsYmFjayk7XG4gIH1cbn1cbiJdfQ==
627
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEQsT0FBTyxFQUNMLDRCQUE0QixFQUM1QiwrQkFBK0IsRUFDL0IsMkJBQTJCLEVBQzNCLGlDQUFpQyxFQUNqQyxzQkFBc0IsRUFDdEIsNEJBQTRCLEdBQzdCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUs1RDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFNBQVMsQ0FBQyxLQUFZO0lBQzdCLE1BQU0sWUFBWSxHQUFJLEtBQThDLENBQUMsSUFBSTtRQUN2RSxFQUFFLFlBQVksQ0FBQztJQUNqQixJQUFJLFlBQVksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixPQUFPLFlBQVksS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILFNBQVMsb0JBQW9CLENBQUMsTUFBb0I7SUFDaEQsTUFBTSxNQUFNLEdBQUcsMkJBQTJCLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM3QixJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNuQixNQUFN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QUcsQ0FBQyxLQUFLLENBQUMsT0FBTztZQUM3QixDQUFDLENBQUM7O0NBRVA7WUFDSyxDQUFDLENBQUM7Q0FDUCxDQUFDO1FBQ0UsYUFBYSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1rZGlyU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSAnbm9kZTptb2R1bGUnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCwgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCB7XG4gIGVuc3VyZVdvcmtmbG93VGFyZ2V0V29ybGRFbnYsXG4gIHJlc29sdmVXb3JrZmxvd0NvcmVSdW50aW1lQWxpYXMsXG4gIFdPUktGTE9XX05PREVfQ09NUEFUX0JBTk5FUixcbiAgV09SS0ZMT1dfT1BUSU9OQUxfUEdfTkFUSVZFX0FMSUFTLFxuICBXT1JLRkxPV19RVUVVRV9UUklHR0VSLFxuICBXT1JLRkxPV19XT1JMRF9UQVJHRVRfTU9EVUxFLFxufSBmcm9tICdAd29ya2Zsb3cvYnVpbGRlcnMnO1xuaW1wb3J0IHsgd29ya2Zsb3dUcmFuc2Zvcm1QbHVnaW4gfSBmcm9tICdAd29ya2Zsb3cvcm9sbHVwJztcbmltcG9ydCB0eXBlIHsgTml0cm8sIE5pdHJvTW9kdWxlLCBSb2xsdXBDb25maWcgfSBmcm9tICduaXRyby90eXBlcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aGUnO1xuaW1wb3J0IHsgTG9jYWxCdWlsZGVyLCBWZXJjZWxCdWlsZGVyIH0gZnJvbSAnLi9idWlsZGVycy5qcyc7XG5pbXBvcnQgdHlwZSB7IE1vZHVsZU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgeyBNb2R1bGVPcHRpb25zIH07XG5cbi8qKlxuICogRGV0ZWN0IHdoZXRoZXIgdGhlIE5pdHJvIGluc3RhbmNlIGlzIHYyLlxuICogTmV3ZXIgTml0cm8gcmVsZWFzZXMgKGJvdGggdjIgYW5kIHYzKSBleHBvc2UgYG5pdHJvLm1ldGEubWFqb3JWZXJzaW9uYC5cbiAqIEZhbGwgYmFjayB0byBgIW5pdHJvLnJvdXRpbmdgIChvbmx5IHByZXNlbnQgaW4gdjMrKSBmb3Igb2xkZXIgTml0cm8gdjJcbiAqIHZlcnNpb25zIHRoYXQgZG9uJ3QgaGF2ZSBgbWFqb3JWZXJzaW9uYCB5ZXQgKGUuZy4gTnV4dCB1c2VycyBvbiBhbiBvbGRlclxuICogbml0cm9wYWNrKS5cbiAqL1xuZnVuY3Rpb24gaXNOaXRyb1YyKG5pdHJvOiBOaXRybyk6IGJvb2xlYW4ge1xuICBjb25zdCBtYWpvclZlcnNpb24gPSAobml0cm8gYXMgeyBtZXRhPzogeyBtYWpvclZlcnNpb24/OiBudW1iZXIgfSB9KS5tZXRhXG4gICAgPy5tYWpvclZlcnNpb247XG4gIGlmIChtYWpvclZlcnNpb24gIT0gbnVsbCkge1xuICAgIHJldHVybiBtYWpvclZlcnNpb24gPT09IDI7XG4gIH1cbiAgcmV0dXJuICFuaXRyby5yb3V0aW5nO1xufVxuXG4vKipcbiAqIFByZXBlbmQgYSBgY3JlYXRlUmVxdWlyZWAtYmFja2VkIGdsb2JhbCBgcmVxdWlyZWAgdG8gZXZlcnkgc2VydmVyIGNodW5rIHNvXG4gKiB1bmRpY2kncyBidW5kbGVkIGByZXF1aXJlKCdub2RlOmh0dHAyJylgIHJlc29sdmVzIHRoZSByZWFsIGJ1aWx0aW4gaW5zdGVhZCBvZlxuICogdGhyb3dpbmcgKHdoaWNoIHdvdWxkIG1ha2UgdW5kaWNpIGZhbGwgYmFjayB0byBhIHN0dWIgd2l0aG91dFxuICogYGh0dHAyLmNvbm5lY3RgLCBicmVha2luZyBIVFRQLzIpLiBUaGUgZ3VhcmQga2VlcHMgaXQgaWRlbXBvdGVudCBhY3Jvc3NcbiAqIGNodW5rcywgYW5kIGBub2RlOm1vZHVsZWAgaXMgYWx3YXlzIGF2YWlsYWJsZSBpbiB0aGUgTm9kZSBzZXJ2ZXIgcnVudGltZS5cbiAqXG4gKiBUaGlzIGlzIGEgTm9kZS1zZXJ2ZXItcnVudGltZS1vbmx5IHNoaW0gKGNhbGxlcnMgZ2F0ZSBpdCB0byB0aGUgcHJvZHVjdGlvblxuICogc2VydmVyIGJ1aWxkKS4gTm90ZSB0aGUgZGVsaWJlcmF0ZSBnbG9iYWwgc2lkZSBlZmZlY3Q6IGRlZmluaW5nXG4gKiBgZ2xvYmFsVGhpcy5yZXF1aXJlYCBtYWtlcyBgdHlwZW9mIHJlcXVpcmVgIHRydXRoeSBmb3IgKmV2ZXJ5KiBidW5kbGVkXG4gKiBkZXBlbmRlbmN5IGluIHRoaXMgRVNNIHNlcnZlciBvdXRwdXQsIHNvIGFueSBsaWJyYXJ5IHRoYXQgZmVhdHVyZS1kZXRlY3RzXG4gKiBgcmVxdWlyZWAgd2lsbCB0YWtlIGl0cyBDSlMgcGF0aCBoZXJlLiBUaGF0IGlzIHNhZmUgYmVjYXVzZSAoYSkgaXQgbmV2ZXJcbiAqIHRvdWNoZXMgdGhlIGNsaWVudCBidW5kbGUsIChiKSB0aGUgYHR5cGVvZiByZXF1aXJlID09PSAndW5kZWZpbmVkJ2AgZ3VhcmRcbiAqIG1ha2VzIGl0IGEgbm8tb3AgaW4gQ0pTIGNodW5rcyB3aGVyZSBhIHJlYWwgYHJlcXVpcmVgIGFscmVhZHkgZXhpc3RzLCBhbmRcbiAqIChjKSB0aGUgYHJlcXVpcmVgIHdlIGluc3RhbGwgaXMgYSB3b3JraW5nIGBjcmVhdGVSZXF1aXJlYCwgc28gYSBsaWJyYXJ5IHRoYXRcbiAqIHN3aXRjaGVzIHRvIHRoZSByZXF1aXJlIHBhdGggZ2V0cyBhIGZ1bmN0aW9uYWwgYHJlcXVpcmVgLCBub3QgYSBicm9rZW4gc3R1Yi5cbiAqIFRoZSBiZWhhdmlvciB0byB3YXRjaCBmb3IgaXMgYSBidW5kbGVkIGxpYiB0aGF0LCBvbiBzZWVpbmcgYHJlcXVpcmVgLCBkb2VzXG4gKiBgcmVxdWlyZSgpYCBvZiBhbiBFU00tb25seSBkZXBlbmRlbmN5IG9uIGEgTm9kZSB2ZXJzaW9uIHdpdGhvdXQgYHJlcXVpcmUoRVNNKWBcbiAqIHN1cHBvcnQuXG4gKi9cbmZ1bmN0aW9uIGFkZE5vZGVSZXF1aXJlQmFubmVyKGNvbmZpZzogUm9sbHVwQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGJhbm5lciA9IFdPUktGTE9XX05PREVfQ09NUEFUX0JBTk5FUjtcbiAgY29uc3Qgb3V0cHV0ID0gY29uZmlnLm91dHB1dDtcbiAgaWYgKG91dHB1dCA9PSBudWxsKSB7XG4gICAgY29uZmlnLm91dHB1dCA9IHsgYmFubmVyIH07XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IG91dHB1dHMgPSBBcnJheS5pc0FycmF5KG91dHB1dCkgPyBvdXRwdXQgOiBbb3V0cHV0XTtcbiAgZm9yIChjb25zdCBvIG9mIG91dHB1dHMpIHtcbiAgICBjb25zdCBleGlzdGluZyA9IG8uYmFubmVyO1xuICAgIG8uYmFubmVyID1cbiAgICAgIGV4aXN0aW5nID09IG51bGxcbiAgICAgICAgPyBiYW5uZXJcbiAgICAgICAgOiB0eXBlb2YgZXhpc3RpbmcgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICA/IGFzeW5jIChjaHVuazogdW5rbm93bikgPT4gYCR7YmFubmVyfVxcbiR7YXdhaXQgZXhpc3RpbmcoY2h1bmspfWBcbiAgICAgICAgICA6IGAke2Jhbm5lcn1cXG4ke2V4aXN0aW5nfWA7XG4gIH1cbn1cblxuY29uc3QgV09SS0ZMT1dfSU5MSU5FX1BBQ0tBR0VTID0gbmV3IFNldChbXG4gICd3b3JrZmxvdycsXG4gICdjb3JlJyxcbiAgJ3NlcmRlJyxcbiAgJ2Vycm9ycycsXG4gICd1dGlscycsXG4gICdidWlsZGVycycsXG4gICdyb2xsdXAnLFxuICAnYWknLFxuICAnd29ybGQnLFxuXSk7XG5cbmZ1bmN0aW9uIGdldFdvcmtmbG93UGFja2FnZU5hbWUoc291cmNlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgcGFja2FnZVNwZWNpZmllciA9IHNvdXJjZS5tYXRjaCgvXkB3b3JrZmxvd1xcLyhbXi9dKykvKTtcbiAgaWYgKHBhY2thZ2VTcGVjaWZpZXIpIHtcbiAgICByZXR1cm4gcGFja2FnZVNwZWNpZmllclsxXSA/PyBudWxsO1xuICB9XG4gIGlmIChzb3VyY2UgPT09ICd3b3JrZmxvdycgfHwgc291cmNlLnN0YXJ0c1dpdGgoJ3dvcmtmbG93LycpKSB7XG4gICAgcmV0dXJuICd3b3JrZmxvdyc7XG4gIH1cbiAgY29uc3QgcGFja2FnZVBhdGggPSBzb3VyY2UubWF0Y2goL1tcXFxcL11wYWNrYWdlc1tcXFxcL10oW15cXFxcL10rKS8pO1xuICByZXR1cm4gcGFja2FnZVBhdGg/LlsxXSA/PyBudWxsO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVXb3JrZmxvd0ZvcmNlSW5saW5lUGx1Z2luKFxuICB3b3JrZmxvd1RhcmdldFdvcmxkOiBzdHJpbmcsXG4gIHdvcmtmbG93VGFyZ2V0V29ybGRBbGlhczogc3RyaW5nXG4pIHtcbiAgY29uc3QgdGFyZ2V0V29ybGRQYWNrYWdlID0gZ2V0V29ya2Zsb3dQYWNrYWdlTmFtZSh3b3JrZmxvd1RhcmdldFdvcmxkKTtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnd29ya2Zsb3c6Zm9yY2UtaW5saW5lJyxcbiAgICAvLyBgb3JkZXI6ICdwcmUnYCBpcyByZXF1aXJlZDogTml0cm8ncyBgbml0cm86ZXh0ZXJuYWxzYCBwbHVnaW5cbiAgICAvLyB1c2VzIGBvcmRlcjogJ3ByZSdgIGZvciBpdHMgcmVzb2x2ZUlkIGhvb2sgYW5kIHNwcmVhZHMgb3VyXG4gICAgLy8gcmVzb2x1dGlvbiByZXN1bHQgd2hpbGUgZm9yY2luZyBgZXh0ZXJuYWw6IHRydWVgLiBXaXRob3V0XG4gICAgLy8gYHByZWAgaGVyZSwgb3VyIGBleHRlcm5hbDogZmFsc2VgIGRlY2lzaW9uIGdldHMgb3ZlcndyaXR0ZW5cbiAgICAvLyBhbmQgYEB3b3JrZmxvdy8qYCBpbXBvcnRzIGVuZCB1cCBleHRlcm5hbGl6ZWQgaW4gdGhlIGJ1bmRsZS5cbiAgICByZXNvbHZlSWQ6IHtcbiAgICAgIG9yZGVyOiAncHJlJyBhcyBjb25zdCxcbiAgICAgIGFzeW5jIGhhbmRsZXIoXG4gICAgICAgIHRoaXM6IHtcbiAgICAgICAgICByZXNvbHZlOiAoXG4gICAgICAgICAgICBzb3VyY2U6IHN0cmluZyxcbiAgICAgICAgICAgIGltcG9ydGVyOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICBvcHRpb25zOiB7IHNraXBTZWxmPzogYm9vbGVhbiB9XG4gICAgICAgICAgKSA9PiBQcm9taXNlPHsgaWQ6IHN0cmluZyB9IHwgbnVsbD47XG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZTogc3RyaW5nLFxuICAgICAgICBpbXBvcnRlcjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICBvcHRpb25zOiB7IHNraXBTZWxmPzogYm9vbGVhbiB9XG4gICAgICApIHtcbiAgICAgICAgaWYgKHNvdXJjZSA9PT0gV09SS0ZMT1dfV09STERfVEFSR0VUX01PRFVMRSkge1xuICAgICAgICAgIHJldHVybiB7IGlkOiB3b3JrZmxvd1RhcmdldFdvcmxkQWxpYXMsIGV4dGVybmFsOiBmYWxzZSB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaW1wb3J0ZXIpIHJldHVybiBudWxsO1xuICAgICAgICAvLyBNYXRjaCB3b3JrZmxvdyBwYWNrYWdlIHNwZWNpZmllcnMgT1IgZGlyZWN0IHBhdGhzIGludG9cbiAgICAgICAgLy8gcGFja2FnZXMvPG5hbWU+Ly4gQmFpbCBvdXQgZWFybHkgb24gbm9uLXdvcmtmbG93IGltcG9ydHNcbiAgICAgICAgLy8gc28gd2UgZG9uJ3QgaW50ZXJjZXB0IHRoZSByZXN0IG9mIHRoZSByZXNvbHV0aW9uIGNoYWluLlxuICAgICAgICBjb25zdCBwYWNrYWdlTmFtZSA9IGdldFdvcmtmbG93UGFja2FnZU5hbWUoc291cmNlKTtcbiAgICAgICAgY29uc3QgaXNXb3JrZmxvd1BrZyA9XG4gICAgICAgICAgcGFja2FnZU5hbWUgIT0gbnVsbCAmJlxuICAgICAgICAgIChXT1JLRkxPV19JTkxJTkVfUEFDS0FHRVMuaGFzKHBhY2thZ2VOYW1lKSB8fFxuICAgICAgICAgICAgcGFja2FnZU5hbWUgPT09IHRhcmdldFdvcmxkUGFja2FnZSk7XG4gICAgICAgIGlmICghaXNXb3JrZmxvd1BrZykgcmV0dXJuIG51bGw7XG4gICAgICAgIC8vIFJlc29sdmUgdmlhIG90aGVyIHJlc29sdmVycywgc2tpcHBpbmcgb3Vyc2VsdmVzIHNvIHdlXG4gICAgICAgIC8vIGdldCBhIHBhdGguIFdlIGRvbid0IGdhdGUgb24gYHJlc29sdmVkLmV4dGVybmFsYCBiZWNhdXNlXG4gICAgICAgIC8vIGBuaXRybzpleHRlcm5hbHNgIHNwcmVhZHMgb3VyIHJlc3VsdCBhbmQgb3ZlcnJpZGVzXG4gICAgICAgIC8vIGBleHRlcm5hbDogdHJ1ZWAgcmVnYXJkbGVzcyBvZiB3aGF0IHdlIHJldHVybiDigJQgd2Ugd2FudFxuICAgICAgICAvLyB0byB3aW4gdGhhdCByYWNlIGJ5IHJldHVybmluZyBmaXJzdCB1bmRlciBgb3JkZXI6ICdwcmUnYC5cbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBhd2FpdCB0aGlzLnJlc29sdmUoc291cmNlLCBpbXBvcnRlciwge1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgc2tpcFNlbGY6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXJlc29sdmVkKSByZXR1cm4gbnVsbDtcbiAgICAgICAgbGV0IHJlc29sdmVkSWQgPSByZXNvbHZlZC5pZDtcbiAgICAgICAgLy8gU3RyaXAgZmlsZTovLyBwcm90b2NvbCBpZiBwcmVzZW50IOKAlCBSb2xsdXAgbmVlZHMgYSBwbGFpblxuICAgICAgICAvLyBmaWxlc3lzdGVtIHBhdGggdG8gbG9hZCB0aGUgbW9kdWxlLiBgZmlsZVVSTFRvUGF0aGBcbiAgICAgICAgLy8gY29ycmVjdGx5IGhhbmRsZXMgV2luZG93cyBwYXRocyAoZS5nLiwgZmlsZTovLy9DOi8uLi5cbiAgICAgICAgLy8gLT4gQzpcXC4uLikgYW5kIHBlcmNlbnQtZGVjb2RpbmcuXG4gICAgICAgIGlmIChyZXNvbHZlZElkLnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xuICAgICAgICAgIHJlc29sdmVkSWQgPSBmaWxlVVJMVG9QYXRoKHJlc29sdmVkSWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGlkOiByZXNvbHZlZElkLCBleHRlcm5hbDogZmFsc2UgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUmVzb2x2ZXJSZXF1aXJlKG5pdHJvOiBOaXRybykge1xuICByZXR1cm4gY3JlYXRlUmVxdWlyZShqb2luKG5pdHJvLm9wdGlvbnMucm9vdERpciwgJ3BhY2thZ2UuanNvbicpKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVdvcmtmbG93VGFyZ2V0V29ybGRBbGlhcyhcbiAgbml0cm86IE5pdHJvLFxuICB0YXJnZXRXb3JsZDogc3RyaW5nXG4pOiBzdHJpbmcge1xuICB0cnkge1xuICAgIHJldHVybiBjcmVhdGVSZXNvbHZlclJlcXVpcmUobml0cm8pLnJlc29sdmUodGFyZ2V0V29ybGQpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdGFyZ2V0V29ybGQ7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnd29ya2Zsb3cvbml0cm8nLFxuICBhc3luYyBzZXR1cChuaXRybzogTml0cm8pIHtcbiAgICBjb25zdCBpc1ZlcmNlbERlcGxveSA9XG4gICAgICAhbml0cm8ub3B0aW9ucy5kZXYgJiYgbml0cm8ub3B0aW9ucy5wcmVzZXQgPT09ICd2ZXJjZWwnO1xuICAgIGNvbnN0IHdvcmtmbG93VGFyZ2V0V29ybGQgPSBlbnN1cmVXb3JrZmxvd1RhcmdldFdvcmxkRW52KCk7XG4gICAgY29uc3Qgbml0cm9CdWlsZERpciA9IGAke25pdHJvLm9wdGlvbnMuYnVpbGREaXIucmVwbGFjZSgvW1xcXFwvXSskLywgJycpfS9gO1xuXG4gICAgbml0cm8ub3B0aW9ucy5hbGlhc1tXT1JLRkxPV19XT1JMRF9UQVJHRVRfTU9EVUxFXSA9XG4gICAgICByZXNvbHZlV29ya2Zsb3dUYXJnZXRXb3JsZEFsaWFzKG5pdHJvLCB3b3JrZmxvd1RhcmdldFdvcmxkKTtcbiAgICBuaXRyby5vcHRpb25zLmFsaWFzWydwZy1uYXRpdmUnXSA/Pz0gV09SS0ZMT1dfT1BUSU9OQUxfUEdfTkFUSVZFX0FMSUFTO1xuXG4gICAgLy8gQWRkIHRyYW5zZm9ybSBwbHVnaW4gYXQgdGhlIEJFR0lOTklORyB0byBydW4gYmVmb3JlIG90aGVyIHRyYW5zZm9ybXNcbiAgICAvLyAoZXNwZWNpYWxseSBiZWZvcmUgY2xhc3MgcHJvcGVydHkgdHJhbnNmb3JtcyB0aGF0IHJlbmFtZSBjbGFzc2VzIGxpa2UgX0NsYXNzTmFtZSlcbiAgICBuaXRyby5ob29rcy5ob29rKCdyb2xsdXA6YmVmb3JlJywgKF9uaXRybzogTml0cm8sIGNvbmZpZzogUm9sbHVwQ29uZmlnKSA9PiB7XG4gICAgICAoY29uZmlnLnBsdWdpbnMgYXMgQXJyYXk8dW5rbm93bj4pLnVuc2hpZnQoXG4gICAgICAgIHdvcmtmbG93VHJhbnNmb3JtUGx1Z2luKHtcbiAgICAgICAgICAvLyBOaXRybyBidWlsZCBhcnRpZmFjdHMgaGF2ZSBhbHJlYWR5IGJlZW4gdHJhbnNmb3JtZWQuXG4gICAgICAgICAgLy8gUmUtcHJvY2Vzc2luZyB0aGVtIGNhbiBkdXBsaWNhdGUgY2xhc3MgcmVnaXN0cmF0aW9uLlxuICAgICAgICAgIGV4Y2x1ZGU6IFtuaXRyb0J1aWxkRGlyXSxcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIC8vIE5pdHJvIGJ1bmRsZXMgdW5kaWNpICh2aWEgdGhlIHdvcmxkIGFkYXB0ZXIpIGludG8gdGhlIEVTTSBzZXJ2ZXJcbiAgICAgIC8vIG91dHB1dC4gdW5kaWNpIGxvYWRzIG1vc3Qgbm9kZTogYnVpbHRpbnMgYXMgRVNNIGltcG9ydHMsIGJ1dCBwdWxscyBpblxuICAgICAgLy8gYG5vZGU6aHR0cDJgIGxhemlseSB2aWEgYSBiYXJlIGByZXF1aXJlKCdub2RlOmh0dHAyJylgIGluc2lkZSBhXG4gICAgICAvLyB0cnkvY2F0Y2gg4oCUIHdoaWNoIHRoZSBidW5kbGVyIGxlYXZlcyB1bi13aXJlZCwgc28gaW4gdGhlIEVTTSBidW5kbGUgdGhlXG4gICAgICAvLyByZXF1aXJlIHRocm93cyBhbmQgdW5kaWNpIHNpbGVudGx5IGZhbGxzIGJhY2sgdG8gYSBzdHViIHdob3NlXG4gICAgICAvLyBgaHR0cDIuY29ubmVjdGAgaXMgdW5kZWZpbmVkLiBUaGF0IGJyZWFrcyBhbnkgSFRUUC8yIHJlcXVlc3QgKHRoZVxuICAgICAgLy8gd29ya2Zsb3cgZmxvdy1yb3V0ZSBjYWxsYmFjayBmYWlscyB3aXRoIFwiZmV0Y2ggZmFpbGVkXCIsIHNvIHJ1bnMgbmV2ZXJcbiAgICAgIC8vIHN0YXJ0KS4gUHJlcGVuZCBhIHdvcmtpbmcgQ0pTIGByZXF1aXJlYCB0byB0aGUgc2VydmVyIGNodW5rcyBzbyB0aGVcbiAgICAgIC8vIHJlYWwgYG5vZGU6aHR0cDJgIHJlc29sdmVzLiBTa2lwcGVkIGluIGRldiAoVml0ZSBTU1IgcHJvdmlkZXMgcmVxdWlyZSkuXG4gICAgICBpZiAoIW5pdHJvLm9wdGlvbnMuZGV2KSB7XG4gICAgICAgIGFkZE5vZGVSZXF1aXJlQmFubmVyKGNvbmZpZyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBOT1RFOiBUZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3IgZGVidWcgdW5lbnYgbW9ja1xuICAgIGlmICghbml0cm8ub3B0aW9ucy53b3JrZmxvdz8uX3ZpdGUpIHtcbiAgICAgIG5pdHJvLm9wdGlvbnMuYWxpYXMuZGVidWcgPz89ICdkZWJ1Zyc7XG4gICAgfVxuXG4gICAgaWYgKG5pdHJvLm9wdGlvbnMuZGV2KSB7XG4gICAgICBjb25zdCB3b3JrZmxvd0J1aWxkR2xvYiA9IGAke2pvaW4obml0cm8ub3B0aW9ucy5idWlsZERpciwgJ3dvcmtmbG93Jyl9LyoqYDtcbiAgICAgIG5pdHJvLm9wdGlvbnMud2F0Y2hPcHRpb25zIHx8PSB7fTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nSWdub3JlZCA9IG5pdHJvLm9wdGlvbnMud2F0Y2hPcHRpb25zLmlnbm9yZWQ7XG4gICAgICBpZiAoIWV4aXN0aW5nSWdub3JlZCkge1xuICAgICAgICBuaXRyby5vcHRpb25zLndhdGNoT3B0aW9ucy5pZ25vcmVkID0gW3dvcmtmbG93QnVpbGRHbG9iXTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShleGlzdGluZ0lnbm9yZWQpKSB7XG4gICAgICAgIG5pdHJvLm9wdGlvbnMud2F0Y2hPcHRpb25zLmlnbm9yZWQgPSBbXG4gICAgICAgICAgLi4uZXhpc3RpbmdJZ25vcmVkLFxuICAgICAgICAgIHdvcmtmbG93QnVpbGRHbG9iLFxuICAgICAgICBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbml0cm8ub3B0aW9ucy53YXRjaE9wdGlvbnMuaWdub3JlZCA9IFtcbiAgICAgICAgICBleGlzdGluZ0lnbm9yZWQsXG4gICAgICAgICAgd29ya2Zsb3dCdWlsZEdsb2IsXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9yY2Ugd29ya2Zsb3cgU0RLIHBhY2thZ2VzIHRvIGJlIGJ1bmRsZWQgYnkgTml0cm8ncyBSb2xsdXAgcmF0aGVyIHRoYW5cbiAgICAvLyBleHRlcm5hbGl6ZWQuIFRoaXMgbGV0cyB0aGUgc3RhdGljIHdvcmxkLXRhcmdldCBhbGlhcyByZXNvbHZlIGluc2lkZSB0aGVcbiAgICAvLyBob3N0IHNlcnZlciBidW5kbGUgaW5zdGVhZCBvZiBmYWxsaW5nIHRocm91Z2ggdG8gdGhlIHVuYWxpYXNlZCBjb3JlIHN0dWIuXG4gICAgLy8gSXQgYWxzbyBlbnN1cmVzIHRoZSBTV0MgdHJhbnNmb3JtIHBsdWdpbiBwcm9jZXNzZXMgZmlsZXMgY29udGFpbmluZ1xuICAgIC8vIHdvcmtmbG93IHBhdHRlcm5zIChsaWtlIEB3b3JrZmxvdy9jb3JlL2Rpc3QvcnVudGltZS9ydW4uanMpIGFuZCBhZGRzIHRoZVxuICAgIC8vIGNsYXNzSWQgcmVnaXN0cmF0aW9uIElJRkVzIG5lZWRlZCBmb3Igc2VyaWFsaXphdGlvbi4gV2l0aG91dCB0aGlzLCBzZXJkZVxuICAgIC8vIGNsYXNzZXMgZnJvbSBucG0gcGFja2FnZXMgKGxpa2UgYFJ1bmApIHdvdWxkIGJlIGV4dGVybmFsaXplZCwgdGhlIFNXQ1xuICAgIC8vIHRyYW5zZm9ybSB3b3VsZCBuZXZlciBmaXJlIG9uIHRoZW0sIGFuZCBzZXJpYWxpemF0aW9uIHdvdWxkIGZhaWwgd2l0aFxuICAgIC8vIFwibXVzdCBoYXZlIGEgc3RhdGljIGNsYXNzSWQgcHJvcGVydHlcIi5cbiAgICAvL1xuICAgIC8vIFdlIHVzZSBhIFJvbGx1cCByZXNvbHZlSWQgaG9vayAoYWRkZWQgQkVGT1JFIHRoZSBleHRlcm5hbGl6YXRpb25cbiAgICAvLyBwbHVnaW4pIHRoYXQgaW50ZXJjZXB0cyB3b3JrZmxvdyBwYWNrYWdlIGltcG9ydHMgYW5kIG1hcmtzIHRoZW1cbiAgICAvLyBhcyBub24tZXh0ZXJuYWwuIFRoaXMgaXMgbW9yZSB0YXJnZXRlZCB0aGFuIGBub0V4dGVybmFscyA9IHRydWVgXG4gICAgLy8gd2hpY2ggd291bGQgYnVuZGxlIEFMTCBkZXBlbmRlbmNpZXMgYW5kIGNhdXNlIFREWiBlcnJvcnMgZnJvbVxuICAgIC8vIGNpcmN1bGFyIGltcG9ydHMgaW4gcGFja2FnZXMgbGlrZSB2dWUtYnVuZGxlLXJlbmRlcmVyL2gzLlxuICAgIG5pdHJvLmhvb2tzLmhvb2soJ3JvbGx1cDpiZWZvcmUnLCAoX25pdHJvOiBOaXRybywgY29uZmlnOiBSb2xsdXBDb25maWcpID0+IHtcbiAgICAgIChjb25maWcucGx1Z2lucyBhcyBBcnJheTx1bmtub3duPikudW5zaGlmdChcbiAgICAgICAgY3JlYXRlV29ya2Zsb3dGb3JjZUlubGluZVBsdWdpbihcbiAgICAgICAgICB3b3JrZmxvd1RhcmdldFdvcmxkLFxuICAgICAgICAgIG5pdHJvLm9wdGlvbnMuYWxpYXNbV09SS0ZMT1dfV09STERfVEFSR0VUX01PRFVMRV1cbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIEFkZCB0c0NvbmZpZyBwbHVnaW5cbiAgICBpZiAobml0cm8ub3B0aW9ucy53b3JrZmxvdz8udHlwZXNjcmlwdFBsdWdpbikge1xuICAgICAgbml0cm8ub3B0aW9ucy50eXBlc2NyaXB0LnRzQ29uZmlnIHx8PSB7fTtcbiAgICAgIG5pdHJvLm9wdGlvbnMudHlwZXNjcmlwdC50c0NvbmZpZy5jb21waWxlck9wdGlvbnMgfHw9IHt9O1xuICAgICAgbml0cm8ub3B0aW9ucy50eXBlc2NyaXB0LnRzQ29uZmlnLmNvbXBpbGVyT3B0aW9ucy5wbHVnaW5zIHx8PSBbXTtcbiAgICAgIG5pdHJvLm9wdGlvbnMudHlwZXNjcmlwdC50c0NvbmZpZy5jb21waWxlck9wdGlvbnMucGx1Z2lucy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ3dvcmtmbG93JyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIE5pdHJvIHYyIFZlcmNlbCBkZXBsb3k6IGtlZXAgdGhlIGxlZ2FjeSBCdWlsZCBPdXRwdXQgQVBJIHBhdGggdGhhdFxuICAgIC8vIGJ1aWxkcyB0aGUgd29ya2Zsb3cgZnVuY3Rpb25zIHN0YW5kYWxvbmUgYW5kIHN0aXRjaGVzIHRoZSByb3V0ZXMgaW50b1xuICAgIC8vIGAudmVyY2VsL291dHB1dC9jb25maWcuanNvbmAuIFRoaXMgcGF0aCBpcyBpbmRlcGVuZGVudCBvZiBuaXRybydzIG93blxuICAgIC8vIGJ1bmRsZSBhbmQgaXMgb25seSB1c2VkIGZvciBuaXRyb3BhY2sgdjIgKGUuZy4gTnV4dCA0IHN0aWxsIHVzZXMgaXQpLlxuICAgIGNvbnN0IHVzZUxlZ2FjeVZlcmNlbEJ1aWxkID0gaXNWZXJjZWxEZXBsb3kgJiYgaXNOaXRyb1YyKG5pdHJvKTtcblxuICAgIGlmICh1c2VMZWdhY3lWZXJjZWxCdWlsZCkge1xuICAgICAgbml0cm8uaG9va3MuaG9vaygnY29tcGlsZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IG5ldyBWZXJjZWxCdWlsZGVyKG5pdHJvKS5idWlsZCgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gTG9jYWwgZGV2L3Byb2QgYW5kIE5pdHJvIHYzIFZlcmNlbCBkZXBsb3kgc2hhcmUgdGhlIHNhbWUgcGF0aDpcbiAgICAvLyBidW5kbGUgdGhlIHdvcmtmbG93IHJvdXRlcyBpbnRvIG5pdHJvIGl0c2VsZiB2aWEgdmlydHVhbCBoYW5kbGVycy5cbiAgICAvLyBGb3IgVmVyY2VsIHYzIHdlIGFkZGl0aW9uYWxseSBjb25maWd1cmUgYGZ1bmN0aW9uUnVsZXNgIHNvIHRoZVxuICAgIC8vIHJvdXRlcyBnZXQgcXVldWUgdHJpZ2dlcnMgKyBleHRlbmRlZCBtYXhEdXJhdGlvbiB2aWEgdGhlIG5pdHJvXG4gICAgLy8gdmVyY2VsIHByZXNldC4gVGhpcyBsZXRzIHdvcmtmbG93IGhhbmRsZXJzIHVzZSBuaXRybyBmZWF0dXJlc1xuICAgIC8vIChzdG9yYWdlLCBkYXRhYmFzZSwgcnVudGltZSBjb25maWcsIHZpcnR1YWwgaW1wb3J0cywgZXRjLikuXG4gICAgaWYgKCF1c2VMZWdhY3lWZXJjZWxCdWlsZCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBMb2NhbEJ1aWxkZXIobml0cm8pO1xuICAgICAgbGV0IGlzSW5pdGlhbEJ1aWxkID0gdHJ1ZTtcblxuICAgICAgbml0cm8uaG9va3MuaG9vaygnYnVpbGQ6YmVmb3JlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgICAgLy8gRm9yIHByb2Q6IHdyaXRlIHRoZSBtYW5pZmVzdCBoYW5kbGVyIGZpbGUgd2l0aCBpbmxpbmVkIGNvbnRlbnRcbiAgICAgICAgLy8gbm93IHRoYXQgdGhlIGJ1aWxkZXIgaGFzIGdlbmVyYXRlZCB0aGUgbWFuaWZlc3QuIFJvbGx1cCB3aWxsXG4gICAgICAgIC8vIGJ1bmRsZSB0aGlzIGZpbGUgaW50byB0aGUgY29tcGlsZWQgb3V0cHV0LlxuICAgICAgICBpZiAoXG4gICAgICAgICAgIW5pdHJvLm9wdGlvbnMuZGV2ICYmXG4gICAgICAgICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfUFVCTElDX01BTklGRVNUID09PSAnMSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgd3JpdGVNYW5pZmVzdEhhbmRsZXIobml0cm8pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gQWxsb3dzIGZvciBITVIgLSBidXQgc2tpcCB0aGUgZmlyc3QgZGV2OnJlbG9hZCBzaW5jZSBidWlsZDpiZWZvcmUgYWxyZWFkeSByYW5cbiAgICAgIGlmIChuaXRyby5vcHRpb25zLmRldikge1xuICAgICAgICBuaXRyby5ob29rcy5ob29rKCdkZXY6cmVsb2FkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmIChpc0luaXRpYWxCdWlsZCkge1xuICAgICAgICAgICAgaXNJbml0aWFsQnVpbGQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gRHVyaW5nIGRldiwgZmlsZXMgbWF5IGJlIGFkZGVkL3JlbW92ZWQgd2hpbGUgdGhlIGJ1aWxkZXJcbiAgICAgICAgICAgIC8vIGlzIHJlYnVpbGRpbmcgKGUuZy4sIGR1cmluZyB0ZXN0IGNsZWFudXApLiBMb2cgdGhlIGVycm9yXG4gICAgICAgICAgICAvLyBidXQgZG9uJ3QgY3Jhc2gg4oCUIHRoZSBuZXh0IGZpbGUgY2hhbmdlIHdpbGwgdHJpZ2dlclxuICAgICAgICAgICAgLy8gYW5vdGhlciByZWJ1aWxkIHdpdGggdGhlIGNvcnJlY3QgZmlsZSBsaXN0LlxuICAgICAgICAgICAgY29uc29sZS53YXJuKCdXYXJuaW5nOiBXb3JrZmxvdyByZWJ1aWxkIGZhaWxlZDonLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5pdHJvLm9wdGlvbnMuZGV2KSB7XG4gICAgICAgIGFkZERhc2hib2FyZEhhbmRsZXIobml0cm8pO1xuICAgICAgfVxuXG4gICAgICBhZGRWaXJ0dWFsSGFuZGxlcihcbiAgICAgICAgbml0cm8sXG4gICAgICAgICcvLndlbGwta25vd24vd29ya2Zsb3cvdjEvd2ViaG9vay86dG9rZW4nLFxuICAgICAgICAnd29ya2Zsb3cvd2ViaG9vay5tanMnXG4gICAgICApO1xuXG4gICAgICAvLyBWMjogc2luZ2xlIGNvbWJpbmVkIGhhbmRsZXIgZm9yIGJvdGggd29ya2Zsb3cgYW5kIHN0ZXAgZXhlY3V0aW9uLlxuICAgICAgLy8gVGhlIHN0ZXAgcmVnaXN0cmF0aW9ucyBhcmUgaW1wb3J0ZWQgYXMgc2lkZSBlZmZlY3RzIGJ5IHRoZSBjb21iaW5lZFxuICAgICAgLy8gaGFuZGxlciDigJQgbm8gc2VwYXJhdGUgc3RlcCByb3V0ZSBuZWVkZWQuXG4gICAgICBhZGRWaXJ0dWFsSGFuZGxlcihcbiAgICAgICAgbml0cm8sXG4gICAgICAgICcvLndlbGwta25vd24vd29ya2Zsb3cvdjEvZmxvdycsXG4gICAgICAgICd3b3JrZmxvdy93b3JrZmxvd3MubWpzJ1xuICAgICAgKTtcblxuICAgICAgLy8gTml0cm8gdjMrIFZlcmNlbCBkZXBsb3k6IGNvbmZpZ3VyZSBmdW5jdGlvbiBydWxlcyBmb3IgdGhlIGNvbWJpbmVkXG4gICAgICAvLyBmbG93IGhhbmRsZXIgc28gaXQgZ2V0cyB0aGUgcXVldWUgdHJpZ2dlcnMgKyBtYXggZHVyYXRpb24gdGhhdCB0aGVcbiAgICAgIC8vIHdvcmtmbG93IHJ1bnRpbWUgbmVlZHMuIFdvcmtmbG93LXJlcXVpcmVkIGZpZWxkcyAoYG1heER1cmF0aW9uYCxcbiAgICAgIC8vIGBleHBlcmltZW50YWxUcmlnZ2Vyc2AsIGBydW50aW1lYCB3aGVuIHNldCkgdGFrZSBwcmVjZWRlbmNlIG92ZXJcbiAgICAgIC8vIHVzZXItcHJvdmlkZWQgdmFsdWVzIGZvciB0aGVzZSByb3V0ZXM7IHVucmVsYXRlZCBmaWVsZHMgdGhlIHVzZXJcbiAgICAgIC8vIHNldHMgKGUuZy4gYG1lbW9yeWApIHBhc3MgdGhyb3VnaCB1bnRvdWNoZWQuXG4gICAgICAvL1xuICAgICAgLy8gUGF0dGVybiBrZXlzIG11c3QgbWF0Y2ggdGhlIHJvdXRlIHBhdHRlcm5zIHRoZSBoYW5kbGVycyBhcmVcbiAgICAgIC8vIHJlZ2lzdGVyZWQgd2l0aCBzbyBuaXRybyByZXVzZXMgdGhlIHNhbWUgZnVuY3Rpb24gZGlyZWN0b3J5LlxuICAgICAgLy8gVXNpbmcgYSBgd2ViaG9vay8qKmAgY2F0Y2gtYWxsIGhlcmUgd291bGQgY3JlYXRlIGEgc2Vjb25kXG4gICAgICAvLyBgd2ViaG9vay9bLi4uXS5mdW5jYCBuZXh0IHRvIHRoZSBgd2ViaG9vay9bdG9rZW5dLmZ1bmNgIHRoYXRcbiAgICAgIC8vIGBhZGRWaXJ0dWFsSGFuZGxlcmAgcHJvZHVjZXMuXG4gICAgICBpZiAoaXNWZXJjZWxEZXBsb3kpIHtcbiAgICAgICAgbml0cm8ub3B0aW9ucy52ZXJjZWwgPz89IHt9O1xuICAgICAgICBuaXRyby5vcHRpb25zLnZlcmNlbC5mdW5jdGlvblJ1bGVzID8/PSB7fTtcblxuICAgICAgICBjb25zdCBydW50aW1lID0gbml0cm8ub3B0aW9ucy53b3JrZmxvdz8ucnVudGltZTtcbiAgICAgICAgY29uc3QgcnVsZXMgPSBuaXRyby5vcHRpb25zLnZlcmNlbC5mdW5jdGlvblJ1bGVzO1xuXG4gICAgICAgIGNvbnN0IGZsb3dQYXRoID0gJy8ud2VsbC1rbm93bi93b3JrZmxvdy92MS9mbG93JztcbiAgICAgICAgcnVsZXNbZmxvd1BhdGhdID0ge1xuICAgICAgICAgIC4uLnJ1bGVzW2Zsb3dQYXRoXSxcbiAgICAgICAgICAuLi4ocnVudGltZSAmJiB7IHJ1bnRpbWUgfSksXG4gICAgICAgICAgbWF4RHVyYXRpb246ICdtYXgnLFxuICAgICAgICAgIC8vIFYyIGNvbWJpbmVkOiBhIHNpbmdsZSB0cmlnZ2VyIGNvdmVycyBib3RoIGBfX3drZl93b3JrZmxvd18qYFxuICAgICAgICAgIC8vICh3b3JrZmxvdyBvcmNoZXN0cmF0aW9uKSBhbmQgYF9fd2tmX3N0ZXBfKmAgKHN0ZXAgZXhlY3V0aW9uKSxcbiAgICAgICAgICAvLyBzaW5jZSB0aGUgc2FtZSBoYW5kbGVyIGRpc3BhdGNoZXMgYm90aC5cbiAgICAgICAgICBleHBlcmltZW50YWxUcmlnZ2VyczogW1dPUktGTE9XX1FVRVVFX1RSSUdHRVJdLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChydW50aW1lKSB7XG4gICAgICAgICAgY29uc3Qgd2ViaG9va1BhdGggPSAnLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL3dlYmhvb2svOnRva2VuJztcbiAgICAgICAgICBydWxlc1t3ZWJob29rUGF0aF0gPSB7IC4uLnJ1bGVzW3dlYmhvb2tQYXRoXSwgcnVudGltZSB9O1xuXG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52LldPUktGTE9XX1BVQkxJQ19NQU5JRkVTVCA9PT0gJzEnKSB7XG4gICAgICAgICAgICBjb25zdCBtYW5pZmVzdFBhdGggPSAnLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL21hbmlmZXN0Lmpzb24nO1xuICAgICAgICAgICAgcnVsZXNbbWFuaWZlc3RQYXRoXSA9IHsgLi4ucnVsZXNbbWFuaWZlc3RQYXRoXSwgcnVudGltZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBFeHBvc2UgbWFuaWZlc3QgYXMgYSBwdWJsaWMgSFRUUCByb3V0ZSB3aGVuIFdPUktGTE9XX1BVQkxJQ19NQU5JRkVTVD0xXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuV09SS0ZMT1dfUFVCTElDX01BTklGRVNUID09PSAnMScpIHtcbiAgICAgICAgLy8gV3JpdGUgYSBwbGFjZWhvbGRlciBtYW5pZmVzdC1kYXRhLm1qcyBzbyByb2xsdXAgY2FuIHJlc29sdmUgdGhlXG4gICAgICAgIC8vIGltcG9ydC4gSXQgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSByZWFsIG1hbmlmZXN0IGluIGJ1aWxkOmJlZm9yZS5cbiAgICAgICAgLy8gV3JpdGUgYSBwbGFjZWhvbGRlciBoYW5kbGVyIGZpbGUgc28gcm9sbHVwIGNhbiByZXNvbHZlIHRoZSBwYXRoXG4gICAgICAgIC8vIGR1cmluZyBwcm9kIGNvbXBpbGF0aW9uLiBJdCB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggdGhlIHJlYWxcbiAgICAgICAgLy8gbWFuaWZlc3QgY29udGVudCBieSB3cml0ZU1hbmlmZXN0SGFuZGxlcigpIGluIGJ1aWxkOmJlZm9yZS5cbiAgICAgICAgaWYgKCFuaXRyby5vcHRpb25zLmRldikge1xuICAgICAgICAgIGNvbnN0IGRpciA9IGpvaW4obml0cm8ub3B0aW9ucy5idWlsZERpciwgJ3dvcmtmbG93Jyk7XG4gICAgICAgICAgbWtkaXJTeW5jKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgICAgY29uc3QgaGFuZGxlclBhdGggPSBqb2luKGRpciwgJ21hbmlmZXN0LWhhbmRsZXIubWpzJyk7XG4gICAgICAgICAgd3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgIGhhbmRsZXJQYXRoLFxuICAgICAgICAgICAgJ2V4cG9ydCBkZWZhdWx0IGFzeW5jICgpID0+IG5ldyBSZXNwb25zZShcIk1hbmlmZXN0IG5vdCBmb3VuZFwiLCB7IHN0YXR1czogNDA0IH0pO1xcbidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGFkZE1hbmlmZXN0SGFuZGxlcihuaXRybyk7XG4gICAgICB9XG4gICAgfVxuICB9LFxufSBzYXRpc2ZpZXMgTml0cm9Nb2R1bGU7XG5cbmNvbnN0IERBU0hCT0FSRF9WSVJUVUFMX0lEID0gJyN3b3JrZmxvdy9kYXNoYm9hcmQtaGFuZGxlcic7XG5cbmZ1bmN0aW9uIGFkZERhc2hib2FyZEhhbmRsZXIobml0cm86IE5pdHJvKSB7XG4gIGNvbnN0IHJvdXRlID0gJy9fd29ya2Zsb3cnO1xuICBuaXRyby5vcHRpb25zLmhhbmRsZXJzLnB1c2goeyByb3V0ZSwgaGFuZGxlcjogREFTSEJPQVJEX1ZJUlRVQUxfSUQgfSk7XG5cbiAgLy8gUmVzb2x2ZSBgQHdvcmtmbG93L3dlYi9zZXJ2ZXJgIHJlbGF0aXZlIHRvIHRoaXMgbW9kdWxlIHNvIGNvbnN1bWVycyBkb24ndFxuICAvLyBuZWVkIGEgZGlyZWN0IGRlcGVuZGVuY3kgb24gYEB3b3JrZmxvdy93ZWJgLiBUaGUgcGF0aCBpcyBpbmxpbmVkIGludG8gdGhlXG4gIC8vIHZpcnR1YWwgaGFuZGxlciBhcyBhIGZpbGU6Ly8gVVJMIHNvIE5vZGUgY2FuIGBpbXBvcnQoKWAgaXQgYXQgcnVudGltZVxuICAvLyByZWdhcmRsZXNzIG9mIHdoZXJlIHRoZSBnZW5lcmF0ZWQgTml0cm8gYnVuZGxlIGVuZHMgdXAuXG4gIGNvbnN0IHJlcXVpcmVfID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuICBsZXQgd2ViU2VydmVyVXJsOiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgd2ViU2VydmVyVXJsID0gcGF0aFRvRmlsZVVSTChyZXF1aXJlXy5yZXNvbHZlKCdAd29ya2Zsb3cvd2ViL3NlcnZlcicpKS5ocmVmO1xuICB9IGNhdGNoIHtcbiAgICB3ZWJTZXJ2ZXJVcmwgPSAnQHdvcmtmbG93L3dlYi9zZXJ2ZXInO1xuICB9XG5cbiAgY29uc3QgaGFuZGxlclNvdXJjZSA9IC8qIGpzICovIGBcbiAgICBjb25zdCBfX3dvcmtmbG93V2ViU2VydmVyVXJsID0gJHtKU09OLnN0cmluZ2lmeSh3ZWJTZXJ2ZXJVcmwpfTtcbiAgICBsZXQgc2VydmVyUHJvbWlzZSA9IG51bGw7XG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0RGFzaGJvYXJkVXJsKCkge1xuICAgICAgaWYgKCFzZXJ2ZXJQcm9taXNlKSB7XG4gICAgICAgIHNlcnZlclByb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgc3RhcnRTZXJ2ZXIgfSA9IGF3YWl0IGltcG9ydCgvKiBAdml0ZS1pZ25vcmUgKi8gLyogd2VicGFja0lnbm9yZTogdHJ1ZSAqLyBfX3dvcmtmbG93V2ViU2VydmVyVXJsKTtcbiAgICAgICAgICBjb25zdCBzZXJ2ZXIgPSBhd2FpdCBzdGFydFNlcnZlcigwKTtcbiAgICAgICAgICBjb25zdCBhZGRyZXNzID0gc2VydmVyLmFkZHJlc3MoKTtcbiAgICAgICAgICBjb25zdCBwb3J0ID0gdHlwZW9mIGFkZHJlc3MgPT09ICdvYmplY3QnICYmIGFkZHJlc3MgPyBhZGRyZXNzLnBvcnQgOiAzNDU2O1xuICAgICAgICAgIHJldHVybiAnaHR0cDovL2xvY2FsaG9zdDonICsgcG9ydDtcbiAgICAgICAgfSkoKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICBzZXJ2ZXJQcm9taXNlID0gbnVsbDtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2VydmVyUHJvbWlzZTtcbiAgICB9XG4gIGA7XG5cbiAgaWYgKCFuaXRyby5yb3V0aW5nKSB7XG4gICAgbml0cm8ub3B0aW9ucy52aXJ0dWFsW0RBU0hCT0FSRF9WSVJUVUFMX0lEXSA9IC8qIGpzICovIGBcbiAgICAgIGltcG9ydCB7IGZyb21XZWJIYW5kbGVyIH0gZnJvbSBcImgzXCI7XG4gICAgICAke2hhbmRsZXJTb3VyY2V9XG4gICAgICBleHBvcnQgZGVmYXVsdCBmcm9tV2ViSGFuZGxlcihhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdXJsID0gYXdhaXQgZ2V0RGFzaGJvYXJkVXJsKCk7XG4gICAgICAgICAgcmV0dXJuIFJlc3BvbnNlLnJlZGlyZWN0KHVybCwgMzAyKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgd29ya2Zsb3cgZGFzaGJvYXJkOicsIGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKCdGYWlsZWQgdG8gc3RhcnQgd29ya2Zsb3cgZGFzaGJvYXJkOiAnICsgZXJyb3IubWVzc2FnZSwgeyBzdGF0dXM6IDUwMCB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgYDtcbiAgfSBlbHNlIHtcbiAgICBuaXRyby5vcHRpb25zLnZpcnR1YWxbREFTSEJPQVJEX1ZJUlRVQUxfSURdID0gLyoganMgKi8gYFxuICAgICAgJHtoYW5kbGVyU291cmNlfVxuICAgICAgZXhwb3J0IGRlZmF1bHQgYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IGdldERhc2hib2FyZFVybCgpO1xuICAgICAgICAgIHJldHVybiBSZXNwb25zZS5yZWRpcmVjdCh1cmwsIDMwMik7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IHdvcmtmbG93IGRhc2hib2FyZDonLCBlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZSgnRmFpbGVkIHRvIHN0YXJ0IHdvcmtmbG93IGRhc2hib2FyZDogJyArIGVycm9yLm1lc3NhZ2UsIHsgc3RhdHVzOiA1MDAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgYDtcbiAgfVxufVxuXG50eXBlIFZpcnR1YWxIYW5kbGVyUGF0aCA9ICd3b3JrZmxvdy93ZWJob29rLm1qcycgfCAnd29ya2Zsb3cvd29ya2Zsb3dzLm1qcyc7XG5cbmZ1bmN0aW9uIGdldFN0YXRpY0ltcG9ydFNwZWNpZmllcihpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGlkLnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xuICAgIHJldHVybiBpZDtcbiAgfVxuICBpZiAoaWQuc3RhcnRzV2l0aCgnLycpIHx8IC9eW0EtWmEtel06W1xcXFwvXS8udGVzdChpZCkpIHtcbiAgICByZXR1cm4gcGF0aFRvRmlsZVVSTChpZCkuaHJlZjtcbiAgfVxuICByZXR1cm4gaWQ7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURldldvcmxkVGFyZ2V0U291cmNlKG5pdHJvOiBOaXRybyk6IHN0cmluZyB7XG4gIGNvbnN0IHdvcmtmbG93VGFyZ2V0V29ybGRBbGlhcyA9XG4gICAgbml0cm8ub3B0aW9ucy5hbGlhc1tXT1JLRkxPV19XT1JMRF9UQVJHRVRfTU9EVUxFXTtcbiAgaWYgKHR5cGVvZiB3b3JrZmxvd1RhcmdldFdvcmxkQWxpYXMgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYE1pc3NpbmcgJHtXT1JLRkxPV19XT1JMRF9UQVJHRVRfTU9EVUxFfSBhbGlhcyBmb3IgTml0cm8gZGV2IHdvcmtmbG93IGhhbmRsZXJgXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHdvcmtmbG93VGFyZ2V0V29ybGRJbXBvcnQgPSBKU09OLnN0cmluZ2lmeShcbiAgICBnZXRTdGF0aWNJbXBvcnRTcGVjaWZpZXIod29ya2Zsb3dUYXJnZXRXb3JsZEFsaWFzKVxuICApO1xuICBjb25zdCB3b3JrZmxvd0NvcmVSdW50aW1lSW1wb3J0ID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgZ2V0U3RhdGljSW1wb3J0U3BlY2lmaWVyKFxuICAgICAgcmVzb2x2ZVdvcmtmbG93Q29yZVJ1bnRpbWVBbGlhcyh7IHdvcmtpbmdEaXI6IG5pdHJvLm9wdGlvbnMucm9vdERpciB9KVxuICAgIClcbiAgKTtcblxuICByZXR1cm4gLyoganMgKi8gYFxuICAgICAgaW1wb3J0IHtcbiAgICAgICAgY3JlYXRlV29ybGRGcm9tTW9kdWxlIGFzIF9fd29ya2Zsb3dDcmVhdGVXb3JsZEZyb21Nb2R1bGUsXG4gICAgICAgIHNldFdvcmxkIGFzIF9fd29ya2Zsb3dTZXRXb3JsZCxcbiAgICAgIH0gZnJvbSAke3dvcmtmbG93Q29yZVJ1bnRpbWVJbXBvcnR9O1xuICAgICAgaW1wb3J0ICogYXMgX193b3JrZmxvd1RhcmdldFdvcmxkIGZyb20gJHt3b3JrZmxvd1RhcmdldFdvcmxkSW1wb3J0fTtcblxuICAgICAgbGV0IF9fd29ya2Zsb3dXb3JsZFByb21pc2UgPSBudWxsO1xuXG4gICAgICBhc3luYyBmdW5jdGlvbiBlbnN1cmVXb3JrZmxvd1dvcmxkKCkge1xuICAgICAgICBpZiAoIV9fd29ya2Zsb3dXb3JsZFByb21pc2UpIHtcbiAgICAgICAgICBfX3dvcmtmbG93V29ybGRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgICAgX193b3JrZmxvd0NyZWF0ZVdvcmxkRnJvbU1vZHVsZShfX3dvcmtmbG93VGFyZ2V0V29ybGQpXG4gICAgICAgICAgKS50aGVuKF9fd29ya2Zsb3dTZXRXb3JsZCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgX193b3JrZmxvd1dvcmxkUHJvbWlzZTtcbiAgICAgIH1cbiAgYDtcbn1cblxuZnVuY3Rpb24gYWRkVmlydHVhbEhhbmRsZXIoXG4gIG5pdHJvOiBOaXRybyxcbiAgcm91dGU6IHN0cmluZyxcbiAgYnVpbGRQYXRoOiBWaXJ0dWFsSGFuZGxlclBhdGhcbikge1xuICBuaXRyby5vcHRpb25zLmhhbmRsZXJzLnB1c2goe1xuICAgIHJvdXRlLFxuICAgIGhhbmRsZXI6IGAjJHtidWlsZFBhdGh9YCxcbiAgfSk7XG4gIGNvbnN0IGhhbmRsZXJJbXBvcnRQYXRoID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgam9pbihuaXRyby5vcHRpb25zLmJ1aWxkRGlyLCBidWlsZFBhdGgpXG4gICk7XG4gIGNvbnN0IHN0ZXBzSW1wb3J0UGF0aCA9IEpTT04uc3RyaW5naWZ5KFxuICAgIGpvaW4obml0cm8ub3B0aW9ucy5idWlsZERpciwgJ3dvcmtmbG93L3N0ZXBzLm1qcycpXG4gICk7XG4gIGNvbnN0IHByZWxvYWRTdGVwczogUmVjb3JkPFZpcnR1YWxIYW5kbGVyUGF0aCwgc3RyaW5nPiA9IHtcbiAgICAnd29ya2Zsb3cvd2ViaG9vay5tanMnOiAnJyxcbiAgICAnd29ya2Zsb3cvd29ya2Zsb3dzLm1qcyc6IGBhd2FpdCBpbXBvcnQoLyogQHZpdGUtaWdub3JlICovIHBhdGhUb0ZpbGVVUkwoJHtzdGVwc0ltcG9ydFBhdGh9KS5ocmVmICsgXCI/dD1cIiArIHZlcnNpb24pO2AsXG4gIH07XG5cbiAgaWYgKG5pdHJvLm9wdGlvbnMuZGV2KSB7XG4gICAgY29uc3QgZGV2V29ybGRUYXJnZXRTb3VyY2UgPSBjcmVhdGVEZXZXb3JsZFRhcmdldFNvdXJjZShuaXRybyk7XG4gICAgLy8gRGV2IG1vZGU6IGxvYWQgZ2VuZXJhdGVkIHdvcmtmbG93IGJ1bmRsZXMgZnJvbSBkaXNrIGF0IHJlcXVlc3QgdGltZS5cbiAgICAvLyBUaGlzIGtlZXBzIGAubml0cm8vd29ya2Zsb3cvKi5tanNgIG91dCBvZiBOaXRybydzIG93biBidW5kbGUgZ3JhcGgsXG4gICAgLy8gd2hpY2ggYXZvaWRzIHJlYnVpbGQgbG9vcHMgYW5kIHN0YWxlIGRlcGVuZGVuY3kgZ3JhcGhzIGR1cmluZyBITVIuXG4gICAgLy8gQ2FjaGUtYnVzdCBieSBmaWxlIG10aW1lIHNvIGVhY2ggc3VjY2Vzc2Z1bCByZWJ1aWxkIGxvYWRzIGZyZXNoIGNvZGUuXG4gICAgaWYgKCFuaXRyby5yb3V0aW5nKSB7XG4gICAgICBuaXRyby5vcHRpb25zLnZpcnR1YWxbYCMke2J1aWxkUGF0aH1gXSA9IC8qIGpzICovIGBcbiAgICAgIGltcG9ydCB7IGZyb21XZWJIYW5kbGVyIH0gZnJvbSBcImgzXCI7XG4gICAgICBpbXBvcnQgeyBzdGF0U3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG4gICAgICBpbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG4gICAgICAke2RldldvcmxkVGFyZ2V0U291cmNlfVxuXG4gICAgICBjb25zdCBoYW5kbGVyUGF0aCA9ICR7aGFuZGxlckltcG9ydFBhdGh9O1xuICAgICAgbGV0IGN1cnJlbnRWZXJzaW9uID0gXCJcIjtcbiAgICAgIGxldCBjdXJyZW50SW1wb3J0UGF0aCA9IFwiXCI7XG5cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIGxvYWRQT1NUKCkge1xuICAgICAgICBhd2FpdCBlbnN1cmVXb3JrZmxvd1dvcmxkKCk7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSBTdHJpbmcoc3RhdFN5bmMoaGFuZGxlclBhdGgpLm10aW1lTXMpO1xuICAgICAgICBpZiAodmVyc2lvbiAhPT0gY3VycmVudFZlcnNpb24pIHtcbiAgICAgICAgICBjdXJyZW50VmVyc2lvbiA9IHZlcnNpb247XG4gICAgICAgICAgY3VycmVudEltcG9ydFBhdGggPSBwYXRoVG9GaWxlVVJMKGhhbmRsZXJQYXRoKS5ocmVmICsgXCI/dD1cIiArIHZlcnNpb247XG4gICAgICAgICAgJHtwcmVsb2FkU3RlcHNbYnVpbGRQYXRoXX1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKGF3YWl0IGltcG9ydChjdXJyZW50SW1wb3J0UGF0aCkpLlBPU1Q7XG4gICAgICB9XG5cbiAgICAgIGV4cG9ydCBkZWZhdWx0IGZyb21XZWJIYW5kbGVyKGFzeW5jIChyZXF1ZXN0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IFBPU1QgPSBhd2FpdCBsb2FkUE9TVCgpO1xuICAgICAgICByZXR1cm4gUE9TVChyZXF1ZXN0LCBjb250ZXh0KTtcbiAgICAgIH0pO1xuICAgIGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5pdHJvLm9wdGlvbnMudmlydHVhbFtgIyR7YnVpbGRQYXRofWBdID0gLyoganMgKi8gYFxuICAgICAgaW1wb3J0IHsgc3RhdFN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuICAgICAgaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gXCJub2RlOnVybFwiO1xuICAgICAgJHtkZXZXb3JsZFRhcmdldFNvdXJjZX1cblxuICAgICAgY29uc3QgaGFuZGxlclBhdGggPSAke2hhbmRsZXJJbXBvcnRQYXRofTtcbiAgICAgIGxldCBjdXJyZW50VmVyc2lvbiA9IFwiXCI7XG4gICAgICBsZXQgY3VycmVudEltcG9ydFBhdGggPSBcIlwiO1xuXG4gICAgICBhc3luYyBmdW5jdGlvbiBsb2FkUE9TVCgpIHtcbiAgICAgICAgYXdhaXQgZW5zdXJlV29ya2Zsb3dXb3JsZCgpO1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gU3RyaW5nKHN0YXRTeW5jKGhhbmRsZXJQYXRoKS5tdGltZU1zKTtcbiAgICAgICAgaWYgKHZlcnNpb24gIT09IGN1cnJlbnRWZXJzaW9uKSB7XG4gICAgICAgICAgY3VycmVudFZlcnNpb24gPSB2ZXJzaW9uO1xuICAgICAgICAgIGN1cnJlbnRJbXBvcnRQYXRoID0gcGF0aFRvRmlsZVVSTChoYW5kbGVyUGF0aCkuaHJlZiArIFwiP3Q9XCIgKyB2ZXJzaW9uO1xuICAgICAgICAgICR7cHJlbG9hZFN0ZXBzW2J1aWxkUGF0aF19XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChhd2FpdCBpbXBvcnQoY3VycmVudEltcG9ydFBhdGgpKS5QT1NUO1xuICAgICAgfVxuXG4gICAgICBleHBvcnQgZGVmYXVsdCBhc3luYyAoeyByZXEgfSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IFBPU1QgPSBhd2FpdCBsb2FkUE9TVCgpO1xuICAgICAgICAgIHJldHVybiBhd2FpdCBQT1NUKHJlcSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignSGFuZGxlciBlcnJvcjonLCBlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZSgnSW50ZXJuYWwgU2VydmVyIEVycm9yJywgeyBzdGF0dXM6IDUwMCB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICBgO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBLZWVwIGEgYmFyZSBpbXBvcnQgYWxvbmdzaWRlIGBQT1NUYDogaW4gTnV4dCArIE5pdHJvIHByb2R1Y3Rpb24gYnVpbGRzXG4gIC8vIHVzaW5nIGBAd29ya2Zsb3cvbnV4dGAsIGltcG9ydGluZyBvbmx5IGBQT1NUYCBjb3VsZCBkcm9wIHRoZSBnZW5lcmF0ZWRcbiAgLy8gc3RlcCBidW5kbGUncyB0b3AtbGV2ZWwgcmVnaXN0cmF0aW9ucywgc28gdGhlIGhhbmRsZXIgbG9hZGVkIGJ1dCBzdGVwc1xuICAvLyB3ZXJlIG1pc3NpbmcgYXQgcnVudGltZS5cblxuICBpZiAoIW5pdHJvLnJvdXRpbmcpIHtcbiAgICAvLyBOaXRybyB2MiAobGVnYWN5KVxuICAgIG5pdHJvLm9wdGlvbnMudmlydHVhbFtgIyR7YnVpbGRQYXRofWBdID0gLyoganMgKi8gYFxuICAgIGltcG9ydCAke2hhbmRsZXJJbXBvcnRQYXRofTtcbiAgICBpbXBvcnQgeyBmcm9tV2ViSGFuZGxlciB9IGZyb20gXCJoM1wiO1xuICAgIGltcG9ydCB7IFBPU1QgfSBmcm9tICR7aGFuZGxlckltcG9ydFBhdGh9O1xuICAgIGV4cG9ydCBkZWZhdWx0IGZyb21XZWJIYW5kbGVyKFBPU1QpO1xuICBgO1xuICB9IGVsc2Uge1xuICAgIC8vIE5pdHJvIHYzKyAobmF0aXZlIHdlYiBoYW5kbGVycylcbiAgICBuaXRyby5vcHRpb25zLnZpcnR1YWxbYCMke2J1aWxkUGF0aH1gXSA9IC8qIGpzICovIGBcbiAgICBpbXBvcnQgJHtoYW5kbGVySW1wb3J0UGF0aH07XG4gICAgaW1wb3J0IHsgUE9TVCB9IGZyb20gJHtoYW5kbGVySW1wb3J0UGF0aH07XG4gICAgZXhwb3J0IGRlZmF1bHQgYXN5bmMgKHsgcmVxIH0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBQT1NUKHJlcSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdIYW5kbGVyIGVycm9yOicsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZSgnSW50ZXJuYWwgU2VydmVyIEVycm9yJywgeyBzdGF0dXM6IDUwMCB9KTtcbiAgICAgIH1cbiAgICB9O1xuICBgO1xuICB9XG59XG5cbmNvbnN0IE1BTklGRVNUX1ZJUlRVQUxfSUQgPSAnI3dvcmtmbG93L21hbmlmZXN0LWhhbmRsZXInO1xuXG5mdW5jdGlvbiBhZGRNYW5pZmVzdEhhbmRsZXIobml0cm86IE5pdHJvKSB7XG4gIGNvbnN0IHJvdXRlID0gJy8ud2VsbC1rbm93bi93b3JrZmxvdy92MS9tYW5pZmVzdC5qc29uJztcbiAgY29uc3QgbWFuaWZlc3RQYXRoID0gam9pbihuaXRyby5vcHRpb25zLmJ1aWxkRGlyLCAnd29ya2Zsb3cvbWFuaWZlc3QuanNvbicpO1xuICBjb25zdCBoYW5kbGVyUGF0aCA9IGpvaW4oXG4gICAgbml0cm8ub3B0aW9ucy5idWlsZERpcixcbiAgICAnd29ya2Zsb3cvbWFuaWZlc3QtaGFuZGxlci5tanMnXG4gICk7XG5cbiAgaWYgKG5pdHJvLm9wdGlvbnMuZGV2KSB7XG4gICAgLy8gRGV2IG1vZGU6IHVzZSBhIHZpcnR1YWwgaGFuZGxlciB0aGF0IHJlYWRzIHRoZSBtYW5pZmVzdCBmcm9tIGRpc2sgYXRcbiAgICAvLyByZXF1ZXN0IHRpbWUuIFRoZSBhYnNvbHV0ZSBwYXRoIGlzIHZhbGlkIGJlY2F1c2Ugd2UncmUgb24gdGhlIGJ1aWxkIG1hY2hpbmUuXG4gICAgbml0cm8ub3B0aW9ucy5oYW5kbGVycy5wdXNoKHsgcm91dGUsIGhhbmRsZXI6IE1BTklGRVNUX1ZJUlRVQUxfSUQgfSk7XG4gICAgbml0cm8ub3B0aW9ucy52aXJ0dWFsW01BTklGRVNUX1ZJUlRVQUxfSURdID0gIW5pdHJvLnJvdXRpbmdcbiAgICAgID8gLyoganMgKi8gYFxuICAgICAgaW1wb3J0IHsgZnJvbVdlYkhhbmRsZXIgfSBmcm9tIFwiaDNcIjtcbiAgICAgIGltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG4gICAgICBmdW5jdGlvbiBHRVQoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgbWFuaWZlc3QgPSByZWFkRmlsZVN5bmMoJHtKU09OLnN0cmluZ2lmeShtYW5pZmVzdFBhdGgpfSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG1hbmlmZXN0LCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXCJNYW5pZmVzdCBub3QgZm91bmRcIiwgeyBzdGF0dXM6IDQwNCB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZXhwb3J0IGRlZmF1bHQgZnJvbVdlYkhhbmRsZXIoR0VUKTtcbiAgICBgXG4gICAgICA6IC8qIGpzICovIGBcbiAgICAgIGltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG4gICAgICBleHBvcnQgZGVmYXVsdCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgbWFuaWZlc3QgPSByZWFkRmlsZVN5bmMoJHtKU09OLnN0cmluZ2lmeShtYW5pZmVzdFBhdGgpfSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG1hbmlmZXN0LCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXCJNYW5pZmVzdCBub3QgZm91bmRcIiwgeyBzdGF0dXM6IDQwNCB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICBgO1xuICB9IGVsc2Uge1xuICAgIC8vIFByb2QgbW9kZTogcmVnaXN0ZXIgYSBwaHlzaWNhbCBoYW5kbGVyIGZpbGUgdGhhdCB3aWxsIGJlIHdyaXR0ZW4gYnlcbiAgICAvLyB3cml0ZU1hbmlmZXN0SGFuZGxlcigpIGFmdGVyIHRoZSBidWlsZGVyIGdlbmVyYXRlcyB0aGUgbWFuaWZlc3QuXG4gICAgLy8gVGhpcyBmaWxlIGlzIGJ1bmRsZWQgYnkgcm9sbHVwIGludG8gdGhlIGNvbXBpbGVkIG91dHB1dC5cbiAgICBuaXRyby5vcHRpb25zLmhhbmRsZXJzLnB1c2goeyByb3V0ZSwgaGFuZGxlcjogaGFuZGxlclBhdGggfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBXcml0ZXMgYSBwaHlzaWNhbCBtYW5pZmVzdCBoYW5kbGVyIGZpbGUgd2l0aCB0aGUgbWFuaWZlc3QgY29udGVudCBpbmxpbmVkLlxuICogTXVzdCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGJ1aWxkZXIgZ2VuZXJhdGVzIHRoZSBtYW5pZmVzdCAoZHVyaW5nIGJ1aWxkOmJlZm9yZSlcbiAqIGFuZCBiZWZvcmUgTml0cm8gY29tcGlsZXMgdGhlIGJ1bmRsZSB3aXRoIHJvbGx1cC5cbiAqL1xuZnVuY3Rpb24gd3JpdGVNYW5pZmVzdEhhbmRsZXIobml0cm86IE5pdHJvKSB7XG4gIGNvbnN0IG1hbmlmZXN0UGF0aCA9IGpvaW4obml0cm8ub3B0aW9ucy5idWlsZERpciwgJ3dvcmtmbG93L21hbmlmZXN0Lmpzb24nKTtcbiAgY29uc3QgaGFuZGxlclBhdGggPSBqb2luKFxuICAgIG5pdHJvLm9wdGlvbnMuYnVpbGREaXIsXG4gICAgJ3dvcmtmbG93L21hbmlmZXN0LWhhbmRsZXIubWpzJ1xuICApO1xuICBjb25zdCBkaXIgPSBqb2luKG5pdHJvLm9wdGlvbnMuYnVpbGREaXIsICd3b3JrZmxvdycpO1xuICBta2RpclN5bmMoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICB0cnkge1xuICAgIGNvbnN0IG1hbmlmZXN0Q29udGVudCA9IHJlYWRGaWxlU3luYyhtYW5pZmVzdFBhdGgsICd1dGYtOCcpO1xuICAgIEpTT04ucGFyc2UobWFuaWZlc3RDb250ZW50KTsgLy8gdmFsaWRhdGVcblxuICAgIGNvbnN0IGhhbmRsZXJDb2RlID0gIW5pdHJvLnJvdXRpbmdcbiAgICAgID8gYGltcG9ydCB7IGZyb21XZWJIYW5kbGVyIH0gZnJvbSBcImgzXCI7XG5jb25zdCBtYW5pZmVzdCA9ICR7SlNPTi5zdHJpbmdpZnkobWFuaWZlc3RDb250ZW50KX07XG5leHBvcnQgZGVmYXVsdCBmcm9tV2ViSGFuZGxlcigoKSA9PiBuZXcgUmVzcG9uc2UobWFuaWZlc3QsIHtcbiAgaGVhZGVyczogeyBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxufSkpO1xuYFxuICAgICAgOiBgY29uc3QgbWFuaWZlc3QgPSAke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0Q29udGVudCl9O1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgKCkgPT4gbmV3IFJlc3BvbnNlKG1hbmlmZXN0LCB7XG4gIGhlYWRlcnM6IHsgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbn0pO1xuYDtcbiAgICB3cml0ZUZpbGVTeW5jKGhhbmRsZXJQYXRoLCBoYW5kbGVyQ29kZSk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIFdyaXRlIGEgNDA0IGZhbGxiYWNrIGhhbmRsZXJcbiAgICBjb25zdCBmYWxsYmFjayA9ICFuaXRyby5yb3V0aW5nXG4gICAgICA/IGBpbXBvcnQgeyBmcm9tV2ViSGFuZGxlciB9IGZyb20gXCJoM1wiO1xuZXhwb3J0IGRlZmF1bHQgZnJvbVdlYkhhbmRsZXIoKCkgPT4gbmV3IFJlc3BvbnNlKFwiTWFuaWZlc3Qgbm90IGZvdW5kXCIsIHsgc3RhdHVzOiA0MDQgfSkpO1xuYFxuICAgICAgOiBgZXhwb3J0IGRlZmF1bHQgYXN5bmMgKCkgPT4gbmV3IFJlc3BvbnNlKFwiTWFuaWZlc3Qgbm90IGZvdW5kXCIsIHsgc3RhdHVzOiA0MDQgfSk7XG5gO1xuICAgIHdyaXRlRmlsZVN5bmMoaGFuZGxlclBhdGgsIGZhbGxiYWNrKTtcbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,MAAM,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,EAAE,CAkH1D"}
1
+ {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,MAAM,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,EAAE,CAyH1D"}
package/dist/vite.js CHANGED
@@ -1,14 +1,14 @@
1
1
  import { createBuildQueue, ensureWorkflowTargetWorldEnv, resolveWorkflowTargetWorldAlias, WORKFLOW_OPTIONAL_PG_NATIVE_ALIAS, WORKFLOW_WORLD_TARGET_MODULE, } from '@workflow/builders';
2
2
  import { workflowTransformPlugin } from '@workflow/rollup';
3
3
  import { workflowHotUpdatePlugin } from '@workflow/vite';
4
- import { join } from 'pathe';
5
4
  import { LocalBuilder } from './builders.js';
6
5
  import nitroModule from './index.js';
7
6
  export function workflow(options) {
8
7
  let builder;
9
- let workflowBuildDir;
8
+ let devNitro;
9
+ let nitroBuildDir;
10
10
  const enqueue = createBuildQueue();
11
- // Create a lazy transform plugin that excludes the workflow build directory
11
+ // Create a lazy transform plugin that excludes Nitro build artifacts.
12
12
  // The exclusion path is set during nitro setup, so we need to defer plugin creation
13
13
  const lazyTransformPlugin = {
14
14
  name: 'workflow:transform',
@@ -43,9 +43,9 @@ export function workflow(options) {
43
43
  },
44
44
  transform(code, id, options) {
45
45
  // Delegate to the actual transform plugin with exclusion
46
- // workflowBuildDir is set during nitro setup before transforms run
46
+ // nitroBuildDir is set during nitro setup before transforms run
47
47
  const plugin = workflowTransformPlugin({
48
- exclude: workflowBuildDir ? [workflowBuildDir] : [],
48
+ exclude: nitroBuildDir ? [nitroBuildDir] : [],
49
49
  });
50
50
  const transform = plugin.transform;
51
51
  return transform?.call(this, code, id, options);
@@ -57,19 +57,25 @@ export function workflow(options) {
57
57
  name: 'workflow:nitro',
58
58
  nitro: {
59
59
  setup: (nitro) => {
60
- // Capture the workflow build directory for exclusion
61
- workflowBuildDir = join(nitro.options.buildDir, 'workflow');
60
+ // Capture the Nitro build directory for exclusion
61
+ nitroBuildDir = `${nitro.options.buildDir.replace(/[\\/]+$/, '')}/`;
62
62
  nitro.options.workflow = {
63
63
  ...nitro.options.workflow,
64
64
  ...options,
65
65
  _vite: true,
66
66
  };
67
67
  if (nitro.options.dev) {
68
+ devNitro = nitro;
68
69
  builder = new LocalBuilder(nitro);
69
70
  }
70
71
  return nitroModule.setup(nitro);
71
72
  },
72
73
  },
74
+ async buildEnd() {
75
+ const nitro = devNitro;
76
+ devNitro = undefined;
77
+ await nitro?.close();
78
+ },
73
79
  // NOTE: This is a workaround because Nitro passes the 404 requests to the dev server to handle.
74
80
  // For workflow routes, we override to send an empty body to prevent Hono/Vite's SPA fallback.
75
81
  configureServer(server) {
@@ -105,4 +111,4 @@ export function workflow(options) {
105
111
  }),
106
112
  ];
107
113
  }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsNEJBQTRCLEVBQzVCLCtCQUErQixFQUMvQixpQ0FBaUMsRUFDakMsNEJBQTRCLEdBQzdCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUU3QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdDLE9BQU8sV0FBVyxNQUFNLFlBQVksQ0FBQztBQUVyQyxNQUFNLFVBQVUsUUFBUSxDQUFDLE9BQXVCO0lBQzlDLElBQUksT0FBcUIsQ0FBQztJQUMxQixJQUFJLGdCQUF3QixDQUFDO0lBQzdCLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFFbkMsNEVBQTRFO0lBQzVFLG9GQUFvRjtJQUNwRixNQUFNLG1CQUFtQixHQUFXO1FBQ2xDLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsTUFBTTtZQUNKLE1BQU0sbUJBQW1CLEdBQUcsNEJBQTRCLEVBQUUsQ0FBQztZQUMzRCxNQUFNLHdCQUF3QixHQUFHLCtCQUErQixDQUFDO2dCQUMvRCxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtnQkFDekIsV0FBVyxFQUFFLG1CQUFtQjthQUNqQyxDQUFDLENBQUM7WUFDSCxPQUFPO2dCQUNMLE1BQU0sRUFBRTtvQkFDTixtQ0FBbUMsRUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDdEM7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLEtBQUssRUFBRTt3QkFDTCxDQUFDLDRCQUE0QixDQUFDLEVBQUUsd0JBQXdCO3dC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QztnQ0FDdkIsMERBQTBEO2dDQUMxRCxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDOzRCQUN2QyxDQUFDOzRCQUVELGdEQUFnRDs0QkFDaEQsT0FBTyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUM3QyxDQUFRLENBQUM7d0JBRVQsSUFBSSxFQUFFLENBQUM7b0JBQ1QsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDO1lBQ0osQ0FBQztTQUNGO1FBQ0QsdUJBQXVCLENBQUM7WUFDdEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU87WUFDdEIsT0FBTztTQUNSLENBQUM7S0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNyZWF0ZUJ1aWxkUXVldWUsXG4gIGVuc3VyZVdvcmtmbG93VGFyZ2V0V29ybGRFbnYsXG4gIHJlc29sdmVXb3JrZmxvd1RhcmdldFdvcmxkQWxpYXMsXG4gIFdPUktGTE9XX09QVElPTkFMX1BHX05BVElWRV9BTElBUyxcbiAgV09SS0ZMT1dfV09STERfVEFSR0VUX01PRFVMRSxcbn0gZnJvbSAnQHdvcmtmbG93L2J1aWxkZXJzJztcbmltcG9ydCB7IHdvcmtmbG93VHJhbnNmb3JtUGx1Z2luIH0gZnJvbSAnQHdvcmtmbG93L3JvbGx1cCc7XG5pbXBvcnQgeyB3b3JrZmxvd0hvdFVwZGF0ZVBsdWdpbiB9IGZyb20gJ0B3b3JrZmxvdy92aXRlJztcbmltcG9ydCB0eXBlIHsgTml0cm8gfSBmcm9tICduaXRyby90eXBlcyc7XG5pbXBvcnQgdHlwZSB7fSBmcm9tICduaXRyby92aXRlJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoZSc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbiwgVHJhbnNmb3JtUmVzdWx0IH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgeyBMb2NhbEJ1aWxkZXIgfSBmcm9tICcuL2J1aWxkZXJzLmpzJztcbmltcG9ydCB0eXBlIHsgTW9kdWxlT3B0aW9ucyB9IGZyb20gJy4vaW5kZXguanMnO1xuaW1wb3J0IG5pdHJvTW9kdWxlIGZyb20gJy4vaW5kZXguanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gd29ya2Zsb3cob3B0aW9ucz86IE1vZHVsZU9wdGlvbnMpOiBQbHVnaW5bXSB7XG4gIGxldCBidWlsZGVyOiBMb2NhbEJ1aWxkZXI7XG4gIGxldCB3b3JrZmxvd0J1aWxkRGlyOiBzdHJpbmc7XG4gIGNvbnN0IGVucXVldWUgPSBjcmVhdGVCdWlsZFF1ZXVlKCk7XG5cbiAgLy8gQ3JlYXRlIGEgbGF6eSB0cmFuc2Zvcm0gcGx1Z2luIHRoYXQgZXhjbHVkZXMgdGhlIHdvcmtmbG93IGJ1aWxkIGRpcmVjdG9yeVxuICAvLyBUaGUgZXhjbHVzaW9uIHBhdGggaXMgc2V0IGR1cmluZyBuaXRybyBzZXR1cCwgc28gd2UgbmVlZCB0byBkZWZlciBwbHVnaW4gY3JlYXRpb25cbiAgY29uc3QgbGF6eVRyYW5zZm9ybVBsdWdpbjogUGx1Z2luID0ge1xuICAgIG5hbWU6ICd3b3JrZmxvdzp0cmFuc2Zvcm0nLFxuICAgIGNvbmZpZygpIHtcbiAgICAgIGNvbnN0IHdvcmtmbG93VGFyZ2V0V29ybGQgPSBlbnN1cmVXb3JrZmxvd1RhcmdldFdvcmxkRW52KCk7XG4gICAgICBjb25zdCB3b3JrZmxvd1RhcmdldFdvcmxkQWxpYXMgPSByZXNvbHZlV29ya2Zsb3dUYXJnZXRXb3JsZEFsaWFzKHtcbiAgICAgICAgd29ya2luZ0RpcjogcHJvY2Vzcy5jd2QoKSxcbiAgICAgICAgdGFyZ2V0V29ybGQ6IHdvcmtmbG93VGFyZ2V0V29ybGQsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlZmluZToge1xuICAgICAgICAgICdwcm9jZXNzLmVudi5XT1JLRkxPV19UQVJHRVRfV09STEQnOlxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkod29ya2Zsb3dUYXJnZXRXb3JsZCksXG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmU6IHtcbiAgICAgICAgICBhbGlhczoge1xuICAgICAgICAgICAgW1dPUktGTE9XX1dPUkxEX1RBUkdFVF9NT0RVTEVdOiB3b3JrZmxvd1RhcmdldFdvcmxkQWxpYXMsXG4gICAgICAgICAgICAncGctbmF0aXZlJzogV09SS0ZMT1dfT1BUSU9OQUxfUEdfTkFUSVZFX0FMSUFTLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0sXG4gICAgYXN5bmMgcmVzb2x2ZUlkKHNvdXJjZSwgaW1wb3J0ZXIsIG9wdGlvbnMpIHtcbiAgICAgIGlmIChzb3VyY2UgIT09IFdPUktGTE9XX1dPUkxEX1RBUkdFVF9NT0RVTEUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCB3b3JrZmxvd1RhcmdldFdvcmxkID0gZW5zdXJlV29ya2Zsb3dUYXJnZXRXb3JsZEVudigpO1xuICAgICAgY29uc3QgcmVzb2x2ZWQgPSBhd2FpdCB0aGlzLnJlc29sdmUod29ya2Zsb3dUYXJnZXRXb3JsZCwgaW1wb3J0ZXIsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgc2tpcFNlbGY6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXNvbHZlZCA/PyB7IGlkOiB3b3JrZmxvd1RhcmdldFdvcmxkLCBleHRlcm5hbDogdHJ1ZSB9O1xuICAgIH0sXG4gICAgdHJhbnNmb3JtKGNvZGUsIGlkLCBvcHRpb25zKSB7XG4gICAgICAvLyBEZWxlZ2F0ZSB0byB0aGUgYWN0dWFsIHRyYW5zZm9ybSBwbHVnaW4gd2l0aCBleGNsdXNpb25cbiAgICAgIC8vIHdvcmtmbG93QnVpbGREaXIgaXMgc2V0IGR1cmluZyBuaXRybyBzZXR1cCBiZWZvcmUgdHJhbnNmb3JtcyBydW5cbiAgICAgIGNvbnN0IHBsdWdpbiA9IHdvcmtmbG93VHJhbnNmb3JtUGx1Z2luKHtcbiAgICAgICAgZXhjbHVkZTogd29ya2Zsb3dCdWlsZERpciA/IFt3b3JrZmxvd0J1aWxkRGlyXSA6IFtdLFxuICAgICAgfSk7XG4gICAgICBjb25zdCB0cmFuc2Zvcm0gPSBwbHVnaW4udHJhbnNmb3JtIGFzXG4gICAgICAgIHwgKChcbiAgICAgICAgICAgIHRoaXM6IHVua25vd24sXG4gICAgICAgICAgICBjb2RlOiBzdHJpbmcsXG4gICAgICAgICAgICBpZDogc3RyaW5nLFxuICAgICAgICAgICAgb3B0aW9ucz86IHsgc3NyPzogYm9vbGVhbiB9XG4gICAgICAgICAgKSA9PiBUcmFuc2Zvcm1SZXN1bHQgfCBQcm9taXNlPFRyYW5zZm9ybVJlc3VsdD4pXG4gICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHRyYW5zZm9ybT8uY2FsbCh0aGlzLCBjb2RlLCBpZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gW1xuICAgIGxhenlUcmFuc2Zvcm1QbHVnaW4sXG4gICAge1xuICAgICAgbmFtZTogJ3dvcmtmbG93Om5pdHJvJyxcbiAgICAgIG5pdHJvOiB7XG4gICAgICAgIHNldHVwOiAobml0cm86IE5pdHJvKSA9PiB7XG4gICAgICAgICAgLy8gQ2FwdHVyZSB0aGUgd29ya2Zsb3cgYnVpbGQgZGlyZWN0b3J5IGZvciBleGNsdXNpb25cbiAgICAgICAgICB3b3JrZmxvd0J1aWxkRGlyID0gam9pbihuaXRyby5vcHRpb25zLmJ1aWxkRGlyLCAnd29ya2Zsb3cnKTtcbiAgICAgICAgICBuaXRyby5vcHRpb25zLndvcmtmbG93ID0ge1xuICAgICAgICAgICAgLi4ubml0cm8ub3B0aW9ucy53b3JrZmxvdyxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBfdml0ZTogdHJ1ZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChuaXRyby5vcHRpb25zLmRldikge1xuICAgICAgICAgICAgYnVpbGRlciA9IG5ldyBMb2NhbEJ1aWxkZXIobml0cm8pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbml0cm9Nb2R1bGUuc2V0dXAobml0cm8pO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIC8vIE5PVEU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGJlY2F1c2UgTml0cm8gcGFzc2VzIHRoZSA0MDQgcmVxdWVzdHMgdG8gdGhlIGRldiBzZXJ2ZXIgdG8gaGFuZGxlLlxuICAgICAgLy8gRm9yIHdvcmtmbG93IHJvdXRlcywgd2Ugb3ZlcnJpZGUgdG8gc2VuZCBhbiBlbXB0eSBib2R5IHRvIHByZXZlbnQgSG9uby9WaXRlJ3MgU1BBIGZhbGxiYWNrLlxuICAgICAgY29uZmlndXJlU2VydmVyKHNlcnZlcikge1xuICAgICAgICAvLyBBZGQgbWlkZGxld2FyZSB0byBpbnRlcmNlcHQgNDA0cyBvbiB3b3JrZmxvdyByb3V0ZXMgYmVmb3JlIFZpdGUncyBTUEEgZmFsbGJhY2tcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICBzZXJ2ZXIubWlkZGxld2FyZXMudXNlKChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgICAgICAgICAgLy8gT25seSBoYW5kbGUgd29ya2Zsb3cgd2ViaG9vayByb3V0ZXNcbiAgICAgICAgICAgIGlmICghcmVxLnVybD8uc3RhcnRzV2l0aCgnLy53ZWxsLWtub3duL3dvcmtmbG93L3YxLycpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFdyYXAgd3JpdGVIZWFkIHRvIGVuc3VyZSB3ZSBzZW5kIGVtcHR5IGJvZHkgZm9yIDQwNHNcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsV3JpdGVIZWFkID0gcmVzLndyaXRlSGVhZDtcbiAgICAgICAgICAgIHJlcy53cml0ZUhlYWQgPSBmdW5jdGlvbiAodGhpczogdHlwZW9mIHJlcywgLi4uYXJnczogYW55W10pIHtcbiAgICAgICAgICAgICAgY29uc3Qgc3RhdHVzQ29kZSA9IHR5cGVvZiBhcmdzWzBdID09PSAnbnVtYmVyJyA/IGFyZ3NbMF0gOiAyMDA7XG5cbiAgICAgICAgICAgICAgLy8gTk9URTogV29ya2Fyb3VuZCBiZWNhdXNlIE5pdHJvIHBhc3NlcyA0MDQgcmVxdWVzdHMgdG8gdGhlIHZpdGUgdG8gaGFuZGxlLlxuICAgICAgICAgICAgICAvLyBDYXVzZXMgYHdlYmhvb2sgcm91dGUgd2l0aCBpbnZhbGlkIHRva2VuYCB0ZXN0IHRvIGZhaWwuXG4gICAgICAgICAgICAgIC8vIEZvciA0MDRzIG9uIHdvcmtmbG93IHJvdXRlcywgZW5zdXJlIHdlJ3JlIHNlbmRpbmcgdGhlIHJpZ2h0IGhlYWRlcnNcbiAgICAgICAgICAgICAgaWYgKHN0YXR1c0NvZGUgPT09IDQwNCkge1xuICAgICAgICAgICAgICAgIC8vIFNldCBjb250ZW50LWxlbmd0aCB0byAwIHRvIHByZXZlbnQgVml0ZSBmcm9tIG92ZXJyaWRpbmdcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LUxlbmd0aCcsICcwJyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gQ29tcGxleCBvdmVybG9hZCBzaWduYXR1cmVcbiAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsV3JpdGVIZWFkLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgfSBhcyBhbnk7XG5cbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB3b3JrZmxvd0hvdFVwZGF0ZVBsdWdpbih7XG4gICAgICBidWlsZGVyOiAoKSA9PiBidWlsZGVyLFxuICAgICAgZW5xdWV1ZSxcbiAgICB9KSxcbiAgXTtcbn1cbiJdfQ==
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsNEJBQTRCLEVBQzVCLCtCQUErQixFQUMvQixpQ0FBaUMsRUFDakMsNEJBQTRCLEdBQzdCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3QyxPQUFPLFdBQVcsTUFBTSxZQUFZLENBQUM7QUFFckMsTUFBTSxVQUFVLFFBQVEsQ0FBQyxPQUF1QjtJQUM5QyxJQUFJLE9BQXFCLENBQUM7SUFDMUIsSUFBSSxRQUEyQixDQUFDO0lBQ2hDLElBQUksYUFBcUIsQ0FBQztJQUMxQixNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBRW5DLHNFQUFzRTtJQUN0RSxvRkFBb0Y7SUFDcEYsTUFBTSxtQkFBbUIsR0FBVztRQUNsQyxJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLE1BQU07WUFDSixNQUFNLG1CQUFtQixHQUFHLDRCQUE0QixFQUFFLENBQUM7WUFDM0QsTUFBTSx3QkFBd0IsR0FBRywrQkFBK0IsQ0FBQztnQkFDL0QsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7Z0JBQ3pCLFdBQVcsRUFBRSxtQkFBbUI7YUFDakMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztnQkFDTCxNQUFNLEVBQUU7b0JBQ04sbUNBQW1DLEVBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUM7aUJBQ3RDO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxLQUFLLEVBQUU7d0JBQ0wsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLHdCQUF3Qjt3QkFDeEQsV0FBVyxFQUFFLGlDQUFp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S0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDOzRCQUUvRCw0RUFBNEU7NEJBQzVFLDBEQUEwRDs0QkFDMUQsc0VBQXNFOzRCQUN0RSxJQUFJLFVBQVUsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQ0FDdkIsMERBQTBEO2dDQUMxRCxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDOzRCQUN2QyxDQUFDOzRCQUVELGdEQUFnRDs0QkFDaEQsT0FBTyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUM3QyxDQUFRLENBQUM7d0JBRVQsSUFBSSxFQUFFLENBQUM7b0JBQ1QsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDO1lBQ0osQ0FBQztTQUNGO1FBQ0QsdUJBQXVCLENBQUM7WUFDdEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU87WUFDdEIsT0FBTztTQUNSLENBQUM7S0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNyZWF0ZUJ1aWxkUXVldWUsXG4gIGVuc3VyZVdvcmtmbG93VGFyZ2V0V29ybGRFbnYsXG4gIHJlc29sdmVXb3JrZmxvd1RhcmdldFdvcmxkQWxpYXMsXG4gIFdPUktGTE9XX09QVElPTkFMX1BHX05BVElWRV9BTElBUyxcbiAgV09SS0ZMT1dfV09STERfVEFSR0VUX01PRFVMRSxcbn0gZnJvbSAnQHdvcmtmbG93L2J1aWxkZXJzJztcbmltcG9ydCB7IHdvcmtmbG93VHJhbnNmb3JtUGx1Z2luIH0gZnJvbSAnQHdvcmtmbG93L3JvbGx1cCc7XG5pbXBvcnQgeyB3b3JrZmxvd0hvdFVwZGF0ZVBsdWdpbiB9IGZyb20gJ0B3b3JrZmxvdy92aXRlJztcbmltcG9ydCB0eXBlIHsgTml0cm8gfSBmcm9tICduaXRyby90eXBlcyc7XG5pbXBvcnQgdHlwZSB7fSBmcm9tICduaXRyby92aXRlJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luLCBUcmFuc2Zvcm1SZXN1bHQgfSBmcm9tICd2aXRlJztcbmltcG9ydCB7IExvY2FsQnVpbGRlciB9IGZyb20gJy4vYnVpbGRlcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVPcHRpb25zIH0gZnJvbSAnLi9pbmRleC5qcyc7XG5pbXBvcnQgbml0cm9Nb2R1bGUgZnJvbSAnLi9pbmRleC5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB3b3JrZmxvdyhvcHRpb25zPzogTW9kdWxlT3B0aW9ucyk6IFBsdWdpbltdIHtcbiAgbGV0IGJ1aWxkZXI6IExvY2FsQnVpbGRlcjtcbiAgbGV0IGRldk5pdHJvOiBOaXRybyB8IHVuZGVmaW5lZDtcbiAgbGV0IG5pdHJvQnVpbGREaXI6IHN0cmluZztcbiAgY29uc3QgZW5xdWV1ZSA9IGNyZWF0ZUJ1aWxkUXVldWUoKTtcblxuICAvLyBDcmVhdGUgYSBsYXp5IHRyYW5zZm9ybSBwbHVnaW4gdGhhdCBleGNsdWRlcyBOaXRybyBidWlsZCBhcnRpZmFjdHMuXG4gIC8vIFRoZSBleGNsdXNpb24gcGF0aCBpcyBzZXQgZHVyaW5nIG5pdHJvIHNldHVwLCBzbyB3ZSBuZWVkIHRvIGRlZmVyIHBsdWdpbiBjcmVhdGlvblxuICBjb25zdCBsYXp5VHJhbnNmb3JtUGx1Z2luOiBQbHVnaW4gPSB7XG4gICAgbmFtZTogJ3dvcmtmbG93OnRyYW5zZm9ybScsXG4gICAgY29uZmlnKCkge1xuICAgICAgY29uc3Qgd29ya2Zsb3dUYXJnZXRXb3JsZCA9IGVuc3VyZVdvcmtmbG93VGFyZ2V0V29ybGRFbnYoKTtcbiAgICAgIGNvbnN0IHdvcmtmbG93VGFyZ2V0V29ybGRBbGlhcyA9IHJlc29sdmVXb3JrZmxvd1RhcmdldFdvcmxkQWxpYXMoe1xuICAgICAgICB3b3JraW5nRGlyOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICB0YXJnZXRXb3JsZDogd29ya2Zsb3dUYXJnZXRXb3JsZCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVmaW5lOiB7XG4gICAgICAgICAgJ3Byb2Nlc3MuZW52LldPUktGTE9XX1RBUkdFVF9XT1JMRCc6XG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh3b3JrZmxvd1RhcmdldFdvcmxkKSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb2x2ZToge1xuICAgICAgICAgIGFsaWFzOiB7XG4gICAgICAgICAgICBbV09SS0ZMT1dfV09STERfVEFSR0VUX01PRFVMRV06IHdvcmtmbG93VGFyZ2V0V29ybGRBbGlhcyxcbiAgICAgICAgICAgICdwZy1uYXRpdmUnOiBXT1JLRkxPV19PUFRJT05BTF9QR19OQVRJVkVfQUxJQVMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBhc3luYyByZXNvbHZlSWQoc291cmNlLCBpbXBvcnRlciwgb3B0aW9ucykge1xuICAgICAgaWYgKHNvdXJjZSAhPT0gV09SS0ZMT1dfV09STERfVEFSR0VUX01PRFVMRSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHdvcmtmbG93VGFyZ2V0V29ybGQgPSBlbnN1cmVXb3JrZmxvd1RhcmdldFdvcmxkRW52KCk7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IHRoaXMucmVzb2x2ZSh3b3JrZmxvd1RhcmdldFdvcmxkLCBpbXBvcnRlciwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBza2lwU2VsZjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc29sdmVkID8/IHsgaWQ6IHdvcmtmbG93VGFyZ2V0V29ybGQsIGV4dGVybmFsOiB0cnVlIH07XG4gICAgfSxcbiAgICB0cmFuc2Zvcm0oY29kZSwgaWQsIG9wdGlvbnMpIHtcbiAgICAgIC8vIERlbGVnYXRlIHRvIHRoZSBhY3R1YWwgdHJhbnNmb3JtIHBsdWdpbiB3aXRoIGV4Y2x1c2lvblxuICAgICAgLy8gbml0cm9CdWlsZERpciBpcyBzZXQgZHVyaW5nIG5pdHJvIHNldHVwIGJlZm9yZSB0cmFuc2Zvcm1zIHJ1blxuICAgICAgY29uc3QgcGx1Z2luID0gd29ya2Zsb3dUcmFuc2Zvcm1QbHVnaW4oe1xuICAgICAgICBleGNsdWRlOiBuaXRyb0J1aWxkRGlyID8gW25pdHJvQnVpbGREaXJdIDogW10sXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IHBsdWdpbi50cmFuc2Zvcm0gYXNcbiAgICAgICAgfCAoKFxuICAgICAgICAgICAgdGhpczogdW5rbm93bixcbiAgICAgICAgICAgIGNvZGU6IHN0cmluZyxcbiAgICAgICAgICAgIGlkOiBzdHJpbmcsXG4gICAgICAgICAgICBvcHRpb25zPzogeyBzc3I/OiBib29sZWFuIH1cbiAgICAgICAgICApID0+IFRyYW5zZm9ybVJlc3VsdCB8IFByb21pc2U8VHJhbnNmb3JtUmVzdWx0PilcbiAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gdHJhbnNmb3JtPy5jYWxsKHRoaXMsIGNvZGUsIGlkLCBvcHRpb25zKTtcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBbXG4gICAgbGF6eVRyYW5zZm9ybVBsdWdpbixcbiAgICB7XG4gICAgICBuYW1lOiAnd29ya2Zsb3c6bml0cm8nLFxuICAgICAgbml0cm86IHtcbiAgICAgICAgc2V0dXA6IChuaXRybzogTml0cm8pID0+IHtcbiAgICAgICAgICAvLyBDYXB0dXJlIHRoZSBOaXRybyBidWlsZCBkaXJlY3RvcnkgZm9yIGV4Y2x1c2lvblxuICAgICAgICAgIG5pdHJvQnVpbGREaXIgPSBgJHtuaXRyby5vcHRpb25zLmJ1aWxkRGlyLnJlcGxhY2UoL1tcXFxcL10rJC8sICcnKX0vYDtcbiAgICAgICAgICBuaXRyby5vcHRpb25zLndvcmtmbG93ID0ge1xuICAgICAgICAgICAgLi4ubml0cm8ub3B0aW9ucy53b3JrZmxvdyxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBfdml0ZTogdHJ1ZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChuaXRyby5vcHRpb25zLmRldikge1xuICAgICAgICAgICAgZGV2Tml0cm8gPSBuaXRybztcbiAgICAgICAgICAgIGJ1aWxkZXIgPSBuZXcgTG9jYWxCdWlsZGVyKG5pdHJvKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5pdHJvTW9kdWxlLnNldHVwKG5pdHJvKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBhc3luYyBidWlsZEVuZCgpIHtcbiAgICAgICAgY29uc3Qgbml0cm8gPSBkZXZOaXRybztcbiAgICAgICAgZGV2Tml0cm8gPSB1bmRlZmluZWQ7XG4gICAgICAgIGF3YWl0IG5pdHJvPy5jbG9zZSgpO1xuICAgICAgfSxcbiAgICAgIC8vIE5PVEU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGJlY2F1c2UgTml0cm8gcGFzc2VzIHRoZSA0MDQgcmVxdWVzdHMgdG8gdGhlIGRldiBzZXJ2ZXIgdG8gaGFuZGxlLlxuICAgICAgLy8gRm9yIHdvcmtmbG93IHJvdXRlcywgd2Ugb3ZlcnJpZGUgdG8gc2VuZCBhbiBlbXB0eSBib2R5IHRvIHByZXZlbnQgSG9uby9WaXRlJ3MgU1BBIGZhbGxiYWNrLlxuICAgICAgY29uZmlndXJlU2VydmVyKHNlcnZlcikge1xuICAgICAgICAvLyBBZGQgbWlkZGxld2FyZSB0byBpbnRlcmNlcHQgNDA0cyBvbiB3b3JrZmxvdyByb3V0ZXMgYmVmb3JlIFZpdGUncyBTUEEgZmFsbGJhY2tcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICBzZXJ2ZXIubWlkZGxld2FyZXMudXNlKChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgICAgICAgICAgLy8gT25seSBoYW5kbGUgd29ya2Zsb3cgd2ViaG9vayByb3V0ZXNcbiAgICAgICAgICAgIGlmICghcmVxLnVybD8uc3RhcnRzV2l0aCgnLy53ZWxsLWtub3duL3dvcmtmbG93L3YxLycpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFdyYXAgd3JpdGVIZWFkIHRvIGVuc3VyZSB3ZSBzZW5kIGVtcHR5IGJvZHkgZm9yIDQwNHNcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsV3JpdGVIZWFkID0gcmVzLndyaXRlSGVhZDtcbiAgICAgICAgICAgIHJlcy53cml0ZUhlYWQgPSBmdW5jdGlvbiAodGhpczogdHlwZW9mIHJlcywgLi4uYXJnczogYW55W10pIHtcbiAgICAgICAgICAgICAgY29uc3Qgc3RhdHVzQ29kZSA9IHR5cGVvZiBhcmdzWzBdID09PSAnbnVtYmVyJyA/IGFyZ3NbMF0gOiAyMDA7XG5cbiAgICAgICAgICAgICAgLy8gTk9URTogV29ya2Fyb3VuZCBiZWNhdXNlIE5pdHJvIHBhc3NlcyA0MDQgcmVxdWVzdHMgdG8gdGhlIHZpdGUgdG8gaGFuZGxlLlxuICAgICAgICAgICAgICAvLyBDYXVzZXMgYHdlYmhvb2sgcm91dGUgd2l0aCBpbnZhbGlkIHRva2VuYCB0ZXN0IHRvIGZhaWwuXG4gICAgICAgICAgICAgIC8vIEZvciA0MDRzIG9uIHdvcmtmbG93IHJvdXRlcywgZW5zdXJlIHdlJ3JlIHNlbmRpbmcgdGhlIHJpZ2h0IGhlYWRlcnNcbiAgICAgICAgICAgICAgaWYgKHN0YXR1c0NvZGUgPT09IDQwNCkge1xuICAgICAgICAgICAgICAgIC8vIFNldCBjb250ZW50LWxlbmd0aCB0byAwIHRvIHByZXZlbnQgVml0ZSBmcm9tIG92ZXJyaWRpbmdcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LUxlbmd0aCcsICcwJyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gQ29tcGxleCBvdmVybG9hZCBzaWduYXR1cmVcbiAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsV3JpdGVIZWFkLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgfSBhcyBhbnk7XG5cbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB3b3JrZmxvd0hvdFVwZGF0ZVBsdWdpbih7XG4gICAgICBidWlsZGVyOiAoKSA9PiBidWlsZGVyLFxuICAgICAgZW5xdWV1ZSxcbiAgICB9KSxcbiAgXTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow/nitro",
3
- "version": "5.0.0-beta.34",
3
+ "version": "5.0.0-beta.35",
4
4
  "description": "Nitro integration for Workflow SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -24,12 +24,12 @@
24
24
  "@swc/core": "1.15.3",
25
25
  "exsolve": "1.0.8",
26
26
  "pathe": "2.0.3",
27
- "@workflow/builders": "5.0.0-beta.34",
28
- "@workflow/core": "5.0.0-beta.34",
29
- "@workflow/rollup": "5.0.0-beta.34",
27
+ "@workflow/builders": "5.0.0-beta.35",
28
+ "@workflow/core": "5.0.0-beta.35",
29
+ "@workflow/rollup": "5.0.0-beta.35",
30
30
  "@workflow/swc-plugin": "5.0.0-beta.5",
31
- "@workflow/vite": "5.0.0-beta.34",
32
- "@workflow/web": "5.0.0-beta.34"
31
+ "@workflow/vite": "5.0.0-beta.35",
32
+ "@workflow/web": "5.0.0-beta.35"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/node": "22.19.0",