aws-cdk 2.1132.0 → 2.1132.1

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,8 +1,44 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.TelemetrySession = void 0;
4
37
  exports.isValidWrapperUserAgent = isValidWrapperUserAgent;
5
38
  const node_crypto_1 = require("node:crypto");
39
+ const fs = __importStar(require("node:fs/promises"));
40
+ const os = __importStar(require("os"));
41
+ const pathlib = __importStar(require("path"));
6
42
  const toolkit_lib_1 = require("@aws-cdk/toolkit-lib");
7
43
  const installation_id_1 = require("./installation-id");
8
44
  const library_version_1 = require("./library-version");
@@ -54,6 +90,7 @@ class TelemetrySession {
54
90
  telemetryVersion: '2.0',
55
91
  cdkCliVersion: (0, version_1.versionNumber)(),
56
92
  cdkLibraryVersion: await (0, library_version_1.getLibraryVersion)(this.ioHost.asIoHelper()),
93
+ amznPackage: await tryDetectAmznPackage(),
57
94
  },
58
95
  event: {
59
96
  command: {
@@ -266,4 +303,50 @@ function isValidWrapperUserAgent(value) {
266
303
  return false;
267
304
  return mode === 'sandbox' || mode === 'production';
268
305
  }
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMFRBLDBEQU9DO0FBalVELDZDQUF5QztBQUN6QyxzREFBb0Q7QUFDcEQsdURBQThEO0FBQzlELHVEQUFzRDtBQUN0RCw2Q0FBNkU7QUFLN0UsOENBQStDO0FBRy9DLG9EQUF5RDtBQUN6RCxtQ0FBa0M7QUFDbEMsd0NBQTJDO0FBQzNDLG1DQUFnRDtBQUNoRCx1REFBdUQ7QUFFdkQsTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsQ0FBQztBQUV2RDs7O0dBR0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7QUErQnpDLE1BQWEsZ0JBQWdCO0lBU0U7SUFSckIsTUFBTSxDQUFZO0lBQ2xCLE1BQU0sQ0FBaUI7SUFDdkIsWUFBWSxDQUFpQjtJQUM3QixZQUFZLENBQTZCO0lBQ3pDLGtCQUFrQixDQUEwQjtJQUM1QyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsUUFBUSxDQUFVO0lBRTFCLFlBQTZCLEtBQTRCO1FBQTVCLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNoQiw2QkFBNkI7UUFDN0IsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFBLHlDQUE0QixFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNsQixXQUFXLEVBQUU7Z0JBQ1gsY0FBYyxFQUFF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QUMsQ0FBQyxRQUFRLENBQUM7SUFDdEQsQ0FBQztJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxLQUFvQjtJQUMxQyxJQUFJLEtBQUssRUFBRSxJQUFJLEtBQUssY0FBYyxJQUFJLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQztRQUN0RixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBbUIsQ0FBSTtJQUNyQyxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsS0FBeUI7SUFDL0QsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN6QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDckMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDcEQsT0FBTyxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxZQUFZLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tICdub2RlOmNyeXB0byc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICdAYXdzLWNkay90b29sa2l0LWxpYic7XG5pbXBvcnQgeyBnZXRPckNyZWF0ZUluc3RhbGxhdGlvbklkIH0gZnJvbSAnLi9pbnN0YWxsYXRpb24taWQnO1xuaW1wb3J0IHsgZ2V0TGlicmFyeVZlcnNpb24gfSBmcm9tICcuL2xpYnJhcnktdmVyc2lvbic7XG5pbXBvcnQgeyBzYW5pdGl6ZUNvbW1hbmRMaW5lQXJndW1lbnRzLCBzYW5pdGl6ZUNvbnRleHQgfSBmcm9tICcuL3Nhbml0YXRpb24nO1xuaW1wb3J0IHsgdHlwZSBFdmVudFR5cGUsIHR5cGUgU2Vzc2lvblNjaGVtYSwgdHlwZSBTdGF0ZSwgdHlwZSBFcnJvckRldGFpbHMgfSBmcm9tICcuL3NjaGVtYSc7XG5pbXBvcnQgdHlwZSB7IElUZWxlbWV0cnlTaW5rIH0gZnJvbSAnLi9zaW5rL3NpbmstaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgQ29udGV4dCB9IGZyb20gJy4uLy4uL2FwaS9jb250ZXh0JztcbmltcG9ydCB0eXBlIHsgSU1lc3NhZ2VTcGFuIH0gZnJvbSAnLi4vLi4vYXBpLXByaXZhdGUnO1xuaW1wb3J0IHsgZGV0ZWN0Q2lTeXN0ZW0gfSBmcm9tICcuLi9jaS1zeXN0ZW1zJztcbmltcG9ydCB0eXBlIHsgQ2xpSW9Ib3N0IH0gZnJvbSAnLi4vaW8taG9zdC9jbGktaW8taG9zdCc7XG5pbXBvcnQgdHlwZSB7IEV2ZW50UmVzdWx0IH0gZnJvbSAnLi4vdGVsZW1ldHJ5L21lc3NhZ2VzJztcbmltcG9ydCB7IENMSV9QUklWQVRFX1NQQU4gfSBmcm9tICcuLi90ZWxlbWV0cnkvbWVzc2FnZXMnO1xuaW1wb3J0IHsgaXNDSSB9IGZyb20gJy4uL3V0aWwvY2knO1xuaW1wb3J0IHsgdmVyc2lvbk51bWJlciB9IGZyb20gJy4uL3ZlcnNpb24nO1xuaW1wb3J0IHsgVVNFUl9JTlRFUlJVUFRFRF9DT0RFIH0gZnJvbSAnLi9lcnJvcic7XG5pbXBvcnQgeyB3aXRoVGVsZW1ldHJ5U3RhdGUgfSBmcm9tICcuL3RlbGVtZXRyeS1zdGF0ZSc7XG5cbmNvbnN0IEFCT1JURURfRVJST1JfTUVTU0FHRSA9ICdfX0NESy1Ub29sa2l0X19BYm9ydGVkJztcblxuLyoqXG4gKiBWYWxpZCB1c2VyIGFnZW50IHByZWZpeGVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gcmVwb3J0IHRocm91Z2ggQ0RLX0NMSV9VU0VSQUdFTlQuXG4gKiBUaGlzIGNyZWF0ZXMgYSBtZWNoYW5pc20gdG8gcmVwb3J0IHVzZXIgYWdlbnRzIHdlIGNvbnRyb2wuXG4gKi9cbmNvbnN0IFZBTElEX1VTRVJfQUdFTlRTID0gWydhd3MtYmxvY2tzJ107XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVsZW1ldHJ5U2Vzc2lvblByb3BzIHtcbiAgcmVhZG9ubHkgaW9Ib3N0OiBDbGlJb0hvc3Q7XG4gIHJlYWRvbmx5IGNsaWVudDogSVRlbGVtZXRyeVNpbms7XG4gIHJlYWRvbmx5IGFyZ3VtZW50czogYW55O1xuICByZWFkb25seSBjb250ZXh0OiBDb250ZXh0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbGVtZXRyeUV2ZW50IHtcbiAgcmVhZG9ubHkgZXZlbnRUeXBlOiBFdmVudFR5cGU7XG4gIHJlYWRvbmx5IGR1cmF0aW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IGVycm9yPzogRXJyb3JEZXRhaWxzO1xuICByZWFkb25seSBjb3VudGVycz86IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG59XG5cbi8qKlxuICogVGltZXIgb2YgYSBzaW5nbGUgZXZlbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaW1pbmcge1xuICAvKipcbiAgICogVG90YWwgdGltZSBzcGVudCBpbiB0aGlzIG9wZXJhdGlvblxuICAgKi9cbiAgdG90YWxNczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDb3VudCBvZiBvcGVyYXRpb25zIHRoYXQgdG9nZXRoZXIgdG9vayBgdG90YWxNc2AuXG4gICAqL1xuICBjb3VudDogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgVGVsZW1ldHJ5U2Vzc2lvbiB7XG4gIHByaXZhdGUgaW9Ib3N0OiBDbGlJb0hvc3Q7XG4gIHByaXZhdGUgY2xpZW50OiBJVGVsZW1ldHJ5U2luaztcbiAgcHJpdmF0ZSBfc2Vzc2lvbkluZm8/OiBTZXNzaW9uU2NoZW1hO1xuICBwcml2YXRlIF9jb21tYW5kU3Bhbj86IElNZXNzYWdlU3BhbjxFdmVudFJlc3VsdD47XG4gIHByaXZhdGUgX25leHRFdmVudENvdW50ZXJzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgcHJpdmF0ZSBjb3VudCA9IDA7XG4gIHByaXZhdGUgbG9hZFRpbWU/OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogVGVsZW1ldHJ5U2Vzc2lvblByb3BzKSB7XG4gICAgdGhpcy5pb0hvc3QgPSBwcm9wcy5pb0hvc3Q7XG4gICAgdGhpcy5jbGllbnQgPSBwcm9wcy5jbGllbnQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNwYW4gdGhhdCByZXByZXNlbnRzIHRoZSBDTEkgaW52b2NhdGlvbi5cbiAgICpcbiAgICogSW4gdGhlIGNvZGUsIHRoaXMgc3BhbiBpcyBuYW1lZCBDT01NQU5EIGJ1dCB0aGUgbWF0Y2hpbmcgZXZlbnQgdHlwZVxuICAgKiBpbiB0ZWxlbWV0cnkgd2lsbCBiZSBJTlZPS0UuXG4gICAqXG4gICAqIFdpbGwgYmUgZW1pdHRlZCBleGFjdGx5IG9uY2UsIGF0IHRoZSBlbmQgb2YgdGhlIENMSSBvcGVyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGNvbW1hbmRTcGFuKCk6IElNZXNzYWdlU3BhbjxFdmVudFJlc3VsdD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9jb21tYW5kU3BhbjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBiZWdpbigpIHtcbiAgICAvLyBzYW5pdGl6ZSB0aGUgcmF3IGNsaSBpbnB1dFxuICAgIGNvbnN0IHsgcGF0aCwgcGFyYW1ldGVycyB9ID0gc2FuaXRpemVDb21tYW5kTGluZUFyZ3VtZW50cyh0aGlzLnByb3BzLmFyZ3VtZW50cyk7XG4gICAgdGhpcy5fc2Vzc2lvbkluZm8gPSB7XG4gICAgICBpZGVudGlmaWVyczoge1xuICAgICAgICBpbnN0YWxsYXRpb25JZDogYXdhaXQgZ2V0T3JDcmVhdGVJbnN0YWxsYXRpb25JZCh0aGlzLmlvSG9zdC5hc0lvSGVscGVyKCkpLFxuICAgICAgICBzZXNzaW9uSWQ6IHJhbmRvbVVVSUQoKSxcbiAgICAgICAgdGVsZW1ldHJ5VmVyc2lvbjogJzIuMCcsXG4gICAgICAgIGNka0NsaVZlcnNpb246IHZlcnNpb25OdW1iZXIoKSxcbiAgICAgICAgY2RrTGlicmFyeVZlcnNpb246IGF3YWl0IGdldExpYnJhcnlWZXJzaW9uKHRoaXMuaW9Ib3N0LmFzSW9IZWxwZXIoKSksXG4gICAgICB9LFxuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgY29tbWFuZDoge1xuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgIGNvbnRleHQ6IHNhbml0aXplQ29udGV4dCh0aGlzLnByb3BzLmNvbnRleHQpLFxuICAgICAgICAgICAgLi4uKGlzVmFsaWRXcmFwcGVyVXNlckFnZW50KHByb2Nlc3MuZW52LkNES19DTElfVVNFUkFHRU5UKVxuICAgICAgICAgICAgICA/IHsgY2RrQ2xpVXNlckFnZW50OiB7IFtwcm9jZXNzLmVudi5DREtfQ0xJX1VTRVJBR0VOVF06IHRydWUgfSB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgY2k6IGlzQ0koKSB8fCBCb29sZWFuKGRldGVjdENpU3lzdGVtKCkpLFxuICAgICAgICBvczoge1xuICAgICAgICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgICAgIHJlbGVhc2U6IHByb2Nlc3MucmVsZWFzZS5uYW1lLFxuICAgICAgICB9LFxuICAgICAgICBub2RlVmVyc2lvbjogcHJvY2Vzcy52ZXJzaW9uLFxuICAgICAgfSxcbiAgICAgIHByb2plY3Q6IHt9LFxuICAgIH07XG5cbiAgICAvLyBJZiBTSUdJTlQgaGFzIGEgbGlzdGVuZXIgaW5zdGFsbGVkLCBpdHMgZGVmYXVsdCBiZWhhdmlvciB3aWxsIGJlIHJlbW92ZWQgKE5vZGUuanMgd2lsbCBubyBsb25nZXIgZXhpdCkuXG4gICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgb24gU0lHSU5UIHdlIHByb2Nlc3Mgc2FmZWx5IGNsb3NlIHRoZSB0ZWxlbWV0cnkgc2Vzc2lvbiBiZWZvcmUgZXhpdGluZy5cbiAgICBwcm9jZXNzLm9uKCdTSUdJTlQnLCBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmVuZCh7XG4gICAgICAgICAgbmFtZTogVVNFUl9JTlRFUlJVUFRFRF9DT0RFLFxuICAgICAgICAgIG1lc3NhZ2U6IEFCT1JURURfRVJST1JfTUVTU0FHRSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5pb0hvc3QuZGVmYXVsdHMudHJhY2UoYEVuZGluZyBUZWxlbWV0cnkgZmFpbGVkOiAke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9KTtcblxuICAgIC8vIEJlZ2luIHRoZSBzZXNzaW9uIHNwYW5cbiAgICB0aGlzLl9jb21tYW5kU3BhbiA9IGF3YWl0IHRoaXMuaW9Ib3N0LmFzSW9IZWxwZXIoKS5zcGFuKENMSV9QUklWQVRFX1NQQU4uQ09NTUFORCkuYmVnaW4oe30pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGF0dGFjaFJlZ2lvbihyZWdpb246IHN0cmluZykge1xuICAgIHRoaXMuc2Vzc2lvbkluZm8uaWRlbnRpZmllcnMgPSB7XG4gICAgICAuLi50aGlzLnNlc3Npb25JbmZvLmlkZW50aWZpZXJzLFxuICAgICAgcmVnaW9uLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoIGEgbGFuZ3VhZ2UgZ3Vlc3NcbiAgICovXG4gIHB1YmxpYyBhdHRhY2hMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gRG9uJ3Qgd2FudCB0byBjcmFzaCBhY2NpZGVudGFsbHlcbiAgICBpZiAoIXRoaXMuX3Nlc3Npb25JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGxhbmd1YWdlKSB7XG4gICAgICBtdXRhYmxlKHRoaXMuc2Vzc2lvbkluZm8ucHJvamVjdCkubGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoIG91ciBiZXN0IGd1ZXNzIGF0IHJ1bm5pbmcgdW5kZXIgYW4gYWdlbnQgb3Igbm90XG4gICAqL1xuICBwdWJsaWMgYXR0YWNoQWdlbnQoaXNBZ2VudDogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIC8vIERvbid0IHdhbnQgdG8gY3Jhc2ggYWNjaWRlbnRhbGx5XG4gICAgaWYgKCF0aGlzLl9zZXNzaW9uSW5mbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG11dGFibGUodGhpcy5zZXNzaW9uSW5mby5lbnZpcm9ubWVudCkuYWdlbnQgPSBpc0FnZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBvcmFyaWx5IGF0dGFjaCBjb3VudGVycyBmb3IgdGhlIG5leHQgZXZlbnQgb3BlcmF0aW9uLlxuICAgKlxuICAgKiBUaGV5IG1heSBiZSBjb21taXR0ZWQgdG8gdGhlIHNlbnQgdGVsZW1ldHJ5IGxhdGVyLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaENvdW50ZXJzVG9OZXh0RXZlbnQoY291bnRlcnM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4pIHtcbiAgICB0aGlzLl9uZXh0RXZlbnRDb3VudGVycyA9IGNvdW50ZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbG9hZCB0aW1lICh3aWxsIGJlIGVtaXR0ZWQgd2l0aCB0aGUgQ09NTUFORCBzcGFuKVxuICAgKi9cbiAgcHVibGljIGF0dGFjaExvYWRUaW1lKGxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLmxvYWRUaW1lID0gbG9hZFRpbWU7XG4gICAgdGhpcy5fY29tbWFuZFNwYW4/LmFkZFRpbWVyKCdsb2FkJywgbG9hZFRpbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmsgd2hlbiB0aGUgYWN0dWFsIENMSSBvcGVyYXRpb24gc3RhcnRzXG4gICAqXG4gICAqIEVtaXR0ZWQgYXMgcGFydCBvZiB0aGUgQ09NTUFORCBzcGFuLlxuICAgKi9cbiAgcHVibGljIG1hcmtPcGVyYXRpb25TdGFydCgpIHtcbiAgICBpZiAodGhpcy5sb2FkVGltZSkge1xuICAgICAgdGhpcy5fY29tbWFuZFNwYW4/LmFkZFRpbWVyKCdpbml0JywgcGVyZm9ybWFuY2Uubm93KCkgLSB0aGlzLmxvYWRUaW1lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoIHRoZSBDREsgbGlicmFyeSB2ZXJzaW9uXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQgdGhlIHRlbGVtZXRyeSB3aWxsIGd1ZXNzIGF0IHRoZSBDREsgbGlicmFyeSB2ZXJzaW9uIGlmIGl0IHNvXG4gICAqIGhhcHBlbnMgdGhhdCB0aGUgQ0RLIHByb2plY3QgaXMgYW4gTlBNIHByb2plY3QgYW5kIHRoZSBDREsgQ0xJIGlzIGV4ZWN1dGVkXG4gICAqIGluIHRoZSByb290IG9mIE5QTSBwcm9qZWN0IHdpdGggYGF3cy1jZGstbGliYCBhdmFpbGFibGUgaW4gYG5vZGVfbW9kdWxlc2AuXG4gICAqIFRoaXMgbWF5IHN1Y2NlZWQgb3IgbWF5IGZhaWwuXG4gICAqXG4gICAqIE9uY2Ugd2UgaGF2ZSBwcm9kdWNlZCBhbmQgbG9hZGVkIHRoZSBjbG91ZCBhc3NlbWJseSBtb3JlIGFjY3VyYXRlXG4gICAqIGluZm9ybWF0aW9uIGJlY29tZXMgYXZhaWxhYmxlIHRoYXQgd2UgY2FuIGFkZCBpbi5cbiAgICovXG4gIHB1YmxpYyBhdHRhY2hDZGtMaWJWZXJzaW9uKGxpYlZlcnNpb246IHN0cmluZykge1xuICAgIC8vIERvbid0IHdhbnQgdG8gY3Jhc2ggYWNjaWRlbnRhbGx5XG4gICAgaWYgKCF0aGlzLl9zZXNzaW9uSW5mbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG11dGFibGUodGhpcy5zZXNzaW9uSW5mby5pZGVudGlmaWVycykuY2RrTGlicmFyeVZlcnNpb24gPSBsaWJWZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhlIGNvbW1hbmQgaXMgY29tcGxldGUsIHNvIGlzIHRoZSBDbGlJb0hvc3QuIEVuZHMgdGhlIHNwYW4gb2YgdGhlIGVudGlyZSBDbGlJb0hvc3RcbiAgICogYW5kIG5vdGlmaWVzIHdpdGggYW4gb3B0aW9uYWwgZXJyb3IgbWVzc2FnZSBpbiB0aGUgZGF0YS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBlbmQoZXJyb3I/OiBFcnJvckRldGFpbHMpIHtcbiAgICBhd2FpdCB0aGlzLl9jb21tYW5kU3Bhbj8uZW5kKHsgZXJyb3IgfSk7XG4gICAgLy8gSWRlYWxseSBzcGFuLmVuZCgpIHNob3VsZCBuby1vcCBpZiBjYWxsZWQgdHdpY2UsIGJ1dCB0aGF0IGlzIG5vdCB0aGUgY2FzZSByaWdodCBub3dcbiAgICB0aGlzLl9jb21tYW5kU3BhbiA9IHVuZGVmaW5lZDtcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5mbHVzaCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtaXQoZXZlbnQ6IFRlbGVtZXRyeUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jb3VudCArPSAxO1xuXG4gICAgY29uc3QgY291bnRlcnMgPSB7XG4gICAgICAuLi50aGlzLl9uZXh0RXZlbnRDb3VudGVycyxcbiAgICAgIC4uLmV2ZW50LmNvdW50ZXJzLFxuICAgIH07XG4gICAgdGhpcy5fbmV4dEV2ZW50Q291bnRlcnMgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09ICdERVBMT1knKSB7XG4gICAgICBhd2FpdCB0aGlzLnRyYWNrRGVwbG95U3RhdGlzdGljcyhldmVudC5lcnJvciA9PT0gdW5kZWZpbmVkLCBjb3VudGVycyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmVtaXQoe1xuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgY29tbWFuZDogdGhpcy5zZXNzaW9uSW5mby5ldmVudC5jb21tYW5kLFxuICAgICAgICBzdGF0ZTogZ2V0U3RhdGUoZXZlbnQuZXJyb3IpLFxuICAgICAgICBldmVudFR5cGU6IGV2ZW50LmV2ZW50VHlwZSxcbiAgICAgIH0sXG4gICAgICBpZGVudGlmaWVyczoge1xuICAgICAgICAuLi50aGlzLnNlc3Npb25JbmZvLmlkZW50aWZpZXJzLFxuICAgICAgICBldmVudElkOiBgJHt0aGlzLnNlc3Npb25JbmZvLmlkZW50aWZpZXJzLnNlc3Npb25JZH06JHt0aGlzLmNvdW50fWAsXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgfSxcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLnNlc3Npb25JbmZvLmVudmlyb25tZW50LFxuICAgICAgcHJvamVjdDogdGhpcy5zZXNzaW9uSW5mby5wcm9qZWN0LFxuICAgICAgZHVyYXRpb246IHtcbiAgICAgICAgdG90YWw6IGV2ZW50LmR1cmF0aW9uLFxuICAgICAgfSxcbiAgICAgIC4uLihldmVudC5lcnJvciA/IHtcbiAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICBuYW1lOiBldmVudC5lcnJvci5uYW1lLFxuICAgICAgICB9LFxuICAgICAgfSA6IHt9KSxcbiAgICAgIC4uLihPYmplY3Qua2V5cyhjb3VudGVycykubGVuZ3RoID4gMCA/IHsgY291bnRlcnMgfSA6IHt9KSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgREVQTE9ZIGV2ZW50LCB0cmFjayBzb21lIGFkZGl0aW9uYWwgc3RhdGlzdGljcyBhYm91dCBpdFxuICAgKlxuICAgKiBXZSB1c2UgdGhpcyB0byBtZWFzdXJlIHRoaW5ncyBhYm91dCBkZXBsb3ltZW50IGZhaWx1cmVzLCBzdWNoIGFzIHRoZSBudW1iZXIgb2ZcbiAgICogZmFpbGVkIERFUExPWSBldmVudHMgaW4gYSBzZXF1ZW5jZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgdHJhY2tEZXBsb3lTdGF0aXN0aWNzKGlzU3VjY2Vzc2Z1bDogYm9vbGVhbiwgY291bnRlcnM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4pIHtcbiAgICBhd2FpdCB3aXRoVGVsZW1ldHJ5U3RhdGUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCByZWNlbnRGYWlsdXJlcyA9IHN0YXRlLnNlcXVlbnRpYWxEZXBsb3ltZW50RmFpbHVyZXMgPz8gMDtcblxuICAgICAgaWYgKGlzU3VjY2Vzc2Z1bCkge1xuICAgICAgICBzdGF0ZS5zZXF1ZW50aWFsRGVwbG95bWVudEZhaWx1cmVzID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnNlcXVlbnRpYWxEZXBsb3ltZW50RmFpbHVyZXMgPSByZWNlbnRGYWlsdXJlcyArIDE7XG4gICAgICB9XG5cbiAgICAgIGNvdW50ZXJzLnNlcXVlbnRpYWxEZXBsb3ltZW50RmFpbHVyZXMgPSBzdGF0ZS5zZXF1ZW50aWFsRGVwbG95bWVudEZhaWx1cmVzO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgc2Vzc2lvbkluZm8oKTogU2Vzc2lvblNjaGVtYSB7XG4gICAgaWYgKCF0aGlzLl9zZXNzaW9uSW5mbykge1xuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignU2Vzc2lvbk5vdEluaXRpYWxpemVkJywgJ1Nlc3Npb24gSW5mbyBub3QgaW5pdGlhbGl6ZWQuIENhbGwgYmVnaW4oKSBmaXJzdC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JbmZvO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFN0YXRlKGVycm9yPzogRXJyb3JEZXRhaWxzKTogU3RhdGUge1xuICBpZiAoZXJyb3IpIHtcbiAgICByZXR1cm4gaXNBYm9ydGVkRXJyb3IoZXJyb3IpID8gJ0FCT1JURUQnIDogJ0ZBSUxFRCc7XG4gIH1cbiAgcmV0dXJuICdTVUNDRUVERUQnO1xufVxuXG5mdW5jdGlvbiBpc0Fib3J0ZWRFcnJvcihlcnJvcj86IEVycm9yRGV0YWlscykge1xuICBpZiAoZXJyb3I/Lm5hbWUgPT09ICdUb29sa2l0RXJyb3InICYmIGVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhBQk9SVEVEX0VSUk9SX01FU1NBR0UpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBtdXRhYmxlPEEgZXh0ZW5kcyBvYmplY3Q+KHg6IEEpOiB7IC1yZWFkb25seSBbayBpbiBrZXlvZiBBXTogQVtrXSB9IHtcbiAgcmV0dXJuIHg7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoYXQgdGhlIENES19DTElfVVNFUkFHRU5UIGVudiB2YXIgdmFsdWUgbWF0Y2hlc1xuICogdGhlIGV4cGVjdGVkIGZvcm1hdDogYDxuYW1lPi88dmVyc2lvbj4vPG1vZGU+YCB3aGVyZSBuYW1lIGlzIG9uZSBvZlxuICogVkFMSURfVVNFUl9BR0VOVFMgYW5kIG1vZGUgaXMgZWl0aGVyIGBzYW5kYm94YCBvciBgcHJvZHVjdGlvbmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkV3JhcHBlclVzZXJBZ2VudCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBwYXJ0cyA9IHZhbHVlLnNwbGl0KCcvJyk7XG4gIGlmIChwYXJ0cy5sZW5ndGggIT09IDMpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgW25hbWUsIF92ZXJzaW9uLCBtb2RlXSA9IHBhcnRzO1xuICBpZiAoIVZBTElEX1VTRVJfQUdFTlRTLmluY2x1ZGVzKG5hbWUpKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBtb2RlID09PSAnc2FuZGJveCcgfHwgbW9kZSA9PT0gJ3Byb2R1Y3Rpb24nO1xufVxuIl19
306
+ /**
307
+ * Try to detect a Config file of which the first line looks like
308
+ *
309
+ * ```
310
+ * package.<packageName> = {
311
+ * ```
312
+ *
313
+ * Or a `brazil.ion` file with a line like
314
+ *
315
+ * ```
316
+ * name: "<projectName>"
317
+ * ```
318
+ *
319
+ * They will always be in the current working directory, and we will
320
+ * only do the check if it looks like we're on an Amzn developer machine.
321
+ */
322
+ async function tryDetectAmznPackage() {
323
+ try {
324
+ await fs.stat(pathlib.join(os.homedir(), '.midway'));
325
+ }
326
+ catch {
327
+ // ENOENT
328
+ return;
329
+ }
330
+ try {
331
+ const configFile = await fs.readFile('Config', 'utf-8');
332
+ const m = configFile.match(/^package\.(\S+)\s*=/m);
333
+ if (m) {
334
+ return m[1];
335
+ }
336
+ }
337
+ catch {
338
+ // Any error means no dice.
339
+ }
340
+ try {
341
+ const ionFile = await fs.readFile('brazil.ion', 'utf-8');
342
+ const m = ionFile.match(/(^|\s)name:\s*"([^"]+)"/m);
343
+ if (m) {
344
+ return m[2];
345
+ }
346
+ }
347
+ catch {
348
+ // Any error means no dice.
349
+ }
350
+ return undefined;
351
+ }
352
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBOFRBLDBEQU9DO0FBclVELDZDQUF5QztBQUN6QyxxREFBdUM7QUFDdkMsdUNBQXlCO0FBQ3pCLDhDQUFnQztBQUNoQyxzREFBb0Q7QUFDcEQsdURBQThEO0FBQzlELHVEQUFzRDtBQUN0RCw2Q0FBNkU7QUFLN0UsOENBQStDO0FBRy9DLG9EQUF5RDtBQUN6RCxtQ0FBa0M7QUFDbEMsd0NBQTJDO0FBQzNDLG1DQUFnRDtBQUNoRCx1REFBdUQ7QUFFdkQsTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsQ0FBQztBQUV2RDs7O0dBR0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7QUErQnpDLE1BQWEsZ0JBQWdCO0lBU0U7SUFSckIsTUFBTSxDQUFZO0lBQ2xCLE1BQU0sQ0FBaUI7SUFDdkIsWUFBWSxDQUFpQjtJQUM3QixZQUFZLENBQTZCO0lBQ3pDLGtCQUFrQixDQUEwQjtJQUM1QyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsUUFBUSxDQUFVO0lBRTFCLFlBQTZCLEtBQTRCO1FBQTVCLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNoQiw2QkFBNkI7UUFDN0IsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFBLHlDQUE0QixFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMs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LEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxTQUFTO1FBQ1QsT0FBTztJQUNULENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ04sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLDJCQUEyQjtJQUM3QixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNOLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCwyQkFBMkI7SUFDN0IsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRobGliIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHsgZ2V0T3JDcmVhdGVJbnN0YWxsYXRpb25JZCB9IGZyb20gJy4vaW5zdGFsbGF0aW9uLWlkJztcbmltcG9ydCB7IGdldExpYnJhcnlWZXJzaW9uIH0gZnJvbSAnLi9saWJyYXJ5LXZlcnNpb24nO1xuaW1wb3J0IHsgc2FuaXRpemVDb21tYW5kTGluZUFyZ3VtZW50cywgc2FuaXRpemVDb250ZXh0IH0gZnJvbSAnLi9zYW5pdGF0aW9uJztcbmltcG9ydCB7IHR5cGUgRXZlbnRUeXBlLCB0eXBlIFNlc3Npb25TY2hlbWEsIHR5cGUgU3RhdGUsIHR5cGUgRXJyb3JEZXRhaWxzIH0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHR5cGUgeyBJVGVsZW1ldHJ5U2luayB9IGZyb20gJy4vc2luay9zaW5rLWludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tICcuLi8uLi9hcGkvY29udGV4dCc7XG5pbXBvcnQgdHlwZSB7IElNZXNzYWdlU3BhbiB9IGZyb20gJy4uLy4uL2FwaS1wcml2YXRlJztcbmltcG9ydCB7IGRldGVjdENpU3lzdGVtIH0gZnJvbSAnLi4vY2ktc3lzdGVtcyc7XG5pbXBvcnQgdHlwZSB7IENsaUlvSG9zdCB9IGZyb20gJy4uL2lvLWhvc3QvY2xpLWlvLWhvc3QnO1xuaW1wb3J0IHR5cGUgeyBFdmVudFJlc3VsdCB9IGZyb20gJy4uL3RlbGVtZXRyeS9tZXNzYWdlcyc7XG5pbXBvcnQgeyBDTElfUFJJVkFURV9TUEFOIH0gZnJvbSAnLi4vdGVsZW1ldHJ5L21lc3NhZ2VzJztcbmltcG9ydCB7IGlzQ0kgfSBmcm9tICcuLi91dGlsL2NpJztcbmltcG9ydCB7IHZlcnNpb25OdW1iZXIgfSBmcm9tICcuLi92ZXJzaW9uJztcbmltcG9ydCB7IFVTRVJfSU5URVJSVVBURURfQ09ERSB9IGZyb20gJy4vZXJyb3InO1xuaW1wb3J0IHsgd2l0aFRlbGVtZXRyeVN0YXRlIH0gZnJvbSAnLi90ZWxlbWV0cnktc3RhdGUnO1xuXG5jb25zdCBBQk9SVEVEX0VSUk9SX01FU1NBR0UgPSAnX19DREstVG9vbGtpdF9fQWJvcnRlZCc7XG5cbi8qKlxuICogVmFsaWQgdXNlciBhZ2VudCBwcmVmaXhlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIHJlcG9ydCB0aHJvdWdoIENES19DTElfVVNFUkFHRU5ULlxuICogVGhpcyBjcmVhdGVzIGEgbWVjaGFuaXNtIHRvIHJlcG9ydCB1c2VyIGFnZW50cyB3ZSBjb250cm9sLlxuICovXG5jb25zdCBWQUxJRF9VU0VSX0FHRU5UUyA9IFsnYXdzLWJsb2NrcyddO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlbGVtZXRyeVNlc3Npb25Qcm9wcyB7XG4gIHJlYWRvbmx5IGlvSG9zdDogQ2xpSW9Ib3N0O1xuICByZWFkb25seSBjbGllbnQ6IElUZWxlbWV0cnlTaW5rO1xuICByZWFkb25seSBhcmd1bWVudHM6IGFueTtcbiAgcmVhZG9ubHkgY29udGV4dDogQ29udGV4dDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZWxlbWV0cnlFdmVudCB7XG4gIHJlYWRvbmx5IGV2ZW50VHlwZTogRXZlbnRUeXBlO1xuICByZWFkb25seSBkdXJhdGlvbjogbnVtYmVyO1xuICByZWFkb25seSBlcnJvcj86IEVycm9yRGV0YWlscztcbiAgcmVhZG9ubHkgY291bnRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xufVxuXG4vKipcbiAqIFRpbWVyIG9mIGEgc2luZ2xlIGV2ZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGltaW5nIHtcbiAgLyoqXG4gICAqIFRvdGFsIHRpbWUgc3BlbnQgaW4gdGhpcyBvcGVyYXRpb25cbiAgICovXG4gIHRvdGFsTXM6IG51bWJlcjtcblxuICAvKipcbiAgICogQ291bnQgb2Ygb3BlcmF0aW9ucyB0aGF0IHRvZ2V0aGVyIHRvb2sgYHRvdGFsTXNgLlxuICAgKi9cbiAgY291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIFRlbGVtZXRyeVNlc3Npb24ge1xuICBwcml2YXRlIGlvSG9zdDogQ2xpSW9Ib3N0O1xuICBwcml2YXRlIGNsaWVudDogSVRlbGVtZXRyeVNpbms7XG4gIHByaXZhdGUgX3Nlc3Npb25JbmZvPzogU2Vzc2lvblNjaGVtYTtcbiAgcHJpdmF0ZSBfY29tbWFuZFNwYW4/OiBJTWVzc2FnZVNwYW48RXZlbnRSZXN1bHQ+O1xuICBwcml2YXRlIF9uZXh0RXZlbnRDb3VudGVycz86IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gIHByaXZhdGUgY291bnQgPSAwO1xuICBwcml2YXRlIGxvYWRUaW1lPzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IFRlbGVtZXRyeVNlc3Npb25Qcm9wcykge1xuICAgIHRoaXMuaW9Ib3N0ID0gcHJvcHMuaW9Ib3N0O1xuICAgIHRoaXMuY2xpZW50ID0gcHJvcHMuY2xpZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzcGFuIHRoYXQgcmVwcmVzZW50cyB0aGUgQ0xJIGludm9jYXRpb24uXG4gICAqXG4gICAqIEluIHRoZSBjb2RlLCB0aGlzIHNwYW4gaXMgbmFtZWQgQ09NTUFORCBidXQgdGhlIG1hdGNoaW5nIGV2ZW50IHR5cGVcbiAgICogaW4gdGVsZW1ldHJ5IHdpbGwgYmUgSU5WT0tFLlxuICAgKlxuICAgKiBXaWxsIGJlIGVtaXR0ZWQgZXhhY3RseSBvbmNlLCBhdCB0aGUgZW5kIG9mIHRoZSBDTEkgb3BlcmF0aW9uLlxuICAgKi9cbiAgcHVibGljIGdldCBjb21tYW5kU3BhbigpOiBJTWVzc2FnZVNwYW48RXZlbnRSZXN1bHQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fY29tbWFuZFNwYW47XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYmVnaW4oKSB7XG4gICAgLy8gc2FuaXRpemUgdGhlIHJhdyBjbGkgaW5wdXRcbiAgICBjb25zdCB7IHBhdGgsIHBhcmFtZXRlcnMgfSA9IHNhbml0aXplQ29tbWFuZExpbmVBcmd1bWVudHModGhpcy5wcm9wcy5hcmd1bWVudHMpO1xuICAgIHRoaXMuX3Nlc3Npb25JbmZvID0ge1xuICAgICAgaWRlbnRpZmllcnM6IHtcbiAgICAgICAgaW5zdGFsbGF0aW9uSWQ6IGF3YWl0IGdldE9yQ3JlYXRlSW5zdGFsbGF0aW9uSWQodGhpcy5pb0hvc3QuYXNJb0hlbHBlcigpKSxcbiAgICAgICAgc2Vzc2lvbklkOiByYW5kb21VVUlEKCksXG4gICAgICAgIHRlbGVtZXRyeVZlcnNpb246ICcyLjAnLFxuICAgICAgICBjZGtDbGlWZXJzaW9uOiB2ZXJzaW9uTnVtYmVyKCksXG4gICAgICAgIGNka0xpYnJhcnlWZXJzaW9uOiBhd2FpdCBnZXRMaWJyYXJ5VmVyc2lvbih0aGlzLmlvSG9zdC5hc0lvSGVscGVyKCkpLFxuICAgICAgICBhbXpuUGFja2FnZTogYXdhaXQgdHJ5RGV0ZWN0QW16blBhY2thZ2UoKSxcbiAgICAgIH0sXG4gICAgICBldmVudDoge1xuICAgICAgICBjb21tYW5kOiB7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgY29udGV4dDogc2FuaXRpemVDb250ZXh0KHRoaXMucHJvcHMuY29udGV4dCksXG4gICAgICAgICAgICAuLi4oaXNWYWxpZFdyYXBwZXJVc2VyQWdlbnQocHJvY2Vzcy5lbnYuQ0RLX0NMSV9VU0VSQUdFTlQpXG4gICAgICAgICAgICAgID8geyBjZGtDbGlVc2VyQWdlbnQ6IHsgW3Byb2Nlc3MuZW52LkNES19DTElfVVNFUkFHRU5UXTogdHJ1ZSB9IH1cbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBjaTogaXNDSSgpIHx8IEJvb2xlYW4oZGV0ZWN0Q2lTeXN0ZW0oKSksXG4gICAgICAgIG9zOiB7XG4gICAgICAgICAgcGxhdGZvcm06IHByb2Nlc3MucGxhdGZvcm0sXG4gICAgICAgICAgcmVsZWFzZTogcHJvY2Vzcy5yZWxlYXNlLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIG5vZGVWZXJzaW9uOiBwcm9jZXNzLnZlcnNpb24sXG4gICAgICB9LFxuICAgICAgcHJvamVjdDoge30sXG4gICAgfTtcblxuICAgIC8vIElmIFNJR0lOVCBoYXMgYSBsaXN0ZW5lciBpbnN0YWxsZWQsIGl0cyBkZWZhdWx0IGJlaGF2aW9yIHdpbGwgYmUgcmVtb3ZlZCAoTm9kZS5qcyB3aWxsIG5vIGxvbmdlciBleGl0KS5cbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBvbiBTSUdJTlQgd2UgcHJvY2VzcyBzYWZlbHkgY2xvc2UgdGhlIHRlbGVtZXRyeSBzZXNzaW9uIGJlZm9yZSBleGl0aW5nLlxuICAgIHByb2Nlc3Mub24oJ1NJR0lOVCcsIGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZW5kKHtcbiAgICAgICAgICBuYW1lOiBVU0VSX0lOVEVSUlVQVEVEX0NPREUsXG4gICAgICAgICAgbWVzc2FnZTogQUJPUlRFRF9FUlJPUl9NRVNTQUdFLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICBhd2FpdCB0aGlzLmlvSG9zdC5kZWZhdWx0cy50cmFjZShgRW5kaW5nIFRlbGVtZXRyeSBmYWlsZWQ6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH0pO1xuXG4gICAgLy8gQmVnaW4gdGhlIHNlc3Npb24gc3BhblxuICAgIHRoaXMuX2NvbW1hbmRTcGFuID0gYXdhaXQgdGhpcy5pb0hvc3QuYXNJb0hlbHBlcigpLnNwYW4oQ0xJX1BSSVZBVEVfU1BBTi5DT01NQU5EKS5iZWdpbih7fSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYXR0YWNoUmVnaW9uKHJlZ2lvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXNzaW9uSW5mby5pZGVudGlmaWVycyA9IHtcbiAgICAgIC4uLnRoaXMuc2Vzc2lvbkluZm8uaWRlbnRpZmllcnMsXG4gICAgICByZWdpb24sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggYSBsYW5ndWFnZSBndWVzc1xuICAgKi9cbiAgcHVibGljIGF0dGFjaExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAvLyBEb24ndCB3YW50IHRvIGNyYXNoIGFjY2lkZW50YWxseVxuICAgIGlmICghdGhpcy5fc2Vzc2lvbkluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobGFuZ3VhZ2UpIHtcbiAgICAgIG11dGFibGUodGhpcy5zZXNzaW9uSW5mby5wcm9qZWN0KS5sYW5ndWFnZSA9IGxhbmd1YWdlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggb3VyIGJlc3QgZ3Vlc3MgYXQgcnVubmluZyB1bmRlciBhbiBhZ2VudCBvciBub3RcbiAgICovXG4gIHB1YmxpYyBhdHRhY2hBZ2VudChpc0FnZW50OiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gRG9uJ3Qgd2FudCB0byBjcmFzaCBhY2NpZGVudGFsbHlcbiAgICBpZiAoIXRoaXMuX3Nlc3Npb25JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbXV0YWJsZSh0aGlzLnNlc3Npb25JbmZvLmVudmlyb25tZW50KS5hZ2VudCA9IGlzQWdlbnQ7XG4gIH1cblxuICAvKipcbiAgICogVGVtcG9yYXJpbHkgYXR0YWNoIGNvdW50ZXJzIGZvciB0aGUgbmV4dCBldmVudCBvcGVyYXRpb24uXG4gICAqXG4gICAqIFRoZXkgbWF5IGJlIGNvbW1pdHRlZCB0byB0aGUgc2VudCB0ZWxlbWV0cnkgbGF0ZXIuXG4gICAqL1xuICBwdWJsaWMgYXR0YWNoQ291bnRlcnNUb05leHRFdmVudChjb3VudGVyczogUmVjb3JkPHN0cmluZywgbnVtYmVyPikge1xuICAgIHRoaXMuX25leHRFdmVudENvdW50ZXJzID0gY291bnRlcnM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBsb2FkIHRpbWUgKHdpbGwgYmUgZW1pdHRlZCB3aXRoIHRoZSBDT01NQU5EIHNwYW4pXG4gICAqL1xuICBwdWJsaWMgYXR0YWNoTG9hZFRpbWUobG9hZFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMubG9hZFRpbWUgPSBsb2FkVGltZTtcbiAgICB0aGlzLl9jb21tYW5kU3Bhbj8uYWRkVGltZXIoJ2xvYWQnLCBsb2FkVGltZSk7XG4gIH1cblxuICAvKipcbiAgICogTWFyayB3aGVuIHRoZSBhY3R1YWwgQ0xJIG9wZXJhdGlvbiBzdGFydHNcbiAgICpcbiAgICogRW1pdHRlZCBhcyBwYXJ0IG9mIHRoZSBDT01NQU5EIHNwYW4uXG4gICAqL1xuICBwdWJsaWMgbWFya09wZXJhdGlvblN0YXJ0KCkge1xuICAgIGlmICh0aGlzLmxvYWRUaW1lKSB7XG4gICAgICB0aGlzLl9jb21tYW5kU3Bhbj8uYWRkVGltZXIoJ2luaXQnLCBwZXJmb3JtYW5jZS5ub3coKSAtIHRoaXMubG9hZFRpbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggdGhlIENESyBsaWJyYXJ5IHZlcnNpb25cbiAgICpcbiAgICogQnkgZGVmYXVsdCB0aGUgdGVsZW1ldHJ5IHdpbGwgZ3Vlc3MgYXQgdGhlIENESyBsaWJyYXJ5IHZlcnNpb24gaWYgaXQgc29cbiAgICogaGFwcGVucyB0aGF0IHRoZSBDREsgcHJvamVjdCBpcyBhbiBOUE0gcHJvamVjdCBhbmQgdGhlIENESyBDTEkgaXMgZXhlY3V0ZWRcbiAgICogaW4gdGhlIHJvb3Qgb2YgTlBNIHByb2plY3Qgd2l0aCBgYXdzLWNkay1saWJgIGF2YWlsYWJsZSBpbiBgbm9kZV9tb2R1bGVzYC5cbiAgICogVGhpcyBtYXkgc3VjY2VlZCBvciBtYXkgZmFpbC5cbiAgICpcbiAgICogT25jZSB3ZSBoYXZlIHByb2R1Y2VkIGFuZCBsb2FkZWQgdGhlIGNsb3VkIGFzc2VtYmx5IG1vcmUgYWNjdXJhdGVcbiAgICogaW5mb3JtYXRpb24gYmVjb21lcyBhdmFpbGFibGUgdGhhdCB3ZSBjYW4gYWRkIGluLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaENka0xpYlZlcnNpb24obGliVmVyc2lvbjogc3RyaW5nKSB7XG4gICAgLy8gRG9uJ3Qgd2FudCB0byBjcmFzaCBhY2NpZGVudGFsbHlcbiAgICBpZiAoIXRoaXMuX3Nlc3Npb25JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbXV0YWJsZSh0aGlzLnNlc3Npb25JbmZvLmlkZW50aWZpZXJzKS5jZGtMaWJyYXJ5VmVyc2lvbiA9IGxpYlZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0aGUgY29tbWFuZCBpcyBjb21wbGV0ZSwgc28gaXMgdGhlIENsaUlvSG9zdC4gRW5kcyB0aGUgc3BhbiBvZiB0aGUgZW50aXJlIENsaUlvSG9zdFxuICAgKiBhbmQgbm90aWZpZXMgd2l0aCBhbiBvcHRpb25hbCBlcnJvciBtZXNzYWdlIGluIHRoZSBkYXRhLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGVuZChlcnJvcj86IEVycm9yRGV0YWlscykge1xuICAgIGF3YWl0IHRoaXMuX2NvbW1hbmRTcGFuPy5lbmQoeyBlcnJvciB9KTtcbiAgICAvLyBJZGVhbGx5IHNwYW4uZW5kKCkgc2hvdWxkIG5vLW9wIGlmIGNhbGxlZCB0d2ljZSwgYnV0IHRoYXQgaXMgbm90IHRoZSBjYXNlIHJpZ2h0IG5vd1xuICAgIHRoaXMuX2NvbW1hbmRTcGFuID0gdW5kZWZpbmVkO1xuICAgIGF3YWl0IHRoaXMuY2xpZW50LmZsdXNoKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1pdChldmVudDogVGVsZW1ldHJ5RXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNvdW50ICs9IDE7XG5cbiAgICBjb25zdCBjb3VudGVycyA9IHtcbiAgICAgIC4uLnRoaXMuX25leHRFdmVudENvdW50ZXJzLFxuICAgICAgLi4uZXZlbnQuY291bnRlcnMsXG4gICAgfTtcbiAgICB0aGlzLl9uZXh0RXZlbnRDb3VudGVycyA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChldmVudC5ldmVudFR5cGUgPT0gJ0RFUExPWScpIHtcbiAgICAgIGF3YWl0IHRoaXMudHJhY2tEZXBsb3lTdGF0aXN0aWNzKGV2ZW50LmVycm9yID09PSB1bmRlZmluZWQsIGNvdW50ZXJzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZW1pdCh7XG4gICAgICBldmVudDoge1xuICAgICAgICBjb21tYW5kOiB0aGlzLnNlc3Npb25JbmZvLmV2ZW50LmNvbW1hbmQsXG4gICAgICAgIHN0YXRlOiBnZXRTdGF0ZShldmVudC5lcnJvciksXG4gICAgICAgIGV2ZW50VHlwZTogZXZlbnQuZXZlbnRUeXBlLFxuICAgICAgfSxcbiAgICAgIGlkZW50aWZpZXJzOiB7XG4gICAgICAgIC4uLnRoaXMuc2Vzc2lvbkluZm8uaWRlbnRpZmllcnMsXG4gICAgICAgIGV2ZW50SWQ6IGAke3RoaXMuc2Vzc2lvbkluZm8uaWRlbnRpZmllcnMuc2Vzc2lvbklkfToke3RoaXMuY291bnR9YCxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuc2Vzc2lvbkluZm8uZW52aXJvbm1lbnQsXG4gICAgICBwcm9qZWN0OiB0aGlzLnNlc3Npb25JbmZvLnByb2plY3QsXG4gICAgICBkdXJhdGlvbjoge1xuICAgICAgICB0b3RhbDogZXZlbnQuZHVyYXRpb24sXG4gICAgICB9LFxuICAgICAgLi4uKGV2ZW50LmVycm9yID8ge1xuICAgICAgICBlcnJvcjoge1xuICAgICAgICAgIG5hbWU6IGV2ZW50LmVycm9yLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9IDoge30pLFxuICAgICAgLi4uKE9iamVjdC5rZXlzKGNvdW50ZXJzKS5sZW5ndGggPiAwID8geyBjb3VudGVycyB9IDoge30pLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBERVBMT1kgZXZlbnQsIHRyYWNrIHNvbWUgYWRkaXRpb25hbCBzdGF0aXN0aWNzIGFib3V0IGl0XG4gICAqXG4gICAqIFdlIHVzZSB0aGlzIHRvIG1lYXN1cmUgdGhpbmdzIGFib3V0IGRlcGxveW1lbnQgZmFpbHVyZXMsIHN1Y2ggYXMgdGhlIG51bWJlciBvZlxuICAgKiBmYWlsZWQgREVQTE9ZIGV2ZW50cyBpbiBhIHNlcXVlbmNlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB0cmFja0RlcGxveVN0YXRpc3RpY3MoaXNTdWNjZXNzZnVsOiBib29sZWFuLCBjb3VudGVyczogUmVjb3JkPHN0cmluZywgbnVtYmVyPikge1xuICAgIGF3YWl0IHdpdGhUZWxlbWV0cnlTdGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IHJlY2VudEZhaWx1cmVzID0gc3RhdGUuc2VxdWVudGlhbERlcGxveW1lbnRGYWlsdXJlcyA/PyAwO1xuXG4gICAgICBpZiAoaXNTdWNjZXNzZnVsKSB7XG4gICAgICAgIHN0YXRlLnNlcXVlbnRpYWxEZXBsb3ltZW50RmFpbHVyZXMgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUuc2VxdWVudGlhbERlcGxveW1lbnRGYWlsdXJlcyA9IHJlY2VudEZhaWx1cmVzICsgMTtcbiAgICAgIH1cblxuICAgICAgY291bnRlcnMuc2VxdWVudGlhbERlcGxveW1lbnRGYWlsdXJlcyA9IHN0YXRlLnNlcXVlbnRpYWxEZXBsb3ltZW50RmFpbHVyZXM7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBzZXNzaW9uSW5mbygpOiBTZXNzaW9uU2NoZW1hIHtcbiAgICBpZiAoIXRoaXMuX3Nlc3Npb25JbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdTZXNzaW9uTm90SW5pdGlhbGl6ZWQnLCAnU2Vzc2lvbiBJbmZvIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBiZWdpbigpIGZpcnN0LicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbkluZm87XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U3RhdGUoZXJyb3I/OiBFcnJvckRldGFpbHMpOiBTdGF0ZSB7XG4gIGlmIChlcnJvcikge1xuICAgIHJldHVybiBpc0Fib3J0ZWRFcnJvcihlcnJvcikgPyAnQUJPUlRFRCcgOiAnRkFJTEVEJztcbiAgfVxuICByZXR1cm4gJ1NVQ0NFRURFRCc7XG59XG5cbmZ1bmN0aW9uIGlzQWJvcnRlZEVycm9yKGVycm9yPzogRXJyb3JEZXRhaWxzKSB7XG4gIGlmIChlcnJvcj8ubmFtZSA9PT0gJ1Rvb2xraXRFcnJvcicgJiYgZXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKEFCT1JURURfRVJST1JfTUVTU0FHRSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG11dGFibGU8QSBleHRlbmRzIG9iamVjdD4oeDogQSk6IHsgLXJlYWRvbmx5IFtrIGluIGtleW9mIEFdOiBBW2tdIH0ge1xuICByZXR1cm4geDtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhhdCB0aGUgQ0RLX0NMSV9VU0VSQUdFTlQgZW52IHZhciB2YWx1ZSBtYXRjaGVzXG4gKiB0aGUgZXhwZWN0ZWQgZm9ybWF0OiBgPG5hbWU+Lzx2ZXJzaW9uPi88bW9kZT5gIHdoZXJlIG5hbWUgaXMgb25lIG9mXG4gKiBWQUxJRF9VU0VSX0FHRU5UUyBhbmQgbW9kZSBpcyBlaXRoZXIgYHNhbmRib3hgIG9yIGBwcm9kdWN0aW9uYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRXcmFwcGVyVXNlckFnZW50KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2YWx1ZSBpcyBzdHJpbmcge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoJy8nKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMykgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBbbmFtZSwgX3ZlcnNpb24sIG1vZGVdID0gcGFydHM7XG4gIGlmICghVkFMSURfVVNFUl9BR0VOVFMuaW5jbHVkZXMobmFtZSkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIG1vZGUgPT09ICdzYW5kYm94JyB8fCBtb2RlID09PSAncHJvZHVjdGlvbic7XG59XG5cbi8qKlxuICogVHJ5IHRvIGRldGVjdCBhIENvbmZpZyBmaWxlIG9mIHdoaWNoIHRoZSBmaXJzdCBsaW5lIGxvb2tzIGxpa2VcbiAqXG4gKiBgYGBcbiAqIHBhY2thZ2UuPHBhY2thZ2VOYW1lPiA9IHtcbiAqIGBgYFxuICpcbiAqIE9yIGEgYGJyYXppbC5pb25gIGZpbGUgd2l0aCBhIGxpbmUgbGlrZVxuICpcbiAqIGBgYFxuICogbmFtZTogXCI8cHJvamVjdE5hbWU+XCJcbiAqIGBgYFxuICpcbiAqIFRoZXkgd2lsbCBhbHdheXMgYmUgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIGFuZCB3ZSB3aWxsXG4gKiBvbmx5IGRvIHRoZSBjaGVjayBpZiBpdCBsb29rcyBsaWtlIHdlJ3JlIG9uIGFuIEFtem4gZGV2ZWxvcGVyIG1hY2hpbmUuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHRyeURldGVjdEFtem5QYWNrYWdlKCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMuc3RhdChwYXRobGliLmpvaW4ob3MuaG9tZWRpcigpLCAnLm1pZHdheScpKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gRU5PRU5UXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjb25maWdGaWxlID0gYXdhaXQgZnMucmVhZEZpbGUoJ0NvbmZpZycsICd1dGYtOCcpO1xuICAgIGNvbnN0IG0gPSBjb25maWdGaWxlLm1hdGNoKC9ecGFja2FnZVxcLihcXFMrKVxccyo9L20pO1xuICAgIGlmIChtKSB7XG4gICAgICByZXR1cm4gbVsxXTtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIEFueSBlcnJvciBtZWFucyBubyBkaWNlLlxuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBpb25GaWxlID0gYXdhaXQgZnMucmVhZEZpbGUoJ2JyYXppbC5pb24nLCAndXRmLTgnKTtcbiAgICBjb25zdCBtID0gaW9uRmlsZS5tYXRjaCgvKF58XFxzKW5hbWU6XFxzKlwiKFteXCJdKylcIi9tKTtcbiAgICBpZiAobSkge1xuICAgICAgcmV0dXJuIG1bMl07XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBBbnkgZXJyb3IgbWVhbnMgbm8gZGljZS5cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=